[work-73gq] feat(studio): the egg catalogue — all 72, across twelve mechanisms #72

Merged
eden merged 17 commits from eggs-integration into main 2026-10-10 22:44:57 +00:00
Owner

Every egg in Mossfire/Design/Ornamenting the Studio.md §4, plus studio/EGGS.md, the ledger that records each one with its law-checks so 72 of them cannot quietly drift from canon.

Eight workstreams, one per mechanism group, each in its own worktree and branch — the eight merge commits are in this branch's history, one per bead:

bead mechanism what landed
.1 A the Hall of Threads — data/hall.js, 120 authored #mossfire lines interleaved with the bash.org corpus, and the typed commands (/consult, /awaken, /trace, /read the omens, /tend the fire, /whois, /quit, /tally, the seven marks, law 11, the Beast) + EGGS.md
.2 B+C theme-name triggers and the vat lock: the eight Codex hexes seal a lot; #000000 gives three seconds of the Hush
.3 D+E Shift+Export, the sigil sheet, the chapter VI table, and the Cycle in one removable js/cycle.js
.4 F+G completion ordinals and the Seer's Tally (#seer)
.5 H+L the acrostic (TAKESROOT), the aspect sign column, real git hash-object commits, the true test count, and the tokens that light up in the sample when you click a swatch
.6 I+K the 28th preset on the founding day, Uhyre's exceptional sigil behind a filter, element marks, Mossfire name words, and the export seal with CHRONICLE.txt
.7 J the two gates: the split verse, the footers, ?beast
.8 — the Codex and Atlas, browsable in the web pane, from a public-safe projection of the registry

What the per-branch suites could not see, and this branch fixes. Every test loads its modules in isolation, so the integration bugs were invisible until the browser:

  1. Two modules claimed MF.codex. The token table was clobbered by the projection of the book, which loads later; app.js then threw inside renderThemeList during init, so MF.app never appeared — the whole studio was dead while 33 tests stayed green. The book keeps MF.codex; the token module is now MF.vat.
  2. Two branches built the same seal with different field names (codex.sealed vs codex.seal), because my two task specs disagreed. Merged as-is, the vat lock would have set a field the export path ignored: shipped-looking and doing nothing. One shape now, with the importer normalising the old name instead of dropping it.
  3. The register flip's bar mark threw. js/cycle.js nested the clock inside .s-right, and insertBefore needs a direct child — so viewMark threw and aborted update() before the clock and the Cycle painted.

Verified, not assumed

  • 33 node tests plus build_data.test.py green on the integrated branch, and build_data.py leaves studio/data with no diff
  • driven in a real browser: no uncaught errors on load, all 23 globals present, the Codex/laws/atlas/hush pages render real content, the Hall answers every command (/whois eve resolves through the projection — proof the two modules are wired together), the vat lock seals to {seal:true,lot:1}, 27 presets with element marks, the register flip repaints and labels itself, the acrostic reads TAKESROOT, htop reports the institutions, 22 passed and 9.81 7.42 5.77 = 23, and both gates' footer logic holds
  • the projection is leak-free: two URLs only, no addresses, no banned words

Not verified: the time-of-day Cycle branches (real clock), a real download of a sealed ZIP, and the gate-conditional pages on their actual hosts. Those rest on the tests.

Tests were updated in three places where they encoded pre-merge expectations — the lynx page set, the tally's shape, and the seal field name. None was weakened; each now says why.

Beads: work-73gq.1 … work-73gq.8

Every egg in `Mossfire/Design/Ornamenting the Studio.md` §4, plus `studio/EGGS.md`, the ledger that records each one with its law-checks so 72 of them cannot quietly drift from canon. Eight workstreams, one per mechanism group, each in its own worktree and branch — the eight merge commits are in this branch's history, one per bead: | bead | mechanism | what landed | |---|---|---| | `.1` | A | **the Hall of Threads** — `data/hall.js`, 120 authored `#mossfire` lines interleaved with the bash.org corpus, and the typed commands (`/consult`, `/awaken`, `/trace`, `/read the omens`, `/tend the fire`, `/whois`, `/quit`, `/tally`, the seven marks, law 11, the Beast) + `EGGS.md` | | `.2` | B+C | theme-name triggers and the vat lock: the eight Codex hexes seal a lot; `#000000` gives three seconds of the Hush | | `.3` | D+E | Shift+Export, the sigil sheet, the chapter VI table, and the Cycle in one removable `js/cycle.js` | | `.4` | F+G | completion ordinals and the Seer's Tally (`#seer`) | | `.5` | H+L | the acrostic (`TAKESROOT`), the aspect sign column, real `git hash-object` commits, the true test count, and the tokens that light up in the sample when you click a swatch | | `.6` | I+K | the 28th preset on the founding day, Uhyre's exceptional sigil behind a filter, element marks, Mossfire name words, and the export seal with `CHRONICLE.txt` | | `.7` | J | the two gates: the split verse, the footers, `?beast` | | `.8` | — | **the Codex and Atlas, browsable in the web pane**, from a public-safe projection of the registry | **What the per-branch suites could not see, and this branch fixes.** Every test loads its modules in isolation, so the integration bugs were invisible until the browser: 1. **Two modules claimed `MF.codex.`** The token table was clobbered by the projection of the book, which loads later; `app.js` then threw inside `renderThemeList` during init, so `MF.app` never appeared — the whole studio was dead while 33 tests stayed green. The book keeps `MF.codex`; the token module is now `MF.vat`. 2. **Two branches built the same seal with different field names** (`codex.sealed` vs `codex.seal`), because my two task specs disagreed. Merged as-is, the vat lock would have set a field the export path ignored: shipped-looking and doing nothing. One shape now, with the importer normalising the old name instead of dropping it. 3. **The register flip's bar mark threw.** `js/cycle.js` nested the clock inside `.s-right`, and `insertBefore` needs a direct child — so `viewMark` threw and aborted `update()` before the clock and the Cycle painted. **Verified, not assumed** - 33 node tests plus `build_data.test.py` green on the integrated branch, and `build_data.py` leaves `studio/data` with no diff - driven in a real browser: no uncaught errors on load, all 23 globals present, the Codex/laws/atlas/hush pages render real content, the Hall answers every command (`/whois eve` resolves through the projection — proof the two modules are wired together), the vat lock seals to `{seal:true,lot:1}`, 27 presets with element marks, the register flip repaints and labels itself, the acrostic reads `TAKESROOT`, htop reports the institutions, `22 passed` and `9.81 7.42 5.77` = 23, and both gates' footer logic holds - the projection is leak-free: two URLs only, no addresses, no banned words **Not verified:** the time-of-day Cycle branches (real clock), a real download of a sealed ZIP, and the gate-conditional pages on their actual hosts. Those rest on the tests. Tests were updated in three places where they encoded pre-merge expectations — the lynx page set, the tally's shape, and the seal field name. None was weakened; each now says why. Beads: work-73gq.1 … work-73gq.8
eden added 17 commits 2026-10-10 22:43:47 +00:00
Part of the egg catalogue epic work-73gq; see studio/EGGS.md for what each egg is and its law-checks.

