Skip to content

docs: documentation audit — populate CHANGELOG, fix stale README recipes - #20

Merged
ChrisSc merged 1 commit into
mainfrom
docs/documentation-audit
Jun 14, 2026
Merged

docs: documentation audit — populate CHANGELOG, fix stale README recipes#20
ChrisSc merged 1 commit into
mainfrom
docs/documentation-audit

Conversation

@ChrisSc

@ChrisSc ChrisSc commented Jun 14, 2026

Copy link
Copy Markdown
Owner

What

A /documentation-audit pass over the human-facing Markdown (README, CHANGELOG, SECURITY, findings index), verified against the live repo after the v0.1.5→HEAD work (15 merged PRs).

CHANGELOG — headline fix

[Unreleased] was empty despite a hardening release worth of changes. The CHANGELOG is manually maintained (no release tooling owns it), so I populated [Unreleased] with Keep-a-Changelog groups drawn from the merged PRs:

  • Added: CI + smoke, boot-event observability, IPv6 filtering, healthcheck, .dockerignore
  • Changed: fail-closed firewall, pinned/verified build, profile-aware teardown, bounded claude update, NET_RAW drop
  • Fixed: DNS/SSH exfil channels closed, AWS region jq bug, cron→Postgres env, postStartCommand swallowing failures
  • Documentation: audit + REMEDIATION.md, CLAUDE.md split, README updates

No new tag cut (release decision is separate). All six existing tag dates verified against git log and left intact.

README — stale/misleading fixes

  • --force-recreate added to the permissive-mode recipe (the old up -d form silently won't switch FIREWALL_MODE on a running container).
  • "UDP 53 is always allowed" → "DNS to the container's resolver is allowed" (reconciled with DNS-scoping hardening).
  • DB quickstart dangling colon fixed.
  • log-event.sh added to the Layout tree.

findings index

Added a "Status: remediated" banner → REMEDIATION.md so the pre-remediation snapshot (public repo) isn't misread as current security state.

Deliberate non-changes

  • SECURITY.md left as-is (accurate at policy altitude).
  • No README split (368 lines but single audience — no contributor/architecture mixing).

Verification

All 19 README Make commands exist; tag dates match git log; markdown-link-check clean (no 404/410); every referenced path exists.

Docs-only.

Generated with Claude Code (https://claude.com/claude-code)

Audited human-facing Markdown against the live repo after the v0.1.5→HEAD work
(15 merged PRs).

CHANGELOG: the [Unreleased] section was empty despite a hardening release worth
of changes. Populated it (Keep a Changelog groups) from the merged PRs — CI +
smoke, boot-event observability, IPv6 filtering, fail-closed firewall, pinned/
verified build, DNS/SSH exfil-channel closure, AWS region jq fix, cron→Postgres
env, profile-aware teardown, NET_RAW drop, and the docs/CLAUDE.md work. No new
tag cut (release decision is separate). All six existing tag dates verified
against git and left intact.

README:
- permissive-mode recipe now uses --force-recreate; FIREWALL_MODE is read at
  container create time, so a plain `up -d`/`restart` won't switch it (was
  actively misleading).
- "UDP 53 is always allowed" -> "DNS to the container's resolver is allowed",
  reconciled with the DNS-scoping hardening.
- DB quickstart: fixed the dangling colon (precondition prose sat between the
  colon and its code block).
- Layout: added log-event.sh.

docs/findings/README.md: added a "Status: remediated" banner linking to
REMEDIATION.md so the pre-remediation snapshot isn't misread as current state.

SECURITY.md left as-is (accurate at policy altitude). No README split (single
audience). Verified: all README Make commands exist, no dead internal links.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@ChrisSc
ChrisSc merged commit bca321c into main Jun 14, 2026
4 checks passed
@ChrisSc
ChrisSc deleted the docs/documentation-audit branch June 14, 2026 23:43
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.

1 participant