The register, in the open · updated at query time

Run our numbers against us.

This page is the product's spine made public: every defect we know about, every claim we make with its verified status, every mistake we've made with its root cause — and the exact scope of what our guarantees bind. Figures and tables below carry a freshness label. With scripts enabled the counts, the claims table and the corrections ledger are all fetched from the register at view time; without, you see the snapshot this page was built with, marked snapshot · 2026-08-23 16:07 UTC. The label reads live only when the query returned, and if any single figure comes back missing the label says so rather than leaving a stale number standing under a confident word. Scope, stated plainly: this register covers our whole build programme — the ZASIS deliberation product and the internal operator console we run it from. It is not a defect count for the product alone, and we would rather say that than let the bigger number flatter us by ambiguity.

Who "external adversarial review" means, precisely: three rounds to date by external reviewer seats (Aug 2026), commissioned by us, prompted to be brutal — two working from this site's copy with no source access, and a third on 22 Aug given the first deliberation record verbatim, failures included, which refuted its arithmetic (see the E4 section below). Its accepted findings are logged in the register like everything else; where we disagreed, the disagreement is recorded too. We name this so the phrase can't do borrowed-authority work.

The register right now
182
findings recorded · 132 open
38
corrections — every one published in full below
21
marketing claims under continuous verification
138
actions in the authorisation ledger

Status across all 182: 132 OPEN · 35 CLOSED · 9 INFO (positives) · 3 WITHDRAWN · 2 PARTIAL · 1 QUALIFIED. The total is the sum of those six, computed where you are reading it — it cannot disagree with them. Withdrawn findings stay visible — a register you can silently prune is a register you can't trust.

Severity, defined

What the tiers mean.

The register's working definitions — so "serious" can't quietly mean something mild.

TIER 014

Foundational / framing — findings about how the estate itself is read and governed.

TIER 147

Serious. Wrong money, wrong records, unearned claims, or security exposure. Fix before launch.

TIER 251

Material. Real defects with bounded blast radius or a known workaround.

TIER 363

Minor. Inconsistencies and gaps that mislead but don't yet damage.

TIER 4 / INFO7

Informational, including recorded positives — things that work and must be preserved.

Every marketing sentence, checked

The claims table.

Every sentence our marketing makes is a row here, checked against production. A claim that can't survive its query doesn't ship. Current: 14 TRUE · 2 PARTIAL · 2 UNDERSTATED · 1 FALSE · 1 TRUE-NARROW · 1 WITHDRAWN — launch is defined as FALSE = 0, and yes, we publish the FALSE ones. The 21–22 Aug movements, each on production evidence, none on a promise: C1 flipped TRUE when the dashboard shipped an honest coverage model and a screenshot showed it computing "3 of 6 active projects checked"; C2 flipped TRUE when the empty project registry was seeded with six real rows and an authenticated read returned them; C6 flipped TRUE when a real sign-out shipped and one click collapsed 47 accumulated sessions to 1 with audit rows written. C4, C17 and C18 were WITHDRAWN as surface rulings — the sentences they judged no longer render on any production surface (the audit page lives only on a never-merged branch; the marketing route was blanked and its receipt line deleted) — each with a stated reopen condition, because a claim with no surface can be neither true nor false in public. And C12 moved the honest wrong way: TRUE → FALSE, because the same dashboard rebalance that fixed C1 moved the live security score to 77/100 while our claim row still pins "74/100" — the number went stale the moment the product got better, and the row says so until it is re-scoped. One moved on 18 Aug: our own serving check was convicted FALSE by our own crash test that morning (D127, D128) and re-earned TRUE-NARROW that night, when the rebuilt check caught the still-broken canary at 23:01 UTC — see C13 and D131. It was narrow because 3 of our 5 enrolled projects recorded "cannot verify" (their deployment URLs sit behind login). On 19 Aug an authenticated bypass — sent only on the gated side, never on the public one — brought lendingfinancialgroup.com.au and medisential.com inside hourly coverage, and on 20 Aug the fifth project (no public surface at all) came inside through a bypass used on both sides of its comparison: 5 of 5 covered, D130 CLOSED. The same window added and closed D139: the check’s own fetch layer froze on a day-old view and published four false greens about unbounces; we caught it from its own recorded premises, published it while it was still failing, and the no-store fix was proven by two clean production passes on 20 Aug — the frozen streak ended at exactly 21 rows, at exactly the fix deploy.

zasis · claims register — every marketing sentence, checked against productionsnapshot
IDClaimStatus
C1Dashboard: '6 MONITORED'TRUE
C2Projects page: '0 active of 0 total'TRUE
C3'RLS 100%' / 'RLS Coverage 25/25'TRUE
C4Audit page: 'a read-only record of what the system has actually done'WITHDRAWN
C5'Only emails listed here can complete sign-in'TRUE
C6Sign out ends your sessionTRUE
C7Coverage measures whether each active project has completed a health checkTRUE
C8Hiding routine activity never conceals warningsTRUE
C9Merge queue enforces diff-read-requiredTRUE-NARROW
C10A non-superadmin cannot read the audit logPARTIAL
C11Enable build alerts - real-time notificationsFALSE
C12Security page: the displayed security score is computed live from real component signals (RLS, key freshness, env secrets, auth config, monitoring), never pinnedTRUE
C13Serving-check detects a stale-serving domainTRUE
C14Marketing: '7 isolated projects, own Supabase each'TRUE
C15Marketing: '39/39 tables RLS-enforced'UNDERSTATED
C16Marketing receipts: 612 findings / 124 scans / 5,878 audit entries / 16,919 pingsUNDERSTATED
C17Marketing: "Live deliberation engine — every reasoning round on record, blind-committed before exposure"TRUE
C18FAQ: 'Structured deliberation is live today'TRUE
C19FAQ: 'Deeper scenario tooling is on the roadmap, not yet shipped. We would rather say so than overclaim'TRUE
C20Homepage: "Bring your own keys. Every call audited."PARTIAL
C21The product can route to a model and record the resultTRUE
Never deleted

The corrections ledger — 31 published here, verbatim.

Every time our own analysis was wrong, what we claimed, and why it was wrong — root cause included, never deleted. A discrepancy we are publishing rather than quietly closing: 31 corrections are printed below, and the register now holds 38. The two sets overlap but are not nested — this page carries edited prose for entries the register records differently, and the register carries later entries this page has never shown. We could have made the number agree in one line by regenerating this ledger from the register; that would have removed published corrections from a page whose promise is that none are ever removed. Reconciling the two corpora is recorded as D183 and is being done by hand. Three of these correct the same finding three times; the sequence is preserved because it teaches more than the conclusion.

