Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .auths/roots
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# Pinned by auths init β€” the trusted root for this identity.
did:keri:EB5cPHY0t-ejNC_rUzPS1dclTvd6kG-R9mQzjozCuGgd
2 changes: 1 addition & 1 deletion .claude/skills/burndown/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: burndown
description: Launch the unattended claims burndown for auths-network β€” sequential fresh agents close RED gaps under the fleet gate until done, capped, or parked out
description: Launch the unattended claims burndown for auths-network-web β€” sequential fresh agents close RED gaps under the fleet gate until done, capped, or parked out
---

# Burndown launcher
Expand Down
2 changes: 1 addition & 1 deletion .claude/skills/cycle/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: cycle
description: Run exactly ONE improvement cycle for auths-network β€” triage the highest-value RED gap, sculpt, gate, promote, snapshot, stop
description: Run exactly ONE improvement cycle for auths-network-web β€” triage the highest-value RED gap, sculpt, gate, promote, snapshot, stop
---

# Single cycle
Expand Down
2 changes: 1 addition & 1 deletion .claude/skills/review/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: adversarial-review
description: Run the adversarial review protocol on a review-gated (security-tradeoff) gap for auths-network β€” try to BREAK the change, never to confirm it
description: Run the adversarial review protocol on a review-gated (security-tradeoff) gap for auths-network-web β€” try to BREAK the change, never to confirm it
---

# Adversarial review
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@

# recurve run state (parked gaps, records, receipts)
.recurve/state/
.recurve/
77 changes: 12 additions & 65 deletions .recurve/ADJUDICATE.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,69 +8,16 @@
> point where hostile spec text can be kept out of the loop's
> instruction stream.

## ADJUDICATE-1 β€” where the witness node + operator CLI live
## FORK-1: "looks incapable of lying: simple" β€” define it concretely

- Spec (PRD.md): "This is trust infrastructure, so it must also look incapable of lying: simple,"
- Why it forks: the spec says 'simple' β€” what exactly, with a number or an enumerable behavior?
- DECIDED (2026-06-14): "Simple / incapable of lying" is NOT a standalone claim or a
separate metric β€” it is **defined operationally as the conjunction of the quantified
design-gate claims**: FE-2 (tokens-only), FE-3 (one accent, neutral palette), FE-4
(<=2 typefaces, body >=16px/1.5), FE-5 (8px spacing + max-width), FE-6 (AA both
schemes), FE-8 (functional motion only), FE-9 (LCP/CLS budgets), FE-10 (no
hacker/crypto tropes), FE-11 (plain microcopy). The page is "simple/incapable of
lying" exactly when all of those are GREEN. The vague sentence gets no probe of its
own; it is the AND of the design gate, so an agent cannot rationalize a definition.

PRD Open Question 1. Originally framed as "a separate witness binary vs a
platform subcommand." **Re-decided 2026-06-13** after recognizing a
witness node is *core trust infrastructure* (witnesses are central to the
KERI model), not a peripheral consumer like the demos β€” so it belongs in the
platform workspace, and a cargo feature (not a separate binary) is how auths
already keeps optional heavy components out of the lean default build
(precedent: `auths-rp`'s `git-sync` git2 feature; the fips/cnsa/bulk crypto
provider features).

**DECIDED (2026-06-13, supersedes the standalone-binary decision):**
- **Witness node + threshold verification** β†’ a **feature-gated Rust crate in
the platform workspace**, `auths/crates/auths-witness-node`, behind a
`witness-node` cargo feature. The lean default `auths` build never pulls it;
operators install a feature-enabled build (`cargo install auths --features
witness-node`, shipped as an `auths-witness` release binary). It composes
the platform's public crate APIs (`auths-witness`, `auths-keri`,
`auths-verifier`) β€” it does not re-implement protocol (WIT-B1).
- **Operator CLI** β†’ **unified into the main `auths` CLI** as `auths witness …`
subcommands (NOT a separate binary). The subcommand *surface* is
always compiled in (thin clap definitions, no heavy deps); the *handler* is
feature-split β€” with the feature it runs the node, without it returns a
helpful error pointing operators at the witness-enabled build. Lean default
AND unified UX; the false dichotomy ("separate binary for leanness") is
resolved.
- **IaC** (OpenTofu `.tf`) β†’ embedded with the node crate
(`auths-witness-node/deploy/`), shipped with the feature build.
- **Dashboard + public directory** (Next.js/TS) β†’ the web tier
(auths-site / a web repo), never the Rust workspace.

**What this means for this suite:** `auths-network/.recurve/` is no longer a
product repo β€” it is a **conformance/integration suite, structurally like
`interop/`**, whose probes drive building the `auths-witness-node` crate +
`auths witness` commands in the workspace and gate them against demos +
interop. Single tree, no cross-repo commits. Future
neutral-governance extraction to a separate governed repo remains possible β€”
extracting a crate later is easy; start coupled.

## ADJUDICATE-2 β€” directory admission policy v1

PRD Open Question 2. Who may join the public directory at v1, checked
how, and who signs admissions until governance exists? Sketch on the
table: verified operator org identity + reachable endpoints + ToS
signature, admissions signed by the auths org identity (disclosed as
interim, replaced by governance later). Gates: WIT-D2 (`register` is
blocked until this is decided).

**DECIDED (2026-06-13):** v1 admission requires a verified operator org identity + reachable endpoints + a signed ToS acknowledgment, with admissions counter-signed by the auths org identity as the explicitly-disclosed interim authority β€” to be replaced by neutral governance before the directory opens permissionlessly; the interim status must be visible in the directory itself.

## ADJUDICATE-3 β€” classification of the WIT-T block

Per this suite's default-closed convention, the threshold-verification
claims (WIT-T1..T5) start as `security-tradeoff` (review-gated β€” the
unattended loop will NOT work them). Counter-argument from the house
precedent: these claims ADD fail-closed checks rather than loosening
any, which in the demos/interop convention is ordinary green-gate work;
the only true loosening (accepting pre-revocation history) lives in
lost-the-laptop LTL-1/LTL-2 and keeps its own review protocol
regardless. Decide: keep WIT-T1..T5 review-gated (slower, maximally
cautious) or downgrade them to their natural classes
(missing-surface/wire-mismatch) so the loop can burn them down, with
WIT-T5's trap as the permanent guard. Gates: whether the autonomous
burndown can touch the suite's headline block at all.

**DECIDED (2026-06-13):** Split β€” WIT-T1..T4 downgraded to `missing-surface` so the loop builds the threshold *mechanism* autonomously (they ADD fail-closed checks: a bug fails loud as over-strict, never silently permissive β€” the safe direction), while WIT-T5 stays `security-tradeoff` so a human confirms the headline outcome (the forged-ordering fixture genuinely dies) and it remains a permanent forgery trap. The one true loosening β€” accepting pre-revocation history β€” is NOT here; it lives in auths-demos LTL-1/LTL-2 and keeps its own review protocol regardless. **Sanity-check me on this one** β€” it is the load-bearing security call; if you'd rather a human design the whole threshold block, revert WIT-T1..T4 to `security-tradeoff`.
Loading