diff --git a/implementation_plan.md b/implementation_plan.md index 3f68cbf4..d5571cbf 100644 --- a/implementation_plan.md +++ b/implementation_plan.md @@ -472,6 +472,129 @@ CLEVERAGENTS_TEST_MODE=true --- +## Schedule Adhereance + +### 2026-02-12 (Day 2 since kickoff on 2026-02-11) +- Milestone calendar (relative): Day 7/M1 = 2026-02-18, Day 10/M2 = 2026-02-21, Day 14/M3 = 2026-02-25, Day 21/M4 = 2026-03-04, Day 25/M5 = 2026-03-08, Day 30/M6 = 2026-03-13, Day 35/M7 = 2026-03-18. +- Current baseline vs spec: action model still states CLI-only (not YAML), PlanLifecycleService is in-memory, `plan` CLI still contains legacy tell/build/apply paths, and legacy DB models (`projects`, `plans`, `changes`) remain; these are blockers for M1 persistence + CLI alignment. +- Schedule variance: A2b/A4b/A5 + B1/B2/C0 are still open on Day 2, leaving ~5 days to M1; we are ~2-3 days behind the critical path unless persistence + resources + tool registry start in parallel today. +- Variance snapshot (Day 2): Week 1 now explicitly allocates Rui for test scaffolds alongside Jeff/Luis/Hamza; this increases parallel test throughput but does not change the critical path for A2b/A4b/A5/B1. +- Sequencing confirmation (Day 2-6): A2b.alpha + A2b.beta -> A4b.alpha -> A4b.beta -> A5.alpha -> A5.beta/A5.gamma -> A5.legacy; B1.core + C0.domain run in parallel; B1/C0 DB migrations must rebase after A5.alpha head; A4b.alpha can scaffold in parallel but only merges after A2b.alpha/beta/gamma. +- Day 2-6 allocation (compressed): Day 2 Jeff starts A2b.alpha + A5.alpha + A4b.alpha scaffolding; Hamza starts B1.core + built-in types; Luis starts A5.beta; Aditya starts C1.schema/examples; Rui starts A2b/A4b/A5/B1 test scaffolds; Brent lands Q0-Minimum. Day 3-4: Jeff finishes A2b.alpha + A4b.alpha and advances A5.alpha; Hamza finishes B1.core and starts B2.persistence; Luis completes A5.beta and starts A5.gamma; Aditya continues C1; Rui grows suites. Day 5-6: Jeff closes A5.alpha + A4b.alpha polish, prepares A5.legacy; Luis completes A5.gamma DI; Hamza advances B2.service; Rui aligns A4b.beta tests and runs nox. +- Staffing assumptions confirmed (Day 8-14): Jeff leads C9 execute/apply, Hamza owns D1/D2 decisions, Luis owns E1 subplans, Aditya owns E2.actor, Rui handles test scaffolds, Brent runs QA gates. +- Risk: Alembic head contention between A5.alpha/B1/C0 increases rebase churn; mitigation is to rebase before merge and keep a single linear Alembic head. +- Risk: A4b CLI alignment may drift from A2b domain updates; mitigation is to lock CLI outputs and keep A4b.beta tests tied to exact fields. +- Risk: Coverage/nox gates can stall merges as suites grow; mitigation is daily nox runs and early flaky-test isolation. +- Risk: Resource/tool registry schema drift can block project/skill wiring; mitigation is to finalize YAML schemas before persistence wiring. +- Risk: Large-project performance (M6) may slip if context indexing or decomposition is slow; mitigation is to run ASV benchmarks by Day 22 and enforce file/token thresholds. +- Micro-schedule (Days 1-40, block-level): + +**Days 1-7** +| Day/Block | Jeff | Luis | Hamza | Aditya | Rui | Brent | Gate | +| --- | --- | --- | --- | --- | --- | --- | --- | +| Day 1 AM | A5.alpha migration draft | A5.beta ORM plan | B1.core models prep | C1 schema prep | A5 test scaffolds | Q0-Minimum hooks | A5.alpha draft | +| Day 1 PM | A5.alpha finalize | A5.beta ORM models | B1.core models | C1 schema start | A5 migration tests | Q0-Minimum CI | A5.alpha commit 1 | +| Day 2 AM | A2b.alpha core fields + A5.alpha-1 draft | A5.beta mapping plan | B1.core resource_type model | C1.schema start | A2b/A4b test scaffolds | Q0-Minimum hooks | A2b.alpha draft ready | +| Day 2 PM | A4b.alpha scaffolding + A5.alpha-1 finalize | A5.beta ORM models | B1.core built-in types | C1.examples start | A5 migration tests | Q0-Minimum CI | B1.core commit ready | +| Day 3 AM | A5.alpha-2/3 migrations | A5.gamma repo | B2.persistence draft | C1.schema finalize | A4b tests | Q0-Minimum coverage | A5.alpha commits 1-2 | +| Day 3 PM | A2b.alpha finalize + A4b.alpha main | A5.gamma service | B2.persistence finalize | C1.examples finalize | Robot smoke scaffolds | nox gates | A2b.alpha commit | +| Day 4 AM | A4b.alpha finalize | A5.gamma DI wiring | B2.service start | C2.loader prep | A4b.beta tests | Q0-Minimum signoff | A4b.alpha commit | +| Day 4 PM | A5.alpha-4 finalize | A5.gamma tests | B2.service | C2.loader start | A5 tests | nox gates | A5.alpha complete | +| Day 5 AM | A5.legacy prep + C0.domain start | A5.gamma finalize | B3.cli prep | C2.loader | A4b.beta finalize | QA review | A5.gamma commit | +| Day 5 PM | A5.legacy commit | A5.gamma DI polish | B3.cli start | C2.loader | Run nox | QA review | A5.legacy ready | +| Day 6 AM | C0.domain finalize | A5.gamma DI merge | B3.cli | C2.loader | A4b.beta robot | QA signoff | C0.domain commit | +| Day 6 PM | Merge/rebase window | Fixes | B3.cli tests | C2.compiler handoff | Full nox | QA signoff | M1 delta clear | +| Day 7 AM | C5.diff prep | C6.pipeline prep | B3.cli tests | C2.compiler handoff | C5/C6 test scaffolds | QA check | M1 delta close | +| Day 7 PM | M1 buffer + polish | M1 buffer + polish | M1 buffer + polish | C2.compiler handoff | Full nox | QA signoff | M1 verified | + +**Days 8-14** +| Day/Block | Jeff | Luis | Hamza | Aditya | Rui | Brent | Gate | +| --- | --- | --- | --- | --- | --- | --- | --- | +| Day 8 AM | C9.execute wiring | C9.execute support | Prep D1 fixtures | C8.providers configs | C8/C9 test scaffolds | QA check | Execute phase draft | +| Day 8 PM | C9.execute finalize | C9.apply prep | D1.domain prep | C8.providers finalize | C9 execute tests | QA check | C8 + C9.execute ready | +| Day 9 AM | C9.apply implementation | C9.apply implementation | D1.domain start | Support C8 docs | C9.apply tests | QA check | Apply flow draft | +| Day 9 PM | C9.apply finalize | Apply review | D1.domain continue | Provider actor polish | Apply robot + nox | QA signoff | Apply flow ready | +| Day 10 AM | D1 review | D1 support | D1.domain model | Support D1 fixtures | D1 test scaffolds | QA check | Decision model draft | +| Day 10 PM | D1 review | D1 support | D1 tests + docs + nox | D1 examples polish | D1 Robot/ASV | QA signoff | D1 commit | +| Day 11 AM | D2 review | D2 support | D2.service record | D2 fixtures | D2 test scaffolds | QA check | Decision recording draft | +| Day 11 PM | D2 review | D2 support | D2 tests + nox | D2 examples | D2 Robot/ASV | QA signoff | D2 commit | +| Day 12 AM | E1 review | E1.domain model | E1 fixtures | E2.actor prep | E1 test scaffolds | QA check | E1 draft | +| Day 12 PM | E1 review | E1 tests + docs + nox | E1 fixtures | E2.actor prep | E1 Robot/ASV | QA signoff | E1 commit | +| Day 13 AM | E2.service | E2.service support | E2 fixtures | E2.actor tool | E2 test scaffolds | QA check | E2 draft | +| Day 13 PM | E2.service tests + nox | E2 support | E2 fixtures | E2.actor tests + nox | E2 Robot/ASV | QA signoff | E2 commit | +| Day 14 AM | Integration triage | Integration support | Integration support | Integration support | Full Robot + Behave | QA signoff | M3 test pass | +| Day 14 PM | Release candidate | Release candidate | Release candidate | Release candidate | Full nox | QA signoff | M3 verified | + +**Days 15-21** +| Day/Block | Jeff | Luis | Hamza | Aditya | Rui | Brent | Gate | +| --- | --- | --- | --- | --- | --- | --- | --- | +| Day 15 AM | D5 review | D5 support | D5.db migration | Prep D5 fixtures | D5 test scaffolds | QA check | D5.db draft | +| Day 15 PM | D5 review | D5 support | D5.repo implementation | D5 docs polish | D5 Robot/ASV | QA signoff | D5.db/repo commit | +| Day 16 AM | D3.cli review | D3.cli support | D3.cli implementation | D3 fixtures | D3 test scaffolds | QA check | D3.cli draft | +| Day 16 PM | D3.cli review | D3.cli support | D3.cli tests + nox | D3 examples | D3 Robot/ASV | QA signoff | D3.cli commit | +| Day 17 AM | D4.revert implementation | D4 support | D4 fixtures | D4 docs polish | D4 test scaffolds | QA check | D4.revert draft | +| Day 17 PM | D4.revert tests + nox | D4 support | D4 fixtures | D4 examples | D4 Robot/ASV | QA signoff | D4.revert commit | +| Day 18 AM | D4.append implementation | D5.di support | D5.di wiring | D4/D5 fixtures | D4 append tests | QA check | D4.append draft | +| Day 18 PM | D4.append tests + nox | D5.di support | D5.di tests + nox | D5 docs polish | D5 Robot/ASV | QA signoff | D4.append + D5.di commits | +| Day 19 AM | E3.exec review | E3.exec implementation | E3 fixtures | E3 docs polish | E3 test scaffolds | QA check | E3.exec draft | +| Day 19 PM | E3.exec tests + nox | E3.exec support | E3 fixtures | E3 examples | E3 Robot/ASV | QA signoff | E3.exec commit | +| Day 20 AM | E4.merge implementation | E4.merge support | E4 fixtures | E4 docs polish | E4 test scaffolds | QA check | E4.merge draft | +| Day 20 PM | E4.merge tests + nox | E4.merge support | E4 fixtures | E4 examples | E4 Robot/ASV | QA signoff | E4.merge commit | +| Day 21 AM | Integration triage | Integration support | Integration support | Integration support | Full Robot + Behave | QA signoff | M4 test pass | +| Day 21 PM | Release candidate | Release candidate | Release candidate | Release candidate | Full nox | QA signoff | M4 verified | + +**Days 22-30** +| Day/Block | Jeff | Luis | Hamza | Aditya | Rui | Brent | Gate | +| --- | --- | --- | --- | --- | --- | --- | --- | +| Day 22 AM | G1 review | G3.semantic prep | CTX1.index implementation | CTX1 fixtures | CTX1 test scaffolds | QA check | CTX1 draft | +| Day 22 PM | G1 review | G3.semantic prep | CTX1 tests + nox | CTX1 docs polish | CTX1 Robot/ASV | QA signoff | CTX1 commit | +| Day 23 AM | G1 review | G3.semantic implementation | CTX1 index tune | CTX1 fixtures | G3 test scaffolds | QA check | G3 draft | +| Day 23 PM | G1 review | G3 tests + nox | CTX1 finalize | CTX1 docs | G3 Robot/ASV | QA signoff | G3 commit | +| Day 24 AM | G1 review | G2.checkpoint prep | G4.context implementation | G4 fixtures | G4 test scaffolds | QA check | G4 draft | +| Day 24 PM | G1 review | G2.checkpoint prep | G4 tests + nox | G4 docs polish | G4 Robot/ASV | QA signoff | G4 commit | +| Day 25 AM | G1 review | G2.checkpoint implementation | G4 context tune | G4 fixtures | G2 test scaffolds | QA check | G2 draft | +| Day 25 PM | G1 review | G2 tests + nox | G4 finalize | G4 docs | G2 Robot/ASV | QA signoff | G2 commit | +| Day 26 AM | G1.decompose implementation | G3.semantic tuning | G5.estimate prep | G5 fixtures | G1 test scaffolds | QA check | G1 draft | +| Day 26 PM | G1.decompose tests + nox | G3.semantic support | G5.estimate prep | G5 docs polish | G1 Robot/ASV | QA signoff | G1 commit | +| Day 27 AM | G1 performance | G3.semantic performance | G5.estimate implementation | G5 fixtures | G5 test scaffolds | QA check | G5 draft | +| Day 27 PM | G1 performance | G3.semantic support | G5 tests + nox | G5 docs | G5 Robot/ASV | QA signoff | G5 commit | +| Day 28 AM | F0.stubs review | F0.stubs implementation | Integration support | F0 fixtures | F0 test scaffolds | QA check | F0 draft | +| Day 28 PM | F0.stubs review | F0 tests + nox | Integration support | F0 docs polish | F0 Robot/ASV | QA signoff | F0 commit | +| Day 29 AM | M6 perf triage | Perf tuning | Perf tuning | Perf fixtures | Perf tests | QA check | Perf draft | +| Day 29 PM | M6 perf triage | Perf tuning | Perf tuning | Perf docs | Full Robot/ASV | QA signoff | Perf ready | +| Day 30 AM | Integration triage | Integration support | Integration support | Integration support | Full Robot + Behave | QA signoff | M6 test pass | +| Day 30 PM | Release candidate | Release candidate | Release candidate | Release candidate | Full nox | QA signoff | M6 verified | + +**Days 31-35** +| Day/Block | Jeff | Luis | Hamza | Aditya | Rui | Brent | Gate | +| --- | --- | --- | --- | --- | --- | --- | --- | +| Day 31 AM | F1 review | F1.client implementation | F4.remote prep | F1 fixtures | F1 test scaffolds | QA check | F1 draft | +| Day 31 PM | F1 review | F1 tests + nox | F4.remote prep | F1 docs polish | F1 Robot/ASV | QA signoff | F1 commit | +| Day 32 AM | F1 review | F1.client finalize | F4.remote prep | F1 fixtures | F1 test scaffolds | QA check | F1 finalize | +| Day 32 PM | F2 sync review | F2.sync implementation | F4.remote prep | F2 fixtures | F2 Robot/ASV | QA signoff | F2 draft | +| Day 33 AM | F2 sync review | F2 tests + nox | F4.remote implementation | F2 docs polish | F2 test scaffolds | QA check | F2 commit | +| Day 33 PM | F3.ws review | F3.ws implementation | F4.remote implementation | F3 fixtures | F3 Robot/ASV | QA signoff | F3 draft | +| Day 34 AM | F3.ws review | F3 tests + nox | F4.remote tests + nox | F3 docs polish | F3 test scaffolds | QA check | F3 commit | +| Day 34 PM | F4.remote review | F4.remote tests + nox | F4.remote finalize | F4 docs polish | F4 Robot/ASV | QA signoff | F4 commit | +| Day 35 AM | Integration triage | Integration support | Integration support | Integration support | Full Robot + Behave | QA signoff | M7 test pass | +| Day 35 PM | Release candidate | Release candidate | Release candidate | Release candidate | Full nox | QA signoff | M7 verified | + +**Days 36-40** +| Day/Block | Jeff | Luis | Hamza | Aditya | Rui | Brent | Gate | +| --- | --- | --- | --- | --- | --- | --- | --- | +| Day 36 AM | A6.core/A6.service review | A6.service implementation | A6.cli support | A6 examples | A6 test scaffolds | QA check | A6 draft | +| Day 36 PM | A6.core/A6.service tests + nox | A6.service support | A6.cli tests + nox | A6 docs polish | A6 Robot/ASV | QA signoff | A6 commit | +| Day 37 AM | G5.estimate review | G5.estimate support | G5.estimate implementation | G5 fixtures | G5 test scaffolds | QA check | G5 draft | +| Day 37 PM | G5.estimate tests + nox | G5.estimate support | G5.estimate tests + nox | G5 docs polish | G5 Robot/ASV | QA signoff | G5 commit | +| Day 38 AM | G2.checkpoint review | G2.checkpoint implementation | G2 fixtures | G2 docs polish | G2 test scaffolds | QA check | G2 draft | +| Day 38 PM | G2.checkpoint tests + nox | G2.checkpoint support | G2 fixtures | G2 docs | G2 Robot/ASV | QA signoff | G2 commit | +| Day 39 AM | G1.decompose tuning | G3.semantic tuning | Perf fixtures | Perf docs | Perf tests | QA check | Perf draft | +| Day 39 PM | G1.decompose tests + nox | G3.semantic tests + nox | Perf fixtures | Perf docs | Perf Robot/ASV | QA signoff | Perf ready | +| Day 40 AM | Integration triage | Integration support | Integration support | Integration support | Full Robot + Behave | QA signoff | M8 test pass | +| Day 40 PM | Release candidate | Release candidate | Release candidate | Release candidate | Full nox | QA signoff | M8 verified | +- Parallelism focus: Jeff to drive A2b/A4b/A5.legacy + C0.domain; Luis to start A5.beta/A5.gamma; Hamza to start B1.core + B2.persistence; Aditya to start C1 schema/examples; Rui to start test scaffolding for A2b/A4b/A5/B1; Brent to land Q0-Minimum gates. +- Individual status: Jeff (critical path unblocker, heavy load), Luis (persistence architecture), Hamza (resource registry + project model), Aditya (actor YAML/configs), Rui (Behave/Robot/ASV scaffolding), Brent (nox/coverage/CI gates), Mike/Brian (idle/standby). + ## Implementation Checklist This comprehensive checklist tracks all implementation tasks for the CleverAgents project. Each phase item includes mandatory **Code**, **Document**, and **Tests** bullets. Only mark the parent complete when every sub-bullet (including any spawned `Fix – …` remediation tasks) is checked. @@ -480,6 +603,8 @@ This comprehensive checklist tracks all implementation tasks for the CleverAgent Execute all required tests through the appropriate `nox` sessions—never call `behave`, `robot`, or other runners directly. After touching **any** subtask, immediately add discoveries to the Notes section and update task descriptions. +**Commit Ownership Rule**: Each **COMMIT** item has exactly one owner. Every subtask (Code/Docs/Tests/Quality/Commit) must list that same owner in brackets. If a subtask truly requires a different owner, split it into a separate **COMMIT** item under the appropriate parallel group. + ### Updated Team Assignments (by Expertise) | Developer | Strengths | Assignment Focus | Availability | @@ -911,10 +1036,11 @@ MERGE POINT: Day 30 - M6 Large Project Autonomy Target - [ ] Code [Brent]: Add/confirm `nox -s lint` session that runs Ruff + pyright using project settings; ensure session exits non-zero on warnings. - [ ] Code [Brent]: Add/confirm `nox -s format` session for Ruff formatting and align it with pre-commit `ruff format` behavior. - [ ] Docs [Brent]: Update `CONTRIBUTING.md` with pre-commit install + run steps (no helper scripts). - - [ ] Tests (Behave) [Rui]: Add scenarios in `features/quality_automation.feature` that parse `.pre-commit-config.yaml`, assert required hooks are present, and verify pinned versions. - - [ ] Tests (Robot) [Rui]: Add `robot/quality_automation.robot` that runs `nox -s lint` and asserts zero failures. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/precommit_config_bench.py` to benchmark config parsing and hook list extraction. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] Tests (Behave) [Brent]: Add scenarios in `features/quality_automation.feature` that parse `.pre-commit-config.yaml`, assert required hooks are present, and verify pinned versions. + - [ ] Tests (Robot) [Brent]: Add `robot/quality_automation.robot` that runs `nox -s lint` and asserts zero failures. + - [ ] Tests (ASV) [Brent]: Add `asv/benchmarks/precommit_config_bench.py` to benchmark config parsing and hook list extraction. + - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Brent]: `git commit -m "feat(qa): add pre-commit baseline hooks"`. - [ ] **COMMIT (Owner: Brent | Group: Q0-Minimum) - Commit message: "feat(ci): add nox-based PR validation workflow"** (Only check after all subitems + `nox` pass + coverage >=97%, then commit) @@ -922,20 +1048,22 @@ MERGE POINT: Day 30 - M6 Large Project Autonomy Target - [ ] Code [Brent]: Ensure CI uses Python 3.13, caches pip/Hatch artifacts, and uploads `nox` logs on failure. - [ ] Code [Brent]: Fail pipeline if any `nox` session fails or coverage <97% (explicit coverage gate). - [ ] Docs [Brent]: Add CI usage notes in `docs/development/ci-cd.md`, including local repro commands and cache notes. - - [ ] Tests (Behave) [Rui]: Add a scenario that validates the workflow file exists and references required `nox` sessions. - - [ ] Tests (Robot) [Rui]: Add a Robot smoke test that runs the same `nox` session matrix locally and asserts zero failures. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/ci_yaml_parse_bench.py` to benchmark workflow parsing and key lookup. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] Tests (Behave) [Brent]: Add a scenario that validates the workflow file exists and references required `nox` sessions. + - [ ] Tests (Robot) [Brent]: Add a Robot smoke test that runs the same `nox` session matrix locally and asserts zero failures. + - [ ] Tests (ASV) [Brent]: Add `asv/benchmarks/ci_yaml_parse_bench.py` to benchmark workflow parsing and key lookup. + - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Brent]: `git commit -m "feat(ci): add nox-based PR validation workflow"`. - [ ] **COMMIT (Owner: Brent | Group: Q0-Minimum) - Commit message: "feat(qa): enforce coverage >=97%"** (Only check after all subitems + `nox` pass + coverage >=97%, then commit) - [ ] Code [Brent]: Update `nox -s coverage_report` (or equivalent session) to fail when coverage <97% and emit a clear error message. - [ ] Code [Brent]: Wire coverage threshold enforcement into CI summary output (explicit failure line for parsing). - [ ] Docs [Brent]: Update `docs/development/testing.md` with new coverage requirement and sample output. - - [ ] Tests (Behave) [Rui]: Add a scenario that parses coverage config and asserts threshold >=97%. - - [ ] Tests (Robot) [Rui]: Add a Robot test that runs `nox -s coverage_report` and asserts pass/fail behavior. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/coverage_report_bench.py` for coverage report runtime baseline. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] Tests (Behave) [Brent]: Add a scenario that parses coverage config and asserts threshold >=97%. + - [ ] Tests (Robot) [Brent]: Add a Robot test that runs `nox -s coverage_report` and asserts pass/fail behavior. + - [ ] Tests (ASV) [Brent]: Add `asv/benchmarks/coverage_report_bench.py` for coverage report runtime baseline. + - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Brent]: `git commit -m "feat(qa): enforce coverage >=97%"`. **Parallel Group Q0-Advanced Gates [Brent - AFTER M1]** @@ -945,29 +1073,32 @@ MERGE POINT: Day 30 - M6 Large Project Autonomy Target - [ ] Code [Brent]: Add pre-commit hooks for Bandit + Semgrep with minimal safe ruleset and explicit exclude patterns. - [ ] Code [Brent]: Add `nox -s security` session that runs Bandit + Semgrep with config files. - [ ] Docs [Brent]: Document security scan expectations in `docs/development/quality-automation.md`. - - [ ] Tests (Behave) [Rui]: Add scenario verifying Bandit/Semgrep hooks are declared in `.pre-commit-config.yaml`. - - [ ] Tests (Robot) [Rui]: Add Robot test that runs `nox -s security` (create session if missing). - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/security_scan_bench.py` to baseline scan runtime. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] Tests (Behave) [Brent]: Add scenario verifying Bandit/Semgrep hooks are declared in `.pre-commit-config.yaml`. + - [ ] Tests (Robot) [Brent]: Add Robot test that runs `nox -s security` (create session if missing). + - [ ] Tests (ASV) [Brent]: Add `asv/benchmarks/security_scan_bench.py` to baseline scan runtime. + - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Brent]: `git commit -m "feat(qa): add security scanning hooks"`. - [ ] **COMMIT (Owner: Brent | Group: Q0-Advanced) - Commit message: "feat(qa): add complexity monitoring"** (After M1) - [ ] Code [Brent]: Add `radon>=6.0.1` and a `nox -s complexity` session with threshold <=10. - [ ] Code [Brent]: Add complexity check to CI matrix (non-blocking until M3) and print summary. - [ ] Docs [Brent]: Document complexity thresholds and exceptions policy. - - [ ] Tests (Behave) [Rui]: Add scenario that asserts radon configuration exists. - - [ ] Tests (Robot) [Rui]: Add Robot test that runs `nox -s complexity` on a fixture module. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/complexity_scan_bench.py` for radon runtime baseline. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] Tests (Behave) [Brent]: Add scenario that asserts radon configuration exists. + - [ ] Tests (Robot) [Brent]: Add Robot test that runs `nox -s complexity` on a fixture module. + - [ ] Tests (ASV) [Brent]: Add `asv/benchmarks/complexity_scan_bench.py` for radon runtime baseline. + - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Brent]: `git commit -m "feat(qa): add complexity monitoring"`. - [ ] **COMMIT (Owner: Brent | Group: Q0-Advanced) - Commit message: "docs(qa): add quality automation guide"** (After M1) - [ ] Docs [Brent]: Create `docs/development/quality-automation.md` with hook lists, CI steps, and troubleshooting. - [ ] Docs [Brent]: Link the guide from `README.md` and `CONTRIBUTING.md`. - - [ ] Tests (Behave) [Rui]: Add scenario verifying the guide exists and is linked. - - [ ] Tests (Robot) [Rui]: Add Robot doc build smoke test via `nox -s docs`. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/docs_build_bench.py` for docs build runtime baseline. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] Tests (Behave) [Brent]: Add scenario verifying the guide exists and is linked. + - [ ] Tests (Robot) [Brent]: Add Robot doc build smoke test via `nox -s docs`. + - [ ] Tests (ASV) [Brent]: Add `asv/benchmarks/docs_build_bench.py` for docs build runtime baseline. + - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Brent]: `git commit -m "docs(qa): add quality automation guide"`. --- @@ -1057,31 +1188,39 @@ MERGE POINT: Day 30 - M6 Large Project Autonomy Target - [ ] Code [Jeff]: Add `automation_profile` field (namespaced name string) to `Action` and validate `/` format + `local/` default handling. - [ ] Code [Jeff]: Add `invariant_actor` (optional actor ref) and `invariants` list (action-scoped) with trimming, de-duplication, and empty-string rejection. - [ ] Code [Jeff]: Add `definition_of_done_template` to preserve the pre-rendered DoD string before arg substitution; keep `definition_of_done` as rendered output. + - [ ] Code [Jeff]: Default `definition_of_done_template` to the original `definition_of_done` when omitted, and ensure Pydantic round-trip (model_dump/model_validate) preserves both fields. + - [ ] Code [Jeff]: Add `Action.render_definition_of_done()` that renders the template using validated args and raises explicit errors on missing keys. - [ ] Code [Jeff]: Extend `ActionArgument` validation to enforce `min_value <= max_value`, regex only for string args, and default value type checks; reject defaults that violate regex. - [ ] Code [Jeff]: Add `ActionArgument.coerce_value()` helper that converts CLI/YAML strings into typed values (int/float/bool/list) with clear errors. + - [ ] Code [Jeff]: Add `ActionArgument.from_mapping()` to parse YAML argument dicts (name/type/required/description/default/min/max/regex) and normalize them into ActionArgument instances. - [ ] Code [Jeff]: Add `Action.to_template_context()` (or equivalent) to generate deterministic arg context for templating and preserve ordering for tests. + - [ ] Code [Jeff]: Add `Action.from_config()` to build an Action from YAML config + CLI overrides with stable argument ordering for deterministic tests. + - [ ] Code [Jeff]: Update `ActionArgument.__str__()` to surface default/min/max/regex when emitting diagnostics or CLI output. - [ ] Code [Jeff]: Update `Action.validate_arguments()` to use default values when optional args are omitted and to include regex/min/max checks in error output. - [ ] Code [Jeff]: Update `PlanLifecycleService.create_action()` to accept invariants, invariant_actor, automation_profile, and definition_of_done_template and pass them into the domain model. - [ ] Docs [Jeff]: Update or create `docs/reference/action_model.md` with new fields, YAML-first guidance, and invariants/automation profile semantics. - - [ ] Tests (Behave) [Rui]: Add scenarios in `features/action_model.feature` for invariants validation, automation profile parsing, definition_of_done_template retention, and default value coercion. - - [ ] Tests (Robot) [Rui]: Add Robot scenario that loads action YAML and asserts invariants/automation profile fields are surfaced in CLI output (wired in A4b). - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/action_model_bench.py` to benchmark action argument parsing + template rendering. - - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). - - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Tests (Behave) [Jeff]: Add scenarios in `features/action_model.feature` for invariants validation, automation profile parsing, definition_of_done_template retention, and default value coercion. + - [ ] Tests (Robot) [Jeff]: Add Robot scenario that loads action YAML and asserts invariants/automation profile fields are surfaced in CLI output (wired in A4b). + - [ ] Tests (ASV) [Jeff]: Add `asv/benchmarks/action_model_bench.py` to benchmark action argument parsing + template rendering. + - [ ] Quality [Jeff]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Jeff]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Jeff]: `git commit -m "feat(domain): align action metadata with invariants and automation profiles"`. - [ ] **COMMIT (Owner: Luis | Group: A2b.beta) - Commit message: "feat(domain): align plan metadata with action linkage and automation profiles"** (COMMIT TASK: only check after every subtask below is complete, `nox` and coverage succeed, and the commit is created) - [ ] Code [Luis]: Add `action_name` (namespaced name string) and `action_id` (ULID string) to `Plan` for traceability to the originating action. + - [ ] Code [Luis]: Replace `project_ids` with `project_names` (namespaced names) and introduce `ProjectLink` structure (name, alias, read_only) to preserve link metadata per plan. + - [ ] Code [Luis]: Add validators to enforce namespaced project names, unique aliases, and stable ordering for CLI display. - [ ] Code [Luis]: Add `automation_profile`, `invariant_actor`, and `invariants` fields to `Plan` with explicit source tags (action/project/plan/global) and ordering rules. - [ ] Code [Luis]: Add `arguments` map (validated JSON-serializable values) and `definition_of_done_template` capture to the plan model for later re-rendering. - [ ] Code [Luis]: Add execution metadata placeholders: `changeset_id`, `sandbox_refs`, `validation_summary`, and `decision_root_id` (optional until later stages). - [ ] Code [Luis]: Add `Plan.validate_immutable_fields()` to enforce automation profile immutability after `plan use` and when phase progresses beyond Strategize. - - [ ] Code [Luis]: Update `PlanLifecycleService.use_action()` to populate action linkage, arguments, invariants, and automation profile on the Plan. + - [ ] Code [Luis]: Update `PlanLifecycleService.use_action()` to populate action linkage, arguments, invariants, automation profile, and project link metadata on the Plan. + - [ ] Code [Luis]: Update `_print_lifecycle_plan` in `src/cleveragents/cli/commands/plan.py` to render project names/aliases instead of raw IDs. - [ ] Docs [Luis]: Update `docs/reference/plan_model.md` to document new fields, immutability rules, and action linkage. - - [ ] Tests (Behave) [Rui]: Add scenarios in `features/plan_model.feature` for automation profile lock, invariant persistence, action linkage fields, and argument serialization. - - [ ] Tests (Robot) [Rui]: Add Robot scenario to inspect `plan status` output for action linkage and automation profile fields (once CLI aligned). - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/plan_model_bench.py` for plan validation and serialization. - - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). - - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Tests (Behave) [Luis]: Add scenarios in `features/plan_model.feature` for automation profile lock, invariant persistence, action linkage fields, and argument serialization. + - [ ] Tests (Robot) [Luis]: Add Robot scenario to inspect `plan status` output for action linkage and automation profile fields (once CLI aligned). + - [ ] Tests (ASV) [Luis]: Add `asv/benchmarks/plan_model_bench.py` for plan validation and serialization. + - [ ] Quality [Luis]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Luis]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Luis]: `git commit -m "feat(domain): align plan metadata with action linkage and automation profiles"`. - [ ] **COMMIT (Owner: Aditya | Group: A2b.gamma) - Commit message: "docs(action): add action YAML schema and examples"** (COMMIT TASK: only check after every subtask below is complete, `nox` and coverage succeed, and the commit is created) - [ ] Docs [Aditya]: Author `docs/schema/action.schema.yaml` with versioning, required fields, and explicit type constraints for actors, invariants, arguments, and automation profiles. @@ -1089,11 +1228,11 @@ MERGE POINT: Day 30 - M6 Large Project Autonomy Target - [ ] Code [Aditya]: Add schema validation helper in `src/cleveragents/action/schema.py` that loads YAML, validates schema version, and returns typed data. - [ ] Code [Aditya]: Add clear error messages for missing required fields, invalid namespaced names, and invalid argument type combos. - [ ] Code [Aditya]: Add unit helper to normalize YAML keys (snake_case vs camelCase) before validation. - - [ ] Tests (Behave) [Rui]: Add scenarios that load each example YAML and assert schema validation passes; add invalid schema cases (missing actor, invalid namespaced name, bad arg types). - - [ ] Tests (Robot) [Rui]: Add a Robot smoke test that reads example YAML files and reports parse success/failure. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/action_schema_bench.py` for YAML schema validation throughput. - - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). - - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Tests (Behave) [Aditya]: Add scenarios that load each example YAML and assert schema validation passes; add invalid schema cases (missing actor, invalid namespaced name, bad arg types). + - [ ] Tests (Robot) [Aditya]: Add a Robot smoke test that reads example YAML files and reports parse success/failure. + - [ ] Tests (ASV) [Aditya]: Add `asv/benchmarks/action_schema_bench.py` for YAML schema validation throughput. + - [ ] Quality [Aditya]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Aditya]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Aditya]: `git commit -m "docs(action): add action YAML schema and examples"`. - [X] **Stage A3: Plan State Machine** (Day 1-2) - COMPLETED 2026-02-05 @@ -1125,38 +1264,45 @@ MERGE POINT: Day 30 - M6 Large Project Autonomy Target **Parallel Group A4b: Action/Plan CLI Spec Alignment + Tests (M1-critical)** **PARALLEL SUBTRACK A4b.alpha [Jeff]**: CLI feature alignment **PARALLEL SUBTRACK A4b.beta [Rui]**: Behave + Robot coverage + **SEQUENTIAL MERGE NOTE**: A4b.alpha depends on A2b.alpha + A2b.beta + A2b.gamma; A4b.beta runs after A4b.alpha to lock CLI output fields and error messages. - [ ] **COMMIT (Owner: Jeff | Group: A4b.alpha) - Commit message: "feat(cli): support action create from YAML config"** (COMMIT TASK: only check after every subtask below is complete, `nox` and coverage succeed, and the commit is created) - [ ] Code [Jeff]: Add `--config/-c` to `agents action create`; load YAML via `src/cleveragents/action/schema.py` and fail fast on schema violations. + - [ ] Code [Jeff]: Resolve `--config` paths relative to CWD and emit explicit errors for missing/unreadable files (include path in error). - [ ] Code [Jeff]: Implement override precedence (CLI flags override YAML fields; explicit CLI empty string clears YAML value; CLI omits leave YAML as-is). + - [ ] Code [Jeff]: Validate CLI name vs YAML `name` when both provided; error on mismatch and require YAML `name` when CLI omits it. + - [ ] Code [Jeff]: Use `Action.from_config()` to merge YAML + CLI and preserve deterministic argument ordering for tests. - [ ] Code [Jeff]: Normalize namespaced names, actor refs, and argument definitions from YAML into `ActionArgument` objects; surface errors with field path. - [ ] Code [Jeff]: Add `--update` guard (if action exists) or explicit error per spec; ensure idempotent update path is clear. + - [ ] Code [Jeff]: When `--update` is used, preserve `action_id` and `created_at`, update `updated_at`, and surface action state in output. - [ ] Code [Jeff]: Update `_print_action` output in `src/cleveragents/cli/commands/action.py` to show invariants, invariant_actor, and automation_profile. - [ ] Docs [Jeff]: Update CLI reference with YAML-based action creation + override examples and failure messages. - - [ ] Tests (Behave) [Rui]: Add scenarios in `features/action_cli.feature` covering valid config, overrides, invalid schema, missing required fields, and update conflict. - - [ ] Tests (Robot) [Rui]: Add `robot/action_cli_from_config.robot` with end-to-end CLI flow and output assertions (includes invariants/profile display). - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/action_cli_config_bench.py` for config parsing + normalization. - - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). - - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Tests (Behave) [Jeff]: Add scenarios in `features/action_cli.feature` covering valid config, overrides, invalid schema, missing required fields, and update conflict. + - [ ] Tests (Robot) [Jeff]: Add `robot/action_cli_from_config.robot` with end-to-end CLI flow and output assertions (includes invariants/profile display). + - [ ] Tests (ASV) [Jeff]: Add `asv/benchmarks/action_cli_config_bench.py` for config parsing + normalization. + - [ ] Quality [Jeff]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Jeff]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Jeff]: `git commit -m "feat(cli): support action create from YAML config"`. - [ ] **COMMIT (Owner: Jeff | Group: A4b.alpha) - Commit message: "feat(cli): extend plan use with invariants and automation profile"** (COMMIT TASK: only check after every subtask below is complete, `nox` and coverage succeed, and the commit is created) - [ ] Code [Jeff]: Change `agents plan use` signature to accept positional `` arguments per spec and keep `--project` as a legacy alias only until A5.legacy removal. - [ ] Code [Jeff]: Add `--automation-profile`, `--invariant`, and `--invariant-actor` flags to `agents plan use` and plumb into PlanLifecycleService. + - [ ] Code [Jeff]: Resolve positional project names via ProjectService; error on missing projects and preserve positional ordering. + - [ ] Code [Jeff]: Parse `--arg name=value` using `ActionArgument.coerce_value()` (not heuristic int/float guessing) and reject unknown args early. - [ ] Code [Jeff]: Resolve action name -> action_id, validate automation profile existence via AutomationProfileService, and attach plan-scoped invariants. - [ ] Code [Jeff]: Persist resolved invariants + profile in Plan metadata for later Strategize/Execute steps; include invariant source tags. - [ ] Docs [Jeff]: Update `docs/reference/plan_cli.md` with examples for profile + invariants, positional project usage, and error cases. - - [ ] Tests (Behave) [Rui]: Add scenarios in `features/plan_lifecycle_cli.feature` covering profile selection, invariant validation, positional project args, and multiple projects. - - [ ] Tests (Robot) [Rui]: Add Robot tests for plan use with invariants and automation profiles (positive + negative cases). - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/plan_use_cli_bench.py` for argument parsing and validation. - - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). - - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Tests (Behave) [Jeff]: Add scenarios in `features/plan_lifecycle_cli.feature` covering profile selection, invariant validation, positional project args, and multiple projects. + - [ ] Tests (Robot) [Jeff]: Add Robot tests for plan use with invariants and automation profiles (positive + negative cases). + - [ ] Tests (ASV) [Jeff]: Add `asv/benchmarks/plan_use_cli_bench.py` for argument parsing and validation. + - [ ] Quality [Jeff]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Jeff]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Jeff]: `git commit -m "feat(cli): extend plan use with invariants and automation profile"`. - [ ] **COMMIT (Owner: Rui | Group: A4b.beta) - Commit message: "test(cli): add plan lifecycle Behave and Robot coverage"** (COMMIT TASK: only check after every subtask below is complete, `nox` and coverage succeed, and the commit is created) - [ ] Tests (Behave) [Rui]: Add full coverage for `plan execute`, `plan apply`, `plan status`, `plan list`, `plan cancel` (success + error paths, invalid phase, missing plan, multiple plans ready). - [ ] Tests (Robot) [Rui]: Add `robot/plan_lifecycle_cli.robot` covering end-to-end lifecycle transitions with real DB persistence. - [ ] Docs [Rui]: Update `docs/development/testing.md` with new CLI suites and command mappings. - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/plan_cli_smoke_bench.py` for CLI argument parsing overhead. - - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). - - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Quality [Rui]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Rui]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Rui]: `git commit -m "test(cli): add plan lifecycle Behave and Robot coverage"`. **Parallel Group A5: Plan Persistence (M1-critical)** @@ -1165,92 +1311,122 @@ MERGE POINT: Day 30 - M6 Large Project Autonomy Target **SEQUENTIAL AFTER alpha+beta [Jeff + Luis]**: Repositories + service integration **PARALLEL CONTINUOUS [Rui]**: Persistence tests added inside each commit **SEQUENTIAL NOTE**: `action_arguments` migration must land after `actions` migration; A5.legacy should land after A4b CLI alignment + A5.gamma persistence wiring. + **SEQUENTIAL NOTE**: A5.alpha migrations must match A2b fields; rebase Alembic head after A2b merges before cutting follow-on revisions. - [ ] **COMMIT (Owner: Jeff | Group: A5.alpha) - Commit message: "feat(db): add actions and action_invariants tables"** (COMMIT TASK: only check after every subtask below is complete, `nox` and coverage succeed, and the commit is created) - - [ ] Code [Jeff]: Add Alembic migration for `actions` table with ULID PK, namespaced_name, actor refs (strategy/execution/review/apply/estimation), DoD fields, automation_profile, invariant_actor, reusable/read_only flags, tags_json, created_by, timestamps. - - [ ] Code [Jeff]: Add `action_invariants` table with FK to actions, `scope` column, `invariant_text`, and created_at timestamp. - - [ ] Code [Jeff]: Add unique index on actions.namespaced_name and search index on namespace for list filtering. + - [ ] Code [Jeff]: Add Alembic migration skeleton with explicit down_revision dependency and naming conventions for indexes/constraints. + - [ ] Code [Jeff]: Create `actions` table with ULID PK, `namespaced_name`, `namespace`, `name`, and explicit actor refs (strategy/execution/review/apply/estimation). + - [ ] Code [Jeff]: Add `action_state` enum column (draft/available/archived) with default draft and validation-friendly values. + - [ ] Code [Jeff]: Add description columns (`short_description`, `long_description`) and DoD columns (`definition_of_done`, `definition_of_done_template`). + - [ ] Code [Jeff]: Add behavioral columns (`automation_profile`, `invariant_actor`, `reusable`, `read_only`) and metadata (`tags_json`, `created_by`, timestamps). + - [ ] Code [Jeff]: Add `action_invariants` table with FK to actions, `scope` column, `invariant_text`, optional `position`, and created_at timestamp. + - [ ] Code [Jeff]: Add unique index on `actions.namespaced_name`, index on `actions.namespace`, and index on `actions.action_state` for list filters. - [ ] Code [Jeff]: Ensure downgrade path drops indexes and tables in reverse order. - [ ] Docs [Jeff]: Update `docs/reference/database_schema.md` with column-level details and constraints. - - [ ] Tests (Behave) [Rui]: Add migration scenario that runs upgrade and asserts tables + indexes exist. - - [ ] Tests (Robot) [Rui]: Add Robot migration smoke test using `nox -s db_migrate` (create session if missing). - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/db_migration_actions_bench.py` for migration runtime baseline. - - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). - - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Tests (Behave) [Jeff]: Add migration scenario that runs upgrade and asserts tables + indexes exist. + - [ ] Tests (Robot) [Jeff]: Add Robot migration smoke test using `nox -s db_migrate` (create session if missing). + - [ ] Tests (ASV) [Jeff]: Add `asv/benchmarks/db_migration_actions_bench.py` for migration runtime baseline. + - [ ] Quality [Jeff]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Jeff]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Jeff]: `git commit -m "feat(db): add actions and action_invariants tables"`. - [ ] **COMMIT (Owner: Jeff | Group: A5.alpha) - Commit message: "feat(db): add action_arguments table"** (COMMIT TASK: only check after every subtask below is complete, `nox` and coverage succeed, and the commit is created) - - [ ] Code [Jeff]: Add Alembic migration for `action_arguments` table (action_id FK, name, type, requirement, description, default_value_json, min_value, max_value, validation_pattern). - - [ ] Code [Jeff]: Add uniqueness constraint on (action_id, name) and index on action_id. + - [ ] Code [Jeff]: Add Alembic migration for `action_arguments` table with ULID-less FK to actions and ordered `position` for deterministic argument ordering. + - [ ] Code [Jeff]: Add columns for `name`, `arg_type`, `requirement`, `description`, `default_value_json`, `min_value`, `max_value`, `validation_pattern`. + - [ ] Code [Jeff]: Add check constraints for numeric min/max ordering and non-empty argument names. + - [ ] Code [Jeff]: Add uniqueness constraint on (action_id, name) and index on (action_id, position). - [ ] Docs [Jeff]: Update `docs/reference/database_schema.md` with action_arguments columns and constraints. - - [ ] Tests (Behave) [Rui]: Add migration scenario verifying action_arguments table and constraints. - - [ ] Tests (Robot) [Rui]: Add Robot migration smoke test that inserts a row and queries it. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/db_migration_action_args_bench.py` for migration baseline. - - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). - - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Tests (Behave) [Jeff]: Add migration scenario verifying action_arguments table and constraints. + - [ ] Tests (Robot) [Jeff]: Add Robot migration smoke test that inserts a row and queries it. + - [ ] Tests (ASV) [Jeff]: Add `asv/benchmarks/db_migration_action_args_bench.py` for migration baseline. + - [ ] Quality [Jeff]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Jeff]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Jeff]: `git commit -m "feat(db): add action_arguments table"`. - [ ] **COMMIT (Owner: Jeff | Group: A5.alpha) - Commit message: "feat(db): add lifecycle_plans and plan_projects tables"** (COMMIT TASK: only check after every subtask below is complete, `nox` and coverage succeed, and the commit is created) - - [ ] Code [Jeff]: Add Alembic migration for `lifecycle_plans` with ULID PK, phase/state enums, action linkage (action_id + action_name), automation_profile, invariant_actor, definition_of_done_template, and timestamps. - - [ ] Code [Jeff]: Add `plan_projects` table with plan_id, project_name (namespaced), read_only flag, and alias. - - [ ] Code [Jeff]: Add indexes on plan phase/state for filtering and plan_projects.project_name for lookups. + - [ ] Code [Jeff]: Add Alembic migration for `lifecycle_plans` with ULID PK and identity fields (parent_plan_id, root_plan_id, attempt). + - [ ] Code [Jeff]: Add core plan columns: `namespaced_name`, `namespace`, `description`, `definition_of_done`, `definition_of_done_template`. + - [ ] Code [Jeff]: Add lifecycle columns: `phase` enum, `processing_state` enum, `action_state` enum (nullable after Action), and timestamps for each phase. + - [ ] Code [Jeff]: Add action linkage columns (`action_id`, `action_name`) and actor refs (strategy/execution/review/apply/estimation). + - [ ] Code [Jeff]: Add policy/metadata columns (`automation_profile`, `invariant_actor`, `read_only`, `reusable`, `created_by`, `tags_json`). + - [ ] Code [Jeff]: Add execution placeholders (`changeset_id`, `sandbox_refs_json`, `validation_summary_json`, `decision_root_id`, `error_message`, `error_details_json`). + - [ ] Code [Jeff]: Add `plan_projects` table with plan_id, project_name (namespaced), alias, read_only flag, and created_at. + - [ ] Code [Jeff]: Add uniqueness constraint on (plan_id, project_name) and index on (project_name) for lookups. + - [ ] Code [Jeff]: Add indexes on `phase`, `processing_state`, and `namespace` for list filtering. - [ ] Docs [Jeff]: Update schema docs with plan/project link rules and uniqueness constraints. - - [ ] Tests (Behave) [Rui]: Add migration scenario verifying plan/project link table + indexes. - - [ ] Tests (Robot) [Rui]: Add Robot test that inserts a plan/project link row and queries it. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/db_migration_plans_bench.py` for migration runtime baseline. - - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). - - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Tests (Behave) [Jeff]: Add migration scenario verifying plan/project link table + indexes. + - [ ] Tests (Robot) [Jeff]: Add Robot test that inserts a plan/project link row and queries it. + - [ ] Tests (ASV) [Jeff]: Add `asv/benchmarks/db_migration_plans_bench.py` for migration runtime baseline. + - [ ] Quality [Jeff]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Jeff]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Jeff]: `git commit -m "feat(db): add lifecycle_plans and plan_projects tables"`. - [ ] **COMMIT (Owner: Jeff | Group: A5.alpha) - Commit message: "feat(db): add plan arguments and plan invariants tables"** (COMMIT TASK: only check after every subtask below is complete, `nox` and coverage succeed, and the commit is created) - - [ ] Code [Jeff]: Add `plan_arguments` table (plan_id, name, value_json, value_type) and `plan_invariants` table (plan_id, invariant_text, source_scope). + - [ ] Code [Jeff]: Add `plan_arguments` table with plan_id, name, value_json, value_type, and `position` for stable ordering. + - [ ] Code [Jeff]: Add `plan_invariants` table with plan_id, invariant_text, source_scope, optional `position`, and created_at. - [ ] Code [Jeff]: Add uniqueness constraint on (plan_id, name) for arguments and (plan_id, invariant_text) for invariants. + - [ ] Code [Jeff]: Add index on (plan_id, position) for fast ordered retrieval. - [ ] Docs [Jeff]: Document argument storage, JSON serialization rules, and invariant source scopes. - - [ ] Tests (Behave) [Rui]: Add migration scenario verifying both tables and constraints. - - [ ] Tests (Robot) [Rui]: Add Robot test that inserts a plan invariant and asserts retrieval. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/db_migration_plan_args_bench.py` for migration runtime baseline. - - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). - - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Tests (Behave) [Jeff]: Add migration scenario verifying both tables and constraints. + - [ ] Tests (Robot) [Jeff]: Add Robot test that inserts a plan invariant and asserts retrieval. + - [ ] Tests (ASV) [Jeff]: Add `asv/benchmarks/db_migration_plan_args_bench.py` for migration runtime baseline. + - [ ] Quality [Jeff]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Jeff]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Jeff]: `git commit -m "feat(db): add plan arguments and plan invariants tables"`. - [ ] **COMMIT (Owner: Luis | Group: A5.beta) - Commit message: "feat(models): add action and lifecycle plan ORM models"** (COMMIT TASK: only check after every subtask below is complete, `nox` and coverage succeed, and the commit is created) - - [ ] Code [Luis]: Add SQLAlchemy models for Action, ActionInvariant, ActionArgument, LifecyclePlan, PlanProjectLink, PlanArgument, PlanInvariant. - - [ ] Code [Luis]: Implement `to_domain()` and `from_domain()` mappings with ULID validation, enum conversion, and timestamp normalization. - - [ ] Code [Luis]: Add repository-facing helpers for filtering by namespace/phase/state and eager-load action arguments. + - [ ] Code [Luis]: Add SQLAlchemy base model mixins for ULID PKs, timestamps, and JSON columns (reused by action/plan models). + - [ ] Code [Luis]: Implement `ActionModel` with columns for namespaced_name, namespace, actor refs, DoD fields, automation_profile, invariant_actor, state, tags_json, created_by. + - [ ] Code [Luis]: Implement `ActionInvariantModel` with FK to actions, scope, invariant_text, position, and created_at. + - [ ] Code [Luis]: Implement `ActionArgumentModel` with FK to actions, name, arg_type, requirement, defaults/min/max/regex, position, and constraints. + - [ ] Code [Luis]: Implement `LifecyclePlanModel` with identity fields, phase/state/processing enums, action linkage, DoD fields, policy metadata, and execution placeholders. + - [ ] Code [Luis]: Implement `PlanProjectLinkModel` with plan_id, project_name, alias, read_only, and created_at, plus uniqueness constraint. + - [ ] Code [Luis]: Implement `PlanArgumentModel` and `PlanInvariantModel` with ordered `position` fields and constraints. + - [ ] Code [Luis]: Define ORM relationships with ordering (`order_by=position`) and cascade rules for argument/invariant collections. + - [ ] Code [Luis]: Implement `to_domain()` and `from_domain()` mappers for each model with ULID validation, enum conversion, and timestamp normalization. + - [ ] Code [Luis]: Add repository-facing helpers for filtering by namespace/phase/state and eager-load action arguments + plan links. - [ ] Docs [Luis]: Update ORM mapping notes in `docs/reference/database_schema.md` with model field mapping table. - - [ ] Tests (Behave) [Rui]: Add scenarios for ORM round-trip serialization and enum conversions. - - [ ] Tests (Robot) [Rui]: Add Robot test that loads a plan and asserts field mapping correctness. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/orm_mapping_bench.py` for Action/Plan mapping throughput. - - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). - - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Tests (Behave) [Luis]: Add scenarios for ORM round-trip serialization, enum conversions, and ordered argument persistence. + - [ ] Tests (Robot) [Luis]: Add Robot test that loads a plan and asserts field mapping correctness. + - [ ] Tests (ASV) [Luis]: Add `asv/benchmarks/orm_mapping_bench.py` for Action/Plan mapping throughput. + - [ ] Quality [Luis]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Luis]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Luis]: `git commit -m "feat(models): add action and lifecycle plan ORM models"`. - [ ] **COMMIT (Owner: Jeff | Group: A5.gamma) - Commit message: "feat(repo): add action and lifecycle plan repositories"** (COMMIT TASK: only check after every subtask below is complete, `nox` and coverage succeed, and the commit is created) - - [ ] Code [Jeff]: Implement ActionRepository CRUD + list filters by namespace/state/automation profile; include ActionArgument persistence. - - [ ] Code [Jeff]: Implement PlanRepository CRUD + list filters by phase/state/project; add plan lookup by namespaced name. + - [ ] Code [Jeff]: Define repository interfaces in `src/cleveragents/domain/repositories/` for ActionRepository and PlanRepository (methods + expected errors). + - [ ] Code [Jeff]: Implement ActionRepository CRUD with deterministic ordering (created_at) and filters (namespace, state, automation_profile). + - [ ] Code [Jeff]: Implement ActionRepository persistence for arguments + invariants with ordered `position` preservation. + - [ ] Code [Jeff]: Implement PlanRepository CRUD with filters (phase/state/project_name/action_name) and lookup by namespaced_name. + - [ ] Code [Jeff]: Implement PlanRepository persistence for plan_projects, plan_arguments, plan_invariants with ordered retrieval. - [ ] Code [Jeff]: Add retry decorator to repositories; retry only on `OperationalError`, never on `IntegrityError`. + - [ ] Code [Jeff]: Add pagination parameters (`limit`, `offset`) with default ordering for list queries. - [ ] Docs [Jeff]: Document repository interfaces, error types, and pagination guidance. - - [ ] Tests (Behave) [Rui]: Add scenarios for repository create/get/list/update/delete guardrails, including action argument round-trips. - - [ ] Tests (Robot) [Rui]: Add Robot test that exercises repository through service layer. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/repository_query_bench.py` for list + filter performance. - - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). - - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Tests (Behave) [Jeff]: Add scenarios for repository create/get/list/update/delete guardrails, including action argument round-trips. + - [ ] Tests (Robot) [Jeff]: Add Robot test that exercises repository through service layer. + - [ ] Tests (ASV) [Jeff]: Add `asv/benchmarks/repository_query_bench.py` for list + filter performance. + - [ ] Quality [Jeff]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Jeff]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Jeff]: `git commit -m "feat(repo): add action and lifecycle plan repositories"`. - [ ] **COMMIT (Owner: Luis | Group: A5.gamma) - Commit message: "feat(service): persist plan lifecycle via repositories"** (COMMIT TASK: only check after every subtask below is complete, `nox` and coverage succeed, and the commit is created) - [ ] Code [Luis]: Update `PlanLifecycleService` to use repositories instead of in-memory dicts. - - [ ] Code [Luis]: Ensure plan creation persists arguments, invariants, automation profile, action linkage, and project links in a single transaction. - - [ ] Code [Luis]: Add transactional safeguards for multi-step updates (create action + plan, correction updates) and roll back on errors. + - [ ] Code [Luis]: Replace in-memory action/plan maps with repository lookups in `get_action`, `get_plan`, and list helpers. + - [ ] Code [Luis]: Persist action creation with arguments/invariants and enforce namespaced_name uniqueness. + - [ ] Code [Luis]: Persist plan creation with project link metadata (alias/read_only) and store plan_arguments/plan_invariants in same transaction. + - [ ] Code [Luis]: Wrap transitions in UnitOfWork transactions and map DB errors to domain errors (duplicate names, missing action). + - [ ] Code [Luis]: Add optimistic guards for phase transitions (validate phase/state before update; reload on conflict). - [ ] Docs [Luis]: Update service docs to reflect persistence and remove in-memory notes. - - [ ] Tests (Behave) [Rui]: Add scenarios for persisted lifecycle transitions and error handling (duplicate names, invalid transitions). - - [ ] Tests (Robot) [Rui]: Add end-to-end test that restarts the app and re-reads plan state. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/plan_lifecycle_service_bench.py` for persistence operations. - - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). - - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Tests (Behave) [Luis]: Add scenarios for persisted lifecycle transitions and error handling (duplicate names, invalid transitions). + - [ ] Tests (Robot) [Luis]: Add end-to-end test that restarts the app and re-reads plan state. + - [ ] Tests (ASV) [Luis]: Add `asv/benchmarks/plan_lifecycle_service_bench.py` for persistence operations. + - [ ] Quality [Luis]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Luis]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Luis]: `git commit -m "feat(service): persist plan lifecycle via repositories"`. - [ ] **COMMIT (Owner: Luis | Group: A5.gamma) - Commit message: "feat(di): wire lifecycle repos and services"** (COMMIT TASK: only check after every subtask below is complete, `nox` and coverage succeed, and the commit is created) - [ ] Code [Luis]: Register ActionRepository + PlanRepository in `application/container.py` and UnitOfWork. - - [ ] Code [Luis]: Inject repositories into PlanLifecycleService and CLI commands; remove direct service instantiation in CLI. - - [ ] Code [Luis]: Add container wiring tests to ensure singleton lifetimes are correct. + - [ ] Code [Luis]: Register PlanLifecycleService with repository dependencies and settings in container. + - [ ] Code [Luis]: Inject lifecycle service into CLI commands; remove direct service instantiation in `action.py` and `plan.py`. + - [ ] Code [Luis]: Add container wiring tests to ensure singleton lifetimes are correct and repositories share UoW session. - [ ] Docs [Luis]: Update DI wiring notes in `docs/architecture/decisions/adr-003.md`. - - [ ] Tests (Behave) [Rui]: Add scenarios that use container wiring for lifecycle commands. - - [ ] Tests (Robot) [Rui]: Add Robot smoke test verifying CLI uses persisted service. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/di_container_bench.py` for container resolution overhead. - - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). - - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Tests (Behave) [Luis]: Add scenarios that use container wiring for lifecycle commands. + - [ ] Tests (Robot) [Luis]: Add Robot smoke test verifying CLI uses persisted service. + - [ ] Tests (ASV) [Luis]: Add `asv/benchmarks/di_container_bench.py` for container resolution overhead. + - [ ] Quality [Luis]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Luis]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Luis]: `git commit -m "feat(di): wire lifecycle repos and services"`. - [ ] **COMMIT (Owner: Rui | Group: A5.tests) - Commit message: "test(persistence): add plan/action persistence suites"** (COMMIT TASK: only check after every subtask below is complete, `nox` and coverage succeed, and the commit is created) @@ -1259,8 +1435,8 @@ MERGE POINT: Day 30 - M6 Large Project Autonomy Target - [ ] Tests (Robot) [Rui]: Add plan persistence E2E (full lifecycle, restart persistence, concurrent CLI access). - [ ] Docs [Rui]: Update `docs/development/testing.md` with persistence suites and `nox` commands. - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/persistence_suites_bench.py` for DB read/write baselines. - - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). - - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Quality [Rui]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Rui]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Rui]: `git commit -m "test(persistence): add plan/action persistence suites"`. **Parallel Group A5.legacy: Remove legacy plan build/apply path (M1-critical)** @@ -1271,11 +1447,11 @@ MERGE POINT: Day 30 - M6 Large Project Autonomy Target - [ ] Code [Jeff]: Rename `plan lifecycle-apply` to `plan apply` and update command wiring once legacy apply is removed. - [ ] Code [Jeff]: Remove or archive legacy `PlanModel`/`PlanStatus` DB tables if unused by v3; document migration path. - [ ] Docs [Jeff]: Update CLI docs to list only v3 lifecycle commands and new `plan use/execute/apply` flows. - - [ ] Tests (Behave) [Rui]: Remove/replace legacy scenarios with v3 equivalents and adjust coverage expectations. - - [ ] Tests (Robot) [Rui]: Remove legacy robot suites and add v3 replacements where needed. - - [ ] Tests (ASV) [Rui]: Update asv suite to remove legacy plan benchmarks and add v3 lifecycle baseline benchmark. - - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). - - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Tests (Behave) [Jeff]: Remove/replace legacy scenarios with v3 equivalents and adjust coverage expectations. + - [ ] Tests (Robot) [Jeff]: Remove legacy robot suites and add v3 replacements where needed. + - [ ] Tests (ASV) [Jeff]: Update asv suite to remove legacy plan benchmarks and add v3 lifecycle baseline benchmark. + - [ ] Quality [Jeff]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Jeff]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Jeff]: `git commit -m "refactor(plan): remove legacy plan service and CLI"`. **Parallel Group A6: Automation Profiles Foundation [Jeff + Luis]** (M1-critical; depends on A5 persistence) @@ -1288,22 +1464,22 @@ MERGE POINT: Day 30 - M6 Large Project Autonomy Target - [ ] Code [Jeff]: Add built-in profiles (`manual`, `review`, `supervised`, `full-auto`, etc.) per spec with constant definitions and stable IDs. - [ ] Code [Jeff]: Add YAML schema for automation profiles under `docs/schema/automation_profile.schema.yaml` and loader helper. - [ ] Docs [Jeff]: Add `docs/reference/automation_profiles.md` describing built-ins and threshold semantics. - - [ ] Tests (Behave) [Rui]: Add scenarios for profile validation and built-in defaults. - - [ ] Tests (Robot) [Rui]: Add Robot test that loads each built-in profile and prints summary. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/automation_profile_bench.py` for profile validation. - - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). - - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Tests (Behave) [Jeff]: Add scenarios for profile validation and built-in defaults. + - [ ] Tests (Robot) [Jeff]: Add Robot test that loads each built-in profile and prints summary. + - [ ] Tests (ASV) [Jeff]: Add `asv/benchmarks/automation_profile_bench.py` for profile validation. + - [ ] Quality [Jeff]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Jeff]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Jeff]: `git commit -m "feat(domain): add automation profile model and built-ins"`. - [ ] **COMMIT (Owner: Luis | Group: A6.service) - Commit message: "feat(service): resolve automation profiles with precedence"** (COMMIT TASK: only check after every subtask below is complete, `nox` and coverage succeed, and the commit is created) - [ ] Code [Luis]: Add `AutomationProfileService` to resolve profiles with precedence (plan > action > project > global). - [ ] Code [Luis]: Add persistence table `automation_profiles` (namespaced name PK) and repository with list/show/update. - [ ] Code [Luis]: Add config key `core.automation_profile` and env var override for global default. - [ ] Docs [Luis]: Update `docs/reference/config.md` with automation profile defaults and override behavior. - - [ ] Tests (Behave) [Rui]: Add scenarios for precedence resolution and missing profile errors. - - [ ] Tests (Robot) [Rui]: Add Robot config smoke test for global profile override. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/automation_profile_resolution_bench.py` for resolution latency. - - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). - - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Tests (Behave) [Luis]: Add scenarios for precedence resolution and missing profile errors. + - [ ] Tests (Robot) [Luis]: Add Robot config smoke test for global profile override. + - [ ] Tests (ASV) [Luis]: Add `asv/benchmarks/automation_profile_resolution_bench.py` for resolution latency. + - [ ] Quality [Luis]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Luis]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Luis]: `git commit -m "feat(service): resolve automation profiles with precedence"`. - [ ] **COMMIT (Owner: Rui | Group: A6.cli) - Commit message: "feat(cli): add automation-profile commands"** (COMMIT TASK: only check after every subtask below is complete, `nox` and coverage succeed, and the commit is created) - [ ] Code [Rui]: Implement `agents automation-profile add/remove/list/show` commands with YAML config input. @@ -1312,8 +1488,8 @@ MERGE POINT: Day 30 - M6 Large Project Autonomy Target - [ ] Tests (Behave) [Rui]: Add CLI scenarios for profile add/list/show/remove. - [ ] Tests (Robot) [Rui]: Add Robot CLI tests for automation-profile commands. - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/automation_profile_cli_bench.py` for CLI parsing. - - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). - - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Quality [Rui]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Rui]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Rui]: `git commit -m "feat(cli): add automation-profile commands"`. **M1 SUCCESS CRITERIA (Day 7 MVP - source code only)**: @@ -1331,6 +1507,7 @@ MERGE POINT: Day 30 - M6 Large Project Autonomy Target **Week 1-2 focus**: local source code only (git-checkout + fs-directory). Database, API, and remote resources are schema-only stubs for future work. **Parallel Group B1: Resource Registry Core [Hamza + Jeff]** (can start after A5.alpha migrations are available) + **SEQUENTIAL NOTE**: B1 domain models can start immediately; B1 DB migrations must rebase on the latest Alembic head after A5.alpha to keep a linear migration chain. - [ ] **COMMIT (Owner: Hamza | Group: B1.core) - Commit message: "feat(domain): add resource type spec and resource model"** (Only check after all subitems + `nox` pass + coverage >=97%, then commit) - [ ] Code [Hamza]: Create `src/cleveragents/domain/models/core/resource_type.py` with `ResourceTypeSpec`, `ResourceTypeArgument`, `ResourceKind` (physical/virtual), and `SandboxStrategy` enum. - [ ] Code [Hamza]: Add resource type fields: `user_addable`, `allowed_parents`, `allowed_children`, `auto_discover`, `handler` reference, and `sandbox_strategy` default. @@ -1339,91 +1516,106 @@ MERGE POINT: Day 30 - M6 Large Project Autonomy Target - [ ] Code [Hamza]: Add `docs/schema/resource_type.schema.yaml` with CLI argument definitions, parent/child constraints, and handler metadata. - [ ] Code [Hamza]: Add resource type YAML loader in `src/cleveragents/resource/schema.py` with version guard and clear error messages. - [ ] Docs [Hamza]: Add `docs/reference/resource_model.md` with examples for git-checkout and fs-directory resources plus physical/virtual notes. - - [ ] Tests (Behave) [Rui]: Add scenarios validating ULID format, namespace rules, allowed parent/child type checks, and sandbox strategy defaults. - - [ ] Tests (Robot) [Rui]: Add Robot test that loads a ResourceTypeSpec YAML fixture and validates it. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/resource_model_bench.py` for resource validation + DAG checks. - - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). - - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Tests (Behave) [Hamza]: Add scenarios validating ULID format, namespace rules, allowed parent/child type checks, and sandbox strategy defaults. + - [ ] Tests (Robot) [Hamza]: Add Robot test that loads a ResourceTypeSpec YAML fixture and validates it. + - [ ] Tests (ASV) [Hamza]: Add `asv/benchmarks/resource_model_bench.py` for resource validation + DAG checks. + - [ ] Quality [Hamza]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Hamza]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Hamza]: `git commit -m "feat(domain): add resource type spec and resource model"`. +- [ ] **COMMIT (Owner: Hamza | Group: B1.core) - Commit message: "feat(resource): add built-in resource type configs"** (Only check after all subitems + `nox` pass + coverage >=97%, then commit) + - [ ] Code [Hamza]: Add built-in resource type YAML configs under `resources/types/` (git-checkout, fs-directory, fs-file) with sandbox strategy defaults and CLI argument specs. + - [ ] Code [Hamza]: Add bootstrap registration in `ResourceRegistryService` (register built-ins on startup if missing; idempotent). + - [ ] Code [Hamza]: Add mapping table from built-in type to handler/sandbox strategy and surface in `resource type list` output. + - [ ] Docs [Hamza]: Add `docs/reference/resource_types_builtin.md` with per-type flags and examples. + - [ ] Tests (Behave) [Hamza]: Add scenarios ensuring built-in types exist and register idempotently. + - [ ] Tests (Robot) [Hamza]: Add Robot test that lists resource types and asserts built-ins are present. + - [ ] Tests (ASV) [Hamza]: Add `asv/benchmarks/resource_type_bootstrap_bench.py` for registration overhead. + - [ ] Quality [Hamza]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Hamza]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Commit [Hamza]: `git commit -m "feat(resource): add built-in resource type configs"`. - [ ] **COMMIT (Owner: Hamza | Group: B1.core) - Commit message: "feat(domain): add project model v3 with linked resources"** (Only check after all subitems + `nox` pass + coverage >=97%, then commit) - [ ] Code [Hamza]: Add `Project`, `ProjectResourceLink`, `ProjectValidationSummary` (derived from validation attachments), and `ProjectContextPolicy` models using namespaced name as the unique identifier (no ULID per spec). - [ ] Code [Hamza]: Add fields for `invariants`, `invariant_actor`, `automation_profile`, and `context_views` (strategize/execute/apply/default). - [ ] Code [Hamza]: Add validation for resource link overrides (read_only flags, alias uniqueness, resource existence). - [ ] Code [Hamza]: Add helpers to compute effective invariants and automation profile (project defaults). - [ ] Docs [Hamza]: Add `docs/reference/project_model.md` describing resource linking, validation attachments, and context view policies. - - [ ] Tests (Behave) [Rui]: Add scenarios for project model validation, link overrides, and context view inheritance. - - [ ] Tests (Robot) [Rui]: Add Robot test that creates a Project object and prints serialized output. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/project_model_bench.py` for serialization/validation performance. - - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). - - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Tests (Behave) [Hamza]: Add scenarios for project model validation, link overrides, and context view inheritance. + - [ ] Tests (Robot) [Hamza]: Add Robot test that creates a Project object and prints serialized output. + - [ ] Tests (ASV) [Hamza]: Add `asv/benchmarks/project_model_bench.py` for serialization/validation performance. + - [ ] Quality [Hamza]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Hamza]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Hamza]: `git commit -m "feat(domain): add project model v3 with linked resources"`. - [ ] **COMMIT (Owner: Jeff | Group: B1.core) - Commit message: "feat(db): add resource registry tables"** (Only check after all subitems + `nox` pass + coverage >=97%, then commit) - - [ ] Code [Jeff]: Add Alembic migration for `resource_types`, `resources`, and `resource_edges` tables with indexes on type/name/namespace. - - [ ] Code [Jeff]: Store `resource_kind` (physical/virtual), `sandbox_strategy`, and optional `namespaced_name` in `resources`. - - [ ] Code [Jeff]: Add foreign keys and cascade rules for resource_edges (parent/child) with uniqueness constraint. + - [ ] Code [Jeff]: Add Alembic migration for `resource_types`, `resources`, and `resource_edges` tables with naming conventions. + - [ ] Code [Jeff]: Define `resource_types` columns: `name`, `namespace`, `description`, `resource_kind`, `sandbox_strategy`, `user_addable`, `handler_ref`, `args_schema_json`, `allowed_parent_types_json`, `allowed_child_types_json`, `auto_discover_json`, timestamps. + - [ ] Code [Jeff]: Define `resources` columns: ULID PK, `namespaced_name`, `namespace`, `type_name`, `resource_kind`, `location`, `description`, `read_only`, `metadata_json`, `sandbox_strategy`, timestamps. + - [ ] Code [Jeff]: Define `resource_edges` columns: `parent_id`, `child_id`, `created_at`, with uniqueness constraint and FK cascade rules. + - [ ] Code [Jeff]: Add indexes on `resources.namespaced_name`, `resources.namespace`, `resources.type_name`, and `resource_edges.parent_id/child_id`. - [ ] Docs [Jeff]: Update `docs/reference/database_schema.md` with resource registry tables and constraints. - - [ ] Tests (Behave) [Rui]: Add migration scenarios verifying tables, indices, and edge uniqueness. - - [ ] Tests (Robot) [Rui]: Add Robot migration smoke test using `nox -s db_migrate`. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/resource_registry_migration_bench.py` for migration baseline. - - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). - - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Tests (Behave) [Jeff]: Add migration scenarios verifying tables, indices, and edge uniqueness. + - [ ] Tests (Robot) [Jeff]: Add Robot migration smoke test using `nox -s db_migrate`. + - [ ] Tests (ASV) [Jeff]: Add `asv/benchmarks/resource_registry_migration_bench.py` for migration baseline. + - [ ] Quality [Jeff]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Jeff]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Jeff]: `git commit -m "feat(db): add resource registry tables"`. **Parallel Group B2: Project Persistence + Services [Hamza + Luis]** (depends on B1 domain models) - [ ] **COMMIT (Owner: Jeff | Group: B2.persistence) - Commit message: "feat(db): add projects and project links tables"** (Only check after all subitems + `nox` pass + coverage >=97%, then commit) - - [ ] Code [Jeff]: Add Alembic migration for `projects` and `project_resource_links` tables (no standalone project_validations table). - - [ ] Code [Jeff]: Store `automation_profile`, `invariant_actor`, `invariants_json`, and `context_policy_json` on `projects` table. - - [ ] Code [Jeff]: Use namespaced name as project primary key; enforce unique constraint on `projects.namespaced_name`. - - [ ] Code [Jeff]: Add indexes for `project_resource_links.project_name` and `resource_id` for fast joins. + - [ ] Code [Jeff]: Add Alembic migration skeleton with explicit down_revision to latest A5.alpha head. + - [ ] Code [Jeff]: Define `projects` table with namespaced_name PK, namespace, description, automation_profile, invariant_actor, invariants_json, context_policy_json, tags_json, created_by, timestamps. + - [ ] Code [Jeff]: Add `projects` constraints for non-empty names, namespace/name derivation consistency, and unique namespaced_name. + - [ ] Code [Jeff]: Define `project_resource_links` table with link_id ULID, project_name FK, resource_id FK, alias, read_only, created_at. + - [ ] Code [Jeff]: Add uniqueness constraint on (project_name, resource_id) and index on (project_name, alias) for fast lookups. + - [ ] Code [Jeff]: Add indexes on `project_resource_links.project_name` and `project_resource_links.resource_id` for joins. - [ ] Docs [Jeff]: Document project table schema and link semantics in `docs/reference/database_schema.md`. - - [ ] Tests (Behave) [Rui]: Add migration scenarios verifying project tables and constraints. - - [ ] Tests (Robot) [Rui]: Add Robot test that inserts a project and link row. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/project_migration_bench.py` for migration baseline. - - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). - - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Tests (Behave) [Jeff]: Add migration scenarios verifying project tables, FK constraints, and unique link enforcement. + - [ ] Tests (Robot) [Jeff]: Add Robot test that inserts a project and link row and validates alias uniqueness. + - [ ] Tests (ASV) [Jeff]: Add `asv/benchmarks/project_migration_bench.py` for migration baseline. + - [ ] Quality [Jeff]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Jeff]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Jeff]: `git commit -m "feat(db): add projects and project links tables"`. - [ ] **COMMIT (Owner: Hamza | Group: B2.persistence) - Commit message: "feat(repo): add resource repositories"** (Only check after all subitems + `nox` pass + coverage >=97%, then commit) - [ ] Code [Hamza]: Implement `ResourceTypeRepository` CRUD and `ResourceRepository` CRUD with DAG edge helpers. - [ ] Code [Hamza]: Add methods for tree traversal, child discovery queries, and name/ULID resolution. - [ ] Code [Hamza]: Add repository guardrails for preventing cycles and duplicate edges. - [ ] Docs [Hamza]: Document repository interfaces in `docs/reference/repositories.md`. - - [ ] Tests (Behave) [Rui]: Add repository scenarios for create/get/list/tree and cycle rejection. - - [ ] Tests (Robot) [Rui]: Add Robot test exercising tree output ordering. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/resource_repository_bench.py` for tree query performance. - - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). - - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Tests (Behave) [Hamza]: Add repository scenarios for create/get/list/tree and cycle rejection. + - [ ] Tests (Robot) [Hamza]: Add Robot test exercising tree output ordering. + - [ ] Tests (ASV) [Hamza]: Add `asv/benchmarks/resource_repository_bench.py` for tree query performance. + - [ ] Quality [Hamza]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Hamza]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Hamza]: `git commit -m "feat(repo): add resource repositories"`. - [ ] **COMMIT (Owner: Hamza | Group: B2.persistence) - Commit message: "feat(repo): add project repositories"** (Only check after all subitems + `nox` pass + coverage >=97%, then commit) - [ ] Code [Hamza]: Implement `ProjectRepository` and `ProjectResourceLinkRepository` with namespace filtering and name-based lookup. - [ ] Code [Hamza]: Add methods to list project context policies and derived validation attachment summaries for linked resources. - [ ] Docs [Hamza]: Update repository docs with project link examples and validation attachment notes. - - [ ] Tests (Behave) [Rui]: Add scenarios for project create/link/unlink and validation attachment summaries. - - [ ] Tests (Robot) [Rui]: Add Robot test that links two resources to one project. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/project_repository_bench.py` for link/unlink performance. - - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). - - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Tests (Behave) [Hamza]: Add scenarios for project create/link/unlink and validation attachment summaries. + - [ ] Tests (Robot) [Hamza]: Add Robot test that links two resources to one project. + - [ ] Tests (ASV) [Hamza]: Add `asv/benchmarks/project_repository_bench.py` for link/unlink performance. + - [ ] Quality [Hamza]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Hamza]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Hamza]: `git commit -m "feat(repo): add project repositories"`. - [ ] **COMMIT (Owner: Hamza | Group: B2.service) - Commit message: "feat(service): add resource registry service"** (Only check after all subitems + `nox` pass + coverage >=97%, then commit) - [ ] Code [Hamza]: Implement `ResourceRegistryService` for register/remove/show/tree operations with name/ULID resolution. - [ ] Code [Hamza]: Add auto-discovery hook that delegates to resource handlers (git-checkout for MVP). - [ ] Code [Hamza]: Add validation that resource type supports parent/child linkage before linking. - [ ] Docs [Hamza]: Add `docs/reference/resource_registry.md` describing API behavior and error cases. - - [ ] Tests (Behave) [Rui]: Add scenarios for register/remove/show/tree behavior and auto-discovery. - - [ ] Tests (Robot) [Rui]: Add Robot test that registers a git-checkout and inspects child count. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/resource_registry_service_bench.py` for register/show performance. - - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). - - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Tests (Behave) [Hamza]: Add scenarios for register/remove/show/tree behavior and auto-discovery. + - [ ] Tests (Robot) [Hamza]: Add Robot test that registers a git-checkout and inspects child count. + - [ ] Tests (ASV) [Hamza]: Add `asv/benchmarks/resource_registry_service_bench.py` for register/show performance. + - [ ] Quality [Hamza]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Hamza]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Hamza]: `git commit -m "feat(service): add resource registry service"`. - [ ] **COMMIT (Owner: Luis | Group: B2.service) - Commit message: "feat(service): add project service v3"** (Only check after all subitems + `nox` pass + coverage >=97%, then commit) - [ ] Code [Luis]: Implement `ProjectService` create/list/show/delete/link/unlink methods using repositories. - [ ] Code [Luis]: Add validation attachment helpers (read-only listing of validation attachments for linked resources) and context policy setters for project views. - [ ] Code [Luis]: Enforce read-only resource links and project-level invariant actor defaults. - [ ] Docs [Luis]: Update `docs/reference/project_service.md` with usage examples and error cases. - - [ ] Tests (Behave) [Rui]: Add scenarios for project create/link/unlink/context policy + validation attachment visibility. - - [ ] Tests (Robot) [Rui]: Add Robot test that creates project and links a resource. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/project_service_bench.py` for link/unlink performance. - - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). - - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Tests (Behave) [Luis]: Add scenarios for project create/link/unlink/context policy + validation attachment visibility. + - [ ] Tests (Robot) [Luis]: Add Robot test that creates project and links a resource. + - [ ] Tests (ASV) [Luis]: Add `asv/benchmarks/project_service_bench.py` for link/unlink performance. + - [ ] Quality [Luis]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Luis]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Luis]: `git commit -m "feat(service): add project service v3"`. **Parallel Group B3: CLI Commands [Rui]** (depends on B2 services) @@ -1435,8 +1627,8 @@ MERGE POINT: Day 30 - M6 Large Project Autonomy Target - [ ] Tests (Behave) [Rui]: Add scenarios for resource type lifecycle and invalid schema handling. - [ ] Tests (Robot) [Rui]: Add Robot suite `robot/resource_type_cli.robot`. - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/resource_type_cli_bench.py` for config parsing overhead. - - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). - - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Quality [Rui]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Rui]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Rui]: `git commit -m "feat(cli): add resource type commands"`. - [ ] **COMMIT (Owner: Rui | Group: B3.cli) - Commit message: "feat(cli): add resource commands"** (Only check after all subitems + `nox` pass + coverage >=97%, then commit) - [ ] Code [Rui]: Add `agents resource add/remove/list/show/tree` commands with type-specific flags and name/ULID resolution. @@ -1446,8 +1638,8 @@ MERGE POINT: Day 30 - M6 Large Project Autonomy Target - [ ] Tests (Behave) [Rui]: Add scenarios for resource registration, list filters, tree rendering, and link-child constraints. - [ ] Tests (Robot) [Rui]: Add Robot suite `robot/resource_cli.robot`. - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/resource_cli_bench.py` for command parsing and list output. - - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). - - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Quality [Rui]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Rui]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Rui]: `git commit -m "feat(cli): add resource commands"`. - [ ] **COMMIT (Owner: Rui | Group: B3.cli) - Commit message: "feat(cli): add project commands"** (Only check after all subitems + `nox` pass + coverage >=97%, then commit) - [ ] Code [Rui]: Add `agents project create/show/list/delete/link-resource/unlink-resource` commands using namespaced project names. @@ -1456,8 +1648,8 @@ MERGE POINT: Day 30 - M6 Large Project Autonomy Target - [ ] Tests (Behave) [Rui]: Add scenarios for project create/link/unlink/context policies and validation display. - [ ] Tests (Robot) [Rui]: Add Robot suite `robot/project_cli.robot`. - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/project_cli_bench.py` for command parsing and list output. - - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). - - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Quality [Rui]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Rui]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Rui]: `git commit -m "feat(cli): add project commands"`. **Parallel Group B3.cleanup: Legacy Project Removal [Jeff]** (after B3.cli lands) @@ -1468,11 +1660,11 @@ MERGE POINT: Day 30 - M6 Large Project Autonomy Target - [ ] Code [Jeff]: Update `src/cleveragents/application/container.py` to stop wiring legacy ProjectService once v3 service is in place. - [ ] Code [Jeff]: Remove legacy `src/cleveragents/domain/models/core/project.py` in favor of v3 project model and update imports. - [ ] Docs [Jeff]: Remove references to `agents project init` from CLI docs and point to `agents project create` + `agents init` (global) flows. - - [ ] Tests (Behave) [Rui]: Remove/replace legacy project init scenarios with v3 project create scenarios. - - [ ] Tests (Robot) [Rui]: Remove legacy project init Robot suites and add v3 replacements if missing. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/project_cli_cleanup_bench.py` for CLI help/rendering baseline after removal. - - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). - - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Tests (Behave) [Jeff]: Remove/replace legacy project init scenarios with v3 project create scenarios. + - [ ] Tests (Robot) [Jeff]: Remove legacy project init Robot suites and add v3 replacements if missing. + - [ ] Tests (ASV) [Jeff]: Add `asv/benchmarks/project_cli_cleanup_bench.py` for CLI help/rendering baseline after removal. + - [ ] Quality [Jeff]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Jeff]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Jeff]: `git commit -m "refactor(project): remove legacy project init/status commands"`. **Parallel Group B4: Sandboxing [Luis + Jeff]** (depends on resource registry + project links) @@ -1481,43 +1673,43 @@ MERGE POINT: Day 30 - M6 Large Project Autonomy Target - [ ] Code [Luis]: Implement lazy sandbox creation, cleanup hooks, and plan-scoped retention policy stubs. - [ ] Code [Luis]: Add sandbox path rewriting helper for tool execution and MCP adapters. - [ ] Docs [Luis]: Add `docs/reference/sandbox.md` describing lifecycle, APIs, and path rewriting rules. - - [ ] Tests (Behave) [Rui]: Add scenarios for sandbox manager creation, cleanup, and path rewrite behavior. - - [ ] Tests (Robot) [Rui]: Add Robot test that creates a sandbox and verifies filesystem isolation. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/sandbox_manager_bench.py` for sandbox creation overhead. - - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). - - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Tests (Behave) [Luis]: Add scenarios for sandbox manager creation, cleanup, and path rewrite behavior. + - [ ] Tests (Robot) [Luis]: Add Robot test that creates a sandbox and verifies filesystem isolation. + - [ ] Tests (ASV) [Luis]: Add `asv/benchmarks/sandbox_manager_bench.py` for sandbox creation overhead. + - [ ] Quality [Luis]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Luis]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Luis]: `git commit -m "feat(sandbox): add sandbox strategy interface and manager"`. - [ ] **COMMIT (Owner: Luis | Group: B4.sandbox) - Commit message: "feat(sandbox): implement git_worktree strategy"** (Only check after all subitems + `nox` pass + coverage >=97%, then commit) - [ ] Code [Luis]: Implement git worktree creation, checkout, and cleanup for git-checkout resources. - [ ] Code [Luis]: Add safe fallback for repositories without clean worktrees and clear error messages. - [ ] Code [Luis]: Record sandbox metadata (worktree path, branch, base commit) for rollback. - [ ] Docs [Luis]: Update sandbox doc with git_worktree usage and rollback behavior. - - [ ] Tests (Behave) [Rui]: Add scenarios for git worktree sandbox creation and rollback. - - [ ] Tests (Robot) [Rui]: Add Robot test that modifies sandbox and verifies original repo unchanged. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/git_worktree_bench.py` for sandbox creation time. - - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). - - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Tests (Behave) [Luis]: Add scenarios for git worktree sandbox creation and rollback. + - [ ] Tests (Robot) [Luis]: Add Robot test that modifies sandbox and verifies original repo unchanged. + - [ ] Tests (ASV) [Luis]: Add `asv/benchmarks/git_worktree_bench.py` for sandbox creation time. + - [ ] Quality [Luis]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Luis]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Luis]: `git commit -m "feat(sandbox): implement git_worktree strategy"`. - [ ] **COMMIT (Owner: Hamza | Group: B4.sandbox) - Commit message: "feat(resource): add git-checkout handler and discovery"** (Only check after all subitems + `nox` pass + coverage >=97%, then commit) - [ ] Code [Hamza]: Add git-checkout handler that validates repo path, branch, and read_only flags. - [ ] Code [Hamza]: Implement child resource discovery for fs-directory children (schema-only for now) and record ULID-only children. - [ ] Code [Hamza]: Add sandbox strategy mapping for git-checkout and path normalization helpers. - [ ] Docs [Hamza]: Document git-checkout handler behavior in `docs/reference/resources_git.md`. - - [ ] Tests (Behave) [Rui]: Add scenarios for handler validation and discovery counts. - - [ ] Tests (Robot) [Rui]: Add Robot test registering a git repo and asserting discovered children. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/git_discovery_bench.py` for discovery cost. - - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). - - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Tests (Behave) [Hamza]: Add scenarios for handler validation and discovery counts. + - [ ] Tests (Robot) [Hamza]: Add Robot test registering a git repo and asserting discovered children. + - [ ] Tests (ASV) [Hamza]: Add `asv/benchmarks/git_discovery_bench.py` for discovery cost. + - [ ] Quality [Hamza]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Hamza]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Hamza]: `git commit -m "feat(resource): add git-checkout handler and discovery"`. - [ ] **COMMIT (Owner: Luis | Group: B4.sandbox) - Commit message: "feat(sandbox): add copy_on_write strategy stub"** (Only check after all subitems + `nox` pass + coverage >=97%, then commit) - [ ] Code [Luis]: Add copy_on_write strategy skeleton with TODOs for large-project optimization. - [ ] Code [Luis]: Raise explicit NotImplementedError with guidance on when it will be available. - [ ] Docs [Luis]: Document that copy_on_write is stubbed for post-M1 work. - - [ ] Tests (Behave) [Rui]: Add scenario that selecting copy_on_write raises NotImplementedError with clear message. - - [ ] Tests (Robot) [Rui]: Add Robot test verifying stub error output. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/sandbox_stub_bench.py` (baseline no-op). - - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). - - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Tests (Behave) [Luis]: Add scenario that selecting copy_on_write raises NotImplementedError with clear message. + - [ ] Tests (Robot) [Luis]: Add Robot test verifying stub error output. + - [ ] Tests (ASV) [Luis]: Add `asv/benchmarks/sandbox_stub_bench.py` (baseline no-op). + - [ ] Quality [Luis]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Luis]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Luis]: `git commit -m "feat(sandbox): add copy_on_write strategy stub"`. **M2 MERGE GATE**: @@ -1545,40 +1737,46 @@ MERGE POINT: Day 30 - M6 Large Project Autonomy Target **PARALLEL SUBTRACK C0.domain [Jeff]**: Tool + Validation domain models + schemas **PARALLEL SUBTRACK C0.registry [Luis]**: Tool registry persistence + repositories **PARALLEL SUBTRACK C0.cli [Rui]**: CLI commands for tools/validations - **SEQUENTIAL MERGE NOTE**: C0.domain must land before C0.registry/cli; C0.registry before C3 context wiring. + **SEQUENTIAL MERGE NOTE**: C0.domain must land before C0.registry/cli; C0.registry before C3 context wiring. C0.registry migrations must rebase after A5.alpha; C0.binding should wait for B1.core resource type constraints to validate bindings. - [ ] **COMMIT (Owner: Jeff | Group: C0.domain) - Commit message: "feat(tool): add tool and validation domain models"** (COMMIT TASK: only check after every subtask below is complete, `nox` and coverage succeed, and the commit is created) - [ ] Code [Jeff]: Add `Tool` model in `src/cleveragents/domain/models/core/tool.py` with namespaced name, description, source type, input/output JSON schema, and capability metadata (read/write/checkpointable). - [ ] Code [Jeff]: Add `ResourceBinding` model with slot definitions and binding modes (context, static, parameter), plus required/optional flags. - [ ] Code [Jeff]: Add `Validation` model as Tool subtype with `mode`, `wraps`, and `transform` fields; enforce read-only constraints. - [ ] Code [Jeff]: Add enums for ToolSource, ToolType (tool/validation), and ValidationMode. + - [ ] Code [Jeff]: Add `docs/schema/tool.schema.yaml` and `docs/schema/validation.schema.yaml` with required fields, `wraps`/`transform` rules, and resource binding definitions. + - [ ] Code [Jeff]: Add YAML loader in `src/cleveragents/tool/schema.py` that validates schema version, normalizes keys, and returns Tool/Validation domain models. + - [ ] Code [Jeff]: Add example configs under `examples/tools/` and `examples/validations/` (plain tool, validation, wrapped validation) for tests. - [ ] Docs [Jeff]: Add `docs/reference/tool_model.md` and `docs/reference/validation_model.md` with examples. - - [ ] Tests (Behave) [Rui]: Add `features/tool_model.feature` for schema validation, resource binding rules, and validation constraints. - - [ ] Tests (Robot) [Rui]: Add `robot/tool_model.robot` smoke tests for model creation. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/tool_model_bench.py` for schema validation throughput. - - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). - - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Tests (Behave) [Jeff]: Add `features/tool_model.feature` for schema validation, resource binding rules, validation constraints, and YAML loader errors. + - [ ] Tests (Robot) [Jeff]: Add `robot/tool_model.robot` smoke tests for model creation. + - [ ] Tests (ASV) [Jeff]: Add `asv/benchmarks/tool_model_bench.py` for schema validation throughput (model + YAML loader). + - [ ] Quality [Jeff]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Jeff]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Jeff]: `git commit -m "feat(tool): add tool and validation domain models"`. - [ ] **COMMIT (Owner: Luis | Group: C0.registry) - Commit message: "feat(tool): add tool registry persistence"** (COMMIT TASK: only check after every subtask below is complete, `nox` and coverage succeed, and the commit is created) - [ ] Code [Luis]: Add DB tables for `tools`, `tool_bindings`, and `validation_attachments` with indexes on namespaced name and type. - - [ ] Code [Luis]: Include validation attachment columns for resource_id, optional project/plan scope, args_json, and attachment_id ULID. - - [ ] Code [Luis]: Implement ToolRepository + ValidationAttachmentRepository with list/show filters. - - [ ] Code [Luis]: Add ToolRegistryService for register/update/remove/list/show with name conflict checks. + - [ ] Code [Luis]: Define `tools` columns: `namespaced_name`, `namespace`, `tool_type`, `source`, `description`, `input_schema_json`, `output_schema_json`, `capability_json`, `metadata_json`, `yaml_text`, timestamps. + - [ ] Code [Luis]: Define `tool_bindings` columns: `binding_id` ULID, `tool_name`, `slot_name`, `binding_mode`, `resource_type`, `required`, `static_resource_id`, `static_resource_name`, timestamps. + - [ ] Code [Luis]: Define `validation_attachments` columns: `attachment_id` ULID, `validation_name`, `resource_id`, optional `project_name`, optional `plan_id`, `args_json`, timestamps. + - [ ] Code [Luis]: Add uniqueness constraints for `tools.namespaced_name` and `tool_bindings(tool_name, slot_name)`; index `validation_attachments.resource_id`. + - [ ] Code [Luis]: Implement ToolRepository + ValidationAttachmentRepository with list/show filters and eager-loading of bindings. + - [ ] Code [Luis]: Add ToolRegistryService for register/update/remove/list/show with name conflict checks and tool/validation type enforcement. - [ ] Docs [Luis]: Update `docs/reference/database_schema.md` with tool/validation tables. - - [ ] Tests (Behave) [Rui]: Add `features/tool_registry.feature` for register/update/remove and validation-only constraints. - - [ ] Tests (Robot) [Rui]: Add `robot/tool_registry.robot` for list/show smoke tests. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/tool_registry_bench.py` for registry list performance. - - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). - - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Tests (Behave) [Luis]: Add `features/tool_registry.feature` for register/update/remove and validation-only constraints. + - [ ] Tests (Robot) [Luis]: Add `robot/tool_registry.robot` for list/show smoke tests. + - [ ] Tests (ASV) [Luis]: Add `asv/benchmarks/tool_registry_bench.py` for registry list performance. + - [ ] Quality [Luis]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Luis]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Luis]: `git commit -m "feat(tool): add tool registry persistence"`. - [ ] **COMMIT (Owner: Jeff | Group: C0.binding) - Commit message: "feat(tool): add resource binding resolution"** (COMMIT TASK: only check after every subtask below is complete, `nox` and coverage succeed, and the commit is created) - [ ] Code [Jeff]: Implement binding resolution for contextual, static, and parameter bindings with type compatibility checks. - [ ] Code [Jeff]: Add resolution helpers for resource name/ULID lookup and project-scoped filtering. - [ ] Docs [Jeff]: Add `docs/reference/tool_bindings.md` with resolution order and examples. - - [ ] Tests (Behave) [Rui]: Add binding resolution scenarios (context vs static vs parameter). - - [ ] Tests (Robot) [Rui]: Add Robot test resolving a bound resource by name. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/binding_resolution_bench.py` for resolution latency. - - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). - - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Tests (Behave) [Jeff]: Add binding resolution scenarios (context vs static vs parameter). + - [ ] Tests (Robot) [Jeff]: Add Robot test resolving a bound resource by name. + - [ ] Tests (ASV) [Jeff]: Add `asv/benchmarks/binding_resolution_bench.py` for resolution latency. + - [ ] Quality [Jeff]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Jeff]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Jeff]: `git commit -m "feat(tool): add resource binding resolution"`. - [ ] **COMMIT (Owner: Rui | Group: C0.cli) - Commit message: "feat(cli): add tool and validation commands"** (COMMIT TASK: only check after every subtask below is complete, `nox` and coverage succeed, and the commit is created) - [ ] Code [Rui]: Implement `agents tool add/remove/list/show` with YAML config input and `--type` filter. @@ -1588,30 +1786,94 @@ MERGE POINT: Day 30 - M6 Large Project Autonomy Target - [ ] Tests (Behave) [Rui]: Add CLI scenarios for tool/validation registration and attachment. - [ ] Tests (Robot) [Rui]: Add Robot CLI suites for tool and validation commands. - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/tool_cli_bench.py` for CLI parsing overhead. - - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). - - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Quality [Rui]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Rui]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Rui]: `git commit -m "feat(cli): add tool and validation commands"`. +**Parallel Group C0.skill: Skill Registry & YAML [Aditya + Jeff + Luis + Rui]** (depends on C0.domain + C0.registry; must land before C3.protocol) + **PARALLEL SUBTRACK C0.skill.schema [Aditya]**: Skill YAML schema + examples + **PARALLEL SUBTRACK C0.skill.domain [Jeff]**: Skill domain model + resolver + **PARALLEL SUBTRACK C0.skill.registry [Luis]**: Skill persistence + service + **PARALLEL SUBTRACK C0.skill.cli [Rui]**: CLI commands + output formatting + **SEQUENTIAL MERGE NOTE**: C0.skill.domain must land before C0.skill.registry/C0.skill.cli to avoid dual representations. +- [ ] **COMMIT (Owner: Aditya | Group: C0.skill.schema) - Commit message: "docs(skill): add skill yaml schema and examples"** (COMMIT TASK: only check after every subtask below is complete, `nox` and coverage succeed, and the commit is created) + - [ ] Docs [Aditya]: Author `docs/schema/skill.schema.yaml` with versioning, required fields, and explicit type constraints for tool refs, inline tools, includes, and MCP sources. + - [ ] Docs [Aditya]: Add skill YAML examples under `examples/skills/` (single-tool, composed, inline tool, validation-only, MCP-backed). + - [ ] Code [Aditya]: Add schema loader in `src/cleveragents/skills/schema.py` that validates schema version, normalizes keys, and returns typed data. + - [ ] Code [Aditya]: Add clear validation errors for missing tools, recursive includes, and invalid namespaced names. + - [ ] Tests (Behave) [Aditya]: Add `features/skill_schema.feature` scenarios validating each example and invalid cases. + - [ ] Tests (Robot) [Aditya]: Add `robot/skill_schema.robot` to load and validate every example. + - [ ] Tests (ASV) [Aditya]: Add `asv/benchmarks/skill_schema_bench.py` for schema validation throughput. + - [ ] Quality [Aditya]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Aditya]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Commit [Aditya]: `git commit -m "docs(skill): add skill yaml schema and examples"`. +- [ ] **COMMIT (Owner: Jeff | Group: C0.skill.domain) - Commit message: "feat(skill): add skill domain model and resolver"** (COMMIT TASK: only check after every subtask below is complete, `nox` and coverage succeed, and the commit is created) + - [ ] Code [Jeff]: Add `Skill`, `SkillItem`, `SkillToolRef`, `SkillInclude`, and `SkillInlineTool` models in `src/cleveragents/domain/models/core/skill.py` with namespaced naming rules. + - [ ] Code [Jeff]: Implement `SkillResolver` to flatten includes into ordered tool lists, de-duplicate tools, and reject cycles with path traces. + - [ ] Code [Jeff]: Add `Skill.resolve_tools()` returning resolved tool/validation names plus inline tool definitions for compiler use. + - [ ] Docs [Jeff]: Add `docs/reference/skill_model.md` and `docs/reference/skill_resolution.md` with resolution order examples. + - [ ] Tests (Behave) [Jeff]: Add `features/skill_resolution.feature` for include ordering, de-dupe rules, and cycle detection. + - [ ] Tests (Robot) [Jeff]: Add `robot/skill_resolution.robot` smoke tests for resolver output. + - [ ] Tests (ASV) [Jeff]: Add `asv/benchmarks/skill_resolution_bench.py` for resolver performance. + - [ ] Quality [Jeff]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Jeff]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Commit [Jeff]: `git commit -m "feat(skill): add skill domain model and resolver"`. +- [ ] **COMMIT (Owner: Luis | Group: C0.skill.registry) - Commit message: "feat(skill): add skill registry persistence"** (COMMIT TASK: only check after every subtask below is complete, `nox` and coverage succeed, and the commit is created) + - [ ] Code [Luis]: Add `skills` and `skill_items` tables (namespaced name PK, description, source, yaml_text, timestamps) with indexes on namespace/name. + - [ ] Code [Luis]: Implement `SkillRepository` CRUD + list filters and `SkillRegistryService` with add/update/remove/show/list. + - [ ] Code [Luis]: Enforce referential integrity for included skills and tool references at registration time. + - [ ] Docs [Luis]: Add `docs/reference/skill_registry.md` with registration and update behavior. + - [ ] Tests (Behave) [Luis]: Add `features/skill_registry.feature` for add/update/remove and invalid include cases. + - [ ] Tests (Robot) [Luis]: Add `robot/skill_registry.robot` CLI/service smoke tests. + - [ ] Tests (ASV) [Luis]: Add `asv/benchmarks/skill_registry_bench.py` for registry list performance. + - [ ] Quality [Luis]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Luis]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Commit [Luis]: `git commit -m "feat(skill): add skill registry persistence"`. +- [ ] **COMMIT (Owner: Rui | Group: C0.skill.cli) - Commit message: "feat(cli): add skill commands"** (COMMIT TASK: only check after every subtask below is complete, `nox` and coverage succeed, and the commit is created) + - [ ] Code [Rui]: Implement `agents skill add/remove/list/show/tools` with YAML config input and `--namespace` filter. + - [ ] Code [Rui]: Ensure `skill tools` shows resolved tool list, inline tool IDs, and validation nodes. + - [ ] Docs [Rui]: Update CLI reference with skill commands, examples, and output fields. + - [ ] Tests (Behave) [Rui]: Add CLI scenarios for skill add/show/tools/list/remove. + - [ ] Tests (Robot) [Rui]: Add `robot/skill_cli.robot` for end-to-end CLI flows. + - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/skill_cli_bench.py` for config parsing overhead. + - [ ] Quality [Rui]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Rui]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Commit [Rui]: `git commit -m "feat(cli): add skill commands"`. + +**Parallel Group C0.runtime: Tool Lifecycle Runtime [Jeff]** (depends on C0.domain + C0.registry; must land before C3.context) +- [ ] **COMMIT (Owner: Jeff | Group: C0.runtime) - Commit message: "feat(tool): add tool lifecycle runtime"** (COMMIT TASK: only check after every subtask below is complete, `nox` and coverage succeed, and the commit is created) + - [ ] Code [Jeff]: Implement `ToolRuntime`/`ToolInstance` interfaces with `discover/activate/execute/deactivate` hooks and lifecycle state tracking. + - [ ] Code [Jeff]: Add `ToolExecutionContext` with resolved resource bindings, sandbox paths, plan metadata, and cancellation token. + - [ ] Code [Jeff]: Add lifecycle cache with per-plan activation reuse and guaranteed `deactivate` on plan completion/cancel. + - [ ] Code [Jeff]: Enforce tool capability flags (read-only/writes/checkpointable) and read-only plan gating at runtime. + - [ ] Docs [Jeff]: Add `docs/reference/tool_lifecycle.md` describing hook ordering and failure handling. + - [ ] Tests (Behave) [Jeff]: Add lifecycle scenarios for activate/execute/deactivate ordering and error propagation. + - [ ] Tests (Robot) [Jeff]: Add `robot/tool_lifecycle.robot` runtime smoke tests. + - [ ] Tests (ASV) [Jeff]: Add `asv/benchmarks/tool_lifecycle_bench.py` for lifecycle overhead. + - [ ] Quality [Jeff]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Jeff]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Commit [Jeff]: `git commit -m "feat(tool): add tool lifecycle runtime"`. + **Parallel Group C1: Actor Schema & Examples [Aditya + Jeff]** (start Day 5; C2 depends on this) - [ ] **COMMIT (Owner: Aditya | Group: C1.schema) - Commit message: "feat(actor): add actor yaml schema models"** (Only check after all subitems + `nox` pass + coverage >=97%, then commit) - [ ] Code [Aditya]: Add schema models (ActorType, NodeType, ContextView, ToolDefinition, RouteDefinition, ActorConfigSchema) with strict validation in `src/cleveragents/actor/schema.py`. - [ ] Code [Aditya]: Add tool-node schema fields that reference Tool Registry names, including validation nodes, and require input/output schema presence. - [ ] Code [Aditya]: Add YAML load/serialize helpers and schema version guard. - [ ] Docs [Aditya]: Add `docs/reference/actors_schema.md` with field definitions, tool node semantics, and graph constraints. - - [ ] Tests (Behave) [Rui]: Add `features/actor_schema.feature` scenarios for validation and topology errors. - - [ ] Tests (Robot) [Rui]: Add `robot/actor_schema.robot` YAML load smoke test. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/actor_schema_bench.py` for YAML validation cost. - - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). - - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Tests (Behave) [Aditya]: Add `features/actor_schema.feature` scenarios for validation and topology errors. + - [ ] Tests (Robot) [Aditya]: Add `robot/actor_schema.robot` YAML load smoke test. + - [ ] Tests (ASV) [Aditya]: Add `asv/benchmarks/actor_schema_bench.py` for YAML validation cost. + - [ ] Quality [Aditya]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Aditya]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Aditya]: `git commit -m "feat(actor): add actor yaml schema models"`. - [ ] **COMMIT (Owner: Aditya | Group: C1.examples) - Commit message: "docs(actor): add actor yaml examples"** (Only check after all subitems + `nox` pass + coverage >=97%, then commit) - [ ] Docs [Aditya]: Add `docs/reference/actors_examples.md` with strategist, executor, reviewer, tool-only, validation-node, and graph YAML examples. - [ ] Docs [Aditya]: Store example YAML files under `examples/actors/` for automated tests. - - [ ] Tests (Behave) [Rui]: Add `features/actor_examples.feature` to ensure all examples validate. - - [ ] Tests (Robot) [Rui]: Add `robot/actor_examples.robot` to load each example. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/actor_examples_load_bench.py` for YAML load throughput. - - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). - - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Tests (Behave) [Aditya]: Add `features/actor_examples.feature` to ensure all examples validate. + - [ ] Tests (Robot) [Aditya]: Add `robot/actor_examples.robot` to load each example. + - [ ] Tests (ASV) [Aditya]: Add `asv/benchmarks/actor_examples_load_bench.py` for YAML load throughput. + - [ ] Quality [Aditya]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Aditya]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Aditya]: `git commit -m "docs(actor): add actor yaml examples"`. **Parallel Group C2: Actor Loading & Compilation [Aditya + Jeff]** (depends on C1) @@ -1621,42 +1883,42 @@ MERGE POINT: Day 30 - M6 Large Project Autonomy Target - [ ] Code [Aditya]: Implement actor loader/registry with namespaced lookup, cache invalidation, and file discovery in `actors/` and `examples/actors/`. - [ ] Code [Aditya]: Add registry integration with Tool Registry so tool nodes resolve at load time. - [ ] Docs [Aditya]: Add `docs/reference/actors_loading.md` with discovery rules and namespaces. - - [ ] Tests (Behave) [Rui]: Add `features/actor_loading.feature` for discovery, duplicates, and namespace lookup. - - [ ] Tests (Robot) [Rui]: Add `robot/actor_loading.robot` for loader smoke tests. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/actor_loading_bench.py` for registry load performance. - - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). - - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Tests (Behave) [Aditya]: Add `features/actor_loading.feature` for discovery, duplicates, and namespace lookup. + - [ ] Tests (Robot) [Aditya]: Add `robot/actor_loading.robot` for loader smoke tests. + - [ ] Tests (ASV) [Aditya]: Add `asv/benchmarks/actor_loading_bench.py` for registry load performance. + - [ ] Quality [Aditya]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Aditya]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Aditya]: `git commit -m "feat(actor): add actor registry and loader"`. - [ ] **COMMIT (Owner: Jeff | Group: C2.compiler) - Commit message: "feat(actor): compile actor configs to LangGraph"** (Only check after all subitems + `nox` pass + coverage >=97%, then commit) - [ ] Code [Jeff]: Implement ActorCompiler that builds LangGraph for LLM, TOOL, and GRAPH actors with tool node wiring. - [ ] Code [Jeff]: Resolve tool node references through Tool Registry and validate required bindings before compile. - [ ] Docs [Jeff]: Add `docs/reference/actors_compilation.md` covering compile outputs and error modes. - - [ ] Tests (Behave) [Rui]: Add `features/actor_compilation.feature` for LLM/GRAPH compilation and tool node wiring. - - [ ] Tests (Robot) [Rui]: Add `robot/actor_compilation.robot` smoke test compiling all examples. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/actor_compilation_bench.py` for compilation speed. - - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). - - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Tests (Behave) [Jeff]: Add `features/actor_compilation.feature` for LLM/GRAPH compilation and tool node wiring. + - [ ] Tests (Robot) [Jeff]: Add `robot/actor_compilation.robot` smoke test compiling all examples. + - [ ] Tests (ASV) [Jeff]: Add `asv/benchmarks/actor_compilation_bench.py` for compilation speed. + - [ ] Quality [Jeff]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Jeff]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Jeff]: `git commit -m "feat(actor): compile actor configs to LangGraph"`. - [ ] **COMMIT (Owner: Jeff | Group: C2.refs) - Commit message: "feat(actor): resolve actor references and subgraphs"** (Only check after all subitems + `nox` pass + coverage >=97%, then commit) - [ ] Code [Jeff]: Implement reference resolution, cycle detection, and subgraph wiring for actor refs. - [ ] Code [Jeff]: Ensure cross-namespace reference resolution follows `[server:]namespace/name` rules. - [ ] Docs [Jeff]: Update `docs/reference/actors_compilation.md` with reference semantics. - - [ ] Tests (Behave) [Rui]: Add `features/actor_reference_resolution.feature` for missing/recursive refs. - - [ ] Tests (Robot) [Rui]: Add `robot/actor_reference_resolution.robot` for subgraph wiring. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/actor_reference_bench.py` for reference resolution performance. - - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). - - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Tests (Behave) [Jeff]: Add `features/actor_reference_resolution.feature` for missing/recursive refs. + - [ ] Tests (Robot) [Jeff]: Add `robot/actor_reference_resolution.robot` for subgraph wiring. + - [ ] Tests (ASV) [Jeff]: Add `asv/benchmarks/actor_reference_bench.py` for reference resolution performance. + - [ ] Quality [Jeff]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Jeff]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Jeff]: `git commit -m "feat(actor): resolve actor references and subgraphs"`. - [ ] **COMMIT (Owner: Jeff | Group: C2.legacy) - Commit message: "refactor(actor): drop v2 actor config compatibility"** (COMMIT TASK: only check after every subtask below is complete, `nox` and coverage succeed, and the commit is created) - [ ] Code [Jeff]: Remove v2 JSON/YAML parsing paths in `src/cleveragents/actor/config.py` and related template engine usage. - [ ] Code [Jeff]: Ensure only v3 actor YAML schema is accepted; provide clear error message when v2 fields are present. - [ ] Docs [Jeff]: Update `docs/reference/actors_loading.md` with v3-only note and migration guidance. - - [ ] Tests (Behave) [Rui]: Add scenarios that reject v2 actor config files. - - [ ] Tests (Robot) [Rui]: Add Robot tests that attempt to load v2 configs and assert failure. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/actor_schema_reject_bench.py` for validation overhead. - - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). - - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Tests (Behave) [Jeff]: Add scenarios that reject v2 actor config files. + - [ ] Tests (Robot) [Jeff]: Add Robot tests that attempt to load v2 configs and assert failure. + - [ ] Tests (ASV) [Jeff]: Add `asv/benchmarks/actor_schema_reject_bench.py` for validation overhead. + - [ ] Quality [Jeff]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Jeff]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Jeff]: `git commit -m "refactor(actor): drop v2 actor config compatibility"`. **Parallel Group C3: Skill Protocol & Context [Jeff]** (critical path; depends on C1) @@ -1665,33 +1927,33 @@ MERGE POINT: Day 30 - M6 Large Project Autonomy Target - [ ] Code [Jeff]: Add `SkillDefinition` model that references Tool Registry names and optional inline tool definitions. - [ ] Code [Jeff]: Add error mapping helpers to normalize tool failures into SkillError payloads. - [ ] Docs [Jeff]: Add `docs/reference/skills_protocol.md` describing metadata, tool composition, and JSON schema rules. - - [ ] Tests (Behave) [Rui]: Add `features/skill_protocol.feature` for metadata validation and error capture. - - [ ] Tests (Robot) [Rui]: Add `robot/skill_protocol.robot` smoke tests. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/skill_protocol_bench.py` for validation throughput. - - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). - - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Tests (Behave) [Jeff]: Add `features/skill_protocol.feature` for metadata validation and error capture. + - [ ] Tests (Robot) [Jeff]: Add `robot/skill_protocol.robot` smoke tests. + - [ ] Tests (ASV) [Jeff]: Add `asv/benchmarks/skill_protocol_bench.py` for validation throughput. + - [ ] Quality [Jeff]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Jeff]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Jeff]: `git commit -m "feat(skill): add skill protocol and metadata"`. - [ ] **COMMIT (Owner: Jeff | Group: C3.context) - Commit message: "feat(skill): add skill context and registry"** (Only check after all subitems + `nox` pass + coverage >=97%, then commit) - [ ] Code [Jeff]: Implement SkillContext (plan/resource access, sandbox path, change tracker) and SkillRegistry in `src/cleveragents/skills/context.py`. - [ ] Code [Jeff]: Wire SkillRegistry to Tool Registry for tool resolution and validation node inclusion. - [ ] Code [Jeff]: Add context helpers for resolving bound resources and exposing plan metadata. - [ ] Docs [Jeff]: Add `docs/reference/skills_context.md` with context fields and helper methods. - - [ ] Tests (Behave) [Rui]: Add `features/skill_context.feature` for sandboxed access and registry resolution. - - [ ] Tests (Robot) [Rui]: Add `robot/skill_context.robot` for registry smoke tests. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/skill_context_bench.py` for registry resolution overhead. - - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). - - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Tests (Behave) [Jeff]: Add `features/skill_context.feature` for sandboxed access and registry resolution. + - [ ] Tests (Robot) [Jeff]: Add `robot/skill_context.robot` for registry smoke tests. + - [ ] Tests (ASV) [Jeff]: Add `asv/benchmarks/skill_context_bench.py` for registry resolution overhead. + - [ ] Quality [Jeff]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Jeff]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Jeff]: `git commit -m "feat(skill): add skill context and registry"`. - [ ] **COMMIT (Owner: Jeff | Group: C3.inline) - Commit message: "feat(skill): add inline tool executor"** (Only check after all subitems + `nox` pass + coverage >=97%, then commit) - [ ] Code [Jeff]: Implement inline tool execution with timeouts and restricted environment in `src/cleveragents/skills/inline_executor.py`. - [ ] Code [Jeff]: Ensure inline tools conform to Tool Registry schema and return structured results. - [ ] Code [Jeff]: Add safeguards for file/network access inside inline tools (local-only for MVP). - [ ] Docs [Jeff]: Add `docs/reference/skills_inline.md` with safety constraints. - - [ ] Tests (Behave) [Rui]: Add `features/skill_inline.feature` for execution and timeout handling. - - [ ] Tests (Robot) [Rui]: Add `robot/skill_inline.robot` for inline tool smoke tests. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/inline_tool_bench.py` for execution overhead. - - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). - - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Tests (Behave) [Jeff]: Add `features/skill_inline.feature` for execution and timeout handling. + - [ ] Tests (Robot) [Jeff]: Add `robot/skill_inline.robot` for inline tool smoke tests. + - [ ] Tests (ASV) [Jeff]: Add `asv/benchmarks/inline_tool_bench.py` for execution overhead. + - [ ] Quality [Jeff]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Jeff]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Jeff]: `git commit -m "feat(skill): add inline tool executor"`. **Parallel Group C4: Built-in Skills [Jeff + Luis]** (depends on C3) @@ -1700,33 +1962,33 @@ MERGE POINT: Day 30 - M6 Large Project Autonomy Target - [ ] Code [Jeff]: Register tools in Tool Registry with resource bindings for fs/git resources and sandbox path rewrite. - [ ] Code [Jeff]: Add content size limits and encoding normalization (UTF-8) for file tools. - [ ] Docs [Jeff]: Add `docs/reference/skills_file.md` with examples and error cases. - - [ ] Tests (Behave) [Rui]: Add `features/skill_file_ops.feature` for read/write/edit/delete flows. - - [ ] Tests (Robot) [Rui]: Add `robot/skill_file_ops.robot` for file ops integration. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/file_tool_bench.py` for read/write throughput. - - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). - - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Tests (Behave) [Jeff]: Add `features/skill_file_ops.feature` for read/write/edit/delete flows. + - [ ] Tests (Robot) [Jeff]: Add `robot/skill_file_ops.robot` for file ops integration. + - [ ] Tests (ASV) [Jeff]: Add `asv/benchmarks/file_tool_bench.py` for read/write throughput. + - [ ] Quality [Jeff]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Jeff]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Jeff]: `git commit -m "feat(skill): add file operation skills"`. - [ ] **COMMIT (Owner: Jeff | Group: C4.search) - Commit message: "feat(skill): add directory and search skills"** (Only check after all subitems + `nox` pass + coverage >=97%, then commit) - [ ] Code [Jeff]: Implement ListDir, Glob, and Grep tools with ignore patterns and size limits. - [ ] Code [Jeff]: Register tools in Tool Registry with resource bindings and sandbox awareness. - [ ] Code [Jeff]: Enforce include/exclude glob filters from project context policies. - [ ] Docs [Jeff]: Add `docs/reference/skills_search.md` with examples. - - [ ] Tests (Behave) [Rui]: Add `features/skill_search.feature` for listing/globbing/searching. - - [ ] Tests (Robot) [Rui]: Add `robot/skill_search.robot` for search integration. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/search_tool_bench.py` for search performance. - - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). - - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Tests (Behave) [Jeff]: Add `features/skill_search.feature` for listing/globbing/searching. + - [ ] Tests (Robot) [Jeff]: Add `robot/skill_search.robot` for search integration. + - [ ] Tests (ASV) [Jeff]: Add `asv/benchmarks/search_tool_bench.py` for search performance. + - [ ] Quality [Jeff]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Jeff]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Jeff]: `git commit -m "feat(skill): add directory and search skills"`. - [ ] **COMMIT (Owner: Luis | Group: C4.git) - Commit message: "feat(skill): add git operation skills"** (Only check after all subitems + `nox` pass + coverage >=97%, then commit) - [ ] Code [Luis]: Implement read-only git tools (status, diff, log, show) for sandboxed repos. - [ ] Code [Luis]: Register git tools in Tool Registry with read-only capability metadata. - [ ] Code [Luis]: Add path guards to ensure git tools only run inside sandbox root. - [ ] Docs [Luis]: Add `docs/reference/skills_git.md` clarifying no destructive ops in MVP. - - [ ] Tests (Behave) [Rui]: Add `features/skill_git.feature` for git tool outputs. - - [ ] Tests (Robot) [Rui]: Add `robot/skill_git.robot` for git tool integration. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/git_tool_bench.py` for diff/log performance. - - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). - - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Tests (Behave) [Luis]: Add `features/skill_git.feature` for git tool outputs. + - [ ] Tests (Robot) [Luis]: Add `robot/skill_git.robot` for git tool integration. + - [ ] Tests (ASV) [Luis]: Add `asv/benchmarks/git_tool_bench.py` for diff/log performance. + - [ ] Quality [Luis]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Luis]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Luis]: `git commit -m "feat(skill): add git operation skills"`. **Parallel Group C5: Tool Routing & Change Tracking [Luis + Jeff]** (depends on C3/C4) @@ -1735,33 +1997,33 @@ MERGE POINT: Day 30 - M6 Large Project Autonomy Target - [ ] Code [Luis]: Ensure ChangeSet stores resource references, sandbox paths, tool metadata, and timestamps. - [ ] Code [Luis]: Add ChangeSet serialization helper for plan diff output (group by resource). - [ ] Docs [Luis]: Add `docs/reference/change_tracking.md` describing tool-to-change mapping. - - [ ] Tests (Behave) [Rui]: Add `features/change_tracking.feature` for ChangeSet aggregation. - - [ ] Tests (Robot) [Rui]: Add `robot/change_tracking.robot` for tracker smoke tests. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/change_tracking_bench.py` for invocation tracking overhead. - - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). - - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Tests (Behave) [Luis]: Add `features/change_tracking.feature` for ChangeSet aggregation. + - [ ] Tests (Robot) [Luis]: Add `robot/change_tracking.robot` for tracker smoke tests. + - [ ] Tests (ASV) [Luis]: Add `asv/benchmarks/change_tracking_bench.py` for invocation tracking overhead. + - [ ] Quality [Luis]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Luis]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Luis]: `git commit -m "feat(change): add ChangeSet models and invocation tracker"`. - [ ] **COMMIT (Owner: Jeff | Group: C5.router) - Commit message: "feat(change): add tool router for providers"** (Only check after all subitems + `nox` pass + coverage >=97%, then commit) - [ ] Code [Jeff]: Implement ToolCallRouter for OpenAI/Anthropic/LangChain tool schemas with deterministic IDs. - [ ] Code [Jeff]: Add mapping for tool/validation names and argument schemas based on Tool Registry metadata. - [ ] Code [Jeff]: Add tool-call result normalization to match ToolInvocation schema. - [ ] Docs [Jeff]: Add `docs/reference/tool_router.md` with provider-specific mappings. - - [ ] Tests (Behave) [Rui]: Add `features/tool_router.feature` for schema mapping. - - [ ] Tests (Robot) [Rui]: Add `robot/tool_router.robot` for routing smoke tests. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/tool_router_bench.py` for routing performance. - - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). - - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Tests (Behave) [Jeff]: Add `features/tool_router.feature` for schema mapping. + - [ ] Tests (Robot) [Jeff]: Add `robot/tool_router.robot` for routing smoke tests. + - [ ] Tests (ASV) [Jeff]: Add `asv/benchmarks/tool_router_bench.py` for routing performance. + - [ ] Quality [Jeff]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Jeff]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Jeff]: `git commit -m "feat(change): add tool router for providers"`. - [ ] **COMMIT (Owner: Luis | Group: C5.diff) - Commit message: "feat(change): add diff review artifacts"** (Only check after all subitems + `nox` pass + coverage >=97%, then commit) - [ ] Code [Luis]: Implement DiffBuilder and ReviewArtifact models for CLI review. - [ ] Code [Luis]: Add support for multi-resource diffs and per-resource grouping. - [ ] Code [Luis]: Add diff output serializers for rich/plain/json formats. - [ ] Docs [Luis]: Add `docs/reference/diff_review.md` with output format. - - [ ] Tests (Behave) [Rui]: Add `features/diff_review.feature` for diff generation. - - [ ] Tests (Robot) [Rui]: Add `robot/diff_review.robot` for review artifacts. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/diff_review_bench.py` for diff building performance. - - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). - - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Tests (Behave) [Luis]: Add `features/diff_review.feature` for diff generation. + - [ ] Tests (Robot) [Luis]: Add `robot/diff_review.robot` for review artifacts. + - [ ] Tests (ASV) [Luis]: Add `asv/benchmarks/diff_review_bench.py` for diff building performance. + - [ ] Quality [Luis]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Luis]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Luis]: `git commit -m "feat(change): add diff review artifacts"`. **Parallel Group C6: Validation Pipeline [Luis + Jeff]** (depends on C5 and validation attachment config) @@ -1771,22 +2033,33 @@ MERGE POINT: Day 30 - M6 Large Project Autonomy Target - [ ] Code [Luis]: Enforce required vs informational validation modes and fix-then-revalidate loop hooks. - [ ] Code [Luis]: Persist validation summary into Plan metadata for later review. - [ ] Docs [Luis]: Add `docs/reference/validation_pipeline.md` with ordering, timeouts, and failure handling. - - [ ] Tests (Behave) [Rui]: Add `features/validation_pipeline.feature` for pass/fail paths and required/informational modes. - - [ ] Tests (Robot) [Rui]: Add `robot/validation_pipeline.robot` for pipeline smoke tests. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/validation_pipeline_bench.py` for pipeline runtime. - - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). - - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Tests (Behave) [Luis]: Add `features/validation_pipeline.feature` for pass/fail paths and required/informational modes. + - [ ] Tests (Robot) [Luis]: Add `robot/validation_pipeline.robot` for pipeline smoke tests. + - [ ] Tests (ASV) [Luis]: Add `asv/benchmarks/validation_pipeline_bench.py` for pipeline runtime. + - [ ] Quality [Luis]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Luis]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Luis]: `git commit -m "feat(validation): add validation pipeline and results model"`. +- [ ] **COMMIT (Owner: Jeff | Group: C6.wraps) - Commit message: "feat(validation): support wrapped tools and transforms"** (Only check after all subitems + `nox` pass + coverage >=97%, then commit) + - [ ] Code [Jeff]: Implement validation `wraps` execution path that runs the wrapped Tool and captures its output. + - [ ] Code [Jeff]: Add transform engine that maps wrapped tool output into ValidationResult schema (must output `passed` boolean). + - [ ] Code [Jeff]: Enforce read-only constraints for validations even when wrapping write-capable tools; block if violation. + - [ ] Docs [Jeff]: Update `docs/reference/validation_model.md` with `wraps` + `transform` examples and safety rules. + - [ ] Tests (Behave) [Jeff]: Add wrapped-validation scenarios with transform success/fail paths. + - [ ] Tests (Robot) [Jeff]: Add `robot/validation_wraps.robot` for wrapped validation end-to-end. + - [ ] Tests (ASV) [Jeff]: Add `asv/benchmarks/validation_wraps_bench.py` for transform overhead. + - [ ] Quality [Jeff]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Jeff]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Commit [Jeff]: `git commit -m "feat(validation): support wrapped tools and transforms"`. - [ ] **COMMIT (Owner: Jeff | Group: C6.gating) - Commit message: "feat(validation): integrate validation with apply gating"** (Only check after all subitems + `nox` pass + coverage >=97%, then commit) - [ ] Code [Jeff]: Block apply on required validation failure; surface validation artifacts for review. - [ ] Code [Jeff]: Ensure informational validation failures do not block apply but are logged in plan status. - [ ] Code [Jeff]: Add CLI status output for validation summary (required vs informational counts). - [ ] Docs [Jeff]: Update `docs/reference/plan_actor_integration.md` with validation gating behavior. - - [ ] Tests (Behave) [Rui]: Add `features/validation_gating.feature` for apply blocking. - - [ ] Tests (Robot) [Rui]: Add `robot/validation_gating.robot` for end-to-end gating. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/validation_gating_bench.py` for gating overhead. - - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). - - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Tests (Behave) [Jeff]: Add `features/validation_gating.feature` for apply blocking. + - [ ] Tests (Robot) [Jeff]: Add `robot/validation_gating.robot` for end-to-end gating. + - [ ] Tests (ASV) [Jeff]: Add `asv/benchmarks/validation_gating_bench.py` for gating overhead. + - [ ] Quality [Jeff]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Jeff]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Jeff]: `git commit -m "feat(validation): integrate validation with apply gating"`. **Parallel Group C7: MCP Adapter [Aditya]** (depends on C3) @@ -1795,11 +2068,11 @@ MERGE POINT: Day 30 - M6 Large Project Autonomy Target - [ ] Code [Aditya]: Register MCP tools in Tool Registry with dynamic discovery from MCP server. - [ ] Code [Aditya]: Add timeout and retry defaults for MCP calls (local-only for MVP). - [ ] Docs [Aditya]: Add `docs/reference/skills_mcp.md` with server connection examples. - - [ ] Tests (Behave) [Rui]: Add `features/skill_mcp.feature` for MCP tool calls. - - [ ] Tests (Robot) [Rui]: Add `robot/skill_mcp.robot` for MCP adapter smoke test. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/mcp_adapter_bench.py` for tool invocation latency. - - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). - - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Tests (Behave) [Aditya]: Add `features/skill_mcp.feature` for MCP tool calls. + - [ ] Tests (Robot) [Aditya]: Add `robot/skill_mcp.robot` for MCP adapter smoke test. + - [ ] Tests (ASV) [Aditya]: Add `asv/benchmarks/mcp_adapter_bench.py` for tool invocation latency. + - [ ] Quality [Aditya]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Aditya]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Aditya]: `git commit -m "feat(skill): add MCP adapter for external tools"`. **Parallel Group C8: Built-in Provider Actors [Aditya]** (depends on C1/C2) @@ -1807,11 +2080,11 @@ MERGE POINT: Day 30 - M6 Large Project Autonomy Target - [ ] Code [Aditya]: Add built-in actor configs for `openai/`, `anthropic/`, and `openrouter/` (plus `google/` if configured). - [ ] Code [Aditya]: Add built-in actors for invariant reconciliation and estimation roles (using provider defaults). - [ ] Docs [Aditya]: Add `docs/reference/provider_actors.md` with provider defaults. - - [ ] Tests (Behave) [Rui]: Add `features/provider_actors.feature` for built-in actor loading. - - [ ] Tests (Robot) [Rui]: Add `robot/provider_actors.robot` for registry visibility. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/provider_actor_load_bench.py` for registry load cost. - - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). - - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Tests (Behave) [Aditya]: Add `features/provider_actors.feature` for built-in actor loading. + - [ ] Tests (Robot) [Aditya]: Add `robot/provider_actors.robot` for registry visibility. + - [ ] Tests (ASV) [Aditya]: Add `asv/benchmarks/provider_actor_load_bench.py` for registry load cost. + - [ ] Quality [Aditya]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Aditya]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Aditya]: `git commit -m "feat(actor): add built-in provider actors"`. **Parallel Group C9: Plan-Actor Integration [Jeff + Luis]** (depends on C2/C5/C6) @@ -1821,22 +2094,22 @@ MERGE POINT: Day 30 - M6 Large Project Autonomy Target - [ ] Code [Jeff]: Ensure Execute uses sandbox resources and tool calls routed through Tool Router + ChangeSet. - [ ] Code [Jeff]: Add plan status updates for phase start/complete/fail during actor execution. - [ ] Docs [Jeff]: Add `docs/reference/plan_actor_integration.md` with phase flow. - - [ ] Tests (Behave) [Rui]: Add `features/plan_actor_integration.feature` for strategy/execute flows. - - [ ] Tests (Robot) [Rui]: Add `robot/plan_actor_integration.robot` for end-to-end actor execution. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/plan_actor_integration_bench.py` for execution overhead. - - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). - - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Tests (Behave) [Jeff]: Add `features/plan_actor_integration.feature` for strategy/execute flows. + - [ ] Tests (Robot) [Jeff]: Add `robot/plan_actor_integration.robot` for end-to-end actor execution. + - [ ] Tests (ASV) [Jeff]: Add `asv/benchmarks/plan_actor_integration_bench.py` for execution overhead. + - [ ] Quality [Jeff]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Jeff]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Jeff]: `git commit -m "feat(plan): execute strategize and execute phases via actors"`. - [ ] **COMMIT (Owner: Jeff | Group: C9.apply) - Commit message: "feat(plan): integrate change review and apply flow"** (Only check after all subitems + `nox` pass + coverage >=97%, then commit) - [ ] Code [Jeff]: Wire ChangeSet review artifacts into `plan diff` and review-before-apply flow. - [ ] Code [Jeff]: Ensure Apply merges sandbox into real resources only after required validations pass. - [ ] Code [Jeff]: Persist apply summary (files changed, validations) back into Plan metadata for `plan status`. - [ ] Docs [Jeff]: Update CLI docs for `plan diff` and `plan apply` review output. - - [ ] Tests (Behave) [Rui]: Add `features/plan_review_apply.feature` for review gate behavior. - - [ ] Tests (Robot) [Rui]: Add `robot/plan_review_apply.robot` for review-before-apply path. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/plan_apply_bench.py` for apply throughput. - - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). - - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Tests (Behave) [Jeff]: Add `features/plan_review_apply.feature` for review gate behavior. + - [ ] Tests (Robot) [Jeff]: Add `robot/plan_review_apply.robot` for review-before-apply path. + - [ ] Tests (ASV) [Jeff]: Add `asv/benchmarks/plan_apply_bench.py` for apply throughput. + - [ ] Quality [Jeff]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Jeff]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Jeff]: `git commit -m "feat(plan): integrate change review and apply flow"`. **M3 SUCCESS CRITERIA**: @@ -1863,24 +2136,24 @@ MERGE POINT: Day 30 - M6 Large Project Autonomy Target - [ ] Code [Hamza]: Add `DecisionType`, `ContextSnapshot`, and `Decision` models with correction fields and helpers. - [ ] Code [Hamza]: Include required fields: question, chosen option, alternatives, confidence score, rationale, dependencies, and context hash. - [ ] Docs [Hamza]: Add `docs/reference/decision_model.md` with examples and schema notes. - - [ ] Tests (Behave) [Rui]: Add `features/decision_model.feature` for validation and helpers. - - [ ] Tests (Robot) [Rui]: Add `robot/decision_model.robot` smoke tests. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/decision_model_bench.py` for decision validation throughput. - - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). - - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Tests (Behave) [Hamza]: Add `features/decision_model.feature` for validation and helpers. + - [ ] Tests (Robot) [Hamza]: Add `robot/decision_model.robot` smoke tests. + - [ ] Tests (ASV) [Hamza]: Add `asv/benchmarks/decision_model_bench.py` for decision validation throughput. + - [ ] Quality [Hamza]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Hamza]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Hamza]: `git commit -m "feat(domain): add decision model and context snapshots"`. -**Parallel Group D2: Decision Recording Service [Hamza + Luis]** (depends on D1) +**Parallel Group D2: Decision Recording Service [Hamza]** (depends on D1) - [ ] **COMMIT (Owner: Hamza | Group: D2.service) - Commit message: "feat(service): add decision recording and snapshot store"** (Only check after all subitems + `nox` pass + coverage >=97%, then commit) - [ ] Code [Hamza]: Implement `DecisionService` with `record_decision`, sequence numbers, tree queries, and downstream linking. - [ ] Code [Hamza]: Add `ContextSnapshotStore` interface with a file-backed MVP implementation and hash dedupe. - - [ ] Code [Luis]: Integrate decision recording into strategize/execute phases (prompt/strategy/subplan/tool decisions). + - [ ] Code [Hamza]: Integrate decision recording into strategize/execute phases (prompt/strategy/subplan/tool decisions). - [ ] Docs [Hamza]: Add `docs/reference/decision_service.md` covering recording and snapshots. - - [ ] Tests (Behave) [Rui]: Add `features/decision_recording.feature` scenarios. - - [ ] Tests (Robot) [Rui]: Add `robot/decision_recording.robot` integration smoke tests. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/decision_recording_bench.py` for record throughput. - - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). - - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Tests (Behave) [Hamza]: Add `features/decision_recording.feature` scenarios. + - [ ] Tests (Robot) [Hamza]: Add `robot/decision_recording.robot` integration smoke tests. + - [ ] Tests (ASV) [Hamza]: Add `asv/benchmarks/decision_recording_bench.py` for record throughput. + - [ ] Quality [Hamza]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Hamza]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Hamza]: `git commit -m "feat(service): add decision recording and snapshot store"`. **Parallel Group D3: Decision CLI & Viewing [Hamza + Rui]** (depends on D1/D2) @@ -1888,11 +2161,11 @@ MERGE POINT: Day 30 - M6 Large Project Autonomy Target - [ ] Code [Hamza]: Implement `plan tree` and `plan explain` with rich/json/flat formats and `--show-superseded`/`--show-context`. - [ ] Code [Hamza]: Add `--show-reasoning` to include confidence and alternatives in explain output per spec. - [ ] Docs [Hamza]: Update CLI reference for decision viewing commands. - - [ ] Tests (Behave) [Rui]: Add tree/explain scenarios including superseded handling. - - [ ] Tests (Robot) [Rui]: Add `robot/decision_cli.robot` smoke tests. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/decision_cli_bench.py` for tree rendering overhead. - - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). - - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Tests (Behave) [Hamza]: Add tree/explain scenarios including superseded handling. + - [ ] Tests (Robot) [Hamza]: Add `robot/decision_cli.robot` smoke tests. + - [ ] Tests (ASV) [Hamza]: Add `asv/benchmarks/decision_cli_bench.py` for tree rendering overhead. + - [ ] Quality [Hamza]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Hamza]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Hamza]: `git commit -m "feat(cli): add plan tree and explain commands"`. **Parallel Group D4: Decision Correction [Jeff + Luis]** (depends on D2/D3) @@ -1901,21 +2174,21 @@ MERGE POINT: Day 30 - M6 Large Project Autonomy Target - [ ] Code [Jeff]: Revert flow with checkpoint rollback, supersede downstream decisions, and subtree re-exec. - [ ] Code [Jeff]: Persist correction attempt IDs and link them to superseded decisions. - [ ] Docs [Jeff]: Add `docs/reference/decision_correction.md` for revert behavior. - - [ ] Tests (Behave) [Rui]: Add revert + dry-run scenarios. - - [ ] Tests (Robot) [Rui]: Add revert integration tests with checkpoint rollback. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/decision_correction_revert_bench.py` for correction overhead. - - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). - - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Tests (Behave) [Jeff]: Add revert + dry-run scenarios. + - [ ] Tests (Robot) [Jeff]: Add revert integration tests with checkpoint rollback. + - [ ] Tests (ASV) [Jeff]: Add `asv/benchmarks/decision_correction_revert_bench.py` for correction overhead. + - [ ] Quality [Jeff]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Jeff]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Jeff]: `git commit -m "feat(service): add decision correction revert flow"`. - [ ] **COMMIT (Owner: Jeff | Group: D4.append) - Commit message: "feat(service): add decision correction append flow"** (Only check after all subitems + `nox` pass + coverage >=97%, then commit) - [ ] Code [Jeff]: Append flow creating fix subplan without rewriting history; link correction attempt + decision tree updates. - [ ] Code [Jeff]: Record append corrections as separate subtree with explicit lineage. - [ ] Docs [Jeff]: Extend correction docs for append mode and guidance-file usage. - - [ ] Tests (Behave) [Rui]: Add append correction scenarios. - - [ ] Tests (Robot) [Rui]: Add append correction smoke test. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/decision_correction_append_bench.py` for append overhead. - - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). - - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Tests (Behave) [Jeff]: Add append correction scenarios. + - [ ] Tests (Robot) [Jeff]: Add append correction smoke test. + - [ ] Tests (ASV) [Jeff]: Add `asv/benchmarks/decision_correction_append_bench.py` for append overhead. + - [ ] Quality [Jeff]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Jeff]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Jeff]: `git commit -m "feat(service): add decision correction append flow"`. **Parallel Group D5: Decision Persistence [Hamza + Luis]** (depends on D1) @@ -1923,38 +2196,38 @@ MERGE POINT: Day 30 - M6 Large Project Autonomy Target - [ ] Code [Hamza]: Add Alembic migrations for `decisions` and `context_snapshots` with indexes. - [ ] Code [Hamza]: Add indexes for plan_id, decision_type, and superseded flags for fast tree queries. - [ ] Docs [Hamza]: Update `docs/reference/database_schema.md` with decision tables. - - [ ] Tests (Behave) [Rui]: Add migration verification scenarios. - - [ ] Tests (Robot) [Rui]: Add DB migration smoke test. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/decision_migration_bench.py` for migration baseline. - - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). - - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Tests (Behave) [Hamza]: Add migration verification scenarios. + - [ ] Tests (Robot) [Hamza]: Add DB migration smoke test. + - [ ] Tests (ASV) [Hamza]: Add `asv/benchmarks/decision_migration_bench.py` for migration baseline. + - [ ] Quality [Hamza]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Hamza]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Hamza]: `git commit -m "feat(db): add decision tables"`. - [ ] **COMMIT (Owner: Hamza | Group: D5.repo) - Commit message: "feat(repo): add decision repositories"** (Only check after all subitems + `nox` pass + coverage >=97%, then commit) - [ ] Code [Hamza]: Implement DecisionRepository + ContextSnapshotRepository with tree queries and max-sequence helpers. - [ ] Code [Hamza]: Add repository methods for superseded decision lookup and subtree retrieval. - [ ] Docs [Hamza]: Document repository interfaces in `docs/reference/repositories.md`. - - [ ] Tests (Behave) [Rui]: Add decision persistence scenarios (create/query/superseded). - - [ ] Tests (Robot) [Rui]: Add repository integration smoke test. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/decision_repository_bench.py` for tree query performance. - - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). - - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Tests (Behave) [Hamza]: Add decision persistence scenarios (create/query/superseded). + - [ ] Tests (Robot) [Hamza]: Add repository integration smoke test. + - [ ] Tests (ASV) [Hamza]: Add `asv/benchmarks/decision_repository_bench.py` for tree query performance. + - [ ] Quality [Hamza]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Hamza]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Hamza]: `git commit -m "feat(repo): add decision repositories"`. - [ ] **COMMIT (Owner: Luis | Group: D5.di) - Commit message: "feat(di): wire decision services"** (Only check after all subitems + `nox` pass + coverage >=97%, then commit) - [ ] Code [Luis]: Wire decision repositories + services into DI and CLI. - [ ] Docs [Luis]: Update DI docs for decision wiring. - - [ ] Tests (Behave) [Rui]: Add DI wiring scenarios for decision commands. - - [ ] Tests (Robot) [Rui]: Add CLI smoke test using persisted decisions. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/decision_di_bench.py` for DI resolution overhead. - - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). - - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Tests (Behave) [Luis]: Add DI wiring scenarios for decision commands. + - [ ] Tests (Robot) [Luis]: Add CLI smoke test using persisted decisions. + - [ ] Tests (ASV) [Luis]: Add `asv/benchmarks/decision_di_bench.py` for DI resolution overhead. + - [ ] Quality [Luis]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Luis]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Luis]: `git commit -m "feat(di): wire decision services"`. - [ ] **COMMIT (Owner: Rui | Group: D5.tests) - Commit message: "test(persistence): add decision persistence suites"** (Only check after all subitems + `nox` pass + coverage >=97%, then commit) - [ ] Tests (Behave) [Rui]: Add `features/decision_persistence.feature` scenarios. - [ ] Tests (Robot) [Rui]: Add `robot/decision_persistence.robot` E2E coverage. - [ ] Docs [Rui]: Update `docs/development/testing.md` with decision suites. - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/decision_persistence_bench.py` for DB persistence throughput. - - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). - - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Quality [Rui]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Rui]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Rui]: `git commit -m "test(persistence): add decision persistence suites"`. **Parallel Group DOD: Definition of Done + Invariants [Luis + Jeff]** (depends on D2/D4) @@ -1962,22 +2235,22 @@ MERGE POINT: Day 30 - M6 Large Project Autonomy Target - [ ] Code [Luis]: Evaluate `definition_of_done` before apply; block apply with clear error if unmet. - [ ] Code [Luis]: Ensure DoD templating uses plan arguments and preserves template in plan metadata. - [ ] Docs [Luis]: Add `docs/reference/definition_of_done.md` with examples. - - [ ] Tests (Behave) [Rui]: Add DoD pass/fail scenarios. - - [ ] Tests (Robot) [Rui]: Add DoD integration smoke test. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/dod_evaluation_bench.py` for evaluation overhead. - - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). - - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Tests (Behave) [Luis]: Add DoD pass/fail scenarios. + - [ ] Tests (Robot) [Luis]: Add DoD integration smoke test. + - [ ] Tests (ASV) [Luis]: Add `asv/benchmarks/dod_evaluation_bench.py` for evaluation overhead. + - [ ] Quality [Luis]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Luis]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Luis]: `git commit -m "feat(dod): enforce definition-of-done gating"`. - [ ] **COMMIT (Owner: Jeff | Group: DOD.invariants) - Commit message: "feat(invariant): add invariant models and enforcement"** (Only check after all subitems + `nox` pass + coverage >=97%, then commit) - [ ] Code [Jeff]: Add invariant models, merge order (plan > project > action > global), and enforcement before strategize. - [ ] Code [Jeff]: Add Invariant Reconciliation Actor role and record `invariant_enforced` decisions. - [ ] Code [Jeff]: Add `agents invariant add/list/remove` CLI with scope flags. - [ ] Docs [Jeff]: Add `docs/reference/invariants.md` and update CLI reference. - - [ ] Tests (Behave) [Rui]: Add invariant merge + violation scenarios. - - [ ] Tests (Robot) [Rui]: Add invariant CLI integration tests. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/invariant_merge_bench.py` for merge overhead. - - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). - - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Tests (Behave) [Jeff]: Add invariant merge + violation scenarios. + - [ ] Tests (Robot) [Jeff]: Add invariant CLI integration tests. + - [ ] Tests (ASV) [Jeff]: Add `asv/benchmarks/invariant_merge_bench.py` for merge overhead. + - [ ] Quality [Jeff]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Jeff]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Jeff]: `git commit -m "feat(invariant): add invariant models and enforcement"`. @@ -1996,11 +2269,11 @@ MERGE POINT: Day 30 - M6 Large Project Autonomy Target - [ ] Code [Luis]: Extend `Plan` with `subplan_config`, `subplan_statuses`, `spawn_decision_id`, and helpers (`is_subplan`, `has_subplans`, `child_count`). - [ ] Code [Luis]: Add DecisionType constants for `subplan_spawn` and `subplan_parallel_spawn` and ensure models reference them. - [ ] Docs [Luis]: Add `docs/reference/subplan_model.md`. - - [ ] Tests (Behave) [Rui]: Add `features/subplan_model.feature` scenarios for config validation, dependency cycles, and parent/root helpers. - - [ ] Tests (Robot) [Rui]: Add `robot/subplan_model.robot` smoke tests. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/subplan_model_bench.py` for model validation. - - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). - - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Tests (Behave) [Luis]: Add `features/subplan_model.feature` scenarios for config validation, dependency cycles, and parent/root helpers. + - [ ] Tests (Robot) [Luis]: Add `robot/subplan_model.robot` smoke tests. + - [ ] Tests (ASV) [Luis]: Add `asv/benchmarks/subplan_model_bench.py` for model validation. + - [ ] Quality [Luis]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Luis]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Luis]: `git commit -m "feat(domain): add subplan config and status models"`. **Parallel Group E2: Subplan Spawning [Jeff + Aditya]** (depends on D2 + E1) @@ -2011,22 +2284,22 @@ MERGE POINT: Day 30 - M6 Large Project Autonomy Target - [ ] Code [Jeff]: Persist subplan config into child Plan metadata (`subplan_config`) and link `spawn_decision_id`. - [ ] Code [Jeff]: Link SUBPLAN_SPAWN decisions to created subplans and status tracking. - [ ] Docs [Jeff]: Add `docs/reference/subplan_service.md`. - - [ ] Tests (Behave) [Rui]: Add subplan spawn scenarios (inheritance, overrides, dependency ordering). - - [ ] Tests (Robot) [Rui]: Add subplan spawn integration tests. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/subplan_spawn_bench.py` for spawn throughput. - - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). - - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Tests (Behave) [Jeff]: Add subplan spawn scenarios (inheritance, overrides, dependency ordering). + - [ ] Tests (Robot) [Jeff]: Add subplan spawn integration tests. + - [ ] Tests (ASV) [Jeff]: Add `asv/benchmarks/subplan_spawn_bench.py` for spawn throughput. + - [ ] Quality [Jeff]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Jeff]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Jeff]: `git commit -m "feat(service): add subplan service and spawn workflow"`. - [ ] **COMMIT (Owner: Aditya | Group: E2.actor) - Commit message: "feat(actor): add plan_subplan tool and decision emission"** (Only check after all subitems + `nox` pass + coverage >=97%, then commit) - [ ] Code [Aditya]: Add `plan_subplan` tool to strategy actors and emit SUBPLAN_SPAWN decisions. - [ ] Code [Aditya]: Support `parallel=true` to emit SUBPLAN_PARALLEL_SPAWN and include dependency list. - [ ] Code [Aditya]: Include merge strategy, resource scope, and context view overrides in decision payload. - [ ] Docs [Aditya]: Update actor YAML examples for subplan emission. - - [ ] Tests (Behave) [Rui]: Add scenarios for subplan decision emission (parallel + dependencies). - - [ ] Tests (Robot) [Rui]: Add actor tool integration smoke tests. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/subplan_actor_tool_bench.py` for tool invocation overhead. - - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). - - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Tests (Behave) [Aditya]: Add scenarios for subplan decision emission (parallel + dependencies). + - [ ] Tests (Robot) [Aditya]: Add actor tool integration smoke tests. + - [ ] Tests (ASV) [Aditya]: Add `asv/benchmarks/subplan_actor_tool_bench.py` for tool invocation overhead. + - [ ] Quality [Aditya]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Aditya]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Aditya]: `git commit -m "feat(actor): add plan_subplan tool and decision emission"`. **Parallel Group E3: Parallel Execution [Luis + Jeff]** (depends on E1/E2) @@ -2036,38 +2309,38 @@ MERGE POINT: Day 30 - M6 Large Project Autonomy Target - [ ] Code [Luis]: Track status updates for subplans and propagate to parent plan (processing/complete/errored). - [ ] Code [Luis]: Add cancellation propagation from parent to child subplans. - [ ] Docs [Luis]: Add `docs/reference/subplan_execution.md`. - - [ ] Tests (Behave) [Rui]: Add parallel + dependency execution scenarios. - - [ ] Tests (Robot) [Rui]: Add parallel execution integration tests. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/subplan_scheduler_bench.py` for scheduler overhead. - - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). - - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Tests (Behave) [Luis]: Add parallel + dependency execution scenarios. + - [ ] Tests (Robot) [Luis]: Add parallel execution integration tests. + - [ ] Tests (ASV) [Luis]: Add `asv/benchmarks/subplan_scheduler_bench.py` for scheduler overhead. + - [ ] Quality [Luis]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Luis]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Luis]: `git commit -m "feat(service): add subplan scheduler and execution"`. -**Parallel Group E4: Result Merging [Jeff + Luis]** (depends on E3) +**Parallel Group E4: Result Merging [Jeff]** (depends on E3) - [ ] **COMMIT (Owner: Jeff | Group: E4.merge) - Commit message: "feat(merge): add subplan merge strategies"** (Only check after all subitems + `nox` pass + coverage >=97%, then commit) - [ ] Code [Jeff]: Add three-way merge strategy for file changes and conflict markers. - - [ ] Code [Luis]: Add sequential merge and JSON merge strategies; expose merge result artifacts. + - [ ] Code [Jeff]: Add sequential merge and JSON merge strategies; expose merge result artifacts. - [ ] Code [Jeff]: Add conflict artifact model (file_path, conflict_type, base/left/right snippets). - - [ ] Code [Luis]: Store merge output as ChangeSet and attach to parent plan for review. + - [ ] Code [Jeff]: Store merge output as ChangeSet and attach to parent plan for review. - [ ] Docs [Jeff]: Add `docs/reference/subplan_merge.md`. - - [ ] Tests (Behave) [Rui]: Add merge + conflict scenarios. - - [ ] Tests (Robot) [Rui]: Add merge integration tests for multi-subplan plans. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/subplan_merge_bench.py` for merge performance. - - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). - - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Tests (Behave) [Jeff]: Add merge + conflict scenarios. + - [ ] Tests (Robot) [Jeff]: Add merge integration tests for multi-subplan plans. + - [ ] Tests (ASV) [Jeff]: Add `asv/benchmarks/subplan_merge_bench.py` for merge performance. + - [ ] Quality [Jeff]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Jeff]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Jeff]: `git commit -m "feat(merge): add subplan merge strategies"`. -**Parallel Group E5: Multi-Project Plans [Hamza + Luis]** (depends on E2/E4) +**Parallel Group E5: Multi-Project Plans [Hamza]** (depends on E2/E4) - [ ] **COMMIT (Owner: Hamza | Group: E5.multi) - Commit message: "feat(plan): add multi-project subplan support"** (Only check after all subitems + `nox` pass + coverage >=97%, then commit) - [ ] Code [Hamza]: Allow plans to target multiple projects with separate resource link contexts. - - [ ] Code [Luis]: Ensure sandbox isolation and cross-project dependency resolution. + - [ ] Code [Hamza]: Ensure sandbox isolation and cross-project dependency resolution. - [ ] Code [Hamza]: Add plan metadata to track project-specific ChangeSets and validation summaries. - [ ] Docs [Hamza]: Add `docs/reference/multi_project_plans.md`. - - [ ] Tests (Behave) [Rui]: Add multi-project subplan scenarios. - - [ ] Tests (Robot) [Rui]: Add multi-project integration tests. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/multi_project_bench.py` for multi-project overhead. - - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). - - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Tests (Behave) [Hamza]: Add multi-project subplan scenarios. + - [ ] Tests (Robot) [Hamza]: Add multi-project integration tests. + - [ ] Tests (ASV) [Hamza]: Add `asv/benchmarks/multi_project_bench.py` for multi-project overhead. + - [ ] Quality [Hamza]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Hamza]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Hamza]: `git commit -m "feat(plan): add multi-project subplan support"`. @@ -2076,19 +2349,19 @@ MERGE POINT: Day 30 - M6 Large Project Autonomy Target **Target: Milestone M6 (+30 days)** **Local-mode only**: large-project autonomy is required; server connectivity remains stubbed. -**Parallel Group G1: Large-Project Decomposition [Jeff + Luis]** +**Parallel Group G1: Large-Project Decomposition [Jeff]** - [ ] **COMMIT (Owner: Jeff | Group: G1.decompose) - Commit message: "feat(plan): add large-project decomposition and dependency closure"** (Only check after all subitems + `nox` pass + coverage >=97%, then commit) - [ ] Code [Jeff]: Add hierarchical decomposition with 4+ levels and bounded context per subplan. - [ ] Code [Jeff]: Implement decomposition heuristics (max_files_per_subplan, max_tokens_per_subplan, language/dir clustering). - - [ ] Code [Luis]: Add dependency closure computation for large graphs and DAG execution ordering. - - [ ] Code [Luis]: Add bounded dependency closure with cutoff thresholds and memoization for 10K+ files. + - [ ] Code [Jeff]: Add dependency closure computation for large graphs and DAG execution ordering. + - [ ] Code [Jeff]: Add bounded dependency closure with cutoff thresholds and memoization for 10K+ files. - [ ] Code [Jeff]: Record decomposition decisions in DecisionService (strategy_choice + subplan_spawn entries). - [ ] Docs [Jeff]: Add `docs/reference/large_project_decomposition.md`. - - [ ] Tests (Behave) [Rui]: Add deep hierarchy + dependency closure scenarios. - - [ ] Tests (Robot) [Rui]: Add large-project decomposition integration tests. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/large_project_decompose_bench.py` for decomposition runtime. - - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). - - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Tests (Behave) [Jeff]: Add deep hierarchy + dependency closure scenarios. + - [ ] Tests (Robot) [Jeff]: Add large-project decomposition integration tests. + - [ ] Tests (ASV) [Jeff]: Add `asv/benchmarks/large_project_decompose_bench.py` for decomposition runtime. + - [ ] Quality [Jeff]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Jeff]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Jeff]: `git commit -m "feat(plan): add large-project decomposition and dependency closure"`. **Parallel Group G2: Checkpointing & Rollback [Luis]** @@ -2098,11 +2371,11 @@ MERGE POINT: Day 30 - M6 Large Project Autonomy Target - [ ] Code [Luis]: Implement `plan rollback ` command. - [ ] Code [Luis]: Implement git-worktree checkpoint snapshots (commit hash or patch) and rollback restore. - [ ] Docs [Luis]: Add `docs/reference/checkpointing.md`. - - [ ] Tests (Behave) [Rui]: Add checkpoint/rollback scenarios. - - [ ] Tests (Robot) [Rui]: Add rollback integration tests. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/checkpoint_rollback_bench.py` for rollback latency. - - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). - - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Tests (Behave) [Luis]: Add checkpoint/rollback scenarios. + - [ ] Tests (Robot) [Luis]: Add rollback integration tests. + - [ ] Tests (ASV) [Luis]: Add `asv/benchmarks/checkpoint_rollback_bench.py` for rollback latency. + - [ ] Quality [Luis]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Luis]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Luis]: `git commit -m "feat(checkpoint): add checkpointing and rollback"`. **Parallel Group G3: Semantic Validation [Luis]** @@ -2111,11 +2384,11 @@ MERGE POINT: Day 30 - M6 Large Project Autonomy Target - [ ] Code [Luis]: Add rule registry for semantic validators (dependency cycles, API misuse, missing symbols). - [ ] Code [Luis]: Integrate semantic validation results into ValidationPipeline as informational by default. - [ ] Docs [Luis]: Add `docs/reference/semantic_validation.md`. - - [ ] Tests (Behave) [Rui]: Add semantic validation scenarios. - - [ ] Tests (Robot) [Rui]: Add semantic validation integration tests. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/semantic_validation_bench.py` for validation cost. - - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). - - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Tests (Behave) [Luis]: Add semantic validation scenarios. + - [ ] Tests (Robot) [Luis]: Add semantic validation integration tests. + - [ ] Tests (ASV) [Luis]: Add `asv/benchmarks/semantic_validation_bench.py` for validation cost. + - [ ] Quality [Luis]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Luis]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Luis]: `git commit -m "feat(validation): add semantic validation service"`. **Parallel Group G4: Context Tiers & Views [Hamza + Rui]** @@ -2125,11 +2398,11 @@ MERGE POINT: Day 30 - M6 Large Project Autonomy Target - [ ] Code [Hamza]: Add per-actor context views (strategist/executor/reviewer) and filtered presentation. - [ ] Code [Hamza]: Add summarization hook when demoting to cold tier. - [ ] Docs [Hamza]: Add `docs/reference/context_tiers.md`. - - [ ] Tests (Behave) [Rui]: Add context tier scenarios. - - [ ] Tests (Robot) [Rui]: Add context tier integration tests. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/context_tiers_bench.py` for tier lookup performance. - - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). - - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Tests (Behave) [Hamza]: Add context tier scenarios. + - [ ] Tests (Robot) [Hamza]: Add context tier integration tests. + - [ ] Tests (ASV) [Hamza]: Add `asv/benchmarks/context_tiers_bench.py` for tier lookup performance. + - [ ] Quality [Hamza]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Hamza]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Hamza]: `git commit -m "feat(context): add hot/warm/cold tiers and actor views"`. **Parallel Group G5: Cost & Risk Estimation [Hamza]** @@ -2137,22 +2410,22 @@ MERGE POINT: Day 30 - M6 Large Project Autonomy Target - [ ] Code [Hamza]: Add optional `estimation_actor` role and cost/risk estimation outputs. - [ ] Code [Hamza]: Persist estimation output to plan metadata (cost_estimate, risk_score, duration_estimate). - [ ] Docs [Hamza]: Add `docs/reference/estimation.md` with output format. - - [ ] Tests (Behave) [Rui]: Add estimation scenarios. - - [ ] Tests (Robot) [Rui]: Add estimation integration smoke tests. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/estimation_actor_bench.py` for estimation runtime. - - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). - - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Tests (Behave) [Hamza]: Add estimation scenarios. + - [ ] Tests (Robot) [Hamza]: Add estimation integration smoke tests. + - [ ] Tests (ASV) [Hamza]: Add `asv/benchmarks/estimation_actor_bench.py` for estimation runtime. + - [ ] Quality [Hamza]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Hamza]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Hamza]: `git commit -m "feat(estimation): add cost and risk estimation actor"`. -**Parallel Group G6: CLI Polish [All]** +**Parallel Group G6: CLI Polish [Jeff]** - [ ] **COMMIT (Owner: Jeff | Group: G6.cli) - Commit message: "chore(cli): polish help and output"** (Only check after all subitems + `nox` pass + coverage >=97%, then commit) - - [ ] Code [All]: Standardize help text, progress indicators, and error messages with recovery hints. - - [ ] Code [All]: Ensure `--format` outputs are consistent (rich/color/table/plain/json/yaml) across core commands. - - [ ] Docs [All]: Update CLI output examples where needed. - - [ ] Tests (Robot) [Rui]: Add CLI UX smoke tests for critical commands. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/cli_render_bench.py` for output rendering overhead. - - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). - - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Code [Jeff]: Standardize help text, progress indicators, and error messages with recovery hints. + - [ ] Code [Jeff]: Ensure `--format` outputs are consistent (rich/color/table/plain/json/yaml) across core commands. + - [ ] Docs [Jeff]: Update CLI output examples where needed. + - [ ] Tests (Robot) [Jeff]: Add CLI UX smoke tests for critical commands. + - [ ] Tests (ASV) [Jeff]: Add `asv/benchmarks/cli_render_bench.py` for output rendering overhead. + - [ ] Quality [Jeff]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Jeff]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Jeff]: `git commit -m "chore(cli): polish help and output"`. **--- MERGE POINT 2: Day 30 - Large Project Autonomy Target (LOCAL MODE ONLY) ---** @@ -2174,11 +2447,11 @@ By Day 30, the system must be able to (all in LOCAL MODE, server connectivity is - [ ] Code [Luis]: Add protocol stubs for `ServerClient`, `RemoteExecutionClient`, and `AuthClient` with NotImplementedError. - [ ] Code [Luis]: Add `agents connect ` CLI stub in `cli/commands/server_client.py`. - [ ] Docs [Luis]: Add `docs/reference/server_client_stubs.md` noting client-only behavior. - - [ ] Tests (Behave) [Rui]: Add stub behavior scenarios. - - [ ] Tests (Robot) [Rui]: Add CLI stub smoke test. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/server_stub_bench.py` (baseline no-op). - - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). - - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Tests (Behave) [Luis]: Add stub behavior scenarios. + - [ ] Tests (Robot) [Luis]: Add CLI stub smoke test. + - [ ] Tests (ASV) [Luis]: Add `asv/benchmarks/server_stub_bench.py` (baseline no-op). + - [ ] Quality [Luis]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Luis]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Luis]: `git commit -m "feat(interfaces): add server client stubs"`. **M7 SUCCESS CRITERIA** (Post-Day 30): @@ -2200,22 +2473,22 @@ By Day 30, the system must be able to (all in LOCAL MODE, server connectivity is - [ ] Code [Luis]: Add job enqueue hooks for plan execute/apply when async is enabled via config flag (no new CLI flags). - [ ] Code [Luis]: Add cancellation token support and ensure cancellation propagates to tool execution. - [ ] Docs [Luis]: Update `docs/reference/async_architecture.md` with execution flow, job states, and shutdown rules. - - [ ] Tests (Behave) [Rui]: Add `features/async_execution.feature` for async command handling (enqueue, worker pick-up, cancel). - - [ ] Tests (Robot) [Rui]: Add `robot/async_execution.robot` smoke tests. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/async_execution_bench.py` for worker scheduling overhead. - - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). - - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Tests (Behave) [Luis]: Add `features/async_execution.feature` for async command handling (enqueue, worker pick-up, cancel). + - [ ] Tests (Robot) [Luis]: Add `robot/async_execution.robot` smoke tests. + - [ ] Tests (ASV) [Luis]: Add `asv/benchmarks/async_execution_bench.py` for worker scheduling overhead. + - [ ] Quality [Luis]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Luis]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Luis]: `git commit -m "feat(async): add async command execution and workers"`. - [ ] **COMMIT (Owner: Luis | Group: 10A.retry) - Commit message: "feat(async): wire retry policies into services"** (Only check after all subitems + `nox` pass + coverage >=97%, then commit) - [ ] Code [Luis]: Integrate retry/circuit breaker policies into service layer operations. - [ ] Code [Luis]: Add retry policy configuration keys (max_attempts, base_delay, max_delay, jitter) to settings. - [ ] Code [Luis]: Ensure retries are only applied to idempotent operations (repository reads, validation calls) and never to applies. - [ ] Docs [Luis]: Document retry policy defaults and override points. - - [ ] Tests (Behave) [Rui]: Add retry/circuit breaker behavior scenarios. - - [ ] Tests (Robot) [Rui]: Add resilience smoke tests. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/retry_policy_bench.py` for retry overhead. - - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). - - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Tests (Behave) [Luis]: Add retry/circuit breaker behavior scenarios. + - [ ] Tests (Robot) [Luis]: Add resilience smoke tests. + - [ ] Tests (ASV) [Luis]: Add `asv/benchmarks/retry_policy_bench.py` for retry overhead. + - [ ] Quality [Luis]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Luis]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Luis]: `git commit -m "feat(async): wire retry policies into services"`. **Parallel Group 10B: Selective Quality Review [Brent]** @@ -2223,9 +2496,9 @@ By Day 30, the system must be able to (all in LOCAL MODE, server connectivity is - [ ] Docs [Brent]: Create `docs/development/review_playbook.md` with focus areas and skip rules. - [ ] Docs [Brent]: Add priority matrix and review SLA guidance. - [ ] Docs [Brent]: Add checklist templates for architecture review, CLI review, and DB migration review. - - [ ] Tests (Behave) [Rui]: Add scenarios validating review playbook references exist. - - [ ] Tests (Robot) [Rui]: Add docs build smoke test covering the new guide. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/docs_build_bench.py` for docs build baseline. + - [ ] Tests (Behave) [Brent]: Add scenarios validating review playbook references exist. + - [ ] Tests (Robot) [Brent]: Add docs build smoke test covering the new guide. + - [ ] Tests (ASV) [Brent]: Add `asv/benchmarks/docs_build_bench.py` for docs build baseline. - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Brent]: `git commit -m "docs(qa): add review playbook and priority matrix"`. @@ -2235,9 +2508,9 @@ By Day 30, the system must be able to (all in LOCAL MODE, server connectivity is - [ ] Code [Brent]: Add shared edge-case fixtures under `features/fixtures/validation/`. - [ ] Code [Brent]: Add fixtures for malformed tool outputs, missing resources, and validation timeouts. - [ ] Docs [Brent]: Update `docs/development/testing.md` with validation test catalog. - - [ ] Tests (Behave) [Rui]: Add edge-case scenarios for concurrency, conflicts, rollbacks, and timeouts. - - [ ] Tests (Robot) [Rui]: Add integration coverage for edge-case suites. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/validation_edge_bench.py` for edge-case runtime. + - [ ] Tests (Behave) [Brent]: Add edge-case scenarios for concurrency, conflicts, rollbacks, and timeouts. + - [ ] Tests (Robot) [Brent]: Add integration coverage for edge-case suites. + - [ ] Tests (ASV) [Brent]: Add `asv/benchmarks/validation_edge_bench.py` for edge-case runtime. - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Brent]: `git commit -m "test(validation): add edge case suites"`. @@ -2245,19 +2518,19 @@ By Day 30, the system must be able to (all in LOCAL MODE, server connectivity is - [ ] Code [Luis]: Add semantic validation fixtures and error-pattern samples. - [ ] Code [Luis]: Add fixtures for language-porting mismatches and dependency graph violations. - [ ] Docs [Luis]: Document semantic validation coverage expectations. - - [ ] Tests (Behave) [Rui]: Add semantic validation scenarios. - - [ ] Tests (Robot) [Rui]: Add semantic validation integration tests. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/semantic_validation_suite_bench.py` for suite runtime. - - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). - - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Tests (Behave) [Luis]: Add semantic validation scenarios. + - [ ] Tests (Robot) [Luis]: Add semantic validation integration tests. + - [ ] Tests (ASV) [Luis]: Add `asv/benchmarks/semantic_validation_suite_bench.py` for suite runtime. + - [ ] Quality [Luis]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Luis]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Luis]: `git commit -m "test(validation): add semantic validation suites"`. - [ ] **COMMIT (Owner: Brent | Group: 10C.performance) - Commit message: "test(perf): add scale test fixtures"** (Only check after all subitems + `nox` pass + coverage >=97%, then commit) - [ ] Code [Brent]: Add scale fixtures for 1K/5K/10K file repos in `features/fixtures/scale/`. - [ ] Code [Brent]: Add scriptless fixture generator instructions (documented, no helper scripts). - [ ] Docs [Brent]: Add scale test runbook and environment notes. - - [ ] Tests (Behave) [Rui]: Add scale test scenarios validating thresholds. - - [ ] Tests (Robot) [Rui]: Add large-project Robot tests for performance runs. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/scale_fixture_bench.py` for baseline performance. + - [ ] Tests (Behave) [Brent]: Add scale test scenarios validating thresholds. + - [ ] Tests (Robot) [Brent]: Add large-project Robot tests for performance runs. + - [ ] Tests (ASV) [Brent]: Add `asv/benchmarks/scale_fixture_bench.py` for baseline performance. - [ ] Quality [Brent]: Run `nox` (all default sessions, including benchmark). - [ ] Quality [Brent]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Brent]: `git commit -m "test(perf): add scale test fixtures"`. @@ -2274,71 +2547,78 @@ By Day 30, the system must be able to (all in LOCAL MODE, server connectivity is - [ ] **COMMIT (Owner: Luis | Group: SEC1.eval) - Commit message: "fix(security): remove eval-based config parsing"** (Only check after all subitems + `nox` pass + coverage >=97%, then commit) - [ ] Code [Luis]: Audit and remove all `eval`/`exec`/`compile` usage from production config paths. - [ ] Docs [Luis]: Add `docs/reference/security_eval.md` with replacement patterns. - - [ ] Tests (Behave) [Rui]: Add `features/security_eval.feature` scenarios. - - [ ] Tests (Robot) [Rui]: Add `robot/security_eval.robot` smoke tests. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/security_eval_bench.py` for config parsing baseline. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] Tests (Behave) [Luis]: Add `features/security_eval.feature` scenarios. + - [ ] Tests (Robot) [Luis]: Add `robot/security_eval.robot` smoke tests. + - [ ] Tests (ASV) [Luis]: Add `asv/benchmarks/security_eval_bench.py` for config parsing baseline. + - [ ] Quality [Luis]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Luis]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Luis]: `git commit -m "fix(security): remove eval-based config parsing"`. **Parallel Group SEC2: Template Injection Prevention [Luis]** - [ ] **COMMIT (Owner: Luis | Group: SEC2.template) - Commit message: "fix(security): harden template rendering"** (Only check after all subitems + `nox` pass + coverage >=97%, then commit) - [ ] Code [Luis]: Replace unsafe template usage with a sandboxed renderer and strict token set. - [ ] Docs [Luis]: Add `docs/reference/template_security.md` with safe patterns. - - [ ] Tests (Behave) [Rui]: Add `features/security_templates.feature` scenarios. - - [ ] Tests (Robot) [Rui]: Add `robot/security_templates.robot` smoke tests. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/security_template_bench.py` for render baseline. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] Tests (Behave) [Luis]: Add `features/security_templates.feature` scenarios. + - [ ] Tests (Robot) [Luis]: Add `robot/security_templates.robot` smoke tests. + - [ ] Tests (ASV) [Luis]: Add `asv/benchmarks/security_template_bench.py` for render baseline. + - [ ] Quality [Luis]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Luis]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Luis]: `git commit -m "fix(security): harden template rendering"`. **Parallel Group SEC3: Exception Handling Audit [Luis]** - [ ] **COMMIT (Owner: Luis | Group: SEC3.exceptions) - Commit message: "fix(security): enforce explicit exception handling"** (Only check after all subitems + `nox` pass + coverage >=97%, then commit) - [ ] Code [Luis]: Replace silent exception handling with explicit errors and context propagation. - [ ] Docs [Luis]: Document error propagation standards and logging rules. - - [ ] Tests (Behave) [Rui]: Add `features/security_exceptions.feature` scenarios. - - [ ] Tests (Robot) [Rui]: Add exception handling integration smoke tests. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/security_exception_bench.py` for error path overhead baseline. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] Tests (Behave) [Luis]: Add `features/security_exceptions.feature` scenarios. + - [ ] Tests (Robot) [Luis]: Add exception handling integration smoke tests. + - [ ] Tests (ASV) [Luis]: Add `asv/benchmarks/security_exception_bench.py` for error path overhead baseline. + - [ ] Quality [Luis]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Luis]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Luis]: `git commit -m "fix(security): enforce explicit exception handling"`. **Parallel Group SEC4: Async Lifecycle Correctness [Luis]** - [ ] **COMMIT (Owner: Luis | Group: SEC4.async) - Commit message: "fix(security): close async resources and leaks"** (Only check after all subitems + `nox` pass + coverage >=97%, then commit) - [ ] Code [Luis]: Close async resources, checkpoint files, and subscription leaks with retention policies. - [ ] Docs [Luis]: Add `docs/reference/async_safety.md` on cleanup rules. - - [ ] Tests (Behave) [Rui]: Add `features/security_async.feature` scenarios. - - [ ] Tests (Robot) [Rui]: Add async cleanup integration tests. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/security_async_cleanup_bench.py` for cleanup overhead baseline. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] Tests (Behave) [Luis]: Add `features/security_async.feature` scenarios. + - [ ] Tests (Robot) [Luis]: Add async cleanup integration tests. + - [ ] Tests (ASV) [Luis]: Add `asv/benchmarks/security_async_cleanup_bench.py` for cleanup overhead baseline. + - [ ] Quality [Luis]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Luis]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Luis]: `git commit -m "fix(security): close async resources and leaks"`. **Parallel Group SEC5: Secrets Management [Hamza]** - [ ] **COMMIT (Owner: Hamza | Group: SEC5.secrets) - Commit message: "feat(security): add secrets masking and validation"** (Only check after all subitems + `nox` pass + coverage >=97%, then commit) - [ ] Code [Hamza]: Mask credentials in logs, validate required keys, and block secret leakage in outputs. - [ ] Docs [Hamza]: Add `docs/reference/secrets_handling.md`. - - [ ] Tests (Behave) [Rui]: Add `features/security_secrets.feature` scenarios. - - [ ] Tests (Robot) [Rui]: Add secrets handling integration smoke tests. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/security_secrets_bench.py` for masking overhead baseline. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] Tests (Behave) [Hamza]: Add `features/security_secrets.feature` scenarios. + - [ ] Tests (Robot) [Hamza]: Add secrets handling integration smoke tests. + - [ ] Tests (ASV) [Hamza]: Add `asv/benchmarks/security_secrets_bench.py` for masking overhead baseline. + - [ ] Quality [Hamza]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Hamza]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Hamza]: `git commit -m "feat(security): add secrets masking and validation"`. **Parallel Group SEC6: Read-Only Enforcement [Luis]** - [ ] **COMMIT (Owner: Luis | Group: SEC6.readonly) - Commit message: "feat(security): enforce read-only actions"** (Only check after all subitems + `nox` pass + coverage >=97%, then commit) - [ ] Code [Luis]: Validate read-only actions only use read-only skills at execution time. - [ ] Docs [Luis]: Add `docs/reference/read_only_actions.md`. - - [ ] Tests (Behave) [Rui]: Add `features/security_readonly.feature` scenarios. - - [ ] Tests (Robot) [Rui]: Add read-only enforcement integration tests. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/security_readonly_bench.py` for enforcement overhead baseline. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] Tests (Behave) [Luis]: Add `features/security_readonly.feature` scenarios. + - [ ] Tests (Robot) [Luis]: Add read-only enforcement integration tests. + - [ ] Tests (ASV) [Luis]: Add `asv/benchmarks/security_readonly_bench.py` for enforcement overhead baseline. + - [ ] Quality [Luis]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Luis]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Luis]: `git commit -m "feat(security): enforce read-only actions"`. - - [ ] Note: Safety profile enforcement is deferred; see Section 18 POST1. + - [ ] Note: Safety profile enforcement is deferred; see Section 18 POST.safety. **Parallel Group SEC7: Audit Logging [Hamza]** - [ ] **COMMIT (Owner: Hamza | Group: SEC7.audit) - Commit message: "feat(security): add audit logging for apply"** (Only check after all subitems + `nox` pass + coverage >=97%, then commit) - [ ] Code [Hamza]: Add audit log model, migration, and `agents audit list` CLI command. - [ ] Docs [Hamza]: Add `docs/reference/audit_logging.md`. - - [ ] Tests (Behave) [Rui]: Add `features/security_audit.feature` scenarios. - - [ ] Tests (Robot) [Rui]: Add audit logging integration tests. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/security_audit_bench.py` for log write overhead baseline. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] Tests (Behave) [Hamza]: Add `features/security_audit.feature` scenarios. + - [ ] Tests (Robot) [Hamza]: Add audit logging integration tests. + - [ ] Tests (ASV) [Hamza]: Add `asv/benchmarks/security_audit_bench.py` for log write overhead baseline. + - [ ] Quality [Hamza]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Hamza]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Hamza]: `git commit -m "feat(security): add audit logging for apply"`. ### Section 12: Session & Provider Fixes [WORKSTREAM G - Hamza] @@ -2351,10 +2631,11 @@ By Day 30, the system must be able to (all in LOCAL MODE, server connectivity is - [ ] Code [Hamza]: Implement SessionService with create/list/show/delete/export/import/tell operations per spec. - [ ] Code [Hamza]: Implement CLI commands `session create/list/show/delete/export/import/tell` with rich/plain/json output. - [ ] Docs [Hamza]: Add `docs/reference/session_management.md` with CLI examples and output fields. - - [ ] Tests (Behave) [Rui]: Add `features/session_management.feature` scenarios for create/list/show/delete/export/import/tell. - - [ ] Tests (Robot) [Rui]: Add session CLI smoke tests. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/session_cli_bench.py` for session command overhead. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] Tests (Behave) [Hamza]: Add `features/session_management.feature` scenarios for create/list/show/delete/export/import/tell. + - [ ] Tests (Robot) [Hamza]: Add session CLI smoke tests. + - [ ] Tests (ASV) [Hamza]: Add `asv/benchmarks/session_cli_bench.py` for session command overhead. + - [ ] Quality [Hamza]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Hamza]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Hamza]: `git commit -m "feat(session): add session model and CLI"`. **Parallel Group SESS2: Memory Persistence [Hamza]** @@ -2362,10 +2643,11 @@ By Day 30, the system must be able to (all in LOCAL MODE, server connectivity is - [ ] Code [Hamza]: Persist MemoryService history keyed by session_id with backend config and retention limits. - [ ] Code [Hamza]: Add `session_messages` table (session_id, role, content, created_at) and indexing for recent retrieval. - [ ] Docs [Hamza]: Document memory backend options, retention policy, and export/import behavior. - - [ ] Tests (Behave) [Rui]: Add `features/memory_persistence.feature` scenarios for save/load/trim. - - [ ] Tests (Robot) [Rui]: Add memory persistence integration tests. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/memory_persistence_bench.py` for storage overhead baseline. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] Tests (Behave) [Hamza]: Add `features/memory_persistence.feature` scenarios for save/load/trim. + - [ ] Tests (Robot) [Hamza]: Add memory persistence integration tests. + - [ ] Tests (ASV) [Hamza]: Add `asv/benchmarks/memory_persistence_bench.py` for storage overhead baseline. + - [ ] Quality [Hamza]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Hamza]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Hamza]: `git commit -m "feat(memory): persist session history"`. **Parallel Group PROV1: Provider Fixes [Luis]** @@ -2373,10 +2655,11 @@ By Day 30, the system must be able to (all in LOCAL MODE, server connectivity is - [ ] Code [Luis]: Remove FakeListLLM fallback, fix auto-debug provider usage, and implement provider auto-detection. - [ ] Code [Luis]: Update settings validation to fail fast when no providers are configured and no mock flag is set. - [ ] Docs [Luis]: Update provider configuration docs and error messages. - - [ ] Tests (Behave) [Rui]: Add `features/provider_fixes.feature` scenarios. - - [ ] Tests (Robot) [Rui]: Add provider detection smoke tests. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/provider_selection_bench.py` for provider resolution baseline. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] Tests (Behave) [Luis]: Add `features/provider_fixes.feature` scenarios. + - [ ] Tests (Robot) [Luis]: Add provider detection smoke tests. + - [ ] Tests (ASV) [Luis]: Add `asv/benchmarks/provider_selection_bench.py` for provider resolution baseline. + - [ ] Quality [Luis]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Luis]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Luis]: `git commit -m "fix(provider): remove FakeListLLM defaults"`. **Parallel Group PROV2: Cost Controls & Fallback [Luis]** @@ -2384,10 +2667,11 @@ By Day 30, the system must be able to (all in LOCAL MODE, server connectivity is - [ ] Code [Luis]: Track tokens/costs, enforce budgets, rate limits, and provider fallback order. - [ ] Code [Luis]: Add cost tracking fields to plan execution metadata and surface in `plan status`. - [ ] Docs [Luis]: Add `docs/reference/cost_controls.md` with config keys and thresholds. - - [ ] Tests (Behave) [Rui]: Add `features/cost_controls.feature` scenarios. - - [ ] Tests (Robot) [Rui]: Add cost control integration smoke tests. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/cost_controls_bench.py` for cost check overhead. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] Tests (Behave) [Luis]: Add `features/cost_controls.feature` scenarios. + - [ ] Tests (Robot) [Luis]: Add cost control integration smoke tests. + - [ ] Tests (ASV) [Luis]: Add `asv/benchmarks/cost_controls_bench.py` for cost check overhead. + - [ ] Quality [Luis]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Luis]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Luis]: `git commit -m "feat(provider): add cost controls and fallback"`. --- @@ -2399,10 +2683,11 @@ By Day 30, the system must be able to (all in LOCAL MODE, server connectivity is - [ ] Code [Hamza]: Implement `version`, `info`, and `diagnostics` commands with rich/plain/json/yaml output parity. - [ ] Code [Hamza]: Add diagnostics checks for config file, database, providers, and filesystem permissions per spec. - [ ] Docs [Hamza]: Update CLI reference with core system commands and sample outputs. - - [ ] Tests (Behave) [Rui]: Add `features/cli_core.feature` scenarios for each command output. - - [ ] Tests (Robot) [Rui]: Add core command smoke tests. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/cli_core_bench.py` for command runtime baseline. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] Tests (Behave) [Hamza]: Add `features/cli_core.feature` scenarios for each command output. + - [ ] Tests (Robot) [Hamza]: Add core command smoke tests. + - [ ] Tests (ASV) [Hamza]: Add `asv/benchmarks/cli_core_bench.py` for command runtime baseline. + - [ ] Quality [Hamza]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Hamza]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Hamza]: `git commit -m "feat(cli): add version/info/diagnostics"`. **Parallel Group CLI1: Plan Interaction Commands [Hamza]** @@ -2410,10 +2695,11 @@ By Day 30, the system must be able to (all in LOCAL MODE, server connectivity is - [ ] Code [Hamza]: Implement `plan prompt`, `plan diff`, and `plan artifacts` commands. - [ ] Code [Hamza]: Ensure `plan diff` supports `--format` output and includes validation summary. - [ ] Docs [Hamza]: Update CLI reference with plan interaction commands and output formats. - - [ ] Tests (Behave) [Rui]: Add `features/plan_interaction_cli.feature` scenarios. - - [ ] Tests (Robot) [Rui]: Add plan interaction CLI smoke tests. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/plan_cli_interaction_bench.py` for diff/artifacts runtime. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] Tests (Behave) [Hamza]: Add `features/plan_interaction_cli.feature` scenarios. + - [ ] Tests (Robot) [Hamza]: Add plan interaction CLI smoke tests. + - [ ] Tests (ASV) [Hamza]: Add `asv/benchmarks/plan_cli_interaction_bench.py` for diff/artifacts runtime. + - [ ] Quality [Hamza]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Hamza]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Hamza]: `git commit -m "feat(cli): add plan prompt/diff/artifacts"`. **Parallel Group CLI2: Configuration Commands [Hamza]** @@ -2421,10 +2707,11 @@ By Day 30, the system must be able to (all in LOCAL MODE, server connectivity is - [ ] Code [Hamza]: Implement `config set/get/list` and `providers list` commands. - [ ] Code [Hamza]: Support `config list` regex filtering and `--filter-values` per spec. - [ ] Docs [Hamza]: Update CLI reference with configuration commands and filtering examples. - - [ ] Tests (Behave) [Rui]: Add `features/config_cli.feature` scenarios. - - [ ] Tests (Robot) [Rui]: Add config CLI smoke tests. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/config_cli_bench.py` for command parsing baseline. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] Tests (Behave) [Hamza]: Add `features/config_cli.feature` scenarios. + - [ ] Tests (Robot) [Hamza]: Add config CLI smoke tests. + - [ ] Tests (ASV) [Hamza]: Add `asv/benchmarks/config_cli_bench.py` for command parsing baseline. + - [ ] Quality [Hamza]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Hamza]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Hamza]: `git commit -m "feat(cli): add config and provider commands"`. **Parallel Group CLI3: Context Commands [Hamza]** @@ -2432,10 +2719,11 @@ By Day 30, the system must be able to (all in LOCAL MODE, server connectivity is - [ ] Code [Hamza]: Implement `project context set/show` and `actor context set/show` commands. - [ ] Code [Hamza]: Support include/exclude resource and path globs, token limits, and summarize flags per spec. - [ ] Docs [Hamza]: Update CLI reference with context policy usage and examples. - - [ ] Tests (Behave) [Rui]: Add `features/context_cli.feature` scenarios. - - [ ] Tests (Robot) [Rui]: Add context CLI smoke tests. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/context_cli_bench.py` for command runtime baseline. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] Tests (Behave) [Hamza]: Add `features/context_cli.feature` scenarios. + - [ ] Tests (Robot) [Hamza]: Add context CLI smoke tests. + - [ ] Tests (ASV) [Hamza]: Add `asv/benchmarks/context_cli_bench.py` for command runtime baseline. + - [ ] Quality [Hamza]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Hamza]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Hamza]: `git commit -m "feat(cli): add context policy commands"`. --- @@ -2448,10 +2736,11 @@ By Day 30, the system must be able to (all in LOCAL MODE, server connectivity is - [ ] Code [Luis]: Add `locks` table with owner_id, resource_type, resource_id, acquired_at, expires_at. - [ ] Code [Luis]: Ensure locks are enforced in PlanLifecycleService transitions and SubplanService scheduling. - [ ] Docs [Luis]: Add `docs/reference/concurrency.md` with lock behavior. - - [ ] Tests (Behave) [Rui]: Add `features/concurrency.feature` scenarios for lock contention and expiry. - - [ ] Tests (Robot) [Rui]: Add lock integration smoke tests. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/concurrency_lock_bench.py` for lock overhead baseline. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] Tests (Behave) [Luis]: Add `features/concurrency.feature` scenarios for lock contention and expiry. + - [ ] Tests (Robot) [Luis]: Add lock integration smoke tests. + - [ ] Tests (ASV) [Luis]: Add `asv/benchmarks/concurrency_lock_bench.py` for lock overhead baseline. + - [ ] Quality [Luis]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Luis]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Luis]: `git commit -m "feat(concurrency): add plan and project locks"`. **Parallel Group CONC2: Resumable Execution [Luis]** @@ -2459,10 +2748,11 @@ By Day 30, the system must be able to (all in LOCAL MODE, server connectivity is - [ ] Code [Luis]: Persist step-level progress and implement `plan resume` with graceful shutdown handling. - [ ] Code [Luis]: Add resume checkpoints tied to decision IDs and sandbox checkpoints. - [ ] Docs [Luis]: Update plan lifecycle docs for resume behavior. - - [ ] Tests (Behave) [Rui]: Add `features/plan_resume.feature` scenarios. - - [ ] Tests (Robot) [Rui]: Add resume integration tests. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/plan_resume_bench.py` for resume overhead baseline. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] Tests (Behave) [Luis]: Add `features/plan_resume.feature` scenarios. + - [ ] Tests (Robot) [Luis]: Add resume integration tests. + - [ ] Tests (ASV) [Luis]: Add `asv/benchmarks/plan_resume_bench.py` for resume overhead baseline. + - [ ] Quality [Luis]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Luis]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Luis]: `git commit -m "feat(concurrency): add plan resume"`. **Parallel Group CONC3: Garbage Collection [Hamza]** @@ -2470,10 +2760,11 @@ By Day 30, the system must be able to (all in LOCAL MODE, server connectivity is - [ ] Code [Hamza]: Add cleanup for sandboxes, checkpoints, and stale sessions with CLI commands. - [ ] Code [Hamza]: Add retention policy settings for sandbox age, checkpoint count, and session inactivity. - [ ] Docs [Hamza]: Document cleanup commands and retention defaults. - - [ ] Tests (Behave) [Rui]: Add `features/garbage_collection.feature` scenarios. - - [ ] Tests (Robot) [Rui]: Add cleanup integration smoke tests. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/cleanup_bench.py` for cleanup overhead baseline. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] Tests (Behave) [Hamza]: Add `features/garbage_collection.feature` scenarios. + - [ ] Tests (Robot) [Hamza]: Add cleanup integration smoke tests. + - [ ] Tests (ASV) [Hamza]: Add `asv/benchmarks/cleanup_bench.py` for cleanup overhead baseline. + - [ ] Quality [Hamza]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Hamza]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Hamza]: `git commit -m "feat(ops): add cleanup commands"`. --- @@ -2486,10 +2777,11 @@ By Day 30, the system must be able to (all in LOCAL MODE, server connectivity is - [ ] Code [Hamza]: Add index metadata table (resource_id, indexed_at, file_count, token_estimate). - [ ] Code [Hamza]: Enforce max file size and total size limits from project context policy. - [ ] Docs [Hamza]: Add `docs/reference/context_indexing.md`. - - [ ] Tests (Behave) [Rui]: Add `features/context_indexing.feature` scenarios. - - [ ] Tests (Robot) [Rui]: Add indexing integration tests. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/context_indexing_bench.py` for indexing throughput baseline. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] Tests (Behave) [Hamza]: Add `features/context_indexing.feature` scenarios. + - [ ] Tests (Robot) [Hamza]: Add indexing integration tests. + - [ ] Tests (ASV) [Hamza]: Add `asv/benchmarks/context_indexing_bench.py` for indexing throughput baseline. + - [ ] Quality [Hamza]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Hamza]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Hamza]: `git commit -m "feat(context): add repo indexing service"`. **Parallel Group CTX2: Embedding Index [Hamza]** @@ -2497,139 +2789,159 @@ By Day 30, the system must be able to (all in LOCAL MODE, server connectivity is - [ ] Code [Hamza]: Add embedding-based search with opt-in flag and fallback to full-text search. - [ ] Code [Hamza]: Add embedding index metadata and cache invalidation on repo updates. - [ ] Docs [Hamza]: Add `docs/reference/embedding_search.md`. - - [ ] Tests (Behave) [Rui]: Add `features/embedding_search.feature` scenarios. - - [ ] Tests (Robot) [Rui]: Add embedding search integration tests. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/embedding_search_bench.py` for search runtime baseline. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] Tests (Behave) [Hamza]: Add `features/embedding_search.feature` scenarios. + - [ ] Tests (Robot) [Hamza]: Add embedding search integration tests. + - [ ] Tests (ASV) [Hamza]: Add `asv/benchmarks/embedding_search_bench.py` for search runtime baseline. + - [ ] Quality [Hamza]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Hamza]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Hamza]: `git commit -m "feat(context): add optional embedding search"`. --- ### Section 17: Skill Registry [Days 17-18] -**Parallel Group SKILL1: Skill Catalog [Aditya]** -- [ ] **COMMIT (Owner: Aditya | Group: SKILL1.registry) - Commit message: "feat(skill): add skill registry and CLI"** (Only check after all subitems + `nox` pass + coverage >=97%, then commit) - - [ ] Code [Aditya]: Implement SkillRegistry, auto-registration from actor configs, and `skills list` CLI. - - [ ] Code [Aditya]: Add skill YAML schema loader for `agents skill add` (namespaced name + tool refs). - - [ ] Code [Aditya]: Implement `agents skill show` and `agents skill tools` outputs per spec. - - [ ] Docs [Aditya]: Add `docs/reference/skill_registry.md`. - - [ ] Tests (Behave) [Rui]: Add `features/skill_registry.feature` scenarios. - - [ ] Tests (Robot) [Rui]: Add skill registry integration tests. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/skill_registry_bench.py` for registry lookup baseline. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. - - [ ] Commit [Aditya]: `git commit -m "feat(skill): add skill registry and CLI"`. - --- ### Section 18: Deferred Work Deferred items remain planned but are not part of the 30-day MVP scope. +- [ ] **COMMIT (Owner: Hamza | Group: POST.resource) - Commit message: "feat(resource): add virtual resource equivalence tracking"** (COMMIT TASK: only check after every subtask below is complete, `nox` and coverage succeed, and the commit is created) + - [ ] Code [Hamza]: Add `virtual_resource_links` table mapping virtual resource ULID to physical resource ULIDs with uniqueness constraints. + - [ ] Code [Hamza]: Add `ResourceEquivalenceService` to create/merge virtual resources and update links on content divergence. + - [ ] Code [Hamza]: Add helper to compute equivalence key (hash or name) for auto-linking during resource discovery. + - [ ] Docs [Hamza]: Update `docs/reference/resource_model.md` with physical/virtual equivalence rules and examples. + - [ ] Tests (Behave) [Hamza]: Add scenarios for linking/unlinking physical resources to virtual resources and divergence updates. + - [ ] Tests (Robot) [Hamza]: Add Robot test that creates two identical physical resources and verifies a shared virtual resource. + - [ ] Tests (ASV) [Hamza]: Add `asv/benchmarks/virtual_resource_bench.py` for equivalence update overhead. + - [ ] Quality [Hamza]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Hamza]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Commit [Hamza]: `git commit -m "feat(resource): add virtual resource equivalence tracking"`. + - [ ] **COMMIT (Owner: Luis | Group: POST.server) - Commit message: "feat(client): add server http client"** (COMMIT TASK: only check after every subtask below is complete, `nox` and coverage succeed, and the commit is created) - [ ] Code [Luis]: Add HTTP client with health check, version negotiation, and OpenAPI codegen integration. + - [ ] Code [Luis]: Add config keys for server base URL, API token, and TLS verification; wire into Settings. + - [ ] Code [Luis]: Map server error responses into domain errors with retry hints. - [ ] Docs [Luis]: Add `docs/reference/server_client_http.md` with configuration and connection errors. - - [ ] Tests (Behave) [Rui]: Add scenarios for connection errors and version mismatch handling. - - [ ] Tests (Robot) [Rui]: Add mock-server connection tests. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/server_http_client_bench.py` for connection overhead baseline. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] Tests (Behave) [Luis]: Add scenarios for connection errors and version mismatch handling. + - [ ] Tests (Robot) [Luis]: Add mock-server connection tests. + - [ ] Tests (ASV) [Luis]: Add `asv/benchmarks/server_http_client_bench.py` for connection overhead baseline. + - [ ] Quality [Luis]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Luis]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Luis]: `git commit -m "feat(client): add server http client"`. - [ ] **COMMIT (Owner: Luis | Group: POST.server) - Commit message: "feat(client): add plan sync and remote execution"** (COMMIT TASK: only check after every subtask below is complete, `nox` and coverage succeed, and the commit is created) - [ ] Code [Luis]: Sync actions, request remote plan execution/apply/status, and reconcile remote plan IDs. + - [ ] Code [Luis]: Add conflict resolution policy (local wins vs server wins) with explicit CLI errors on ambiguity. - [ ] Docs [Luis]: Document sync semantics and conflict handling in `docs/reference/server_sync.md`. - - [ ] Tests (Behave) [Rui]: Add scenarios for sync conflicts and retry behavior. - - [ ] Tests (Robot) [Rui]: Add mock-server sync tests. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/server_sync_bench.py` for sync throughput baseline. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] Tests (Behave) [Luis]: Add scenarios for sync conflicts and retry behavior. + - [ ] Tests (Robot) [Luis]: Add mock-server sync tests. + - [ ] Tests (ASV) [Luis]: Add `asv/benchmarks/server_sync_bench.py` for sync throughput baseline. + - [ ] Quality [Luis]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Luis]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Luis]: `git commit -m "feat(client): add plan sync and remote execution"`. - [ ] **COMMIT (Owner: Luis | Group: POST.server) - Commit message: "feat(client): add websocket updates"** (COMMIT TASK: only check after every subtask below is complete, `nox` and coverage succeed, and the commit is created) - [ ] Code [Luis]: Add WebSocket client for plan updates with reconnect/backoff policy. + - [ ] Code [Luis]: Define event schema mapping for plan status/progress/log stream updates. - [ ] Docs [Luis]: Add `docs/reference/server_websocket.md` with event types and reconnect rules. - - [ ] Tests (Behave) [Rui]: Add scenarios for reconnect and event ordering. - - [ ] Tests (Robot) [Rui]: Add WebSocket mock tests. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/server_ws_bench.py` for message handling baseline. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] Tests (Behave) [Luis]: Add scenarios for reconnect and event ordering. + - [ ] Tests (Robot) [Luis]: Add WebSocket mock tests. + - [ ] Tests (ASV) [Luis]: Add `asv/benchmarks/server_ws_bench.py` for message handling baseline. + - [ ] Quality [Luis]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Luis]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Luis]: `git commit -m "feat(client): add websocket updates"`. - [ ] **COMMIT (Owner: Hamza | Group: POST.server) - Commit message: "feat(client): add remote project support"** (COMMIT TASK: only check after every subtask below is complete, `nox` and coverage succeed, and the commit is created) - [ ] Code [Hamza]: Add remote resource selection and server execution request wiring. + - [ ] Code [Hamza]: Add project-name resolution rules for remote namespaces and server aliases. - [ ] Docs [Hamza]: Add `docs/reference/server_remote_projects.md` with project selection semantics. - - [ ] Tests (Behave) [Rui]: Add scenarios for remote project selection errors. - - [ ] Tests (Robot) [Rui]: Add remote execution mock tests. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/server_remote_project_bench.py` for request overhead baseline. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] Tests (Behave) [Hamza]: Add scenarios for remote project selection errors. + - [ ] Tests (Robot) [Hamza]: Add remote execution mock tests. + - [ ] Tests (ASV) [Hamza]: Add `asv/benchmarks/server_remote_project_bench.py` for request overhead baseline. + - [ ] Quality [Hamza]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Hamza]: Verify coverage >=97% via `nox -s coverage_report`. - [ ] Commit [Hamza]: `git commit -m "feat(client): add remote project support"`. -- [ ] **COMMIT (Owner: TBD | Group: POST.repl) - Commit message: "feat(cli): add interactive repl"** - - [ ] Code [TBD]: Implement REPL command loop with history and completion. - - [ ] Code [TBD]: Add persistent history file under `~/.cleveragents/history` with opt-out flag. - - [ ] Docs [TBD]: Add REPL usage guide. - - [ ] Tests (Behave) [Rui]: Add REPL behavior scenarios. - - [ ] Tests (Robot) [Rui]: Add REPL smoke tests. +- [ ] **COMMIT (Owner: Rui | Group: POST.repl) - Commit message: "feat(cli): add interactive repl"** (COMMIT TASK: only check after every subtask below is complete, `nox` and coverage succeed, and the commit is created) + - [ ] Code [Rui]: Implement `agents repl` command that dispatches to existing CLI commands with shared config handling. + - [ ] Code [Rui]: Add history support with opt-out (`--no-history`) and default path `~/.cleveragents/history`. + - [ ] Code [Rui]: Add tab-completion for top-level commands and last command repetition (`!!`). + - [ ] Docs [Rui]: Add REPL usage guide with supported commands and exit behavior. + - [ ] Tests (Behave) [Rui]: Add REPL behavior scenarios (history on/off, unknown command, exit). + - [ ] Tests (Robot) [Rui]: Add REPL smoke tests for command dispatch. - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/repl_bench.py` for REPL startup baseline. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. - - [ ] Commit [TBD]: `git commit -m "feat(cli): add interactive repl"`. + - [ ] Quality [Rui]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Rui]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Commit [Rui]: `git commit -m "feat(cli): add interactive repl"`. -- [ ] **COMMIT (Owner: TBD | Group: POST.auth) - Commit message: "feat(cli): add auth and team commands"** - - [ ] Code [TBD]: Add auth/team CLI commands (requires server connectivity) with stubbed responses. - - [ ] Code [TBD]: Add config keys for auth token storage and team context. - - [ ] Docs [TBD]: Document auth/team workflows. - - [ ] Tests (Behave) [Rui]: Add auth/team CLI scenarios. - - [ ] Tests (Robot) [Rui]: Add auth/team integration tests. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/auth_cli_bench.py` for auth command baseline. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. - - [ ] Commit [TBD]: `git commit -m "feat(cli): add auth and team commands"`. +- [ ] **COMMIT (Owner: Luis | Group: POST.auth) - Commit message: "feat(cli): add auth and team commands"** (COMMIT TASK: only check after every subtask below is complete, `nox` and coverage succeed, and the commit is created) + - [ ] Code [Luis]: Add `agents auth login/logout/status` and `agents team list/use` commands with stubbed responses when server is disabled. + - [ ] Code [Luis]: Add config keys for auth token storage, active team, and default namespace (client-only stubs). + - [ ] Code [Luis]: Wire stubbed commands to `AuthClient` and `ServerClient` interfaces (raise NotImplementedError when no server). + - [ ] Docs [Luis]: Document auth/team workflows and local-only stub behavior. + - [ ] Tests (Behave) [Luis]: Add auth/team CLI scenarios (stubbed responses, missing server errors). + - [ ] Tests (Robot) [Luis]: Add auth/team integration smoke tests. + - [ ] Tests (ASV) [Luis]: Add `asv/benchmarks/auth_cli_bench.py` for auth command baseline. + - [ ] Quality [Luis]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Luis]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Commit [Luis]: `git commit -m "feat(cli): add auth and team commands"`. -- [ ] **COMMIT (Owner: TBD | Group: POST.tui) - Commit message: "feat(ui): add TUI/Web interface"** - - [ ] Code [TBD]: Implement TUI/Web interfaces (client-only) with plan status, logs, and diff views. - - [ ] Code [TBD]: Add UI routing stub and data provider interface (local-only). - - [ ] Docs [TBD]: Add UI usage guide. - - [ ] Tests (Behave) [Rui]: Add UI behavior scenarios. - - [ ] Tests (Robot) [Rui]: Add UI smoke tests. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/ui_render_bench.py` for UI render baseline. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. - - [ ] Commit [TBD]: `git commit -m "feat(ui): add TUI/Web interface"`. +- [ ] **COMMIT (Owner: Jeff | Group: POST.tui) - Commit message: "feat(ui): add TUI/Web interface"** (COMMIT TASK: only check after every subtask below is complete, `nox` and coverage succeed, and the commit is created) + - [ ] Code [Jeff]: Define UI data-provider interface (plans, sessions, validations, diffs, logs) backed by local services. + - [ ] Code [Jeff]: Implement minimal TUI with plan list, plan detail, diff viewer, and validation summary panes. + - [ ] Code [Jeff]: Add Web UI stub that serves the same data via local-only routes (read-only by default). + - [ ] Docs [Jeff]: Add UI usage guide with navigation and data-refresh behavior. + - [ ] Tests (Behave) [Jeff]: Add UI behavior scenarios (list, detail, diff, refresh). + - [ ] Tests (Robot) [Jeff]: Add UI smoke tests for route loading and TUI navigation. + - [ ] Tests (ASV) [Jeff]: Add `asv/benchmarks/ui_render_bench.py` for UI render baseline. + - [ ] Quality [Jeff]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Jeff]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Commit [Jeff]: `git commit -m "feat(ui): add TUI/Web interface"`. -- [ ] **COMMIT (Owner: TBD | Group: POST.dbresources) - Commit message: "feat(resource): add database resources"** - - [ ] Code [TBD]: Add database resource types and sandbox strategy (transaction wrapper). - - [ ] Code [TBD]: Add resource type schema with connection parameters and auth handling. - - [ ] Docs [TBD]: Document database resource configuration. - - [ ] Tests (Behave) [Rui]: Add database resource scenarios. - - [ ] Tests (Robot) [Rui]: Add database resource integration tests. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/db_resource_bench.py` for resource registration baseline. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. - - [ ] Commit [TBD]: `git commit -m "feat(resource): add database resources"`. +- [ ] **COMMIT (Owner: Hamza | Group: POST.dbresources) - Commit message: "feat(resource): add database resources"** (COMMIT TASK: only check after every subtask below is complete, `nox` and coverage succeed, and the commit is created) + - [ ] Code [Hamza]: Add database resource types (postgres, mysql, sqlite, duckdb) with connection args and auth handling. + - [ ] Code [Hamza]: Implement sandbox strategy using transaction wrappers and read-only toggles. + - [ ] Docs [Hamza]: Document database resource configuration and supported auth options. + - [ ] Tests (Behave) [Hamza]: Add database resource scenarios (connection validation, read-only enforcement). + - [ ] Tests (Robot) [Hamza]: Add database resource integration tests (local sqlite/duckdb only). + - [ ] Tests (ASV) [Hamza]: Add `asv/benchmarks/db_resource_bench.py` for resource registration baseline. + - [ ] Quality [Hamza]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Hamza]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Commit [Hamza]: `git commit -m "feat(resource): add database resources"`. -- [ ] **COMMIT (Owner: TBD | Group: POST.cloud) - Commit message: "feat(resource): add cloud infrastructure resources"** - - [ ] Code [TBD]: Add cloud resource types and sandbox strategies (stubbed local-only). - - [ ] Code [TBD]: Add resource type schema with provider-specific credential fields. - - [ ] Docs [TBD]: Document cloud resource configuration. - - [ ] Tests (Behave) [Rui]: Add cloud resource scenarios. - - [ ] Tests (Robot) [Rui]: Add cloud resource integration tests. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/cloud_resource_bench.py` for resource registration baseline. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. - - [ ] Commit [TBD]: `git commit -m "feat(resource): add cloud infrastructure resources"`. +- [ ] **COMMIT (Owner: Hamza | Group: POST.cloud) - Commit message: "feat(resource): add cloud infrastructure resources"** (COMMIT TASK: only check after every subtask below is complete, `nox` and coverage succeed, and the commit is created) + - [ ] Code [Hamza]: Add cloud resource types (aws, gcp, azure) with credential fields and region/tenant metadata. + - [ ] Code [Hamza]: Add stubbed sandbox strategies that validate configuration and return NotImplementedError for execution. + - [ ] Docs [Hamza]: Document cloud resource configuration and local-only stub behavior. + - [ ] Tests (Behave) [Hamza]: Add cloud resource scenarios (schema validation, stub errors). + - [ ] Tests (Robot) [Hamza]: Add cloud resource integration tests with stubbed responses. + - [ ] Tests (ASV) [Hamza]: Add `asv/benchmarks/cloud_resource_bench.py` for resource registration baseline. + - [ ] Quality [Hamza]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Hamza]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Commit [Hamza]: `git commit -m "feat(resource): add cloud infrastructure resources"`. -- [ ] **COMMIT (Owner: TBD | Group: POST.permissions) - Commit message: "feat(security): add permission system"** - - [ ] Code [TBD]: Implement namespace/project/plan/skill permission enforcement (requires server). - - [ ] Code [TBD]: Add permission model with role bindings and default deny rules. - - [ ] Docs [TBD]: Document permission model and roles. - - [ ] Tests (Behave) [Rui]: Add permission scenarios. - - [ ] Tests (Robot) [Rui]: Add permission integration tests. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/permission_check_bench.py` for enforcement baseline. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. - - [ ] Commit [TBD]: `git commit -m "feat(security): add permission system"`. +- [ ] **COMMIT (Owner: Luis | Group: POST.permissions) - Commit message: "feat(security): add permission system"** (COMMIT TASK: only check after every subtask below is complete, `nox` and coverage succeed, and the commit is created) + - [ ] Code [Luis]: Implement namespace/project/plan/skill permission model (role bindings, default deny, allow overrides). + - [ ] Code [Luis]: Add enforcement hooks at CLI/service boundaries (server-only; local mode returns permissive defaults). + - [ ] Docs [Luis]: Document permission model, role matrix, and server-only behavior. + - [ ] Tests (Behave) [Luis]: Add permission scenarios (allow/deny, missing role, server disabled). + - [ ] Tests (Robot) [Luis]: Add permission integration tests with stubbed server client. + - [ ] Tests (ASV) [Luis]: Add `asv/benchmarks/permission_check_bench.py` for enforcement baseline. + - [ ] Quality [Luis]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Luis]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Commit [Luis]: `git commit -m "feat(security): add permission system"`. -- [ ] **COMMIT (Owner: TBD | Group: POST.safety) - Commit message: "feat(security): add safety profile enforcement"** - - [ ] Code [TBD]: Add SafetyProfile model, CLI flags, and execution enforcement. - - [ ] Code [TBD]: Add safety profile resolution order (plan > project > global). - - [ ] Docs [TBD]: Document safety profile options and defaults. - - [ ] Tests (Behave) [Rui]: Add safety profile enforcement scenarios. - - [ ] Tests (Robot) [Rui]: Add safety profile integration tests. - - [ ] Tests (ASV) [Rui]: Add `asv/benchmarks/safety_profile_bench.py` for enforcement baseline. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. - - [ ] Commit [TBD]: `git commit -m "feat(security): add safety profile enforcement"`. +- [ ] **COMMIT (Owner: Luis | Group: POST.safety) - Commit message: "feat(security): add safety profile enforcement"** (COMMIT TASK: only check after every subtask below is complete, `nox` and coverage succeed, and the commit is created) + - [ ] Code [Luis]: Add SafetyProfile model, CLI flags, and execution enforcement hooks (server-only for now). + - [ ] Code [Luis]: Add safety profile resolution order (plan > project > global) with defaults. + - [ ] Docs [Luis]: Document safety profile options, defaults, and server-only behavior. + - [ ] Tests (Behave) [Luis]: Add safety profile enforcement scenarios (deny/allow paths). + - [ ] Tests (Robot) [Luis]: Add safety profile integration tests with stubbed server client. + - [ ] Tests (ASV) [Luis]: Add `asv/benchmarks/safety_profile_bench.py` for enforcement baseline. + - [ ] Quality [Luis]: Run `nox` (all default sessions, including benchmark). + - [ ] Quality [Luis]: Verify coverage >=97% via `nox -s coverage_report`. + - [ ] Commit [Luis]: `git commit -m "feat(security): add safety profile enforcement"`. --- @@ -2651,62 +2963,63 @@ Deferred items remain planned but are not part of the 30-day MVP scope. | Day | Morning Focus | Owner | Afternoon Focus | Owner | |-----|---------------|-------|-----------------|-------| | 1 | A5.alpha + A5.action_arguments DB migrations + ORM models | Jeff + Luis | B1.core Project/Resource models | Hamza | -| 2 | A5.gamma repos/services + A5.tests + B3.cleanup (legacy project CLI) | Jeff | B2.persistence/B2.service + B3.cli Resource CLI | Hamza + Rui (tests) | -| 3 | B4.sandbox git_worktree | Jeff + Hamza | B4.sandbox manager + tests | Luis + Rui | +| 2 | A5.gamma repos/services + A5.tests + B3.cleanup (legacy project CLI) | Jeff + Rui (tests) | B2.persistence/B2.service + B3.cli Resource CLI | Hamza + Rui (tests) | +| 3 | B4.sandbox git_worktree | Jeff + Hamza | B4.sandbox manager + tests | Luis + Rui (tests) | | 4 | C1.schema/C1.examples Actor YAML | Aditya | C2.loader/C2.compiler + C2.legacy v2 removal | Aditya + Jeff | | 5 | C3.protocol/C3.context/C3.inline Skill framework | Jeff | C4.file/C4.search Built-in skills | Luis + Jeff | | 6 | C7.mcp MCP Adapter | Aditya + Jeff | C4.git + C5.model/C5.router Change tracking | Luis + Jeff | -| 7 | C5.diff Diff review artifacts | Luis | C6.pipeline/C6.gating Validation pipeline | Luis + Rui | +| 7 | C5.diff Diff review artifacts | Luis | C6.pipeline/C6.gating Validation pipeline | Luis + Rui (tests) | ### Week 2 (Days 8-14) - M3 Complete + Plan-Actor Integration | Day | Focus | Owner | Deliverable | |-----|-------|-------|-------------| -| 8 | C8.providers + C9.execute Plan-Actor integration | Jeff + Aditya | Full execute phase working | -| 9 | C9.apply Apply Phase + Review | Jeff + Luis | Apply with review gates | -| 10 | D1.domain Decision Model | Hamza + Jeff | Decision recording foundation | -| 11 | D2.service Decision Recording | Jeff + Hamza | Decisions captured in Strategize | -| 12 | E1.domain Subplan Model | Luis | Subplan spawning design | -| 13 | E2.service/E2.actor Subplan spawning | Jeff + Luis | Subplan workflow wiring | -| 14 | End-to-end integration testing | All + Rui | M3 milestone verified | +| 8 | C8.providers + C9.execute Plan-Actor integration | Jeff + Aditya (+Luis support) | Execute phase + providers ready | +| 9 | C9.apply Apply Phase + Review | Jeff + Luis | Apply flow ready with review gates | +| 10 | D1.domain Decision Model | Hamza (+Jeff review) | Decision model committed | +| 11 | D2.service Decision Recording | Hamza (+Jeff review) | Decision recording committed | +| 12 | E1.domain Subplan Model | Luis (+Jeff review) | Subplan domain committed | +| 13 | E2.service/E2.actor Subplan spawning | Jeff + Aditya (+Luis support) | Subplan spawn committed | +| 14 | End-to-end integration testing | All + Rui (tests) + Brent (QA) | M3 milestone verified | ### Week 3 (Days 15-21) - M4 Target (Decision Tree + Correction) | Day | Focus | Owner | Deliverable | |-----|-------|-------|-------------| -| 15 | D5.db/D5.repo Decision persistence | Hamza | Decision storage wired | -| 16 | D3.cli Decision viewing | Hamza + Rui | `agents [--data-dir PATH] [--config-path PATH] plan tree`, `agents [--data-dir PATH] [--config-path PATH] plan explain` | -| 17 | D4.revert Decision correction (revert) | Jeff | `agents [--data-dir PATH] [--config-path PATH] plan correct` revert flow | -| 18 | D4.append + D5.di Decision wiring | Jeff + Luis | Append correction + service wiring | -| 19 | E3.exec Parallel Subplan Execution | Luis | Concurrent subplans | -| 20 | E4.merge Result Merging | Jeff + Luis | Git-style merge for subplans | -| 21 | M4 integration testing | All | Decision correction working | +| 15 | D5.db/D5.repo Decision persistence | Hamza (+Jeff review) | Decision storage wired | +| 16 | D3.cli Decision viewing | Hamza (+Jeff review) | `agents [--data-dir PATH] [--config-path PATH] plan tree`, `agents [--data-dir PATH] [--config-path PATH] plan explain` | +| 17 | D4.revert Decision correction (revert) | Jeff (+Luis support) | `agents [--data-dir PATH] [--config-path PATH] plan correct` revert flow | +| 18 | D4.append + D5.di Decision wiring | Jeff + Hamza (+Luis support) | Append correction + service wiring | +| 19 | E3.exec Parallel Subplan Execution | Luis (+Jeff review) | Concurrent subplans | +| 20 | E4.merge Result Merging | Jeff (+Luis support) | Git-style merge for subplans | +| 21 | M4 integration testing | All + Rui (tests) + Brent (QA) | Decision correction working | ### Week 4 (Days 22-30) - M6 Target (Large Project Autonomy - LOCAL MODE ONLY) | Day | Focus | Owner | Deliverable | |-----|-------|-------|-------------| -| 22-23 | CTX1.index Context indexing | Hamza | Large codebase indexing | -| 24-25 | G4.context Hot/Warm/Cold tiers | Hamza | Three-tier memory | -| 26-27 | Deep Subplan Hierarchies (5+ levels) | Jeff + Luis | Autonomous decomposition | -| 28-29 | F0.stubs + G1/G3 large project tests | Luis + Rui | Client stubs (NOT server impl), 10K file tests | -| 30 | M6 integration testing | All | Large project autonomy verified (Server connectivity DEFERRED) | +| 22-23 | CTX1.index Context indexing + G3.semantic | Hamza + Luis | Large codebase indexing + semantic validation | +| 24-25 | G4.context Hot/Warm/Cold tiers + G2.checkpoint | Hamza + Luis | Three-tier memory + checkpointing | +| 26-27 | G1.decompose + G5.estimate | Jeff + Hamza | Autonomous decomposition + estimation | +| 28 | F0.stubs | Luis | Client stubs (NOT server impl) | +| 29 | M6 perf triage + large project tests | All + Rui (tests) + Brent (QA) | 10K file perf target | +| 30 | M6 integration testing | All + Rui (tests) + Brent (QA) | Large project autonomy verified (Server connectivity DEFERRED) | > **Note**: Server connectivity (F1-F4) is DEFERRED beyond Day 30. Days 26-29 focus on client **stubs only** and large project testing. The server is a separate project. ### Week 5 (Days 31-35) - M7 Target (Server Connectivity - Client Side Only) | Day | Focus | Owner | Deliverable | |-----|-------|-------|-------------| -| 31-32 | F1.client Server client infrastructure | Luis | HTTP client for server communication | -| 33 | F2.sync Plan sync client | Luis | Client can sync plans to server | -| 34 | F3.ws WebSocket client | Luis | Client receives real-time updates | -| 35 | F4.remote Remote project support | Hamza | Client can request server execution | +| 31-32 | F1.client Server client infrastructure | Luis (+Jeff review) | HTTP client for server communication | +| 33 | F2.sync Plan sync client | Luis (+Jeff review) | Client can sync plans to server | +| 34 | F3.ws WebSocket client | Luis (+Jeff review) | Client receives real-time updates | +| 35 | F4.remote Remote project support | Hamza (+Jeff review) | Client can request server execution | ### Week 6 (Days 36-40) - M8 Target (Full Feature Set + Polish) | Day | Focus | Owner | Deliverable | |-----|-------|-------|-------------| | 36 | A6.* automation level refinements | Jeff + Luis | Automation modes stabilized | -| 37 | G5.estimate cost/risk estimation | Aditya | Estimation working | -| 38 | G2.checkpoint rollback | Jeff | Checkpointing + rollback | -| 39 | G1.decompose + G3.semantic performance tuning | Luis + Jeff | Benchmarks passing | -| 40 | Final integration + documentation | All | Release candidate ready | +| 37 | G5.estimate cost/risk estimation | Hamza (+Jeff review) | Estimation working | +| 38 | G2.checkpoint rollback | Luis (+Jeff review) | Checkpointing + rollback | +| 39 | G1.decompose + G3.semantic performance tuning | Jeff + Luis | Benchmarks passing | +| 40 | Final integration + documentation | All + Rui (tests) + Brent (QA) | Release candidate ready | ### Continuous Tasks (Throughout)