Skip to content

docs/reference/compliance_summary.md: stale — verify-audit exits 0 (valid) or 1 (any failure — parse error, HMAC mismatch, manifest divergence, file not found, option error); the richer exit surface… (DOC-D1B04-009) #162

Open

Description

@cemililik

Wave 1 · theme D1-10: Documentation-only fixes · highest severity High · 1 finding(s) · effort docs fix

Summary

CI alarms wired to exit 1 as 'tampering' never fire on the real tampering code 6. This is a public exit-code contract.

Primary finding

DOC-D1B04-009 — docs/reference/compliance_summary.md: stale — verify-audit exits 0 (valid) or 1 (any failure — parse error, HMAC mismatch, manifest divergence, file not found, option error); the richer exit surface…

severity High · already tracked: KNOWN-OPEN C31-EXIT-CODE-PROSE (OPS-24) — docs/roadmap/phase-16-trust-surface-hardening.md:196-197,782-784

Where. docs/reference/compliance_summary.md:240-245 (Turkish mirror: docs/reference/compliance_summary-tr.md:243-245) · type: stale

The document says. verify-audit exits 0 (valid) or 1 (any failure — parse error, HMAC mismatch, manifest divergence, file not found, option error); the richer exit surface applies to the trainer, not to verify-audit.

What the code does. verify-audit exits 0 for a valid log. It exits 1 for a missing log, a non-regular file, an empty log with no manifest, or an option error. It exits 2 for an unreadable log and 6 for chain, HMAC, manifest, JSON or encoding failures.

Code references. forgelm/cli/subcommands/_verify_audit.py:122-149, forgelm/compliance.py:113-119

User impact. CI alarms wired to exit 1 as 'tampering' never fire on the real tampering code 6. This is a public exit-code contract.

Proposed correction. 'exits 0 (intact), 1 (nothing compared: missing log, empty log without manifest, option error), 2 (log unreadable), 6 (integrity failure: chain break, HMAC mismatch, manifest mismatch, undecodable/non-UTF-8 line). Wire security alarms to 6.'

Turkish mirror. the Turkish page has the same error; fix both in the same PR

Acceptance criteria

  • Each statement is re-checked against the code at fix time.
  • Documentation listed above is corrected in English and in its Turkish mirror in the same PR.
  • Every finding in this issue is resolved or explicitly closed with a reason.

Found by the October 2026 ForgeLM code and documentation review against commit cab2947. Code links point at that commit; line numbers may have moved since. Finding IDs (CR-…, DOC-…, TECH-…) are stable references for this backlog.

Metadata

Metadata

Assignees

No one assigned

    Labels

    backlog: knownAlready tracked in docs/roadmapblockedWaits for another issue (see Blocked by); set and removed automatically, never by handdocumentationImprovements or additions to documentationseverity: highWrong behaviour or a false claim users rely onsource: review-2026-10Found by the October 2026 code and documentation reviewwave: 1Roadmap wave 1: high severity, small effort

    Type

    No type

    Projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions