Skip to content

Latest commit

 

History

History
662 lines (607 loc) · 27.4 KB

File metadata and controls

662 lines (607 loc) · 27.4 KB

FROG logo

FROG Examples

Executable example dossiers for the published FROG specification
FROG — Free Open Graphical Language


Overview

This directory contains the repository-visible numbered example progression. Examples are not semantic owners. They are published slices used to inspect how source, FIR, lowering, contracts, runtimes, and native proof paths relate.

New examples should follow the FROG Example Dossier Standard. That document defines the shared public organization for widget, operator, structure, library, compiler, and conformance examples without publishing Graiphic's internal validation recipe.


Public Runtime Boundary

Examples 01 through 15 define the current public reference runtime closure.

Examples beyond this boundary may remain repository-visible as specification-facing, widget-facing, conformance-facing, or design-progression examples. They should not be interpreted as a commitment to publish Graiphic's production runtime implementation for those examples.

Production-grade runtime development for future FROG execution surfaces continues in Graiphic proprietary repositories, including Graiphic/FROG-Runtime, while preserving the public contracts required for independent implementations.

Browser-Hosted Inspection Surface

When a browser-hosted example is used for validation, the visible page should expose a collapsed-by-default source and execution artifact inspector. Opening the inspector should show formatted in-page content, while raw routes remain available for direct checks. The expected inspection surface includes state.json, the owning main.frog, the directly consumed example .wfrog package, and FIR/lowering artifacts when those artifacts exist.

This browser presentation is a validation host convention, not the FROG language runtime identity. Other front-panel hosts may expose the same source, realization, FIR, lowering, manifest, and diagnostic contracts through an equivalent inspection surface.


Current Example Progression

Example Focus Starts at Current repository status
01_pure_addition Pure public-interface arithmetic main.frog FIR → lowering → contract → runtime → LLVM
02_ui_value_roundtrip Natural widget-value participation main.frog with inline front panel FIR → lowering → contract → runtime → LLVM
03_ui_property_write Object-style widget reference and property write main.frog with inline front panel FIR → lowering → contract → runtime → LLVM
04_stateful_feedback_delay Explicit state and feedback through frog.core.delay main.frog FIR → lowering → contract → runtime → LLVM
05_bounded_ui_accumulator Full bounded UI accumulator corridor main.frog + ui/accumulator_panel.wfrog FIR → lowering → contract → runtime acceptance → LLVM module/native proof
06_boolean_value_roundtrip Boolean control/indicator value roundtrip main.frog + ui/boolean_panel.wfrog FIR → lowering → contract → LLVM native manifest → C++/Python/Rust runtime bridge → Default Boolean realization
07_string_value_roundtrip String control/indicator hello-world roundtrip main.frog + ui/string_panel.wfrog FIR → lowering → contract → LLVM native manifest → C++/Python/Rust runtime bridge → Default String realization
08_enum_value_roundtrip Enum control/indicator mode roundtrip main.frog + ui/enum_panel.wfrog FIR → lowering → contract → LLVM native manifest → C++/Python/Rust runtime bridge → Default Enum realization
09_path_value_roundtrip Path control/indicator value roundtrip main.frog + ui/path_panel.wfrog FIR → lowering → contract → LLVM native manifest → C++/Python/Rust runtime bridge → Default Path realization
10_button_press_to_boolean Button switch_until_released mechanical action main.frog + ui/button_panel.wfrog Current public reference runtime closure: FIR -> lowering -> contract -> LLVM native manifest -> C++/Python/Rust runtime bridge -> Default Button/Boolean realization
11_button_switch_when_pressed Button switch_when_pressed mechanical action main.frog + ui/button_panel.wfrog Current public reference runtime closure: FIR -> lowering -> contract -> LLVM native manifest -> C++/Python/Rust runtime bridge -> Default Button/Boolean realization
12_button_switch_when_released Button switch_when_released mechanical action main.frog + ui/button_panel.wfrog Current public reference runtime closure: FIR -> lowering -> contract -> LLVM native manifest -> C++/Python/Rust runtime bridge -> Default Button/Boolean realization
13_button_latch_when_pressed Button latch_when_pressed mechanical action main.frog + ui/button_panel.wfrog Current public reference runtime closure: FIR -> lowering -> contract -> LLVM native manifest -> C++/Python/Rust runtime bridge -> Default Button/Boolean realization
14_button_latch_when_released Button latch_when_released mechanical action main.frog + ui/button_panel.wfrog Current public reference runtime closure: FIR -> lowering -> contract -> LLVM native manifest -> C++/Python/Rust runtime bridge -> Default Button/Boolean realization
15_button_latch_until_released Button latch_until_released mechanical action main.frog + ui/button_panel.wfrog Current public reference runtime closure: FIR -> lowering -> contract -> LLVM native manifest -> C++/Python/Rust runtime bridge -> Default Button/Boolean realization
16_picture_logo_jpeg Path-selected PNG/JPEG/BMP decoded by frog.image.decode_file_rgba8 and displayed by a Picture indicator main.frog + ui/picture_panel.wfrog + assets/frog_logo.jpg Repository-visible post-boundary widget progression: public source/realization/example material only; runtime implementation continues in Graiphic/FROG-Runtime unless explicitly promoted later
17_label_typography_board Standalone Label support widgets with source-owned typography, frames, backgrounds, and annotation text main.frog + ui/label_panel.wfrog Repository-visible post-boundary widget progression: public source/realization/example material only; runtime implementation continues in Graiphic/FROG-Runtime unless explicitly promoted later
18_decoration_board Standalone Decoration support widgets with one source-owned flat box, one horizontal line, and one vertical line main.frog + ui/decoration_panel.wfrog Repository-visible post-boundary widget progression: public source/realization/example material only; runtime implementation continues in Graiphic/FROG-Runtime unless explicitly promoted later
19_subpanel_embedded_front_panel Subpanel host region displaying a referenced child .frog front panel main.frog + embedded/embedded_status.frog + ui/subpanel_panel.wfrog Repository-visible post-boundary widget progression: public source/realization/example material only; runtime implementation continues in Graiphic/FROG-Runtime unless explicitly promoted later
20_tab_page_selection Tab control page selection with wrapped page headers and a movable page label display main.frog + ui/tab_panel.wfrog Repository-visible post-boundary widget progression: public source/realization/example material only; runtime implementation continues in Graiphic/FROG-Runtime unless explicitly promoted later
21_ring_selection_roundtrip Ring numeric selected-value roundtrip with a read-only Ring indicator main.frog + ui/ring_panel.wfrog Repository-visible post-boundary widget progression: public source/realization/example material only; runtime implementation continues in Graiphic/FROG-Runtime unless explicitly promoted later
22_listbox_selection_roundtrip Listbox numeric selected-value roundtrip with a read-only Listbox indicator main.frog + ui/listbox_panel.wfrog Repository-visible post-boundary widget progression: public source/realization/example material only; runtime implementation continues in Graiphic/FROG-Runtime unless explicitly promoted later
23_table_cell_selection_roundtrip Table numeric selected-cell roundtrip with a read-only Table indicator main.frog + ui/table_panel.wfrog Repository-visible post-boundary widget progression: public source/realization/example material only; runtime implementation continues in Graiphic/FROG-Runtime unless explicitly promoted later
24_tree_node_selection_roundtrip Tree numeric selected-node roundtrip with parent/child expansion, editable cells, and scrollable columns/rows main.frog + ui/tree_panel.wfrog Repository-visible post-boundary widget progression: public source/realization/example material only; runtime implementation continues in Graiphic/FROG-Runtime unless explicitly promoted later
25_frame_grouping_board Standalone simple Frame support rectangles with source-owned size, background color, border color, and uniform border thickness main.frog + ui/frame_panel.wfrog Repository-visible post-boundary widget progression: public source/realization/example material only; runtime implementation continues in Graiphic/FROG-Runtime unless explicitly promoted later

Progression Logic

