6816d4a4f0
ensure_positioning_framings adds 5 Architect framings to the core positioning variant group alongside Option A/B, so the group holds 7 candidates and choose_variant retires 6. The two thesis tests still asserted the pre-framings count of 2 — the tests were stale, not the seed. Realign them, document the 2+5=7 seed structure in the thesis guide, and refresh AGENTS.md Current state (13/13 tests green).
2.0 KiB
2.0 KiB
paths
| paths | |||||
|---|---|---|---|---|---|
|
Thesis Workshop & canonical gate
Read this before editing thesis nodes, versions, the review flow, or the Architect copilot.
The two layers
- Working tree — thesis nodes with status
draft | candidate | approved | retired. Code and seeds may move nodes around this ladder freely. - Canonical — a frozen
thesis_version, the read source for the live agent prompt. A version becomes canonical only by human dual sign-off throughbackend/thesis_review.py(currently Grant + Jonathan).
Hard rules
- Never set a
thesis_versioncanonical from code or seeds. That is human dual sign-off, full stop.ensure_*seeders may promote a working spine toapproved(node-level, reversible) but must not freeze a canonical version. - Soft-delete subtlety — this trips people up:
_node_treeandcreate_thesis_versionfilter ondeleted_at IS NULLand ignore status. So to drop a node from both the live agent prompt and version snapshots you must setdeleted_at— settingstatus='retired'alone leaves it in the tree.
Boot behavior
- On boot,
ensure_thesis_v2_promotedmakes the v2.0 reserve-asset spine the working approved spine (node-level, reversible) — it does not freeze a canonical version. Promotion to canonical still waits on dual sign-off in the Workshop. - The core
positioningvariant group has 7 members, not 2. The seed plants Option A/B, thenensure_positioning_framings(2026-06-05 Architect pass) additively inserts 5 competing framings (titlesOption C–G … (Architect, NN/60)) into the same group. Sochoose_varianton any member retires the other 6. Tests (test_thesis_seed.py,test_thesis_actions.py) assert this 2+5=7 shape — keep them in sync if the framing set changes.
See also docs/thesis-handoff.md for the current thesis content state.