From 736da7799c05eba089805b500db84d8db8dfc70f Mon Sep 17 00:00:00 2001 From: Jeffrey Phillips Freeman Date: Wed, 11 Feb 2026 20:25:33 -0500 Subject: [PATCH] Docs: Updated implementation plan with new plan plus added asv requirements to commits --- implementation_plan.md | 777 ++++++++++++++++++++++++++++------------- 1 file changed, 529 insertions(+), 248 deletions(-) diff --git a/implementation_plan.md b/implementation_plan.md index 9c2663cf82..8770fb7183 100644 --- a/implementation_plan.md +++ b/implementation_plan.md @@ -1037,34 +1037,47 @@ MERGE POINT: Day 30 - M6 Large Project Autonomy Target - [X] Location: `src/cleveragents/domain/models/core/action.py` - [X] Tests: Behave scenarios for action model validation (22 scenarios in `features/action_model.feature`) **Parallel Group A2b: Action/Plan Spec Alignment (M1-critical)** - **PARALLEL SUBTRACK A2b.alpha [Jeff]**: Action metadata alignment - **PARALLEL SUBTRACK A2b.beta [Luis]**: Plan metadata alignment + **PARALLEL SUBTRACK A2b.alpha [Jeff]**: Action model alignment + invariants/automation metadata + **PARALLEL SUBTRACK A2b.beta [Luis]**: Plan metadata alignment + action linkage **PARALLEL SUBTRACK A2b.gamma [Aditya]**: Action YAML schema + examples (config-first) - - [ ] **COMMIT (Owner: Jeff | Group: A2b.alpha) - Commit message: "feat(domain): add action invariants and automation metadata"** (Only check after all subitems + `nox` pass + coverage >=97%, then commit) - - [ ] Code [Jeff]: Add `automation_profile`, `invariant_actor`, and `invariants` fields to `Action` with clear docstrings and defaults. - - [ ] Code [Jeff]: Add validation that invariant strings are non-empty and automation profile names follow `/` rules. - - [ ] Code [Jeff]: Add `definition_of_done_template` (string) to preserve templated DoD before argument substitution. - - [ ] Docs [Jeff]: Update action model reference doc (create `docs/reference/action_model.md` if missing) to include new fields. - - [ ] Tests (Behave) [Rui]: Add scenarios verifying action invariants and automation profile validation in `features/action_model.feature`. - - [ ] Tests (Robot) [Rui]: Add a smoke test that creates an action with `--automation-profile` and `--invariant` once CLI is wired. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. - - [ ] Commit [Jeff]: `git commit -m "feat(domain): add action invariants and automation metadata"`. - - [ ] **COMMIT (Owner: Luis | Group: A2b.beta) - Commit message: "feat(domain): add plan automation and invariant metadata"** (Only check after all subitems + `nox` pass + coverage >=97%, then commit) - - [ ] Code [Luis]: Add `automation_profile`, `invariant_actor`, and `invariants` fields to `Plan` (v3 lifecycle model). - - [ ] Code [Luis]: Add `action_id`, `changeset_id`, and `sandbox_refs` fields for lifecycle tracking (keep optional for MVP). - - [ ] Code [Luis]: Add validation to ensure `automation_profile` is locked after `plan use` and cannot be mutated in later phases. - - [ ] Docs [Luis]: Update `docs/reference/plan_model.md` with new metadata fields and phase rules. - - [ ] Tests (Behave) [Rui]: Add scenarios in `features/plan_model.feature` verifying automation profile lock and invariant persistence. - - [ ] Tests (Robot) [Rui]: Add a Robot scenario that inspects `plan status` output once CLI is updated. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. - - [ ] Commit [Luis]: `git commit -m "feat(domain): add plan automation and invariant metadata"`. - - [ ] **COMMIT (Owner: Aditya | Group: A2b.gamma) - Commit message: "docs(action): add action YAML schema and examples"** (Only check after all subitems + `nox` pass + coverage >=97%, then commit) - - [ ] Docs [Aditya]: Author `docs/schema/action.schema.yaml` covering description, DoD, actors, inputs, invariants, automation profile. - - [ ] Docs [Aditya]: Add example action configs under `examples/actions/` (simple + multi-project + invariant-heavy). - - [ ] Code [Aditya]: Add minimal schema validation helper in `src/cleveragents/action/schema.py` to load/validate YAML without CLI. - - [ ] Tests (Behave) [Rui]: Add scenarios that load each example and assert schema validation passes. - - [ ] Tests (Robot) [Rui]: Add a Robot smoke test that reads example YAML files and reports parse success. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + **SEQUENTIAL MERGE NOTE**: A2b.alpha + A2b.beta must land before A4b CLI wiring. + - [ ] **COMMIT (Owner: Jeff | Group: A2b.alpha) - Commit message: "feat(domain): align action metadata with invariants and automation profiles"** (COMMIT TASK: only check after every subtask below is complete, `nox` and coverage succeed, and the commit is created) + - [ ] Code [Jeff]: Update `src/cleveragents/domain/models/core/action.py` docstring to state actions are defined via YAML config and registered via CLI (remove "NOT YAML" wording). + - [ ] 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]: Extend `ActionArgument` validation to enforce `min_value <= max_value`, regex only for string args, and default value type checks. + - [ ] Code [Jeff]: Add `Action.to_template_context()` (or equivalent) to generate deterministic arg context for templating. + - [ ] Docs [Jeff]: Update or create `docs/reference/action_model.md` with new fields, examples, and invariants/automation profile semantics. + - [ ] Tests (Behave) [Rui]: Add scenarios in `features/action_model.feature` for invariants validation, automation profile parsing, and definition_of_done_template retention. + - [ ] 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`. + - [ ] 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]: Add `automation_profile`, `invariant_actor`, and `invariants` fields to `Plan` with source tags (action/project/plan/global). + - [ ] 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]: Enforce automation profile immutability after `plan use` and when phase progresses beyond Strategize. + - [ ] 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, and action linkage fields. + - [ ] 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`. + - [ ] 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, and arguments. + - [ ] Docs [Aditya]: Add example action configs under `examples/actions/` (simple, invariant-heavy, multi-project, and estimation-actor examples). + - [ ] 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 and invalid namespaced names. + - [ ] Tests (Behave) [Rui]: Add scenarios that load each example YAML and assert schema validation passes; add invalid schema cases. + - [ ] 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`. - [ ] 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 @@ -1096,27 +1109,36 @@ 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 - - [ ] **COMMIT (Owner: Jeff | Group: A4b.alpha) - Commit message: "feat(cli): support action create from YAML config"** (Only check after all subitems + `nox` pass + coverage >=97%, then commit) - - [ ] Code [Jeff]: Add `--config` support to `agents action create` and wire to Action YAML loader. - - [ ] Code [Jeff]: Implement override precedence (CLI flags override config file fields) per spec. - - [ ] Docs [Jeff]: Update CLI docs to show YAML-based action creation and override examples. - - [ ] Tests (Behave) [Rui]: Add scenarios in `features/action_cli.feature` covering config file creation, overrides, and invalid YAML. - - [ ] Tests (Robot) [Rui]: Add Robot end-to-end test `robot/action_cli_from_config.robot`. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] **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 `action/schema.py` and fail fast on schema violations. + - [ ] Code [Jeff]: Implement override precedence (CLI flags override YAML fields; explicit CLI empty string clears YAML value). + - [ ] Code [Jeff]: Normalize namespaced names, actor refs, and argument definitions from YAML into `ActionArgument` objects. + - [ ] Code [Jeff]: Add `--update` guard (if action exists) or explicit error per spec; ensure idempotent update path is clear. + - [ ] 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, and missing required fields. + - [ ] Tests (Robot) [Rui]: Add `robot/action_cli_from_config.robot` with end-to-end CLI flow and output assertions. + - [ ] 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`. - [ ] 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"** (Only check after all subitems + `nox` pass + coverage >=97%, then commit) - - [ ] Code [Jeff]: Add flags `--automation-profile`, `--invariant`, and `--invariant-actor` to `agents plan use`. - - [ ] Code [Jeff]: Validate automation profile and invariant input before plan creation. - - [ ] Docs [Jeff]: Update CLI help text and usage examples in `docs/reference/plan_cli.md`. - - [ ] Tests (Behave) [Rui]: Add scenarios covering profile resolution and invariant attachment in `features/plan_lifecycle_cli.feature`. - - [ ] Tests (Robot) [Rui]: Add Robot tests for plan use with invariants. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] **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]: Add `--automation-profile`, `--invariant`, and `--invariant-actor` flags to `agents plan use` and plumb into PlanLifecycleService. + - [ ] Code [Jeff]: Resolve action name -> action_id, validate automation profile existence, and attach plan-scoped invariants. + - [ ] Code [Jeff]: Persist resolved invariants + profile in Plan metadata for later Strategize/Execute steps. + - [ ] Docs [Jeff]: Update `docs/reference/plan_cli.md` with examples for profile + invariants and error cases. + - [ ] Tests (Behave) [Rui]: Add scenarios in `features/plan_lifecycle_cli.feature` covering profile selection, invariant validation, 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`. - [ ] 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"** (Only check after all subitems + `nox` pass + coverage >=97%, then commit) + - [ ] **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). - [ ] Tests (Robot) [Rui]: Add `robot/plan_lifecycle_cli.robot` covering end-to-end lifecycle transitions. - - [ ] Docs [Rui]: Update `docs/development/testing.md` with new CLI suites. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] 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`. - [ ] Commit [Rui]: `git commit -m "test(cli): add plan lifecycle Behave and Robot coverage"`. **Parallel Group A5: Plan Persistence (M1-critical)** @@ -1124,107 +1146,144 @@ MERGE POINT: Day 30 - M6 Large Project Autonomy Target **PARALLEL SUBTRACK A5.beta [Luis]**: SQLAlchemy models for new tables **SEQUENTIAL AFTER alpha+beta [Jeff + Luis]**: Repositories + service integration **PARALLEL CONTINUOUS [Rui]**: Persistence tests added inside each commit - - [ ] **COMMIT (Owner: Jeff | Group: A5.alpha) - Commit message: "feat(db): add actions and action_invariants tables"** (Only check after all subitems + `nox` pass + coverage >=97%, then commit) - - [ ] Code [Jeff]: Add Alembic migration for `actions` with ULID PK, namespaced name, actor refs, DoD, automation_profile, invariant_actor. - - [ ] Code [Jeff]: Add `action_invariants` table (action_id FK, invariant_text, created_at). - - [ ] Docs [Jeff]: Update `docs/reference/database_schema.md` with new tables. - - [ ] Tests (Behave) [Rui]: Add scenario that runs migrations and asserts tables exist. + - [ ] **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, DoD fields, automation_profile, invariant_actor, timestamps. + - [ ] Code [Jeff]: Add `action_invariants` table with FK to actions, `scope` column, and created_at timestamp. + - [ ] Code [Jeff]: Add unique index on actions.namespaced_name and search index on namespace for list filtering. + - [ ] 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). - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] 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`. - [ ] Commit [Jeff]: `git commit -m "feat(db): add actions and action_invariants tables"`. - - [ ] **COMMIT (Owner: Jeff | Group: A5.alpha) - Commit message: "feat(db): add lifecycle_plans and plan_projects tables"** (Only check after all subitems + `nox` pass + coverage >=97%, then commit) - - [ ] Code [Jeff]: Add Alembic migration for `lifecycle_plans` (ULID PK, phase/state, automation_profile, action_id, timestamps). - - [ ] Code [Jeff]: Add `plan_projects` table (plan_id, project_id, project_read_only flag, alias). - - [ ] Docs [Jeff]: Update schema docs with plan/project link details. - - [ ] Tests (Behave) [Rui]: Add migration scenario to verify plan/project link table. - - [ ] Tests (Robot) [Rui]: Add Robot test that inserts a plan/project link and queries it. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] **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, automation_profile, invariant_actor, 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. + - [ ] 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`. - [ ] 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"** (Only check after all subitems + `nox` pass + coverage >=97%, then commit) - - [ ] Code [Jeff]: Add `plan_arguments` table (plan_id, name, value_json) and `plan_invariants` table (plan_id, invariant_text, source_scope). - - [ ] Docs [Jeff]: Document plan argument storage and invariant source scopes. - - [ ] Tests (Behave) [Rui]: Add migration scenario verifying both tables. - - [ ] Tests (Robot) [Rui]: Add Robot test for plan invariant persistence. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] **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 uniqueness constraint on (plan_id, name) for arguments and (plan_id, invariant_text) for invariants. + - [ ] 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`. - [ ] 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"** (Only check after all subitems + `nox` pass + coverage >=97%, then commit) - - [ ] Code [Luis]: Add SQLAlchemy models for `ActionModel`, `ActionInvariantModel`, `LifecyclePlanModel`, `PlanProjectLinkModel`, `PlanArgumentModel`, `PlanInvariantModel`. - - [ ] Code [Luis]: Implement `to_domain()` and `from_domain()` for action/plan models with ULID + timestamp conversion. - - [ ] Docs [Luis]: Update ORM mapping notes in `docs/reference/database_schema.md`. - - [ ] Tests (Behave) [Rui]: Add scenarios for ORM round-trip serialization. - - [ ] Tests (Robot) [Rui]: Add Robot test that loads a plan and asserts fields map correctly. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] **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, 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. + - [ ] 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`. - [ ] 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"** (Only check after all subitems + `nox` pass + coverage >=97%, then commit) - - [ ] Code [Jeff]: Implement ActionRepository CRUD + list filters by namespace/state. - - [ ] Code [Jeff]: Implement PlanRepository CRUD + list filters by phase/state/project. - - [ ] Code [Jeff]: Add retry decorator to repositories; retry only on `OperationalError`, never on `IntegrityError`. - - [ ] Docs [Jeff]: Document repository interfaces and expected error types. - - [ ] Tests (Behave) [Rui]: Add scenarios for repository create/get/list/update. + - [ ] **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. + - [ ] Code [Jeff]: Implement PlanRepository CRUD + list filters by phase/state/project; add plan lookup by namespaced name. + - [ ] Code [Jeff]: Add retry decorator to repositories; retry only on `OperationalError`, never on `IntegrityError`. + - [ ] Docs [Jeff]: Document repository interfaces, error types, and pagination guidance. + - [ ] Tests (Behave) [Rui]: Add scenarios for repository create/get/list/update/delete guardrails. - [ ] Tests (Robot) [Rui]: Add Robot test that exercises repository through service layer. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] 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`. - [ ] 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"** (Only check after all subitems + `nox` pass + coverage >=97%, then commit) - - [ ] Code [Luis]: Update `PlanLifecycleService` to use repositories instead of in-memory dicts. - - [ ] Code [Luis]: Ensure plan creation stores arguments, invariants, and project links. - - [ ] Code [Luis]: Use transaction boundaries for multi-step operations (create action + plan, correction updates). - - [ ] Docs [Luis]: Update service docs to reflect persistence and remove in-memory notes. - - [ ] Tests (Behave) [Rui]: Add scenarios for persisted lifecycle transitions. + - [ ] **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, and project links in a single transaction. + - [ ] Code [Luis]: Add transactional safeguards for multi-step updates (create action + plan, correction updates). + - [ ] 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. - [ ] Tests (Robot) [Rui]: Add end-to-end test that restarts the app and re-reads plan state. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] 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`. - [ ] 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"** (Only check after all subitems + `nox` pass + coverage >=97%, then commit) + - [ ] **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. + - [ ] Code [Luis]: Add container wiring tests to ensure singleton lifetimes are correct. - [ ] 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. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. - - [ ] Commit [Luis]: `git commit -m "feat(di): wire lifecycle repos and services"`. + - [ ] 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`. + - [ ] 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"** (Only check after all subitems + `nox` pass + coverage >=97%, then commit) - - [ ] Tests (Behave) [Rui]: Add plan persistence scenarios (create, update phase/state, list filters, plan tree, concurrency). - - [ ] Tests (Behave) [Rui]: Add action persistence scenarios (create, list available, delete guard). - - [ ] Tests (Robot) [Rui]: Add plan persistence E2E (full lifecycle, restart persistence, concurrent CLI access). - - [ ] Docs [Rui]: Update `docs/development/testing.md` with persistence suites. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. - - [ ] Commit [Rui]: `git commit -m "test(persistence): add plan/action persistence suites"`. + - [ ] **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) + - [ ] Tests (Behave) [Rui]: Add plan persistence scenarios (create, update phase/state, list filters, plan tree, concurrency). + - [ ] Tests (Behave) [Rui]: Add action persistence scenarios (create, list available, archive guard). + - [ ] 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`. + - [ ] Commit [Rui]: `git commit -m "test(persistence): add plan/action persistence suites"`. **Parallel Group A5.legacy: Remove legacy plan build/apply path (M1-critical)** - - [ ] **COMMIT (Owner: Jeff | Group: A5.legacy) - Commit message: "refactor(plan): remove legacy plan service and CLI"** (Only check after all subitems + `nox` pass + coverage >=97%, then commit) + - [ ] **COMMIT (Owner: Jeff | Group: A5.legacy) - Commit message: "refactor(plan): remove legacy plan service and CLI"** (COMMIT TASK: only check after every subtask below is complete, `nox` and coverage succeed, and the commit is created) - [ ] Code [Jeff]: Remove `PlanService` usage from CLI (`plan tell/build/apply/new/current/list/cd/continue`). - - [ ] Code [Jeff]: Remove or archive legacy `PlanModel`/`PlanStatus` DB tables if unused by v3. - - [ ] Docs [Jeff]: Update CLI docs to list only v3 lifecycle commands. - - [ ] Tests (Behave) [Rui]: Remove/replace legacy scenarios with v3 equivalents. + - [ ] Code [Jeff]: Remove or quarantine legacy `plan_service.py`, `plan_legacy.py`, and legacy CLI helpers; add explicit NotImplementedError where needed. + - [ ] 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. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] 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`. - [ ] Commit [Jeff]: `git commit -m "refactor(plan): remove legacy plan service and CLI"`. -**Parallel Group A6: Automation Levels Foundation [Luis + Jeff]** (M1-critical; depends on A5 persistence) -- [ ] **COMMIT (Owner: Luis | Group: A6.core) - Commit message: "feat(domain): add automation level settings"** (Only check after all subitems + `nox` pass + coverage >=97%, then commit) - - [ ] Code [Luis]: Add `AutomationLevel` enum (manual/review/full) in plan domain model. - - [ ] Code [Luis]: Add config setting + env var (`CLEVERAGENTS_AUTOMATION_LEVEL`) with precedence plan > session > global. - - [ ] Docs [Luis]: Add `docs/reference/automation_levels.md` describing precedence and defaults. - - [ ] Tests (Behave) [Rui]: Add scenarios for default and override precedence. - - [ ] Tests (Robot) [Rui]: Add config smoke test for automation level resolution. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. - - [ ] Commit [Luis]: `git commit -m "feat(domain): add automation level settings"`. -- [ ] **COMMIT (Owner: Jeff | Group: A6.service) - Commit message: "feat(service): integrate automation levels in lifecycle"** (Only check after all subitems + `nox` pass + coverage >=97%, then commit) - - [ ] Code [Jeff]: Add `automation_level` handling to `use_action()` and auto transition logic for execute/apply. - - [ ] Code [Jeff]: Add pause/resume behavior for review-before-apply mode. - - [ ] Docs [Jeff]: Update plan lifecycle docs with automation behavior. - - [ ] Tests (Behave) [Rui]: Add manual/review/full automation scenarios. - - [ ] Tests (Robot) [Rui]: Add end-to-end automation flow test. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. - - [ ] Commit [Jeff]: `git commit -m "feat(service): integrate automation levels in lifecycle"`. -- [ ] **COMMIT (Owner: Luis | Group: A6.cli) - Commit message: "feat(cli): add automation level commands"** (Only check after all subitems + `nox` pass + coverage >=97%, then commit) - - [ ] Code [Luis]: Add `--automation-level` to `plan use` and add `plan set-automation-level` command. - - [ ] Code [Luis]: Add `config set automation-level` and `session set automation-level` commands. - - [ ] Docs [Luis]: Update CLI reference for automation level flags. - - [ ] Tests (Behave) [Rui]: Add CLI scenarios for plan/session automation changes. - - [ ] Tests (Robot) [Rui]: Add Robot CLI coverage for automation commands. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. - - [ ] Commit [Luis]: `git commit -m "feat(cli): add automation level commands"`. +**Parallel Group A6: Automation Profiles Foundation [Jeff + Luis]** (M1-critical; depends on A5 persistence) + **PARALLEL SUBTRACK A6.core [Jeff]**: Profile model + built-ins + schema + **PARALLEL SUBTRACK A6.service [Luis]**: Profile resolution + precedence + **PARALLEL SUBTRACK A6.cli [Rui]**: CLI commands for profiles + **SEQUENTIAL MERGE NOTE**: A6.core must land before A6.service/cli; A6.service must land before gating integration in Section 6. + - [ ] **COMMIT (Owner: Jeff | Group: A6.core) - Commit message: "feat(domain): add automation profile model and built-ins"** (COMMIT TASK: only check after every subtask below is complete, `nox` and coverage succeed, and the commit is created) + - [ ] Code [Jeff]: Add `AutomationProfile` model with threshold fields (phase transitions, decision autonomy, child plan spawn, self-repair, apply gating). + - [ ] Code [Jeff]: Add built-in profiles (`manual`, `review`, `supervised`, `full-auto`, etc.) per spec with constant definitions. + - [ ] 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`. + - [ ] 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. + - [ ] 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`. + - [ ] 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. + - [ ] Code [Rui]: Add `--automation-profile` to `plan use` and output profile in `plan status`. + - [ ] Docs [Rui]: Update CLI reference with automation-profile command examples. + - [ ] 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`. + - [ ] Commit [Rui]: `git commit -m "feat(cli): add automation-profile commands"`. **M1 SUCCESS CRITERIA (Day 7 MVP - source code only)**: - Action created from YAML config and persisted (namespaced name, invariants, automation profile). @@ -1243,126 +1302,170 @@ MERGE POINT: Day 30 - M6 Large Project Autonomy Target **Parallel Group B1: Resource Registry Core [Hamza + Jeff]** (can start after A5.alpha migrations are available) - [ ] **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` and `ResourceRef` models with ULID, namespaced name, type name, location, sandbox strategy, read_only, and metadata. - - [ ] Code [Hamza]: Add validators for namespaced naming, ULID format, and parent/child DAG sanity (no self loops, no duplicate edges). - - [ ] Docs [Hamza]: Add `docs/reference/resource_model.md` with examples for git-checkout and fs-directory resources. - - [ ] Tests (Behave) [Rui]: Add scenarios validating ULID, namespace, and sandbox strategy rules. + - [ ] Code [Hamza]: Add resource type fields: `user_addable`, `allowed_parents`, `allowed_children`, `auto_discover`, `handler` reference, and `sandbox_strategy` default. + - [ ] Code [Hamza]: Add `Resource` and `ResourceRef` models with ULID, optional namespaced name, type name, location, description, sandbox strategy, read_only, and metadata. + - [ ] Code [Hamza]: Add validators for namespaced naming, ULID format, and parent/child DAG sanity (no self loops, no duplicate edges, type compatibility). + - [ ] 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. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] 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`. - [ ] Commit [Hamza]: `git commit -m "feat(domain): add resource type spec and resource model"`. - [ ] **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`, `ProjectValidation`, and `ProjectContextPolicy` models with ULID and namespaced name. - - [ ] Code [Hamza]: Include `invariants`, `invariant_actor`, and `automation_profile` fields with validation. - - [ ] Docs [Hamza]: Add `docs/reference/project_model.md` describing resource linking and validation config. - - [ ] Tests (Behave) [Rui]: Add scenarios for project model validation and link overrides. + - [ ] Code [Hamza]: Add `Project`, `ProjectResourceLink`, `ProjectValidation`, 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). + - [ ] 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. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] 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`. - [ ] 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. - - [ ] Code [Jeff]: Store `resource_kind` (physical/virtual) and `sandbox_strategy` in `resources`. - - [ ] Docs [Jeff]: Update `docs/reference/database_schema.md` with resource registry tables. - - [ ] Tests (Behave) [Rui]: Add migration scenarios verifying tables and indices. + - [ ] 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. + - [ ] 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`. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] 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`. - [ ] 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`, `project_resource_links`, and `project_validations` tables. - - [ ] Code [Jeff]: Ensure project names are unique within a namespace. - - [ ] Docs [Jeff]: Document project table schema and link semantics. - - [ ] Tests (Behave) [Rui]: Add migration scenarios verifying project tables. + - [ ] 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. + - [ ] 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. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] 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`. - [ ] 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 and child discovery queries. + - [ ] 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. + - [ ] Tests (Behave) [Rui]: Add repository scenarios for create/get/list/tree and cycle rejection. - [ ] Tests (Robot) [Rui]: Add Robot test exercising tree output ordering. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] 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`. - [ ] 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. - - [ ] Docs [Hamza]: Update repository docs with project link examples. - - [ ] Tests (Behave) [Rui]: Add scenarios for project create/link/unlink. + - [ ] Code [Hamza]: Implement `ProjectRepository` and `ProjectResourceLinkRepository` with namespace filtering and name-based lookup. + - [ ] Code [Hamza]: Add methods to list project validations and context policies. + - [ ] 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 list. - [ ] Tests (Robot) [Rui]: Add Robot test that links two resources to one project. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] 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`. - [ ] 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. + - [ ] 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). - - [ ] Docs [Hamza]: Add `docs/reference/resource_registry.md` describing API behavior. - - [ ] Tests (Behave) [Rui]: Add scenarios for register/remove/show/tree behavior. + - [ ] 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. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] 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`. - [ ] 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 commands and context policy setters for project. - - [ ] Docs [Luis]: Update `docs/reference/project_service.md` with usage examples. - - [ ] Tests (Behave) [Rui]: Add scenarios for project create/link/unlink/validation. + - [ ] Code [Luis]: Add validation attachment helpers 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/validation/context policy. - [ ] Tests (Robot) [Rui]: Add Robot test that creates project and links a resource. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] 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`. - [ ] Commit [Luis]: `git commit -m "feat(service): add project service v3"`. **Parallel Group B3: CLI Commands [Rui]** (depends on B2 services) - [ ] **COMMIT (Owner: Rui | Group: B3.cli) - Commit message: "feat(cli): add resource type commands"** (Only check after all subitems + `nox` pass + coverage >=97%, then commit) - - [ ] Code [Rui]: Add `agents resource type add/remove/list/show` commands with YAML config input. - - [ ] Docs [Rui]: Update CLI reference with resource type examples. - - [ ] Tests (Behave) [Rui]: Add scenarios for resource type lifecycle. + - [ ] Code [Rui]: Add `agents resource type add/remove/list/show` commands with YAML config input and schema validation. + - [ ] Code [Rui]: Implement `--update` behavior and error on name conflicts per spec. + - [ ] Docs [Rui]: Update CLI reference with resource type examples and expected output columns. + - [ ] Tests (Behave) [Rui]: Add scenarios for resource type lifecycle and invalid schema handling. - [ ] Tests (Robot) [Rui]: Add Robot suite `robot/resource_type_cli.robot`. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] 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`. - [ ] 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. - - [ ] Docs [Rui]: Update CLI reference with resource examples (git-checkout, fs-directory). - - [ ] Tests (Behave) [Rui]: Add scenarios for resource registration and tree rendering. + - [ ] Code [Rui]: Add `agents resource add/remove/list/show/tree` commands with type-specific flags and name/ULID resolution. + - [ ] Code [Rui]: Implement `resource inspect --tree/--file` per spec for resource introspection. + - [ ] Docs [Rui]: Update CLI reference with resource examples (git-checkout, fs-directory) and output columns. + - [ ] Tests (Behave) [Rui]: Add scenarios for resource registration, list filters, and tree rendering. - [ ] Tests (Robot) [Rui]: Add Robot suite `robot/resource_cli.robot`. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] 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`. - [ ] 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. - - [ ] Code [Rui]: Add `agents project validation add/remove/list` and `project context set/show` commands. + - [ ] Code [Rui]: Add `agents project create/show/list/delete/link-resource/unlink-resource` commands using namespaced project names. + - [ ] Code [Rui]: Add `agents project validation add/remove/list` and `project context set/show` commands (context views per phase). - [ ] Docs [Rui]: Update CLI reference with project examples and validation output. - - [ ] Tests (Behave) [Rui]: Add scenarios for project create/link/validation. + - [ ] Tests (Behave) [Rui]: Add scenarios for project create/link/validation/context policies. - [ ] Tests (Robot) [Rui]: Add Robot suite `robot/project_cli.robot`. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] 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`. - [ ] Commit [Rui]: `git commit -m "feat(cli): add project commands"`. **Parallel Group B4: Sandboxing [Luis + Jeff]** (depends on resource registry + project links) - [ ] **COMMIT (Owner: Luis | Group: B4.sandbox) - Commit message: "feat(sandbox): add sandbox strategy interface and manager"** (Only check after all subitems + `nox` pass + coverage >=97%, then commit) - - [ ] Code [Luis]: Add `SandboxStrategy` protocol, `SandboxRef`, and `SandboxManager` with per-resource sandboxes. - - [ ] Code [Luis]: Implement lazy sandbox creation and cleanup hooks (retention policy stub). - - [ ] Docs [Luis]: Add `docs/reference/sandbox.md` describing lifecycle and APIs. - - [ ] Tests (Behave) [Rui]: Add scenarios for sandbox manager creation and cleanup. + - [ ] Code [Luis]: Add `SandboxStrategy` protocol, `SandboxRef`, `SandboxManager`, and `SandboxRegistry` with per-resource sandboxes. + - [ ] 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. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] 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`. - [ ] 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. - - [ ] Docs [Luis]: Update sandbox doc with git_worktree usage. + - [ ] 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. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] 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`. - [ ] 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). + - [ ] 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. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] 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`. - [ ] 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. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] 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`. - [ ] Commit [Luis]: `git commit -m "feat(sandbox): add copy_on_write strategy stub"`. **M2 MERGE GATE**: @@ -1385,162 +1488,272 @@ MERGE POINT: Day 30 - M6 Large Project Autonomy Target **Week 2 focus**: Actor YAML, compilation, skills, and tool-based change tracking. +**Parallel Group C0: Tool Registry + Validation System [Jeff + Luis]** (start Day 5; precedes C1/C3) + **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. + - [ ] **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 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). + - [ ] 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. + - [ ] 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`. + - [ ] 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]: Implement ToolRepository + ValidationAttachmentRepository with list/show filters. + - [ ] Code [Luis]: Add ToolRegistryService for register/update/remove/list/show with name conflict checks. + - [ ] 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`. + - [ ] 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`. + - [ ] 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. + - [ ] Code [Rui]: Implement `agents validation add/attach/detach` commands and enforce validation-only name use. + - [ ] Docs [Rui]: Update CLI reference with tool/validation commands and output format. + - [ ] 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`. + - [ ] Commit [Rui]: `git commit -m "feat(cli): add tool and validation commands"`. + **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. + - [ ] Code [Aditya]: Add tool-node schema fields that reference Tool Registry names, including validation nodes. - [ ] Code [Aditya]: Add YAML load/serialize helpers and schema version guard. - - [ ] Docs [Aditya]: Add `docs/reference/actors_schema.md` with field definitions and constraints. + - [ ] 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. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] 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`. - [ ] 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, and graph YAML examples. + - [ ] Docs [Aditya]: Add `docs/reference/actors_examples.md` with strategist, executor, reviewer, tool-only, validation-node, and graph YAML examples. - [ ] 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. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] 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`. - [ ] Commit [Aditya]: `git commit -m "docs(actor): add actor yaml examples"`. **Parallel Group C2: Actor Loading & Compilation [Aditya + Jeff]** (depends on C1) - [ ] **COMMIT (Owner: Aditya | Group: C2.loader) - Commit message: "feat(actor): add actor registry and loader"** (Only check after all subitems + `nox` pass + coverage >=97%, then commit) - [ ] Code [Aditya]: Implement actor loader/registry with namespaced lookup and cache invalidation. + - [ ] 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. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] 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`. - [ ] 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. + - [ ] 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. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] 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`. - [ ] 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. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] 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`. - [ ] Commit [Jeff]: `git commit -m "feat(actor): resolve actor references and subgraphs"`. **Parallel Group C3: Skill Protocol & Context [Jeff]** (critical path; depends on C1) - [ ] **COMMIT (Owner: Jeff | Group: C3.protocol) - Commit message: "feat(skill): add skill protocol and metadata"** (Only check after all subitems + `nox` pass + coverage >=97%, then commit) - [ ] Code [Jeff]: Define Skill protocol interface, SkillMetadata, SkillResult, and SkillError types. - - [ ] Docs [Jeff]: Add `docs/reference/skills_protocol.md` describing metadata and JSON schema rules. + - [ ] Code [Jeff]: Add `SkillDefinition` model that references Tool Registry names and optional inline tool definitions. + - [ ] 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. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] 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`. - [ ] 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. + - [ ] Code [Jeff]: Wire SkillRegistry to Tool Registry for tool resolution and validation node inclusion. - [ ] 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. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] 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`. - [ ] 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. + - [ ] Code [Jeff]: Ensure inline tools conform to Tool Registry schema and return structured results. - [ ] 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. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] 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`. - [ ] Commit [Jeff]: `git commit -m "feat(skill): add inline tool executor"`. **Parallel Group C4: Built-in Skills [Jeff + Luis]** (depends on C3) - [ ] **COMMIT (Owner: Jeff | Group: C4.file) - Commit message: "feat(skill): add file operation skills"** (Only check after all subitems + `nox` pass + coverage >=97%, then commit) - - [ ] Code [Jeff]: Implement ReadFile, WriteFile, EditFile, and DeleteFile skills with read_only enforcement. + - [ ] Code [Jeff]: Implement ReadFile, WriteFile, EditFile, and DeleteFile tools with read_only enforcement. + - [ ] Code [Jeff]: Register tools in Tool Registry with resource bindings for fs/git resources. - [ ] 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. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] 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`. - [ ] 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 skills with ignore patterns and size limits. + - [ ] 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. - [ ] 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. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] 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`. - [ ] 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 skills (status, diff, log, show) for sandboxed repos. + - [ ] 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. - [ ] Docs [Luis]: Add `docs/reference/skills_git.md` clarifying no destructive ops in MVP. - - [ ] Tests (Behave) [Rui]: Add `features/skill_git.feature` for git skill outputs. - - [ ] Tests (Robot) [Rui]: Add `robot/skill_git.robot` for git skill integration. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] 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`. - [ ] Commit [Luis]: `git commit -m "feat(skill): add git operation skills"`. **Parallel Group C5: Tool Routing & Change Tracking [Luis + Jeff]** (depends on C3/C4) - [ ] **COMMIT (Owner: Luis | Group: C5.model) - Commit message: "feat(change): add ChangeSet models and invocation tracker"** (Only check after all subitems + `nox` pass + coverage >=97%, then commit) - [ ] Code [Luis]: Add Change/ChangeSet/ToolInvocation models and SkillInvocationTracker. + - [ ] Code [Luis]: Ensure ChangeSet stores resource references, sandbox paths, and tool metadata. - [ ] 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. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] 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`. - [ ] 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. - [ ] 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. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] 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`. - [ ] 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. - [ ] 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. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] 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`. - [ ] Commit [Luis]: `git commit -m "feat(change): add diff review artifacts"`. **Parallel Group C6: Validation Pipeline [Luis + Jeff]** (depends on C5 and project validation config) - [ ] **COMMIT (Owner: Luis | Group: C6.pipeline) - Commit message: "feat(validation): add validation pipeline and results model"** (Only check after all subitems + `nox` pass + coverage >=97%, then commit) - - [ ] Code [Luis]: Implement ValidationCommand, ValidationResult, and ValidationPipeline using project validation config. - - [ ] Docs [Luis]: Add `docs/reference/validation_pipeline.md` with command ordering and timeouts. - - [ ] Tests (Behave) [Rui]: Add `features/validation_pipeline.feature` for pass/fail paths. + - [ ] Code [Luis]: Implement ValidationCommand, ValidationResult, and ValidationPipeline using Validation attachments from Tool Registry. + - [ ] Code [Luis]: Run validations at end of Execute phase only; do not re-run during Apply per spec. + - [ ] Code [Luis]: Enforce required vs informational validation modes and fix-then-revalidate loop hooks. + - [ ] 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. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] 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`. - [ ] Commit [Luis]: `git commit -m "feat(validation): add validation pipeline and results model"`. - [ ] **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 validation failure; surface validation artifacts for review. + - [ ] 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. - [ ] 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. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] 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`. - [ ] Commit [Jeff]: `git commit -m "feat(validation): integrate validation with apply gating"`. **Parallel Group C7: MCP Adapter [Aditya]** (depends on C3) - [ ] **COMMIT (Owner: Aditya | Group: C7.mcp) - Commit message: "feat(skill): add MCP adapter for external tools"** (Only check after all subitems + `nox` pass + coverage >=97%, then commit) - - [ ] Code [Aditya]: Implement MCP client adapter conforming to Skill interface with connection config. + - [ ] Code [Aditya]: Implement MCP client adapter conforming to Tool interface with connection config. + - [ ] Code [Aditya]: Register MCP tools in Tool Registry with dynamic discovery from MCP server. - [ ] 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. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] 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`. - [ ] 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) - [ ] **COMMIT (Owner: Aditya | Group: C8.providers) - Commit message: "feat(actor): add built-in provider actors"** (Only check after all subitems + `nox` pass + coverage >=97%, then commit) - [ ] 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. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] 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`. - [ ] 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) - [ ] **COMMIT (Owner: Jeff | Group: C9.execute) - Commit message: "feat(plan): execute strategize and execute phases via actors"** (Only check after all subitems + `nox` pass + coverage >=97%, then commit) - [ ] Code [Jeff]: Connect PlanLifecycleService to actor execution for Strategize and Execute phases. + - [ ] Code [Jeff]: Ensure Strategize is read-only and records decisions without modifying resources. + - [ ] Code [Jeff]: Ensure Execute uses sandbox resources and tool calls routed through Tool Router + ChangeSet. - [ ] 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. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] 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`. - [ ] 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. - [ ] 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. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] 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`. - [ ] Commit [Jeff]: `git commit -m "feat(plan): integrate change review and apply flow"`. **M3 SUCCESS CRITERIA**: @@ -1565,10 +1778,13 @@ MERGE POINT: Day 30 - M6 Large Project Autonomy Target **Parallel Group D1: Decision Domain [Hamza + Rui]** (foundation for D2-D5) - [ ] **COMMIT (Owner: Hamza | Group: D1.domain) - Commit message: "feat(domain): add decision model and context snapshots"** (Only check after all subitems + `nox` pass + coverage >=97%, then commit) - [ ] 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. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] 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`. - [ ] Commit [Hamza]: `git commit -m "feat(domain): add decision model and context snapshots"`. **Parallel Group D2: Decision Recording Service [Hamza + Luis]** (depends on D1) @@ -1579,79 +1795,106 @@ MERGE POINT: Day 30 - M6 Large Project Autonomy Target - [ ] 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. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] 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`. - [ ] 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) - [ ] **COMMIT (Owner: Hamza | Group: D3.cli) - Commit message: "feat(cli): add plan tree and explain commands"** (Only check after all subitems + `nox` pass + coverage >=97%, then commit) - [ ] 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. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] 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`. - [ ] Commit [Hamza]: `git commit -m "feat(cli): add plan tree and explain commands"`. **Parallel Group D4: Decision Correction [Jeff + Luis]** (depends on D2/D3) - [ ] **COMMIT (Owner: Jeff | Group: D4.revert) - Commit message: "feat(service): add decision correction revert flow"** (Only check after all subitems + `nox` pass + coverage >=97%, then commit) - [ ] Code [Jeff]: Implement correction impact analysis and dry-run reporting. - [ ] 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. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] 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`. - [ ] 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. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] 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`. - [ ] Commit [Jeff]: `git commit -m "feat(service): add decision correction append flow"`. **Parallel Group D5: Decision Persistence [Hamza + Luis]** (depends on D1) - [ ] **COMMIT (Owner: Hamza | Group: D5.db) - Commit message: "feat(db): add decision tables"** (Only check after all subitems + `nox` pass + coverage >=97%, then commit) - [ ] 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. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] 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`. - [ ] 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. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] 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`. - [ ] 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. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] 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`. - [ ] 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. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] 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`. - [ ] Commit [Rui]: `git commit -m "test(persistence): add decision persistence suites"`. **Parallel Group DOD: Definition of Done + Invariants [Luis + Jeff]** (depends on D2/D4) - [ ] **COMMIT (Owner: Luis | Group: DOD.dod) - Commit message: "feat(dod): enforce definition-of-done gating"** (Only check after all subitems + `nox` pass + coverage >=97%, then commit) - [ ] 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. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] 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`. - [ ] 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 (action/project/plan/global), and enforcement before apply. + - [ ] 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. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] 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`. - [ ] Commit [Jeff]: `git commit -m "feat(invariant): add invariant models and enforcement"`. @@ -1667,7 +1910,9 @@ MERGE POINT: Day 30 - M6 Large Project Autonomy Target - [ ] Docs [Luis]: Add `docs/reference/subplan_model.md`. - [ ] Tests (Behave) [Rui]: Add `features/subplan_model.feature` scenarios. - [ ] Tests (Robot) [Rui]: Add `robot/subplan_model.robot` smoke tests. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] 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`. - [ ] Commit [Luis]: `git commit -m "feat(domain): add subplan config and status models"`. **Parallel Group E2: Subplan Spawning [Jeff + Aditya]** (depends on D2 + E1) @@ -1677,14 +1922,18 @@ MERGE POINT: Day 30 - M6 Large Project Autonomy Target - [ ] Docs [Jeff]: Add `docs/reference/subplan_service.md`. - [ ] Tests (Behave) [Rui]: Add subplan spawn scenarios. - [ ] Tests (Robot) [Rui]: Add subplan spawn integration tests. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] 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`. - [ ] 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. - [ ] Docs [Aditya]: Update actor YAML examples for subplan emission. - [ ] Tests (Behave) [Rui]: Add scenarios for subplan decision emission. - [ ] Tests (Robot) [Rui]: Add actor tool integration smoke tests. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] 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`. - [ ] 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) @@ -1694,7 +1943,9 @@ MERGE POINT: Day 30 - M6 Large Project Autonomy Target - [ ] Docs [Luis]: Add `docs/reference/subplan_execution.md`. - [ ] Tests (Behave) [Rui]: Add parallel + dependency execution scenarios. - [ ] Tests (Robot) [Rui]: Add parallel execution integration tests. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] 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`. - [ ] Commit [Luis]: `git commit -m "feat(service): add subplan scheduler and execution"`. **Parallel Group E4: Result Merging [Jeff + Luis]** (depends on E3) @@ -1704,7 +1955,9 @@ MERGE POINT: Day 30 - M6 Large Project Autonomy Target - [ ] 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. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] 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`. - [ ] Commit [Jeff]: `git commit -m "feat(merge): add subplan merge strategies"`. **Parallel Group E5: Multi-Project Plans [Hamza + Luis]** (depends on E2/E4) @@ -1714,7 +1967,9 @@ MERGE POINT: Day 30 - M6 Large Project Autonomy Target - [ ] 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. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] 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`. - [ ] Commit [Hamza]: `git commit -m "feat(plan): add multi-project subplan support"`. @@ -1730,17 +1985,21 @@ MERGE POINT: Day 30 - M6 Large Project Autonomy Target - [ ] 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. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] 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`. - [ ] Commit [Jeff]: `git commit -m "feat(plan): add large-project decomposition and dependency closure"`. **Parallel Group G2: Checkpointing & Rollback [Luis]** - [ ] **COMMIT (Owner: Luis | Group: G2.checkpoint) - Commit message: "feat(checkpoint): add checkpointing and rollback"** (Only check after all subitems + `nox` pass + coverage >=97%, then commit) - - [ ] Code [Luis]: Add checkpoint declarations for skills and plan-level rollback policy. + - [ ] Code [Luis]: Add checkpoint declarations for tools and plan-level rollback policy. - [ ] Code [Luis]: Implement `plan rollback ` command. - [ ] Docs [Luis]: Add `docs/reference/checkpointing.md`. - [ ] Tests (Behave) [Rui]: Add checkpoint/rollback scenarios. - [ ] Tests (Robot) [Rui]: Add rollback integration tests. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] 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`. - [ ] Commit [Luis]: `git commit -m "feat(checkpoint): add checkpointing and rollback"`. **Parallel Group G3: Semantic Validation [Luis]** @@ -1749,7 +2008,9 @@ MERGE POINT: Day 30 - M6 Large Project Autonomy Target - [ ] Docs [Luis]: Add `docs/reference/semantic_validation.md`. - [ ] Tests (Behave) [Rui]: Add semantic validation scenarios. - [ ] Tests (Robot) [Rui]: Add semantic validation integration tests. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] 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`. - [ ] Commit [Luis]: `git commit -m "feat(validation): add semantic validation service"`. **Parallel Group G4: Context Tiers & Views [Hamza + Rui]** @@ -1759,7 +2020,9 @@ MERGE POINT: Day 30 - M6 Large Project Autonomy Target - [ ] Docs [Hamza]: Add `docs/reference/context_tiers.md`. - [ ] Tests (Behave) [Rui]: Add context tier scenarios. - [ ] Tests (Robot) [Rui]: Add context tier integration tests. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] 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`. - [ ] Commit [Hamza]: `git commit -m "feat(context): add hot/warm/cold tiers and actor views"`. **Parallel Group G5: Cost & Risk Estimation [Hamza]** @@ -1768,7 +2031,9 @@ MERGE POINT: Day 30 - M6 Large Project Autonomy Target - [ ] Docs [Hamza]: Add `docs/reference/estimation.md` with output format. - [ ] Tests (Behave) [Rui]: Add estimation scenarios. - [ ] Tests (Robot) [Rui]: Add estimation integration smoke tests. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] 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`. - [ ] Commit [Hamza]: `git commit -m "feat(estimation): add cost and risk estimation actor"`. **Parallel Group G6: CLI Polish [All]** @@ -1776,7 +2041,9 @@ MERGE POINT: Day 30 - M6 Large Project Autonomy Target - [ ] Code [All]: Standardize help text, progress indicators, and error messages with recovery hints. - [ ] Docs [All]: Update CLI output examples where needed. - [ ] Tests (Robot) [Rui]: Add CLI UX smoke tests for critical commands. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] 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`. - [ ] Commit [Jeff]: `git commit -m "chore(cli): polish help and output"`. **--- MERGE POINT 2: Day 30 - Large Project Autonomy Target (LOCAL MODE ONLY) ---** @@ -1800,7 +2067,9 @@ By Day 30, the system must be able to (all in LOCAL MODE, server connectivity is - [ ] 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. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] 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`. - [ ] Commit [Luis]: `git commit -m "feat(interfaces): add server client stubs"`. **Deferred Groups (Post-Day 30, client-only)** @@ -1839,14 +2108,18 @@ By Day 30, the system must be able to (all in LOCAL MODE, server connectivity is - [ ] Docs [Luis]: Update `docs/reference/async_architecture.md` with execution flow and shutdown rules. - [ ] Tests (Behave) [Rui]: Add `features/async_execution.feature` for async command handling. - [ ] Tests (Robot) [Rui]: Add `robot/async_execution.robot` smoke tests. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] 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`. - [ ] 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. - [ ] 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. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] 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`. - [ ] Commit [Luis]: `git commit -m "feat(async): wire retry policies into services"`. **Parallel Group 10B: Selective Quality Review [Brent]** @@ -1855,7 +2128,9 @@ By Day 30, the system must be able to (all in LOCAL MODE, server connectivity is - [ ] Docs [Brent]: Add priority matrix and review SLA guidance. - [ ] Tests (Behave) [Rui]: Add scenarios validating review playbook references exist. - [ ] Tests (Robot) [Rui]: Add docs build smoke test covering the new guide. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] Tests (ASV) [Rui]: 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"`. **Parallel Group 10C: Validation Testing Support [Brent + Luis]** @@ -1864,21 +2139,27 @@ By Day 30, the system must be able to (all in LOCAL MODE, server connectivity is - [ ] Docs [Brent]: Update `docs/development/testing.md` with validation test catalog. - [ ] Tests (Behave) [Rui]: Add edge-case scenarios for concurrency, conflicts, and rollbacks. - [ ] Tests (Robot) [Rui]: Add integration coverage for edge-case suites. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] Tests (ASV) [Rui]: 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"`. - [ ] **COMMIT (Owner: Luis | Group: 10C.semantic) - Commit message: "test(validation): add semantic validation suites"** (Only check after all subitems + `nox` pass + coverage >=97%, then commit) - [ ] Code [Luis]: Add semantic validation fixtures and error-pattern samples. - [ ] Docs [Luis]: Document semantic validation coverage expectations. - [ ] Tests (Behave) [Rui]: Add semantic validation scenarios. - [ ] Tests (Robot) [Rui]: Add semantic validation integration tests. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] 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`. - [ ] 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/`. - [ ] 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. - - [ ] Quality [Brent]: Run `nox` and verify coverage >=97%. + - [ ] Tests (ASV) [Rui]: 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"`. ---