Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
52 commits
Select commit Hold shift + click to select a range
52ce64e
docs: preserve triad migration planning drafts
brettheap Oct 3, 2026
8aa119f
docs: refresh triad migration plan after worktree cleanup
brettheap Oct 3, 2026
dda91f1
docs: refresh triad plan for October 4 feature updates
brettheap Oct 4, 2026
48934f8
docs: align triad migration with adopted amendment protocol
brettheap Oct 4, 2026
5455805
docs: record triad preparation and adopter blocker
brettheap Oct 4, 2026
ff6f6a7
docs: record successful triad adopter candidate rehearsal
brettheap Oct 6, 2026
5aa40b7
Record run C of the Gate B rehearsal at the post-landing main 837928a…
brettheap Oct 8, 2026
f06e1af
T006's five rehearsal patches are recorded: the assembly front door w…
brettheap Oct 8, 2026
74e4eb7
Record T010's two workflow patches for the triad: the code leg's stan…
brettheap Oct 9, 2026
cc7c7a1
Record what the triad split breaks in the test suite, the root rules …
brettheap Oct 9, 2026
465fa6d
T006's run C rebuild is written up: the collision inventory, 32 repai…
brettheap Oct 9, 2026
5772cad
Record T011's restore rehearsal of the source from the Gate A bundle:…
brettheap Oct 9, 2026
1a26463
Merge main 63810dd into 004-migrate-to-triad-rehearsal-c: run C's ado…
brettheap Oct 9, 2026
041a273
Merge main 63810dd into 004-migrate-to-triad-root-guidance after PR #…
brettheap Oct 9, 2026
71b05cb
Combine the run C rehearsal and T006 root-guidance evidence for one p…
brettheap Oct 9, 2026
849592b
Record T011's rollback of the installed payload, the mutation table, …
brettheap Oct 9, 2026
fa44d75
Name the T011 private receipt's brett-wip commit, 56f1e7c4, and say w…
brettheap Oct 9, 2026
51993a4
Record T007's assembly entry point as a patch and T007/T008's install…
brettheap Oct 9, 2026
b21c511
Record the composed triad candidate that carries every Gate B follow-…
brettheap Oct 9, 2026
b4ef6b5
Bring the T009/T010 test-roots record up to PR #190's head dbc6837, w…
brettheap Oct 9, 2026
d28e2cc
Correct the test-roots record: the standalone leg's lane suite aborte…
brettheap Oct 9, 2026
935f53f
Record the candidate's state at the coordinator's checkpoint: no suit…
brettheap Oct 9, 2026
63bff08
T018 disposable half: feature selection, OpenSpec and park/resume/sta…
brettheap Oct 9, 2026
3412f97
Merge main f87fd5a into 004-migrate-to-triad-evidence-2-followups: #1…
brettheap Oct 9, 2026
096de93
Dated corrections to #192's run C and T006 evidence: #193 items 8–13
brettheap Oct 9, 2026
4f773b8
Record v3 of T007's entry-point patch, which checks the gitlink befor…
brettheap Oct 9, 2026
c1283b5
Refresh the T011 record's index, inventory and Gate B list to origin …
brettheap Oct 9, 2026
612ea94
Correct three rows of the refreshed T011 record from lane 3's review …
brettheap Oct 9, 2026
2e7e55e
Answer lane 3's low findings N4 to N9 on the refreshed T011 record: c…
brettheap Oct 9, 2026
bfc0814
Gate B status walk of 2026-10-09: the 46 checklist lines (MET 30, PAR…
brettheap Oct 9, 2026
0de8562
Triad migration evidence of 2026-10-08 and 2026-10-09: test roots and…
brettheap Oct 9, 2026
3cca1e7
Record the runs of #191's review rounds, the strict composed result a…
brettheap Oct 10, 2026
e55268a
Bring the installer evidence in the second triad evidence pull reques…
brettheap Oct 10, 2026
16e6ea4
Record the r2 candidate's three suite runs and classify every failure…
brettheap Oct 10, 2026
40f26f7
Lane 3's follow-ups on 096de93: name 837928a and #190 in the T006 tes…
brettheap Oct 10, 2026
7c08f7e
Add the candidate record and lane 3's follow-ups on the corrections t…
brettheap Oct 11, 2026
67a978c
Record #191's two Copilot rounds and the final head 8246983 in the in…
brettheap Oct 11, 2026
1578f99
Date the "4 now pass only because they read the leg's own files" bull…
brettheap Oct 11, 2026
22bdb2e
Date the T010 record against #192's and #190's landings, correct its …
brettheap Oct 11, 2026
3fd81c6
Gate B walk: lines 20, 29 and 31 are PARTLY by the walk's own legend,…
brettheap Oct 11, 2026
17dd54f
Point the three "no review verdict posted" rows of the T011 record at…
brettheap Oct 11, 2026
2c040d6
Name the host behind "the bench's openspec is now 1.13.1" in run C's …
brettheap Oct 11, 2026
83bcec7
Correct root-guidance:432 after lane 2's check of 1578f99: the fourth…
brettheap Oct 11, 2026
e81100c
Record r3 of the Gate B candidate: #191 at its final head 8246983 wit…
brettheap Oct 11, 2026
118a2e2
Close W22's findings 2-4 on 83bcec7 in the T011 record: date the sect…
Oct 13, 2026
7668c51
Correct the installer record for lane 3's DO NOT LAND on #196's insta…
Oct 13, 2026
de0a72d
Refold the second triad evidence pull request onto main a74c7fc with …
Oct 13, 2026
7428e78
Correct the installer record against lane 2's check at 8246983: the w…
Oct 13, 2026
95cad9e
Take the installer record at its final head 7428e78 in the second tri…
Oct 13, 2026
8c03f76
Add dated 2026-10-13 lines to the candidate record: #191 landed as a7…
Oct 13, 2026
ee2e347
Gate B walk, dated 2026-10-13: #191 landed as a74c7fc, what #196's fi…
Oct 13, 2026
b50c83c
Take the candidate record and the Gate B walk at their final heads in…
Oct 13, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions specs/004-migrate-to-triad/adopter-rehearsal-2026-10-07.md
Original file line number Diff line number Diff line change
Expand Up @@ -182,6 +182,12 @@ blob, `8043147a`. The source clone was unchanged except for the one new ref
[quickstart.md](quickstart.md) and [preparation.md](preparation.md) still
describe the October 4 version; the plan's owner decides when to refresh
them.
- *Dated 2026-10-09 (#193 item 8):* since #192, the mapping link above opens
run C's plan ([adopter-rehearsal-2026-10-08.md](adopter-rehearsal-2026-10-08.md)),
and run B's stays in history at `63810dd`. #188 landed as `837928a`. The
bench restart of 2026-10-08 cleared both runs' disposable repositories, so
their logs survive only in this file's receipt. Run C's legs still carry
`558a12b` and `48d98cd`, as the parents of their heads.
- Each run used a fresh, empty `--local-remote-dir` and `--work-dir`. Without
the first, `execute` calls `gh repo create`. The plan's
`execution_authorized: false` is informational and the tool does not read it.
Expand Down
73 changes: 71 additions & 2 deletions specs/004-migrate-to-triad/adopter-rehearsal-2026-10-08.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,17 +21,72 @@ kept host-local outside every repository so it survives a bench restart.
Clone paths, local remote URLs, exact command lines and complete logs stay in
the private receipt.

**Dated 2026-10-09, after #192 landed (#193 items 8 and 13):**

- **Where the records are.** #192 brought this file and run C's plan to
main. The 2026-10-07 record has been on main since #189 (`63810dd`), not
on a branch as the paragraph above says.
- **What run C superseded.** No record: runs A and B stand as recorded. Its
plan did replace run B's as the
[mapping](../../openspec/changes/migrate-to-triad/adoption-plan.yaml), on
main in #192's squash `1abee1d`. (On #192's branch it was merge `1a26463`,
which main does not contain.) On main that link opens run C's plan from
both records.
So "On this branch" in the mapping section below holds for main, and the
2026-10-07 record's "On this branch, the mapping is the regenerated run B
plan" held only on its own branch. Run B's plan stays in history at
`63810dd` (blob `f1067e3`). Neither plan is the cutover plan.
- **Runs A and B are gone from the bench.** The bench restart of
2026-10-08, at about 09:45Z, cleared `/tmp` (#186 comment 6068861167).
Both runs were built in a session scratch directory there, as the
2026-10-07 receipt's README records, so their disposable repositories are
gone and their logs survive only in that receipt. Two of their commits
live on in run C's legs: `558a12b`, the spec head of runs A and B, is the
parent of run C's spec head, and `48d98cd`, run A's code head, is the
parent of run C's code head. The splits `9e5f934` and `2726d3a`, run B's
code head `6d52162` and the local remotes are gone. That is why run C is
kept host-local.
- **An observation left out.** The run C comment on #186 (6068938765)
noted that `openspec validate migrate-to-triad --strict` with `openspec`
1.2.0 fails on pristine `837928a` too (`ADDED "Installation retains the
public interface and one revision" must contain SHALL or MUST`), so run C
does not cause it. Lane 2's bench had `openspec` 1.13.1 (read on
2026-10-09, #186 comment 6088829392 item 8, and again on 2026-10-10,
6103482530). On 2026-10-09 the same command exited 0 on `837928a` and on
`71b05cb`, #192's head, whose tree its squash `1abee1d` carries unchanged.
*Corrected 2026-10-11 (lane 3's 5481348731 on #196, item 9): this note first
said "The bench's `openspec` is now 1.13.1", as if one version held on every
host. The version depends on the container. On lane 3's host on 2026-10-11 at
00:1xZ, `which -a openspec` lists a user-level npm install first, at 1.2.0,
and the system install second, at 1.6.0. The validate command above exits 1
under 1.2.0 (the SHALL or MUST error) and 0 under 1.6.0. So the result follows
which `openspec` comes first on the reader's `PATH`. Lane 1's walk records
the same split
([gate-b-status-2026-10-09.md](gate-b-status-2026-10-09.md), section 4 (a)).*

## Setup

- **filter-repo:** `git-filter-repo` 2.47.0 from a private venv. The rebuilt
bench has no `ensurepip`, and `python3 -m venv` refused with
- **filter-repo:** `git-filter-repo` 2.47.0 from a private venv.
`python3 -m venv` refused with
`The virtual environment was not created successfully because ensurepip is
not available.` So the venv was created with `--without-pip`. The wheel
came from `pip download` with SHA256
`2cd04929b9024e83e65db571cbe36aec65ead0cb5f9ec5abe42158654af5ad83`, matching
the recorded value. That exact file was installed into the venv with
`--no-index`. The venv's `git-filter-repo` came first on `PATH`, and
`git filter-repo --version` printed `a40bce548d2c`.
- *Corrected 2026-10-09 (#193 item 12):* this bullet first gave the cause
as "the rebuilt bench has no `ensurepip`", and the bench contradicts it.
Its dpkg log has `python3-venv` and `python3.12-venv` installed on
2026-09-23 at 00:18:06Z, before the 2026-10-08 boot.
`/usr/bin/python3 -m ensurepip --version` prints `pip 24.0`, and
`/usr/bin/python3 -m venv` succeeds (lane 2, #186 comments 6072333212
and 6072724043; measured again on 2026-10-09). The refusal itself is
real: the receipt's setup log records it. Its cause is not established.
The `python3` the writer ran was the first on its `PATH`: the venv's
`pyvenv.cfg`, in run C's host-local arrangement, records a user-local
`python3` based on `/usr/bin/python3.12`. That entry is no longer on
the bench, so the refusal cannot be retried as it ran.
- **Tool and source:** a fresh clone of openRepoShape at `7f84ca4`, unedited
and clean afterwards, ignored files included. A fresh `--single-branch`
clone of main, with one worktree and no linked worktrees. Its nested
Expand Down Expand Up @@ -65,6 +120,20 @@ published copy. It differs from the executed plan only by its header,
`local_path: .`, and the two closing status fields
(`execution_authorized: false`).

*Added 2026-10-09 (#193 item 10):* `check` validates against the source
clone's local `main`, not its `HEAD`. In openRepoShape `7f84ca4`'s
`adopt-project.py`, `_default_branch` (:288) takes the branch name from
`origin/HEAD`, and `git rev-parse` of that name (:256-257) is the commit
compared with the plan's source commit (:1026-1032). This plan therefore
passes `check` only in a clone whose local `main` is `837928a`. Against any
newer `main` it exits 1 with `FINDING plan-stale: the plan was written
against 837928a1029a but main is now at …`, whatever `HEAD` is checked out.
That includes main once this plan is on it: a plan cannot name the commit
that carries it. Measured on 2026-10-09 with this plan and a fresh clone,
local `main` at `63810dd` gave that finding and exit 1, also with `HEAD`
detached at `837928a`. Local `main` moved to `837928a` gave `plan ok` and
exit 0, also with `HEAD` detached at `63810dd`.

## Run C — main `837928a`

`execute --local-remote-dir … --work-dir … --yes` exited **0** and printed
Expand Down
Loading
Loading