audit-before-architecting

When to invoke

Mandatory before:

  • Drafting any visual map (system architecture, data flow, dispatch diagram)
  • Writing any plan amendment (§A1, §A2, etc.)
  • Proposing any cross-cutting recommendation (“we should build X” / “X should route through Y”)
  • Answering “how does X work?” when X spans ≥2 services

Skip when:

  • Read-only Q&A about a single file
  • Single-step bug fix in known code
  • Conversational reply (no architectural claim)
  • User explicitly says “just give me your guess”

The protocol

Step 1 — Enumerate sources (min 15)

Spread across these dimensions:

[ ] Filesystem      ls / find / glob — what exists where
[ ] Configs         cat / grep — what's declared
[ ] Services        systemctl list-units / status — what's running
[ ] Ports           ss -tlnp — what's listening
[ ] Env vars        grep master.env (REDACTED) — what's parameterized
[ ] CLIs            which / --help / --version — what's installed
[ ] MCP servers     claude mcp list / .mcp.json — what's wired
[ ] Live admin APIs curl ... — what cloud says
[ ] Postgres        REST /rest/v1/<table>?limit=1 — what schema exists
[ ] Plans           ls .claude/plans/ + grep — what's in flight
[ ] Memory          grep MEMORY.md / project_*.md — what's claimed
[ ] FUNNEL/PORT registries — what's approved
[ ] Logs            journalctl --user -u <unit> — recent behavior
[ ] SSH-reachable hosts — Mac fleet / Tailscale
[ ] Auth files      ~/.codex/auth.json / ~/.kimi/credentials (REDACTED)

If your enumeration has fewer than 15 entries: dimensions are missing.

Step 2 — Run probes in parallel batches

Bash tool calls in single message with multiple invocations. Don’t serialize unless a probe depends on a prior result.

Step 3 — Build the “Sources Probed” preamble

Required format at top of response:

## Sources Probed (transparency block)
 
| # | Source | Method | Result |
|---|---|---|---|
| 1 | npm-global CLIs | `ls ~/.npm-global/bin/` | <summary> |
| 2 | systemd services | `systemctl --user list-units` | <summary> |
... (≥15 rows)
 
### Sources NOT yet probed (gaps explicitly declared)
- <gap 1>
- <gap 2>
...

If “Sources NOT yet probed” is empty AND you spent <10 min on probes: you missed dimensions. Re-enumerate.

Step 4 — Status-flag every claim

Every architectural claim in the body of the response gets a flag:

✓ working / verified live
⚠ misconfigured / partial / drift detected
✗ not built / broken / blocked
⏸ paused / dormant
? unverified / inferred from memory

A claim with no flag is a violation. The flag IS the calibration.

Step 5 — Live wins over memory

If memory said X but probe said Y:

  • The architecture cites Y
  • The drift is flagged in the body (“memory said X, live shows Y”)
  • A memory-update todo is queued in the same response (don’t defer)

Step 6 — Self-review before submit

[ ] ≥15 probes in Sources Probed table
[ ] Each probe has Method (the actual command) and Result (live output)
[ ] Sources NOT yet probed sub-list explicit and complete
[ ] Every architectural claim has a status flag
[ ] Memory drift surfaces flagged + queued for update
[ ] No raw secrets in any tool result (G-CREDENTIAL-PIPE applies)

If any unchecked: response is not done.

Failure modes this skill prevents

From the 2026-05-01 cluster:

  • “EC2 Mac ollama not installed” → was running, SSH PATH issue masked it
  • “Langfuse host broken” → was working, my auth header was wrong
  • “38 SQLite DBs” → was 44, memory was stale
  • “7 .mcp.json servers” → was 8, missed dune (HTTP-based)
  • “29 KB platforms” → was 69, substrate plan was stale
  • “14 cross-ref plans” → was 25+, my count was sample-not-grep
  • “Mac Ultra in fleet” → was Mac Mini for BlueBubbles, my conflation
  • “8 orphan Portkey configs” → was a complete tier scheme, my reading was wrong
  • “aurora MCP 21/28 tools” → was 20 (deferred-tools registry was canonical)

Every miss was caught by Henry. The skill’s job: catch them BEFORE Henry has to.

Pairs with (governance gates)

  • feedback_audit_before_architect.md (G-AUDIT-PROBE) — the rule this skill enforces
  • feedback_live_over_memory.md (G-LIVE-VS-MEMORY) — what to do when probe contradicts memory
  • feedback_completeness_map_required.md (G-COMPLETENESS-MAP) — checklist for visual maps
  • feedback_credential_pipe_required.md (G-CREDENTIAL-PIPE) — redact secrets in probe output
  • feedback_probe_before_execute.md (G-PROBE-BEFORE-EXECUTE) — sibling rule for execution side

Invokes / Invoked by

Invokes: skill-registry, acquisitions-lifecycle, SKILL Invoked by: _summary, _summary, SKILL