docs: de-stale RISK_REGISTER R10 residual gap — #769 rows shipped in the same release (#813) (#814)

R10 still claimed the guard-launcher degradations were 'not yet indexed
in the degradation registry (#769)' although v3.21.1 itself shipped
registry 1.3.0 with all five write_scope_guard_* rows. The stale clause
is removed; the existing-controls line now points the guard's degrade
posture at its registry rows; the residual gap keeps only the
per-mechanism, per-channel loss description. check_risk_register and
check_version_consistency pass locally.

Closes #813


Claude-Session: https://claude.ai/code/session_011b4WKkZvjw7fCPDHQQhm6E

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Edward Cheng-I Wu
2026-09-02 01:57:38 +08:00
committed by GitHub
parent 368576224b
commit 9443623791
2 changed files with 10 additions and 7 deletions
+2
View File
@@ -10,6 +10,8 @@ All notable changes to this project will be documented in this file.
### Fixed
- **`docs/RISK_REGISTER.md` R10 residual gap de-staled (#813).** R10 still claimed the guard-launcher degradations were "not yet indexed in the degradation registry (#769)" although #769 shipped in v3.21.1 itself (registry 1.3.0, five `write_scope_guard_*` rows) — the register contradicted the CHANGELOG and the registry file in the same tree, at the tag and on `main`. The stale clause is removed; the existing-controls line now points the guard's degrade posture at its five registry rows, and the residual gap keeps only the per-mechanism, per-channel loss description. Docs-only; found by an external cross-model fact-check of v3.21.1 claim surfaces. Known residue, accepted: no lint pins a residual-gap sentence against the mechanism inventory it references, so this class can recur; RR-1..RR-3 are unchanged.
- **MLA key-rules line in `citation_format_switcher.md` no longer reads "No year in in-text" (#805, by @LeslieLi46).** Docs-only; the line now matches the in-text format documented above it.
- **`check_surface_form_parity` names the broken environment instead of blaming the manifest (#801 follow-up).** With the manifest file present but pyyaml unimportable, `_load_manifest` returned `None`, so the lint failed with "manifest … is present but empty / null / non-mapping" — a misdiagnosis pointing the reader at the wrong file (pyyaml is declared in `requirements-dev.txt`, so only a broken local environment can hit this). The missing-import case is now a distinct `_YamlUnavailableError` and the lint fails naming pyyaml and the `pip install -r requirements-dev.txt` remedy; regression test pins that the message names the environment, not the manifest shape. Also de-enumerated the hand-maintained dependency parenthetical in `docs/SETUP.md` / `docs/SETUP.zh-TW.md` Method line ("PyYAML + jsonschema" was already stale against the manifest it mirrors two lines above); both language files move together.
+8 -7
View File
@@ -161,13 +161,14 @@ A user installs through a channel where documented enforcement never runs.
- **Existing controls**: the per-channel availability matrix
(`docs/CONTROL_AVAILABILITY.md`); the write-scope guard's disclosed degrade posture
(`hooks/run_guard.sh`); per-channel notes in `docs/SETUP.md`.
(`hooks/run_guard.sh`), indexed as five `write_scope_guard_*` rows in the
degradation registry (`shared/contracts/degradation_registry.json`,
[#769](https://github.com/Imbad0202/academic-research-skills/issues/769));
per-channel notes in `docs/SETUP.md`.
- **Evidence status**: `NOT_RUN` (asserted here; no capability-matrix row) —
availability is documented; loss-of-enforcement behavior is not separately
measured.
- **Residual gap**: guard-launcher degradations not yet indexed in the degradation
registry ([#769](https://github.com/Imbad0202/academic-research-skills/issues/769));
what each channel loses is per-mechanism (see the availability matrix): prompt-level
protocols survive in most non-plugin channels but are absent in claude.ai Projects,
and hook enforcement is absent outside the plugin channel unless the user wires the
hook into their own settings manually (matrix note 3).
- **Residual gap**: what each channel loses is per-mechanism (see the availability
matrix): prompt-level protocols survive in most non-plugin channels but are absent
in claude.ai Projects, and hook enforcement is absent outside the plugin channel
unless the user wires the hook into their own settings manually (matrix note 3).