## Summary
Hooks were removed in AgentOps 3.0 and
`scripts/validate-hooks-doc-parity.sh` was deleted. ag-jov (PR #575)
fixed the `docs-release-governance` eval canary; this PR completes the
cleanup for **operational docs** that still instructed readers to run
the deleted script.
- `AGENTS-WORKFLOW.md` — drop the "Hook/docs parity" pre-push checklist
item; renumber 8–15 → 7–14.
- `docs/cli-skills-map.md` — drop the regenerate step that ran the
deleted script; renumber.
- `docs/release-e2e-checklist.md` — drop the parity-check line.
- `docs/CI-CD.md` — remove the `validate-hooks-doc-parity` node from the
CI job-graph diagram (box width preserved).
- `docs/LOOP-BUDGET.md` — remove the `validate-hooks-doc-parity`
loop-budget row.
Adds `tests/scripts/docs-no-dangling-hooks-doc-parity.bats` as a
regression guard over `docs/` + `AGENTS-WORKFLOW.md`, excluding
historical records (`docs/CHANGELOG.md`, `docs/releases/*`).
## Scope / out of scope
In scope: operational doc references to the deleted script (docs bounded
context).
Out of scope (owned by the **soc-g2r9** local-pre-push-gate retirement
arc, whose orphaned files are deleted *wholesale* by its deletion waves
— not hand-patched): `scripts/pre-push-gate.sh` and
`tests/scripts/pre-push-gate.bats` references. See
`docs/contracts/local-pre-push-gate-retirement.md`.
## Test plan
- [x] `bats tests/scripts/docs-no-dangling-hooks-doc-parity.bats` —
fails before the doc edits (5 refs), passes after.
- [x] `bash tests/docs/validate-links.sh` — 2788 links checked, 0
broken.
- [x] `markdownlint` on all 5 edited docs — clean.
- [x] `bats tests/scripts/validate-agents-split.bats` — 7/7 pass
(AGENTS-WORKFLOW.md edit safe).
Closes-scenario: ag-c2i#operational-docs-no-dangling-hooks-parity-ref
Bounded-context: BC1-Corpus
Evidence: bats tests/scripts/docs-no-dangling-hooks-doc-parity.bats
## What
Hookless epic S2 (`soc-khev6`): delete the `standards-injector`
PreToolUse hook and **fully retire** its dedicated CI gate.
`standards-injector` is a value-negative noise-injector — it injects
language standards on every Edit/Write regardless of relevance (A/B Δ=0,
per `docs/architecture/hook-noise-audit.md`). The replacement is the
`standards` skill, read on demand: a PRODUCT surface, not hook magic.
## Teardown (all of it)
- **Hook + tests:** `git rm hooks/standards-injector.sh`, its embedded
copy, and `tests/hooks/standards-injector.bats`.
- **Manifests:** pruned the Edit + Write entries from `hooks/hooks.json`
and `hooks/codex-hooks.json`, dropping the now-empty matcher groups.
**Codex native handlers 17 → 15** (two entries removed, not one — Edit
retains `codex-parity-warn.sh`, Write group dropped).
- **CI gate retired:** removed the `standards-injector-completeness` job
from `validate.yml` + both `needs:` lists
(`validate-pr-evidence-claims`, `summary`) + the summary echo; `git rm`
the check script + its bats; removed from `ci-jobs.yaml` manifest and
regenerated `AGENTS-CI.md`; removed from `pre-push-gate.sh` + its bats
stub.
- **Codex test assertions (the S1 bite):** `test-runtime-codex-smoke.sh`
and `test-codex-native-install.sh` length `17 → 15`; removed
`standards-injector.sh` from the require-handlers array.
- **Shared iterators:** pruned the `@test`/section blocks from
`test-hooks.bats`, `hook-output-schema.bats`,
`hook-stdin-contracts.bats`, `test-hook-chain.sh`,
`test-hook-lifecycle.sh`, `test-hooks.sh`, and the eval fixture
`hook-context-value-smoke.sh`.
- **Other surfaces:** `validate-hook-preflight.sh`,
`install-codex-plugin.sh`, `install-codex.ps1` owned-script lists;
`hooks_test.go` (swapped synthetic name to a live hook);
`context_compiler.go` port doc comment.
- **Regen:** hook-lease classification + inventory, registry, embedded
sync.
- **Docs:** `HOOKS.md`, `hook-noise-audit.md` (records S2 deletion),
`ENV-VARS.md` (`AGENTOPS_STANDARDS_*` vars), `LOOP-BUDGET.md`,
`cli-skills-map.md`, `software-factory.md`, `SDK-INVENTORY.md`.
## Verify (all green locally)
`check-hook-lease-inventory`, `validate-hooks-doc-parity`,
`check-hook-port-replacements`, `validate-hook-preflight`,
`generate-registry --check`, `validate-ci-policy-parity`,
`tests/smoke-test.sh` (codex smoke + native install),
`test-runtime-codex-smoke.sh`, the 3 bats hook suites, `go
build/vet/test`. `grep standards-injector validate.yml
ci-local-release.sh` → empty.
Diff stat: 39 files, +32 / -1045 (deletion-heavy, as expected for a
teardown).
Closes-scenario: soc-khev6#rm-standards-injector
Bounded-context: BC5-Runtime
Evidence: docs/contracts/hook-lease-inventory.md
* feat(ci): enforce inner/middle/outer loop boundaries
- Default pre-push gate to two-pass mode for local pushes:
pass 1 blocks in <10s (--fast --scope head), pass 2 is advisory
- Add --single-pass flag to opt out of two-pass default
- Add `make inner` target for <10s edit-time validation (build+vet)
- Add dorny/paths-filter to CI: codex/eval/go/learning jobs only run
when their paths change (saves ~30 runner-minutes on docs-only PRs)
- Fix summary job: tolerate skipped jobs (use contains failure check
instead of != success) so path-filtered PRs can merge
- Add docs/LOOP-BUDGET.md classifying all 35 pre-push checks and 46
CI jobs into inner/middle/outer loops with latency budgets
* fix(ci): update CI policy parity script for contains() failure pattern
The summary job now uses contains(needs.*.result, 'failure') instead of
enumerating each job. Update extract_summary_failset to derive the
blocking set from needs list minus continue-on-error jobs. Exclude the
utility 'changes' job from parity comparison.