zasis · corrections ledger — append-only, root cause includednever deleted
C314 Aug
Called RLS coverage OVERSTATED on the strength of 20 advisories
40/40 tables are RLS-enabled; the score measures enablement and enablement is total.
C514 Aug
Called the allowlist claim CONTRADICTED
Read last_sign_in_at as admission; it records only the identity-provider exchange.
D714 Aug
Allowlist description contradicts behaviour
Falls with C5.
D2914 Aug
Claimed no alarm has ever fired
Health alarms have fired 11 times; the sharper finding is that nobody reads them.
D3614 Aug
Claimed the whole governance half has never run
agent_tasks holds 7 real tasks with real successes and two real 401 failures.
D3814 Aug
Claimed the health alarms had no delivery channel
/api/notifications/stream and /dashboard/notifications both exist.
D4514 Aug
Called a 404 on /dashboard/gh-queue a defect
The real route is /dashboard/github-queue; a mistyped path correctly refused.
D5314 Aug
Implied handle_new_user() had been cleared when only handle_new_user_role() had
Read it in full; it is a trigger function with an immutable search_path and is sound.
POSITIONING14 Aug
Proposed risk-tiered authorisation as a new idea
It already exists — issue #161, task a6086c37, 4 June.
MASTER-REF14 Aug
Treated the recovery file's VERIFIED CURRENT STATE block as current
11 of its statements were stale; an append-only log stays accurate while its summary rots.
D63-draft14 Aug
Nearly filed: no provider secret exists in the vault at all, including Anthropic
vault.secrets returns 0 rows to this connection — the join was uninformative, not negative. Anthropic renders Connected, so the app can read what I cannot. Withdrawn before it was stated.
D32/FORK-Q214 Aug
Framed five months of zero deliberation runs as revealed preference — the market telling you the feature is not wanted
Wrong inference. Multi-model deliberation is a feature for when you would otherwise ask a colleague. A solo operator has no colleague and does not deliberate with himself. Zero usage by a one-person team is evidence about team size, not about demand. The owner made this point, and it is correct.
D36/D6614 Aug
Implied the governance half was built worse than the monitoring half
The deliberation integrity model — a database CHECK enforcing that no verdict is exposed before every blind verdict is committed — is the most careful engineering in the estate. The difference is not build quality. Crons run without a human present; governance requires one.
E214 Aug
Proposed adding one team_members row as a 10-minute test of multi-user access control
Invalid as designed. projects.team_id is NULL on all six active projects, so the team branch of the policy cannot match. Caught by checking the test before proposing it.
D3414 Aug · correction 1 of 3 on one item
Claimed spend control is off and unmeasured, and that the "$0.07 of $5.00" figure had nothing behind it
Wrong on both counts. cost_limits holds SIX enabled limits across THREE scopes with spent_today_usd tracked per limit. The $0.07 figure is a real row. The design is more granular than a single cap.
D7414 Aug · correction 2 of 3
Claimed the cost meter froze on 19 June and has not run for 56 days
Wrong — the meter works. The limits were decremented within two seconds of the last real model call. Rollover is lazy: no spend means no rollover. Nothing is broken; there has simply been no activity.
D77-framing14 Aug · correction 3 of 3
Two cost figures disagree by roughly 9×
Invalid comparison — a daily bucket against an all-time sum. Same-day comparison gives 13.2×, and exposes the mechanism the 9× framing concealed: $0.0700 is exactly 7 calls × $0.0100. The original figure understated the defect and hid its cause.
D8714 Aug · withdrawn in 20 minutes
A project failed 4,083 of 4,083 health checks and monitoring then stopped silently; the operator was never told
Both halves wrong. The project had been deliberately soft-retired by owner decision, recorded in the audit log with reason, reversibility and preservation flags — surfaced correctly and in full. Root cause: concluded from a probe without running the control.
D10415 Aug
Called a passing reconciliation "vacuous — the check it monitors is broken"
Inference presented as fact, and wrong. One query dated the pattern: the failure had been fixed 26 days earlier by a token rotation; the pass was genuine. Root cause: pattern-matched without dating the pattern.
D12116 Aug
Rebuilt and shipped this site's homepage while presenting the design as settled, answering the owner's "everything we discussed is not upgraded" from session memory
The canonical homepage spec — locked 6 Jul with the rule "if a decision isn't in this file, it isn't decided" — sat unread in the owner's Drive the whole time, alongside the motion reference it names. The owner had to challenge twice. Root cause: answered a design complaint from memory instead of from sources. The page you are reading this on was rebuilt to that spec afterwards.
RESEND17 Aug
Flagged the email provider's renewal as urgent — "due before the 18th, real money, do it today" — repeated it across several messages and wrote it into the roadmap as a Phase-0 item with a clock on it
The billing screen shows "Renews Aug 19", auto-renewing — no lapse risk, no action required. Root cause: carried a weeks-old third-party suggestion chip forward as an actionable fact without checking the source screen. Same class as MASTER-REF: trusting a summary over the authoritative surface.
ACTIONS-LEDGER17 Aug
Wrote "Ledgered: -71 recorded cross-lane" in a review reply, presenting a register write as already done
The insert had never run — the actions table still ended at -70, and the pre-insert check that returned -70 should itself have flagged the miss. A planned write was reported as complete. Fixed the same day: seven cross-lane rows inserted with accurate states, and this correction recorded.
CLOCKS17 Aug
Told the operator the task scheduler's clock was running about seven hours ahead and its absolute timestamps should be ignored — reviving a prior clock-drift lesson
Four clocks cross-checked against each other agree; the seven-and-a-half-hour discrepancy was idle time between messages, not skew. The drift lesson — trust column stamps over narrative — was applied backwards, to distrust a stamp that was correct. The simpler explanation was never tested first.
BUILD-MARKER19 Aug
Wrote a "VERIFIED" comment into the blank-route code asserting the platform's commit-sha variable is inlined into the edge bundle — before running the build test that would establish it
The label preceded the evidence, and the claim was false: a sentinel build put zero occurrences in the compiled output. Caught by the writing lane itself, unprompted, in the same turn — the only place this class of error is cheap. It also vindicated generating the build marker at build time over trusting an env var that silently fails to inline, which would have restored the exact vacuity the marker exists to remove.
OPERATING-MODEL19 Aug
Routed decisions to the operator that were actually my own capability limits or low-risk housekeeping, in dense engineering language — load transferred without choice transferred
The operator is not a software engineer and said so: "why am I taking actions I'm unsure about?" A gate is only worth its cost when the human adds judgement. Standard adopted: act-and-report for the trivially reversible; ask with a one-line plain-English recommendation where there is a real choice; hard-stop only for the irreversible, public, money-spending or client-touching. Every card now opens with what it does, what breaks if wrong, and why I cannot do it myself. Capability limits are named as mine, never dressed as the operator's decision.
RUNBOOK19 Aug
Wrote copy-here / paste-there secret instructions that let the operator search for a variable name in the wrong project's settings
The instruction never said the copy screen and the paste screen were different pages in different projects, or that the variable was being created rather than found. "No results found" was the correct result of the search my wording invited. Rewritten with a two-screens callout; instruction defects are ours, not the operator's.
CODEX19 Aug
Recorded a branded catch-all on every unknown path as VERIFIED, and dismissed an external reviewer's matcher finding as "not yet material"
The catch-all claim came from a summarising fetch tool's description of a page, not from reading the page — a direct read returns a plain 404. The reviewer's finding was real: a branded SVG stayed publicly served exactly as it said. A summarising fetch is INFERRED, never VERIFIED; and the outside reviewer was right where we argued it down.
AUTHLINE19 Aug
Buried the authorisation string for a raised action inside a conditional sentence at the end of a long message
The operator had to ask for it, costing a round trip — the same bottleneck class as the operating-model correction. Standing change: every raised action ends with its authorisation line alone on its own line.
ENUM19 Aug
Handed a fix scope to the other lane with "enumeration already done — do not rediscover it"
The enumeration was eighteen guessed paths, not a directory listing, and it missed the worst file (a service worker carrying retired branding twice). The other lane's basic directory listing caught it. Scope handovers now state the method and its blind spot, and invite independent discovery instead of forbidding it.
LAYOUT19 Aug
Stated a stale meta description was publicly emitted on the login page, labelled VERIFIED
Only the 200 status was verified; the emission claim was an inheritance inference, and false — the login page carries its own override. The sentence's real public surface was the 404 page. The edit survived the wrong theory; the verify criterion aimed at the wrong page could never have caught a regression. Inferences don't ride inside VERIFIED labels.
PREMISE19 Aug
Explained a production mismatch as two-second deploy transience and predicted the next pass would clear it
The row's own recorded premise — which deployment the check believed was latest — disproved the story before it was told: it had been frozen on a day-old deployment for hours behind four false greens (D139). The conclusion was audited while the premises went unread. When a verdict surprises, read every column of its row first.
22 Aug 2026

The first deliberation on the record.

On 22 Aug the deliberation engine ran for real for the first time: two frontier models from two providers — claude-sonnet-4-5-20250929 and gpt-4o-mini — answered one synthetic lending question with a written client cap, blind, then saw each other, then revised, under a run-once governed action. It took three attempts, and the first two are kept: attempt one died on an invalid key and two retired model ids and left its empty header row in place; attempt two produced real rounds but lost its third panellist and was refused by its own hard rule — a panel missing a requested participant does not get to call itself a deliberation. Both failed records stay in the database, unedited, next to the one that succeeded.

What held, in the record itself: every blind verdict carries a commit timestamp earlier than its exposure timestamp; the panel genuinely split — one model committed at 98, saw its peer, lowered to 95 and held its dissent; the other adopted its peer's arithmetic wholesale and rose to 100 — and when we then tried to rewrite a committed blind verdict, the database refused us with "blind_response is write-once and cannot change once committed", and an immediate re-read returned the original values. That refusal is application-scope, at that moment, through that path — the scope section below says exactly what it does not prove.

What failed — and an external reviewer said it first. We sent the full record, failures included, to an external model prompted to refute it. It independently reproduced our withheld grading key to the cent and proved the record's adopted final answer carries wrong arithmetic: one plan's repayment overstated by $10.46 a month, the other understated by $120.07, the lifetime-cost gap wrong by roughly $36,000. The recommendation itself — the only plan under the client's written cap — survives on the reviewer's own numbers; the figures do not. It also ruled the ordering and independence claims unproven beyond what the stored rows show, which our scope statement had already admitted. So this record is cited here as evidence of process, never of arithmetic, and only together with its refutation — and the next engine change is the reviewer's own best suggestion: a deterministic calculation gate that refuses to finalise any deliberation whose figures fail reconciliation.

Record delib-20139274-6ffb-4649-969c-8132ac7b4d69 · verified 22 Aug 2026 11:25 UTC by the named owner with the governing action reference · register refs D142–D148 (the near-misses, the logging gaps, the refutation — all filed the same day).

Stated before you ask

What our guarantees bind — and what they don't yet.

The tamper-evidence scope

What binds today: database constraints make deliberation records write-once against every application path, every API route, and every non-superuser role. No panellist can see a peer before committing. Nothing is "verified" without a named verifier and a timestamp. An application bug and a hurried admin hit the same wall.

What does not bind yet: us, as the database operator. A superuser could disable the trigger or restore an altered backup. Independent anchoring — a published hash chain and customer-side verification, so the evidence checks out without trusting ZASIS — is on the roadmap, and until it ships you will not find the words "immutable" or "not even us" anywhere on this site.

Register refs: D114 (the constraint chain), D117 (the scope), D115 (the first record — delivered 22 Aug, above, with its refutation attached).

How to read us

Our evidence labels.

VERIFIEDQueried or fetched directly, this session, from the authoritative source. The query ships with the number.
USER_PROVIDEDSupplied by the operator — a screenshot, a statement. Trusted as testimony, marked as such.
AGENT_REPORTEDAnother system or model said it. Never presented as our own finding until independently verified.
INFERREDFollows from evidence but wasn't directly observed — always named with the check that would settle it.
UNKNOWNWe can't establish it. Written as "unable to determine" — an empty finding is honest; a filled-in guess is not.

Run them yourself.

Every figure on this page comes from the same register the product runs on — and the unflattering rows ship too. If that's the kind of witness you want beside your stack, say hello.