docs: log the ollama cold-start park and the judgment-per-PR gap - #264
Conversation
|
@claude please review. Docs-only — a session entry appended to The thing worth checking is whether either entry is stale or overstated, since both are recurrences and I'd rather delete a claim than log a wrong one:
I checked this is not stale against #253, which landed just ahead of it: that change concerns cycle counting and aborted-run records, not panel completeness or the local-model rung. |
|
Claude finished @itsHabib's task in 4m 42s —— View job Review: friction-log.md — #259 session entries
Entry 1 — Ollama cold-start timeoutVerdict: accurate. No changes needed. The attribution holds. One minor precision nit: the entry says "gate's HTTP client timeout" — this is the The #214 distinction holds: Entry 2 — Every PR burns an irreversible judgmentVerdict: the "structural" observation holds, but the attribution and the suggested fix are both wrong. The entry should be rewritten before merging. What the code actually shows: PR #235 ( decisionAbsent := pv.State != "MERGED" && pv.ReviewDecision == ""
if decisionAbsent && !stand.satisfied {
escalations = append(escalations, standInEscalation(stand))
}If The actual bottleneck is in The workflow has an "Attest the reviewed head for gate's review panel" step (lines 121–171) that posts the `` sentinel that This requires the ENTIRE comment body to be So the chain is:
The "structural" claim is accurate for how the repo actually uses review requests — but the cause is the attestation trigger precision, not the readiness/review-decision mechanics. The suggested fix is in the wrong direction:
The real smallest fix is one of two paths (already noted in
Suggested rewrite for the entry's "smallest fix" and attribution lines: Replace:
With something like:
And replace the suggested fix:
With:
Cross-check: #253 staleness claimConfirmed clean. PR #253 touches cycle counting and aborted-run records ( Summary
The ollama entry can merge as-is. The judgment entry should be corrected — it will otherwise log the wrong root cause and point future work at the wrong layer. |
|
Round 2 — finding addressed, with one correction to the correction. I verified all four load-bearing claims in the review against the code before rewriting, rather than taking them on trust. All four hold:
So entry 2's attribution was wrong and is rewritten: the bottleneck is the attestation step never firing, not the comment-vs-approval mechanic. My original suggested fix is likewise refused by design, and the entry now says so. Where I did not follow the review: it proposed widening the regex to match Entry 1 took the precision nit: the timeout is pinned to This PR now also tests its own claim. The entry says a request carrying context never attests, and names the workaround: bare trigger, context in a separate comment. This comment is the context; the next one is the bare trigger. If the entry is right, the attestation fires this time and the panel completes — which would be the first run in this session that does not need a judgment to reach merge. |
|
@claude please review |
|
Claude finished @itsHabib's task in 1m 42s —— View job Review: PR #264 — friction-log.md session entries (round 3)
Entry 1 — Ollama cold-start timeoutAccurate. No changes needed. All claims hold against the current code:
Entry 2 — A review request carrying context does not attestAccurate. The rewrite is correct. All four load-bearing claims verify against the code:
One observation worth noting (not a blocker): The entry's "workaround available today" — post bare Cross-check: structural completenessThe entry documents:
This is well-structured and complete for a friction log entry. SummaryBoth entries are accurate in their final form. No changes needed. The rewrite of entry 2 correctly attributes the root cause, names the right fix, and explicitly rules out the two wrong approaches. Ready to merge. |
|
Reviewer: claude |
Session log for the #259 read-window fix, appended per the per-session convention already in this file. Two entries, both recurrences rather than new discoveries — which is the point of recording them. The ollama entry is the #214 entry one failure mode further in. That session's remedy was to supervise the daemon; the daemon was up this time, with qwen2.5:7b present, and review-consolidation still escalated — `context deadline exceeded` rather than `connection refused`. A cold load of a 4.7 GB model outruns gate's HTTP client timeout, so the first run after the model is evicted parks regardless of daemon health. Supervision does not close this; the deeper #214 remedy — report `local_model_unavailable` instead of dressing infra failure as a judgment question — is still the fix, and is still unimplemented. The second entry names what both #248 and #259 ran into: the panel signals by PR comment, so `readiness` and `review-panel-completeness` escalate structurally on every PR, and the only terminating path runs through a one-shot irreversible judgment even when every substantive rung passes. `gate next` currently lists 16 runs awaiting judgment, which makes genuine escalations hard to pick out of load-bearing bookkeeping. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Review verified all four of the load-bearing claims and found the second entry's attribution wrong. Confirmed each against the code before rewriting rather than taking the finding on trust. The observation held — both rungs escalate on every PR — but the cause was not "the panel comments instead of approving". #235's panelStandIn already answers an absent GitHub review decision; readiness.go escalates only when `decisionAbsent && !stand.satisfied`. The panel is what never completes, because the attestation step in claude.yml validates the WHOLE comment body against `^@claude [please] review [this [pr]]$`, and every real review request carries focus areas after the verb. The fix I originally proposed is refused by design: evidence/panel.go declines to count bot prose as a review, since a verdict with no commit anchor cannot say which tree it applies to. The sentinel exists because that was already considered and rejected. The entry now points at posting a formal GitHub review instead, and explicitly rules out widening the regex — the review suggested a prefix match, but the step's own comment warns against exactly that, since `@claude review permissions` starts identically and must not attest. Recall has to be recovered somewhere that cannot credit a review that never happened. Also names the workaround available today (bare trigger comment, context in a second comment) and pins entry 1's timeout to local/local.go:28, which is the `local` package's client rather than one gate sets. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
298058b to
18339f3
Compare
Session log for the #259 read-window fix, appended per the per-session convention already in
friction-log.md. Docs-only.Two entries, both recurrences rather than new discoveries — which is why they're worth recording.
1. Ollama cold-start timeout parks a run even with the daemon supervised
This is the existing
#214entry one failure mode further in. That session's remedy was to supervise the daemon (brew services). The daemon was up this time, withqwen2.5:7bpresent — andreview-consolidationstill escalated, this time withcontext deadline exceeded (Client.Timeout exceeded while awaiting headers)rather thanconnection refused.A cold load of a 4.7 GB model outruns gate's HTTP client timeout, so the first run after the model is evicted from memory parks regardless of daemon health. Supervision doesn't close this. The deeper #214 remedy — have review-consolidation report
local_model_unavailableinstead of dressing an infra failure as a judgment question — remains the right fix and is still unimplemented. A failed extraction is not a finding against the code, and the operator's remedy differs completely.2. Every PR burns an irreversible judgment to reach merge
The panel signals by PR comment and never posts a formal GitHub review decision, so
readiness(no review decision reported by GitHub) andreview-panel-completeness(completed=0 expected=1 missing=[claude]) escalate structurally on every PR — not because of anything PR-specific. The same pair parked #248, whose judgment says so explicitly.The consequence: the only terminating path for any PR here runs through
gate judge, a one-shot irreversible artifact, even when every substantive rung passes.gate nextcurrently lists 16 runs awaiting judgment, which makes genuine escalations hard to pick out of load-bearing bookkeeping.Suggested smallest fix is in the entry: teach
review-panel-v1to count a completed bot comment from a panel member declared in.ship.jsonas a completed review, so a clean PR can pass on evidence instead of consuming a judgment.Checked
Not stale against
main— #253 (a run that decides nothing records why, and still burns no cycle) landed just ahead of this and concerns cycle counting and aborted-run records, not panel completeness or the local-model rung.gofmt/go vetclean; no code touched.🤖 Generated with Claude Code