Skip to content

Commit 7a13bce

Browse files
authored
docs(phase-4a): compress the compatibility window by maintainer decision (#422)
* docs(phase-4a): compress the compatibility window by maintainer decision Records the 2026-07-21 maintainer decision waiving the v0.27.0 + 90-day dual gate: both mirrors are the maintainer's own MIT code under the same owner with zero forks and zero known reverse dependencies, and the clone traffic traces to the maintainer's own fleet and CI. Phase 4B archival is authorized once the remaining compressed checklist completes. The non-destructive data invariants and the no-rewrite/no-force-push rule for the mirror master branches survive unchanged. * docs(phase-4a): fix semicolons in prose per vale * docs(phase-4a): tick operator MCP migration in the compressed checklist * test(release-metadata): lock the compressed phase-4a policy invariants * test(release-metadata): assert the documentation-link checklist item
1 parent 8906065 commit 7a13bce

2 files changed

Lines changed: 88 additions & 147 deletions

File tree

Lines changed: 71 additions & 102 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,45 @@
11
# Phase 4A Compatibility Policy and Phase 4B Archive Checklist
22

3-
> **Status: Phase 4A policy is active. Phase 4B archival execution is not authorized.**
3+
> **Status: The compatibility window is compressed by maintainer decision
4+
> (2026-07-21). Phase 4B archival execution is authorized once the remaining
5+
> checklist items below are complete.**
46
57
Phase 4A and Phase 4B are this policy's execution split within RFC Phase 4.
6-
This policy records the active compatibility window for the unified Brigade
7-
release. v0.25.0 is live, so the window began at T0 on
8-
2026-07-21T00:50:15Z. It does not authorize, execute, or claim completion of
9-
any archival step. Phase 4B requires the gates and checklist below.
8+
This policy records the compatibility window for the unified Brigade release.
9+
v0.25.0 is live. The window began at T0 on 2026-07-21T00:50:15Z.
10+
11+
## Maintainer decision: compressed window (2026-07-21)
12+
13+
The original policy set a dual gate (v0.27.0 and a 90-day calendar gate at
14+
2026-10-19). That gate protected external consumers of the standalone
15+
mirrors. The maintainer reviewed the exposure and recorded this decision:
16+
17+
- Both mirrors are the maintainer's own MIT-licensed code under the same
18+
owner (escoffier-labs). There are no external users to protect: zero
19+
forks, zero known reverse dependencies, and the GitHub clone counts trace
20+
to the maintainer's own fleet and CI.
21+
- No legal or dependency blocker exists.
22+
23+
The dual gate is therefore waived. Archival may execute as soon as the
24+
remaining Phase 4B checklist items are complete. The following original
25+
requirements are explicitly **waived by the same decision**:
26+
27+
- The 90-day calendar gate and the v0.27.0 version gate.
28+
- The final `graphtrail` 0.5.0 crates.io compatibility release. The
29+
published crate versions stay unyanked for reproducibility. The crate is
30+
marked deprecated and maintenance-frozen with no further releases.
31+
- The Brigade-owned session list/search facade as a pre-archival blocker for
32+
`sessionfind`. The `sessionfind` shim ships in the managed engine set and
33+
keeps working after the mirrors are archived. The facade remains ordinary
34+
roadmap work, not an archive gate.
35+
36+
Non-negotiables that survive the compression unchanged:
37+
38+
- Existing databases, data paths, and schemas are non-destructive
39+
invariants. No action relocates, deletes, or destructively migrates them.
40+
- The `master` branches of the mirrors are never rewritten or force-pushed.
41+
Migration notices and any security fixes are ordinary commits on top.
42+
- Archiving a mirror freezes it read-only on GitHub. It deletes nothing.
1043

1144
## Scope and references
1245

@@ -19,7 +52,7 @@ release record is the [Brigade releases page](https://github.com/escoffier-labs/
1952
The Phase 2 [import source-of-truth policy
2053
context](https://github.com/escoffier-labs/brigade/issues/352#issuecomment-5018303485)
2154
documents the interim import-history, commit-map, and authorship context.
22-
Those records remain anchored to the standalone mirrors; the comment neither
55+
Those records remain anchored to the standalone mirrors. The comment neither
2356
sets nor governs a binding boundary. The governing Phase 3 [no-rewrite
2457
amendment](https://github.com/escoffier-labs/brigade/issues/352#issuecomment-5019220456)
2558
is the authority that prohibits rewriting or force-pushing their `master`
@@ -31,147 +64,83 @@ Agent Pantry is out of scope. agent-notify/#366 is out of scope. Neither
3164
repository is part of this compatibility policy, source-history migration, or
3265
future archive checklist.
3366

34-
## Release record and dual gate
67+
## Release record
3568

3669
| Record | Value |
3770
| --- | --- |
3871
| First unified compatibility-bearing minor | v0.25.0 |
3972
| Published at | 2026-07-21T00:50:15Z |
40-
| UTC calendar gate | 2026-10-19 |
41-
| Exact 90-day timestamp | 2026-10-19T00:50:15Z |
42-
| Second compatibility-bearing minor | v0.26.0 |
43-
| Earliest removal or archival release | v0.27.0, after the calendar gate |
4473
| T0 | v0.25.0 published at 2026-07-21T00:50:15Z |
45-
| Current status | The compatibility window is active. Phase 4B archival execution remains unauthorized |
46-
47-
v0.25.0 is the first compatibility-bearing unified minor, and v0.26.0 is the
48-
second. T0 is the live v0.25.0 publication timestamp, 2026-07-21T00:50:15Z.
49-
The UTC calendar gate date is 2026-10-19. The gate does not open until
50-
2026-10-19T00:50:15Z.
51-
52-
Removal or archival may first ship in v0.27.0 after the calendar gate. Both the
53-
version gate and the calendar gate must be satisfied.
54-
55-
If v0.27.0 ships before the calendar gate, wait for the calendar gate. If the
56-
calendar gate arrives before v0.27.0, wait for the version gate.
57-
A release date alone does not authorize removal, and a version number alone
58-
does not authorize archival.
74+
| Original dual gate | v0.27.0 + 2026-10-19 calendar gate (waived 2026-07-21) |
75+
| Current status | Window compressed. Phase 4B authorized pending checklist completion |
5976

6077
## Compatibility contract
6178

62-
The compatibility window covers these executable shims:
79+
The managed engine set installed by `brigade setup` continues to ship these
80+
executables:
6381

6482
- `graphtrail`
6583
- `graphtrail-mcp`
6684
- `miseledger`
6785
- `sessionfind`
6886

69-
It also covers the `brigade search sync`, `brigade search context`, and
70-
`brigade search impact` executable aliases for `brigade code sync`,
71-
`brigade code context`, and `brigade code impact`. Standalone manifest-source
72-
and independent-install compatibility paths retain their separately documented
87+
Archiving the mirrors does not remove or change any of them. They are the
88+
engines, distributed and pinned by Brigade. The `brigade search sync`,
89+
`brigade search context`, and `brigade search impact` executable aliases for
90+
`brigade code sync`, `brigade code context`, and `brigade code impact` also
91+
remain. Standalone manifest-source and independent-install compatibility
92+
paths retain their separately documented
7393
[one-release fallback](update-channels.md).
7494

75-
At T0, the governed operation inventory for each v0.25.0 shim is its public
76-
subcommands, help behavior, and JSON contracts. For every shipped non-meta
77-
operation, Phase 4B requires either a behavior-equivalent Brigade-owned path
78-
or an explicit maintainer decision to retain the shim. An operation without a
79-
disposition blocks removal.
80-
81-
`--help`, `--version`, and `version` are compatibility probes, not migration
82-
workflows that require replacement commands. They must remain functional for
83-
the compatibility window. This includes `sessionfind version`; its probe does
84-
not imply that it needs a user-workflow replacement command.
95+
Current compatibility-equivalent engine commands for `sessionfind`:
8596

8697
| Compatibility invocation | Current compatibility-equivalent engine command |
8798
| --- | --- |
8899
| `sessionfind list` | `miseledger sessions list` |
89100
| `sessionfind search <query>` | `miseledger sessions search <query>` |
90101
| `sessionfind <query>` | `miseledger sessions search <query>` |
91102

92-
The `miseledger sessions list` and `miseledger sessions search` entries are
93-
current compatibility-equivalent engine commands, not final Brigade-owned
94-
replacements. Because `miseledger` is in the same shim cohort as `sessionfind`,
95-
`sessionfind` is not removal-ready until a Brigade-owned session list/search
96-
facade exists, tests prove equivalent filters and JSON behavior, and its
97-
deprecation message names that Brigade command. A missing Brigade-owned session
98-
facade blocks Phase 4B.
99-
100-
`brigade setup` is the distribution replacement command for `graphtrail-mcp`.
101-
It installs the Brigade-managed `graphtrail-mcp` binary. MCP clients retain the
102-
`graphtrail-mcp` protocol but must move their configuration to the managed
103-
absolute path. The `graphtrail-mcp` deprecation message must name `brigade
104-
setup`, the managed-path configuration change, and the earliest removal
105-
condition: v0.27.0 after the actual T0 + 90-day calendar gate, with both the
106-
version gate and the calendar gate satisfied.
107-
108-
For each shipped non-meta operation, Phase 4B requires either a
109-
behavior-equivalent Brigade-owned path or an explicit maintainer decision to
110-
retain the shim. Any operation without that disposition blocks removal.
103+
`brigade setup` is the distribution replacement for every standalone install
104+
path. MCP clients retain the `graphtrail-mcp` protocol but configure the
105+
managed absolute path (`brigade setup` records it in `installed.json`, and
106+
Brigade's config generators emit it).
111107

112108
Existing databases, data paths, and schemas are non-destructive invariants.
113109
No compatibility action may relocate, delete, or migrate an existing database
114110
or data path destructively.
115111

116-
Each deprecation message must name the replacement command and state the
117-
earliest removal condition: v0.27.0 after the actual T0 + 90-day calendar gate,
118-
with both the version gate and the calendar gate satisfied. For code-graph
119-
invocations, name the applicable `brigade code sync`, `brigade code context`,
120-
or `brigade code impact` command. For MiseLedger-backed evidence invocations,
121-
name the applicable `brigade evidence crawl`, `brigade evidence search`, or
122-
`brigade evidence doctor` command. For sessionfind invocations, use the mappings
123-
above. There are no silent removals.
124-
125112
## Frozen standalone mirrors
126113

127114
The `master` branches of `escoffier-labs/graphtrail` and
128115
`escoffier-labs/miseledger` must not be rewritten or force-pushed. Their import
129116
commit maps anchor the source-history migration.
130117

131118
Migration notices are ordinary commits on top of `master`. Security fixes may
132-
also be ordinary commits during the compatibility window. No feature work
119+
also be ordinary commits while the mirrors remain unarchived. No feature work
133120
returns to either mirror.
134121

135122
## GraphTrail crates.io policy
136123

137-
Publish graphtrail 0.5.0 from the Brigade monorepo as the final compatibility
138-
minor. It must retain working legacy binaries and features and include migration
139-
warnings. Patch releases during the compatibility window are limited to security
140-
and release-integrity fixes.
141-
142-
After both gates are satisfied, leave every published crate version unyanked for
143-
reproducibility. Mark the crate deprecated and maintenance-frozen, remove current
144-
`cargo install` guidance, and publish no feature releases.
124+
Per the 2026-07-21 maintainer decision, no further crates.io releases ship.
125+
Leave every published crate version unyanked for reproducibility. Mark the
126+
crate deprecated and maintenance-frozen, and remove current `cargo install`
127+
guidance from documentation.
145128

146-
## Future Phase 4B checklist
129+
## Phase 4B checklist (compressed)
147130

148-
All unchecked items below describe future work. They are not authorization to
149-
perform it while Phase 4A is active.
150-
151-
- [ ] Confirm both the version gate and the calendar gate.
152-
- [ ] Verify every shim and Brigade search alias, including its replacement command and earliest removal message.
153-
- [ ] Capture the T0 shim operation inventory and disposition every shipped non-meta operation with a behavior-equivalent Brigade-owned path or an explicit maintainer decision to retain the shim.
154-
- [ ] Build and verify the Brigade-owned session list/search facade, including equivalent filters and JSON behavior, then name it in the `sessionfind` deprecation message.
155-
- [ ] Migrate `graphtrail-mcp` MCP client configuration to the Brigade-managed absolute path installed by `brigade setup`, and verify its deprecation message.
156-
- [ ] Audit and migrate Brigade-generated MCP configs, including `src/brigade/cursor_user_cmd.py`, from PATH-based `graphtrail-mcp` and `miseledger` commands to managed absolute paths.
157-
- [ ] Audit, transfer, or close remaining issues with links to [#364](https://github.com/escoffier-labs/brigade/issues/364) and [#365](https://github.com/escoffier-labs/brigade/issues/365).
158-
- [ ] Publish and verify the final `graphtrail` 0.5.0 compatibility release.
131+
- [x] Maintainer decision recorded waiving the dual gate (this document, 2026-07-21).
132+
- [x] Audit and migrate Brigade-generated MCP configs, including `src/brigade/cursor_user_cmd.py`, from PATH-based `graphtrail-mcp` and `miseledger` commands to managed absolute paths (PR #419).
133+
- [x] Migrate operator MCP client configuration to the Brigade-managed absolute path installed by `brigade setup` (operator machine migrated 2026-07-21: codex, Cursor, OpenClaw, and Claude configs plus the capped MCP wrapper now use the managed set).
159134
- [ ] Confirm migration notices as ordinary commits on both mirrors.
160135
- [ ] Verify that neither standalone `master` branch was rewritten or force-pushed.
161136
- [ ] Update product and documentation links to the Brigade release path.
162-
- [ ] Capture final release and acceptance evidence.
163-
- [ ] Obtain maintainer approval for Phase 4B execution.
164-
- [ ] Archive `escoffier-labs/graphtrail` (prohibited during Phase 4A).
165-
- [ ] Archive `escoffier-labs/miseledger` (prohibited during Phase 4A).
137+
- [ ] Archive `escoffier-labs/graphtrail`.
138+
- [ ] Archive `escoffier-labs/miseledger`.
166139

167140
## Stop and rollback conditions
168141

169-
Stop Phase 4B before archival if either dual gate is unmet, a shim or alias
170-
lacks its required message, a data-path or schema invariant is at risk, the
171-
final crate release is not verified, a migration notice is missing, or
172-
maintainer approval is absent.
173-
174-
If a pre-archive compatibility problem appears, keep the mirrors active and
175-
repair it with an ordinary commit or a security/release-integrity patch as
176-
applicable. Do not rewrite standalone `master`, do not force-push, and do not
177-
archive either repository until every Phase 4B checklist item is complete.
142+
Stop before archival if a data-path or schema invariant is at risk or a
143+
migration notice is missing. If a pre-archive compatibility problem appears,
144+
keep the mirrors active and repair it with an ordinary commit. Do not rewrite
145+
standalone `master`, do not force-push. After archival, a mirror can be
146+
unarchived from GitHub settings at any time if a repair is ever needed.

0 commit comments

Comments
 (0)