A desk on Robinhood Chain
THE CURB
The position · Mechanism · what exists today

What exists today.

The status table from the mechanism, §17: every piece of the position product, whether it is built, and where to check it. Nothing here is deployed; no real asset is held.

Implemented in this repository as of 12 September 2026, and not:

PieceStatusWhere to check
Ledger model (§7) and test casesImplemented, testedlib/positions/ledger.ts, tests/positions.test.ts, the simulation
Issuer evidence archive: daily, as received, versioned by canonical fields (D02)Implemented, on the tick/api/positions/apple-s1/evidence
On-chain checks of every evidence address (incl. EIP-1967 slots, multiplier, wrapper conversion); corporate actions seen on activation day; a changed address is DARK driftImplemented, on the tickthe series page, /api/positions/apple-s1/evidence
Product network profile, own RPC override; chain id confirmed before any read (D05)Implementedlib/chain/networks.ts, lib/chain/rpc.ts
Event codec, idempotent index, reorg rollback, ledger replay (D03)Implemented, tested against fixtures; no contract to indexlib/positions/index.ts, tests/positions-backend.test.ts
Units owed reconciled against balanceOf (D04)Implemented; only for a configured deploymentlib/positions/reconcile.ts
Deployed code checked against this repository's build outside the immutable slots (G02's verification procedure)Implemented; every tick for a configured deployment; a mismatch is DARK; rehearsed locallylib/positions/code.ts, contracts/evidence/CompanySeries.build.json
Product API (§10) with dated indicative value (§8): A from the wrapper's conversion at a recorded block, B from the issuer page's shares-per-token, against the desk's AAPL / USD sampleImplemented/api/positions, /api/wallets/…, /api/status
Series contract prototype (§7, §9, §11); tests as in §14; seed, results, commit recorded (C07)Implemented in contracts/; unaudited, unreviewed, undeployedcontracts/src/CompanySeries.sol, contracts/test/CompanySeries.t.sol
Ethereum fork tests (C08, G3): A's identity, transfer, round trip, unwrap (T21), derived raw balance, wrapper size; B's (issuer-page address) identity, transfer, round trip with both; authority behind each address (EIP-1967 implementation, admin, beacon, owner(), paused())Implemented; block not pinned (public node); findings shown datedcontracts/test/fork/, contracts/evidence/apple-s1.fork.json, the series page
End-to-end rehearsal: two mock components, the worked example, five events in order, A and B MATCHED (T16, T18 in part)Implemented, repeatable; a local chain, not a public onecontracts/scripts/rehearsal.ts, tests/positions-rehearsal.test.ts
Wallet calls as bytes in previews, once a deployment is configuredImplemented; simulated locally against the real contract; the site holds no key, sends nothinglib/positions/calldata.ts, /api/positions/apple-s1/preview-mint
"My position" (§6): read-only lookup by address; claims kept apart from receiptsImplementedthe series page, /api/wallets/<address>/…
"Form position" and "Claim components" (§6, U03, U04): one wallet transaction per step, wrong chain refused, receipt read after miningImplemented for a deployed series; rehearsed locally with a stand-in wallet (approve, approve, mint, allocate, claim A, claim B)app/components/wallet-sign.tsx, the series page when CURB_SERIES_DEPLOYMENTS is set
The Gazette: verified changes by day (§9), never a second recordImplemented/gazette/<day>, lib/positions/journal.ts
Operational drill (O02): freeze of A, shortfall of A, backend down, RPC failure, lost source; 2-of-3 quorum (stop and resume each need two signatures; the former single key refused); nobody paged, nothing recoveredImplemented, repeatable; a local chain with mock componentscontracts/scripts/drill.ts, tests/positions-drill.test.ts, contracts/evidence/drill-local.json, the series page
Execution gas per operation, real wrapper as A (B01's input; no price applied)Implemented, dated with the fork blockcontracts/evidence/apple-s1.fork.json, the series page
T14 (see §14): forks before and at the multiplier activation, block 25,706,680 (8 August 2026 00:30 UTC; found by binary search of multiplier()); multiplier +0.0603%, wrapper shares unchanged, raw balance moved, conversion rate equal to the multiplier on both sidesImplemented, recorded in contracts/evidence/apple-s1.corporate-action.json; a split is not on the recordcontracts/test/fork/AppleCorporateActionFork.t.sol, the series page
T13 on the site side (see §8); T18 against a public chainT13 covered by the valuation and its tests; T18 needs a deploymenttests/positions-valuation.test.ts
Independent review and audit of the contractNot started—
Drift and evidence changes as conditions and alerts (T15)Implemented/api/state → conditions, the webhook
Instrument file from archive and chain (R01, the automatable half)Implemented/api/positions/apple-s1/file
Issuer documents watched by visible-text hash (13 pages)Implemented, on the tickthe series page, /api/positions/apple-s1/evidence
Related-party map (R02), each line sourced and dated; unnamed roles left empty; no party under both components; no independence claimedImplemented from the issuers' documents as read on 12 September 2026; pages watchedthe series page, lib/positions/dependencies.ts, /api/positions/apple-s1/file
Decision records (R03, R05, R06): immutable series, nontransferable receipt, on-chain access, per-component stops, no sweep and claims to the holder, lots and cap; operator policy (O01), runbook (O03)Series ADRs and remaining operator policy proposed; treasury signers recorded separately; each names who decides/mechanism/decisions, docs/decisions/
Cost comparison against the baseline (B01): round-trip gas with both real components; gas and ETH prices left variableA proposal with measured inputs; no price applied/mechanism/decisions/costs
Deployment plan (G02); its tool refuses an unreviewed record, the wrong chain or a missing keyA proposal; the tool exists and refuses; rehearsed locally, nothing sent to a public chain/mechanism/decisions/deployment, contracts/scripts/deploy-series.ts
Invariant tests: five invariants over 256 sequences of depth 64; seed, runs, results recordedImplementedcontracts/test/CompanySeries.invariant.t.sol, contracts/evidence/unit-tests.json
Assumption register (§19), a self-review that is not a review (C09), interview guide and comprehension test (R04, B02)Written; conservative assumptions, none stated as fact/mechanism/decisions
The token's one function (§16): credit desk contract (nothing held, no admin; fifteen tests); pool-event pricing once node state is gone (Robinhood Chain's public node keeps ten minutes, measured); keys by hash; paid endpoints (evidence versions, journal by day, webhook delivery) admitted, answered, then charged; code and treasury verified every tick; receipts, conditions, deployment tool, services page, the Gazette's daily receipts; the operator's Safe planned unsigned and simulated on Robinhood Chain, quorum (approve the hash, execute) rehearsed with Safe's own code; plain ERC-20 as launch condition. Local rehearsal: mock token and pool, two top-ups at two pricesImplemented; the record decided by the product owner on 12 September 2026 (prices, terms, proceeds, order of work, Robinhood Chain); no token exists; NOT_CONFIGURED in production/services, /mechanism/decisions/token, contracts/src/CreditDesk.sol, lib/credits/
User interviews (R04), comprehension tests (B02), the gate decision (G01), the independent review (C09)Interviews: not held, by decision (20 September 2026); observed use stands in — see §15. The rest: not done — people; the assumption register says what is assumed meanwhile/mechanism/decisions/assumptions
Any deployment, any real assetNone. /api/status says NOT_DEPLOYED—

The Ondo API source records ACCESS_DENIED: its documented endpoint needs an API key the desk lacks, archived as the finding. B's candidate address comes from the issuer's own product page, which publishes per-network deployments and is archived and verified on chain daily. The example address in Ondo's API specification is never a source.