Bead: work-73gq.1
Part of the egg catalogue epic work-73gq; see studio/EGGS.md for what each egg is and its law-checks.

Bead: work-73gq.2
Part of the egg catalogue epic work-73gq; see studio/EGGS.md for what each egg is and its law-checks.

Bead: work-73gq.3
Part of the egg catalogue epic work-73gq; see studio/EGGS.md for what each egg is and its law-checks.

Bead: work-73gq.4
Part of the egg catalogue epic work-73gq; see studio/EGGS.md for what each egg is and its law-checks.

Bead: work-73gq.5
Part of the egg catalogue epic work-73gq; see studio/EGGS.md for what each egg is and its law-checks.

Bead: work-73gq.6
Part of the egg catalogue epic work-73gq; see studio/EGGS.md for what each egg is and its law-checks.

Bead: work-73gq.7
Part of the egg catalogue epic work-73gq; see studio/EGGS.md for what each egg is and its law-checks.

Bead: work-73gq.8
# Conflicts:
#	.forgejo/workflows/pages.yaml
# Conflicts:
#	.forgejo/workflows/pages.yaml
#	studio/app.css
#	studio/index.html
#	studio/js/app.js
# Conflicts:
#	.forgejo/workflows/pages.yaml
#	studio/README.md
#	studio/app.css
#	studio/index.html
#	studio/js/app.js
#	studio/js/scene.js
# Conflicts:
#	studio/README.md
#	studio/index.html
#	studio/js/app.js
#	studio/js/scene.js
# Conflicts:
#	studio/js/app.js
#	studio/js/importers.js
# Conflicts:
#	.forgejo/workflows/pages.yaml
#	studio/README.md
#	studio/index.html
# Conflicts:
#	.forgejo/workflows/pages.yaml
#	studio/README.md
#	studio/index.html
#	studio/js/scene.js
fix(studio): reconcile the egg catalogue at integration
All checks were successful
Mossfire web app / test (pull_request) Successful in 41s
Mossfire web app / publish (tema.uhyre.dk, global) (pull_request) Has been skipped
Mossfire web app / publish (theme.home.dpis.dk, home) (pull_request) Has been skipped
e7afa46005
Eight parallel branches, merged by hand. What the unit suites could not see,
because every test loads its modules in isolation:

- two modules claimed MF.codex. js/codex.js (the token table, sigil helper and
  seal field) was clobbered by data/codex.js (the projection of the book),
  which loads later; app.js then threw inside renderThemeList during init, so
  MF.app never appeared and the studio was dead while 33 tests stayed green.
  The book keeps MF.codex; the token module is MF.vat.
- two branches built the same seal with different field names — codex.sealed
  and codex.seal. Merged as-is the vat lock would have set a field the export
  path ignored. One shape now: { seal: true, lot: n }, with the importer
  normalising the old name rather than dropping it.
- js/cycle.js nested the clock inside .s-right, so the register flip's
  viewMark threw (insertBefore needs a direct child) and aborted update() before
  the clock and the Cycle painted.

Also: /tally now runs the tally module's own line instead of the Hall's stale
'assumption about its shape; the test that encoded the old expectations says
so; the discovery line for the tend-the-fire command no longer uses a word that
reads as a slur on a public page; and the Atlas says the count aloud (egg 56).

Tests updated where they encoded pre-merge expectations: gates (the lynx page
set), irc-commands (the tally's shape and words), vatlock (the seal shape).

Beads: work-73gq.1 through work-73gq.8
eden merged commit 9916274dfa into main 2026-10-10 22:44:57 +00:00
eden deleted branch eggs-integration 2026-10-10 22:44:57 +00:00
Sign in to join this conversation.
No reviewers
No labels
review:human
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
ember/mossfire!72
No description provided.