feat(loop): auto-shipped #402 - worker session captured#410
Conversation
Add a read-only operational_entropy block to control-plane status with four cheap counts: open_branches, live_worktrees, open_epics, and backlog_age_days (age of the oldest open issue). Each source degrades gracefully (git/GitHub failure -> null, never raises) and uses a single branch list, one `git worktree list`, and one list_open_backlog call reused for both epics and backlog age (no per-issue N+1). Surfaced in: - forge-loop status --json (control_plane.operational_entropy) + Rich row - GET /api/status (_status_payload) + console Health screen - LoopStatus TS type + mock Closes #402 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Worker exited its SDK session without running git commit. The loop captured the uncommitted output, applied the configured format command, committed, and pushed. Auto-merge is enabled; CI gates + critic-block-on-sev1 are the merge contract. Worker status: no_pr Worker log: docs/ops/loop-runner-logs/worker-402-*.log
|
Source issue #402 was closed mid-flight (state: closed). Loop refusing auto-merge. Reopen the issue OR merge manually. |
…file) Removes the 3345-line console/package-lock.json accidentally committed by the auto-ship. The console uses pnpm (pnpm-lock.yaml is tracked in trunk); npm's lockfile is redundant scope creep. Refs #402.
…ability-operational-entropy-m # Conflicts: # src/forge_loop/console_api.py # src/forge_loop/control/status.py # tests/test_cli_status_control_plane.py # tests/test_operational_entropy.py
… by trunk Issue #402's operational-entropy metric was already delivered to trunk by PR #409 (+ follow-ups #413/#414/#415/#421). The auto-shipped #410 payload duplicated that work; after merging trunk the only remaining branch delta was a verbatim-duplicate test_console_api test, which trunk already carries. Remove it so the branch converges to a no-op over trunk. Refs #402.
Repair summary (#402)Root cause of the stall: issue #402 was already delivered to So this branch's feature payload is fully superseded by What this repair did (shrinks the diff, does not grow it):
Net result: the branch is now a clean catch-up to Gates:
Recommendation: this PR is the un-merged twin of #409 and now converges to a |
hadamrd
left a comment
There was a problem hiding this comment.
Minimal path to green (must-fix to merge)
- Revert the
.claude/settings.jsonchange — swapping the allow-list worktree paths fromwt-loop-224towt-loop-402is transient per-worktree loop scaffolding, not part of #402; it must not be committed to trunk. - With that reverted the branch is an empty no-op over trunk (the operational_entropy feature for #402 already landed via #409 + follow-ups #413/#414/#415/#421). Close PR #410 as superseded by #409 rather than merging it.
hadamrd
left a comment
There was a problem hiding this comment.
[sev2/architecture] The lone remaining change commits a transient worktree path to trunk: it repoints the Write/Edit/Read/Grep/Glob allow-list entries from /tmp/forge-forge-loop/wt-loop-224/** to /tmp/forge-forge-loop/wt-loop-402/**. These are ephemeral per-loop worktree paths (loop scaffolding), unrelated to #402, and hardcoding one loop's worktree into committed config is leaked transient state. Revert this hunk so the branch carries no trunk-bound config change.
hadamrd
left a comment
There was a problem hiding this comment.
Critic findings:
- [sev1/product] This PR delivers none of #402's acceptance criteria. The entire net diff is a single
.claude/settings.jsonedit — there is nooperational_entropyblock, no_operational_entropy_statushelper, no gitbranch_list, no CLI/API/console surfacing, and no tests. The worker's own final commit confirms the feature was already delivered to trunk by #409 (+ #413/#414/#415/#421) and that after merging trunk the only delta was a duplicate test it then deleted. As it stands this PR cannot satisfy #402; it should be closed as superseded, not merged.
|
Source issue #402 was closed mid-flight (state: closed). Loop refusing auto-merge. Reopen the issue OR merge manually. |
…json (#402) The branch's only delta vs trunk was a loop-planted repoint of the Write/Edit/Read/Grep/Glob allow-list from wt-loop-224 to wt-loop-402 in .claude/settings.json — ephemeral per-loop worktree scaffolding, not part of #402. Restore the committed file to trunk so the branch carries no trunk-bound config change. (#402 feature itself already shipped to trunk via #409 and follow-ups #413/#414/#415/#421.) Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Repair (#402) — branch converged to trunkAddressed the one unresolved review thread ([sev2/architecture] on State: the #402 feature itself already shipped to Gates: Note: auto-merge is still gated because source issue #402 was auto-closed when its twin |
Auto-shipped by forge-loop - worker for #402 exited its
SDK session without committing. The loop captured + formatted +
pushed the output. Auto-merge is enabled.
no_prdocs/ops/loop-runner-logs/worker-402-*.logMerge gate: CI must pass + critic must not block on sev1.