Record — control switchboard, 2026-10-04¶
Reversed in full the same day. By operator ruling of 2026-10-04 every switch described below was turned back on and the central switch itself was removed (campaign plan § Amendments 2026-10-04 (2)).
.gzkit.jsonno longer carries adisabledblock. The text below is kept as the record of what was done and why; none of it describes the current state.
This is a dated record, written 2026-10-04 when the switches were flipped. It states
what was switched off, where each switch lives and how to turn one back on. It rules on
nothing. Every list here is illustrative; the switches themselves are the authority:
.gzkit.json § disabled, .pre-commit-config.yaml and .github/workflows/ci.yml.
Read those files rather than trusting a name transcribed here.
Why¶
The gate-by-gate value read of 2026-10-03 (record) found three things with a recorded history of catching defects behind green tests: the plain checks, the cross-vendor adversary and the operator's directed audits. Everything else either never returned a non-pass, returned one about its own paperwork, or kept no record of a catch. The OBPI-0.35.0-10 trial (evaluation) then passed every check, every validator and nine of ten acceptance proofs while failing independent review on five of ten requirements.
Operator rulings, verbatim and in order (2026-10-04):
go ahead with the switch-off (can they be turned back on later?)
no, i want to be able to enable. maybe we turn off then see the effects of turning things back on?
will we build a central switch for this toggle?
try again
The last was given after the harness refused the first attempt to write the switches.
The method¶
Every gzkit control with no recorded catch loses its automatic standing: it no longer
runs on its own, refuses nothing, and blocks nothing. Nothing is deleted. Every verb stays
callable, and gz check --full still runs the whole estate on demand. Controls are then
turned back on one at a time to see what each one does for the operator. The rule for
automatic standing, adopted from the dismissed reviewer's recommendation:
Lack of catch history warrants removing automatic authority, not claiming the tool can never help.
A switched-off control regains automatic standing on a recorded catch. Deleting a control still takes the scorecard's named steering-failure evidence; this record deletes nothing.
The central switch¶
.gzkit.json carries a disabled block with four lists. Each name is its own switch.
| List | Who reads it | Effect of a name |
|---|---|---|
hooks |
the settings generator and merge in gzkit.hooks.claude |
the hook is left out of the generated .claude/settings.json; a group or phase left empty disappears |
skills |
the skill mirrors, the catalog, gz skill list, the skill audit |
the skill leaves .claude/skills and .agents/skills and the catalog; gz skill list --all still shows it |
check_steps |
the gz check runner, every scope but --full |
the step is dropped from the per-change gate and the inner loop |
orientation_sections |
scripts/session_orientation.py |
the section is neither collected nor shown at session start |
The mechanism landed in commit 73e42d63a with an empty block; the names were written on the
operator's "try again". Tests: tests/test_disabled_controls.py.
To turn one control back on: delete its name from the list, then run
uv run gz agent sync control-surfaces so the settings file and mirrors regenerate. A
re-enabled hook is wired at the next session start.
What is switched off¶
Counts as written on 2026-10-04; the files hold the live state.
| Surface | Switched off | Kept |
|---|---|---|
| Harness hooks | 14 | post-edit-ruff, the session orientation, the settings backup |
gz check steps (per-change gate) |
60 of 67 | Lint, Format, Typecheck, Test, Docs build, Validate default scopes, Authorship policy |
| Skills in the catalog | 52 of 73 active | 21, listed below |
| Orientation sections | 1 | every other section |
| Git pre-commit hooks | 4 | ruff, ty, xenon, interrogate, gitleaks, authorship, the standard fixers, the pre-push gz check |
| CI | the full sweep | plain gz check plus behave |
Hooks switched off, and what each did¶
| Hook | What it did |
|---|---|
| plan-audit-gate | blocked leaving plan mode without a passing plan-audit receipt |
| pipeline-gate | refused edits outside an active pipeline's allowlist |
| obpi-completion-validator | gated brief status changes on ledger evidence |
| pipeline-completion-reminder, pipeline-router | steered and nagged the pipeline |
| verifier-pipe-gate | refused a verifier piped into another process; refused three read-only commands on 2026-10-03 |
| stop-turn-feedback | blocked ending a turn on a lint finding; blocked on another agent's file on 2026-10-03 |
| ledger-writer | wrote an artifact_edited ledger row per edit, over a third of the ledger |
| instruction-router | surfaced .github/instructions/*.instructions.md on edit; that directory is empty |
| session-staleness-check, session-start-advisement, session-exit-bookmark | handoff and bookmark bookkeeping |
| mx-awareness | announced the maintenance hangar on every prompt |
| ghi-triage-chat-silence | backstop for the triage skill |
gz check steps switched off¶
Every step except the seven kept. Each remains one gz validate flag away, and all of them
run under gz check --full. The Validate default scopes step still runs its ten default
scopes: manifest, surfaces, ledger, instructions, briefs, documents, personas, frontmatter,
version and taxonomy.
Skills kept in the catalog¶
gz-check, gz-validate, gz-status, gz-state, gz-adr-status, gz-how, ghi-author, ghi-close,
ghi-triage, gz-insights-remember, gz-session-handoff, gz-patch-release, gz-arb,
gz-obpi-specify, gz-adr-create, gz-agent-sync, gz-init, gz-design, gz-rnd, gz-deps-upgrade,
git-sync. Every other active skill is named in disabled.skills, the pipeline skill among
them. A switched-off skill's SKILL.md keeps lifecycle_state: active: it is switched off
in this project, not retired.
Git hooks and CI¶
In .pre-commit-config.yaml the hooks task-trailer-stamp, surface-fidelity-cheap,
validator-reachability-ratchet and ledger-vocabulary-inertness are commented out under a
dated marker; uncomment a block to re-enable it. The Task: trailer is no longer stamped;
the pre-push gate still reads trailers and refuses only the reuse skip, never the push, when
one is missing. In .github/workflows/ci.yml the single gz check --full step became plain
gz check plus behave; restore the single step to re-enable the governance sweep in CI.
What keeps mandatory standing¶
The plain checks. The ledger and ARB receipts, written by gz commands. The REQ-coverage
check at completion. Completion through gz obpi complete with the operator's attestation,
Gate 5 unchanged and universal. GHI direct repair. Completion on the reduced route is today's
single-driver path with the human-review operation, which the ledger labels
degraded-human-only; making that the normal route is a code change this record does not
make.
Prose this leaves stale, not edited¶
AGENTS.md is generated playback of the committed rendition and the corpus stack is not
re-landed here, so these sentences stand as written and are now false or in conflict:
- § Execution Rules: "
uv run gz checkis the per-change gate: every quality check exceptBehaveandPreflight". - § Governance doctrine surfaces: "
uv run gz checkruns every registered validator". - § OBPI Acceptance Protocol: "Once initiated, follow the skill's implementer dispatch and spec-reviewer then quality-reviewer review; never substitute inline Stage 2", which names a skill now out of the catalog.
- Campaign plan § Amendments 2026-10-03 (2): "each obpi must be run using the obpi pipeline skill". How an initiated OBPI runs is the operator's to rule.
Not ruled, kept here for a later ruling¶
The 2026-10-04 draft amendment carried five items the operator did not rule on. In brief:
a freeze on new OBPI initiation and governance-repair campaigns with a named exit; a plain
delivery path of brief, direct implementation, gz check, one executing independent review
by a different vendor, and the operator's acceptance; an acceptance record bound to the
commit SHA, the receipt ids, the reviewer's findings and the operator's words, retiring the
acceptance input digest; the disposition of ADR-0.35.0 and OBPI-0.35.0-10, with hold until
a checkpoint recommended; and a checkpoint after three changes on the path with an archive
trigger if the retained core caught nothing a plain run would have missed. None of these is
in force.
Unchanged by this record¶
OBPI-0.35.0-10 stays in progress, uncompleted and unattested, with the trial evaluation as its record. The campaign plan's Topmost line and the IRON LAW stand. The Codex sanity pass on the amendment text was not run; the operator did not call for it.
Reversal of everything at once¶
Delete the disabled block, uncomment the four hooks, restore CI's single step, run the
control-surface sync. Or git revert the commit that carries this record.