Skip to content

docs(audits): the register catches up, and one limit is re-acknowledged - #940

Merged
stephrobert merged 1 commit into
mainfrom
docs/the-audit-register-catches-up
Nov 14, 2026
Merged

stephrobert merged 1 commit into
mainfrom
docs/the-audit-register-catches-up

Conversation

@stephrobert

Copy link
Copy Markdown
Owner

Summary

Eight audits ran on 2026-11-14 and none of them had a row in docs/audits.md. The register is a discipline, nothing fails when it is skipped, and skipping it is exactly how the same layers get audited twice while the same corners never do.

This adds the eight rows, and re-acknowledges one section of docs/limits.md that limits:check was refusing.

The rows

Each carries what was found and, in the last column, what was not looked at. That column is the one that chooses the next audit, and two of these rows already name a blind spot worth a future pass: no run against a real Incus on any of the three sibling ownership paths (#920, #932, #933), and internal/core/cloudinit never opened all day.

The pattern the day measured three times

Worth more than the eight rows, and the reason this is not just bookkeeping. In three lots, by three different authors, a contradicteur found the same defect: an attack test that refuses for the right reason by accident, because every row of its table shares a value that some other control refuses too.

The common cause is not carelessness: it is that the most obvious attack values fail every control at once. A guard that asks two questions needs a row that passes one and fails the other, in both directions. That sentence is in the register now; whether it belongs in CLAUDE.md as a rule is a separate decision and not taken here.

The limit

mise run limits:check was exiting 2 on main, and nothing caught it, because the task is deliberately not in prepush (its own help explains why: a red that interrupts daily work over documentation freshness teaches --no-verify, which disarms every other hook at once).

One section cited #851, closed 2026-11-13 and never re-acknowledged. The section was read: the limit holds. No client mints a request identity, the measurement over the 1088 recorded exchanges still stands, and the CLI refuses rather than pretending to be reproducible, which is what #851 asked for.

So the right treatment is a dated acknowledgement, not a rewrite. Only that one entry is re-dated, by hand. tools/docs/limits-acks.py refresh re-dates all 65 sections and would have claimed a pass nobody made.

Type of change

  • A route added or changed
  • Bug fix
  • Refactor
  • Documentation
  • Chore / tooling
  • Security / supply chain

Runs

run verdict
mise run docs:check green, on the rebase onto 806f5d3
mise run limits:check green, exit 0, where main exits 2

Mode: nothing here touches code or a machine runtime, so no leg and no FEINT_VM run is owed.

No contradicteur read this, and that is deliberate

The project's rule is that a lot goes through contradicteurs before its commit. This one did not, and rather than leave the blank to be read as an oversight: it is a record of measurements taken in this session, plus one dated re-read of a limits section, and the two agent slots were held all day by the three code lots that needed them more. The rows cite the issues and the files they came from, so the claims are checkable without an agent.

Checklist

Always

  • mise run check passes (no code changed; docs:check and limits:check are the gates that read these files)
  • No new external Go dependency
  • internal/core still knows no provider
  • Nothing in the diff could be written identically for another provider
  • mise run testplan was run; it names docs:check and limits:check for these paths, and both are green

When a model wrote a substantive part of this

  • An Assisted-by: trailer names the tool and the model version
  • No field name and no response shape: nothing a client can see changes

When a route is added or changed

N/A.

When behaviour a client can observe changes

N/A. docs/limits.md's prose is untouched; only its acknowledgement date moves.

When .github/workflows/ is touched

N/A.

When a machine runtime is involved

N/A.

Related issues

None. This closes no issue: docs/audits.md is a register and the limits acknowledgement is a dated read, neither of which an issue tracks.

🤖 Generated with Claude Code

Eight audits ran on 2026-11-14 and none had a row. The register is a discipline,
nothing fails when it is skipped, and skipping it is how the same angles get
audited twice and the same corners never do.

The rows carry what was found and what was NOT looked at, which is the column
that chooses the next audit. Two already name their blind spots: no run against
a real Incus on any of the three sibling ownership paths, and
internal/core/cloudinit not opened all day.

They also record a pattern the day measured three times, in three lots by three
authors: an attack test that refuses for the right reason by accident, because
every row of its table shares a value some OTHER control refuses too. #909 drove
one machine name ownedNetwork also refused; #923 built a one-package module, so
"in this package" and "anywhere" were the same set; #932 drives networks that
safeName and ownedNetwork both refuse, so the shape half is held by nothing. A
guard with two questions needs a row that passes one and fails the other, in
both directions.

Second change: limits:check was exiting 2 on main and nothing caught it, because
it is deliberately not in prepush. One section cited #851, closed 2026-11-13 and
never re-acknowledged. The section was read: the limit holds, no client mints an
identity and the CLI refuses rather than pretending, which is what #851 asked
for. Only that one entry is re-dated, by hand. `limits-acks.py refresh` re-dates
all 65 and would have claimed a pass nobody made.

No contradicteur read this, and that is deliberate: it is a record of
measurements taken in this session plus one dated re-read, and the two agent
slots were held by code all day. Stating it rather than leaving the blank.

Assisted-by: Claude Code (claude-opus-5)
@stephrobert
stephrobert merged commit a571d84 into main Nov 14, 2026
32 checks passed
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