Validation checklist for the published Default widget realization layer
FROG — Free Open Graphical Language
This document defines the repository-visible validation posture for the Default widget realization layer. It is intentionally downstream from widget class law.
The goal is to keep the published widget layer coherent as a standard-facing surface rather than a loose set of unrelated documents. Validation therefore focuses on repository hygiene, publication alignment, manifest integrity, resource resolution, public-part consistency, and realization/class-law boundaries.
Each published widget family should provide:
- a widget class-law document under
Libraries/Widgets/, - a Default realization document under
Libraries/Realizations/Default/, - a machine-readable manifest
*.default.wfrog, - resolvable SVG template or subobject resources where the manifest declares them,
- part bindings that refer to public widget parts,
- target classes that appear in the corresponding widget class-law document,
- role posture that distinguishes control, indicator, command, support, layout, container, or structured families,
- clear realization-private boundaries for host-native handles, renderer caches, virtualized rows/nodes/items, canvas surfaces, GPU surfaces, and IDE-private editing structures.
- All manifests must be valid JSON.
- Each manifest must include
format,kind,package,targets,resources, andvalidation_expectations. - Each manifest should include
publication_role,version_governance_ref,ownership_boundary,exports,realizations,part_bindings, andhost_hints. - Each declared target class must be listed in the corresponding validator family definition and must appear in the owning widget class-law document.
- Each target must declare an explicit role.
- Generic target roles such as
widgetshould not be used in published Default manifests. - Each declared resource path must resolve relative to the manifest file.
- Resource paths must not escape the
Libraries/Realizations/Default/directory. - Each exported resource identifier should correspond to a declared resource.
- Each composition slot or nested slot should reference a declared resource.
- Each part binding should refer to a supported public part.
- Each event binding source part should refer to a supported public part.
- Each resource
target_partortarget_partsentry should refer to a supported public part. - Each declared supported part should appear in the corresponding widget class-law document.
- SVG resources should expose declared public parts through
data-frog-partmarkers when applicable. - SVG shell resources may expose composition slots through
data-frog-slotmarkers. - Any visible border, frame, selection outline, cell outline, scrollbar track, or equivalent stroke-like surface should preserve one uniform published thickness after resize; SVG-backed resources should use non-scaling strokes or an equivalent realization strategy when a single width property controls the surface.
- Bordered fill surfaces should not leave unintended inner gaps. If a value face, text region, button face, state face, or equivalent part is meant to touch its surrounding border, the SVG geometry should meet the stroke inner edge or extend under a transparent / stroke-only frame.
- Documentation files should not contain literal escaped newline artifacts in rendered lists.
Composite widgets may use shell resources, subobject assets, slots, nested slots, layer-order records, property bindings, method bindings, event bindings, state maps, and host-native replacement hints.
The current complex families that should remain especially protected are:
frog.widgets.waveform_chartfrog.widgets.listbox_controlandfrog.widgets.listbox_indicatorfrog.widgets.tab_controlandfrog.widgets.tab_indicatorfrog.widgets.tree_controlandfrog.widgets.tree_indicatorfrog.widgets.table_controlandfrog.widgets.table_indicator
For those families, validation should pay particular attention to public parts, SVG marker consistency, resource references, method/event surfaces, virtualized-host boundaries, and host-native replacement rules.
The non-normative reference validator lives under:
Implementations/Reference/WidgetValidator/validate_widget_layer.pyRun it from the repository root:
python Implementations/Reference/WidgetValidator/validate_widget_layer.pyThat validator is a repository-quality tool. It does not define widget semantics, realization semantics, FROG source law, FIR law, lowering law, runtime law, or host rendering law.
The validator may reject repository hygiene errors such as missing manifests, invalid JSON, missing required keys, unresolved resources, class mismatches, invalid part references, resource references that escape the Default directory, or malformed manifest shape.
The validator may warn about weaker publication posture such as missing optional descriptive keys, incomplete SVG markers, generic roles, or abstract parts not represented directly by SVG resources.
The validator must not decide whether a runtime implementation is visually attractive, performant, or complete. It only protects the repository-visible contract between widget class law, Default realization manifests, resources, and documentation.