Revision 0.9 adds section 20, the cadence and event subsystems contract, and carries two corrections the implementation forced. Section 6.1 now states that a duration is the authored literal or a non-negative finite number already in milliseconds, since a DurationSpec may be the resolved output of a ValueSpec or a bounded TimeSpec, with the one documented exception of an automation track's `at`, which 19.1 keeps literal-only so that point ordering stays decidable at import. Section 20.11 documents the rejection of an undeclared input name in an event action's `with` map as ERR_UNKNOWN_FIELD — the section's own convention for that shape of error, replacing an invented code that appeared nowhere in the registry. The review record is committed with the code it describes: the two code triages that found these defects, the reconciliation plan that sequenced the fixes, and a follow-up debt record listing what was deliberately left open — the unchecked JSON Schema artifact, degenerate path arcs, post-effect transient allocation, the window-traffic fixture's per-copy wrap bounds, and the unstated `ownership: "persistent"` value on a sound action. None of the five blocks phase 6; all five are written down rather than dropped. Devlog entries are backfilled for the two milestones that had none: phase 3c slice 2, the audio lifecycle and voice ceilings, and slice 4d, the renderer core. The implementation status summary now reflects the reconciled state rather than the in-flight one. 231 tests pass. tools/verify-spec-contract.py reports 46 declared diagnostic codes with every used code resolving and its two long-standing unresolved cross-references unchanged. Co-Authored-By: Claude Opus 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01ShxxFqFmCUDQnQvFNm4TKy
Labyricorn publishing content
This directory is the repository-owned source for Labyricorn Site's project exhibition and development log on Labyricorn. The project repository remains the source of truth; the Labyricorn site imports this content as read-only.
The content uses native Lektor records:
.labyricorn/
├── AGENTS.md
├── README.md
├── project/
│ ├── AGENTS.md
│ ├── contents.lr
│ └── <optional image>
└── devlog/
├── AGENTS.md
├── contents.lr
└── <entry-slug>/
├── contents.lr
└── <optional images>
Rules:
project/contents.lruses theprojectmodel.devlog/contents.lruses thedevlogmodel.- Each entry is a directory below
devlog/containing acontents.lrrecord using thedevlog-entrymodel. - Entry directory names are stable public slugs. Do not rename a published entry without arranging a redirect on the Labyricorn site.
- Dates use
YYYY-MM-DD;source_commituses the full relevant commit ID. - Publishing attachments stay inside the record subtree that owns them.
- Do not put credentials, builds, application state, or executable code here.
Editing these records does not itself prove that the public site synchronized. Report repository publication and Labyricorn synchronization separately.