Skip to content

docs(adr): record the #1280 soak verdict, ADOPT TEMPO / mctl-native only - #2071

Merged
mashkovd merged 1 commit into
mainfrom
docs/1280-soak-verdict
Oct 22, 2026
Merged

mashkovd merged 1 commit into
mainfrom
docs/1280-soak-verdict

Conversation

@mashkovd

Copy link
Copy Markdown
Member

Records the #1280 soak verdict, ADOPT TEMPO / mctl-native only (315/500), in ADR 0001, the rubric and the runbook.

The window was shortened. The owner closed the soak on 2026-10-22 17:00Z for operator capacity, 30 h 59 min before the declared 2026-10-23 23:59Z (90.4% of the declared window). The new "Window amendment" section records this as a change to a declared parameter made after measurements had started, and the Decision opens with the same caveat.

Changes:

  • docs/adr/0001-agent-execution-trace-backend.md: Status is Accepted, plus the window amendment and the Decision (scores, decision-rule branch 3, the evidence). The Decision also keeps the findings that cut against the result: a bounded trace-by-id returned 5,092 of 6,930 in-window spans, which is unexplained (the ingest counters show no loss), and the verdict's own reads pushed the pod to 898 MiB after the cutoff.
  • docs/adr/0001-rubric.yaml: the Tempo cells are scored, each with a citation. The other candidates are cited nulls ("not deployed in this round"). Adds the verdict and a verdict_record.
  • tests/test_adr_rubric_frozen.py: the freeze (T6) still holds while the verdict is null. Once a verdict is set, T6b applies instead: every cell has a citation, scores are integers 0–5, the ADR is Accepted with no UNFILLED marker, and the Decision names a permitted verdict. Mutation-checked with 5 mutants (uncited null, score 6, Decision without the verdict, Status Proposed, unknown verdict); each one fails the test.
  • docs/runbooks/tracing-bake-off.md: what actually ran, the scored §8 contract and the read-path lessons.

The measurements are in #1280 (comment).

Not in this PR: the teardown (runbook §9–10, due by 2026-10-24) and the adoption plan, which needs owner approval. Each is its own PR.

Refs #1280

🤖 Generated with Claude Code

The owner closed the soak on 2026-10-22, 30 h 59 min before the declared
end, for operator capacity. The window amendment records that change to a
declared parameter openly, and the Decision opens with it, so the verdict is
not read as resting on the full declared window.

Every Tempo cell is scored from a measurement cited in the rubric. The other
candidates' cells are null with the scope-amendment reason, as the rubric
requires for anything not measured. The freeze test now enforces the scored
contract once a verdict is set, instead of failing on it.

The record also keeps findings that do not flatter the result: a bounded
trace-by-id returned 5,092 of 6,930 in-window spans (unexplained; the ingest
counters show no loss), and the verdict's own reads pushed the pod past the
80% memory line after the cutoff.

Refs #1280
@claude

claude Bot commented Oct 22, 2026 •

Copy link
Copy Markdown

Claude finished @mashkovd's task in 5m 4s —— View job


Review complete ✅

  • Gather context (PR body, changed files)
  • Diff review against pinned commit adb09231 (shallow clone had no merge-base for the 3-dot form; used the 2-dot diff and confirmed its per-file line counts match the PR's stated +122/-7, +113/-34, +28/-2, +44/-12 exactly)
  • Review ADR doc, rubric YAML, runbook, and frozen-rubric test
  • Post findings / verdict

Verdict: APPROVED — 0 P1/P2, 1 P3.

What I checked beyond reading the prose:

  • tests/test_adr_rubric_frozen.py's new T6/T6b branch on rubric["verdict"] — traced through each of the 5 claimed mutants (uncited null, score 6, Decision missing the verdict string, Status still Proposed, unknown verdict) and each one does trip a real check().
  • The new 4-column Decision table (| Dimension | Weight | Tempo | Weighted |) in the ADR does not get picked up by the weights-table regex (^\|...\|\d+\|$) — confirmed only the original 2-column Frozen-rubric table matches, so adr_weights isn't corrupted by the new table.
  • Hand-checked the window-shortfall arithmetic: declared 2026-10-10 11:55Z→2026-10-23 23:59Z = 324h04m; actual →2026-10-22 17:00Z = 293h05m; shortfall 30h59m = 9.6% (90.4% of declared). Checks out.
  • Hand-checked the weighted score: 4·25+2·25+4·20+3·15+4·10+0·5 = 100+50+80+45+40+0 = 315/500, matching the ADR table and verdict_record.weighted_total.
  • decision_rule_branch: 3 and the branch-3 narrative (Tempo's AI/agent score of 2 vs. the openclaw-llm-usage baseline's 2) are consistent between the ADR Decision section and the rubric's verdict_record.

One inline P3 nit posted on docs/adr/0001-rubric.yaml:38: the "not deployed in this round" citation string is duplicated verbatim 24 times (4 non-Tempo candidates × 6 dimensions) — cosmetic only, a YAML anchor would dry it up if the file is touched again.

No P1/P2 findings — the math, the amendment caveat, and the test's dual-mode contract all hold together.

@github-actions

Copy link
Copy Markdown
Contributor

Antigravity (agy) review — informational

Model: gemini-3.8-flash-high · commit adb0923.

No significant issues found.

Comment thread docs/adr/0001-rubric.yaml
langfuse: {score: null, citation: ""}
phoenix: {score: null, citation: ""}
signoz: {score: null, citation: ""}
traceway: {score: null, citation: "not deployed in this round: the 2026-10-10 bake-off scope amendment limited #1280 to Tempo, so this cell was not measured"}

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P3: The citation string "not deployed in this round: the 2026-10-10 bake-off scope amendment limited #1280 to Tempo, so this cell was not measured" is repeated verbatim 24 times (4 non-Tempo candidates × 6 dimensions). Not a correctness issue — the test only requires a non-empty citation per cell — but a YAML anchor (e.g. &not_deployed) would remove the duplication if this file gets touched again.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Deferred (P3, cosmetic). The repeated citation is deliberate for now: each cell stays self-describing when read alone. An anchor can come with the next edit to this file.

@claude claude Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No P1/P2 findings (1 P3). Good to merge.

Verified: the T6/T6b split in tests/test_adr_rubric_frozen.py correctly branches on verdict, and the new 4-column Decision table in the ADR does not interfere with the weights-table regex (confirmed only the original 2-column Frozen-rubric table matches). Hand-checked the window-shortfall arithmetic (293h05m actual vs 324h04m declared = 30h59m shortfall = 90.4%) and the weighted score total (315/500) — both internally consistent. The 5 claimed mutants (uncited null, score 6, Decision without the verdict, Status Proposed, unknown verdict) each map to a real check in the updated test. One P3 nit posted inline (duplicated citation string, cosmetic only).

@mashkovd
mashkovd merged commit c880817 into main Oct 22, 2026
28 checks passed
@mashkovd
mashkovd deleted the docs/1280-soak-verdict branch October 22, 2026 18:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant