clay-borg/workplans/CB-WP-0036-interactive-mode.md
tegwick f8b0a84829
Some checks failed
ci / check (push) Failing after 3s
Sync hub task ids for CB-WP-0036
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-07 21:17:22 +02:00

5.2 KiB

id kind title status state_hub_workstream_id
CB-WP-0036 product Pace and ornamentation active 698651ed-cccd-46f2-84cc-07b0bdb85ad0

Purpose

structural tier  M   (a driver parameter and a declared vocabulary; the
                      animation architecture that made this L has moved
                      out of this repo)
chaos            d8 = 7  → no override
declared tier    M

Re-declared 2026-08-07, declaration 8 of chaos window 3.

Why this was rewritten, and what it used to say

Declared on 2026-08-07 as tier L, covering an animation layer, Rust-computed transitions over the journal delta, and a client/server interaction able to animate other players' moves. Chaos was d8 = 7, no override. No code was written, and the tier-L adversarial review was never run — which is the only reason this could be re-scoped rather than unwound.

The maintainer moved the animation out of clay-borg, and the reasoning is now specs/Ornamentation.md:

the basic simulator should have the relevant concepts of simulation and interaction, feedback mechanisms etc. with very simple ui concepts and frontend, backend interactions to keep the focus on the game and simulation core

So movement, timing and layering belong to a later, separate clay-animate; material behaviour to clay-physics beyond that. What stays here is the vocabulary, the boundary and the pace knob — and the invariants that keep the boundary real once something downstream exists to test it.

Two terms changed and the change is not cosmetic. "Ritual" became ornamentation, because half the category is material rather than ceremonial — card stock, a typeface, the drift of a discard. And the test is no longer "does it have a decision in it": choosing who deals is a decision and is ornamental. The test is whether the state hash moves, which is executable, and which settles the open question the previous version of this workplan left for a reviewer.

Task: the concept, in the spec that governs structure

id: CB-WP-0036-T01
status: done
priority: high
state_hub_task_id: "e7602796-cdb7-44cf-a39d-697b1e8e2a7f"

Controls:

  • the boundary has a falsifier, not just a diagram;
  • ornamentation is defined by a test something can run, not by taste;
  • it says what is deliberately not built and why.

Done 2026-08-07. specs/Ornamentation.md.

§1.1 makes the line executable by reusing state_hash — the same instrument that binds a trial note to a position (ADR-0019 D3).

§2 is the part that earns its place in this repo rather than a renderer's stylesheet. Calling something ornamentation is a claim that it does not matter, and this project's register is a list of times that claim was wrong — quantity in Tokens.csv, F18's four unread files, SOLVE offered where it could not act. So a declaration carries a falsifier, and provisional is a state it must be able to say out loud.

§3.1 restates ADR-0007 D5 one level up: downstream may read, may not decide. §3.2 refuses to design the port, because no consumer exists and an interface built against an imagined client is the same defect as a gate that cannot go red.

§5 gives five invariants, four of them checkable today. I3 — the same seed and decisions produce a byte-identical recording at any pace, through any renderer — is the falsifier for the whole split.

Task: the pace parameter

id: CB-WP-0036-T02
status: todo
priority: medium
state_hub_task_id: "e978b93b-fcbd-4853-a27d-5eca00f9ca19"

--pace speed | interactive, defaulting to speed, and not --mode (taken by ScoringMode).

Controls:

  • I4 measured, not asserted: sim, trials and the benchmarks are unaffected — nothing, not little;
  • prefers-reduced-motion behaves as speed;
  • the flag exists before anything reads it, and that is deliberate: it is the seam clay-animate will attach to, and a seam is cheap while a retrofit is not.

Task: declarations, once there are any to make

id: CB-WP-0036-T03
status: todo
priority: low
state_hub_task_id: "bf2a68b0-5985-40ff-b4f5-33c40d92cff0"

Ornamentation declarations per §2.1 — what is ornamented, why it does not bind, what would falsify it.

Not started deliberately. GameDesign §2's rule applies: no kind exists without an instance that instantiates it. The first real declarations are most likely to come from F18's unvendored files — Player_Mats and Glossary are ornamentation-bearing data this engine has never read — so vendoring those is the trigger, not a schema designed in advance.

No longer in this repo

  • the animation layer, transitions over the journal delta, cards summoned larger beside a seat and shrinking toward a target, discards drifting — clay-animate;
  • material simulationclay-physics;
  • hand sorting, which was T05 here: it is presentation of a hand whose contents are mechanism, so it goes with the renderer. The constraint survives the move and is now I1: sorting must not move state_hash, because a hash that moved would break every trial note's binding.