Skip to content

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

Open

Description

@cemililik

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.

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

No one assigned

    Labels

    area: complianceCode area: compliancebugSomething isn't workingseverity: 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