docs(status-page): operator steps to verify distributed reportability live #10
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "docs/distributed-reportability-verify-note"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Small operator-facing doc note: the exact Redis keys to confirm the distributed-quorum reportability live (per-leg Quorum column hash, the PHASE_ORDER-mapped progress-line phase, and the ribbon
tel*totals), plus a note that the in-engine arbiter is excluded from the ribbon fold to avoid double-counting.Doc-only; no code change. (Also serves as the controlled trigger to confirm the just-deployed reportability end-to-end on a live distributed review.)
Show previous round
hib-pr-reviewer review — PR #10 (hib/hib-pr-reviewer)
Round 1 — head
7c3cf0950aad, basemain, triggeropenedTL;DR: CONDITIONAL_APPROVE — kept 2 agreed + verified minor findings (optional
arbiterfield presented as unconditional; missing LRANGE command); no blocking issues.Summary
Arbitration Summary
Both reviewers independently flagged the same two issues on line 146 of
docs/status-page.md. I verified both against source before keeping them.Verification results:
arbiteroptionality —src/types/quorum.tsline 87 confirmsarbiter?: ArbiterSnapshot(optional). The module-level JSDoc (line 12) also annotates the hash schema as{ a, b, arbiter? }. The new doc text "expecta/b/arbiterstate fields" presents all three as unconditionally present. Confirmed — kept.Missing LRANGE command —
docs/forgejo-upgrade-runbook.mdline 39 confirmsbq:pr-review:activeis a Redis List key queried asredis-cli LRANGE bq:pr-review:active 0 -1. The new doc text only names the key without the command. Confirmed — kept.Severity reconciliation: A rated finding 2 as
info, B asminor. The practical consequence (operator receives aWRONGTYPEerror if they tryGETorSMEMBERS) and the established pattern in the runbook both supportminor. Promoted tominorto match B.Kept 2 agreed + verified findings. Dropped 0.
Blast Radius
Single documentation file changed (
docs/status-page.md, +2/-1). No code, no exported interfaces, no Redis key schema changes. Impact is limited to operators reading this runbook section.BLAST_SCORE: 1/10
CI status (head
7c3cf0950aad)Overall: ✓ success
3 checks: 3 pending
Findings (2)
[MINOR] Verify step implies
arbiterfield is always present, but it is optional until arbitration beginsdocs/status-page.md:146
src/types/quorum.tsline 87 definesarbiter?: ArbiterSnapshot(optional) and line 12's JSDoc annotates the hash schema as{ a, b, arbiter? }. The field is written byArbiter.runonly after divergent legs trigger the arbiter phase. An operator runningHGETALL <prefix>:pr-reviewer:phase:quorum:<jobId>during the parallel-leg phase will see onlyaandb— the current wording "expecta/b/arbiterstate fields" gives no indication that two fields is healthy, risking a false alarm.Suggested fix:
[MINOR] Job-ID retrieval step names the key but omits the Redis command (
LRANGE)docs/status-page.md:146
Line 146 instructs operators to get
<jobId>from`bq:pr-review:active`without specifying the retrieval command.bq:pr-review:activeis a BullMQ List key — the correct command isLRANGE bq:pr-review:active 0 -1. An operator who triesGETorSMEMBERSwill receive a RedisWRONGTYPEerror.docs/forgejo-upgrade-runbook.mdline 39 already establishes the correct form (redis-cli LRANGE bq:pr-review:active 0 -1); this step should match it.Suggested fix:
Verdict
CONDITIONAL_APPROVE
hib-pr-reviewer • round 1 • 2 findings (2m) • 2026-06-03T09:44:50.512Z → 2026-06-03T09:48:36.983Z • posted-as: pr-reviewer-bot • model: auto
hib-pr-reviewer review — PR #10 (hib/hib-pr-reviewer)
Round 2 — head
7b1eae21a72e, basemain, triggersynchronizeTL;DR: NO_NEW_FINDINGS — both prior round-1 conditions satisfied; new verify sub-bullet is technically accurate against source.
Summary
[quorum-converged] A=0 = B=0. Both round-1 findings are resolved in this diff.
Finding 1 (arbiter optionality): The new sub-bullet now explicitly states "the
arbiterfield appears only once the legs diverge and arbitration begins" — operationally accurate and no longer implies the field is always present.Finding 2 (LRANGE command): The new sub-bullet now supplies the full command:
redis-cli LRANGE bq:pr-review:active 0 -1.New content verified against source:
<prefix>:pr-reviewer:phase:quorum:<jobId>— confirmed bysrc/types/quorum.ts:12(HASH { a, b, arbiter? }).<prefix>:pr-reviewer:phase:active:<jobId>— confirmed bysrc/phase.ts:27.tel*fields of<prefix>:pr-reviewer:health:engine-state— confirmed bysrc/health-state-mirror.ts:70-79(telInputTokens,telOutputTokens,telCostUsd,telWindowInputTokens, etc.).bq:pr-review:active— confirmed bysrc/worker.ts:4306andsrc/svelte-viewport/lib/queue-snapshot.ts:345.observeSdkMessageForTelemetryreferenced for arbiter telemetry — function present in codebase (src/engine-telemetry.ts,src/reviewer.ts).No new actionable issues found.
Blast Radius
One documentation file changed. No runtime code, configuration, or schema touched.
BLAST_SCORE: 0/10
CI status (head
7b1eae21a72e)Overall: ✓ success
3 checks: 3 pending
Findings
No new findings this round.
Quorum converged on empty findings (A + B both returned 0).
Verdict
NO_NEW_FINDINGS
hib-pr-reviewer • round 2 • 0 findings • 2026-06-03T09:49:32.774Z → 2026-06-03T09:51:39.518Z • posted-as: pr-reviewer-bot • model: auto