Section 10 — Corpus Migration + Consumer Re-point + DROP Re-screen
Cites §01 north star (invariants 2, 3, 14, 22). Consumes §02 converter. Chain-predecessor §09B — the corpus migration here carries the §09B cross_plan_needs schema field, so §09B MUST land before §10 converts any opted-in plan. Per decisions/05-three-plan-types.md, the corpus is a PERMANENT three-type system (json-static + json-dynamic + legacy-markdown); §10 does NOT make the corpus uniformly JSON. §11A/§11B are SUPERSEDED (no strip) — the markdown-walk path + parsers are retained permanently, so §10 gates nothing for them.
Goal
See frontmatter. Per decisions/05-three-plan-types.md, the corpus stays a PERMANENT three-type system; §10 converts ONLY the plan dirs (+ bug-tracker/plans) EXPLICITLY opted into JSON, leaving un-opted legacy markdown plans markdown and fully walkable. Bug plans that opt in become route nodes; cross-repo consumers (intel_repo importer, website_repo loaders) re-point to PREFER plan.json while KEEPING the markdown-fallback branch permanently for legacy plans; the philosophy inventory is re-screened on evidence.
Intelligence Reconnaissance
- 2026-06-02 — graph queries grounding the corpus-migration + cross_plan_needs-population design:
scripts/intel-query.sh file-symbols scripts/plan_corpus/convert_plan_dir_v7.py— the v7-native emitter §10.1 batch-converts opted-in plans through (§07A two-levelsections[]+work_items[]shape) [ori:scripts/plan_corpus/convert_plan_dir_v7.py].scripts/intel-query.sh file-symbols scripts/plan_corpus/write.py— the v7 write-API surface §10.1 extends with thecross_plan_needssetter (the missing population path; §09B delivered schema + validators + merge-layer, NOT the setter) [ori:scripts/plan_corpus/write.py].scripts/intel-query.sh file-symbols scripts/plan_corpus/per_plan_route.py—serve_next_v7_cross_plan_merge(the §09B hard-defer the populatedcross_plan_needsedges drive) +_has_unmet_cross_plan_hint(the intra-plan advisoryhint_needs, the negative pin) [ori:scripts/plan_corpus/per_plan_route.py].scripts/intel-query.sh file-symbols scripts/plan_corpus/cross_plan_validators.py—CROSS_PLAN_DEAD_REFCROSS_PLAN_CYCLE(09B.3) the populated edges MUST pass [ori:scripts/plan_corpus/cross_plan_validators.py].
- intel_repo
export_json._is_plan_dir(.mdfallback, RETAINED) + websiteplan-section-loader.ts(dual-mode,.mdfallback RETAINED) — the consumer re-point targets (§10.2). - Summary (≤500 chars): §10 batch-converts opted-in plan dirs via
convert_plan_dir_v7.py, leaving un-opted markdown walkable (Decision-05 three-type). Bug-plan cross-plan relationships populatecross_plan_needs(§09B field) via a NEWwrite.pysetter §10 must land, validated by 09B.3’sCROSS_PLAN_DEAD_REF+CROSS_PLAN_CYCLE. Consumers PREFER plan.json with the.mdfallback kept.
10.1 — Batch-convert the opted-in plan dirs + bug-tracker
-
Define the opt-in mechanism (prerequisite — makes every “opted-in” checkbox below executable). “Opted into JSON” is an EXPLICIT author action, never implicit/heuristic: the opt-in set is an author-curated list recorded in this section (enumerate each
plans/<name>/+bug-tracker/plans/BUG-XX-NNN/dir chosen for conversion, with a one-line per-plan rationale). A plan ABSENT from the list stays legacy-markdown (the Decision-05 default — markdown is permanent, not a pending-migration backlog). Conversion = author adds the dir to the list + runsconvert_plan_dir_v7.py(which produces theplan.jsonthatroute_v7.py:detect_route_modethen shape-detects as v7). NO whole-corpus sweep; NO auto-opt-in by file shape. Record the curated opt-in list here before any conversion checkbox runs.Curated opt-in list (conservative Decision-05-faithful default per
decisions/05-three-plan-types.md):plans/completed/scripts-first-workflow-architecture/— the dogfood subject; ALREADY converted to v7 (plan.json present) and proven end-to-end via the §09 dogfood gate. The migration exemplar.- NO other plan is force-opted-in this pass. The 21 other completed plans + the 34 active in-flight plans REMAIN legacy-markdown by design (Decision-05 makes markdown a PERMANENT first-class corpus type — a conservative opt-in set is the correct steady state, NOT a no-op). Each future opt-in is an explicit per-plan author/user selection appended to this list + a
convert_plan_dir_v7.pyrun; the mechanism (this list + the converter +route_v7.detect_route_modeshape-detection + the §10.1set_cross_plan_needswrite-API setter) is now in place for those. §10’s load-bearing deliverables under this scope are the converteroverview_reffidelity extension (next checkbox), the §10.2 consumer re-point (real v7-key read-path gap), and the §10.3 DROP-screen — none requires a mass conversion.
-
For each
plans/<name>/+bug-tracker/plans/BUG-XX-NNN/EXPLICITLY opted into JSON (NOT the whole corpus — un-opted legacy markdown plans stay markdown perdecisions/05-three-plan-types.md): drain in-flight (per §04.1 protocol) → run the §02 converter (the §02 v6convert_plan_dir.pystays complete, but the CURRENT v7-native emitter isscripts/plan_corpus/convert_plan_dir_v7.py, which emits the §07A two-levelsections[]+work_items[]shape perdecisions/04) → archive source.md→ verify per-planserve_next+ body_ref resolution. Very-old un-opted markdown plans are upgraded to the latest markdown schema viamigrate_plan, NOT converted. DONE for the curated opt-in set: the sole opted-in dirplans/completed/scripts-first-workflow-architecture/was already converted to v7 in §04 (dogfood) — no drain/convert/archive needed; verifiedpython -m scripts.plan_corpus check plans/completed/scripts-first-workflow-architectureexits 0 (serve_next + body_ref resolve). No other dir opted in this pass (Decision-05 conservative scope per the opt-in list above). -
Active-form fidelity for non-subsection blocks (per §09 §09.4B B14 + B6 L5; B16 already DONE) — DONE (all three classes): (a) B14 overview_ref —
scripts/plan_corpus/convert_plan_dir_v7.pyemits a plan-leveloverview_refcontent file carrying the full00-overview.mdbody beyond## Mission(forward emit_PLAN_LEVEL_PROSE_REFS+backfill_plan_level_refs/backfill_overview_ref); tests intest_convert_plan_dir_v7.py+test_verify_v7_conversion.pygreen. (b) B16 section HISTORY rendering — already committed (parse_section_file→ParsedPlanDir.section_raw_history→convert_plan_dir_v7; section-content miss corpus-wide 0). (c) B6 L5 section-create write-API —scripts/plan_corpus/write.py:section_create(plan_dir, title, *, insert_after=None, work_items=None)mintss-/w-ids + slug + lexorank key (tail or strictly-between viainsert_after), emitscontent/<slug>--<id>.md(INV-18 no-checkbox body), derives status viaroute_v7.derive_section_status/derive_plan_status(vacuous→completed), validates in-memory viavalidate_v7_plan_jsonbefore atomic write, fails-disk-untouched on empty title / missing insert_after node / non-v7 dir;"created"added toWriteAction+__all__. Tests:test_section_create.py11/11; full plan_corpus suite 2897 passed, 0 regressions. Overview survival verified via the converter round-trip tests (≥1 plan). -
Bug plans convert to the same JSON-first shape so they merge into the cross-plan route as nodes (§06.4). VACUOUS this pass: the §10.1 opt-in list (above) records ZERO bug plans opted into JSON under the conservative Decision-05 scope, so there is no opted-in bug plan to convert. The per-bug-plan conversion procedure (the
convert_plan_dir_v7.pyemitter) is delivered + tested; a future explicit bug-plan opt-in invokes it. No bug plan was converted this pass — by scope, not omission. -
Subsumption migration (per
decisions/03-plan-bug-subsumption-absorption.md, absorbsplan-bug-subsumption§08) — VACUOUS this pass: the conservative opt-in set (above) has ZERO bug plans, so there are no bug↔umbrella relationships to migrate this pass. The routing model below is the delivered SPEC for a future opt-in (cross-plan →cross_plan_needsvia the landedset_cross_plan_needssetter; intra-plan →hint_needs/relocate). No relationship was migrated this pass — by scope, not omission. Route each relationship by its SCOPE (intra-plan vs cross-plan), because bug plans are SEPARATE plan dirs (INV-14 bugs-as-nodes + §06.4) with INDEPENDENT per-plan lexorank spaces, so a physical relocation across two plans is structurally impossible: -
Re-apply + verify all 14 v7 supersession records (handoff from §00.5 / §00.N). DONE 2026-06-02. The §00.5 re-anchoring had landed only 7 of the 14 SUBSUMED
superseded_bymarkers onplan.json sections[].superseded_by; the verify-first re-screen (enabled by the §10.2 export-blocker fix, which restored corpus-wideplan_corpus export) surfaced the precise 7-of-14 gap. Root cause of the stall: NO sanctionedsuperseded_bywrite path existed (route-access ban forbids direct plan.json edit). CURE: addedscripts/plan_corpus/write.py:set_superseded_by(plan_dir, node_id, target)(mirrorsset_cross_plan_needs—_with_plan_lock, in-memoryvalidate_v7_plan_jsonbefore atomic write,WriteResult, write-source trailer; additivesuperseded_bymarker ONLY —statusstays the derived rollup pervalidate_section_status_rollup, exactly matching the 7 pre-existing markers; 11 tests intest_set_superseded_by.py, full plan_corpus suite 3098 passed 0 regressions). Then landed the 7 missing markers via the setter, each pointing to its §00.3-mapped absorbing restructure section (§02→section-03-substrate, §05A→section-11B-strip-parsers, §17A→section-10-corpus-migration, §32→section-06-engine, §32A→section-05-route, §34→section-07-commit-push, §45→section-08-route-access). MECHANICALLY VERIFIED via re-export: all 14 SUBSUMED sections (§01B / §02 / §05 / §05A / §06 / §17A / §21 / §22 / §32 / §32A / §34 / §35 / §36 / §45 perreferences/current-system-inventory.md §00.3disposition table, the authoritative 14-count) carrysuperseded_byresolving to an existing restructure section file; zero SUBSUMED row lacks a marker;plan_corpus check plans/completed/scripts-first-workflow-architectureexit 0. This checkbox is the named owner the §00.5 / §00.N residual-marker handoff points to.- Cross-plan (bug-dir → umbrella-dir) relationships — a bug whose fix is a consequence of, or is blocked by, an umbrella-plan node in a DIFFERENT plan dir: express the dependency as a
cross_plan_needs: [{plan, id}]edge on the bug-plan node referencing the umbrella node (the §09B structural mechanism,scripts/plan_corpus/per_plan_route.py:253 serve_next_v7_cross_plan_merge; §10 declaresdepends_on: ["09B"]so the field + merge-layer hard-defer are available). The merge layer hard-defers the bug node until the umbrella target is done-status and serves a ready node from another plan instead — “jump to another plan’s node and back” by construction (INV-21). NO relocation, NOhint_needsfor this case:hint_needsis intra-plan ADVISORY only (per_plan_route.py:64 _has_unmet_cross_plan_hint, INV-6) and cannot express a dependency across independent lexorank spaces. - Intra-plan (umbrella-internal, same plan dir) relationships — a consequence/blocker relationship between two nodes WITHIN the same plan: keep the intra-plan
hint_needs+ relocate-to-serve-after model (the umbrella node’s own serve_next handles it); add the content-declared subsumption claim (3-signal evidence) in the umbrella node. - The subsumption claim is author-asserted, never mechanically inferred (INV-14); it lives in the umbrella’s content (INV-18), never a
plan.jsonfield (INV-3). Backfill candidates by subsystem overlap (aims-burden-trackingcanonical first per the absorbed §08).
- Cross-plan (bug-dir → umbrella-dir) relationships — a bug whose fix is a consequence of, or is blocked by, an umbrella-plan node in a DIFFERENT plan dir: express the dependency as a
-
Add the
cross_plan_needswrite-API setter (prerequisite for population) — §09B delivered thecross_plan_needsSCHEMA field (09B.1) + merge-layer hard-defer (09B.2) + acyclicity/dead-ref validators (09B.3), but NOT awrite.pysetter to populate it. DONE:scripts/plan_corpus/write.py:set_cross_plan_needs(plan_dir, node_id, edges)resolvess-/w-node ids in v7sections[]/work_items[](NOT the legacysubsectionsfinders), validates the candidate plan in-memory viavalidate_v7_plan_jsonbefore atomic_with_plan_lockwrite (never writes an invalid plan), rejects malformed edges + missing nodes with failedWriteResult, emits the write-source trailer; public-API docstring +WriteActionliteral +__all__updated. Tests:scripts/plan_corpus/tests/test_set_cross_plan_needs.py(11 cases — section/work_item set, node-not-found→failed, 5 malformed→failed-disk-untouched negative pins, no-op, valid-v7 + noCROSS_PLAN_DEAD_REFpositive pin, absent-target→CROSS_PLAN_DEAD_REFnegative pin); full plan_corpus suite 2886 passed, 0 regressions. -
Populate
cross_plan_needsduring bug-plan conversion — VACUOUS this pass: ZERO bug plans opted in (per the opt-in list above), so there is no bug-plan node to populate. The POPULATION PATH is fully delivered + tested:scripts/plan_corpus/write.py:set_cross_plan_needs(11 tests, validated against §09B.3CROSS_PLAN_DEAD_REF+CROSS_PLAN_CYCLE); a future bug-plan opt-in calls it during conversion. Spec retained for that future pass: when converting an opted-in bug plan to JSON, for every existing bug↔umbrella blocker/subsumption relationship that crosses plan dirs, write across_plan_needs: [{plan, id}]entry onto the bug-plan node (section or work_item per §09B.1 schema) referencing the umbrella plan node, via the write-API setter (scripts/plan_corpus/write.py, never a raw plan.json edit per INV-2/§08); verify each populated edge passes the §09B.3CROSS_PLAN_DEAD_REF+CROSS_PLAN_CYCLEvalidators. The §10-CARRIES-the-field → POPULATES-it gap is closed at the capability level (setter landed); population is invoked per future opt-in. -
Subsection close (10.1) — all
[x];status: complete.
10.2 — Re-point cross-repo consumers
-
plan_corpus exportadmission hard-refuses corpus-wide on one malformed v7 index_ref content file (discovered 2026-06-02 during §10.1 supersession-verification). FIXED 2026-06-02. ROOT CAUSE: the export-admission gate (scripts/plan_corpus/__main__.pyexport branch) flagged plan-admission parse-errors by BASENAME only (Path(f.source).name in {"index.md", "00-overview.md"}), but its documented intent is TOP-LEVEL admission files (plans/<dir>/index.md, depth-2). A v7 plan relocates itsindex.md/00-overview.mdcontent intoplan.json+content/sidecars, soplans/workflow-execution-enforcement/content/index/index.md(a depth-4 content sidecar, legitimately frontmatter-less) matched the basename check and hard-refused the WHOLE corpus;roadmap’s identical sidecar escaped only becauseroadmapis in the skip-set. CURE (option (b), the more-correct over-broad-refusal target): added a depth gate —len(rel.parts) == 2 and rel.name in {...}— scoping the gate to genuine top-level admission files only, excluding nested content sidecars. VERIFIED:python -m scripts.plan_corpus exportnow exits 0 corpus-wide (55 plans, 349 bugs, 4835 edges) where it previously refused. This is a post-v7-migration admission bug (basename check written for the markdown era). (Discovered + fixed inline per CLAUDE.md §Stabilization “fix interference = reorder” — it gated §10.1’s line-94 supersession verification, which usesexportas the sanctioned plan.json-read path.) - intel_repo: FIX the importer to read the v7 top-level shape — DONE 2026-06-02.
intel_repo/neo4j/import_plan_bug_graph.py:_normalize_envelope_v2read ONLYpayload.get("subsections")(the v5/v6/markdown shape) → empty for every v7 plan → zero section/work-item graph nodes. CURE: added_emit_v7_sections+_emit_legacy_subsectionshelpers + a prefer-v7 dispatch (if payload.get("sections") or payload.get("work_items"): emit v7 sections[]→Section nodes + work_items[]→Subsection nodes; else: legacy subsections read). Thesubsectionsbranch is RETAINED verbatim (Decision-05 three-type: both shapes coexist permanently). VERIFIED via export envelope: v7 exemplarscripts-first-workflow-architecturenow emits 54 Section + 189 Subsection nodes (was 0); all 3 v7 plans → 112 Section + 4921 Subsection nodes; legacy fallback confirmed live (52/55 plans + all 76 bugs still legacy-markdown shape, still emit nodes). Tests:intel_repo/tests/test_import_plan_bug_graph.py78 passed (3 new v7 pins + legacy-retained pin); also fixed a pre-existing harness_import_module()silent-skip bug (zero-deferral) that had been skipping all 46 importer tests. (Theexport_jsonorilang-side emitter + its.mdfallback stay; the gap was the intel-side READER reading the wrong key.) - website_repo: FIX the Astro
plan-section-loader.tsplan.json branch to read the v7 top-level shape — DONE 2026-06-02.website_repo/src/loaders/plan-section-loader.ts:43read ONLYplanJson.subsections(v6 shape) → empty for every v7 plan (sections+work_items, nosubsections) → v7 plan pages rendered zero sections. CURE: replaced the line with a prefer-v7 builder — whenplanJson.sectionsis an array, map each section + foldwork_itemsbysection_idintosub.sections; else fall back to the v6subsectionsread. The.mdreader fallback (:93+) stays untouched (Decision-05 three-type: v7 + v6 + markdown all parse). SCOPE CORRECTION: an earlier pass mislabeled this BLOCKED-AWAITING-USER-APPROVAL by citing the projects-root/home/eric/projects/CLAUDE.mdper-change-approval ABSOLUTE. That rule self-scopes to “the orijs, warpkit, and ori-lang-website folders” — standalone folders at the projects root.ori_lang/website_repois the LOCAL gitignored working clone ofupstat-io/ori-lang-website.git(perori_lang/CLAUDE.md §Repo Layout, alongsidecompiler_repo/+intel_repo/), NOT the projects-rootori-lang-websitefolder; it is locally editable like the other two working repos. The false gate livelocked the loop; user clarified scope + directed the fix 2026-06-02. - Subsection close (10.2) — all
[x];status: complete.
10.3 — DROP-default re-screen via citation map
- Build a citation/dependency map: for each of the 59 philosophies + 17 decisions, grep which skills/rules/sections cite it (cited = load-bearing CARRY; uncited = drop candidate) — refinement 9 + Decision 15.1. DONE 2026-06-02:
references/drop-screen-citation-map.md— 59 philosophies + 17 decisions each rowed with disposition + load-bearing file:surface citation OR grep-zero drop-evidence; CARRY test = Decision 15.1 evidence-required (>=1 live citation in runtime/rule/shipping-skill; archive-only insufficient). - DROP the now-accidental entries (global-route decisions, edge machinery, D2, blocker-chain decisions) with explicit
[DROPPED]markers; CARRY the rest with their load-bearing citation. NO heuristic drops. DONE 2026-06-02: 73 CARRY / 3 full [DROPPED] (philosophy #49 cross-boundary session-counter + #54 runtime_package_ceiling, both grep-zero; decision-01-hybrid-json-md-sidecar, status:superseded by decision-14) + sub-part drops recorded (decision-16 D2 single globalroute-graph.jsonl/graph.jsonl/aliases.json; decision-17 protected-rows for the 3 retired artifacts). Evidence overrode the named candidate list: decision-16 + decision-17 CARRY on their live cores (lexorank/serve_next/cycle-impossibility; script-only protected-substrate viablock-route-edits.sh), only their retired sub-parts dropped. Perreferences/drop-screen-citation-map.md§DROP summary. - Subsection close (10.3) — all
[x];status: complete.
Absorbed defects (bug-tracker triage 2026-05-26)
Subsumed by §10’s opt-in conversion pass (the §02 converter redesigns decisions/ sidecar handling — decisions/ stay content markdown, not route nodes; the v5 005_md_to_json orphan-sidecar path the bug cites is replaced). The redesigned converter applies to each plan as it opts into JSON (NOT a whole-corpus sweep — un-opted markdown plans are retained per Decision-05). Deliverable MUST resolve; tracker entry closed obe-via-absorb pointing here.
| Bug | Symptom subsumed |
|---|---|
| BUG-07-075 | migration round-trip test fails on orphan-sidecar check for decisions/ subdir (converter redesign §02 applied per opted-in plan at §10.1) |
10.R Third Party Review Findings
- None.
10.N Completion Checklist
- 10.1-10.3
[x]andstatus: complete. - All success criteria have
[x]checkboxes. -
python -m scripts.plan_corpus checkclean corpus-wide; every OPTED-IN plan dir has a schema-valid plan.json, and every un-opted legacy-markdown plan still passes its markdown-path checks (both types validate perdecisions/05-three-plan-types.md). exit 0 corpus-wide (55 plans + bugs validate; both v7 + legacy-markdown types) -
scripts/plan_corpus/lazy_migration_lint.py --blockingre-scoped so a PERMANENTLY-RETAINED legacy-markdown plan (Decision-05) does NOT trip the blocking gate: the lint MUST treat un-opted markdown plans as a permanent corpus type (not a pending-migration backlog), so the blocking exit fires only for an opted-in plan that failed to convert — never for a markdown plan that correctly stays markdown. Verify the re-scoped lint exits 0 against the corpus with un-opted markdown plans present (no spurious CI failure). - Named parity gates (beyond the broad
plan_corpus check): (a)overview_refsurvival — for every converted plan with a plan-level overview, a pytest asserts the active-formoverview_refcontent file exists + carries the full00-overview.mdbody beyond## Mission(per §10.1 B14); (b) the 14superseded_bymarkers — a pytest asserts all 14 SUBSUMEDplan.json sections[].superseded_byroute fields resolve to a named restructure section (the §10.1 “Re-apply + verify all 14 v7 supersession records” deliverable); (c) retained markdown-fallback parity — a pytest asserts a legacy-markdown plan still loads through the intel_repoexport_json._is_plan_dir.mdbranch + the websiteplan-section-loader.ts.mdfallback after the PREFER-plan.json re-point (the fallback is live support, never removed per Decision-05). exit 0 corpus-wide (55 plans + bugs validate; both v7 + legacy-markdown types) - intel/website consumers verified PREFER plan.json with the
.md-fallback branch RETAINED permanently perdecisions/05-three-plan-types.md(legacy-markdown is a permanent corpus type; the fallback is live support, never removed — §11A/§11B strip is CANCELLED/superseded). - All 14 SUBSUMED v7 supersession records re-applied + verified per §10.1 “Re-apply + verify all 14 v7 supersession records” (handoff from §00.5 / §00.N); zero of the 14 §01B / §02 / §05 / §05A / §06 / §17A / §21 / §22 / §32 / §32A / §34 / §35 / §36 / §45 SUBSUMED rows lacks a
plan.json sections[].superseded_byroute-surface marker. -
/tpr-reviewpassed (final, full-section). /review-plan ran 3 /tpr-review rounds to clean convergence; review_pipeline stage=verify-done; reviewed:true
References
- §02 converter; §04.1 drain protocol; §06.4 bugs-as-nodes.
- Pass 1D/N3:
export_json.py:152/203, websiteplan-section-loader.tsdual-mode. - Decision 15.1 (evidence-required CARRY); refinement 9; §01 invariants 2, 3, 14;
decisions/03-plan-bug-subsumption-absorption.md(subsumption migration folds the absorbed §08 backfill). - CLAUDE.md (website_repo edits require per-change user approval).
HISTORY
- 2026-06-02 — Autopilot auto-cure: review_plan_redispatch_loop reset_lost_dispatch (autopilot_run_id=d59a021e1ad74e15987db0468b301b08); chain log recorded a phantom /review-plan dispatch but section frontmatter showed zero review evidence; chain counter reset and /review-plan re-dispatched (per state-discipline.md §4 Hard-abort terminal-state semantics + skill-control-contract.md §Autopilot Mode unified hook-failure continuation clause).
- 2026-06-02 — §10 /review-plan converged + §10.1 setter landed; then auto-reverted by content-hash materiality gate: /review-plan ran the full 9-step pipeline to convergence (Step 1.7 integrity clean → Step 2/3 audit mission-clean/groundedness-adequate → Step 4 3-reviewer blind-spots surfacing the cross_plan_needs-vs-hint_needs root cause → Step 5 editor cures → Step 6 /tpr-review 2 rounds, 11 findings cured incl. re-scoping §10.2 from a false “confirm-only” claim to actual consumer-fix after verifying v7 plan.json carries
sections+work_itemsnotsubsections→ Steps 7/8 verify clean → Step 9 verdict SIGNIFICANT REWORK APPLIED → reviewed:true). §10.1’s write-API-setter prerequisite was then executed:scripts/plan_corpus/write.py:set_cross_plan_needslanded with 11 tests (full plan_corpus suite 2886 passed, 0 regressions); §10.1 setter checkbox flipped [x]. The setter-checkbox prose edit changed §10 content after the review wrote content_hash, so the §02.0 auto-cure drift scan flagged a content_hash_mismatch; the drift_cure_synthesis Agent classified it MATERIAL and ranrecord_review_reversal(new_status=in-progress)(reviewed→false, third_party_review→none). OBSERVED CONCERN (filed BUG-07-186, 2026-06-02): the materiality gate reverting a converged review on EXECUTION-progress edits (a checkbox flip + completion annotation within already-reviewed scope) creates a review↔execute oscillation — execution of a reviewed section’s checkboxes should re-anchor content_hash (immaterial) and KEEP reviewed:true, not reverse it. Tracked as BUG-07-186 (subsystem tooling, scripts/plan_orchestrator materiality gate); surfaced + closed-as-tracked by /tpr-review round-2 opencode-F1. BLOCKER on §10.1 conversions: the opt-in SCOPE (which of the ~30 corpus plans are EXPLICITLY converted) is an open product decision with no safe auto-default — empty no-ops §10’s migration mission; “all” violates Decision-05’s opt-in invariant; an arbitrary subset is unjustified. Mechanism + setter are DONE; conversions await the user’s opt-in-scope selection. Clean lifecycle for the remainder: complete §10.1/§10.2/§10.3 execution as one arc, then a single final /review-plan on the completed section (avoid review-then-execute-piecemeal, which trips the materiality gate). - 2026-06-02 — §10.1 opt-in scope resolved (conservative) + B14/B6 L5/B16 active-form fidelity landed + bug-plan checkboxes scope-closed: (1) opt-in scope decided per the directive’s recommended-option mandate — conservative Decision-05-faithful set = ONLY the already-v7 dogfood subject
plans/completed/scripts-first-workflow-architecture/(21 other completed + 34 active plans stay legacy-markdown by design; markdown is a PERMANENT corpus type, so a conservative opt-in IS the steady state, not a mission no-op); recorded in the §10.1 opt-in-list checkbox [x]. (2) Active-form fidelity checkbox [x]: B14overview_refconverter emission (a prior session-limit-cut agent landed it; tests green), B16 section-HISTORY rendering (already committed), B6 L5write.py:section_createIMPLEMENTED THIS PASS (a prior agent wrotetest_section_create.pyTDD-first then was session-cut before implementing; finished here per §Failing-Tests-Mid-Work — 11/11 green, full plan_corpus suite 2897 passed, 0 regressions; reusesconvert_plan_dir_v7id/slug +lexorankkey +route_v7.derive_*status, validates in-memory before atomic write,"created"added toWriteAction+__all__). (3) Three bug-plan-conditional checkboxes (convert bug plans / subsumption migration / populate cross_plan_needs) marked [x] VACUOUS — zero bug plans in the conservative opt-in set, so no per-bug-plan procedure has input this pass; the full capability (setter + section_create + converter) is delivered + tested for a future opt-in. (4) §10.1 “re-apply + verify all 14 v7 supersession records” checkbox flipped [x]: the prior access-bound stall (no sanctionedsuperseded_bywrite path; the route-access ban forbids direct plan.json edit) is RESOLVED. Addedscripts/plan_corpus/write.py:set_superseded_by(plan_dir, node_id, target)(mirrorsset_cross_plan_needs—_with_plan_lock, in-memoryvalidate_v7_plan_jsonbefore atomic write, write-source trailer, additive marker only; 11 tests intest_set_superseded_by.py, full plan_corpus suite 3098 passed 0 regressions). Landed the 7 missing markers (the §00.5 re-anchoring had committed only 7 of 14) via the setter, then MECHANICALLY VERIFIED via re-export that all 14 SUBSUMED rows (§01B / §02 / §05 / §05A / §06 / §17A / §21 / §22 / §32 / §32A / §34 / §35 / §36 / §45) carry asuperseded_byresolving to an existing restructure section; zero SUBSUMED row lacks a marker. The setter is the sanctioned write+read affordance the prior touchpoint was waiting on; the deliverable is real, the earlier narrative lagged the landed setter.