Federation · return path

Verify walkthrough

How an outsider or agent hits live federation verify/package for one real entity — AAVE_V3 — and reads admit vs refuse. No signup. Best-effort Vercel.

Research measurement surface · not bank settlement · not a paid product

Step 1

OpenAPI + status

Confirm the live base and that baked endpoints (dossier, package, verify) are present. Tier is best_effort_vercel — no uptime SLA.

curl -sS https://geniusflow-federation.vercel.app/openapi.json | jq '{title:.info.title, version:.info.version}'
curl -sS https://geniusflow-federation.vercel.app/api/status | jq '{ok, tier, spec_version, n_dossiers:.surfaces.n_dossiers, baked:.surfaces.baked_endpoints}'

Expect ok: true, tier: "best_effort_vercel", and baked_endpoints.package / verify / dossier true.

Step 2

Dossier for one entity

Pull AAVE_V3 (also works: CIRCLE). Use a claim from claims[] — do not invent expected from HTML.

curl -sS 'https://geniusflow-federation.vercel.app/api/dossier?entity=AAVE_V3' \
  | jq '{entity, digest, phi_s:.own_numbers.phi_s, kappa:.own_numbers.kappa, n_claims:(.claims|length), claim0:.claims[0]}'

Expect JSON with entity: "AAVE_V3", a digest, and at least one claim carrying grounding.source_url + expected and status_at_publish (e.g. ATTESTED-PRIMARY).

Step 3

Package — admit (preferred: pipe from dossier)

POST the published claim object to /api/package. Prefer piping claims[0] so fields stay current after rebakes.

CLAIM=$(curl -sS 'https://geniusflow-federation.vercel.app/api/dossier?entity=AAVE_V3' | jq '.claims[0]')
curl -sS -X POST https://geniusflow-federation.vercel.app/api/package \
  -H 'Content-Type: application/json' \
  -d "$CLAIM" \
  | jq '{disposition, reason, proof_shape, return:._return_wire.outcome}'

Minimal honest body that admitted live (needs grounding + verified_at + expires_at — omitting expiry refuses):

curl -sS -X POST https://geniusflow-federation.vercel.app/api/package \
  -H 'Content-Type: application/json' \
  -d @- <<'EOF' | jq '{disposition, reason, proof_shape}'
{
  "claim_id": "d1eb5014-5ea5-44e2-bf2e-957df5a4e111",
  "claim_text": "Aave v3 developer documentation",
  "status_at_publish": "ATTESTED-PRIMARY",
  "grounding": {
    "source_url": "https://docs.aave.com/developers/aave-v3/overview",
    "expected": "v3",
    "location": ""
  },
  "verified_at": "2026-08-01T15:28:19.940673+00:00",
  "expires_at": "2026-10-30T15:28:19+00:00"
}
EOF

Expect disposition: "admitted", reason: "attested_published_claim", proof_shape.admitted: true, empty failed_limbs, refuse_limb: null. Response may include _return_wire ack.

Step 4

Package — refuse (invented attestation)

A body that stamps ATTESTED without grounding / expiry fails closed. That is the point of proof_shape.

curl -sS -X POST https://geniusflow-federation.vercel.app/api/package \
  -H 'Content-Type: application/json' \
  -d @- <<'EOF' | jq '{disposition, reason, proof_shape}'
{
  "claim_id": "walkthrough-invented",
  "claim_text": "Invented attestation without grounding",
  "status_at_publish": "ATTESTED"
}
EOF

Expect disposition: "withheld", exhibited_refusal: true, proof_shape.admitted: false, non-empty failed_limbs (typically refuse_or_admit and/or provenance_spine), and a set refuse_limb. HTTP is still 200 — refuse is in the JSON, not a 4xx.

Step 5

Verify grounding (source_url + expected)

Re-check that the published expected string appears in the fetched source. Take both values from the dossier claim — never invent them.

curl -sS -G 'https://geniusflow-federation.vercel.app/api/verify' \
  --data-urlencode 'source_url=https://docs.aave.com/developers/aave-v3/overview' \
  --data-urlencode 'expected=v3' \
  | jq '{status, found, note, proof_shape}'

Live check: found: true, status: "ATTESTED-PRIMARY", proof_shape.admitted: true. A wrong expected refuses (admitted: false) without upgrading the miss.

Step 6

Return-wire (optional ack)

After package/verify, federation may record a consumption ack on /api/return_wire. This is a return-signal path — not proof that every vault row was published. See the numbers glossary row “Return-wire ack”.

curl -sS https://geniusflow-federation.vercel.app/api/return_wire | jq '{ok, wire, n, note, capital}'

Expect ok: true and a small ack ring. capital: "HOLD" is normal on this public tier.

Read next

Admit vs refuse · glossary

Limbs (order frozen): registry_refrefuse_or_admitprovenance_spine. Admit only when every limb is ok. Spec: ATTESTATION_PROOF_SHAPE.md. Field terms (E, Φ_S, κ, status_at_publish, return-wire): Methodology · Numbers glossary.

CIRCLE works the same: swap entity=CIRCLE in step 2 and pipe its claims[0].

Done with the wire? Request design-partner pilot access — free intake, no payment step.

Request Pilot Access