Repository navigation
The migration's final spec reconciliation batch: Brett Heap's ruled plan texts, the dated notes that the Gate B walk at rehearsal D lists, the plan the cutover executed and the cutover's as-built record (part of opensoft/openRepoTools#186) - #3
Merged
Merged
Conversation
… S4's published copy of the final plan, byte for byte The first part of T015's final spec reconciliation batch for opensoft/openRepoTools#186, which round 20 (2) of Brett Heap's rulings puts in one spec-leg PR, "Inside the final batch (Recommended)". specs/004-migrate-to-triad/adoption-plan-cutover-2026-10-26.yaml is the cutover runbook's S4 output, the published copy of FP, the final plan: FP's bytes (sha256 94af9924ebbf58aad5b916528e3e2f76e6f588acd0d65cff5efe534fdadaf2d9, generated 2026-10-22 from main 33ce26dffc5286e68f1d29ab5c6458edef0330c0 with openRepoShape adopt-project.py at 190133d5e704e380c430f87ca9c4e31746de0012, v1.1.0) but for its local_path, which is ".", under a seven-line header that names FP's sha256 and Gate C's approval, and with two closing lines, planning_status: cutover-record-not-an-approval and execution_authorized: false. It records the plan execute read on 2026-10-26 and authorizes nothing. Gate C is Brett Heap's sentence, approved 2026-10-23T11:01:55Z and relayed in opensoft/openRepoTools#186 comment 6363430219, and execute ran on his separate go word. The file is S4's, byte for byte: 485 lines, 36754 bytes, sha256 538e2521eaaeff8f99e4de7c3af26e016488cb53f1169aacab934a3062e5f66a, git blob 6d36a59, the blob the step that merges this batch finds in its tree. Its 200 source paths go spec 108, code 86 and root 6, none dropped, with 42 follow-ups. Where it lives is lane 1's draft choice (the runbook's S4): beside the rehearsal records under specs/004-migrate-to-triad/. The change's own openspec/changes/migrate-to-triad/adoption-plan.yaml is left as it is: it is run C's plan of 2026-10-08, a rehearsal input. Lane: openRepoTools-1 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…rst, so the requirement's first body line carries it, by Brett Heap's ruling on Ask 7(a) Brett Heap's ruling on Ask 7(a), the validator, in round 3 of his rulings of 2026-10-22 (answered 13:05:08Z; relayed in opensoft/openRepoTools#186 comment 6342293150). His answer, verbatim: "Replace spec.md lines 45–48". The option he chose read: "Put SHALL first ("The migration SHALL keep the existing one-line installation, …") and leave the rest unchanged. Both CLIs then pass this change, and no requirement changes meaning. 1.2.0 still fails release-tags-pypi and interactive-lane-name-repair." Lines 45 to 48 of openspec/changes/migrate-to-triad/specs/repository-triad-migration/spec.md, the first four body lines of "Installation retains the public interface and one revision", are replaced by the four lines the old Gate B walk proposed for it (gate-b-status-2026-10-09.md, section 4(a), option 1), byte for byte. openspec 1.2.0 reads only a requirement's first non-blank body line, and that line had no SHALL; 1.6.0 reads the whole body. No requirement is added, removed or renamed, no scenario changes, and the requirement's two last lines are unchanged. Left outside this edit, as the ruling left them: the stray word where line 64 ends "its manifest/pins; product" and line 65 begins "Full proposals", which needs its own word (the Gate B walk at rehearsal D, section 5, item 7). The file is the one at 33ce26d, unchanged since. Lane: openRepoTools-1 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ributes, added after extraction, and that each leg's own front-door files are added after extraction, by Brett Heap's ruling on Ask 7(c) Brett Heap's ruling on Ask 7(c), in round 2 of his rulings of 2026-10-22 (answered 13:01:48Z; relayed in opensoft/openRepoTools#186 comment 6342293150). His answer, verbatim: "Full amendment (Recommended)". The option he chose read: "Row 59 gains "its own .gitattributes, added after extraction". A paragraph after the table says each leg's own front-door files are added after extraction, so the adoption mapping doesn't change. This is the walk's proposed text." So specs/004-migrate-to-triad/plan.md, section "Target placement", takes the old Gate B walk's proposed amendment (gate-b-status-2026-10-09.md, section 4(c)), byte for byte: - row 59, the code leg's, gains "its own `.gitattributes`, added after extraction" in its paths cell, and its reason cell says why: git never applies the assembly's `.gitattributes` inside a submodule; - the paragraph after the table says that extraction gives each original front-door file one owner, the assembly, that T006's leg patches then add each leg's own front door, and that these are reviewed changes after byte accounting, not moved paths, so the adoption mapping does not change. Row 57, the assembly's, is unchanged: the original files and their history stay at the root. The cutover did as the text says: code-0001 and spec-0001 added the legs' own files in their PRs, after execute. Lane: openRepoTools-1 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ated for a Linux-only CI, in lane 3's wording, by Brett Heap's ruling on Ask 7(d) Brett Heap's ruling on Ask 7(d), T010's platform clause, in round 3 of his rulings of 2026-10-22 (answered 13:05:08Z; relayed in opensoft/openRepoTools#186 comment 6342293150). The question asked whether tasks.md:78–79, design.md:121–126 and plan.md:127–129 and :251 should "be restated for Linux-only CI", with "Lane 3's example wording: "the Linux-only policy and serialized tests/run.sh locking, the bash 3.2 parse living in release.yml's macOS install leg"". His answer, verbatim: "Approve that wording (Recommended)". The four places, at 33ce26d's line numbers. In each, only the clause that named the platform policies or the bash 3.2 floor changes, to lane 3's wording as the old Gate B walk's line 33 gives it, with its code spans; the rest of each sentence stands: - specs/004-migrate-to-triad/tasks.md:78–79, T010: "preserve current Linux/macOS/Windows/WSL policies, Bash 3.2 parsing and serialized `tests/run.sh` locking" becomes "preserve the Linux-only policy and serialized `tests/run.sh` locking, the bash 3.2 parse living in `release.yml`'s macOS install leg"; - openspec/changes/migrate-to-triad/design.md:124–126, in the section "CI and exact-pin delivery" (121–126): "the canonical serialized `tests/run.sh`, Bash 3.2 parsing and current platform/fixture timing policies" becomes "the canonical `tests/run.sh` with the Linux-only policy and serialized `tests/run.sh` locking, the bash 3.2 parse living in `release.yml`'s macOS install leg, and current fixture timing policies"; - specs/004-migrate-to-triad/plan.md:127–129: "the Bash 3.2 floor" becomes lane 3's wording, before "the original no-submodule test behavior"; - plan.md:251: "Bash (macOS 3.2)" becomes "Bash", and the sentence gains lane 3's wording. Why: opensoft/openRepoTools#227 (aaa7bc8), on Brett Heap's decision of 2026-10-15, removed tests-macos, tests-windows and parse-macos, so CI is Linux only, and the one bash 3.2 parse is release.yml's macOS install leg (gate-b-status-2026-10-09.md, line 33). The option he chose said: "Lane 3 says CI is enough for row 33 and proposes this doc-only update. With it, the walk's line 33 can be met." Lane: openRepoTools-1 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…at T015, against the real exact assembled head, by Brett Heap's ruling on Ask 6 Brett Heap's ruling on Ask 6, question (d), hosted CI before the real legs exist, in round 4 of his rulings of 2026-10-22 (answered 13:07:16Z; relayed in opensoft/openRepoTools#186 comment 6342293150). His answer, verbatim: "Option 1: move to T015 (Recommended)". The option he chose read: "Gate B doesn't wait for hosted runners. The hosted runs of the code leg's tests.yml jobs and of composed.yml move to T015, before the root adoption merge. Until then, the green code-side PR jobs and the local runs stand in. No repository is created. The walk recommends this option." The old Gate B walk's option 1 names the matching addition to T010 (gate-b-status-2026-10-09.md, section 4(d)), and T010 in specs/004-migrate-to-triad/tasks.md gains it as its last sentence, word for word: "Hosted-runner checks that need the real leg repositories run at T015 against the real exact assembled head." Nothing else in T010 changes in this commit; its platform clause is the commit before. Lane: openRepoTools-1 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…d as overridden, by Brett Heap's choice of option A on lane 1's card 16 Brett Heap's ruling on lane 1's card 16, the 005 and opensoft/openRepoTools#97 remainders, in round 7 of his rulings of 2026-10-22 (answered 14:53:08Z; relayed in opensoft/openRepoTools#186 comment 6343863633). His answer, verbatim: "Option A (Recommended)". The option: no continuation; feature 005's bookkeeping closes as a spec-only change after the cutover, and the 8 open tasks of opensoft/openRepoTools#97's change wait for a later numbered feature; plan.md's lines 89 and 90, which say otherwise, are named as overridden, an edit that lands after the split. In specs/004-migrate-to-triad/plan.md, the table of recommended active-work dispositions (lines 89 and 90 at 33ce26d): - the row for opensoft/openRepoTools#97 and the row for opensoft/openRepoTools#121 with feature 005-supervised-legacy-ctx each begin with "Overridden 2026-10-22: see the note after this table.", and keep their words; - a dated note after the table names both rows as overridden, gives the ruling and its relay, and says that they stay as written, as history. The note writes the two pull requests in full, as opensoft/openRepoTools#97 and opensoft/openRepoTools#121, because in this leg a bare number would name the leg's own. The rest of the table is unchanged. Lane: openRepoTools-1 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…e translations before the final batch are named as overridden, by Brett Heap's round 20 Brett Heap's ruling on Gate D's first clause, in round 20 of his rulings of 2026-10-23 (answered 12:24:37Z; relayed in opensoft/openRepoTools#186 comment 6364869132). His answer, verbatim: "Met by receipts; translate after (Recommended)". The option he chose read: "Card 15, table v2.1 and P8's disposable half of T018 meet Gate D's first clause. The translations follow the root-split merge, and plan.md:186–188 and tasks.md:165–167 are named as overridden, as card 16 did for plan.md:89–90. This keeps the window with main frozen short." So, at 33ce26d's line numbers, as the commit before did for card 16: - specs/004-migrate-to-triad/plan.md:186–188, the sentence that has continued-feature translations and disposable workflow checks prepared in the candidate before the final migration batch, is followed by "(Overridden 2026-10-23: see the note after this paragraph.)", and a dated note after the paragraph names it as overridden, gives the ruling and its relay, and says that lane rebinding still waits for the reviewed cutover; - specs/004-migrate-to-triad/tasks.md:165–167, the sentence that prepares the T016–T017 translations and T018's disposable workflow checks in the candidate before T015's final reconciliation, is followed by "(Overridden 2026-10-23: see the note below.)", and a dated note after the Dependencies paragraph does the same. Both sentences keep their words, as history. Gate D's first clause itself, plan.md:198–199, is not overridden: the ruling meets it by those receipts, which the cutover's Gate D record reads. Lane: openRepoTools-1 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… the checklist's lines 23, 24 and 29, which the walk at rehearsal D owes them Item 1 of section 5 of the Gate B status walk at rehearsal D (specs/004-migrate-to-triad/gate-b-status-2026-10-22.md on the evidence branch 004-migrate-to-triad-rehearsal-d at b0eb112), "the dated notes of rows 23, 24 and 29". These texts are lane 1's call, written here for the cutover's final reconciliation batch (opensoft/openRepoTools#186, T015; round 20 (2) of Brett Heap's rulings puts them in it). - Line 23, specs/004-migrate-to-triad/installer-design.md:89: a dated note after the compatibility table says that its platform row predates opensoft/openRepoTools#227 (aaa7bc8), which made CI Linux only with the one bash 3.2 parse in release.yml's macOS install leg, and that opensoft/openRepoTools#237's hook gate and opensoft/openRepoTools#228's pipx link are in no part of the design. - Line 24, installer-design.md:61–64: a dated refresh after the paragraph gives the counts at 33ce26d with line cites into openRepoTools, which is the code leg's file byte for byte (blob ca4fc44): 17 names in INSTALLABLES (:1292), three skills (:2280) and three command files (:2293) at two destinations each, 29 placed files and 29 receipt rows, and the two hook entries only once their path answers guard (:2384, :57–58). Rehearsal D's P4 measured "17 of 17 placed", 29 receipt rows, and both hook entries merged with the gate open and neither with it closed. - Line 29, gate-b-status-2026-10-09.md:184: the old walk gets a dated block after its 2026-10-19 one, which names the walk at rehearsal D as superseding it for the 46 lines and lists what that walk's section 5 owes this file. Its first entry is line 29's refresh against aa14de3: opensoft/openRepoTools#195 landed there, with lane 3's LAND at fb77bed and on the delta to e378871 (PR reviews 5481360555 and 5508055705). The next commits add the walk's items 2 to 5 to the same block. The original text of both files stays as written, as history. Lane: openRepoTools-1 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…of the runner-pin pull request, as dated notes Item 2 of section 5 of the Gate B status walk at rehearsal D: lane 3's review of opensoft/openRepoTools#299, comment 6317075196, left four NITs on the dated notes, three of them edits to documents that are now this leg's. The fourth, NIT 3, owes no edit: the squash body of 33ce26d already records that the second look at the line numbers is done. The texts are lane 1's, written for the cutover's final reconciliation batch (opensoft/openRepoTools#186, T015). - NIT 1, specs/004-migrate-to-triad/gate-b-checklist.md:202: the 2026-10-21 note's sentence that began "Since" said that opensoft/openRepoTools#296 took the patched file to four jobs. opensoft/openRepoTools#227 did, and opensoft/openRepoTools#296 changed only the runners and moved the lines. The sentence now reads as lane 3 suggested, with each pull request in full ("As opensoft/openRepoTools#296 leaves it, the patched file holds four jobs (opensoft/openRepoTools#227 had removed the other three)"), and says when and for which NIT it was worded so. - NIT 2, specs/004-migrate-to-triad/candidate-2026-10-09.md:104, with the paragraph at lines 110 to 116: the 2026-10-19 note names steps 11 and 13 only. A dated sentence after it adds step 14: it applied the earlier t010-assembly-exact-pin-job.patch (6ee09f00…74670b), its result stands as recorded, and the file at that path is now the one regenerated on 2026-10-21 (60245cb9…f0f653). - NIT 4, specs/004-migrate-to-triad/gate-b-status-2026-10-09.md:187 (checklist line 32): the old walk's 2026-10-26 block gains it. The regenerated assembly patch's runner comment differs from the tests.yml comment it follows in three places, not two: THIS for EVERY, no Python 3.9 clause, and the inserted ", which this job's suite runs,". Read again for this commit, at the patch's lines 63 to 65 and tests.yml's lines 55 to 57 at 33ce26d. Lane: openRepoTools-1 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…s fire on ubuntu-24.04, and Brett Heap's ruling installs zsh so that 6 remain Item 3 of section 5 of the Gate B status walk at rehearsal D: line 186 of specs/004-migrate-to-triad/gate-b-status-2026-10-09.md (checklist line 31) says that about forty other conditional skips can still pass a composed run and that none fires on ubuntu-24.04. Lane 2 counted 66 there: 60 zsh tests, 1 byte-count test and 5 wheel tests (opensoft/openRepoTools#186 comment 6327803546). The old walk's 2026-10-26 block gains a bullet that says so, and gives Brett Heap's ruling on Ask 5 (2026-10-22, round 4, "Install zsh in composed.yml"): the 60 zsh tests run and 6 skips remain, as in rehearsal D's composed run on a bench that has zsh. The assembly root's composed.yml carries that from the cutover's root follow-up row 6a (9e5cca2). Line 31 itself is MET WITH NOTE at D on his round 10 ruling, "Accept without job 5". The wording is lane 1's, for the cutover's final reconciliation batch (opensoft/openRepoTools#186, T015). The cell stays as written, as history. Lane: openRepoTools-1 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…that was closed to the one that holds the cases it left Item 4 of section 5 of the Gate B status walk at rehearsal D: the pointers to opensoft/openRepoTools#180 that are now opensoft/openRepoTools#304's. opensoft/openRepoTools#180 was closed with opensoft/openRepoTools#215 (61a7378), which moved only repoA11b's tail case. The row-stamp cases it left are opensoft/openRepoTools#304's: repoA-1 and repoCase-1 (tests/test_lane_helpers.sh:1272 and :8552 at 33ce26d; rehearsal D's record, P3), and repoMIX-1 (:8645), which lane 3 found on 2026-10-22 (opensoft/openRepoTools#186 comment 6342130291). Their fix is the code leg's 1e6f2d1, the cutover's code follow-up row 3a, merged by opensoft/openRepoTools-code#1 as 2a057a6d. A git grep for that issue number under specs/ at 33ce26d finds 19 lines in four files, 18 of them pointers of that kind (lane 3, opensoft/openRepoTools#186 comment 6332521834). The spec leg's main gives the same 19 lines. Each file gets one dated note, which names its pointer lines at 33ce26d and says to read them as pointers to opensoft/openRepoTools#304: - candidate-2026-10-09.md: lines 261, 262, 282, 316 and 380, in a note before section 1. Line 404 is a list of the issues read with gh, and the note says that it stays as it is. - gate-ab-evidence-2026-10-09.md: lines 436, 520 and 628, in a note before section 1. - test-roots-and-ci-2026-10-08.md: lines 300, 305, 306, 369 and 477, in a note before section 1. - gate-b-status-2026-10-09.md: lines 187, 189, 327, 511 and 640, as an entry of the old walk's 2026-10-26 block. The pointer lines stay as written, as history. The notes' wording and places are lane 1's, for the cutover's final reconciliation batch (opensoft/openRepoTools#186, T015). Lane: openRepoTools-1 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…of each, in its 2026-10-26 block Item 5 of section 5 of the Gate B status walk at rehearsal D: the stale cells of the old walk, specs/004-migrate-to-triad/gate-b-status-2026-10-09.md, and the lines it still carries. The walk at rehearsal D gives each line's update in its section 1. The old walk's 2026-10-26 block gains one entry, which names each one with its line at 33ce26d: - the cells of checklist lines 2, 12, 17, 25, 33 and 46 (:157, :167, :172, :180, :188 and :201), each with its update, and lines 23, 24, 29 and 32 (:178, :179, :184 and :187), which the entries of items 1, 2 and 4 cover; - the "not on main" remarks in lines 36, 39 and 40 (:191, :194 and :195): opensoft/openRepoTools#196 landed those records as 983d8c7; - line 40's count: the patches/ folder holds nine patch files, four at its top and five under patches/t006/ (lane 2's NIT 7, opensoft/openRepoTools#186 comment 6333755295); - section 4(d) (:502, :504, :515 to 516 and :529), which names the jobs that opensoft/openRepoTools#227 removed: its basis restated without them, on Brett Heap's ruling on Ask 6 (2026-10-22, round 4, option 1); - the API-call count at :531 and :611: 5 per install is the T007 v2 patch's, and v3 makes 6, the root 2 and the implementation 4 (installer-2026-10-08.md:234). The cells stay as written, as history. The wording is lane 1's, for the cutover's final reconciliation batch (opensoft/openRepoTools#186, T015). Lane: openRepoTools-1 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…against the cutover's, and records what the cutover did through S12 T015 of specs/004-migrate-to-triad/tasks.md asks the final spec reconciliation batch for "net tested effects, every amendment disposition, dated departures/as-built record, archived approval provenance, deferred issues and actual landed code/evidence" (tasks.md:110-113), under opensoft/openRepoTools#186. specs/004-migrate-to-triad/cutover-as-built-2026-10-26.md is that record, beside the published copy of the plan the cutover executed. It sets design.md's preliminary baseline (daed209, 64 paths, 28 follow-ups, openRepoShape 39d5c98; openspec/changes/migrate-to-triad/design.md:5-7 and 44-45, and plan.md:18-24) against the cutover's (33ce26d, 200 paths, 42 follow-ups, openRepoShape 190133d, v1.1.0). It records, from the cutover's own records and lane 1's relays on opensoft/openRepoTools#186: - what each step from S1 to S12 did, and when; - the net tested effects: execute's legs equal to rehearsal D's tips, S8's doctor, S9's accounting of all 200 source entries, the twelve follow-up rows with their commits, the code leg's S14 runs, and the root's checks at S12's head, which lane 2 repeated on its own; - S14 at S12's head: the split PR's validate and composed runs passed, and S14 root-head read them green, with exact-pins's 6 skips the wheel and byte-count cases that Ask 5 leaves; - the landed code, every plan-text amendment and its disposition, the approval provenance, six dated departures and the deferred issues. It says that it cannot record T015's items 1 to 6, this batch's own merge, the approved bump push, the root-split merge or Gate D, which all come after it lands. Dated notes in design.md (two) and plan.md (one) point from the preliminary baseline to the record. The text and the file's name and place are lane 1's, for the cutover's final reconciliation batch. Lane: openRepoTools-1 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…to the cutover's as-built record, instead of a refresh of its sections 2 to 5 Item 6 of section 5 of the Gate B status walk at rehearsal D: specs/004-migrate-to-triad/candidate-2026-10-09.md is r2's record. The Gate C ledger's P6 asks for it to be refreshed in its sections 2 to 5 form, and the Gate C status draft lists that as not done. D's record carries D's candidate in its section "The candidate (stage 4, v0)", so what a refresh adds is lane 1's call. Lane 1's call, for the cutover's final reconciliation batch (opensoft/openRepoTools#186, T015): no rewrite. A dated note before section 1 says that this is r2's record, with r3's in section 9, and is not refreshed; that the candidate of record at Gate C is rehearsal D's, in D's record on the evidence branch 004-migrate-to-triad-rehearsal-d at 94f8a3c until the spec-only continuation T017 carries it into this leg; and that what the cutover built is in the as-built record beside this file. The sections stay as written, as history. Lane: openRepoTools-1 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Sorry @brettheap, you've used your own review budget of 250,000 diff characters for the last 7 days. You can request another review in 4 days by commenting |
Reviewer's GuideThis documentation-only batch completes T015's final migration-spec reconciliation by preserving historical records with dated corrections, publishing the exact approved adoption plan, and capturing the cutover's tested as-built state, provenance, landed follow-ups, departures, and deferred work. Flow diagram for the final migration spec reconciliationflowchart LR
B[Preliminary migration baseline] --> P[Approved adoption plan]
P --> C[Cutover execution]
C --> R[Final reconciliation batch]
R --> H[Dated historical corrections]
R --> A[Cutover as-built record]
R --> F[Deferred issues and landed follow-ups]
File-Level Changes
Possibly linked issues
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This is the final spec reconciliation batch of the cutover of opensoft/openRepoTools#186, which adopted opensoft/openRepoTools in place as the assembly of this spec leg, opensoft/openRepoTools-spec, and the code leg, opensoft/openRepoTools-code. T015 of
specs/004-migrate-to-triad/tasks.mdasks for it: "Complete one final spec reconciliation batch with net tested effects, every amendment disposition, dated departures/as-built record, archived approval provenance, deferred issues and actual landed code/evidence." This pull request lives in a different repository from the cutover's issue, so every issue is named here in full: a bare issue number would link to this repository's own numbers.It carries fourteen commits, in this order, on top of this repository's
mainat S10's spec merge,3c3816210b912759b350f77c2128e39f628edc39. They change documents only, underspecs/004-migrate-to-triad/andopenspec/changes/migrate-to-triad/. Where a record is out of date, a dated note says so and its original text stays as written, as history. Each text names the ruling it carries: Brett Heap's, given in lane 1's session, by round and time (UTC). Where the wording is lane 1's own, the item says so.The plan the cutover executed
specs/004-migrate-to-triad/adoption-plan-cutover-2026-10-26.yaml(485 lines, sha256538e2521eaaeff8f99e4de7c3af26e016488cb53f1169aacab934a3062e5f66a). It is FP's bytes but for itslocal_pathline, under a seven-line header and with two closing lines that S4 adds, and FP is the plan whose sha256,94af9924ebbf58aad5b916528e3e2f76e6f588acd0d65cff5efe534fdadaf2d9, the Gate C sentence names. Its place in this batch, beside the migration's records, is lane 1's DRAFT CHOICE (the runbook's S4, "Where the published copy lands"); round 20 (2) puts S10a's texts here. Being byte for byte, its comment lines keep the issue numbers as FP wrote them.Brett Heap's ruled plan texts (S10a)
openspec/changes/migrate-to-triad/specs/repository-triad-migration/spec.mdputs its SHALL first, "The migration SHALL keep the existing one-line installation, …", and the rest of the requirement is unchanged.plan.md's Target placement row for the code leg gains "its own.gitattributes, added after extraction", and a paragraph after the table says that each leg's own front-door files are added after extraction, so the adoption mapping does not change.tasks.md:78–79),openspec/changes/migrate-to-triad/design.md:121–126andplan.md:127–129and:251are restated for a Linux-only CI in lane 3's wording, "the Linux-only policy and serializedtests/run.shlocking, the bash 3.2 parse living inrelease.yml's macOS install leg".plan.md:89–90, the rows for Crash-consistent lane worktree recovery: a lane now says WHERE its session stopped — RUNNING → SWAPPING → SWAPPED with a generation/operation fence, a machine-readable worktree inventory taken at every handoff, and a resume reconciliation that reports and resets nothing openRepoTools#97 and for feature005-supervised-legacy-ctxwith Keep supervised manual ctx as legacy compatibility and refuse managed lanes openRepoTools#121, are named as overridden, in a dated note: 005's bookkeeping closes as a spec-only change after the cutover, and the 8 open tasks of Crash-consistent lane worktree recovery: a lane now says WHERE its session stopped — RUNNING → SWAPPING → SWAPPED with a generation/operation fence, a machine-readable worktree inventory taken at every handoff, and a resume reconciliation that reports and resets nothing openRepoTools#97 wait for a later numbered feature.plan.md:186–188andtasks.md:165–167, which prepare the continued-feature translations before the final batch, are named as overridden, as card 16 did forplan.md:89–90.The dated notes that the Gate B walk at rehearsal D owes these documents (its section 5, items 1 to 6; the walk is
gate-b-status-2026-10-22.mdon the evidence branch004-migrate-to-triad-rehearsal-dof opensoft/openRepoTools, atb0eb112). Round 20 (2), "Inside the final batch (Recommended)", puts them here. Their wording, and where each goes, is lane 1's.installer-design.mdgets a dated refresh of its counts at33ce26dand a dated note on its platform row, and the old Gate B walk,gate-b-status-2026-10-09.md, gets a dated block that names the walk at rehearsal D as superseding it, with line 29's refresh as its first entry.gate-b-checklist.md:202reworded as lane 3 suggested, a dated sentence for step 14 incandidate-2026-10-09.md, and the third difference of the exact-pin job's runner comment in the old walk's block. NIT 3 owes no edit.ubuntu-24.04, and Brett Heap's ruling on Ask 5 (round 4) installs zsh incomposed.yml, so that 6 remain.1e6f2d1, merged by The code leg gets its own front door, its standalone checkout context in tests.yml, the assembly root's two length caps and a lane-start row-stamp test that no longer depends on the length of TMPDIR (part of opensoft/openRepoTools#186) openRepoTools-code#1.main" remarks of lines 36, 39 and 40; line 40's patch count; section 4(d)'s basis, restated without the removed macOS and Windows jobs; and the API-call count, 6 per install on the T007 v3 patch.The as-built record
specs/004-migrate-to-triad/cutover-as-built-2026-10-26.md(S15 item 8; T015). It sets the design's preliminary baseline (daed209, 64 paths, 28 follow-ups, openRepoShape39d5c98) against the cutover's (33ce26d, 200 paths, 42 follow-ups, openRepoShape190133d, v1.1.0), and records what the cutover did through S12, and S14 at S12's head: the net tested effects, the twelve follow-up rows and their commits, the landed code, every amendment disposition, the approval provenance, the dated departures and the deferred issues. It says that it cannot record T015's items 1 to 6, this batch's own merge, the approved bump push, the root-split merge or Gate D, which come after it lands. Dated notes indesign.md(two) andplan.md(one) point from the preliminary baseline to it. Its wording, file name and place are lane 1's.candidate-2026-10-09.mdis not refreshed in its sections 2 to 5 form. A dated note points to rehearsal D's candidate in D's record and to the as-built record instead. That choice is lane 1's.Not in this batch. Ask 13's note, that the curl one-liner needs api.github.com and
jqafter the cutover (round 4, "Accept and document it"), goes beside the one-liner in the root'sREADME.mdafter the root-split merge (round 20 (2)). Ask 7(b)'s sentence was approved as written (round 3), so it needs no edit.The spec leg has no workflow of its own. In the cutover of opensoft/openRepoTools#186, Brett Heap ruled that a pull request with no check runs and no statuses on its head counts as green.
Brett Heap ruled (round 20 (2)) that these texts land inside T015's final reconciliation batch, one more spec-leg pull request, reviewed and merged by merge commit when green under his standing word, and pinned by S15's approved bump push. Merge this one by merge commit, not by squash or rebase, so that every commit keeps its id, author and committer, one commit for each reviewed patch.
🤖 Generated with Claude Code
Summary by Sourcery
Complete the final specification reconciliation for the tri-repository cutover by publishing its executed plan, as-built evidence, and updated historical records.
New Features:
Bug Fixes:
Enhancements:
Documentation: