|
1 | 1 | # Handoff — v1.0 GA wave execution (2026-06-14) |
2 | 2 |
|
3 | | -## Where things stand |
4 | | -Branch **`wave-exec-v096`** (off `main` @ 0896bc0). The **v0.9.6 batch (Waves 0–2) is complete and fully verified** — 9 commits, 35 files, all 15 fixture suites green, `compile --check` clean. Not pushed; no release cut (those are human/keychain-gated). |
5 | | - |
6 | | -Executed under ADD's own SDLC: RED-first tests where applicable, an **independent verifier agent** + an **agent-to-agent retro** per wave, learnings captured to `.add/learnings.json` (L-035…L-046). |
7 | | - |
8 | | -## Done |
9 | | - |
10 | | -### Wave 0 — unblock `main` (P0) |
11 | | -- **C1**: rule count was 19, reality 20 → guardrails red. Made the count **compile-derived** (`{{RULE_COUNT}}` in `runtimes/claude/CLAUDE.md`, filled from the autoload-filtered set in `compile.py`). Strengthened `rule-parity` to read the compiled artifact + assert all prose surfaces (CLAUDE.md/README.md/CONTRIBUTING.md). Now 9/9. |
12 | | -- **C3**: bumped `checkout v4→v5`, `setup-python v5→v6`, `github-script v7→v8` across all 4 workflows (Node-20 deprecation). |
13 | | -- Verifier caught 3 missed surfaces + a semantic bug ({{RULE_COUNT}} counted all files, not autoload) — all fixed before commit. |
14 | | - |
15 | | -### Wave 1 — release tooling (P0) |
16 | | -- **C2 / #18**: `release.sh` could exit 0 without publishing. Added array-based gh flags + a post-create `gh release view` assertion that fails loud with a recovery command. Behavioral regression test (mock git/gh/python3) — **mutation-verified** to go red when the fix is reverted. |
17 | | - |
18 | | -### Wave 2 — v0.9.6 truth-pass |
19 | | -- **C5**: CONTRIBUTING "three checks"→four; documented community-PR strategy. |
20 | | -- **D1**: `model-roles.md` capability-tier table (Opus 4.8/Sonnet 4.6/Haiku 4.5; gpt-5.5/gpt-5.x-codex). |
21 | | -- **B3**: added missing Codex `verify` sub-agent (`verify.toml` + 2 compile.py enums + test). 5 agents now; codex suite 58/58. |
22 | | -- **D3 (P0/1)** — found a real **security bug**: the `unicode-tag-block` regex was a broken byte-class matching ~any multibyte UTF-8 (652/652 sampled events were benign false positives, 0 real attacks). Replaced with a precise `(?:\xF3\xA0[\x80\x81][\x80-\xBF]){3,}` — verifier independently confirmed it covers all 128 tag codepoints and rejects benign chars; AC-028 real attack still fires. Switched the JSONL audit writer to `jq -cn` (atomic single-line). Gitignored + untracked `.add/security/`. Documented the audit trail in SECURITY.md. Added a **mutation-verified** benign-multibyte regression fixture. |
23 | | - |
24 | | -## Next: the boundary |
25 | | - |
26 | | -### Wave 3 (v0.9.7 methodology) — NEEDS HUMAN DIRECTION before auto-execution |
27 | | -These are subjective positioning/voice decisions, not mechanical: |
28 | | -- **A1** swarm-protocol → layer over native Workflows (the strategic reframe — wording matters; affects ADD's market story). |
29 | | -- **A3** swarm-state machine-readable format contract (small, do first — A1 depends on it). |
30 | | -- **C4** GA launch plan / `/add:announce` (marketing strategy; partly the separate `getadd.dev` repo). |
31 | | -- **D4** lead README with the maturity ladder (positioning/voice). |
32 | | -- **A2** `core/workflows/` scaffolding (spec+infra only pre-GA; Claude-specific — needs a home that compile-drift tolerates). |
33 | | -- **D3 P2** skill self-scan + CI gate. |
34 | | - |
35 | | -### Wave 4 (v0.10) — automatable later |
36 | | -A3 panel impl; **B4** F-012 spike (now consumes the fixed regex/writer from D3); D3 self-scan CI enforcement. |
37 | | - |
38 | | -### Wave 5 (v0.11) — BLOCKED on a live spike |
39 | | -Unified **B1+B2** Codex re-baseline is gated on **Q-001**: a live spike against the current Codex CLI (the 0.122 pin is stale). Can't be done without running the real CLI. |
40 | | - |
41 | | -### GA tag — externally/human gated (cannot be automated) |
42 | | -- Anthropic marketplace approval (filed 2026-02-14, status unknown — external). |
43 | | -- 60-day beta calendar gate (earliest honest tag ~2026-06-22). |
44 | | -- A real GPG-signed release cut (keychain/pinentry — interactive). |
45 | | -- ADD's own `beta→ga` self-promotion + release-evidence bundle (currently unowned per cohesion review). |
46 | | - |
47 | | -## Acceptance test for Wave 1 (do this at the real v0.9.6 cut) |
48 | | -Judge success from the new `published and verified` line + a manual `gh release view` — **not** from exit 0 (the habit being retired). See L-042. |
49 | | - |
50 | | -## Suggested follow-up rule (from Wave 1 retro, L-039) |
51 | | -"Verify the side effect, never trust the exit code" is now a twice-proven bug class (F-001 + #18). Worth encoding as a rule near `core/rules/quality-gates.md`. |
| 3 | +## Shipped this session |
| 4 | +- **v0.9.6 RELEASED** (signed, verified, on the marketplace cache). Waves 0–2: |
| 5 | + CI unblocked (rule count compile-derived; Node-24 actions), release.sh #18 |
| 6 | + fixed (verified live — "published and verified"), truth-pass, and a real |
| 7 | + injection-defense regex fix. PR #19 merged to `main`. |
| 8 | +- **Wave 3 (v0.9.7) — done on branch `wave3-v097`, NOT yet pushed/released:** |
| 9 | + - A3 — swarm-state machine-readable format contract. |
| 10 | + - D3-P2 — skill self-scan CI gate (`scripts/self-scan-skills.py` + `skill-self-scan` |
| 11 | + guardrail + SECURITY.md trust signal). Verifier caught a real hole (a `(?m)` |
| 12 | + pattern was silently never gating); fixed + mutation-guarded |
| 13 | + (`tests/security/test-self-scan.sh`). |
| 14 | + - A2 — `runtimes/claude/workflows/` scaffold + `specs/workflow-lifecycle-scripts.md` |
| 15 | + (inert; zero behavior change). |
| 16 | + - A1 — swarm-protocol + agent-coordination reframed as policy-over-native-Workflows |
| 17 | + (manual fallback retained; WIP semantics invariant; emission deferred to v1.1). |
| 18 | + - D4 — README now leads with the maturity ladder ("One dial scales the rigor"). |
| 19 | +- **GA-gate decision (overrides roadmap D7):** the arbitrary 60-day beta floor is |
| 20 | + dropped; v1.0 gates on **Anthropic marketplace approval** + the substantive |
| 21 | + criteria. Recorded in v1.0-roadmap.md and milestones/v1.0-ga.md. |
| 22 | + |
| 23 | +## State |
| 24 | +- Every wave: independent verifier + agent-to-agent retro; learnings L-035…L-049. |
| 25 | +- All 16 fixture suites green; `compile --check` clean; self-scan clean. |
| 26 | +- `wave3-v097` is 6 commits ahead of `main`, local only. |
| 27 | + |
| 28 | +## Open / next |
| 29 | +1. **Wave 3 release:** push `wave3-v097`, open a PR, then version-bump to v0.9.7 |
| 30 | + (VERSION, CHANGELOG, migrations hop, README badge) and cut the release — same |
| 31 | + flow as v0.9.6. |
| 32 | +2. **C4 launch plan** is preserved as a tracked doc (`docs/wave3-drafts/C4-launch-plan.md`) |
| 33 | + but NOT applied — `/add:announce` skill not built yet; pending a decision on |
| 34 | + one-skill-with-`--target` vs two, and the brand strategy. |
| 35 | +3. **A1/A2 emission** (actual Workflow descriptor scripts) deferred to v1.1. |
| 36 | +4. **Waves 4–5** (v0.10/v0.11): B4 F-012 spike now consumes the fixed |
| 37 | + regex/writer; B1+B2 Codex re-baseline still needs the live Q-001 CLI spike. |
| 38 | +5. **GA tag:** gated on marketplace approval (filed 2026-02-14) + install smoke + |
| 39 | + release-evidence bundle + ADD's own beta→ga self-promotion. |
| 40 | + |
| 41 | +## Acceptance test reminder (release tooling) |
| 42 | +Judge any release by the `published and verified` line + a manual `gh release |
| 43 | +view`, never bare exit 0 (L-042). v0.9.6 passed this live. |
0 commit comments