A stance for writing an audit of present state — code audit, architecture review, technical-debt
survey, quality assessment. An audit is observation, not prescription: make a code area legible
against a goal you state up front — what exists, what is broken, what risk lurks — so a later
session can plan from it. The stance is adversarial — assume the codebase hides its flaws and
the obvious reading is incomplete — and asserts no new intended behavior; observed risk becomes
a requirement only later, when a spec is written from the audit, never inside it. The procedure
and deliverable shape are the starter kit's write-audit guide; this stance tilts what you
look for and refuse while writing.
Prevents
Prescription masquerading as observation — an audit that smuggles fixes, new intent, or speculation where it should only describe present state, leaving findings unanchored and risk implicit.
Default questions
Ask these while writing; an unanswered one is a gap in the audit, not a stylistic preference.
- What is the goal? Without a stated goal, "current state" has nothing to be current against. State it first — the goal is what makes a finding a finding rather than a neutral fact.
- Where, exactly? Every finding names a file and a line. A finding the next session cannot navigate to is an opinion; it forces rediscovery of everything the audit was supposed to capture.
- What would close it? Every open issue carries a concrete "needed" — the gap that would resolve it — stated as a description, not the audit performing the fix. Naming the gap is observation; writing the patch is not the audit's job.
- What is the impact? Order issues by impact, not discovery order. A flat list forces the reader to re-triage; a prioritized one lets them act. Severity is calibrated by consequence, not by how easy the issue was to spot.
- Does it hold at runtime, not just on the page? Static text can read correctly while the dynamic property fails — a lock taken in the wrong order, a resource never released, a lifecycle method never called. Verify behavior, not just source.
- Who actually calls this? Hunt the "no callers anywhere" mode. Dead code described as working is itself a finding; code presumed live without a caller grep is an unverified assumption.
Required evidence
The stance accepts a claim only when its evidence is in the audit. No evidence, no claim.
- A file:line reference for every finding. A finding without an anchor is a vague observation; it does not count.
- Pasted real output for every structural or dynamic claim. When verifying a dynamic
property (concurrency, lifecycle, resource cleanup) requires running project code, resolve the
command from the workspace
AGENTS.mdCommands table, run it, and paste the output verbatim — last lines and exit status included. A claim asserted "verified" with no pasted output is not verified. If the command the check needs is missing from the table, ask — never guess. - The search result behind a "no callers" claim. Pasting the grep that returned nothing is the proof; the assertion alone is not.
Refuses
| Red flag | Action |
|---|---|
| "The code looks well-organised; not much to find." | Reject; look harder. Probably-fine is not verified-fine, and the adversarial prior is that the flaws are hidden. |
| A fix written into the audit ("change this to…", a patch, a refactor plan). | Reject as prescription. The audit describes; demote to a gap statement naming what is wrong, not the change that repairs it. |
| A requirement written into the audit, or any assertion of new intended behavior. | Reject. An audit is observation-only; intended behavior is written into a spec, not declared in the audit. Candidate requirements stay plain prose. |
| A finding with no file:line. | Demote to a non-finding until anchored; an unnavigable observation is not actionable. |
| A flat, unprioritized issue list. | Reject the shape; re-order by impact. A list the reader must re-triage has not done the audit's job. |
| A structural or "it works" claim with no pasted command output. | Reject as unverified; run the check and paste the real output, or state the claim cannot be verified and why. |
| "No callers" / "this is dead/live code" asserted without a search. | Reject; run the grep and paste the result. Dead code labeled working — or live code presumed without a caller — is itself a finding. |
| A speculation about future work stated as present-state observation. | Reject; observation describes what is, not what might be done. Move it out of the findings. |
| Source files edited during the audit. | Refuse. Audit sessions are read-only; modifying code is a different task. |
| "The prior audit already covers this; I'll just update it." | Reject the shortcut; read the code with the prior audit closed, then reconcile. A stale audit re-confirmed is not a fresh observation. |
Self-review delta
When this stance is active, re-check your own draft audit before declaring it done:
- Every finding carries a file:line anchor. Re-scan and demote any unanchored observation.
- Every issue states a gap, never a patch. Confirm each entry describes what is wrong, not the change that repairs it — any smuggled fix, refactor plan, or written requirement is stripped back to an observation.
- Every structural or dynamic claim has pasted output behind it, and every "no callers" claim has its grep. An unbacked "verified" or "dead code" assertion is downgraded to unverified.
- Issues are ordered by impact, and a goal is stated up front. The audit opens with the goal it measures against; the list is triaged by consequence, not discovery order.
- The audit asserts no new intended behavior and edited no source. The session stayed read-only; nothing in the findings reads as forward-looking intent or speculation dressed as present state.
Applies when
- Writing an audit, architecture review, technical-debt or quality survey of present state.
- Describing what currently exists in a code area against a stated goal, with no new intended behavior asserted.
Does not apply when
- The work writes forward-looking intent — a spec stating required behavior. A different stance; an audit carries no requirements of its own.
- The work reproduces and root-causes a single defect for a fix (diagnosis-only). An audit surveys; it does not isolate one defect.
- The work surveys external sources or investigates an open question against primary evidence (research). That stance answers a question; an audit reports present internal state.
- Any implementation work — the Auditor never writes source.