A REQUIREMENTS FOLDER
GOES IN.
A CLEAN COMMIT COMES OUT.
CT6 is a multi-agent coding pipeline for Claude Code. It maps your codebase, validates a 100%-coverage plan, dispatches long-lived named teammates with their own 1M-context windows, gates every completion behind a hook that reads real evidence, runs Playwright against a real backend, auto-spawns a fix team for every surfaced issue, and auto-commits + pushes on a clean pass — the dev loop closes itself end-to-end.
Not a copilot. A pipeline that won't sign off on its own work.
CT6 ships as the architect-team plugin for Claude Code. It accepts an OpenSpec proposal, a Superpowers brief, or plain markdown — and drives the work through ten phases with explicit exit contracts.
Reads the codebase first
Cartographer + integration-explorers build CODEBASE_MAP, ROUTE_MAP, and INTEGRATION_MAP before any code is touched, so reuse decisions cite files that actually exist.
Long-lived agents, 1M context each
Claude Code's experimental Agent Teams primitive — named teammates with their own context windows and a shared task list, coordinated by a lead. Falls back to ephemeral subagents when the flag isn't set.
Hooks block completion until evidence is real
A 12-field evidence schema plus an independent reviewer (not the same agent that wrote the code). PostToolUse(TaskUpdate) exit-2's until everything validates. 3 consecutive rejections escalate.
Every surfaced issue spawns its own team
Failed tests, visual drift, placeholder pages, unwired controls — each becomes a Solution Requirement that auto-spawns a fix team. The originating check has to go green to close it out.
Ten phases. each with an exit contract.
100%-coverage hard gate. 12-condition exit checklist.
- 01openspec validate --all --strict must be valid — independently re-run by the Stop hook (v3.9.2) so a skipped or mis-reported verdict cannot pass.
- 02Every requirement has ≥ 1 measurable scenario; every both-layer requirement has an explicit front-to-back integration criterion.
- 03Reuse decisions cite real files/symbols in CODEBASE_MAP; no duplicate capabilities.
- 04Phase 2 cannot start until all 12 conditions hold.
A lifecycle for the intuition map. A durable registry for the suite.
Three verified gaps drove the release: INTERACTION_INTUITION_MAP.md existed only when Phase −1D happened to produce it — and playwright-user-flows never read it; nothing grew the map from user-specified flows or debugging discoveries; and the Playwright suite had no durable registry — no inventory, no whole-suite run, no dev/prod safety split.
intuition-map-lifecycle: three verbs for every lane. ensure — absent means produce it, and presence alone doesn't satisfy: a freshly scaffolded zero-element map reports populate, never none. grow — a user-specified flow upserts as confirmed, because the user specifying the flow IS the confirmation; a contradiction leaves the confirmed entry byte-identical and asks a targeted question quoting both readings. bug-path-upsert — debugging discoveries land with regression_refs[] naming the tests that pin them.
playwright-suite-builder: the 7th pipeline-driving skill, plus /architect-team:playwright-suite driving P0–P9 — inventory reconciled against a committed suite-manifest.json, existing tests reviewed through the standing gates (never duplicated), suite-wide gap analysis and gap-fill, persona grouping into Playwright dev / prod projects, and default-deny production safety: a mutating test enters the prod project only through a fully-authorized exception — nine adversary bypass manifests refused through the real CLI.
Phase 5 and dev-api-integration-testing now enumerate the manifest and run the ENTIRE dev suite; mini-review-sweep gains the full-suite gate while mini stays narrow. Eight thin pin-tested lane hooks — and an absent manifest changes nothing, the named migration boundary.
Measured, not asserted: 8,205 passing + 6 skipped, 0 failed across 259 top-level test files — disk-anchored via git ls-files 'tests/test_*.py', measured on win32 and recorded under docs/measurements/ as the release's closing act.
↳ compiled into all 39 agents + 7 pipeline-driving skills
A lock at the turn boundary. a live endpoint before the backend is built.
Every run ends with a bill of sale
- ›The delivery-manifest skill (v3.46.0) fires at every close-out (Phase 8 / B8 / M7 / U9) and on demand.
- ›Three mandatory pillars: plain-speak problem statement (the engine flags jargon), stakeholder-executable validation steps each with an expected result, and a what/where table for every new element.
- ›Give it your own template and the manifest matches its vocabulary, sections, and tone. The final run_complete email IS the bill of sale.
A session cannot end while registered work is open
- ›The condition is read from disk by hooks/open_work.py — never asserted by the agent. Unknown or missing status counts as OPEN; the asymmetry fails safe.
- ›The ask-ledger and the harness task store are immutable to agent writes, so the lock's ground truth cannot be edited away. Four named kill-switches, teammate owner-scoping.
- ›v3.64.0 abandonment discrimination: work untouched past CT6_TASK_STALE_HOURS (floored at 1h) is inherited debt — listed with its store dir named, never blocking. open_work.py retire closes a dead list with an audit trail and refuses live tasks without --force.
dev → test-on-dev → prod, agent-immutable
- ›Either-signal frontend-impact detection: the diff touches frontend files OR a changed endpoint is consumed by a frontend route. Then frontend_impact_e2e_review is MANDATORY.
- ›Opt in with .architect-team-deploy.json — dev branch, real deploy command, auto-merge-to-prod on a clean run. The reader is fail-safe; a broken config never deploys.
- ›Once the file exists it is IMMUTABLE to agents — every agent Edit/Write is blocked unconditionally. Only a human changes a human's policy. The ETHOS names invented caution as the anti-pattern.
The frontend builds against a live endpoint, immediately
- ›The architect settles the inbound surface contract first; the backend provisions the endpoint at its REAL path serving a contract-conforming payload before the internals exist.
- ›Real HTTP, real error paths, real shapes — then the backend replaces the internals underneath. Neither side waits; neither side moves the approved contract unilaterally.
- ›v3.49.0 – v3.52.0 extend the same discipline outward: a staleness-aware knowledge server, a full data-engineering lane (D−1…D8), corroboration-gated warehouse SQL mining, and durable data annotations as team memory.
Unbounded solving, producer/checker enforcement, auto-merge on green.
The dev loop runs unbounded (v3.8.0). Every run / iteration ceiling is gone — the global 20-iteration cap, oscillation→abort, exhaustion→escalate-and-stop, the bounded sub-loop caps (diagnostic-research, editability, expensive-verification, mapping ralph). The 3-pass RCA rigor floor and the owner-input-only escalation marker are kept.
Producer/checker enforcement (v3.9.2). The Stop hook independently re-runs openspec validate --all --strict once a master-review verdict exists — a stale, orphaned, or malformed openspec change hard-blocks the Phase 8 commit instead of shipping silently.
Auto-merge on green (v3.7.0). The clean architect-team/<slug> branch is merged --no-ff into main, pushed, deleted (local + remote); the worktree is pruned. Conflicts or protected-branch rejects fall back to feature-branch + PR — --force is never added.
Honest boundary: live polyglot call-graph extraction against arbitrary target repos (CDLG P5) is the agent's runtime job and is not yet claimed proven end-to-end. The deterministic schema, IDs, witness reconciliation, freshness, and cost pieces are unit-tested.
asset://<path>:<fingerprint>
↳ rename-stable join key for MemPalace + diffing
The road to v3.65.0
Intuition-map lifecycle + Playwright suite
The interaction intuition map gets ensure / grow / bug-path-upsert and is finally read by the flow tests. playwright-suite-builder lands as the 7th pipeline-driving skill with /architect-team:playwright-suite (P0–P9), a committed suite-manifest.json, whole-suite runs at Phase 5, and default-deny production safety. Skills 53 → 55, commands 25 → 26. Suite 8,205 passing + 6 skipped, 0 failed.
Abandonment discrimination
The completion lock learns the difference between live work and inherited debt: a task untouched past CT6_TASK_STALE_HOURS is listed with its store dir named and never blocks, while open_work.py retire closes a dead list with an audit trail and refuses live tasks without --force.
Frontend E2E as a hard exit, evidence bound to its task
Click-driven full Playwright E2E becomes a run-level loop-exit gate (run-scoped in v3.57.0). verify-claim-instrument-binding lands as the 23rd Layer-3 tool, and v3.62.0 binds review evidence to task_subject so a reused integer id can no longer ride another lane's clean review.
Hand it a brief.
Walk away.
CT6 is built for senior engineers who'd rather review a finished branch than babysit a chat. Maps, plans, dispatches, gates, tests, fixes, commits, pushes.