Files
gstack/docs/designs/gate-diff-calibration.md
Garry Tanandcapy-ai[bot] 5b9b8372c4 feat: honest work and gate integrity — gate-edit detector, review/ship gate pass, zero-run green, claims-need-evidence kernel (#3114)
* docs(designs): honest work and gate integrity plan (autoplan-reviewed)

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>

* test(e2e): review-gate-integrity rule case registered in touchfiles and the PR profile

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>

* feat(honesty): claims-need-evidence kernel, no_claim card field, CEO value test, implementer dispatch rules, ACCEPTANCE_EDITED, Honest Work ethos

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>

* feat(gate-diff): gate-edit detector lib + CLI, patch fixtures, calibration script, tests_ran in gstack-evidence

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>

* fix(gate-diff): RH-15? only on CI/config floors after calibration

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>

* feat(review,ship): Gate Integrity category, GATE_SCAN_BLOCK, one-way gate disposition, actor stamping, ZERO-RUN lanes, draft-while-open

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>

* chore: re-measure parity and context budgets on the integrated tree

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>

* test(touchfiles): gate-diff fixtures and helpers select review-gate-integrity

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>

* fix: archaeology lint wording, paid-file census, harness-version non-behavioral record

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>

* fix: pin review Step 3.5 rename, plan-path placeholder, mktemp template, per-stream evidence tail

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>

* test: ACCEPTANCE_EDITED fence substitutes the <plan-path> placeholder

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>

* fix(gate-diff): shallow boundary commits report no_base instead of a whole-tree inventory; recalibrate

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>

---------

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
2026-10-10 22:33:01 +00:00

11 KiB
Raw Permalink Blame History

gate-diff calibration — tool inventory over gstack's last 50 merged PRs

Generated by bun scripts/gate-diff-calibrate.ts --ref origin/main --count 50 --markdown on 2026-10-10 against origin/main at 20eb620 (v1.91.68.0), scanning each commit's first-parent delta exactly as gstack-gate-diff --commit <sha> does (regenerated after the RH-15? demotion and the shallow-boundary parent fix, so the table reflects the shipped detector). gstack squash-merges, so the 50 first-parent commits are the 50 landed PRs. The clone was shallow; git fetch --deepen=60 origin main was needed first (the tool reports a missing parent as GATE_ERROR=no_base … fix=git fetch --deepen).

What this measures, and what it does not

This is the tool's inventory: how many hunks the floor lists per PR, how many are eligible for the read level, how often the 50-hunk / 200 KB read cap makes a result partial, and how often each tag fires. Tags are factual labels (a test deleted beside its deleted source is still RH-1), so a tag count is not a count of problems.

It does not measure agent findings, kept/restored/open dispositions, or whether a reviewer would have wanted to read a tagged hunk. The design's 10-PR hand read of tagged hunks is a human step this table only supports; the agent-level signal is collected after ship from the persisted review records. No artifact was written: calibration never touches the state root.

Observations from the numbers

  • Listed per PR: median 40.5, p75 267, max 1,276 (the v1.91.8.0 test-audit wave); eligible median 24.5. This matches the design's own measurement (median 23–45) and confirms per-hunk disposition is unworkable; the three levels are the right unit.
  • Partial results: the read cap was hit in 20 of 50 PRs. For gstack's test-heavy PRs, "partial (K of M eligible read)" will be the common state, not the exception.
  • RH-15 (paired, 35 hunks / 14 PRs) reads well by inspection: real timeout-minutes bumps in workflows, timeout 5000 -> 30000 in tests, a judge threshold 4 -> 3, an exact-count assertion relaxed to a bound, plus tightenings labelled as such. The direction note makes the read fast.
  • RH-15? (unpaired): as first specified ("unpaired values are tagged RH-15? and read") the tag fired on 848 hunks across 41 PRs, dominated by spawnSync(…, { timeout: 30_000 }) in new or moved test code; this repository requires a timeout on every synchronous spawn (test/spawnsync-timeout-tripwire.test.ts), so nearly every test PR carried dozens of noise tags. Decision (integrator, per the design's demotion rule): RH-15? applies only to CI and runner/lint-config files; in test files unpaired values are inventory and only paired RH-15 is tagged. With that rule the table below shows 30 hunks across 13 PRs, all in workflow or runner config. The detector was also tightened to key-value assignments (key: N, key = N, key(N), --key N, and a gate key opening a nested structure) and to numeric literals with _ separators; prose strings and setTimeout calls no longer fire.
  • RH-1 (411 hunks / 18 PRs): 343 of them are the v1.91.8.0 test-retirement PR; 29 are skip/only idioms (several are conditional process.platform === 'linux' ? describe : describe.skip). Factual, and exactly the inventory a reviewer of that PR would want listed.
  • RH-16 (80 hunks / 19 PRs): gstack's many best-effort catch {} blocks. Overlaps slop-scan as the design states; listed under the RH id.
  • RH-12, RH-13, RH-14: rare (6 / 8 / 3 hunks), plausible on inspection.
  • RH-3 / RH-3?: did not fire; gstack has no __snapshots__/.golden fixtures in this window (its SKILL.md goldens are .md, listed by path only).
  • Prose (.md, .md.tmpl) and generated/vendored paths (dist/, vendor/, lockfiles, .min.js) are floor inventory only; without that rule the design document itself tagged every RH id it describes.

Table

commit subject listed eligible read unread unmatched unsupported tags
20eb6202fa v1.91.68.0 fix(cso-eval): Claude producers keep the source sealed, run t 18 16 16 0 6 0 -
54efba6dd5 v1.91.67.0 feat(hosts): Antigravity CLI (agy) host (#3089) 14 7 7 0 15 0 -
8bb6d65270 v1.91.66.0 fix: /autoplan without permission prompts after background re 133 88 50 38 119 0 RH-1:2 RH-15?:1 RH-16:2
b357b50378 v1.91.65.0 fix(install): skills only for the agents you installed, every 12 8 8 0 19 0 -
9e9e674b1e v1.91.62.0 fix(cso): Rails verification fits two arm64 offline preparati 1 1 1 0 5 0 -
4dfd83bf8c v1.91.60.0 fix(windows): setup degrades instead of dying on a CSO failur 25 8 8 0 17 0 RH-15:1 RH-16:2
4e5ffbb857 v1.91.59.0 fix(autoplan): bind init through symlinked plan directories a 6 4 4 0 8 0 -
9a1dc81a2b v1.91.54.0 fix: office-hours first sessions get the first-session closin 13 6 6 0 18 0 -
d082eccc50 v1.91.52.0 fix(qa): annotations limits shape; qa-quick does less work in 2 1 1 0 7 0 -
c7edf46bcf v1.91.47.0 fix(careful,freeze): safety hooks cover PowerShell and Notebo 11 7 7 0 22 0 -
92cfd07a79 v1.91.45.0 feat: configurable model tiers and advisory freshness (#3073) 52 26 26 0 60 0 RH-15?:1 RH-16:1
52eec18c63 v1.91.42.0 fix(cso): lift the snapshot file-count ceiling, bound report 2 1 1 0 9 0 RH-16:1
c7554824cb v1.91.38.0 fix(ios-qa): iPads work, a dropped route no longer relaunches 17 10 10 0 13 0 -
1d1ce39b4e v1.91.36.0 fix(cso): Python and Rails repairs replay, Rails verification 9 4 4 0 11 0 -
f67c478f05 v1.91.34.0 fix: /autoplan on current Claude Code and long sessions, quie 194 126 50 76 150 0 RH-1:1 RH-15:1 RH-15?:2 RH-16:1
db745675bd v1.91.33.0 feat(ship): measurement bar with explained-red and pooled dec 26 18 18 0 16 0 RH-15?:1
28f1385eac v1.91.32.0 fix: Codex works from zsh, free text never enters shell comma 120 65 50 15 155 0 RH-15:1 RH-16:1
7697fb2981 fix(cso): install Rails gems on one thread so exports stop failing (v1.9 2 0 0 0 7 0 -
55f8151fbe v1.91.30.0 fix: honest eval failure reports, Bun floor with safe auto-up 414 219 50 169 103 0 RH-1:2 RH-13:4
5885157a90 v1.91.29.0 fix(cso): native runtime qualification passes for Node, Bun, 21 12 12 0 14 0 -
c285d88b90 Promote qualified CSO scanner catalog (#3042) 0 0 0 0 1 0 -
10315cf44d v1.91.27.0 fix(cso): runtime staging can finish and a qualified scanner 11 7 7 0 7 0 -
857466ff8b v1.91.25.0 feat(cso): private two-architecture release scoring + self-ch 55 30 30 0 19 0 RH-15?:1
55fbe77195 v1.91.24.0 test: audit wave — PR evals keep finished work, honest ceilin 761 637 50 587 66 0 RH-1:14 RH-14:2 RH-15:1 RH-15?:8 RH-16:1
f97aefe654 v1.91.22.0 feat(cso): reviewed, attested scanner build inputs + fixes so 5 3 3 0 10 0 -
2db0b3adc8 v1.91.19.0 fix: severe fix wave (truthful gates, no lost memory, every h 577 317 50 267 219 0 RH-1:1 RH-12:1 RH-16:11
4015c2870b v1.91.18.0 feat: Opus 5.5 cleanup follow-ups — scoped transcript consent 423 110 50 60 82 0 RH-1:2 RH-16:1
fe6d1ae62a v1.91.17.0 fix: mvanhorn wave (checkpoint provenance, never-overwrite de 24 8 8 0 37 0 RH-16:3
ac20ef1e13 v1.91.16.0 fix: safe installs and upgrades, skills start everywhere, tru 420 288 50 238 228 0 RH-15:2 RH-15?:2 RH-16:1
74512c20a7 v1.91.15.0 v1.91.15.0: Opus 5.5 prompt cleanup, behavior-level skill tes 538 451 50 401 186 0 RH-1:8
f30b7b788a v1.91.13.0 fix: severe bug wave (autoplan guard, land-and-deploy CI gate 115 66 50 16 56 0 RH-16:1
7fca42ad8b v1.91.12.0 v1.91.12.0: audit fix wave, ~11-minute paid eval lanes, eval 712 516 11 505 109 0 RH-1:4 RH-12:1 RH-13:1 RH-15:7 RH-15?:7 RH-16:23
df89475b17 v1.91.11.0 refactor: one state-root rule, browse route table, shared sha 310 223 16 207 236 0 RH-1:5 RH-13:3 RH-15:1 RH-16:3
96764e80a6 v1.91.9.0 feat: test value bar in plan-eng-review, review, qa and ship, 45 33 33 0 37 0 -
943105f109 v1.91.8.0 test: smaller suite, derived paid selection, retired never-gre 905 858 37 821 30 3 RH-1:344 RH-15:1 RH-15?:1
dcaea52800 v1.91.7.0 feat: add functional QA and pre-publication docs checks (#2983 670 492 50 442 138 0 RH-1:7 RH-15:4 RH-16:1
65bfb0ce49 v1.91.6.0 feat: balance PR eval slices by recorded duration without weak 2 0 0 0 7 0 -
080a655791 v1.91.5.0 feat: balanced free-suite shards, test:ubicloud, and faster PR 36 23 23 0 12 0 RH-1:1 RH-15:1 RH-15?:1
d2a0bbcf4c v1.91.4.0 fix: Windows Opera cookie import wave (#2980, refs #2957) (#29 12 5 5 0 14 0 -
01593aa67c v1.91.2.0 fix: consolidate gstack reliability wave (#2959) 269 166 50 116 97 0 RH-1:3 RH-15:5 RH-15?:1 RH-16:4
2a113ae7e6 v1.91.1.0 fix: harden Impeccable plugin discovery (#2978) 27 3 3 0 6 0 -
7b534d3e90 v1.90.2.0 perf: halve local free-suite time and preserve coverage (#2972 99 56 50 6 21 0 RH-1:1
a84b0b5b6d v1.90.0.0 feat: make browser cookie imports explicit and safe (#2964) 160 74 10 64 35 0 RH-12:3 RH-15:3 RH-15?:1 RH-16:11
730a1017d1 v1.89.1.0 fix: remove continuous checkpoint commits (#2970) 98 72 50 22 69 1 RH-1:1
06ed920a97 v1.89.0.0 feat: add shared-code extraction audit (#2925) 267 189 50 139 89 3 RH-1:2 RH-15:1
b9706f3635 v1.88.1.0 fix: harden credential boundaries and owned state (#2942) 59 42 42 0 12 0 RH-1:1 RH-12:1 RH-16:8
636175d349 v1.87.6.0 fix: make checks reliable and everyday validation faster (#289 1276 618 50 568 154 2 RH-1:12 RH-14:1 RH-15:6 RH-15?:3 RH-16:4
35dd014c58 v1.87.5.0 perf: remove idle waits from tests and CI planning (#2897) 77 47 47 0 12 0 -
a6b3a57512 v1.87.4.0 fix: preserve health failures and disclose coverage (#2882) 15 6 6 0 6 0 -
85b8c038fc v1.87.3.0 fix: bind review evidence to the reviewed tree (#2875) 32 19 19 0 29 0 -

Scanned: 50 of 50 first-parent commits on origin/main; 0 errored. Listed per commit: median 40.5, p75 267, max 1276; eligible median 24.5, p75 126, max 858; partial (read cap hit) in 20 commit(s). Tags: RH-1: 411 hunk(s) in 18 commit(s); RH-12: 6 hunk(s) in 4 commit(s); RH-13: 8 hunk(s) in 3 commit(s); RH-14: 3 hunk(s) in 2 commit(s); RH-15: 35 hunk(s) in 14 commit(s); RH-16: 80 hunk(s) in 19 commit(s); RH-15?: 30 hunk(s) in 13 commit(s).