Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
14 commits
Select commit Hold shift + click to select a range
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
21 changes: 18 additions & 3 deletions openspec/changes/migrate-to-triad/design.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,15 @@ that branch work. Preserve its contracts, external launcher ownership and
unmet runtime gates during replay. Removed worktrees are not an active replay queue. The
[inventory](../../../specs/004-migrate-to-triad/inventory.json) is a snapshot.

*Updated 2026-10-26, in the cutover's final spec reconciliation batch (T015, under
opensoft/openRepoTools#186):* this is the preliminary baseline. The cutover ran from `main`
`33ce26dffc5286e68f1d29ab5c6458edef0330c0` (200 tracked paths, 156 commits) with openRepoShape
`190133d5e704e380c430f87ca9c4e31746de0012` (v1.1.0), on the plan regenerated for that source
and approved at Gate C. Its
[published copy](../../../specs/004-migrate-to-triad/adoption-plan-cutover-2026-10-26.yaml)
and the [as-built record](../../../specs/004-migrate-to-triad/cutover-as-built-2026-10-26.md)
set this baseline against the cutover's. The paragraph above stays as written, as history.

## Goals / Non-Goals

Preserve project identity/history, all user work, installed command behavior
Expand Down Expand Up @@ -47,6 +56,10 @@ paths: 18 spec, 40 code, six root, none dropped, with 28 follow-ups. It records
and the dependency lock. Product documentation/OpenSpec/Speckit go to spec.
Root owns front-door guidance, license, project metadata and workflow bootstrap.

*Updated 2026-10-26, in the same batch:* the cutover's plan accounts for 200 paths, 108
spec, 86 code, six root, none dropped, with 42 follow-ups (the note under Context). The
`adoption-plan.yaml` linked above is now run C's rehearsal input, as its own header says.

Genuine bounded feature amendment records at
`features/<NNN-feature>/openspec/` are the narrow code exception. Review them
explicitly with reasoned resolutions until the upstream rule is qualified.
Expand Down Expand Up @@ -121,9 +134,11 @@ and shape placement automation are pending, not delivered by this migration.
Code CI runs implementation checks; root CI validates manifest/pins and the
exact composed assembly. Supply explicit code/spec/assembly roots to tests
that inspect docs or history; preserve the nested dependency pin assertions
in the code Git repository. Use the canonical serialized `tests/run.sh`,
Bash 3.2 parsing and current platform/fixture timing policies. Missing-spec
context cannot turn a required integration check into a silent skip.
in the code Git repository. Use 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. Missing-spec context cannot turn a required integration check into
a silent skip.

Prepare code/spec PRs together. At the first bounded amendment create one spec
reconciliation issue; collect net tested effects, all dispositions, dated
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,10 +42,10 @@ Original worktrees and installed tools SHALL remain available until acceptance.

### Requirement: Installation retains the public interface and one revision

Existing one-line installation, command names, payload destinations/modes,
skills/hooks/receipts and supported fork/ref/local invocation SHALL remain
usable. An adopted assembly entry point SHALL resolve one immutable code
revision for the complete installation. Missing/inconsistent pin evidence
The migration SHALL keep the existing one-line installation, command names,
payload destinations/modes, skills/hooks/receipts and supported fork/ref/local
invocation usable. An adopted assembly entry point SHALL resolve one immutable
code revision for the complete installation. Missing/inconsistent pin evidence
SHALL refuse before partial installation. Installed tools SHALL function
without a developer assembly checkout.

Expand Down
485 changes: 485 additions & 0 deletions specs/004-migrate-to-triad/adoption-plan-cutover-2026-10-26.yaml

Large diffs are not rendered by default.

29 changes: 29 additions & 0 deletions specs/004-migrate-to-triad/candidate-2026-10-09.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,30 @@ main `f87fd5a` only in the implementation it hands over to.
`f87fd5a`. Its tree, `d77e80b3`, is `8246983`'s, and `openRepoTools` is blob `7aa697c` at
`cddd1f7`, `8246983` and `a74c7fc` alike. So r3 measured the code now on `main`.

*Updated 2026-10-26, in the cutover's final spec reconciliation batch (T015, under
opensoft/openRepoTools#186): the candidate since this record.* This is r2's record, with
r3's in section 9, and it is not refreshed in its sections 2 to 5 form. The candidate of
record at Gate C is rehearsal D's: D's record, `adopter-rehearsal-2026-10-21.md`, gives it
in its section "The candidate (stage 4, v0)". That record is on the evidence branch
`004-migrate-to-triad-rehearsal-d` of opensoft/openRepoTools, at `94f8a3c`, until a
spec-only continuation (T017) carries it into this leg. What the cutover itself built is
in [cutover-as-built-2026-10-26.md](cutover-as-built-2026-10-26.md), beside this record.
The sections below stay as written, as history.

*Updated 2026-10-26, in the cutover's final spec reconciliation batch (T015, under
opensoft/openRepoTools#186): the opensoft/openRepoTools#180 pointers.* Lines 261, 262,
282, 316 and 380 of this record, as it was at `33ce26d`, name opensoft/openRepoTools#180
for the row-stamp cases that fail under `tests/run.sh`'s long run root. That issue was
closed with opensoft/openRepoTools#215 (`61a7378`), which moved only `repoA11b`'s tail
case. The 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`, merged by
opensoft/openRepoTools-code#1 as `2a057a6d` on 2026-10-26. So read those five lines as
pointers to opensoft/openRepoTools#304. Line 404 is a list of the issues read with `gh`,
and stays as it is. The lines stay as written, as history. Lane 3 named the 18 pointers of
this kind, in four files (opensoft/openRepoTools#186 comment 6332521834).

## 1. Inputs

Every input was read without checking it out in any existing worktree. Patches were
Expand Down Expand Up @@ -115,6 +139,11 @@ results stand as recorded. The files at those paths are now the regenerated and
not results for them. A third code-leg patch, T009's `t009-assembly-caps.patch` (`2dd4aac2…b2bbe5`), goes on
after steps 10 and 11 and sets the assembly-root length caps the re-cut needs.

*Noted 2026-10-26 (step 14; lane 3's NIT 2 on opensoft/openRepoTools#299, comment 6317075196):* step 14
applied the earlier `t010-assembly-exact-pin-job.patch` (`6ee09f00…74670b`), and its result stands as
recorded; the file at that path is now the one regenerated on 2026-10-21 for the runner pin
(`60245cb9…f0f653`), so that result is not a result for it.

What was checked at each step:

- **The PR commits are the PR heads.** Every path #190 touches has `b50f197`'s blob after
Expand Down
Loading