feat(execute): add changeset model and change capture #304

Closed
opened 2026-02-22 23:41:07 +00:00 by freemo · 0 comments
Owner

Metadata

  • Commit: feat(execute): add changeset model and change capture
  • Branch: feature/m1-changeset-core

Subtasks

  • Rebase tool/builtins/changeset.py into a spec-aligned ChangeSet domain model (ULID ids, plan_id, resource_id, tool_name, operation, path, before/after hashes, timestamps) and re-export via domain/models/core if needed.
  • Update ChangeSetCapture to record resource_id + tool_name and attach timestamps per entry; keep write-only tools only.
  • Add execution-scoped ChangeSetStore interface with in-memory implementation for M1; support start(plan_id), record(entry), get(plan_id), summarize(plan_id).
  • Wire built-in file tools to pass resource_id and sandbox_root so ChangeSet entries resolve correctly in multi-resource plans.
  • Add docs/reference/changeset_model.md with entry examples and ULID field descriptions.
  • Tests (Behave): Add scenarios for create/modify/delete/move capture and summary counts.
  • Tests (Robot): Add Robot test that runs a file tool and verifies ChangeSet output.
  • Tests (ASV): Add benchmarks/changeset_capture_bench.py for change capture overhead.
  • Run nox (all default sessions, including benchmark), fix any errors if needed ensuring nox passes.
  • Verify coverage >=97% via nox -s coverage_report. If coverage is <97% then review the current unit test coverage report at build/coverage.xml and use it to write new Behave based unit tests to improve code coverage. Specifically, write Behave style unit tests that are descriptively named and specifically improves coverage on whichever file has the most uncovered lines by writing tests that will target the uncovered lines in the report. Once that is done rerun nox -s coverage_report to verify all tests pass and coverage is above >=97%. Only mark this as complete once coverage is >=97%, if not repeat this task as many times as is needed until coverage reaches >=97%.

Section: ### Section 6: Execution Pipeline, Decisions & Invariants [M1-M4]
Status: Completed

## Metadata - **Commit**: `feat(execute): add changeset model and change capture` - **Branch**: `feature/m1-changeset-core` ## Subtasks - [x] Rebase `tool/builtins/changeset.py` into a spec-aligned ChangeSet domain model (ULID ids, plan_id, resource_id, tool_name, operation, path, before/after hashes, timestamps) and re-export via `domain/models/core` if needed. - [x] Update ChangeSetCapture to record `resource_id` + `tool_name` and attach timestamps per entry; keep write-only tools only. - [x] Add execution-scoped ChangeSetStore interface with in-memory implementation for M1; support `start(plan_id)`, `record(entry)`, `get(plan_id)`, `summarize(plan_id)`. - [x] Wire built-in file tools to pass `resource_id` and `sandbox_root` so ChangeSet entries resolve correctly in multi-resource plans. - [x] Add `docs/reference/changeset_model.md` with entry examples and ULID field descriptions. - [x] Tests (Behave): Add scenarios for create/modify/delete/move capture and summary counts. - [x] Tests (Robot): Add Robot test that runs a file tool and verifies ChangeSet output. - [x] Tests (ASV): Add `benchmarks/changeset_capture_bench.py` for change capture overhead. - [x] Run `nox` (all default sessions, including benchmark), fix any errors if needed ensuring nox passes. - [x] Verify coverage >=97% via `nox -s coverage_report`. If coverage is <97% then review the current unit test coverage report at `build/coverage.xml` and use it to write new Behave based unit tests to improve code coverage. Specifically, write Behave style unit tests that are descriptively named and specifically improves coverage on whichever file has the most uncovered lines by writing tests that will target the uncovered lines in the report. Once that is done rerun `nox -s coverage_report` to verify all tests pass and coverage is above >=97%. Only mark this as complete once coverage is >=97%, if not repeat this task as many times as is needed until coverage reaches >=97%. **Section**: ### Section 6: Execution Pipeline, Decisions & Invariants [M1-M4] **Status**: Completed
freemo added this to the v3.2.0 milestone 2026-02-22 23:41:07 +00:00
freemo self-assigned this 2026-02-22 23:41:07 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Blocks Depends on
#91 ten-branches
cleveragents/cleveragents-core
Reference
cleveragents/cleveragents-core#304
No description provided.