Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
197 commits
Select commit Hold shift + click to select a range
c7f5930
docs: assess engineering team readiness and delivery path
Sep 5, 2026
d524b15
docs: define shared engineering team architecture and execution plan
Sep 6, 2026
621789c
docs: clarify automatic selection and adopt selective council design
Sep 6, 2026
bfaa390
docs: add native Codex integration and model release lifecycle
Sep 6, 2026
ff1fa60
docs: add full Sol implementation and usability handoff
Sep 6, 2026
55e93a2
docs: consolidate branches and establish the Sol build starting point
Sep 6, 2026
572e452
feat: establish truthful M1 invocation core
Sep 6, 2026
0826d13
docs: record M1 verification checkpoint
Sep 6, 2026
39c0379
fix: version native Codex launch preparation
Sep 6, 2026
1086b8a
fix: close M1 invocation gate gaps
Sep 6, 2026
a67ab58
fix: satisfy M1 protocol and validation gates
Sep 6, 2026
cc98ce7
docs: record M1 candidate gate evidence
Sep 7, 2026
ad46b2f
docs: save quota recovery checkpoint and exact next steps
Sep 7, 2026
aa3fe1c
test: preserve bounded native M1 probe
Sep 7, 2026
e6b9752
fix: resolve native probe manifest
Sep 7, 2026
5a373eb
fix: apply native probe environment
Sep 7, 2026
314c8ec
fix: bound native probe process ownership
Sep 7, 2026
97a10f0
fix: enforce native event correlation
Sep 7, 2026
25eabe7
docs: make interrupted build recovery discoverable
Sep 7, 2026
7b5c41c
fix: confirm native probe group cleanup
Sep 7, 2026
c50c6b4
docs: record accepted M1 gate
Sep 7, 2026
77cbed3
docs: make M2 the recovery next step
Sep 7, 2026
0c2929c
feat: add transactional M2 store foundation
Sep 7, 2026
606bc7b
docs: checkpoint M2 store foundation
Sep 7, 2026
ffc78e7
WIP checkpoint: start M2 supervisor lifecycle
Sep 7, 2026
20bea66
docs: preserve interrupted M2 supervisor state
Sep 7, 2026
0ee4cc0
feat: complete fenced M2 supervisor lifecycle
Sep 8, 2026
df955f4
fix: fail closed on supervisor cleanup races
Sep 8, 2026
31452f4
docs: checkpoint M2 supervisor lifecycle
Sep 8, 2026
cefd193
WIP checkpoint: add M2 durable service surface
Sep 8, 2026
a0794a9
WIP checkpoint: gate durable M2 attempt runner
Sep 9, 2026
f76df41
WIP checkpoint: WIP checkpoint: preserve M2 service recovery candidat…
Sep 9, 2026
5aa2e74
fix: harden durable M2 receipt recovery
Sep 9, 2026
f0d29a7
test: verify M2 CLI and installed migrations
Sep 9, 2026
8464580
docs: checkpoint M2 adversarial hardening
Sep 9, 2026
144b0b2
fix: recover interrupted preflight with receipts
Sep 15, 2026
c6a7a23
fix: bind recovered preflight to claimed project
Sep 15, 2026
f9f2ffa
fix: recover gated launches and durable stdin
Sep 15, 2026
ea3d8ff
docs: checkpoint M2 crash recovery
Sep 15, 2026
1cb7ad6
test: prove M2 cross-process fences
Sep 15, 2026
2c3e9d7
feat: add fenced host handoff storage
Sep 15, 2026
a689b88
feat: expose fenced host handoffs
Sep 15, 2026
d02b808
fix: reconcile gated runner crashes
Sep 15, 2026
67c3d9d
test: prove crash-safe artifact import
Sep 15, 2026
ddb6f51
fix: close final M2 recovery races
Sep 15, 2026
2e7db0c
docs: accept durable M2 milestone
Sep 15, 2026
ca55990
feat: add deterministic M3 profile routing
Sep 15, 2026
1c7b614
feat: freeze M3 routing during preflight
Sep 15, 2026
cd9a881
feat: freeze M3 review workspaces
Sep 15, 2026
4b5f308
docs: checkpoint M3 frozen preflight
Sep 15, 2026
a756307
feat: define strict M3 workflow evidence
Sep 15, 2026
97d2c6c
feat: run durable M3 review evidence pipeline
Sep 15, 2026
30cf49e
feat: complete M3 host review dispositions
Sep 17, 2026
65a8d39
docs: checkpoint M3 host disposition pipeline
Sep 17, 2026
459ff3f
feat: run M3 reviews through native Codex
Sep 17, 2026
3cfb409
docs: checkpoint native Codex review path
Sep 17, 2026
aaf91b9
test: add bounded M3 Codex live probe
Sep 17, 2026
e10db94
fix: isolate and refresh native Codex reviews
Sep 17, 2026
9478796
fix: type native review output schema
Sep 17, 2026
1abbcf9
docs: record M3 live Codex review
Sep 17, 2026
9dc795a
feat: report early M3 review failures
Sep 17, 2026
8f3fa56
WIP checkpoint: feat: add durable headless review leadership (2026-09…
Sep 18, 2026
e1afa4d
WIP checkpoint: fix: enforce M3 runtime budgets and pool capacity (20…
Sep 18, 2026
84deb77
feat: execute bounded frozen fallbacks
Sep 18, 2026
1737667
fix: close M3 audit findings
Sep 22, 2026
c7dbe9f
docs: accept M3 branch review milestone
Sep 22, 2026
243cb24
feat: establish optional MCP transport boundary
Sep 22, 2026
b2e842e
feat: expose durable runs over MCP
Sep 22, 2026
643910d
fix: block recursive DevSquad workers
Sep 22, 2026
4b78497
docs: checkpoint M4 MCP contract plan
Sep 22, 2026
96d990d
feat: define local MCP host templates
Sep 22, 2026
9abad1e
feat: add idempotent local MCP setup
Sep 22, 2026
5664113
docs: checkpoint M4 local setup plan
Sep 22, 2026
5b82f53
fix: prefer app-bundled Codex host
Sep 22, 2026
b7cd626
test: prove MCP client disconnect survival
Sep 23, 2026
04145d2
test: add M4 cross-surface acceptance probe
Sep 23, 2026
aa0fef5
fix: annotate MCP tool side effects
Sep 23, 2026
06ccf27
docs: record M4 cross-surface acceptance
Sep 23, 2026
d96e9e4
feat: add bounded Claude headless adapter
Sep 23, 2026
0d131e8
docs: checkpoint Claude adapter slice
Sep 23, 2026
6a7e849
feat: freeze isolated delivery candidates
Sep 23, 2026
f5032d7
docs: checkpoint delivery candidate slice
Sep 23, 2026
0e88d73
feat: persist fenced delivery candidates
Sep 23, 2026
64bcb2c
docs: complete M5 delivery foundation plan
Sep 23, 2026
30b98df
feat: review frozen delivery candidates
Sep 24, 2026
5298b15
WIP checkpoint: evaluate Jev and Laya; preserve M5 review checkpoint …
Sep 26, 2026
70e59cb
WIP checkpoint: prepare capped Jev routing pilot (2026-09-26 10:26)
Sep 26, 2026
df12b73
WIP checkpoint: record Jev pilot readiness and blocker (2026-09-26 10…
Sep 26, 2026
a1199c6
feat: complete delivery lead dispositions
Sep 27, 2026
4c76887
feat: execute bounded delivery revisions
Sep 27, 2026
7cad26e
docs: checkpoint bounded delivery revisions
Sep 27, 2026
b7d90cc
feat: wire live delivery and bounded fallbacks
Sep 27, 2026
f199cd2
test: prove revised writer crash fencing
Sep 27, 2026
41c5f1b
docs: record M5 offline completion
Sep 27, 2026
21b1331
feat: define shared capacity evidence
Sep 27, 2026
26ce5cf
feat: persist and fence shared capacity
Sep 27, 2026
d170c01
feat: route with persisted capacity evidence
Sep 27, 2026
3e3e952
docs: checkpoint M6 shared capacity
Sep 27, 2026
d621df2
feat: record final and late outcomes
Sep 27, 2026
45ebc9e
feat: report comparable learning outcomes
Sep 27, 2026
edfb3f3
feat: evaluate bounded learning experiments
Sep 29, 2026
f01e39a
docs: checkpoint M6 experiment evaluation
Sep 29, 2026
98c6685
feat: generate reviewable learning proposals
Sep 29, 2026
3ec12d6
docs: checkpoint M6 learning proposals
Sep 29, 2026
c0ce743
feat: persist qualified profile lifecycle
Sep 29, 2026
69f0c8e
feat: apply lifecycle bindings to new runs
Sep 29, 2026
d7fde77
feat: expose profile lifecycle operations
Sep 29, 2026
4b27e0c
feat: bind rollback to regression evidence
Sep 29, 2026
398ae6a
feat: record targeted catalog drift
Sep 29, 2026
ca4ee73
feat: fall back from unavailable profile bindings
Sep 29, 2026
78bf81c
docs: checkpoint M6 profile lifecycle
Sep 29, 2026
e1afbc6
feat: constrain optional decision guidance
Sep 29, 2026
7e83b3a
feat: persist decision helper accounting
Sep 29, 2026
87fa9cf
feat: integrate bounded decision guidance
Sep 29, 2026
d5ec52b
docs: checkpoint M6 decision helper
Sep 29, 2026
0929867
feat: add immutable standalone installer
Sep 29, 2026
d1b0c4c
docs: publish M7 runtime operations
Sep 29, 2026
258abbd
fix: migrate legacy standalone launcher
Sep 29, 2026
2275b49
fix: validate offline MCP installations
Sep 29, 2026
bf26455
test: verify current Codex native protocol
Sep 29, 2026
ccba125
fix: prefer verified Codex binary
Sep 29, 2026
251ef70
docs: checkpoint installed M7 runtime
Sep 29, 2026
85aa378
feat: add guided review and fix entry
Sep 29, 2026
b2c6e34
docs: close independent M7 work
Sep 29, 2026
2d5b450
fix: retain completed Codex output after empty delta
Sep 29, 2026
1553768
fix: recover Codex output from terminal turn
Sep 29, 2026
09e435c
fix: report empty Codex protocol output
Sep 29, 2026
9d70888
fix: prefer completed Codex agent output
Sep 29, 2026
b1d52ad
fix: isolate trusted check home
Sep 29, 2026
f4fa657
docs: record live M7 Codex acceptance
Sep 29, 2026
399d93d
WIP checkpoint: Sol review remediation plan and corrected milestone s…
Sep 29, 2026
6848f11
WIP checkpoint: R1 candidate integrity repair with public regressions…
Sep 29, 2026
3612942
WIP checkpoint: Sol execution plan and R2 failing regression handoff …
Sep 29, 2026
ef98889
WIP checkpoint: R2 identity repair preserved; final integration gate …
Oct 1, 2026
b3de5c6
WIP checkpoint: docs: refresh SOL execution plan and record R2 offlin…
Oct 1, 2026
672e383
WIP checkpoint: R3a provenance contracts and fenced prelaunch assignm…
Oct 1, 2026
b766f9e
WIP checkpoint: record R3a verification and R3b next action (2026-10-…
Oct 1, 2026
a22b949
WIP checkpoint: docs: give SOL current review feedback and ordered ac…
Oct 1, 2026
46e4230
WIP checkpoint: R3b.1 partial reader, focused verification and explic…
Oct 1, 2026
0d37764
WIP checkpoint: Jev private env-file setup and offline secret-safety …
Oct 1, 2026
bd0cf5c
WIP checkpoint: Record one-request Jev pilot, measured tier disagreem…
Oct 1, 2026
a4a87fd
WIP checkpoint: Repair and regress honest failed-review experiment ev…
Oct 1, 2026
4e6297f
WIP checkpoint: Connect current experiment eligibility and append-onl…
Oct 1, 2026
5de6655
WIP checkpoint: Prove stale lifecycle and historical compatibility th…
Oct 1, 2026
dc4e110
WIP checkpoint: Record failed integration and close installer test SQ…
Oct 1, 2026
f121000
WIP checkpoint: Record schema-15 full integration pass and retained f…
Oct 1, 2026
9334190
WIP checkpoint: Support the current bundled Codex layout and retain d…
Oct 1, 2026
db55d3f
WIP checkpoint: Preserve partial normal aliases and independent R3 au…
Oct 1, 2026
e8cdf07
WIP checkpoint: Bind delivery experiment evidence and defer unsafe sc…
Oct 1, 2026
6874de7
WIP checkpoint: Fence lazy schema upgrades and retain activation fail…
Oct 1, 2026
dc68944
WIP checkpoint: WIP checkpoint: Keep lifecycle fixture clocks current…
Oct 1, 2026
c7ccc02
WIP checkpoint: Record 455-test repair gate before safe installed wor…
Oct 1, 2026
ea113d4
WIP checkpoint: Record safe installed schema-15 update and SDK regres…
Oct 1, 2026
3555a91
WIP checkpoint: Repair Claude argument framing and preserve correlate…
Oct 1, 2026
6f51db9
WIP checkpoint: Map verified Claude first-party transport labels and …
Oct 1, 2026
710e56a
WIP checkpoint: Record second managed delivery failure and narrow nat…
Oct 1, 2026
1781b89
WIP checkpoint: Repair detached Claude saved-login environment and sy…
Oct 1, 2026
4a6f91b
WIP checkpoint: Record auth-repaired installation and active genuine …
Oct 1, 2026
3b67fff
WIP checkpoint: Record verified Claude candidate, dead-review cancell…
Oct 2, 2026
8129b92
WIP checkpoint: Record corrective candidate scope and Unicode discove…
Oct 2, 2026
e8bd9e5
WIP checkpoint: Preserve failed 471-test gate and launch bounded file…
Oct 2, 2026
f1f0c94
WIP checkpoint: Save final frozen candidate and exact combined-review…
Oct 2, 2026
6e6dcdf
WIP checkpoint: Record passing real 475-test delivery gate and active…
Oct 2, 2026
b6b924f
WIP checkpoint: Record combined-review byte-filename finding and fenc…
Oct 2, 2026
b817907
WIP checkpoint: Preserve failed no-op native revision and exact byte-…
Oct 2, 2026
bb6999d
WIP checkpoint: Record fresh bounded byte-filename task and real Git …
Oct 2, 2026
a52fc9c
WIP checkpoint: Preserve accepted 477-test native workflow and concis…
Oct 2, 2026
6d2e0ba
WIP checkpoint: Integrate independently accepted exact-target and byt…
Oct 2, 2026
39b95f1
WIP checkpoint: Record verified final installation and Gemini recheck…
Oct 2, 2026
9dfa74c
WIP checkpoint: WIP R4: scoped native catalog and quota integration; …
Oct 2, 2026
500d1b1
WIP checkpoint: R3 closure accepted; R4 scoped discovery and quota pu…
Oct 2, 2026
913abc1
WIP checkpoint: R4 repair: one native subscription pool across catalo…
Oct 2, 2026
d3f7c0b
WIP checkpoint: Accept R4 routing/catalog/quota and installed transpo…
Oct 2, 2026
4d9e298
WIP checkpoint: R5 WIP: objective terminal projections and public bud…
Oct 2, 2026
14b3a39
WIP checkpoint: R5 schema-16 regression expectations; preserve failed…
Oct 2, 2026
f87060b
WIP checkpoint: R5 repair: transactional projection reads and active-…
Oct 2, 2026
bf3de08
WIP checkpoint: test: wait for terminal headless integrity receipts a…
Oct 2, 2026
dfe9976
WIP checkpoint: test: retain schema-four upgrade assertion for schema…
Oct 2, 2026
8f2c1c6
WIP checkpoint: docs: close accepted installed R5 outcomes and public…
Oct 2, 2026
f343e25
WIP checkpoint: R6 integration: terminal/readiness and shared probe c…
Oct 2, 2026
7525146
WIP checkpoint: docs: scope Antigravity acceptance to agy CLI (2026-1…
Oct 2, 2026
181a1a0
WIP checkpoint: R6: checkpoint atomic guided recovery and independent…
Oct 2, 2026
7130ee7
WIP checkpoint: R6: finish audited expiry recovery and verified comma…
Oct 2, 2026
32b94d6
WIP checkpoint: docs: record frozen R6 native audit and Council epoch…
Oct 2, 2026
4ae653f
WIP checkpoint: R6: record554-test baseline and explicit native owner…
Oct 2, 2026
8e59349
WIP checkpoint: docs: shorten resume history and distinguish installe…
Oct 2, 2026
8242eff
WIP checkpoint: R6: integrate fail-closed probe ownership and retaine…
Oct 2, 2026
fb64e43
WIP checkpoint: R6/C1: preserve repaired release candidate, package a…
Oct 3, 2026
b83dda7
WIP checkpoint: release: preserve ordinary finish compatibility and p…
Oct 3, 2026
06767b4
WIP checkpoint: release: record accepted EOF review,604-test core gat…
Oct 3, 2026
765ab2d
WIP checkpoint: release: preserve installed17,9SDK and actual updated…
Oct 3, 2026
5a576d3
WIP checkpoint: release: integrate independently accepted portable wa…
Oct 3, 2026
1c9d5da
WIP checkpoint: release: retain failed3.14 public gate and bounded te…
Oct 3, 2026
2d5a6f9
WIP checkpoint: release: preserve receipt synchronization and truthfu…
Oct 3, 2026
f40c618
WIP checkpoint: release: correct crash-phase test synchronization wit…
Oct 3, 2026
73acf3e
WIP checkpoint: release: preserve corrected CI and delivery blocked-p…
Oct 3, 2026
8488ed4
WIP checkpoint: release: synchronize delivery recovery fixture with a…
Oct 3, 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: 3 additions & 3 deletions .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,14 @@
},
"metadata": {
"description": "DevSquad - Engineering Manager that coordinates AI coding agents",
"version": "0.10.0"
"version": "0.11.0"
},
"plugins": [
{
"name": "devsquad",
"source": "./plugin",
"description": "Engineering Manager that coordinates AI coding agents through enforced delegation",
"version": "0.10.0"
"version": "0.11.0"
}
]
}
}
4 changes: 4 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# Copy to .env, set permissions to 600, and fill the key locally.
# Never paste credentials into chat or commit them.
# The Jev probe reads this only with --env-file .env; runtime routing stays off.
TYPESAFE_API_KEY=
68 changes: 68 additions & 0 deletions .github/workflows/offline.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
name: Offline compatibility

on:
push:
pull_request:
workflow_dispatch:

permissions:
contents: read

jobs:
legacy-bash:
name: Legacy Bash 3.2 (macOS)
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
- name: Verify system Bash floor
run: test "$(/bin/bash -c 'printf "%s.%s" "${BASH_VERSINFO[0]}" "${BASH_VERSINFO[1]}"')" = "3.2"
- name: Run legacy and packaging contracts
run: /bin/bash test/run.sh

core:
name: Core Python ${{ matrix.python }} (macOS)
runs-on: macos-latest
strategy:
fail-fast: false
matrix:
python: ["3.11", "3.14"]
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python }}
cache: pip
- name: Install build-only test tooling
run: python -m pip install "setuptools>=68" wheel
- name: Verify generated command and schema reference
run: python scripts/generate-core-reference.py --check
- name: Run dependency-free core, package and native-protocol fixtures
env:
PYTHONDONTWRITEBYTECODE: "1"
PYTHONPATH: plugin/core/src
PYTHONWARNINGS: error::ResourceWarning
run: python scripts/run-core-tests.py --failfast

optional-mcp:
name: Optional MCP 2.2.0 (provider-offline)
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.11"
cache: pip
- name: Install exact optional transport lock
run: python -m pip install -r plugin/core/requirements-mcp.lock
- name: Run MCP SDK and stdio compatibility fixtures
env:
PYTHONDONTWRITEBYTECODE: "1"
PYTHONPATH: plugin/core/src
PYTHONWARNINGS: error::ResourceWarning
run: python test/core/test_mcp.py -q

# Test bodies make no provider or application network calls. Dependency setup
# resolves pinned public packages; live provider/app smoke runs remain explicit,
# bounded receipts outside CI.
10 changes: 10 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,18 @@
.claude/
.agent/

# Local credentials; commit only the blank example.
.env
.env.*
!.env.example

# Dependencies
node_modules/
__pycache__/
*.py[cod]
.pytest_cache/
*.egg-info/
plugin/core/build/

# Logs
*.log
Expand Down
31 changes: 31 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# Working on DevSquad

Read [CONTRIBUTING.md](CONTRIBUTING.md) before changing code. Run
`bash test/run.sh` before every commit; core changes also need the relevant
offline Python tests. Preserve the existing Bash 3.2 and optional-jq contracts.

## Continuing the engineering-team build

This build is already underway. After a usage limit, interrupted session or
handoff, read these files before starting work:

1. [RESUME.md](docs/plans/engineering-team/RESUME.md): latest checkpoint,
verified results, open findings and exact next action.
2. [backlog.json](docs/plans/engineering-team/backlog.json): milestone status
and evidence.
3. [SOL-HANDOFF.md](docs/plans/engineering-team/SOL-HANDOFF.md): the full
authorized delivery scope and acceptance criteria.

Compare the recovery note with `git status` and recent commits; retain work
newer than the note. Continue on `codex/engineering-team` unless the user
directs otherwise. Do not restart the architecture exercise or discard
implementation to return to `main`.

Checkpoint coherent partial work and update RESUME.md before long probes or
handoffs. Record failures and incomplete gates truthfully. Finish a pause with
a clean tree; never use a stash as the recovery mechanism. Keep raw provider
diagnostics and credentials outside tracked evidence.

Usage limits do not authorize buying credits, redeeming reset credits, using
a paid API fallback or changing global AI settings. The saved artifacts must
allow the next session to resume without relying on conversation memory.
33 changes: 33 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,39 @@ All notable changes to DevSquad are documented here.

> **Note:** Project was renumbered from 2.x to 0.x semver in Feb 2026 to reflect pre-stable status. Entries below have been renumbered accordingly.

## [0.11.0] — 2026-10-02

