Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
4 changes: 2 additions & 2 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.11.0"
"version": "0.11.1"
},
"plugins": [
{
"name": "devsquad",
"source": "./plugin",
"description": "Engineering Manager that coordinates AI coding agents through enforced delegation",
"version": "0.11.0"
"version": "0.11.1"
}
]
}
10 changes: 10 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,16 @@ 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.1] — 2026-10-02

### Fixed
- Wrap the Claude plugin hook events in the required top-level `hooks` object.
Claude's actual plugin validator rejected the old event-only file during
the post-release local update. Hook commands, matchers and timeouts are
unchanged; the standalone core remains 0.1.0 with the same payload.
- Offline packaging checks now reject the old hook shape and verify the
four hook registrations and consistent marketplace/plugin versions.

## [0.11.0] — 2026-10-02

### Added
Expand Down
4 changes: 4 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -64,3 +64,7 @@ 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).

When Claude is installed, run `claude plugin validate ./plugin` before
publication and validate the actual installed plugin after its normal update.
An updater exit code of zero alone does not prove that plugin hooks loaded.
54 changes: 36 additions & 18 deletions docs/plans/engineering-team/RESUME.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,9 @@ reset or restart from main. Detailed receipts and failed gates remain in evidenc
The user authorized a public **GitHub release in joshidikshant/devsquad**.
Release v0.11.0 ships plugin0.11.0 and standalone core0.1.0; no registry or
hosted service. PR1: https://github.com/joshidikshant/devsquad/pull/1.
Publication is pending final public CI, merge and exact-commit release assets.
v0.11.0 is published and assets verified, but actual local Claude update found
a plugin hook-envelope defect. A narrow0.11.1 correction is now locally tested
and independently reviewed; publication/update of that correction is next.
The whole engineering-team plan remains incomplete.

Latest public CI37084805784 on5a576d3: Bash259/11 files (50 focused) and
Expand Down Expand Up @@ -53,6 +55,28 @@ Final root Bash passed259 assertions/11files (50 focused), reference/JSON/
staged+unstaged diff checks passed. Checkpoint/push and exact-head public CI
remain. No merge.

Corrected candidate8488ed44ee30c7fa5b2c20370827093715130d36 is pushed.
Final PR CI37088621735 passed all four jobs: Bash259/11, optionalMCP23/4.656s
(one optional skip), Python3.11.9 full604/804.964s and Python3.14.7 full604/
1110.004s (two SDK skips each/no failures/errors/unraisable). PR1 merged as
e7ec4ce9f889dc5fa083fe4289b5bfc3d424edfa; treebc76f192 equals tested8488.
v0.11.0 published2026-10-03T02:29:54Z, release402283042; tag exactmerge,
not draft/prerelease, source/plugin header hashes match. All three downloaded
assets and SHA256SUMS match. Source/plugin/wheel hashes are in public evidence.
Duplicate push/main CI was cancelled after tree equality, not accepted.

Actual scoped Claude updater installed0.11.0/enabled/exit0, but plugin list
and actual installed validator failed: hooks expected record/undefined.
Old hooks/hooks.json lacked outer hooks object. v0.11.0 notes now disclose it;
retain original tag/assets. Corrective0.11.1 only wraps existing event map,
bumps three metadata versions and adds offline shape/negative/version tests.
Core tree62ee unchanged, commands/matchers/timeouts exactly unchanged.
Six-file diff0542f696c655c801a541d6b7066e37bddf2ea59066a83c4f0ab1bf992ad509da
independently reviewed clean. Actual Claude2.1.220 corrected validator passes;
independent exact-old shape exits1, corrected exits0/.362s, packaging9 passes.
Root Bash261/11 passes. Checkpoint/push/PR2/fullCI/merge0.11.1 and actual
installed no-error validation remain. Original core/full/live gates stay valid.

Rejected private diagnostic RELEASE+cancel cleanup overlapped import and
raised stale-phase ConflictError. Independent read-only triage: fail-closed
completion fence, no duplicate-writer/false-cancel evidence. No error-time
Expand Down Expand Up @@ -108,26 +132,20 @@ This chat's existing Codex MCP server returned SCHEMA_UNSUPPORTED because it
still uses an old package. New CLI and agy succeed on the same saved run.
A scoped DevSquad-only reconnect request is pending; do not change global
settings or repeatedly probe the unchanged old connection. This does not block
the public CLI release. Local Claude plugin is still0.10.0: after main is
released run its normal scoped plugin updater and verify0.11.0.
the public CLI release. Local Claude plugin is0.11.0 but has the confirmed
hook load error above; complete0.11.1 and verify actual installed validation
and plugin list without errors. Do not claim local plugin usability yet.

## Exact next action

1. Root integrated watchdog Bash259/affected45/reference/diff/JSON gates pass.
Both receipt/dead-wait test repairs are integrated/reviewed; root33 passes.
Final Bash/JSON/reference/diff checks passed; checkpoint the corrected candidate.
Core source/full/native/installed gates need no unchanged repeat.
2. Push codex/engineering-team, require final exact-head public CI green:
legacy Bash3.2, core Python3.11 and3.14, optional MCP. Earlier CI
37082086201/37082130929 was cancelled after true legacy failure; optional
MCP passed, cancelled core is NOT accepted. Core now fetches full history
for immutable migration fixtures and uses the tracked failfast runner.
3. Merge PR1 with exact-head fence without deleting engineering branch. Build
source/plugin archives from exact merged commit; old b83 archives are stale.
The unchanged-core wheel may be reused only after tree/hash verification.
4. Publish v0.11.0 on that exact merge SHA with verified assets/SHA256SUMS.
Verify tag, published-not-draft state and downloaded asset hashes. Update
release evidence/backlog/this checkpoint and local Claude plugin. End clean.
1. Checkpoint/push independently reviewed0.11.1 hook correction. Create PR2
to main and freeze its exact head for final all-four public CI gates.
2. Merge exact tested head, prove merged tree equality; regenerate source/
plugin0.11.1 archives from exact merge, reuse unchanged core wheel only
after tree/hash equality. Publish/verify tag, release and downloads.
3. Normal scoped Claude plugin update, actual installed validator and plugin
list must have no load errors. Update evidence/backlog/checkpoint, end clean.
Core source/full/native/installed/provider gates need no unchanged repeat.

## Residual scope and boundaries

Expand Down
6 changes: 3 additions & 3 deletions docs/plans/engineering-team/backlog.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
"status": "partial",
"artifact": "evidence/public-release-0.11.0.json",
"scope": "R3-R6 core runtime accepted: frozen604-test core, exact native EOF audit clean/accepted, pristine trusted-check integrity, installed schema17/no drift, nine actual installed SDK tests, updated agy1.2.14 actual MCP status. Legacy watchdog3fdc6bd independently reviewed and integrated without core source changes. Earlier accepted Claude delivery/handoff and Grok receipts retained separately.",
"next_action": "Complete final integrated Bash/affected checks, exact-head public CI, PR1 merge and verified v0.11.0 GitHub release; normal local Claude plugin update. Preserve original R7/C1 and R8 residual gates separately; do not repeat unchanged accepted proofs.",
"next_action": "v0.11.0 final public CI/PR1 merge/tag/downloaded assets passed. Normal local plugin update exposed missing hooks envelope; narrow0.11.1 correction reviewed/actual validator/Bash261 passed. Finish exact-head CI/PR2 merge/corrective release and actual installed plugin no-error validation. Preserve original R7/C1 and R8 residual gates separately; do not repeat unchanged accepted proofs.",
"limitations": "Whole-plan closure is not claimed. Council is integrated/offline-tested but native-unavailable, comparison inconclusive and automaticOFF. Claude Code-tab proof remains unverified/TCC. Antigravity means agy CLI, not IDE; Grok/agy MCP status does not prove automatic writer/reviewer roles. Current CodexApp MCP connection needs DevSquad-only reconnect after schema17 upgrade. Jev off/single pilot spent; no paid API fallback or reset use authorized."
},
"planning_checkpoint": {
Expand Down Expand Up @@ -49,7 +49,7 @@
{"id": "R5", "title": "Public saved-run outcomes and bounded experiments", "status": "complete", "milestones": ["M6"], "depends_on": ["R3", "R4"], "items": ["G1"], "evidence": "evidence/R5-closure-2026-10-02.json", "checkpoint": "Accepted dfe9976/source equivalent f87060b and installed schema16. Initial native findings repaired; exact follow-up e046a174 clean/accepted. Full 504 tests/511.241s, two optional SDK skips/no errors/failures/unraisable; nine actual installed SDK tests pass/no skips. Public complete trial/evaluate/qualify/promote/new-run/held-out regression/rollback, shared call/active deadline and all terminal projection origins pass. Safe old-schema upgrade and idempotence/drift gates pass. Failed history retained; automatic experimentation and Jev stay off."},
{"id":"R6","title":"Normal terminal experience and readiness","status":"complete","milestones":["M5","M7"],"depends_on":["R1","R2","R4","R5"],"items":["G3","G4"],"evidence":"evidence/public-release-0.11.0.json","checkpoint":"Accepted core terminal/readiness package: exact native EOF cb68 succeeded22/clean, pristine60 trusted-check integrity, frozen604 full tests/793.462s and installed schema17/nine SDK tests/no drift. Independently reviewed legacy watchdog3fdc6bd integrated with unchanged core tree;259 Bash/45 affected agent gates pass, root integrated gates recorded in release evidence. Public CI/publication remain release gates; desktop UI/Council residuals remain separate."},
{"id":"R7","title":"Complete Council within existing runner","status":"in_progress","milestones":["C1"],"depends_on":["R1","R2","R3","R4","R5","R6"],"items":["G5"],"checkpoint":"Council reconciliation0e7dd319/EOF4f integrated, schema17 actually installed; mechanical comparison/cancel/recovery/old16 fences and frozen604 core gate pass. Final nongenerating diagnostic exhausted: sandbox network_request_failed/noHTTP and unsandboxed strict-response rejection, zero generating calls. Native quality/usage unavailable; fixture comparison inconclusive; automaticOFF. No more network attempts or permission widening. Original C1 native acceptance remains incomplete, not a core-publication blocker under user-selected release scope."},
{"id":"R8","title":"Installed proofs, external gates and closure audit","status":"in_progress","milestones":["M4","M5","M6","M7","C1"],"depends_on":["R1","R2","R3","R4","R5","R6"],"items":[],"note":"Core installed proofs may proceed before R7; full-delivery closure also requires R7. Auth/key-dependent subgates remain separately blocked.","evidence":"evidence/R8-installed-workflows-2026-10-01.json","checkpoint":"Safe updated schema17 install/no drift/nine actual SDK tests and updated agy1.2.14 actual saved-run MCP proof accepted; earlier live Claude handoff/delivery and Grok MCP retained. PR1/v0.11.0 public release pending exact-head CI/merge/assets. Existing CodexApp old MCP server needs scoped reconnect; Claude desktop Code-tab/TCC and whole-plan closure remain separate."}
{"id":"R8","title":"Installed proofs, external gates and closure audit","status":"in_progress","milestones":["M4","M5","M6","M7","C1"],"depends_on":["R1","R2","R3","R4","R5","R6"],"items":[],"note":"Core installed proofs may proceed before R7; full-delivery closure also requires R7. Auth/key-dependent subgates remain separately blocked.","evidence":"evidence/R8-installed-workflows-2026-10-01.json","checkpoint":"Safe updated schema17 install/no drift/nine actual SDK tests and updated agy1.2.14 actual saved-run MCP proof accepted; earlier live Claude handoff/delivery and Grok MCP retained. PR1/v0.11.0 public CI/merge/release/download checks passed. Actual local plugin update found hook envelope defect; reviewed narrow0.11.1 correction/validator/Bash261 pass, final CI/release/installed validation pending (public-release-0.11.1 evidence). Existing CodexApp old MCP server needs scoped reconnect; Claude desktop Code-tab/TCC and whole-plan closure remain separate."}
],
"milestones": [
{
Expand Down Expand Up @@ -245,7 +245,7 @@
"availability": "portable_redacted"
}
],
"blocker": "Claude authentication and actual CLI/MCP handoff now pass. Claude local Code-tab operation remains unverified. The user's October 2 clarification excludes Antigravity IDE: verify the updated agy CLI against the final accepted installation. Portable Claude CLI proof is not substituted for the local Code-tab proof."
"blocker": "Claude authentication and actual CLI/MCP handoff pass; updated agy1.2.14 CLI against schema17 is verified and IDE excluded. Claude local Code-tab operation remains unverified; current CodexApp DevSquad-only reconnect remains. Portable Claude CLI proof is not substituted for local Code-tab proof."
},
{
"id": "M5",
Expand Down
103 changes: 100 additions & 3 deletions docs/plans/engineering-team/evidence/public-release-0.11.0.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"schema_version": 1,
"recorded_on": "2026-10-02",
"status": "delivery_phase_corrected_root_gate_passed_next_public_ci_pending",
"status": "published_verified_core_plugin_hook_issue_found_corrective0111_pending",
"authorization": "User chose public GitHub release in existing joshidikshant/devsquad; no package registry or hosted service",
"pull_request": "https://github.com/joshidikshant/devsquad/pull/1",
"frozen_core_candidate": "b83dda7fbf691503d3adf3c9ea6ecebd4071ba16",
Expand Down Expand Up @@ -161,7 +161,7 @@
"antigravity": "agyCLI1.2.14 updated-release MCP status verified; automatic worker roles unverified and IDE out of scope",
"whole_plan": "not complete"
},
"remaining": "Final Bash/JSON/reference/diff checks passed. Checkpoint and push delivery-test-corrected candidate. Require all final exact-head public CI jobs green; merge PR1, publish exact-merge verified v0.11.0 assets, scoped local Claude plugin update. Preserve unconfirmed diagnostic concurrency follow-up plus original Council/desktop/MCP reconnect residuals separately.",
"remaining": "v0.11.0 published and downloaded asset hashes verified; standalone core works. Scoped local plugin updater installed0.11.0, but actual loader/validator exposed missing hooks envelope. Preserve original tag/assets, publicly note issue, complete reviewed/tested0.11.1 corrective release and verify actual installed plugin without load errors. Original Council/desktop/MCP reconnect residuals remain separate.",
"integrated_legacy_gate": {
"source_checkpoint": "3fdc6bd065c577a9ed59566573fdce399e9b585a",
"adapter_blob": "1847357c19677f276b06886386e2ac93e586b203",
Expand Down Expand Up @@ -354,7 +354,104 @@
}
},
"reference_json_staged_unstaged_diff": "passed",
"next_public_ci": "pending"
"next_public_ci": "37088621735_completed_success_on8488ed44ee30c7fa5b2c20370827093715130d36"
},
"publication_candidate_ci": {
"head": "8488ed44ee30c7fa5b2c20370827093715130d36",
"run_id": 37088621735,
"url": "https://github.com/joshidikshant/devsquad/actions/runs/37088621735",
"status": "completed_success_all_four_jobs_accepted",
"duplicate_push_run": 37088621359,
"duplicate_push_status": "completed_cancelled",
"legacy": {
"status": "completed_success",
"job_id": 111103957387,
"assertions": 259,
"files": 11,
"focused_legacy_assertions": 50,
"timings_seconds": {"fast": 0.348, "ignored_TERM": 0.301, "pre_open_cancel": 0.257, "TERM_resistant": 3.389, "slow_ps": 1.429}
},
"optional_mcp": {
"status": "completed_success",
"job_id": 111103957249,
"tests": 23,
"seconds": 4.656,
"skips": 1,
"failures": 0,
"errors": 0
},
"python311": {
"version": "3.11.9",
"status": "completed_success",
"job_id": 111103957440,
"tests": 604,
"seconds": 804.964,
"monotonic_seconds": 805.4974165420003,
"utc_seconds": 805.497415,
"skips": 2,
"failures": 0,
"errors": 0,
"unraisable": []
},
"python314": {
"version": "3.14.7",
"status": "completed_success",
"job_id": 111103957414,
"tests": 604,
"seconds": 1110.004,
"monotonic_seconds": 1110.538552125,
"utc_seconds": 1110.538559,
"skips": 2,
"failures": 0,
"errors": 0,
"unraisable": []
},
"required": ["Legacy Bash 3.2", "Core Python 3.11", "Core Python 3.14", "Optional MCP 2.2.0"],
"core_tree": "62eea7fa31153ef732fd5e9dfd97951d95b367d8",
"plugin_tree": "940e792825cca45d82135bc1caf738924b1d176c",
"later_local_docs_checkpoints": "Recovery metadata only; merge/tag target is the exact accepted8488ed4 and identical-tree merge"
},
"publication_merge": {
"commit": "e7ec4ce9f889dc5fa083fe4289b5bfc3d424edfa",
"merged_at": "2026-10-03T02:27:18Z",
"tree": "bc76f192e3bcc7ce4528a040d7e58740278fbb32",
"equals_tested_candidate_tree": true,
"core_and_plugin_trees_unchanged": true,
"duplicate_main_push_run": 37089867565,
"duplicate_main_push_disposition": "completed_cancelled_after_exact_merge_tree_equality; not a passing gate"
},
"published_release": {
"id": 402283042,
"url": "https://github.com/joshidikshant/devsquad/releases/tag/v0.11.0",
"tag": "v0.11.0",
"tag_commit": "e7ec4ce9f889dc5fa083fe4289b5bfc3d424edfa",
"published_at": "2026-10-03T02:29:54Z",
"is_draft": false,
"is_prerelease": false,
"all_downloaded_checksums_verified": true,
"archive_commit_headers_match_tag": true,
"assets": [
{"name": "devsquad-0.11.0-source.tar.gz", "bytes": 2728324, "sha256": "1f09c0d9e4d1e112b3895749344e41a40e25a97a527e1143c78d2eea92ffdf96"},
{"name": "devsquad-plugin-0.11.0.tar.gz", "bytes": 307117, "sha256": "47d758d6896c97c5d21c54cc123e2c971d061d3029ac95d688d97e92c0dd724a"},
{"name": "devsquad_core-0.1.0-py3-none-any.whl", "bytes": 272189, "sha256": "611086b51604f29b7964e05affbcd70ffa481299b04f645cd9ac2315b2c8bf77"},
{"name": "SHA256SUMS", "bytes": 295, "sha256": "182a184f75fdca8486246a5e62558fa017d36ccb7bb6e04b4a458298ca8f45fc"}
],
"private_asset_proof_sha256": "5c8e501f6a0b973bc170dbbf796d03710d1eb0fcfc0e91ceb35fa5e671a4d319",
"bounded_privacy": "No credential/raw-log/cache/database files or recognizable credentials; historical path references retained as filenames only",
"wheel": "Reused only after exact core tree/file equality; all11schemas/17migrations match, digest303a0e0a6c87"
},
"local_plugin_update": {
"scope": "user; only devsquad@devsquad-marketplace",
"updater_exit": 0,
"installed_version": "0.11.0",
"enabled": true,
"load_error": "Hook load failed: hooks expected record received undefined",
"actual_installed_validator_exit": 1,
"root_cause": "hooks/hooks.json event map missing required outer hooks object",
"standalone_core_affected": false,
"corrective_version": "0.11.1",
"corrected_source_validator": "passed",
"no_successful_plugin_load_claim": true
},
"diagnostic_cleanup_overlap_triage": {
"source": "independent read-only code/output triage; no new probes",
Expand Down
Loading
Loading