Skip to content

Commit 5887805

Browse files
claude[bot]claude
andauthored
docs(verify): record the #12981 determination that the audience-gate seed is not a durability swallow (#13884)
* docs(verify): record the #12981 determination that the audience-gate seed is not a durability swallow `scripts/measure-durability-swallow-family.mjs` reports `harness.ts::inviteForAudienceGate` as tier-1 DARK on three mechanical conjuncts and leaves the fourth -- "and the caller still reports success" -- to a person. This records that answer in the file, the way `packages/runtime/src/domains/keys.ts` does, so the next census reading is legible instead of re-derived. The answer is NO: the helper returns `Promise<void>` and has exactly one caller, whose next statement performs the operation the row is a precondition for -- a lost row makes `signUp` throw with the audience gate's real status and body. Comment-only; no behaviour changes. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016ZC5rNQj3WEet5HAmmAkMs * docs(verify): reflow the determination annotation and drop its angle-bracket fragments Two type/format fragments in the annotation prose were spelled with angle brackets. The GitHub body sanitizer eats short tag-shaped fragments, even inside backticks, so an annotation meant to be quoted verbatim into the card would arrive corrupted. Spelled out instead, with no loss of precision. Comment-only; no behaviour changes. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016ZC5rNQj3WEet5HAmmAkMs --------- Co-authored-by: Claude <noreply@anthropic.com>
1 parent 6193e57 commit 5887805

1 file changed

Lines changed: 49 additions & 1 deletion

File tree

‎packages/verify/src/harness.ts‎

Lines changed: 49 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -715,7 +715,55 @@ export async function bootStack(
715715
{ context: { isSystem: true } },
716716
);
717717
} catch {
718-
/* best-effort — the gate answers either way */
718+
// Best-effort -- the gate answers either way.
719+
//
720+
// [#12981] This catch is silent BY DESIGN and it is NOT a durability
721+
// swallow. `scripts/measure-durability-swallow-family.mjs` reports this
722+
// site as tier-1 DARK because membership is decided on three mechanical
723+
// conjuncts -- silent catch, no rethrow, an awaited write in the `try`
724+
// -- and the census deliberately leaves the fourth, "and the caller
725+
// still reports success", to a person. Here the answer is NO, on two
726+
// independent grounds:
727+
//
728+
// 1. NOTHING CLAIMS TO HAVE PERSISTED. This helper answers a `Promise`
729+
// of `void`: no return value, no counter, no report out of which
730+
// any caller could read a landed row. Its ONLY caller is `signUp`
731+
// immediately below, whose very next statement POSTs
732+
// `/auth/sign-up/email` -- the operation this row is a
733+
// precondition for.
734+
// 2. THE LOSS IS ANSWERED ONE LINE LATER, LOUDLY. Under the default
735+
// `invite_only` posture a missing invitation makes that POST
736+
// refuse, and `signUp` throws `verify signUp failed:` carrying the
737+
// audience gate's own response status and body. Under `open` or
738+
// `email_domain` the sign-up succeeds on its own merits and the row
739+
// was never needed. Those are the only two branches -- which is
740+
// what "the gate answers either way" above means, stated here so it
741+
// can be checked rather than taken on faith. The row is write-only
742+
// besides: `org_verify_audience_gate` exists precisely so nothing
743+
// ever reads these rows back, and nothing does.
744+
//
745+
// The case this catch was written for is an app under verification that
746+
// carries no `sys_invitation` object at all: there is no store to
747+
// persist into, so there is no durability claim to break.
748+
//
749+
// AGENTS.md "Degradation log levels" names that its third legal answer.
750+
// Do NOT "repair" this site by adding a log -- the fixture already
751+
// receives the real refusal, with its status and body, from the throw a
752+
// few lines down, and one durability `error` per harness sign-up is the
753+
// mirror-image failure that made the founding incident's `warn`
754+
// unreadable in the first place. A `FAILURE_PROPAGATION_SITES` entry is
755+
// not right here either: that declaration asserts every path OUT OF THE
756+
// CATCH delivers, and this one returns normally -- the delivery is the
757+
// caller's next call, not this frame's. (It would also go red as STALE
758+
// today, the way keys.ts's annotation records: the gate's
759+
// `DURABILITY_CRITICAL_CALLEES` has no `insert`, so it matches no seam
760+
// in this function.)
761+
//
762+
// Posture, load-bearing for all of the above: `@objectstack/verify`
763+
// boots in-process against in-memory SQLite and "never touches a real
764+
// database or production data" (this file's header). There is no
765+
// deployed plane here that could go on looking healthy while something
766+
// it claims is persisted did not land.
719767
}
720768
};
721769

0 commit comments

Comments
 (0)