### Added
- Standalone dependency-free Python core (`squad` 0.1.0) with durable saved
runs, isolated candidates, bounded Claude implementation, independent Codex
review, candidate-bound checks and fenced host acceptance.
- Guided setup, readiness, review/fix, status/result, finish, cancel and safe
resume commands; optional pinned MCP transport for the same local ledger.
- Catalog-backed profiles, shared subscription-pool capacity fences, explicit
outcome/trial reports and guarded qualification/promotion/rollback.
- Reversible content-addressed installation and guarded schema-17 upgrade.
The wheel packages every runtime schema, including the experimental Council
contract. Old schema-16 clients cannot mutate the upgraded ledger.

### Fixed
- Interrupted guided completion now saves exact intent and recovers only
matching authority, retaining prior expiry rejection history.
- Native probes fail closed without process identity. Bounded natural exit
preserves version/auth exit status before owned cleanup; controlled Python
fixtures cannot invalidate a pristine candidate with undeclared bytecode.
- Bash 3.2 compatibility, optional-jq behavior and legacy wrapper error
contracts remain supported.

### Limitations
- Council is experimental and native-unavailable; automatic invocation is OFF.
Its fixture comparison is inconclusive, not a quality or savings claim.
- Jev routing remains OFF. Provider operations depend on installed harness
capabilities and subscription authentication; paid API fallback is not used.
- Claude CLI handoff and Claude-to-Codex delivery have live receipts. Claude
desktop Code-tab proof is separate and unverified. Antigravity means the
`agy` CLI, not its IDE; Grok/Antigravity MCP status does not prove automatic
implementation/review roles. See the runtime guide for supported boundaries.

