Skip to content

doc-audit: fix stale CLAUDE.md claims + critical zip dependency CVEs - #823

Merged
stphung merged 3 commits into
mainfrom
claude/vigilant-knuth-cf1r93
Oct 26, 2026
Merged

stphung merged 3 commits into
mainfrom
claude/vigilant-knuth-cf1r93

Conversation

@stphung

@stphung stphung commented Oct 26, 2026

Copy link
Copy Markdown
Owner

Summary

Scheduled /doc-audit run (6 parallel agents cross-referencing every CLAUDE.md, docs/*.md, docs/dossiers/*.md, and README.md against current source). Two stale claims were found and fixed; make check also surfaced a critical, unrelated security issue that's included here since it blocked the gate.

  • src/main_helpers/CLAUDE.md: spawn_background_save() was documented as running save_all(); it actually only calls save_files() (JSON-only, no git commit).
  • src/utils/CLAUDE.md: the background update-check integration point was documented as being called from main_helpers/update.rs; it's actually spawned directly from main.rs (update.rs only supplies the jittered interval and renders the result).
  • Cargo.toml: bumped zip from 8.5 to 9.1 — cargo audit flagged RUSTSEC-2026-0367/0368/0369 (critical, 9.1 CVSS) where ZipArchive::extract() could follow attacker-controlled symlinks outside the destination directory, including SUID/SGID preservation. zip is only used by the Windows updater's extract_archive(); ZipArchive::new()/.extract() signatures are unchanged in 9.1.2, which also defaults symlink extraction to ExtractRecursiveInFolder (confined to the destination dir), so no code changes were needed beyond the version bump.

One additional finding was not auto-fixed and is flagged for human review: README.md advertises an MIT license (badge + prose) but no LICENSE file exists in the repo and Cargo.toml has no license field. Adding/removing that claim is a decision for the repo owner, not something to fix unilaterally.

All 6 audit agents otherwise found the docs current and accurate — no other discrepancies across core engine, content systems, progression systems, or infrastructure module docs.

Test plan

  • make check — fmt, clippy, full test suite, progression check, voyage simulator, cargo audit --deny yanked all pass
  • Verified zip 9.1.2's ZipArchive::new()/.extract() API is unchanged from 8.x by inspecting the vendored crate source (no call-site changes needed in src/utils/updater.rs)

Generated by Claude Code

- main_helpers/CLAUDE.md: spawn_background_save() runs save_files()
  only (JSON, no git commit), not save_all() as previously documented.
- utils/CLAUDE.md: updater.rs's background update check is spawned
  directly from main.rs, not from main_helpers/update.rs (which only
  supplies the jittered interval and renders the result).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01J2wAinwdrwNYz4VZ9hDnPG
cargo audit flagged zip 8.5/8.6 for RUSTSEC-2026-0367/0368/0369: extract()
could follow attacker-controlled symlinks outside the destination
directory (9.1 critical), including SUID/SGID preservation. zip is only
used by the Windows updater's extract_archive() via ZipArchive::new()/
extract() -- both signatures are unchanged in 9.1.2, which defaults
symlink extraction to ExtractRecursiveInFolder (confined to the
destination), so no code changes are needed beyond the version bump.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01J2wAinwdrwNYz4VZ9hDnPG
@stphung
stphung enabled auto-merge (squash) October 26, 2026 17:34
@stphung
stphung merged commit c2fcb44 into main Oct 26, 2026
9 checks passed
@stphung
stphung deleted the claude/vigilant-knuth-cf1r93 branch October 26, 2026 17:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants