Skip to content

Symbolic Domain Contract

Use this document for symbolic-domain rules. Exact active scenes and tasks live in docs/ACTIVE_TASK_INVENTORY.md and docs/tasks/symbolic/.

Scope

symbolic is a bounded domain for synthetic notation, instrument-like, and formal readout scenes that do not yet justify a dedicated top-level domain. It currently includes families such as abacus, clocks, automata, notation, logic/structured symbols, dice/spinner probability, and similar controlled symbolic renderers.

Do not add to symbolic when an existing renderer domain fits cleanly. Promote a family out of symbolic if it becomes a coherent domain-scale surface.

Scene Boundary

A symbolic scene is a stable notation or readout grammar: clock face, abacus, music staff, Braille cell, chemistry/logic notation, automaton panel, dice tray, spinner, or similar formal device. Style, font, palette, orientation, and label choices may vary inside a scene when the same parser/verifier contract holds.

Create a new scene when the symbolic grammar, notation system, or readout interface changes materially.

Task And Query Boundary

Split tasks when the objective changes between direct readout, transformed readout, option matching, probability computation, state transition, symbol count, or relation lookup. Valid query_id axes include mirrored directions, offset unit, event type, target symbol, or bounded parameter choice inside one stable program.

Annotation Policy

Annotation should mark the decisive symbolic witnesses: readout hands/columns, state cells, notation symbols, event sectors, dice faces, option cards, or rule table entries. Use map annotation when roles such as initial state, target state, rule row, source symbol, or selected option must be bound.

Prompt And Rendering

Notation must prioritize legibility over decorative variation. Prompts should name the relevant formal device, event, symbol, state, or readout scope without assuming unstated conventions beyond the scene contract.

Shared Code

Reusable symbolic renderers, notation parsers, probability calculators, state transition helpers, and annotation projection utilities belong under src/trace_tasks/tasks/symbolic/shared/. Keep family-specific helpers in scene-local shared modules when they are not reused.