## [0.10.0] — 2026-07-07

### Maintainability & scalability review
Expand Down
10 changes: 10 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@
git clone https://github.com/joshidikshant/devsquad.git
cd devsquad
bash test/run.sh # no network, no real CLIs required — should be all green
PYTHONWARNINGS=error::ResourceWarning PYTHONPATH=plugin/core/src \
python3 scripts/run-core-tests.py
python3 scripts/generate-core-reference.py --check
```

The test suite (`test/run.sh`) is the contract. It runs offline against fake
Expand Down Expand Up @@ -54,3 +57,10 @@ Bump the version in `plugin/.claude-plugin/plugin.json` and both entries in
`.claude-plugin/marketplace.json`, add a `CHANGELOG.md` entry, then after
pushing run `claude plugin update devsquad@devsquad-marketplace`. Never point
hook commands at a versioned cache dir — that freezes hooks at install time.

Before a release, also run a fresh standalone install into temporary
`DEVSQUAD_INSTALL_ROOT` and `DEVSQUAD_BIN_DIR` locations. The tracked installer
tests cover Claude-free installation, idempotence, actual payload drift,
plugin contents and an active run surviving a release switch. The operator
commands and supported/deferred surface boundaries live in
[docs/RUNTIME-GUIDE.md](docs/RUNTIME-GUIDE.md).
50 changes: 47 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,13 @@

# DevSquad

### Your AI coding agent ignores your rules. Hooks don't.
### A local engineering team with saved work and verifiable results

**DevSquad turns Claude Code into an engineering manager that _physically intercepts_ tool calls and routes the grunt work to Gemini, Codex, and Grok — then runs a live A/B test on whether that even helps.**
**DevSquad coordinates bounded implementation, independent review, tests and
host acceptance across your installed AI harnesses. Runs and evidence survive
closing a client. The standalone runtime does not require Claude's plugin.**

[![tests](https://img.shields.io/badge/tests-177%20passing-brightgreen)](test/)
[![tests](https://github.com/joshidikshant/devsquad/actions/workflows/offline.yml/badge.svg)](https://github.com/joshidikshant/devsquad/actions/workflows/offline.yml)
[![bash](https://img.shields.io/badge/bash-3.2%2B-blue)](CONTRIBUTING.md)
[![jq](https://img.shields.io/badge/jq-optional-blue)](CONTRIBUTING.md)
[![license](https://img.shields.io/badge/license-MIT-black)](LICENSE)
Expand All @@ -22,6 +24,48 @@

---

## Standalone runtime quickstart

Requires a Unix-like host, Python 3.11+ and existing provider CLI subscription
logins. Installation is local and does not download Python dependencies:

```bash
git clone https://github.com/joshidikshant/devsquad.git
cd devsquad
./install.sh --core-only
export PATH="$HOME/.local/bin:$PATH"
squad doctor
squad review --base main --dry-run
```

In the project you want to work on, commit the inputs, inspect the dry run,
then use `squad review --base main --wait` or
`squad fix "the bounded issue" --write-path src --wait`. The saved run stops
at a host handoff with checks and the exact finish command; assess the evidence
before accepting. `squad status`, `squad result RUN_ID`, `squad cancel RUN_ID`
and `squad resume RUN_ID` operate on the same saved work.

For Codex/Claude/Antigravity CLI/Grok MCP setup, safe updates, supported
operations and troubleshooting, read the [runtime guide](docs/RUNTIME-GUIDE.md).
The optional MCP transport needs an explicitly prepared pinned wheelhouse;
it is not silently downloaded. Existing paid accounts do not imply that every
harness supports every worker role. No paid API fallback is enabled.

Council is native-unavailable and automatic use is OFF. Jev routing is OFF;
no production quality, cost savings or Plus-window savings are claimed.
Claude CLI handoff and implementation → independent Codex review → tests have
live receipts; Claude desktop Code-tab proof remains unverified. Antigravity
means `agy`, not the IDE.

Continuing development after an interruption? Read the
[recovery checkpoint](docs/plans/engineering-team/RESUME.md) and
[implementation plan](docs/plans/engineering-team/START-HERE.md).

## Legacy Claude plugin

The sections below describe the separately supported Claude hook plugin,
not automatic worker-role coverage in the standalone runtime.

## The 30-second version

You told Claude to delegate the boring stuff. It nodded. Then it read 40 files itself, blew through its context window, and you paid for every token.
Expand Down
38 changes: 28 additions & 10 deletions docs/ARCHITECTURE.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,14 @@

One page for future maintainers (including future Claude sessions).

> **September 2026:** The diagram below describes the legacy Claude plugin;
> provider names, deployment details and measurements are historical. The
> [current assessment](audits/2026-09-06-engineering-team-assessment.md) records
> verified gaps. The proposed shared runner is specified in
> [ADR-002](adr/ADR-002-surface-independent-engineering-team.md), with a
> [coding-agent execution packet](plans/engineering-team/START-HERE.md).
> That new runtime is planned, not implemented.

## End-to-end flow

```mermaid
Expand Down Expand Up @@ -118,16 +126,26 @@ Enforced by `test/test_wrapper_contract.sh` (offline, fake CLI binaries):

