[{"data":1,"prerenderedAt":1388},["ShallowReactive",2],{"navigation_docs":3,"-zero-knowledge-cryptography-chinwag-acu":234,"-zero-knowledge-cryptography-chinwag-acu-surround":1383},[4,26,47,68,89,114,135,164,181,210],{"title":5,"path":6,"stem":7,"children":8,"page":25},"1. Getting Started & Pricing","\u002Fgetting-started","01.getting-started",[9,13,17,21],{"title":10,"path":11,"stem":12},"1.1 5-Minute Quickstart","\u002Fgetting-started\u002Fquickstart","01.getting-started\u002F1.quickstart",{"title":14,"path":15,"stem":16},"1.2 Project Boards Setup","\u002Fgetting-started\u002Fboard-init","01.getting-started\u002F2.board-init",{"title":18,"path":19,"stem":20},"1.3 GitHub Actions & GitLab CI Runner Setup","\u002Fgetting-started\u002Fci-runners","01.getting-started\u002F3.ci-runners",{"title":22,"path":23,"stem":24},"1.4 Organization Credit Pool & Per-Function Credit Pricing","\u002Fgetting-started\u002Forg-credits-and-slack","01.getting-started\u002F4.org-credits-and-slack",false,{"title":27,"path":28,"stem":29,"children":30,"page":25},"2. Pair & Triad Programming","\u002Fpair-and-triad-programming","02.pair-and-triad-programming",[31,35,39,43],{"title":32,"path":33,"stem":34},"2.1 Cross-Model Pair & Triad Programming","\u002Fpair-and-triad-programming\u002Foverview","02.pair-and-triad-programming\u002F1.overview",{"title":36,"path":37,"stem":38},"2.2 Isolated Shadow Workspaces","\u002Fpair-and-triad-programming\u002Fshadow-jj-workspaces","02.pair-and-triad-programming\u002F2.shadow-jj-workspaces",{"title":40,"path":41,"stem":42},"2.3 Cryptographic File-Scope Leases & Small-Diff Gates","\u002Fpair-and-triad-programming\u002Ffile-scope-leases","02.pair-and-triad-programming\u002F3.file-scope-leases",{"title":44,"path":45,"stem":46},"2.4 Sub-Issue to Subagent Fan-Out & Delta Velocity","\u002Fpair-and-triad-programming\u002Fsub-issue-fanout","02.pair-and-triad-programming\u002F4.sub-issue-fanout",{"title":48,"path":49,"stem":50,"children":51,"page":25},"3. Declarative Workflow Policy","\u002Fworkflow-policy","03.workflow-policy",[52,56,60,64],{"title":53,"path":54,"stem":55},"3.1 Declarative Workflow Policy Schema","\u002Fworkflow-policy\u002Fschema-reference","03.workflow-policy\u002F1.schema-reference",{"title":57,"path":58,"stem":59},"3.2 Cryptographic Conformance Matrix & Memory Tombstones","\u002Fworkflow-policy\u002Fwp-01-to-wp-15-matrix","03.workflow-policy\u002F2.wp-01-to-wp-15-matrix",{"title":61,"path":62,"stem":63},"3.3 Two-Tier Organization Governance Lattice","\u002Fworkflow-policy\u002Forg-policy-floor","03.workflow-policy\u002F3.org-policy-floor",{"title":65,"path":66,"stem":67},"3.4 Trusted Handoff Hooks & Independent Verification","\u002Fworkflow-policy\u002Fhandoff-hooks-h1-to-h5","03.workflow-policy\u002F4.handoff-hooks-h1-to-h5",{"title":69,"path":70,"stem":71,"children":72,"page":25},"4. Visual Geometry & Copy Gates","\u002Fvisual-and-copy-tribunals","04.visual-and-copy-tribunals",[73,77,81,85],{"title":74,"path":75,"stem":76},"12-Tuple DOM Geometry (176\u002F176)","\u002Fvisual-and-copy-tribunals\u002Fui-gate-geometry","04.visual-and-copy-tribunals\u002F1.ui-gate-geometry",{"title":78,"path":79,"stem":80},"Vision-3 Geometry & Auto-Patch","\u002Fvisual-and-copy-tribunals\u002Fcross-model-design-tribunal","04.visual-and-copy-tribunals\u002F2.cross-model-design-tribunal",{"title":82,"path":83,"stem":84},"64\u002F64 Declaration Copy Gate","\u002Fvisual-and-copy-tribunals\u002Fdeclaration-copy-gate","04.visual-and-copy-tribunals\u002F3.declaration-copy-gate",{"title":86,"path":87,"stem":88},"Synthetic CI Canary","\u002Fvisual-and-copy-tribunals\u002Fsynthetic-ci-canary","04.visual-and-copy-tribunals\u002F4.synthetic-ci-canary",{"title":90,"path":91,"stem":92,"children":93,"page":25},"5. Autonomous AI Program Manager","\u002Fdelivery-program-manager","05.delivery-program-manager",[94,98,102,106,110],{"title":95,"path":96,"stem":97},"Overview: Dual-Brain AI PM","\u002Fdelivery-program-manager\u002Foverview","05.delivery-program-manager\u002F1.overview",{"title":99,"path":100,"stem":101},"Executable Tickets & Auto-Splitting","\u002Fdelivery-program-manager\u002Fchinwag-tasks-and-never-stop","05.delivery-program-manager\u002F2.chinwag-tasks-and-never-stop",{"title":103,"path":104,"stem":105},".codegraph & FinOps Routing","\u002Fdelivery-program-manager\u002Fcodegraph-and-finops-arbitrage","05.delivery-program-manager\u002F3.codegraph-and-finops-arbitrage",{"title":107,"path":108,"stem":109},"++ Triage & CI Recovery","\u002Fdelivery-program-manager\u002Fplus-plus-ci-triage","05.delivery-program-manager\u002F4.plus-plus-ci-triage",{"title":111,"path":112,"stem":113},"Flight Deck & Trajectory Time-Travel","\u002Fdelivery-program-manager\u002Fflight-deck-and-time-travel","05.delivery-program-manager\u002F5.flight-deck-and-time-travel",{"title":115,"path":116,"stem":117,"children":118,"page":25},"6. The Chinwag Way & Scrimmages","\u002Fthe-chinwag-way","06.the-chinwag-way",[119,123,127,131],{"title":120,"path":121,"stem":122},"Academic Foundations","\u002Fthe-chinwag-way\u002Facademic-foundations","06.the-chinwag-way\u002F1.academic-foundations",{"title":124,"path":125,"stem":126},"Chips (◈) & 7-Day Survival","\u002Fthe-chinwag-way\u002Fchips-and-7day-survival","06.the-chinwag-way\u002F2.chips-and-7day-survival",{"title":128,"path":129,"stem":130},"Sealed Card (.cwcard.png) Drills","\u002Fthe-chinwag-way\u002Fsealed-card-handoff-drills","06.the-chinwag-way\u002F3.sealed-card-handoff-drills",{"title":132,"path":133,"stem":134},"Calibration Scrimmages","\u002Fthe-chinwag-way\u002Fcalibration-scrimmages","06.the-chinwag-way\u002F4.calibration-scrimmages",{"title":136,"path":137,"stem":138,"children":139,"page":25},"7. Zero-Knowledge Cryptography","\u002Fzero-knowledge-cryptography","07.zero-knowledge-cryptography",[140,144,148,152,156,160],{"title":141,"path":142,"stem":143},"PQ-HPKE Wire Envelope","\u002Fzero-knowledge-cryptography\u002Fpq-hpke-envelope","07.zero-knowledge-cryptography\u002F1.pq-hpke-envelope",{"title":145,"path":146,"stem":147},"Verify-Before-Decrypt (K1+K2)","\u002Fzero-knowledge-cryptography\u002Fverify-before-decrypt","07.zero-knowledge-cryptography\u002F2.verify-before-decrypt",{"title":149,"path":150,"stem":151},"Blinded Commitments & 128B Flywheel","\u002Fzero-knowledge-cryptography\u002Fblind-commitments","07.zero-knowledge-cryptography\u002F3.blind-commitments",{"title":153,"path":154,"stem":155},"Local Viewer & CISO DPA","\u002Fzero-knowledge-cryptography\u002Flocal-viewer-and-dpa","07.zero-knowledge-cryptography\u002F4.local-viewer-and-dpa",{"title":157,"path":158,"stem":159},"A.509 Agent Passports","\u002Fzero-knowledge-cryptography\u002Fa509-agent-pkix","07.zero-knowledge-cryptography\u002F5.a509-agent-pkix",{"title":161,"path":162,"stem":163},"chinwag-acu & CISO Kill Switch","\u002Fzero-knowledge-cryptography\u002Fchinwag-acu","07.zero-knowledge-cryptography\u002F6.chinwag-acu",{"title":165,"path":166,"stem":167,"children":168,"page":25},"8. E2EE Mesh & Extension SDK","\u002Fmesh-and-extensions","08.mesh-and-extensions",[169,173,177],{"title":170,"path":171,"stem":172},"chinwag-mesh & 3-Repo Time Machine","\u002Fmesh-and-extensions\u002Fsdk-and-cwcard-png-transport","08.mesh-and-extensions\u002F1.sdk-and-cwcard-png-transport",{"title":174,"path":175,"stem":176},"warroom & whisper Extensions","\u002Fmesh-and-extensions\u002Fwarroom-and-whisper","08.mesh-and-extensions\u002F2.warroom-and-whisper",{"title":178,"path":179,"stem":180},"teleport, shroud & vault","\u002Fmesh-and-extensions\u002Fgit-bundle-and-vault","08.mesh-and-extensions\u002F3.git-bundle-and-vault",{"title":182,"path":183,"stem":184,"children":185,"page":25},"9. CLI & GraphQL Reference","\u002Fcli-and-graphql-reference","09.cli-and-graphql-reference",[186,190,194,198,202,206],{"title":187,"path":188,"stem":189},"chinwag tasks & task","\u002Fcli-and-graphql-reference\u002Fchinwag-task","09.cli-and-graphql-reference\u002F1.chinwag-task",{"title":191,"path":192,"stem":193},"chinwag board & GraphQL","\u002Fcli-and-graphql-reference\u002Fchinwag-board","09.cli-and-graphql-reference\u002F2.chinwag-board",{"title":195,"path":196,"stem":197},"chinwag pair & triad","\u002Fcli-and-graphql-reference\u002Fchinwag-pair-and-triad","09.cli-and-graphql-reference\u002F3.chinwag-pair-and-triad",{"title":199,"path":200,"stem":201},"chinwag bus","\u002Fcli-and-graphql-reference\u002Fchinwag-bus","09.cli-and-graphql-reference\u002F4.chinwag-bus",{"title":203,"path":204,"stem":205},"chinwag-ci, fork-run & ui-gate","\u002Fcli-and-graphql-reference\u002Fchinwag-ci-and-uigate","09.cli-and-graphql-reference\u002F5.chinwag-ci-and-uigate",{"title":207,"path":208,"stem":209},"chinwag memory & tombstone","\u002Fcli-and-graphql-reference\u002Fchinwag-memory","09.cli-and-graphql-reference\u002F6.chinwag-memory",{"title":211,"path":212,"stem":213,"children":214,"page":-1},"10. Architecture PRDs","\u002Fprds","10.prds",[215,218,222,226,230],{"title":216,"path":212,"stem":217},"10.0 Ratified Architecture PRDs","10.prds\u002Findex",{"title":219,"path":220,"stem":221},"10.1 Ephemeral Tart Cleanroom VMs & Declarative Nix","\u002Fprds\u002Ftart-cleanroom-vms","10.prds\u002F1.tart-cleanroom-vms",{"title":223,"path":224,"stem":225},"10.2 Executable Delivery Boards & Proof-of-Green","\u002Fprds\u002Fdelivery-executable-boards","10.prds\u002F2.delivery-executable-boards",{"title":227,"path":228,"stem":229},"10.3 Cursor Agent SDK Importer & Sanitizer","\u002Fprds\u002Fcursor-agent-sdk-importer","10.prds\u002F3.cursor-agent-sdk-importer",{"title":231,"path":232,"stem":233},"10.4 Chinwag Local Web App & Command Center","\u002Fprds\u002Fhuman-command-center-ui","10.prds\u002F4.human-command-center-ui",{"id":235,"title":236,"body":237,"command":250,"description":1376,"extension":1377,"links":1378,"meta":1379,"navigation":1380,"path":162,"seo":1381,"stem":163,"__hash__":1382},"docs\u002F07.zero-knowledge-cryptography\u002F6.chinwag-acu.md","7.6 CISO Access Control Unit & Zero-Plaintext Inboxes",{"type":238,"value":239,"toc":1363},"minimark",[240,244,251,289,292,322,335,338,350,367,377,391,556,558,565,579,676,678,688,712,718,746,748,752,759,796,969,971,975,986,1141,1143,1149,1312,1314,1318,1359],[241,242,236],"h1",{"id":243},"_76-ciso-access-control-unit-zero-plaintext-inboxes",[245,246,247],"p",{},[248,249,250],"code",{},"chinwag-acu policy verify --zero-plaintext",[252,253,254],"blockquote",{},[245,255,256,260,261,264,265,268,269,272,273,276,277,280,281,288],{},[257,258,259],"strong",{},"Your CISO holds the kill switch. Inboxes store zero plaintext at rest. Agent handoffs never decrypt and re-encrypt."," Implemented in ",[248,262,263],{},"crates\u002Fchinwag-acu"," (",[248,266,267],{},"#![forbid(unsafe_code)]",") over ",[248,270,271],{},"BLS12-381"," bilinear pairings (",[248,274,275],{},"e: G1 × G2 → GT","), with dynamic ciphertext-only policy evolution derived from the pairing-based ",[257,278,279],{},"DASTE"," construction (",[282,283,287],"a",{"href":284,"rel":285},"https:\u002F\u002Feprint.iacr.org\u002F2026\u002F1141",[286],"nofollow","IACR ePrint 2026\u002F1141",").",[245,290,291],{},"When autonomous coding, review, and QA agents coordinate across a shared Git repository, enterprise CISOs require three hard cryptographic guarantees:",[293,294,295,306,312],"ol",{},[296,297,298,301,302,305],"li",{},[257,299,300],{},"Customer Key Custody & Instant Revocation:"," Chinwag Cloud must never hold decryption keys, and the CISO must be able to cut off a compromised laptop or rogue agent in ",[257,303,304],{},"0 ms",", even for encrypted payloads already sitting on the bus or workstation.",[296,307,308,311],{},[257,309,310],{},"Zero Plaintext At Rest in Inboxes + CISO-Gated Forensic Archive:"," No agent or human inbox may store decrypted messages at rest on disk, yet the CISO must retain the ability to authorize forensic decryption of historical agent messages during an incident or compliance audit, even after an agent's key has been revoked and wiped.",[296,313,314,317,318,321],{},[257,315,316],{},"Zero-Re-Encryption Multi-Agent Handoffs:"," When an agent fails at Step 11 and warm-forks (",[248,319,320],{},"chinwag fork-run",") to a second agent, granting the new agent access to the encrypted state must not require decrypting and re-encrypting the payload.",[245,323,324,264,329,331,332,334],{},[257,325,326],{},[248,327,328],{},"chinwag-acu",[248,330,263],{},") delivers all three guarantees in a single ",[248,333,271],{}," pairing envelope.",[336,337],"hr",{},[339,340,342,343,346,347],"h2",{"id":341},"_1-the-canonical-2-of-3-policy-acu-and-coding-agent-or-archive-unit","1. The Canonical ",[248,344,345],{},"2-of-3"," Policy: ",[248,348,349],{},"ACU AND (Coding Agent OR Archive Unit)",[245,351,352,353,358,359,366],{},"Instead of encrypting to a single recipient or storing decrypted messages in an agent's local inbox, every CI\u002FCD root-cause payload and every sent\u002Freceived agent or human message is encrypted under a canonical ",[257,354,355,357],{},[248,356,345],{}," Linear Secret Sharing Scheme (LSSS) policy"," anchored on the CISO's ",[257,360,361,362,365],{},"Access Control Unit (",[248,363,364],{},"ACU",")",":",[368,369,375],"pre",{"className":370,"code":372,"language":373,"meta":374},[371],"language-text","Policy = ACU (CISO Fat Client) AND (Recipient (Coding Agent \u002F Human) OR Archive (Message Archive Unit))\n","text","",[248,376,372],{"__ignoreMap":374},[245,378,379,380,386,387,390],{},"Every agent and human automatically CC's the organization's ",[257,381,382,383,365],{},"Message Archive Unit (",[248,384,385],{},"archive:vault"," inside the same ciphertext header (3 LSSS rows over a single encrypted payload ",[248,388,389],{},"C_0","):",[392,393,394,413],"table",{},[395,396,397],"thead",{},[398,399,400,405,410],"tr",{},[401,402,404],"th",{"align":403},"left","Access Path",[401,406,407,408,365],{"align":403},"Participating Seats (",[248,409,345],{},[401,411,412],{"align":403},"Operational Purpose",[414,415,416,462,496],"tbody",{},[398,417,418,424,440],{},[419,420,421],"td",{"align":403},[257,422,423],{},"Live Execution Path",[419,425,426,264,434,430,437,365],{"align":403},[257,427,428,430,431],{},[248,429,364],{}," + ",[248,432,433],{},"Coding Agent",[248,435,436],{},"acu:98939834",[248,438,439],{},"branch:8687872",[419,441,442,443,446,447,450,451,453,454,457,458,461],{"align":403},"The agent wakes, requests a 576-byte partial pairing share ",[248,444,445],{},"D_ACU"," in ",[248,448,449],{},"GT"," from the CISO's ",[248,452,364],{}," over the ",[248,455,456],{},"iroh"," P2P bus, combines ",[248,459,460],{},"D_ACU + D_Agent"," in RAM as its own local combiner, and never writes plaintext to its inbox on disk.",[398,463,464,469,482],{},[419,465,466],{"align":403},[257,467,468],{},"Forensic Archive Path",[419,470,471,264,478,430,480,365],{"align":403},[257,472,473,430,475],{},[248,474,364],{},[248,476,477],{},"Archive Unit",[248,479,436],{},[248,481,385],{},[419,483,484,485,488,489,491,492,495],{"align":403},"The Archive Unit stores every message encrypted at rest and ",[257,486,487],{},"cannot"," decrypt anything on its own. If an investigation requires inspecting historical messages, the CISO authorizes release via the ",[248,490,364],{},", and ",[248,493,494],{},"ACU + Archive Unit"," co-decrypts the message with a permanent entry in the immutable audit log.",[398,497,498,503,518],{},[419,499,500],{"align":403},[257,501,502],{},"Collusion Attempt (Blocked)",[419,504,505,511,512],{"align":403},[257,506,507,430,509],{},[248,508,433],{},[248,510,477],{}," ",[513,514,515,516,365],"em",{},"(without ",[248,517,364],{},[419,519,520,526,527,264,529,532,533,264,535,537,538,541,542,545,546,549,550,552,553,288],{"align":403},[257,521,522,523,288],{},"Mathematically impossible (",[248,524,525],{},"PolicyNotSatisfied"," Because the LSSS rows for ",[248,528,433],{},[248,530,531],{},"[1, 2]",") and ",[248,534,477],{},[248,536,531],{},") share the same right-hand ",[248,539,540],{},"OR"," sub-branch, even an attacker who steals ",[257,543,544],{},"both"," the developer laptop and the Message Archive storage cannot reconstruct ",[248,547,548],{},"(1, 0)"," without the CISO's ",[248,551,364],{}," share (",[248,554,555],{},"[1, 1]",[336,557],{},[339,559,561,562,365],{"id":560},"_2-zero-config-cicd-policy-resolution-via-git-chinwag-configgit","2. Zero-Config CI\u002FCD Policy Resolution via Git (",[248,563,564],{},"chinwag-config.git",[245,566,567,568,571,572,574,575,578],{},"The ",[248,569,570],{},"chinwag"," CI\u002FCD runner never calls an external policy database to figure out who should receive a failed build payload. Your Git repository (",[248,573,564],{},") ",[257,576,577],{},"is"," the policy directory:",[293,580,581,597,647,656],{},[296,582,583,586,587,589,590,593,594,596],{},[257,584,585],{},"Inspect PR \u002F Commit Provenance:"," When a CI build runs on a commit or pull request from ",[248,588,439],{},", the runner extracts the inner Git commit ",[248,591,592],{},"Ed25519"," signature and the outer envelope ",[248,595,592],{}," signature.",[296,598,599,605,606,608,609,491,611,446,613,615,616,618,619,624,625,264,630,446,633,608,636,446,639,642,643,646],{},[257,600,601,602,366],{},"Validate Against ",[248,603,604],{},".chinwag\u002Fallowed_signers"," The runner looks up ",[248,607,439],{},", ",[248,610,436],{},[248,612,385],{},[248,614,604],{}," (mounted from ",[248,617,564],{},"). Each record binds the seat's ",[257,620,621,623],{},[248,622,592],{}," verification key"," alongside its ",[257,626,627,629],{},[248,628,271],{}," pairing public key",[248,631,632],{},"pk1 = g1^sk",[248,634,635],{},"G1",[248,637,638],{},"pk2 = g2^sk",[248,640,641],{},"G2","), verified for bilinear pairing consistency ",[248,644,645],{},"e(pk1, g2) == e(g1, pk2)",".",[296,648,649,652,653,655],{},[257,650,651],{},"Fail Closed Before Encryption:"," If either ",[248,654,592],{}," signature or pairing consistency check fails, the runner aborts immediately.",[296,657,658,664,665,668,669,672,673,646],{},[257,659,660,661,663],{},"Auto-Synthesize the ",[248,662,345],{}," Ciphertext:"," When 20 CI shards fail, the runner collapses them into one root-cause payload, encrypts it via ",[248,666,667],{},"acu_encrypt"," under ",[248,670,671],{},"acu:98939834 AND (branch:8687872 OR archive:vault)",", and writes the single encrypted envelope to ",[248,674,675],{},"chinwag-bus.git",[336,677],{},[339,679,681,682,684,685,687],{"id":680},"_3-ciso-fat-client-chinwag-desktop-over-the-iroh-p2p-bus","3. CISO Fat Client (",[248,683,570],{}," Desktop) Over the ",[248,686,456],{}," P2P Bus",[245,689,690,691,694,695,703,704,366],{},"Chinwag Cloud never holds the ACU private key (",[248,692,693],{},"sk_ACU","). Instead, the CISO runs the ",[257,696,697,699,700,702],{},[248,698,364],{}," inside their own ",[248,701,570],{}," fat client"," (the native desktop app or an on-prem security node) connected to the fleet over Chinwag's outbound-only ",[257,705,706,708,709,365],{},[248,707,456],{}," QUIC P2P mesh (",[248,710,711],{},"chinwag-mesh",[368,713,716],{"className":714,"code":715,"language":373,"meta":374},[371],"┌────────────────────────────────────────────────────────────────────────────┐\n│ 1. CI Runner encrypts failed build under: ACU ∧ (Agent_8687872 ∨ Archive)  │\n└─────────────────────────────────────┬──────────────────────────────────────┘\n                                      │ Outbound :443 (chinwag-bus.git)\n                                      ▼\n┌────────────────────────────────────────────────────────────────────────────┐\n│ 2. Agent_8687872 wakes locally -> dials CISO Fat Client over iroh P2P mesh │\n│    Sends signed AcuShareRequest (Row_ACU only; C_0 & payload stay local!)  │\n└─────────────────────────────────────┬──────────────────────────────────────┘\n                                      │ iroh QUIC Stream (ALPN: \u002Fchinwag\u002Facu\u002F1)\n                                      ▼\n┌────────────────────────────────────────────────────────────────────────────┐\n│ 3. CISO Fat Client (acu:98939834)                                          │\n│    • Verifies Agent_8687872 Ed25519 signature & live revocation status     │\n│    • Appends hash-chained AuditLogEntry to Immutable CISO Audit Log        │\n│    • Computes D_ACU = e(C_{ACU,1}, g2) · e(g1, C_{ACU,2})^(-sk_ACU) in GT  │\n│    • Streams 576-byte signed AcuShareResponse back to Agent_8687872        │\n└─────────────────────────────────────┬──────────────────────────────────────┘\n                                      │\n                                      ▼\n┌────────────────────────────────────────────────────────────────────────────┐\n│ 4. Agent_8687872 acts as its own Local Combiner in RAM:                    │\n│    • Verifies D_ACU via acu_verify_partial_share                           │\n│    • Computes own half D_Agent = acu_partial_decrypt(Row_Agent, sk_Agent)  │\n│    • Calls acu_combine(ct, &[D_ACU, D_Agent]) -> unblinds C_0 in RAM!      │\n└────────────────────────────────────────────────────────────────────────────┘\n",[248,717,715],{"__ignoreMap":374},[719,720,721,734],"ul",{},[296,722,723,726,727,730,731,733],{},[257,724,725],{},"Zero Plaintext Exposure to the ACU:"," The CISO's ACU only ever receives its own LSSS row ",[248,728,729],{},"(C_{ACU,1}, C_{ACU,2})",", never ",[248,732,389],{}," or the encrypted CI payload.",[296,735,736,739,740,742,743,745],{},[257,737,738],{},"0 ms Instant Revocation:"," The moment the CISO revokes ",[248,741,439],{}," in the fat client, the ACU refuses to emit ",[248,744,445],{},", rendering every encrypted message or checkpoint held by that agent mathematically undecryptable.",[336,747],{},[339,749,751],{"id":750},"_4-ciphertext-only-dynamic-policy-evolution-derived-from-daste","4. Ciphertext-Only Dynamic Policy Evolution (Derived from DASTE)",[245,753,754,755,758],{},"In standard threshold or attribute-based encryption, changing who can decrypt an existing ciphertext requires somebody holding the secret key to ",[257,756,757],{},"decrypt the payload and re-encrypt it",". In an ephemeral CI\u002FCD and multi-agent pipeline, the CI runner that originally encrypted the failure is already gone, and the relay is untrusted.",[245,760,761,763,764,766,767,770,771,774,775,777,778,781,782,784,785,608,788,790,791,366],{},[248,762,328],{}," adapts the dynamic policy evolution mechanics of the pairing-based ",[257,765,279],{}," scheme (",[513,768,769],{},"Decentralized Ad-Hoc Access-Structured Threshold Encryption with Dynamic Policy Evolution",", Pradhan & Dutta, ICICS 2026, ",[282,772,287],{"href":284,"rel":773},[286],") to ",[248,776,271],{},". Because the LSSS secret shares ",[248,779,780],{},"lambda_j = \u003CM_j, v>"," sit in the exact prime-order exponent of ",[248,783,635],{}," alongside public basis commitments ",[248,786,787],{},"V_m = g1^(v_m)",[248,789,328],{}," updates access policies ",[257,792,793,794],{},"directly on the ciphertext header without ever decrypting ",[248,795,389],{},[392,797,798,814],{},[395,799,800],{},[398,801,802,805,811],{},[401,803,804],{"align":403},"Policy Evolution Operation",[401,806,807,810],{"align":403},[248,808,809],{},"chinwag_acu"," Rust Function",[401,812,813],{"align":403},"What It Does on the Ciphertext Header",[414,815,816,867,915],{},[398,817,818,830,835],{},[419,819,820],{"align":403},[257,821,822,823,826,827,365],{},"1. Zero-Decryption Agent Handoff (",[248,824,825],{},"insert_key"," \u002F ",[248,828,829],{},"insert_sibling_key",[419,831,832],{"align":403},[248,833,834],{},"insert_sibling_key(&mut ct, \"branch:8687872\", &pk_agent2, rng)",[419,836,837,838,841,842,774,844,264,847,850,851,446,854,856,857,859,860,863,864,646],{"align":403},"When ",[248,839,840],{},"Agent 1"," hands off or warm-forks at Step 11 (",[248,843,320],{},[248,845,846],{},"Agent 2",[248,848,849],{},"branch:77441122","), computes ",[248,852,853],{},"g1^(lambda_new) = Sum_m V_m * M_{new,m}",[248,855,635],{}," and appends a new row for ",[248,858,846],{},". Policy becomes ",[248,861,862],{},"ACU AND (Agent 1 OR Agent 2 OR Archive)"," with ",[257,865,866],{},"zero decryption or re-encryption",[398,868,869,877,882],{},[419,870,871],{"align":403},[257,872,873,874,365],{},"2. In-Place Threshold Escalation (",[248,875,876],{},"escalate_threshold",[419,878,879],{"align":403},[248,880,881],{},"escalate_threshold(&mut ct, &rows, &dir, delta_t, rng)",[419,883,884,885,888,889,863,892,895,896,899,900,903,904,907,908,264,911,914],{"align":403},"When a task touches a high-security file scope (",[248,886,887],{},"crates\u002Fchinwag-crypto\u002F**","), extends ",[248,890,891],{},"basis_commitments",[248,893,894],{},"delta_t"," fresh column commitments ",[248,897,898],{},"g1^(u_m)"," and shifts affected rows by Vandermonde powers ",[248,901,902],{},"x_j^m * u_m",", escalating a ",[248,905,906],{},"2-of-2"," gate to ",[248,909,910],{},"3-of-3",[248,912,913],{},"ACU + Agent + Human Architect",") in place.",[398,916,917,925,930],{},[419,918,919],{"align":403},[257,920,921,922,365],{},"3. Subtree Revocation + Ciphertext Rerandomization (",[248,923,924],{},"revoke_and_rerandomize",[419,926,927],{"align":403},[248,928,929],{},"revoke_and_rerandomize(&mut ct, &[\"branch:8687872\"], &dir, rng)",[419,931,932,933,935,936,939,940,943,944,947,948,950,951,954,955,958,959,962,963,968],{"align":403},"Prunes all LSSS rows for ",[248,934,439],{},", samples a fresh blinding vector ",[248,937,938],{},"delta_v = (delta_s, ...)",", rotates ",[248,941,942],{},"C_0 += e(g1 * delta_s, g2)",", updates ",[248,945,946],{},"V_m"," and surviving rows (",[248,949,364],{}," and ",[248,952,953],{},"Archive","), and increments ",[248,956,957],{},"policy_epoch",". Any partial share ",[248,960,961],{},"D_old"," cached by the revoked agent at epoch 1 is now algebraically useless, while ",[257,964,965],{},[248,966,967],{},"ACU + Archive"," can still decrypt at epoch 2 for forensic investigations.",[336,970],{},[339,972,974],{"id":973},"_5-what-stores-the-encrypted-message-archive-duckdb-over-cloudflare-r2-s3-compatible-parquet","5. What Stores the Encrypted Message Archive? (DuckDB Over Cloudflare R2 S3-Compatible Parquet)",[245,976,977,978,980,981,366],{},"You never have to stand up or manage MongoDB, Postgres, or a 24\u002F7 database cluster for the Message Archive Unit (",[248,979,385],{},"). Chinwag uses ",[257,982,983,984,702],{},"append-only Parquet files on Cloudflare R2 (via R2's S3-compatible API with $0 egress fees) queried by DuckDB embedded inside the CISO's ",[248,985,570],{},[392,987,988,1001],{},[395,989,990],{},[398,991,992,995,998],{},[401,993,994],{"align":403},"Component",[401,996,997],{"align":403},"Technology",[401,999,1000],{"align":403},"How It Works",[414,1002,1003,1057,1105],{},[398,1004,1005,1010,1020],{},[419,1006,1007],{"align":403},[257,1008,1009],{},"1. Encrypted Archive Storage",[419,1011,1012,1015,1016,1019],{"align":403},[257,1013,1014],{},"Cloudflare R2 Parquet Files"," (S3 API ",[248,1017,1018],{},"\u003Caccount_id>.r2.cloudflarestorage.com"," + WORM Object Lock)",[419,1021,1022,1023,264,1026,608,1029,608,1032,608,1035,608,1038,608,1041,608,1043,1046,1047,264,1050,1053,1054,288],{"align":403},"Every archived message is written as a Parquet row with ",[257,1024,1025],{},"cleartext routing columns",[248,1027,1028],{},"timestamp_utc",[248,1030,1031],{},"sender_seat",[248,1033,1034],{},"recipient_seat",[248,1036,1037],{},"task_id",[248,1039,1040],{},"room",[248,1042,957],{},[248,1044,1045],{},"ed25519_sig",") and an ",[257,1048,1049],{},"encrypted payload column",[248,1051,1052],{},"acu_ciphertext",", encrypted under ",[248,1055,1056],{},"ACU AND (Agent OR Archive)",[398,1058,1059,1064,1081],{},[419,1060,1061],{"align":403},[257,1062,1063],{},"2. Serverless Investigation Query Engine",[419,1065,1066],{"align":403},[257,1067,1068,1069,264,1072,608,1075,608,1078,365],{},"Embedded ",[248,1070,1071],{},"DuckDB",[248,1073,1074],{},"httpfs",[248,1076,1077],{},"threads=2",[248,1079,1080],{},"memory_limit='1GB'",[419,1082,1083,1084,264,1087,1090,1091,1094,1095,264,1098,1101,1102,1104],{"align":403},"Runs off the main GUI thread via ",[248,1085,1086],{},"tokio::task::spawn_blocking",[248,1088,1089],{},"Arc\u003CMutex\u003CConnection>>","). Queries ",[248,1092,1093],{},"read_parquet('s3:\u002F\u002F...\u002Farchive.parquet', hive_partitioning = true)"," over R2 HTTPS Range requests and populates an in-RAM ",[248,1096,1097],{},"TEMP TABLE active_channel_cache",[248,1099,1100],{},"50"," messages per active room) so flipping between channels takes ",[248,1103,304],{}," and only scrolling past cached history fetches older chunks from R2.",[398,1106,1107,1112,1122],{},[419,1108,1109],{"align":403},[257,1110,1111],{},"3. In-RAM Forensic Decryption",[419,1113,1114],{"align":403},[257,1115,1116,264,1119,365],{},[248,1117,1118],{},"acu_combine",[248,1120,1121],{},"sk_ACU + sk_Archive",[419,1123,1124,1125,511,1127,1130,1131,1133,1134,1136,1137,1140],{"align":403},"Only the matching ",[248,1126,1052],{},[248,1128,1129],{},"BLOB"," rows returned by DuckDB are verified via ",[248,1132,1045],{},", combined with the CISO's ",[248,1135,364],{}," share, and decrypted in RAM inside the fat client, logging ",[248,1138,1139],{},"GrantedArchiveInvestigation"," to the immutable audit log.",[336,1142],{},[339,1144,1146,1147,365],{"id":1145},"_6-rust-api-reference-crateschinwag-acu","6. Rust API Reference (",[248,1148,263],{},[368,1150,1154],{"className":1151,"code":1152,"language":1153,"meta":374,"style":374},"language-rust shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","use chinwag_acu::{\n    acu_combine, acu_encrypt, acu_partial_decrypt, acu_verify_partial_share,\n    insert_sibling_key, revoke_and_rerandomize, AcuCiphertext, AcuError,\n    AccessTree, EncryptedCiPayload, LsssMatrix, SeatSecretKey,\n};\n\n\u002F\u002F 1. Canonical 2-of-3 Policy: ACU AND (Coding Agent OR Message Archive)\nlet tree = EncryptedCiPayload::build_acu_recipient_or_archive_policy(\n    \"acu:98939834\",\n    \"branch:8687872\",\n    \"archive:vault\",\n);\nlet lsss = LsssMatrix::from_tree(&tree)?;\n\n\u002F\u002F 2. Core Pairing Operations (BLS12-381)\nlet ct: AcuCiphertext = acu_encrypt(&session_key_gt, &lsss, &directory, &mut rng)?;\nlet share_acu = acu_partial_decrypt(&ct.rows[0], &sk_acu)?;\nassert!(acu_verify_partial_share(&ct.rows[0], &pk_acu, &share_acu)?);\nlet share_agent = acu_partial_decrypt(&ct.rows[1], &sk_agent1)?;\nlet recovered_gt = acu_combine(&ct, &[share_acu, share_agent])?;\n\n\u002F\u002F 3. Zero-Decryption Handoff to Agent 2 (branch:77441122)\ninsert_sibling_key(&mut ct, \"branch:8687872\", &pk_agent2, &mut rng)?;\n\n\u002F\u002F 4. Revoke Agent 1 & Rerandomize Ciphertext (Archive + ACU remains decryptable!)\nrevoke_and_rerandomize(&mut ct, &[\"branch:8687872\"], &directory, &mut rng)?;\n","rust",[248,1155,1156,1164,1170,1176,1182,1188,1195,1201,1207,1213,1219,1225,1231,1237,1242,1248,1254,1260,1266,1272,1278,1283,1289,1295,1300,1306],{"__ignoreMap":374},[1157,1158,1161],"span",{"class":1159,"line":1160},"line",1,[1157,1162,1163],{},"use chinwag_acu::{\n",[1157,1165,1167],{"class":1159,"line":1166},2,[1157,1168,1169],{},"    acu_combine, acu_encrypt, acu_partial_decrypt, acu_verify_partial_share,\n",[1157,1171,1173],{"class":1159,"line":1172},3,[1157,1174,1175],{},"    insert_sibling_key, revoke_and_rerandomize, AcuCiphertext, AcuError,\n",[1157,1177,1179],{"class":1159,"line":1178},4,[1157,1180,1181],{},"    AccessTree, EncryptedCiPayload, LsssMatrix, SeatSecretKey,\n",[1157,1183,1185],{"class":1159,"line":1184},5,[1157,1186,1187],{},"};\n",[1157,1189,1191],{"class":1159,"line":1190},6,[1157,1192,1194],{"emptyLinePlaceholder":1193},true,"\n",[1157,1196,1198],{"class":1159,"line":1197},7,[1157,1199,1200],{},"\u002F\u002F 1. Canonical 2-of-3 Policy: ACU AND (Coding Agent OR Message Archive)\n",[1157,1202,1204],{"class":1159,"line":1203},8,[1157,1205,1206],{},"let tree = EncryptedCiPayload::build_acu_recipient_or_archive_policy(\n",[1157,1208,1210],{"class":1159,"line":1209},9,[1157,1211,1212],{},"    \"acu:98939834\",\n",[1157,1214,1216],{"class":1159,"line":1215},10,[1157,1217,1218],{},"    \"branch:8687872\",\n",[1157,1220,1222],{"class":1159,"line":1221},11,[1157,1223,1224],{},"    \"archive:vault\",\n",[1157,1226,1228],{"class":1159,"line":1227},12,[1157,1229,1230],{},");\n",[1157,1232,1234],{"class":1159,"line":1233},13,[1157,1235,1236],{},"let lsss = LsssMatrix::from_tree(&tree)?;\n",[1157,1238,1240],{"class":1159,"line":1239},14,[1157,1241,1194],{"emptyLinePlaceholder":1193},[1157,1243,1245],{"class":1159,"line":1244},15,[1157,1246,1247],{},"\u002F\u002F 2. Core Pairing Operations (BLS12-381)\n",[1157,1249,1251],{"class":1159,"line":1250},16,[1157,1252,1253],{},"let ct: AcuCiphertext = acu_encrypt(&session_key_gt, &lsss, &directory, &mut rng)?;\n",[1157,1255,1257],{"class":1159,"line":1256},17,[1157,1258,1259],{},"let share_acu = acu_partial_decrypt(&ct.rows[0], &sk_acu)?;\n",[1157,1261,1263],{"class":1159,"line":1262},18,[1157,1264,1265],{},"assert!(acu_verify_partial_share(&ct.rows[0], &pk_acu, &share_acu)?);\n",[1157,1267,1269],{"class":1159,"line":1268},19,[1157,1270,1271],{},"let share_agent = acu_partial_decrypt(&ct.rows[1], &sk_agent1)?;\n",[1157,1273,1275],{"class":1159,"line":1274},20,[1157,1276,1277],{},"let recovered_gt = acu_combine(&ct, &[share_acu, share_agent])?;\n",[1157,1279,1281],{"class":1159,"line":1280},21,[1157,1282,1194],{"emptyLinePlaceholder":1193},[1157,1284,1286],{"class":1159,"line":1285},22,[1157,1287,1288],{},"\u002F\u002F 3. Zero-Decryption Handoff to Agent 2 (branch:77441122)\n",[1157,1290,1292],{"class":1159,"line":1291},23,[1157,1293,1294],{},"insert_sibling_key(&mut ct, \"branch:8687872\", &pk_agent2, &mut rng)?;\n",[1157,1296,1298],{"class":1159,"line":1297},24,[1157,1299,1194],{"emptyLinePlaceholder":1193},[1157,1301,1303],{"class":1159,"line":1302},25,[1157,1304,1305],{},"\u002F\u002F 4. Revoke Agent 1 & Rerandomize Ciphertext (Archive + ACU remains decryptable!)\n",[1157,1307,1309],{"class":1159,"line":1308},26,[1157,1310,1311],{},"revoke_and_rerandomize(&mut ct, &[\"branch:8687872\"], &directory, &mut rng)?;\n",[336,1313],{},[339,1315,1317],{"id":1316},"next-section-zero-tailscale-e2ee-mesh-open-extension-sdk","Next Section: Zero-Tailscale E2EE Mesh & Open Extension SDK",[719,1319,1320,1334,1349],{},[296,1321,1322,511,1325],{},[257,1323,1324],{},"Previous:",[282,1326,1327,1330,1331,365],{"href":158},[248,1328,1329],{},"A.509"," Sovereign Agent PKIX Passports (",[248,1332,1333],{},"draft-spector-a509-agent-pkix-00",[296,1335,1336,511,1339],{},[257,1337,1338],{},"Next:",[282,1340,1341,1342,1344,1345,1348],{"href":171},"Zero-Tailscale ",[248,1343,456],{}," + Cloudflare E2EE Mesh & ",[248,1346,1347],{},"chinwag ext"," SDK",[296,1350,1351,511,1354],{},[257,1352,1353],{},"Ready for CISO-grade cryptographic agent control?",[282,1355,1358],{"href":1356,"rel":1357},"https:\u002F\u002Fchinwag.sh\u002Fpricing",[286],"Reserve Your Organization Credit Pack →",[1360,1361,1362],"style",{},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":374,"searchDepth":1166,"depth":1166,"links":1364},[1365,1367,1369,1371,1372,1373,1375],{"id":341,"depth":1166,"text":1366},"1. The Canonical 2-of-3 Policy: ACU AND (Coding Agent OR Archive Unit)",{"id":560,"depth":1166,"text":1368},"2. Zero-Config CI\u002FCD Policy Resolution via Git (chinwag-config.git)",{"id":680,"depth":1166,"text":1370},"3. CISO Fat Client (chinwag Desktop) Over the iroh P2P Bus",{"id":750,"depth":1166,"text":751},{"id":973,"depth":1166,"text":974},{"id":1145,"depth":1166,"text":1374},"6. Rust API Reference (crates\u002Fchinwag-acu)",{"id":1316,"depth":1166,"text":1317},"Technical specification of crates\u002Fchinwag-acu: BLS12-381 pairing-based split-key encryption, CISO fat-client instant revocation over iroh, zero-plaintext-at-rest inboxes with CISO-gated forensic message archiving over S3\u002FR2 Parquet + DuckDB, and zero-re-encryption agent handoffs derived from DASTE (ePrint 2026\u002F1141).","md",null,{},{"title":161},{"title":236,"description":1376},"e05B1BqMYcULa-pnfYRvAWjUVm3bCphMFW27eznCdsk",[1384,1386],{"title":157,"path":158,"stem":159,"description":1385,"children":-1},"Cryptographic identity, capability scoping, and mandatory conversation instance addressing (\u003CSEAT>#\u003CINSTANCE>) for autonomous AI coding agents.",{"title":170,"path":171,"stem":172,"description":1387,"children":-1},"How chinwag-mesh connects developer workstations and CI runners via closed-room iroh QUIC P2P, K1+K2 Post-Quantum Hybrid E2EE, the 3-Repo Chinwag Cryptographic Time Machine, and enterprise proxy-resilient .cwcard.png visual receipt cards.",1794371826571]