Repository navigation
Audit-log manual (and site) claim the Art. 12 log covers 'model export', but export/merge/deploy emit no audit event and the catalog defines none (CR-A07-023) #442
Description
Wave 1 · theme D1-8: Docs describing features that do not exist (doc side of code findings) · highest severity High · 1 finding(s) · effort small
Summary
A compliance officer reads the Audit Log page, assumes GGUF exports are recorded in audit_log.jsonl, and relies on it to prove which artefact was shipped. No such record exists. If they follow the model_promoted tip by appending a line by hand, verify-audit exits 6.
Primary finding
CR-A07-023 — Audit-log manual (and site) claim the Art. 12 log covers 'model export', but export/merge/deploy emit no audit event and the catalog defines none
severity High · reachability default · intent contract-violation · confidence confirmed · independently confirmed · reproduced end to end
What happens. docs/usermanuals/en/compliance/audit-log.md:8 and site/js/translations.js:3859 list model export as a logged event. export_model (export.py), the export/deploy dispatchers, deploy.py and merging.py never construct an AuditLogger or call log_event, and audit_event_catalog.md has no export/merge/deploy row. A07-033 adds the same page's tip to append a non-existent 'model_promoted' event, which by hand breaks the hash chain (verify-audit exit 6).
Where.
docs/usermanuals/en/compliance/audit-log.md:8(confirmed)docs/usermanuals/en/compliance/audit-log.md:124docs/reference/audit_event_catalog.md:30-100(event tables), :70 (compliance.artifacts_exported = Annex IV bundle only)docs/reference/audit_event_catalog.md:37forgelm/trainer.py:1656(pipeline.completed emit)forgelm/export.py:373-496(confirmed)forgelm/cli/subcommands/_export.py:12-70(file ends at line 70)site/js/translations.js:3859(confirmed)forgelm/export.py:207-239forgelm/cli/subcommands/_export.py:12-70
Evidence.
- rg -i 'audit|webhook' over forgelm/merging.py, export.py, deploy.py, cli/subcommands/_export.py, _deploy.py: no hits apart from the integrity helper; the catalog event tables (lines 26-110) have no export, merge, deploy or model_promoted row; deploy repro -> EXIT=0 with no audit file created.
- No 'audit' string appears in forgelm/export.py, forgelm/cli/subcommands/_export.py, forgelm/deploy.py or forgelm/merging.py. Dynamic check: after a successful
forgelm export(stub converter, exit 0), the existing run/audit_log.jsonl stayed at 1 line. - Export through a stub converter: success true, exit 0. audit_log.jsonl sha256 is unchanged, with 7 lines before and after.
Recommended fix. Either remove 'and model export' from audit-log.md:8 (and its TR mirror) and rewrite the :124 tip to name a supported mechanism, or implement and catalogue export/promotion events.
Acceptance criteria
- A regression test reproduces the failure scenario and asserts the corrected behaviour.
- 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
Labels
Type
Projects
- StatusShow more project fieldsTodo
Activity