Public Surface Audit
The public site is an edited surface, not a mirror of the working repository. The audit makes that boundary visible before release.
What it checks
The auditor scans public-content sources and the generated _site/ output for
credential-shaped values, direct personal data, health and family context,
private workplace details, uncertain recollections, local paths, internal
project files, backlog routes, and AI pages missing quarantine metadata.
It redacts matched values in its local report. It never reads environment files, credentials, private handoffs, dependency trees, or build caches.
The release suite also runs validate_public_positioning.rb. That smaller
deterministic gate protects reader-facing titles and terminology from drifting
back toward opaque internal names during artifact generation. It does not scan
or rewrite historical transcripts.
The release loop
sequenceDiagram
participant H as Human editor
participant S as Public source
participant J as Jekyll
participant A as Surface auditor
participant R as Local review queue
H->>S: Select and sanitize artifact
S->>J: Build rendered site
J->>A: Inspect source and _site boundary
A-->>R: Redacted findings
R-->>H: Verify, rewrite, generalize, record, or hold
H->>S: Apply only approved change
H->>J: Release after strict gate
Operator commands
ruby bin/audit_public_surface.rb --help
ruby bin/audit_public_surface.rb --json
ruby bin/audit_public_surface.rb --strict
ruby bin/audit_public_surface.rb --man
ruby bin/validate_public_positioning.rb
The report lives under tmp/public-surface-audit/ and is intentionally local.
The strict gate is a pause point, not an instruction to publish under pressure.