{"product_id":"alfa-code-founder-toolkit-reference-implementation-docs-architecture","title":"Alfa Code Founder Toolkit — Reference Implementation, Docs \u0026 Architecture","description":"\u003cdiv class=\"p1-product-body\" style=\"font-family:inherit;line-height:1.6;max-width:760px\"\u003e\n\u003cp\u003e\u003cstrong\u003eWhat it is:\u003c\/strong\u003e the Alfa Code Founder Toolkit is the working reference implementation of Alfa Code Specification v0.1, the Protocol One system that gives a building, room, object, vehicle, document, organization or digital subject a permanent address like \u003ccode style=\"font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.86em;word-break:break-all;color:inherit\"\u003eALFA-P1-BLD-MESA-85206-000001-SA\u003c\/code\u003e, plus a tamper-evident record chain anyone can check offline. It is a single Python 3 file using only the standard library, with no network calls and nothing to install.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eWhy it matters:\u003c\/strong\u003e most identifiers point into someone else's database. An Alfa Code carries its own evidence: every event about the address (issuance, a two-sided transfer, a linked document, retirement) is a new hash-chained record, so if anything recorded is changed afterward, the verifier shows it. You get one of six clear verdicts (Verified, Warning, Unauthenticated, Integrity Alert, Broken Seal, No verdict) with a plain-English line explaining what it means and what to do next. A verdict speaks to the evidence only; it does not prove where an object is or who lawfully owns it.\u003c\/p\u003e\n\u003cp\u003eAn Alfa Code is a label, not proof of location, ownership or identity.\u003c\/p\u003e\n\u003ch3 style=\"margin:28px 0 10px;padding-left:10px;border-left:3px solid #38BDF8;font-size:1.05em;letter-spacing:.02em\"\u003eWhat’s included\u003c\/h3\u003e\n\u003cp\u003e\u003cstrong\u003eSource + Docs: $149\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003ealfa.py\u003c\/strong\u003e: the full implementation. Address parser and ALFA-CHK-2 check characters (legacy ALFA-CHK-1 kept for the two published examples), ALREC-1 record chain, ALCAP-1 core payload, issuer enrollment, append-only assignment log, two-sided transfers, links, retirement, and the offline verifier (exit codes 0–8, ranked by severity: verdicts 0–5, then Refused, usage error and self-test failure).\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eAlfaObject\u003c\/strong\u003e: a simple identity\/state\/action developer class that can carry a real Alfa Code and record each \u003ccode style=\"font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.86em;word-break:break-all;color:inherit\"\u003eexecute()\u003c\/code\u003e into the chain.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eREADME.md\u003c\/strong\u003e, \u003cstrong\u003edocs\/QUICKSTART.md\u003c\/strong\u003e, \u003cstrong\u003edocs\/CLI-REFERENCE.md\u003c\/strong\u003e, \u003cstrong\u003edocs\/ARCHITECTURE.md\u003c\/strong\u003e.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003edemo.sh\u003c\/strong\u003e and a captured demo transcript (sandbox data), plus a \u003ccode style=\"font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.86em;word-break:break-all;color:inherit\"\u003eunittest\u003c\/code\u003e suite (42 tests).\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eCHANGELOG.md\u003c\/strong\u003e: what changed in this version.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFounder Edition: $299\u003c\/strong\u003e, everything above, plus:\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eSPEC-ADDENDUM.md\u003c\/strong\u003e: the canonical byte format behind every digest, pinned exactly, so a second implementation can produce matching digests.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003etest-vectors.json\u003c\/strong\u003e: published check-character, record, payload, enrollment and log vectors (every SHA-256 in full).\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003earchitecture\/\u003c\/strong\u003e: five diagrams as Mermaid source and 2400px PNGs: address anatomy, ALREC-1 record chain, verifier ladder, enrollment\/issuance\/transfer flow, and the AlfaObject front door.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cdiv style=\"margin:10px 0;padding:12px 14px;border:1px solid rgba(0,240,255,.35);border-radius:10px;background:rgba(0,240,255,.05)\"\u003e\n\u003cstrong\u003eSource + Docs\u003c\/strong\u003e\u003cbr\u003e\u003ccode style=\"font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.86em;word-break:break-all;color:inherit\"\u003eAlfa-Code-Founder-Toolkit-Source-and-Docs.zip\u003c\/code\u003e — 120,575 bytes · 9 files\u003cbr\u003eSHA-256: \u003ccode style=\"font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.86em;word-break:break-all;color:inherit\"\u003eebdaf2245f65781c0af049f797cc04adeac874c8e6e38120388a4025711e56c0\u003c\/code\u003e\n\u003c\/div\u003e\n\u003cdiv style=\"margin:10px 0;padding:12px 14px;border:1px solid rgba(0,240,255,.35);border-radius:10px;background:rgba(0,240,255,.05)\"\u003e\n\u003cstrong\u003eFounder Edition\u003c\/strong\u003e\u003cbr\u003e\u003ccode style=\"font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.86em;word-break:break-all;color:inherit\"\u003eAlfa-Code-Founder-Toolkit-Founder-Edition.zip\u003c\/code\u003e — 2,471,578 bytes · 22 files\u003cbr\u003eSHA-256: \u003ccode style=\"font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.86em;word-break:break-all;color:inherit\"\u003ef1475959d11b667bf7d3ee3bf3011669e5ad7a8ca1f04537bb25ee5c42135ac4\u003c\/code\u003e\n\u003c\/div\u003e\n\u003cp style=\"font-size:.88em\"\u003eCheck on macOS\/Linux with \u003ccode style=\"font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.86em;word-break:break-all;color:inherit\"\u003eshasum -a 256 \u0026lt;file\u0026gt;.zip\u003c\/code\u003e, or on Windows with \u003ccode style=\"font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.86em;word-break:break-all;color:inherit\"\u003ecertutil -hashfile \u0026lt;file\u0026gt;.zip SHA256\u003c\/code\u003e.\u003c\/p\u003e\n\u003ch3 style=\"margin:28px 0 10px;padding-left:10px;border-left:3px solid #38BDF8;font-size:1.05em;letter-spacing:.02em\"\u003eWhat’s new in this version\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eExit codes ranked by severity\u003c\/strong\u003e, so a forged chain can never exit like a genuine one: 0 Verified, 1 Warning, 2 Unauthenticated, 3 Integrity Alert, 4 Broken Seal, 5 No verdict (\u003ccode style=\"font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.86em;word-break:break-all;color:inherit\"\u003ealfa.py exit-codes\u003c\/code\u003e prints the table; scripts written for the previous version must be updated).\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eStripped signatures caught:\u003c\/strong\u003e a missing signature from an issuer whose key is in the registry now reads Broken Seal; a wrong-key signature reads Broken Seal; no registry or an unknown issuer reads Unauthenticated. The verifier uses only the registry you pass it.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eIssuer-signed head statements\u003c\/strong\u003e: a copy of a chain that stops short of the issuer's latest statement reads Integrity Alert. A head statement only shows what was latest as of its own time, so Verified also needs a freshness source: a maximum statement age you choose (\u003ccode style=\"font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.86em;word-break:break-all;color:inherit\"\u003e--max-head-age\u003c\/code\u003e) or your own checkpoint (\u003ccode style=\"font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.86em;word-break:break-all;color:inherit\"\u003e--checkpoint\u003c\/code\u003e). Without one the best result is Warning, and the report shows the statement's time.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eSigned assignment log\u003c\/strong\u003e cross-checked against the chains (a deleted log or a broken entry chain is reported, never \"intact\"). \u003ccode style=\"font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.86em;word-break:break-all;color:inherit\"\u003eaudit\u003c\/code\u003e also checks the store's own \u003ccode style=\"font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.86em;word-break:break-all;color:inherit\"\u003eregistry.json\u003c\/code\u003e: an issuer whose signing key was removed, or one enrolled without a key, is reported unless you name it as a legacy keyless issuer (a key replaced with someone else's is caught only by \u003ccode style=\"font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.86em;word-break:break-all;color:inherit\"\u003e--registry\u003c\/code\u003e or your checkpoint); \u003ccode style=\"font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.86em;word-break:break-all;color:inherit\"\u003eaudit --registry\u003c\/code\u003e compares the store with the registry you exported and kept; and your checkpoint records the registry, so an edited \u003ccode style=\"font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.86em;word-break:break-all;color:inherit\"\u003eregistry.json\u003c\/code\u003e is reported and writes are refused. Also: an optional checkpoint that detects a restored stale backup (writes are refused and \u003ccode style=\"font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.86em;word-break:break-all;color:inherit\"\u003eaudit\u003c\/code\u003e reports it), chain rules (nothing after retirement), strict text encoding, timestamp checks, small-order Ed25519 key rejection and privacy guards.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eFuture-dated head statements\u003c\/strong\u003e: a statement dated more than 5 minutes ahead of the verifier's clock reads Integrity Alert, and \u003ccode style=\"font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.86em;word-break:break-all;color:inherit\"\u003ealfa.py head\u003c\/code\u003e will not create a statement dated in the future. (A verifier whose own clock is more than 5 minutes slow will report a genuine fresh statement this way; keep the clock set.)\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eLog times cross-checked\u003c\/strong\u003e against the chains, and \u003ccode style=\"font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.86em;word-break:break-all;color:inherit\"\u003esign-legacy-log\u003c\/code\u003e refuses logs that look rewritten rather than genuinely old.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eReference-grade Ed25519 issuer signing\u003c\/strong\u003e, with issuer enrollment (proof of possession).\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eALFA-CHK-2 check\u003c\/strong\u003e, which catches every single-character substitution and adjacent swap (random two-character errors still slip through about 1 time in 500).\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eStore-wide file locking\u003c\/strong\u003e, so concurrent issuance gets unique serials.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003etri_signature_ref\u003c\/strong\u003e is now format-checked, and every report labels it as not cryptographically verified.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eCHANGELOG.md\u003c\/strong\u003e is included in both Editions.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3 style=\"margin:28px 0 10px;padding-left:10px;border-left:3px solid #38BDF8;font-size:1.05em;letter-spacing:.02em\"\u003eRun the self-test\u003c\/h3\u003e\n\u003cp\u003eUnzip, open a terminal in the folder and run:\u003c\/p\u003e\n\u003cpre style=\"white-space:pre-wrap;padding:10px 12px;border:1px solid rgba(192,192,192,.35);border-radius:8px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.9em\"\u003epython3 alfa.py --self-test\u003c\/pre\u003e\n\u003cp\u003eYou should see \u003ccode style=\"font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.86em;word-break:break-all;color:inherit\"\u003eSelf-test: 225\/225 passed\u003c\/code\u003e. Then run \u003ccode style=\"font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.86em;word-break:break-all;color:inherit\"\u003e.\/demo.sh\u003c\/code\u003e to watch an address get issued, verified, altered by one character (Broken Seal), and transferred with both parties' Tri-Signature references.\u003c\/p\u003e\n\u003ch3 style=\"margin:28px 0 10px;padding-left:10px;border-left:3px solid #38BDF8;font-size:1.05em;letter-spacing:.02em\"\u003eWho it’s for\u003c\/h3\u003e\n\u003cp\u003eDevelopers, architects and technical founders who want to read, run, test or re-implement Alfa Code, and anyone evaluating it before building on it.\u003c\/p\u003e\n\u003ch3 style=\"margin:28px 0 10px;padding-left:10px;border-left:3px solid #38BDF8;font-size:1.05em;letter-spacing:.02em\"\u003eLimits\u003c\/h3\u003e\n\u003cp\u003e\u003cstrong\u003eWhat it does not do:\u003c\/strong\u003e no QR drawing, no motion or audio transport, no online resolver, and no governance workflow; those are outside spec v0.1's first build items. Time references use the local clock (CLK-LOCAL-1) and are labeled \"not attested\"; attested time (CLK-ATTEST-1) is accepted only when you supply the attestation reference. It is developer reference software, not legal advice, and it does not establish location or ownership.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eHonest limits:\u003c\/strong\u003e the Ed25519 implementation is pure Python and reference-grade (not constant-time), so production keys belong in a vetted cryptography library or an HSM. The verifier trusts the issuer registry it is given. Without \u003ccode style=\"font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.86em;word-break:break-all;color:inherit\"\u003e--registry\u003c\/code\u003e or your checkpoint, \u003ccode style=\"font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.86em;word-break:break-all;color:inherit\"\u003eaudit\u003c\/code\u003e trusts the issuer keys in the store's own \u003ccode style=\"font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.86em;word-break:break-all;color:inherit\"\u003eregistry.json\u003c\/code\u003e: someone with write access to the data directory who replaces an issuer's key with one of their own and re-signs, or who consistently rewrites an issuer you accept as keyless (\u003ccode style=\"font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.86em;word-break:break-all;color:inherit\"\u003e--allow-keyless\u003c\/code\u003e), is not detected. With \u003ccode style=\"font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.86em;word-break:break-all;color:inherit\"\u003e--registry\u003c\/code\u003e (the registry you exported and kept) or your checkpoint, both are reported. Someone who can also write to the checkpoint itself, strip its new fields back to the rev-5 format and substitute a key without changing content, gets \u003ccode style=\"font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.86em;word-break:break-all;color:inherit\"\u003eaudit\u003c\/code\u003e to report intact (out of scope: it needs write access to the checkpoint). After upgrading an old checkpoint, run \u003ccode style=\"font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.86em;word-break:break-all;color:inherit\"\u003eaudit --registry \u0026lt;your export\u0026gt;\u003c\/code\u003e once before the first write. A head statement shows a chain is complete only as of the time the issuer signed it: with \u003ccode style=\"font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.86em;word-break:break-all;color:inherit\"\u003e--max-head-age\u003c\/code\u003e, an old statement replayed together with an equally old chain still passes while it is younger than the age you set (at most that age plus 5 minutes of allowed clock skew), and a checkpoint catches it only if it has seen the later records. A log rewritten by someone holding the issuer's key is not detectable, and the privacy filter is a heuristic. Signing keys are stored unencrypted (file mode 0600).\u003c\/p\u003e\n\u003cp style=\"margin-top:28px;padding-top:12px;border-top:1px solid rgba(192,192,192,.35);font-size:.85em;opacity:.85\"\u003eInstant .ZIP download on the order confirmation page, plus an email link (Shopify Digital Downloads). Covered by our \u003ca href=\"\/policies\/refund-policy\"\u003e14-day refund policy\u003c\/a\u003e.\u003cbr\u003eProtocol One — Standards Office, 3707 E Southern Ave, Suite 1023, Mesa, AZ 85206 · \u003ca href=\"mailto:protocolonestandardsoffice@gmail.com\"\u003eprotocolonestandardsoffice@gmail.com\u003c\/a\u003e\u003c\/p\u003e\n\u003c\/div\u003e\n","brand":"{^} Protocol One","offers":[{"title":"Source + Docs","offer_id":67790781513898,"sku":"P1-ALFA-FT-SOURCE","price":149.0,"currency_code":"USD","in_stock":true},{"title":"Founder Edition","offer_id":67790787248298,"sku":"P1-ALFA-FT-FOUNDER","price":299.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0770\/6168\/5418\/files\/alfa-code-founder-toolkit-cover-2400-r3.png?v=1793427222","url":"https:\/\/protocolone.store\/products\/alfa-code-founder-toolkit-reference-implementation-docs-architecture","provider":"{^} Protocol One","version":"1.0","type":"link"}