## Deployment modes (the drift trap)

- **User mode**: `install.sh` registers global hooks pointing at the
marketplace clone (`~/.claude/plugins/marketplaces/devsquad-marketplace/plugin`).
Refresh with `claude plugin marketplace update devsquad-marketplace` +
`claude plugin update devsquad@devsquad-marketplace` after each release.
- **Dev mode** (this machine): global hooks point at the source checkout, so
hooks run at HEAD. Agents/commands/skills STILL load from the installed
plugin — after pushing, update the plugin or subagents run stale code.
- Never let hook commands reference a versioned cache dir
(`plugins/cache/.../<version>/`): that froze production at 0.3.0 for
five months while fixes accumulated unreleased.
- **Standalone mode**: `scripts/install-core.sh` creates an immutable release
below `~/.devsquad/releases/`, atomically selects it through
`~/.devsquad/current` and keeps `~/.local/bin/squad` stable. It needs no
Claude installation. `--status --json` compares source, plugin and actual
installed payload digests.
- **Claude plugin mode**: `install.sh` installs the standalone runtime first
and, when Claude is available, installs or updates the marketplace plugin.
`plugin/hooks/hooks.json` is the hook registration source. The installer no
longer writes a duplicate set into global Claude settings.
- **Dev mode**: run legacy hooks from this source checkout only when explicitly
testing changes at HEAD. Agents/commands/skills may still come from an
installed plugin, so doctor and install-status output must be checked before
attributing behavior to the source tree.
- Never point a stable launcher or manual hook at a versioned Claude cache
directory (`plugins/cache/.../<version>/`). Content-addressed standalone
releases are retained for active runs; the selector, not a running process,
moves during updates.

See [the runtime guide](RUNTIME-GUIDE.md) for install, operation, recovery and
the honestly blocked live-surface matrix.

## State (per project, `.devsquad/`, self-gitignored)

Expand Down
Loading
Loading