01  pure computation
    |
    v
02  widget_value natural UI value path
    |
    v
03  widget_reference + frog.ui.property_write object-style UI path
    |
    v
04  explicit state and valid feedback through delay
    |
    v
05  combined bounded UI accumulator corridor
    |
    v
06  Boolean .wfrog realization and native-kernel runtime bridge
    |
    v
07  String .wfrog realization and native-kernel runtime bridge
    |
    v
08  Enum .wfrog realization and native-kernel runtime bridge
    |
    v
09  Path .wfrog realization and native-kernel runtime bridge
    |
    v
10-15  Button mechanical actions in the public reference runtime closure
    |
    v
16   Path -> frog.image.decode_file_rgba8 -> Picture as a post-boundary widget progression example
    |
    v
17   standalone Label support text as a post-boundary widget progression example
    |
    v
18   standalone Decorations as a post-boundary widget progression example
    |
    v
19   Subpanel embedding another .frog front panel as a post-boundary widget progression example
    |
    v
20   Tab selected-page value and page region as a post-boundary widget progression example
    |
    v
21   Ring numeric selected-value as a post-boundary widget progression example
    |
    v
22   Listbox numeric selected-value as a post-boundary widget progression example
    |
    v
23   Table numeric selected-cell value as a post-boundary widget progression example
    |
    v
24   Tree numeric selected-node value as a post-boundary widget progression example
    |
    v
25   standalone Frame support grouping surface as a post-boundary widget progression example
    |
    v
26+  future examples continue runtime implementation in Graiphic/FROG-Runtime unless explicitly promoted

Directory Shape

Examples/
├── 01_pure_addition/
│   ├── Readme.md
│   ├── main.frog
│   ├── main.fir.json
│   └── main.lowering.json
├── 02_ui_value_roundtrip/
│   ├── Readme.md
│   ├── main.frog
│   ├── main.fir.json
│   └── main.lowering.json
├── 03_ui_property_write/
│   ├── Readme.md
│   ├── main.frog
│   ├── main.fir.json
│   └── main.lowering.json
├── 04_stateful_feedback_delay/
│   ├── Readme.md
│   ├── main.frog
│   ├── main.fir.json
│   └── main.lowering.json
├── 05_bounded_ui_accumulator/
│   ├── Readme.md
│   ├── Freeze.md
│   ├── main.frog
│   ├── main.fir.json
│   ├── main.lowering.json
│   └── ui/
│       └── accumulator_panel.wfrog
├── 06_boolean_value_roundtrip/
│   ├── Readme.md
│   ├── main.frog
│   ├── main.fir.json
│   ├── main.lowering.json
│   └── ui/
│       └── boolean_panel.wfrog
├── 07_string_value_roundtrip/
│   ├── Readme.md
│   ├── main.frog
│   ├── main.fir.json
│   ├── main.lowering.json
│   └── ui/
│       └── string_panel.wfrog
├── 08_enum_value_roundtrip/
│   ├── Readme.md
│   ├── main.frog
│   ├── main.fir.json
│   ├── main.lowering.json
│   └── ui/
│       └── enum_panel.wfrog
├── 09_path_value_roundtrip/
│   ├── Readme.md
│   ├── main.frog
│   ├── main.fir.json
│   ├── main.lowering.json
│   └── ui/
│       └── path_panel.wfrog
├── 10_button_press_to_boolean/
│   ├── Readme.md
│   ├── main.frog
│   ├── main.fir.json
│   ├── main.lowering.json
│   └── ui/
│       └── button_panel.wfrog
├── 11_button_switch_when_pressed/
│   └── same Button example shape
├── 12_button_switch_when_released/
│   └── same Button example shape
├── 13_button_latch_when_pressed/
│   └── same Button example shape
├── 14_button_latch_when_released/
│   └── same Button example shape
├── 15_button_latch_until_released/
│   └── same Button example shape
├── 16_picture_logo_jpeg/
    ├── Readme.md
    ├── main.frog
    ├── main.fir.json
    ├── main.lowering.json
    ├── assets/
    │   └── frog_logo.jpg
    └── ui/
        └── picture_panel.wfrog
