You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
**Blocker.** None. Additive change to existing match arms.
5097
5097
5098
5098
**Source.** Jobdori dogfood 2026-04-21 12:25 KST on main HEAD `8b52e77` during recurring cron cycle. Joins **Output format completeness** cluster (#90/#91/#92/#127/#130) — all surfaces that produce inconsistent or plain-text fallbacks when JSON is requested. Also joins **CLI/REPL parity** (§7.1) — compact is available as both `--compact` flag and `/compact` REPL command; JSON output gap affects only the flag path. Session tally: ROADMAP #136.
5099
+
5100
+
## Pinpoint #138. Dogfood cycle report-gate opacity — nudge surface collapses "bundle converged", "follow-up landed", and "pre-existing flake only" into single closure shape
5101
+
5102
+
**Gap.** When a dogfood nudge triggers on a branch with landed work, the report surface emits status like "fixed 3 tests, pushed branch, 1 unrelated red remains" — but downstream nudges cannot distinguish:
5103
+
1. `bundle converged, merge-ready` (e.g., #134/#135 branch after fixes)
5104
+
2. `follow-up landed on main, branch still valid` (e.g., #137 + #136 fixes after #134/#135 was ready)
5105
+
3. `only pre-existing flake remains, no new regressions` (e.g., `resume_latest...` test failure on main that also fails on feature branch)
5106
+
4. `work still in flight, blocker not yet resolved`
5107
+
5. `merged and closed, re-nudge is a dup`
5108
+
5109
+
Result: repeat nudges look identical whether the prior work converged or is still broken. Claws re-open what was already resolved, burning cycles on rediscovery.
5110
+
5111
+
**Concrete example from this session:**
5112
+
- 14:30 nudge triggered on bundle already clear (14:25)
5113
+
- Reported finding was "nudge closure-state opacity" but manifested as "should we re-nudge or not?"
5114
+
- No explicit surface like "status: done", "last-updated: 2026-04-21T14:25", "next-action: none" that stops re-nudges on unchanged state
5115
+
5116
+
**Fix shape (~30-50 lines, surfaces not code).**
5117
+
1. Dogfood report should carry an explicit **closure state** field: `converged`, `follow-up-landed`, `pre-existing-flake-only`, `in-flight`, `merged`, `dup`.
5118
+
2. Each state has a **last-updated timestamp** (when report was filed) and **next-action** (null if converged, or describe blocker).
5119
+
3. Nudge logic checks prior report state: if `converged` + timestamp < 10 min old, skip nudge and post "still converged as of HH:MM, no action".
5120
+
4. If state changed (e.g., new commits landed), emit **state transition** explicitly: "bundle done (14:25) → follow-up landed (14:42)".
5121
+
5. Store closure state in a **shared metadata surface** (Discord message edit, ROADMAP inline, or compact JSON file) so next cycle can read it.
5122
+
5123
+
**Acceptance.**
5124
+
- Repeat nudges on converged work are replaced with "no change since last report" (skip).
5125
+
- State transitions are explicit: "was X, now Y" instead of ambiguous "X and also Y".
5126
+
- Claws can scan closure states and prioritize fresh work over already-handled bundles.
5127
+
5128
+
**Blocker.** Design question: **where should closure state live?** Options:
5129
+
- Edit the prior Discord message with a closure tag (e.g., 🟢 CONVERGED).
5130
+
- Add a `.dogfood-closure.json` file to the worktree branch that tracks state.
5131
+
- File a new ROADMAP entry per bundle completion (meta-tracking).
5132
+
- Embedded in claw-code CLI output (machine-readable, but creates coupling).
5133
+
5134
+
Current state is **design question unresolved**. Implementation is straightforward once closure-state model is settled.
5135
+
5136
+
**Source.** Jobdori dogfood 2026-04-21 14:25-14:47 KST — multi-cycle convergence pattern exposed by repeat nudges on #134/#135 bundle. Joins **Dogfood loop observability** (related to earlier §4.7 session-identity, but one level up — session-identity is plumbing, closure-state is the **reporting contract**). Also joins **False-green report gating** (from 14:05 finding) — this is the downstream effect: unclear reports beget re-nudges on stale work.
0 commit comments