Skip to content

feat(planning): auto-check plan steps using turn file change summaries #10

Open

Description

@dezren39

Context & Background

In OpenCode upstream commit 81d57087a4 (feat(session-ui): summarize each turn's changed files (#55064)), OpenCode added automated detection and summarization of all files added, modified, or deleted within each turn.

In our fork ecosystem, agents generate structured execution plans with checklist items (- [ ] 1. Scaffold API routes, - [ ] 2. Update UI component) via /plan or the plan-tracking skill, which are displayed in OpenChamber's Project Knowledge Plans view. Currently, agents must manually read their plan markdown file and edit the checkboxes (- [x]) by invoking file tools. If an agent forgets to update the checklist after editing files, the plan's progress indicator remains stale.

Feature Objective

Automatically update and infer plan step completion using turn file change summaries:
When an agent turn concludes with file changes matching the files or scopes referenced in a plan step, automatically suggest or check off the corresponding plan step in Project Knowledge (openchamber_knowledge / .openchamber/plans/), keeping plan progress continuously accurate.


Technical Specifications

1. Turn File Changes Event & Hook

  • Upstream emits turn change summaries in packages/core/src/session/ / packages/session-ui/.
  • In packages/core/src/session/subagent-completion.ts or post-turn hooks in packages/core/src/plugin/supervisor.ts:
    • Extract the list of files touched in the turn: { added: string[], modified: string[], deleted: string[] }.

2. Plan Step Scope Matcher in plan-tracking

  • In packages/core/src/plugin/skill/plan-tracking.md and related plan parsing helpers:
    • If a plan step specifies target files or directories (e.g. Implement routes in packages/web/server/routes.js or Add tests in packages/core/test/):
    • When all referenced files for that step have been modified/created in recent turns:
      • Automatically check off the step (- [x]) in the active plan file or mark it as completed.
      • If the plan is stored via openchamber_knowledge, invoke knowledge.save(kind: 'plan', ...) with the updated checklist markdown.

3. Agent Confirmation & Notification

  • When a step is automatically checked off:
    • Include a lightweight notice in the turn timeline (e.g., Plan step 2 checked off: Implement routes).
    • Allow the user or agent to uncheck or adjust if the step was only partially completed.

Key Files & References

  • packages/core/src/session/runner/step.ts: Turn completion, diff detection
  • packages/core/src/plugin/skill/plan-tracking.md: Agent plan tracking workflow instructions
  • packages/core/src/tool/plugin/plan-info.ts: Plan information and update tool
  • OpenChamber Project Knowledge plans: packages/web/server/lib/openchamber-control/project-knowledge.js

Acceptance Criteria

  1. The system extracts file modification summaries at the end of each turn.
  2. When modified files satisfy the targets of a plan step, the step is marked complete (- [x]) in the plan markdown file.
  3. OpenChamber's Project Knowledge Plans tab reflects the updated step completion count (e.g. 3/5 Done).
  4. Unit tests in packages/core/test/ verify automated step matching against simulated file changes.

Activity

  1. added
    kind/featureNew feature or capability request
    source/humanFiled directly by a human
    priority/lowNice to have; do when convenient
    effort/lLarge: multi-day or open-ended; expect staged check-ins
    app/corePackage: core (pkgs/ or apps/ in this repo)
    meta/enrichedIntake review done: acceptance criteria, links, and normalized labels added
    on Oct 27, 2026
  2. dezren39 commented on Oct 27, 2026

    @dezren39
    Author

    Intake review

    Still live (verified this run): no plan-step auto-checking exists in the session/turn code on current main (no plan integration found under packages/core/src/session/) — plan checkboxes still move only when an agent edits them by hand, as filed.

    Related: this is the opencode half of a cross-repo feature — the plans themselves live in OpenChamber's Project Knowledge (.openchamber/plans/); per the cross-repo set rule, implementation should be tracked from one origin issue with the OpenChamber side referenced, not re-filed. opencode #6–#9 are the sibling fork-feature specs from the same filing batch (no technical dependency).

    Notes / risks: priority low, effort/l. The main risk is false positives: checking a step because a turn touched a file the step merely mentions would make the progress indicator less trustworthy, not more — the filing's "suggest or check off" wording should resolve to suggest-first (or check only on strong matches) in the design. Also depends on the fork carrying upstream's turn file-change summaries (commit 81d5708) — confirm that is in this fork's base before designing the hook.

    Suggested approach: verify the upstream turn-summary event exists in the fork, prototype matching (exact path > directory scope > keyword) in suggest-only mode, and measure precision against a few real plans before enabling auto-check.

    — fleet monitor intake (repo-fleet-monitor, 2026-10-26 20:19 CDT run)

  3. added
    queue/claimedA queue worker has claimed the task for this item
    work/assignedAn agent holds this item via the queue (claimed task)
    and removed on Oct 28, 2026
  4. dezren39 commented on Oct 28, 2026

    @dezren39
    Author

    Triage verdict: gap confirmed, but not routable as an opencode small fix — needs a design decision (queue task 2044)

    Verified on current main b0633cc697760085022fb5656ed92fac9ce49b9c (2026-10-28):

    • No auto-checking exists — the intake finding holds: git grep for checkbox, - [x], auto-check across packages/core/src returns zero hits, and there is no plan integration under packages/core/src/session/.
    • But the issue's premise conflates two different 'plan' systems in this fork. The plan-tracking skill (packages/core/src/plugin/skill/plan-tracking.md) and the plan_info tool (packages/core/src/tool/plugin/plan-info.ts, backed by ModelPlan) track model/subscription plans — quotas, tiers, pool purposes. They have nothing to do with execution-plan checklists (- [ ] 1. Scaffold API routes).
    • The execution-plan store this feature would write to does not exist in this repo: zero hits for openchamber_knowledge or .openchamber/plans anywhere under packages/. Per the intake note, those plans live in OpenChamber's Project Knowledge — so this is a cross-repo feature whose data store, step-scope matching semantics, and suggest-vs-auto-check behavior are all undecided design questions, not a bounded fix.
    • The substrate for acceptance 1 does exist: turn file-change summaries are already computed for the timeline (packages/session-ui/src/timeline/file-changes.stories.tsx; rows-current.test.ts: a turn's summary diffs from its opening prompt and lists changed files, empty turns get none).

    Routing: no follow-up packet enqueued — a small_fix here would have to invent the plan store and the matching rules. This issue stays open as the cross-repo set origin (opencode + openchamber), marked status/blocked pending a design decision: (a) where execution plans live and who owns parsing them, (b) explicit file targets in steps vs inferred matching, (c) suggest-first vs auto-check. Once that's decided, the opencode slice (turn-summary hook emitting touched files) is small and can be packeted from here.

  5. added
    status/blockedBlocked on something named in the issue/PR
    work/assignedAn agent holds this item via the queue (claimed task)
    queue/claimedA queue worker has claimed the task for this item
    and removed
    queue/claimedA queue worker has claimed the task for this item
    work/assignedAn agent holds this item via the queue (claimed task)
    status/blockedBlocked on something named in the issue/PR
    on Oct 28, 2026
  6. dezren39 commented on Nov 3, 2026

    @dezren39
    Author

    🤖 Agent note · picked up

    • Agent: queue worker (repo-worker-opencode), OpenChamber scheduled lane
    • Session / ID: queue task 7032
    • Found via: atomic queue claim
    • Task: Revalidate feat(planning): auto-check plan steps using turn file change summaries #10 current-main blocker and repair the packet’s stale “no recorded blocker” statement.
    • Finding: existing triage is still accurate: this is a cross-repo design issue, not a bounded fix. Current OpenCode plan_info tracks provider/model quota plans; no execution-plan store or step parser exists here.
    • Next: document the concrete design decisions and escalate to Drew rather than inventing product behavior.
    • Links: current main 94939076d9969770f942e2c6c8ee0f289b3da2e3; prior triage comment #6477953912
  7. added
    user/escalatedMuse reviewed it; the decision is genuinely the user's — escalated with Muse's read attached
    queue/blockedQueue task is blocked (reason recorded on the task)
    status/blockedBlocked on something named in the issue/PR
    and removed
    queue/claimedA queue worker has claimed the task for this item
    work/assignedAn agent holds this item via the queue (claimed task)
    on Nov 3, 2026
  8. dezren39 commented on Nov 3, 2026

    @dezren39
    Author

    Current-main triage: blocked on design decisions

    Verified on main 94939076d9969770f942e2c6c8ee0f289b3da2e3 (2026-11-03). The coverage packet says “status/blocked with no recorded blocker,” but the existing 2026-10-28 triage comment already named the unresolved design decisions; that comment remains accurate.

    • packages/core/src/plugin/skill/plan-tracking.md and packages/core/src/tool/plugin/plan-info.ts / packages/core/src/model-plan.ts are for provider subscriptions, quota windows, model tiers, and pool purposes — not execution-plan checklists.
    • No execution-plan store or .openchamber/plans / openchamber_knowledge integration exists under packages/ on current main.
    • File-change UI is visible in packages/session-ui; there is no plan integration in the OpenCode session code. No matching open PR was found.

    Drew decision needed before implementation:

    1. Which repo owns the canonical execution-plan store and parsing contract (OpenCode or OpenChamber)?
    2. Should matching require explicit file targets, or infer scopes from prose; what confidence/false-positive policy applies?
    3. Should completion be suggest-first or auto-check, and what is the user/agent uncheck path?

    This is a cross-repo product/design decision, not a bounded small fix. I did not invent a store, matching rules, or automatic user-facing behavior. Task 7032 is blocked as escalated-to-user; issue labels are user/escalated, queue/blocked, status/blocked.

    🤖 Agent note · escalated / blocked

    • Agent: queue worker (repo-worker-opencode), OpenChamber scheduled lane
    • Session / ID: queue task 7032
    • Read: current source confirms the plan store is for subscriptions and that the execution-plan store/ownership contract is absent.
    • Decision required: the three choices above.
    • Resume condition: Drew records the product/design decisions; then scope and packet the OpenCode and OpenChamber slices without duplicating work.
    • Links: current main 94939076d9969770f942e2c6c8ee0f289b3da2e3
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    app/corePackage: core (pkgs/ or apps/ in this repo)effort/lLarge: multi-day or open-ended; expect staged check-inskind/featureNew feature or capability requestmeta/enrichedIntake review done: acceptance criteria, links, and normalized labels addedpriority/lowNice to have; do when convenientqueue/blockedQueue task is blocked (reason recorded on the task)queue/queuedHas a queued task in the Supabase agent queuesource/humanFiled directly by a humanstatus/blockedBlocked on something named in the issue/PRuser/escalatedMuse reviewed it; the decision is genuinely the user's — escalated with Muse's read attached

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions