Patch Release: v0.34.8¶
Date: 2026-10-01 Previous Version: 0.34.7 Tag: v0.34.7
Qualifying GHIs¶
| # | Title | Status | Warning |
|---|---|---|---|
| 533 | agents-md-budget: 5k recovery target requires ADR-0.0.37 completion + registry-projection migration | diff_only | GHI #533 has commits touching src/gzkit/ but no 'runtime' label |
| 611 | governance: no general append-only corrective-action primitive to undo agent/human error (repudiate is a point-solution) | open_upstream | GHI #611 qualifies on commit markers but is still OPEN upstream; confirm this release closes it before counting it |
| 802 | docs: gzkit.org serves stale docs from a hand-deployed VPS | excluded | |
| 803 | docs-build: mkdocs validation downgrades withdraw the dead-link enforcement run_mkdocs claims | qualified | |
| 808 | decommission-tautological-tests: criteria gate the ratchet, not the debt | qualified | |
| 815 | agents-md: must-survive section renders past the Codex cap, undelivered | qualified | |
| 818 | governance: Architectural Boundaries rest on a memo, not an ADR | diff_only | GHI #818 has commits touching src/gzkit/ but no 'runtime' label |
| 820 | task-envelope Signature (c): a channel SUBSET is reported as layer-drift, so the gate is satisfiable only by falsifying attribution | qualified | |
| 832 | release-tags: 22 of 34 grandfathered releases are repairable, not stuck | qualified | |
| 837 | pool ADRs: 5 promotion criteria route through the sealed foundation kind | excluded | |
| 838 | handoff: Settled Rulings is 85% of the document and re-adjudication still happens | qualified | |
| 849 | arb red: witness is inert on landed work, so --from=verify gates nothing | qualified | |
| 851 | session-green-gate: delivery witness covers 1 of 4 declared hook types | qualified | |
| 856 | arb: canonical unittest invocation is serial while every gate runs it parallel (3.05x) | qualified | |
| 870 | handoff: continues_from is traversed on resume, but ResumeResult.chain is read by nobody | qualified | |
| 871 | adr-routing: corrective re-home collides with ascending-semver order | qualified | |
| 873 | corpus fold: superseding an amendment republishes the original wording | qualified | |
| 874 | corpus: entry ids are unenforced, so a content row can silently leave canon | qualified | |
| 877 | ledger: typed union rejects ~300 committed rows the JSON schema accepts | qualified | |
| 888 | req_kind_support: SUPPORT proof events are substring-scanned, so a denial reads as a citation | qualified | |
| 889 | obpi precomplete: arb_receipts counts receipts, never reads exit_status | qualified | |
| 894 | ledger validator: attestor guard is weaker than the gate it witnesses | qualified | |
| 920 | enforcement: NC runner rmtree's any fixture path it is handed | qualified | |
| 921 | instruction surfaces: .gzkit/rules/** is uncorpused, and fans out to all 26 generated AGENTS.md | open_upstream | GHI #921 qualifies on commit markers but is still OPEN upstream; confirm this release closes it before counting it |
| 922 | agents-md-map-conformance: 26 nested AGENTS.md are checked by nothing | unclassified_reference | GHI #922 is cited in range by a commit whose type is not a closure type; no closure commit claims it. Adjudicate per SKILL.md § Step 1c before publishing |
| 923 | agent sync: nested subtree rules reach Codex only, not Claude | qualified | |
| 924 | vendors: gz init regenerates the whole Copilot surface the drop removed | qualified | |
| 925 | skill mirror: generated CLAUDE.md is copied into Codex's own surface root | qualified | |
| 927 | red-witness: direct-fix guards are outside every falsifiability gate | qualified | |
| 928 | adr-checklist: the tick mark is parsed away and read by nothing | qualified | |
| 929 | config: 44 registries, 93 readers, no owner, loader, or coherence gate | qualified | |
| 931 | pointer-integrity: relative lift pointers are resolved against the repo root, so correct links fail | qualified | |
| 932 | pointer-integrity: back-pointer check is a bare substring test, so any lifted-from satisfies every pointer | qualified | |
| 933 | pointer-integrity: Invariant 3's witness checks 4 of 17 lift pointers | qualified | |
| 934 | doctrine: Fable/Mythos 5.1 card supersedes registry; 9 surfaces sole-source the old card | unclassified_reference | GHI #934 is cited in range by a commit whose type is not a closure type; no closure commit claims it. Adjudicate per SKILL.md § Step 1c before publishing |
| 935 | frontier-model-card-currency: criteria check registry shape, never currency | qualified | |
| 936 | chore currency gates are only readable by running the chore they gate | qualified | |
| 937 | comparison-doc: adopter table advertises branch-per-ADR isolation | excluded | |
| 938 | check-config-paths: every .github/ path literal is unmappable | qualified | |
| 939 | advisory-scorecard: skill-declared doctrine is structurally unscorable | unclassified_reference | GHI #939 is cited in range by a commit whose type is not a closure type; no closure commit claims it. Adjudicate per SKILL.md § Step 1c before publishing |
| 940 | verifier-pipe-gate: a trailing statement masks a verifier's exit status | qualified | |
| 941 | obpi-pipeline review gate: reviewers cannot execute, so unrunnable asks degrade the verdict | qualified | |
| 942 | obpi-pipeline Stage 4a: pasted command output is unverified, and Step 4b does not check it | qualified | |
| 943 | Claude tuning: universal pressure miscalibrates Opus 5 and Fable 5.1 | unclassified_reference | GHI #943 is cited in range by a commit whose type is not a closure type; no closure commit claims it. Adjudicate per SKILL.md § Step 1c before publishing |
| 944 | gz validate: Rich markup swallows every error type in validation output | qualified | |
| 945 | content: advisory-lock primitive is a private cross-module import | qualified | |
| 946 | gz task envelope diagnose: the frontmatter tasks: channel always reads empty | qualified | |
| 947 | task-envelope: tool-locus artifact_edited rows also have no attribution channel (sibling of #869) | qualified | |
| 948 | tautological-test-audit: scanner flags behavior tests it cannot see through helpers, value-loads, or artifacts | qualified | |
| 949 | gz check: --reuse-verified passes a tree the full gate fails, and it is the pre-push gate | label_only | GHI #949 has 'runtime' label but no commits touching src/gzkit/ |
| 950 | task-envelope: no roster member meets the roster's task_id criterion | qualified | |
| 951 | session-exit: bookmark writes the absolute transcript path into a repo-bound artifact | qualified | |
| 953 | ledger: append has no transaction boundary across writers or crashes | qualified | |
| 955 | test_ownership: a top-level fcntl import costs 68 tests their Windows run | excluded | |
| 956 | imports: 104 cross-package private-symbol reaches, and ruff sees 1 | unclassified_reference | GHI #956 is cited in range by a commit whose type is not a closure type; no closure commit claims it. Adjudicate per SKILL.md § Step 1c before publishing |
| 957 | gz check is red on main: behave fixture seeds a floor_event_id the guard now refuses | label_only | GHI #957 has 'runtime' label but no commits touching src/gzkit/ |
| 958 | ownership tests: fixture writes CRLF on Windows, so 23 byte-span assertions fail | qualified | |
| 959 | obpi-complete: refuted-with-caveats clears the gate with no resolution | qualified | |
| 960 | obpi-complete: a refutation is accepted as a terminal completion state | qualified | |
| 961 | codex adversary: adversarial-review is hardcoded read-only, so Step 4b can never execute | qualified | |
| 962 | codex config: .codex/config.toml is never read, so GHI #815's doc cap is undelivered | qualified | |
| 963 | mutation sweeps: byte-identical mutations collide in the pyc cache, so a sweep can report a false PASS | qualified | |
| 964 | obpi precomplete: a discharged refutation in Step 4b history fails the preflight forever | qualified | |
| 965 | obpi present-evidence: multi-line Demo command is split into per-line commands | qualified | |
| 966 | adr status: a closed GHI still renders as a live tracked defect | qualified | |
| 967 | preflight: a FAIL audit receipt orphans itself, and cleanup unlinks it | qualified | |
| 968 | reviewer personas: "read-only" is enforced as "no Bash", and no surface expresses the difference | qualified | |
| 970 | stage4-packet: a | suffix lets the failure branch's output be omitted | |
| 971 | verifier-pipe-gate: an && chain is masked by whatever catches it | qualified | |
| 972 | gh-cli: whole-queue counts use gh issue list's default 30-row cap | diff_only | GHI #972 has commits touching src/gzkit/ but no 'runtime' label |
| 974 | content ownership: no governed transition from unowned to corpus-owned | qualified | |
| 975 | test_corpus_model: fingerprint pin asserts 'no capture since re-pin', not REQ-0.35.0-01-01 | qualified | |
| 976 | ownership prose: growth refusal and unown help each prescribe a path that refuses | qualified | |
| 977 | tests: git fixtures inherit the hook's GIT_DIR and rewrite the hosting repo's config from a linked worktree | diff_only | GHI #977 has commits touching src/gzkit/ but no 'runtime' label |
| 978 | ownership prose: 13 sibling witness-chain refusals prescribe a refused step | open_upstream | GHI #978 qualifies on commit markers but is still OPEN upstream; confirm this release closes it before counting it |
| 979 | ownership loader: a witness need not be the chain tip, so an attested raise silently reverts | qualified | |
| 980 | GHI workflow: repair and review lack a bounded closure contract | diff_only | GHI #980 has commits touching src/gzkit/ but no 'runtime' label |
| 981 | stage4 replay: /bin/sh is dash on Linux, so the pipefail escape the gate sanctions is rejected | qualified | |
| 982 | CI: windows-latest has been red for 4+ pushes, so the leg witnesses nothing | qualified | |
| 984 | obpi pipeline: repair and evidence obligations drift across review instructions | qualified | |
| 985 | acceptance: preserve proof obligations and verified finding closure | qualified | |
| 986 | acceptance prove: a covering test with a docstring reads as a red baseline | qualified | |
| 987 | gz arb step: docs mandate --max-output-chars, the CLI rejects it | qualified | |
| 989 | acceptance: input_digest hashes os.environ, so an independent review can never import | qualified | |
| 990 | acceptance/mutation fixtures: CRLF writes make mutation targets unfindable on Windows | qualified | |
| 991 | arb step fixture: child stdout uses the locale encoding, so a CJK payload dies on Windows | qualified | |
| 992 | obpi pipeline: launch never invokes the reconciler it declares | qualified | |
| 994 | acceptance review: a non-executing reviewer can record a confirmation it could not have made | qualified | |
| 995 | gz validate --json exits 0 on failure, so every scope reports success to callers | qualified | |
| 996 | justify binding: an empty filename discharges required reasoning | qualified | |
| 999 | chores: no chore declares class or rung, so posture is unchecked | qualified | |
| 1000 | handoff rulings: a handoff's own rulings stay unsearchable until a successor | qualified | |
| 1001 | cli exit codes: usage error exits 2, which help and cli.md call System/IO | qualified | |
| 1002 | chores: CHORE.md duplicates criteria and version, and 17 have drifted | qualified | |
| 1003 | handoff rulings: a successor restating an inherited ruling books a second copy | unclassified_reference | GHI #1003 is cited in range by a commit whose type is not a closure type; no closure commit claims it. Adjudicate per SKILL.md § Step 1c before publishing |
| 1004 | handoff decide: output, help and manpages still report a retired gate | qualified | |
| 1005 | chores sync: surface-level files resolve as slugs, so the registry never ships | qualified | |
| 1006 | cli-alignment: chore docs are unscanned, and 8 gz chains in 4 chores do not resolve | qualified | |
| 1007 | enforcement floor: a claim declares no population, so a subset witness passes its own control | qualified | |
| 1008 | verifier-pipe-gate: a verifier inside a ( ) or { } group is not recognized | qualified | |
| 1010 | cli logging: structlog writes to stdout, corrupting --json output | qualified | |
| 1011 | chores: 4 CHORE.md files describe mechanisms or paths that don't exist | diff_only | GHI #1011 has commits touching src/gzkit/ but no 'runtime' label |
| 1014 | closeout: from_state is hardcoded and bypasses transition validation | qualified | |
| 1016 | vendors: gemini is still declared in config and schema after its surfaces were removed | qualified | |
| 1017 | commit-trailers: the mandatory Task: trailer has no automated witness | qualified | |
| 1019 | doctrine: GPT-6 Astra card (2026-09-03) supersedes the GPT-5.6 registry entry | diff_only | GHI #1019 has commits touching src/gzkit/ but no 'runtime' label |
| 1021 | agent sync: Claude receives every subtree rule twice — .claude/rules and the nested CLAUDE.md import | qualified | |
| 1022 | templates/agents.md: adopter Gate Covenant rows name gz lint and a manual check for Gates 3 and 4 | diff_only | GHI #1022 has commits touching src/gzkit/ but no 'runtime' label |
| 1024 | src: 12 modules cite governance-core.md as a rule home; one is a user-facing error message | qualified | |
| 1025 | skills: Confidence Gate and gz-justify route on the retired 90% framing | diff_only | GHI #1025 has commits touching src/gzkit/ but no 'runtime' label |
| 1026 | arb validate: 38 of gzkit's own receipts fail — writers outran the schemas | qualified | |
| 1027 | arb: coverage is the last serial full-suite run — 493 s vs 307 s parallel, same totals | qualified | |
| 1028 | gz-obpi-pipeline Stage 4: 4a and 4b invalidate each other with no bound and no exit | open_upstream | GHI #1028 qualifies on commit markers but is still OPEN upstream; confirm this release closes it before counting it |
| 1029 | acceptance: proof currency is a whole-tree digest, so any edit stales every proof and review | unclassified_reference | GHI #1029 is cited in range by a commit whose type is not a closure type; no closure commit claims it. Adjudicate per SKILL.md § Step 1c before publishing |
| 1031 | attestor placeholders: docs and CLI remedies prompt for a real name | qualified | |
| 1033 | ghi-triage chat-silence hook: a backslash-newline command never matches | qualified | |
| 1035 | runtime messages: 25 sites cite AGENTS.md rule numbers that no longer exist | qualified | |
| 1036 | config: no configured attestor handle, so every remedy shows a fill-in token | qualified | |
| 1040 | model-selection: skill example prescribes an invisible version field | qualified | |
| 1044 | chore rules: canonical authoring and damaged-slug recovery name opposing sources | qualified | |
| 1045 | three pillars: measure uncued obligation discovery | unclassified_reference | GHI #1045 is cited in range by a commit whose type is not a closure type; no closure commit claims it. Adjudicate per SKILL.md § Step 1c before publishing |
| 1047 | smoke docs: empty-tier failure omits adopter opt-in | qualified | |
| 1048 | three pillars: test explicit obligation tracing | unclassified_reference | GHI #1048 is cited in range by a commit whose type is not a closure type; no closure commit claims it. Adjudicate per SKILL.md § Step 1c before publishing |
| 1049 | brief paths: relative prefix bypasses generated-mirror refusal | qualified | |
| 1052 | three pillars: measure bounded source-impact views | unclassified_reference | GHI #1052 is cited in range by a commit whose type is not a closure type; no closure commit claims it. Adjudicate per SKILL.md § Step 1c before publishing |
| 1053 | three pillars: route advisory impact design and implementation | unclassified_reference | GHI #1053 is cited in range by a commit whose type is not a closure type; no closure commit claims it. Adjudicate per SKILL.md § Step 1c before publishing |
| 1054 | ontology: default source discovery ignores configured root | qualified | |
| 1057 | plan audit: out-of-scope paths always pass containment | qualified | |
| 1063 | registries: 51 validator scopes and 10 event types are never invoked | qualified | |
| 1064 | transcribed-counts: the registry scans a superseded campaign, so the live plan is unscanned | label_only | GHI #1064 has 'runtime' label but no commits touching src/gzkit/ |
| 1066 | config-registry: ownership is exhaustive, derivation and module constants are not | qualified | |
| 1067 | config: no single read seam — 30 modules reach into data/ directly | qualified | |
| 1068 | test_report_publication: write_text fixture writes CRLF on Windows | qualified | |
| 1069 | line-endings audit: scope excludes the write_text hazard it names | qualified | |
| 1070 | settings sync: enabledPlugins is replaced wholesale, so no project can enable a plugin | qualified | |
| 1071 | settings.local backup vault resolves INSIDE the repo on Windows | qualified | |
| 1072 | settings vault is written but never read, so the backup guarantee has no witness | qualified | |
| 1074 | ledger: ts stamped outside append's lock, so writers land out of order | qualified | |
| 1075 | ledger merge-driver: additive ts-ordered insertion read as a rewrite | qualified | |
| 1076 | handoff resume: ADR and OBPI citations never resolve, only GHI does | qualified | |
| 1077 | gz check: step cost record has no consumer and no refresh mechanism | qualified | |
| 1078 | handoff resume: ADR citations stay UNKNOWN on a deferral the operator has now ruled | qualified | |
| 1079 | citation resolver: reads exact graph ids, but handoffs cite prefixes | qualified | |
| 1080 | ledger: canonicalize_id re-reads the whole ledger per call, costing 55s in gz check | qualified | |
| 1081 | git-sync: commit anchors are shape-checked but never resolved | qualified | |
| 1082 | handoff resume: inline next steps after a preamble extract as zero | qualified | |
| 1083 | cli-alignment: the code-citation arm excludes docs/governance prose | qualified | |
| 1084 | git-sync: an anchor the commit only discusses is emitted as touched | qualified | |
| 1085 | behave: a @wip block's tracking reference is prose, so a met deferral never expires | label_only | GHI #1085 has 'runtime' label but no commits touching src/gzkit/ |
| 1086 | budget: a 2026-06 test blocks on limits the 2026-08 stay made advisory | excluded | |
| 1087 | rulings: a booked stay names no enforcement sites, so its sweep cannot be verified | unclassified_reference | GHI #1087 is cited in range by a commit whose type is not a closure type; no closure commit claims it. Adjudicate per SKILL.md § Step 1c before publishing |
| 1088 | gz check: the default sweep runs Behave on every per-change run | qualified | |
| 1089 | doctrine: Opus 5.5 card supersedes the Opus 5 registry entry | unclassified_reference | GHI #1089 is cited in range by a commit whose type is not a closure type; no closure commit claims it. Adjudicate per SKILL.md § Step 1c before publishing |
| 1090 | AGENTS.md: REQ-coverage line drops the lane scope ADR-0.0.25 attests | qualified | |
| 1091 | control surfaces: 2026-09-17 compression dropped 23 binding conditions | diff_only | GHI #1091 has commits touching src/gzkit/ but no 'runtime' label |
| 1092 | commit-locus recorder: pre-commit stash rollback discards its row | qualified | |
| 1093 | present-evidence: brief Demo runs in the live checkout and can attest | qualified | |
| 1094 | red-parity: ignores acceptance proofs, unsatisfiable on landed code | qualified | |
| 1095 | review composers: two JSON envelopes per reply, so imports keep failing | qualified | |
| 1096 | review context: carries all proof history, so prompts grow unbounded | qualified | |
| 1097 | opus-tuning: fallback and thinking-control doctrine misstate Opus 5.5 card | qualified | |
| 1098 | gz init repair: rewrites canonical skills its dry run never lists | qualified | |
| 1099 | skills audit: wall-clock review age fails tests and aged wheel installs | qualified | |
| 1100 | sync entry points: tidy --fix and init repair skip the canonical preflight | qualified | |
| 1101 | attestor examples: --help and manpages model a person's name | qualified | |
| 1102 | complexity advise: neither intrinsic-attestation path suppresses a diagnosis | qualified | |
| 1103 | complexity advisor: unmatched crossings are all labelled long_parameter_list | qualified | |
| 1104 | complexity guide: hint line range is usually the def line alone | qualified | |
| 1105 | complexity auto-chain: timeout ignores its config key; hook runs uvx xenon | qualified | |
| 1106 | skills: no flow guide answers how do I / what can I; router is stale | qualified | |
| 1107 | skills: no skill encodes how to review a skill | diff_only | GHI #1107 has commits touching src/gzkit/ but no 'runtime' label |
| 1108 | skill sync: wheel gets SKILL.md only, so references/ never ship | qualified | |
| 1109 | content commit: retention sidecar written with no trailing newline | qualified | |
| 1111 | skill docs pages: 3 Purpose lines quote an overview the skill dropped | excluded | |
| 1112 | skills: 8 skill bodies are still the scaffold template | unclassified_reference | GHI #1112 is cited in range by a commit whose type is not a closure type; no closure commit claims it. Adjudicate per SKILL.md § Step 1c before publishing |
| 1114 | chores: 8 shipped chores' criteria run scripts adopters never get | qualified | |
| 1115 | obpi brief-drift: --apply writes into a sealed brief | qualified | |
| 1116 | obpi brief-drift: --dry-run hides the amendments it would write | qualified | |
| 1117 | validate manpage: Scopes Reference omits 28 of 99 scopes, unchecked | excluded | |
| 1118 | migrate-semver: 21 bare-id renames pending; nothing runs the detector | qualified | |
| 1122 | gz init --update: EDITED detection needs a marker nothing writes | qualified | |
| 1123 | gz init --update: refresh skips classifiers, overwrites chore registry | qualified | |
| 1124 | gz tidy: --check is a no-op and findings never set the exit code | qualified | |
| 1134 | constitution type: registry, transitions, model and schema disagree | qualified | |
| 1139 | pool ADRs: worktree, ledger and ghi-triage premises falsified by later canon | excluded | |
| 1141 | ghi-triage: route shows authority, not readiness, so nothing sorts what to pull | label_only | GHI #1141 has 'runtime' label but no commits touching src/gzkit/ |
| 1142 | commit-trailers: refusal prescribes -# |
qualified | |
| 1143 | gz check: a hung unit tier blocks the pre-push gate with no timeout | qualified | |
| 1150 | evaluation-justify-binding: scan-all grades terminal ADRs and raw ids | qualified | |
| 1151 | ledger: freed feature slots fold onto demoted pool ADRs | qualified | |
| 1152 | arb red --commit: verdict leaves no receipt, so GHI closes cite nothing | qualified | |
| 1153 | arb red --commit: restructuring fixes read inconclusive, not graded | qualified |
Operator Approval¶
Approved by gz patch release