├── 17_label_typography_board/
    ├── Readme.md
    ├── main.frog
    ├── main.fir.json
    ├── main.lowering.json
    └── ui/
        └── label_panel.wfrog
├── 18_decoration_board/
    ├── Readme.md
    ├── main.frog
    ├── main.fir.json
    ├── main.lowering.json
    └── ui/
        └── decoration_panel.wfrog
├── 19_subpanel_embedded_front_panel/
    ├── Readme.md
    ├── main.frog
    ├── main.fir.json
    ├── main.lowering.json
    ├── embedded/
    │   ├── embedded_status.frog
    │   └── ui/
    │       └── embedded_status_panel.wfrog
    └── ui/
        └── subpanel_panel.wfrog
├── 20_tab_page_selection/
    ├── Readme.md
    ├── main.frog
    ├── main.fir.json
    ├── main.lowering.json
    └── ui/
        └── tab_panel.wfrog
├── 21_ring_selection_roundtrip/
    ├── Readme.md
    ├── main.frog
    ├── main.fir.json
    ├── main.lowering.json
    └── ui/
        └── ring_panel.wfrog
├── 22_listbox_selection_roundtrip/
    ├── Readme.md
    ├── main.frog
    ├── main.fir.json
    ├── main.lowering.json
    └── ui/
        └── listbox_panel.wfrog
├── 23_table_cell_selection_roundtrip/
    ├── Readme.md
    ├── main.frog
    ├── main.fir.json
    ├── main.lowering.json
    └── ui/
        └── table_panel.wfrog
├── 24_tree_node_selection_roundtrip/
    ├── Readme.md
    ├── main.frog
    ├── main.fir.json
    ├── main.lowering.json
    └── ui/
        └── tree_panel.wfrog
└── 25_frame_grouping_board/
    ├── Readme.md
    ├── main.frog
    ├── main.fir.json
    ├── main.lowering.json
    └── ui/
        └── frame_panel.wfrog

Examples 10 through 15 use the same published shape: each Button mechanical-action slice contains Readme.md, main.frog, FIR/lowering artifacts, and ui/button_panel.wfrog referencing the Default Button and Boolean realization assets.

Example 16 starts the repository-visible post-boundary widget progression. It contains public source, FIR/lowering shape, a .wfrog package referencing the Default Path and Default Picture realizations, and a default FROG logo image path decoded through the frog.image.decode_file_rgba8 standard library contract. It does not add public runtime source beyond the Example 15 closure.

Example 17 continues the repository-visible post-boundary widget progression with standalone Label support text. It contains public source, FIR/lowering shape, a .wfrog package referencing the Default Label realization, and a small native manifest proof output. It does not add public runtime source beyond the Example 15 closure.

Example 18 continues the repository-visible post-boundary widget progression with standalone Decoration support widgets. It contains public source, FIR/lowering shape, a .wfrog package referencing the Default Decorations realization, and a small native manifest proof output. It does not add public runtime source beyond the Example 15 closure.

Example 19 continues the repository-visible post-boundary widget progression with a Subpanel host region. It contains a parent public source, a referenced child .frog front panel, FIR/lowering shape, a .wfrog package referencing the Default Subpanel realization, and a small native manifest proof output. The parent .frog owns the Subpanel instance and child reference; the child .frog owns the widgets displayed inside the Subpanel. It does not add public runtime source beyond the Example 15 closure.

Example 20 continues the repository-visible post-boundary widget progression with a Tab control. It contains public source, FIR/lowering shape, a .wfrog package referencing the Default Tab realization, and a native manifest string proof output. The .frog owns page records, selected page value, layout, style, and visible page content. Its host capability declarations include selected-page state patching as a realization-facing browser interaction. It does not add public runtime source beyond the Example 15 closure.

Example 21 continues the repository-visible post-boundary widget progression with a Ring control and read-only Ring indicator. It contains public source, FIR/lowering shape, a .wfrog package referencing the Default Ring realization, and a native manifest u16 proof output. The .frog owns item ids, labels, numeric values, selected item state, layout, and style overrides. It does not add public runtime source beyond the Example 15 closure.

Example 22 continues the repository-visible post-boundary widget progression with a Listbox control and read-only Listbox indicator. It contains public source, FIR/lowering shape, a .wfrog package referencing the Default Listbox realization, and a native manifest u16 proof output. The .frog owns item ids, labels, numeric values, selected item state, viewport, layout, and style overrides. It does not add public runtime source beyond the Example 15 closure.

Example 23 continues the repository-visible post-boundary widget progression with a Table control and read-only Table indicator. It contains public source, FIR/lowering shape, a .wfrog package referencing the Default Table realization, and a native manifest u16 proof output. The .frog owns the table schema, rows, cells, selected cell state, viewport, layout, and style overrides. It does not add public runtime source beyond the Example 15 closure.

Example 24 continues the repository-visible post-boundary widget progression with a Tree control and read-only Tree indicator. It contains public source, FIR/lowering shape, a .wfrog package referencing the Default Tree realization, and a native manifest u16 proof output. The .frog owns tree records, hierarchy, item symbols, selected cell state, viewport, layout, and style overrides. It does not add public runtime source beyond the Example 15 closure.

Example 25 continues the repository-visible post-boundary widget progression with standalone simple Frame support rectangles. It contains public source, FIR/lowering shape, a .wfrog package referencing the Default Frame realization, and a native manifest bool proof output. The .frog owns Frame instance layout, background visibility/color, border visibility/color, and one uniform border thickness value per instance. Frame does not own labels, captions, methods, scrollbars, child .frog references, or value flow. It does not add public runtime source beyond the Example 15 closure.


Minimum Local Setup

Run example validation commands from the repository root. A fresh clone needs the following local tools before the numbered example corridor can be fully checked:

Tool Required for
Python + pip Reference workspace checks, FIR derivation, lowering, contracts, LLVM emission checks, and Python runtime tests.
pytest Full reference test surface.
CMake + a C++ toolchain C++ runtime-family validation for the current widget examples.
Cargo / Rust toolchain Rust runtime-family validation for the current widget examples.
clang Optional LLVM native build and native-kernel bridge checks.

Minimal setup for the Python-backed reference checks:

python -m pip install pytest
python Implementations/Reference/check_reference_workspace.py --include-pytest

Runtime-family validation adds the current C++ and Rust surfaces:

cmake -S Implementations/Reference/Runtime/cpp -B build/frog_runtime_cpp
cmake --build build/frog_runtime_cpp
ctest --test-dir build/frog_runtime_cpp --output-on-failure

cargo test --manifest-path Implementations/Reference/Runtime/rust/Cargo.toml

Widget examples are framed by the Widget Example Public Boundary. That document records the public source / realization / runtime-consumer ownership split without publishing Graiphic's internal widget acceptance recipe, manual visual QA procedure, or private runtime roadmap.

All example families are organized by the FROG Example Dossier Standard. Use the widget boundary document as the additional public boundary only when an example has a front-panel widget or Default realization surface.

The currently stabilized widget example surfaces are inventoried in Widget Example Reference Notes. Those notes document the proven Numeric, Boolean, String, Enum, Path, and Button example surfaces, including which properties are owned by .frog, which realization packages and SVG assets are consumed through .wfrog, and which public runtime checks support the published example evidence.


Reference Checks

The current reference workspace check across the numbered examples is:

python Implementations/Reference/check_reference_workspace.py

To include pytest coverage and optional native proof checks where the local toolchains are available:

python Implementations/Reference/check_reference_workspace.py --include-pytest
python Implementations/Reference/check_reference_workspace.py --include-native-kernel-bridge
python Implementations/Reference/check_reference_workspace.py --include-llvm-build

Boundary

Examples remain subordinate to the owning specification documents. They illustrate and verify published corridors. They do not define FROG semantics.