DUNIN7 · LOOMWORKS · RECORD
record.dunin7.com
Status Current
Path foray-reference/foray-challenge-deep-read-v0_1.html
Loomworks · FORAY Reference

FORAY Challenge Site Deep-Read — v0.1

Version: 0.1
Date: 2026-05-24
Source: Local clone at /Users/dunin7/foray-protocol-db/ at commit 5f06eea; cross-checked against the live foraychallenge.dunin7.com (identical content).
Audience: The Operator and Claude.ai. Read this alongside the protocol deep-read.
Read this first — the framing the kickoff missed

The challenge site is not an integration-pattern catalogue. It is the protocol-validation tool — a public test harness where visitors describe a transaction and an LLM decomposes it into 4A to prove the grammar holds. The "use cases" the kickoff anticipated (system-X-integrating-FORAY narratives) do not appear here.

What the material does surface is a library of 1,001 canonical transaction types organised by 22 named decomposition patterns. Those patterns are the closest thing to integration patterns the site offers — they describe how a calling system's transactions decompose into FORAY's 4A grammar. The kickoff's questions about wire interfaces, calling shapes, and sync-vs-async live in the foray-kaspathon repo (the protocol deep-read covered them), not here.

The rest of this document reframes what the site does have, honestly. Where the kickoff's questions cannot be answered from challenge material, that gap is named clearly.

The three pages at foraychallenge.dunin7.com

PageURLWhat it isWhat it is not
Challenge/Interactive 4A-decomposition test harness — type a transaction, get a structured decompositionNot a use-case catalogue. Not a list of integration examples.
Library/libraryBrowsable taxonomy of 1,001 transaction types across 80+ clusters, each tagged with status (Clean / Watch / Flaw) and 2 pattern codes. Click a row → server generates a fresh decomposition via LLMNot pre-decomposed. Decompositions are produced on demand.
About/aboutProject background: 45-year-conception, one-month-build origin story, claim and community statusNo integration material.

To answer the kickoff's "what kind of system is integrating, what data does it construct, what does it send to FORAY" — that material lives in the adapter code (covered in the protocol deep-read), not on this site. The gap is real and treated honestly throughout the rest of this document.


1. The 22 named decomposition patterns — the integration-pattern surrogate

Because the site does not present integration use cases in the kickoff's sense, the structural integration-pattern picture has to come from the Library's pattern-code system. There are 22 named patterns. Each one names a recurring decomposition shape that appears across multiple library entries. Any calling system integrating FORAY must classify its native transactions into one or more of these patterns. The pattern determines how source-system events map into 4A components.

CodeWhat it means (verbatim from the library legend) — and what it implies for calling systems
BANDFloor Accrual always builds + conditional ceiling Accrual activates above threshold. Two parallel Accruals with a threshold relationship.
WATERFALLMulti-tier conditional activation — each tier activates only after prior is satisfied. Ordered Accruals with strict dependency.
PARALLELMultiple independent Accruals running concurrently, each against a different basis. Accruals share an Arrangement but not a calculation.
RESETAccrual recalculates continuously against a changing oracle — daily, hourly, per event. Continuous-time Accruals.
DYN-GOV-REFGoverning reference that changes in value continuously — biological growth, time decay. A reference asset whose value changes without the asset itself moving.
APPEND-ONLYProtocol boundary — resolution requires new transaction with parent reference, not modification. Loomworks' Memory non-erasure rule (R-A28) maps directly to this.
COND-ACTAccrual only begins building when a condition is met. Latent Accrual until activation.
COND-DEACTAccrual stops building (suspends) when a condition is met — may resume. Suspendable Accrual.
NON-MONOAccrual changes direction — builds then reduces, or positive then negative. Reversal-and-rebuild without a discrete reversal event.
REVERSE-DIRAccrual flows opposite to the conventional direction for that instrument. Refund-shape Accruals.
EXEC-ORACLEAccrual value not known until execution — determined at the moment the Action occurs. Late-binding amounts.
COMP-CONTINGENTCompeting resolution paths — only one becomes an Action, the other retires. Branch-and-resolve.
MULTI-PARTYProportional Accruals across multiple parties simultaneously. Distribution-shape.
OPEN-RECReceiving party unknown at Arrangement creation — placeholder used. Late-binding party.
AGENT-IDAgent acts on behalf of principal — principal is always the Arrangement party. The Loomworks-shaped pattern. The Companion is the agent; the Operator is the principal.
DIRECTING-AUTHA third party governs transaction terms without being a transfer party. Court, regulator, arbitrator.
PARENT-REFTransaction references a prior transaction — the chain is the resolution mechanism. The append-only correction mechanism.
SUNK-COSTSunk Cost Settlement — new transaction references original; incurred costs are the oracle.
GATE-ATTAttestation gates Accrual activation — remove the Attestation, Accrual does not activate. Attestations as prerequisites.
CHAIN-ATTAttestation chain — each link certifies the next; missing link breaks provenance. The Manuka honey shape; directly applies to Companion-mediated decision chains.
MIN-CONFIGMinimum valid configuration — not all four components present; that is correct. Sparse transactions are valid by design.
SCALE-INVScale invariance — same grammar structure at £50 or £50 billion. The protocol doesn't pivot by amount.
For a Loomworks integration, the four patterns that matter most

AGENT-ID — every Companion-mediated transaction. The Operator is the Arrangement party; the Companion is the instrument.

CHAIN-ATT — provenance walks through multiple agents. Classifier → responder → committer is a chain.

PARENT-REF — engagement events reference prior engagement events (corrections, supersessions).

APPEND-ONLY — Memory non-erasure (R-A28) is structurally identical to this pattern.

The Clean / Watch / Flaw status taxonomy

Every library entry carries one of three statuses. The site's tooltip definitions, verbatim:

The "Flaw" label is critical and easy to misread

Flaw entries are not protocol failures. They are boundaries — transactions where the resolution mechanism is a parent-referenced new submission, not an in-place modification. Loomworks' Memory non-erasure rule (R-A28) is structurally identical to this boundary mechanism. The "Flaw" tag in the library is the same shape as a fundamental Loomworks design rule.


2. Library entries that matter for Loomworks

The library is 1,001 transactions long. Rendering them all would be noise. The entries that matter for a Loomworks-as-FORAY-system understanding fall into four groups.

Group A — The Autonomous cluster

These four entries explicitly model AI/algorithmic agents producing transactions on behalf of principals. This is the closest cluster to Loomworks' structural shape.

#NameStatusPatterns
232AI Agent Autonomous ProcurementCleanAGENT-ID, EXEC-ORACLE
464Autonomous Procurement Below ThresholdCleanAGENT-ID, EXEC-ORACLE
470Smart Contract Code-Triggered PaymentCleanAGENT-ID, MIN-CONFIG
472Emergent Agent TransactionCleanAGENT-ID, SCALE-INV

The AGENT-ID pattern is the load-bearing one. The decomposition discipline:

From the challenge server's system prompt (foray_challenge_server.py:107) — the canonical guidance the decomposition engine applies to every AI-agent transaction:

AGENT IDENTITY RULE: When an AI agent or human agent acts on behalf of a principal, the principal is always the party in the Arrangement. The agent is the instrument of execution, not the counterparty. Record the agent's role in the rationale. The Action records what the agent did, but the Arrangement parties are always the principals. If the agent exceeds its mandate, the divergence between the Arrangement scope and the Action is structurally visible.

Group B — Agent-mediated transactions outside Autonomous

Two more entries carry AGENT-ID in non-autonomous contexts:

#NameClusterPatterns
319Virtual Power PlantEnergyAGENT-ID, PARALLEL
434Lloyd's Broker PlacingInsurance BrokingAGENT-ID, PARALLEL

The pattern applies anywhere a principal-agent relationship exists — software-driven Virtual Power Plant or human Lloyd's broker alike. The pattern's invariant is structural, not technological.

Group C — Attestation patterns

Loomworks' Memory has provenance built into every assertion (the provenance JSONB column). When provenance walks through multiple agents (Companion classifier → responder → committer), that is structurally CHAIN-ATT.

#NameClusterPatterns
27Carbon Credit TransactionEnvironmental ServicesTYPE6-CREATE, CHAIN-ATT
40Clinical Trial MilestoneBiotechCOND-ACT, GATE-ATT
42Organ Procurement ChainHealthcareTYPE7-DESTRUCT, CHAIN-ATT
399Nuclear Fuel FabricationNuclearTYPE3-TRANSFORM, GATE-ATT
459Fill and Finish ContractLife SciencesDYN-GOV-REF, GATE-ATT
569Physical Commodity FOBCommoditiesCHAIN-ATT, TYPE1
601Forest Carbon REDD+ForestryTYPE6-CREATE, CHAIN-ATT
707CBDC Cross-Border CorridorCross-BorderPARALLEL, CHAIN-ATT
853Vaccination Programme GovernmentPublic HealthDIRECTING-AUTH, CHAIN-ATT
890Self-Sovereign Identity CredentialDigital IdentityTYPE6-CREATE, CHAIN-ATT

The canonical CHAIN-ATT example is the Manuka honey chain (laboratory → certifier → regulator) from the protocol deep-read. The pattern applies directly to a Loomworks-as-FORAY-attester architecture: each Companion turn could be an attestation chained from the prior turn.

Group D — APPEND-ONLY boundary entries (the 15 "Flaw"-tagged)

All 15 Flaw entries share APPEND-ONLY. These are the canonical protocol boundaries.

#NamePatterns
95Retroactive Price Adjustment / True-UpAPPEND-ONLY, SUNK-COST
112Novation — Contract Party ReplacementAPPEND-ONLY, PARENT-REF
116Circular GuaranteeAPPEND-ONLY, COMP-CONTINGENT
160Carried Interest with ClawbackAPPEND-ONLY, NON-MONO
172Hospital Charity Care Write-OffAPPEND-ONLY, SUNK-COST
222Anti-Dumping Duty Retroactive AssessmentAPPEND-ONLY, DIRECTING-AUTH
427Viral Content Retroactive LicenceAPPEND-ONLY, PARENT-REF
433Novation of Design ConsultantAPPEND-ONLY, PARENT-REF
454CCP Clearing — Novation at ScaleAPPEND-ONLY, MULTI-PARTY
538Collective Action Clause RestructuringAPPEND-ONLY, DIRECTING-AUTH
622Transfer Pricing Oracle DisputeAPPEND-ONLY, ORACLE-DISP
671PPP Renegotiation — Mid-ContractAPPEND-ONLY, DIRECTING-AUTH
757API Terms of Service Unilateral ChangeAPPEND-ONLY, PARENT-REF
797Fast Fashion Order Cancellation Mid-ProductionAPPEND-ONLY, SUNK-COST
875Voluntary Carbon Standard RevisionAPPEND-ONLY, TYPE6-CREATE

These cases are directly analogous to Loomworks' R-A28 Memory non-erasure rule. When an engagement-memory event needs to be "corrected," the substrate creates a new event referencing the original — never modifies it. The PARENT-REF pattern is the mechanism.

Group E — Historical and meta entries

Worth noting because they push the claim's universality:

#NameClusterPatterns
202Mesopotamian Grain Loan 2000 BCEHistoricalSCALE-INV, FORMULA
207Dutch Tulip Bulb Forward 1637HistoricalSCALE-INV, FIXED
919Hammurabi Grain Loan 1750 BCEUniversalSCALE-INV, FORMULA
920Roman Collegium Burial InsuranceUniversalSCALE-INV, MIN-CONFIG
922East India Company ShareUniversalSCALE-INV, TYPE8
923Future Transaction 2075 Orbital HabitatUniversalSCALE-INV, FIXED
924Negative Price CommodityGrammar BoundaryREVERSE-DIR, VALUATION-BASED
927Transaction with No Asset Pure CommitmentGrammar BoundaryMIN-CONFIG, ANTICIPATION-ONLY
928Self-Referencing Party on Both SidesGrammar BoundaryTYPE3-TRANSFORM, SELF-REF
1001The FORAY Protocol ItselfMetaTYPE6-CREATE, PARENT-REF

Entry 1001 is the protocol decomposing its own existence — a Type 6 Creation with a parent reference. The library carries the meta-claim that FORAY-the-thing is itself a FORAY-decomposable transaction. A small piece of evidence that the grammar's claim to universality includes itself.


3. The Loomworks-shaped use case

The named match

Library entry #472 — "Emergent Agent Transaction" in the Autonomous cluster, tagged AGENT-ID + SCALE-INV. Library line:

[472,"Emergent Agent Transaction","Autonomous","Clean",["AGENT-ID","SCALE-INV"]]

The kickoff asked for "the use case Loomworks should pattern its FORAY integration after." This is it.

Why this is the match:

The four supporting matches

The full Autonomous cluster plus the two agent-mediated entries form the structural family:

#NamePatternsWhy it parallels Loomworks
232AI Agent Autonomous ProcurementAGENT-ID, EXEC-ORACLEAgent decides at execution time (the Companion classifies and responds at runtime, not at design time)
464Autonomous Procurement Below ThresholdAGENT-ID, EXEC-ORACLEAgent acts within delegated authority (the Companion has bounded mandate)
470Smart Contract Code-Triggered PaymentAGENT-ID, MIN-CONFIGAction without ceremonial Arrangement (a Companion turn produces effect without first issuing a contract)
472Emergent Agent TransactionAGENT-ID, SCALE-INVThe exact pattern match
319Virtual Power PlantAGENT-ID, PARALLELAggregator agent coordinating parallel principal actions
434Lloyd's Broker PlacingAGENT-ID, PARALLELHuman-agent variant of the same principal-instrument pattern

What this means for Loomworks-as-FORAY-system

If Loomworks adds FORAY as an additive audit layer (the Operator's framing), the integration would treat each significant engagement event as one transaction structured like this:

ARRANGEMENT:
  transaction_type: "engagement_companion_session" (or similar)
  parties:
    - {role: "operator", name_hash: <Operator's hashed identity>}
    - (optional) other engagement members
  (the Companion is the instrument, not a party)

ACCRUAL(S):
  - Token consumption (classifier + responder LLM calls)
    type: formula-based
    obligor: Operator
    beneficiary: Anthropic (via dunin7)
    formula: token_count × rate_per_million
  - Credit debit (already implemented in Loomworks' credit substrate as
    credit.foray_action_flows, per the substrate inventory)

ANTICIPATION(S):
  - Optional. For deferred work (drafts in progress, approval cards),
    an Anticipation records that some action is projected.

ACTION(S):
  - The actual write to Memory (assertion_committed, etc.)
    type: state-change (if Memory write only) or transfer (if value moved)
    timestamp: when committed
    description: "Companion-mediated assertion commit"

ATTESTATION(S):
  - The Companion attests what it did (classifier output, routing decision)
  - The Operator attests their approval (WebAuthn signature at commit)
  - Chain: Operator-WebAuthn → Companion-classifier → Companion-responder → Action

This is the CHAIN-ATT pattern wrapped around an AGENT-ID core. The protocol deep-read found that the Schema Reference (§3.1) names "AI agent observability connects to business transaction accountability" as a canonical attestation use case — this is what that means structurally.

Honest qualification

No exact "knowledge management" or "AI assistant mediating between users and a substrate" use case appears in the library. The Autonomous cluster is the closest structural parallel — but its entries are procurement, payment, and coordination examples, not knowledge work. The match is at the level of pattern (AGENT-ID + SCALE-INV), not at the level of named transaction type.

If the Operator wants a closer use-case match, they could submit a "Knowledge Substrate Companion Session" entry to the library — exactly the kind of community submission the about page invites ("0 community submissions" today). A Loomworks-shaped library entry doesn't exist because no one has submitted it yet.


4. The FORAY_SYSTEM_PROMPT — the de facto style guide

The most operationally substantive artifact on the site is not a use case or a UI feature. It is the FORAY_SYSTEM_PROMPT in foray_challenge_server.py:29-220 — roughly 100 lines of decomposition discipline. This prompt is the de facto FORAY style guide. The schema defines field shapes; the prompt defines field semantics under ambiguous real-world conditions.

The prompt has 33 named sections, each one paragraph of guidance. Reading the full prompt is reading the de facto style guide for FORAY decomposition. The challenge tool is the SDK in operation — Claude + prompt = "the FORAY decomposition engine."

The 33 named sections

Section labels reproduced verbatim from the prompt:

For a Loomworks-side FORAY adapter

A Loomworks adapter that wanted to produce 4A structures from engagement events would benefit from constructing its prompt around this same 33-section discipline — or at minimum the subset relevant to AI-agent transactions: AGENT IDENTITY RULE, NATURAL LANGUAGE RULE, ASSET TYPE VS QUANTITY SEPARATION, APPEND-ONLY IN RESTRUCTURING, COMPONENT PRESENCE.


5. The FORAY-specific information pattern — what gets sent

The challenge site demonstrates the construction half of the integration, not the submission half. The user types natural-language English. The /decompose endpoint hands the text to Claude with the FORAY_SYSTEM_PROMPT and returns a fully-structured 4A decomposition as JSON.

The structure returned (per server.py:135-220) is the FORAY-specific information. Reproduced verbatim from the server's expected response shape:

{
  "transaction_type": "Brief name for this transaction type",
  "summary": "One sentence description",
  "components_present": ["arrangement", "accruals", "anticipations", "actions"],
  "arrangement": {
    "transaction_type": "controlled vocabulary type",
    "parties": ["Party A description", "Party B description"],
    "rationale": "Why this Arrangement is or is not present"
  },
  "accruals": {
    "items": [
      {
        "accrual_id": "AC-001",
        "type": "fixed | formula-based | valuation-based",
        "obligor": "who owes",
        "beneficiary": "who receives",
        "amount": 0.00,            // fixed
        "formula": "...",          // formula-based
        "inputs": { ... },         // formula-based
        "oracle": "...",           // valuation-based
        "observation_point": "...",
        "governing_reference": "...",
        "description": "...",
        "spawns_arrangement": false
      }
    ],
    "rationale": "..."
  },
  "anticipations": {
    "items": [
      {
        "anticipation_id": "AN-001",
        "type": "projection | awareness | contingent",
        "from_party": "...",
        "to_party": "...",
        "asset_type": "asset class only — USD, equity, commodity, right, data",
        "quantity": 0.00,
        "accrual_ref": "AC-001 if quantity derives from an Accrual",
        "expected_date": "ISO 8601 or descriptive timing",
        "description": "..."
      }
    ],
    "rationale": "..."
  },
  "actions": {
    "items": [
      {
        "type": "transfer | state-change",
        "from_party": "...",
        "to_party": "...",
        "asset_type": "...",
        "quantity": 0.00,
        "accrual_ref": "AC-001 if quantity derives from an Accrual",
        "anticipation_ref": "AN-001 if this Action resolves an Anticipation",
        "timestamp": "ISO 8601 or 'at execution'",
        "description": "..."
      }
    ],
    "rationale": "..."
  },
  "fits_grammar": true | false,
  "fit_assessment": "Assessment text",
  "structural_insight": "2-3 sentences explaining the key structural decision in this decomposition",
  "challenge_worthy": true | false,
  "challenge_note": "If this transaction reveals a potential limitation, describe it"
}

Who builds it

The challenge site's answer to "who builds the FORAY-specific structure" is an AI agent (Claude Sonnet 4) acting on behalf of the calling system, instructed by the long system prompt described above.

Where the boundary sits

The boundary is the LLM call. The site demonstrates a posture: the calling system does not need to know FORAY's internal grammar in advance. It sends a description; the decomposition engine produces the 4A structure. A more rigorous integration would have the calling system construct the 4A structure directly (the way the quickbooks-adapter.js does — protocol deep-read §5), but the challenge tool shows a fallback path.

Required vs optional source information

The decomposition prompt requires at least the textual description. That's it. Everything else — parties, dates, amounts, formulas — is extracted from the description by the LLM. If a field is genuinely unknown ("Open Recipient", "Unknown Counterparty"), the prompt instructs the engine to use a placeholder rather than hallucinate.


6. The FORAY service interface — what the site does and doesn't show

The challenge site does not document a FORAY anchor-service wire interface. It documents two things:

  1. The challenge server's own API — three endpoints for the challenge/library UX. These are not the FORAY protocol's service interface; they are the demo app's interface.
  2. The submission envelope shape (in SCHEMA.md) — the canonical FORAY submission contract. Already covered in the protocol deep-read §5.

The challenge server's endpoints (for reference, not for integration)

MethodPathPurpose
GET/Serve challenge index HTML
GET/libraryServe library index HTML
GET/aboutServe about HTML
POST/sampleGenerate a sample transaction description from a seed (LLM-backed)
POST/decomposeDecompose a transaction description into 4A JSON (LLM-backed)
POST/library/submitAppend a decomposition to the community submissions log
POST/generateGenerate a decomposition for a named library entry (LLM-backed)
POST/bulk-test-startInternal bulk-validation entry point
GET/healthLiveness check

The /decompose and /generate endpoints use Claude Sonnet 4 (claude-sonnet-4-20250514).

What is genuinely undocumented on the site

The kickoff asked for the wire-level interface for anchoring, the SDK shape, sync vs async semantics, and error handling. None of these are documented on the challenge site. The site assumes the protocol is the standard and any compliant implementation suffices — the submission envelope is the contract, the persistence layer is declared by the submitter, and "the FORAY anchor service" as a singular HTTP API does not exist as such.

The closest thing to an SDK is the absent foray-sdk.js referenced by quickbooks-adapter.js (covered in the protocol deep-read §5). Calls to this.sdk.anchorToBlockchain(transaction) exist in adapter code, but the SDK implementation is not in any reviewed repo.

Honest reading

The challenge site reinforces the protocol-level position that FORAY is a standard, not a service. Anchoring happens against whatever persistence layer the submitter declares; the wire interface to that persistence layer (Kaspa, in the reference implementation) is a Kaspa concern, not a FORAY concern.


7. When FORAY adds value, when it doesn't

The challenge site's framing on this question is unambiguous:

"Every business transaction fits four components. Prove us wrong."
"No transaction in any industry, jurisdiction, or era has required a fifth component."
"FORAY is a protocol — a universal grammar, not a service. Like TCP/IP, it defines the standard."

This is the maximalist framing: FORAY claims to decompose every business transaction, period. The site does not say "FORAY is appropriate for some transactions and not others." The stance is universality.

What the site does NOT say

The site does not list criteria for "when to integrate FORAY vs not." The kickoff anticipated such criteria would exist; they don't. RFC-0001 frames the optionality differently:

"Connector implementations. Build a FORAY-compliant connector for any source system. The connector specification defines the submission schema. Any system that can produce a valid FORAY submission is a compliant source. There is no certification required to build."

The framing is: the decision to integrate FORAY is the connector author's decision. Once integrated, every transaction the connector emits is a FORAY transaction. The granular "which of my transactions should I anchor" question is treated as out-of-scope at the protocol level.

Implication for the Loomworks substrate review

The substrate review's question "which Loomworks events should be FORAY-anchored?" is a Loomworks-side decision, not a FORAY-side decision. The challenge material does not provide criteria; it provides a universal grammar that holds for whatever the calling system chooses to anchor.

Concretely: if Loomworks decides to FORAY-anchor every assertion_committed event, the grammar fits. If Loomworks decides to anchor only Operator-WebAuthn-confirmed commits, the grammar fits. If Loomworks decides to anchor only billable Companion turns, the grammar fits. The choice is operational, not protocol-mandated.

The Flaw-tagged entries are protocol boundaries, not "don't use FORAY" advice

The 15 Flaw entries are sometimes mistaken for "use cases where FORAY doesn't work." They are not. The site's own status tooltip is explicit: "A protocol boundary constraint — not a grammar failure." Flaw entries fit the grammar; they just resolve via parent reference rather than modification. This is exactly Loomworks' R-A28 mechanism. No transaction is excluded.


8. Other substantive findings

The community is empty

From the about page:

"The library currently contains 1,000+ in-house validation entries and 0 community submissions."

The protocol claim has been tested only in-house. The library is a single-author taxonomy. This is honestly disclosed. For Loomworks substrate review, it means: when the substrate review treats the FORAY material as canonical, it should treat the underlying validation as "extensive but unilateral" — not as community-stress-tested. The substrate review doesn't need to revise its trust posture, but it should know that the 1,001 transaction types reflect Marvin's mapping discipline, not community consensus.

The /library/submit endpoint auto-captures every decomposition

The server's /library/submit endpoint fires automatically on every successful /decompose call. Source-tagged with chip:X, build_example:X, surprise_me:X, or user_described. The captured submissions are not surfaced anywhere visible on the site — they accumulate in ~/static/library_submissions.json on the Mac Mini for later review and credit assignment.

For Loomworks substrate review: this is the pattern the substrate review's "AI agent observability" framing should follow — every decomposition the system generates is preserved with source tagging, no matter the outcome. The substrate doesn't need to decide upfront which decompositions matter; it preserves everything and curates later.

The pattern-code system is more discoverable than the cluster system

The library has 80+ industry clusters but the pattern-code system (22 patterns) is the more useful taxonomy for cross-cluster comparison. A "Commercial Mortgage" (Real Estate) and a "Whisky Cask Maturation" (Dynamic Value) both carry DYN-GOV-REF — the cluster is different, the structure is the same. For substrate-level reasoning about FORAY, the pattern codes are the right index.

There are exactly 10 documented protocol boundaries

The library stat bar reads "10 — Boundaries". The Flaw-tagged entries number 15, but they share boundaries — multiple entries can hit the same boundary. The 10 boundaries are not enumerated as a list on the site; the boundaries are implicit in the Flaw-tagged rows. The kickoff Topic 6 (boundary edge cases) for the protocol deep-read was answered via Schema Reference §10.3 / §11. The challenge site reinforces the count (10) but does not enumerate them as a standalone list.


9. Things asked for but not found

TopicWhat's missingWhy
Use cases per system typeIntegration patterns by source-system type (ERP, CRM, healthcare, agentic system) with calling shape and data flowSite is a protocol validator, not an integration showcase. The integration-pattern material lives in the foray-kaspathon adapters.
Wire-level FORAY service interfaceEndpoints, request/response shapes, auth, error handlingSite does not expose this material. foray-sdk.js referenced by adapters is absent from both this repo and foray-kaspathon.
Persistence layer choices in practicePer-use-case persistence selection, multi-layer examplesSite does not demonstrate anchoring at all. The persistence layer is conceptually described but no use case shows the choice.
Concrete attestation chainsWorked attestation JSON for AI-agent transactionsLibrary entries are descriptions + status + patterns, not full JSON. To get concrete JSON, the Operator would click a row and the LLM produces fresh output.
Loomworks-shaped use caseAn exact named knowledge-substrate / Companion / multi-tenant-knowledge-management entryNot in library. The Autonomous cluster is the closest structural family but is procurement/payment-flavoured, not knowledge-work-flavoured.
When-to-FORAY criteriaA list of "anchor this, not that" criteriaThe site's stance is that FORAY's grammar applies universally; the decision to integrate is the calling system's decision. There is no per-event "should we anchor" guidance.

Closing — what to read this alongside

For Loomworks substrate review, the three deep-reads compose:

  1. The protocol deep-read — protocol-level: ATT-* rules, audit_data, worked transaction (Manuka), trust model, anchor service, boundary edge cases, framing drift.
  2. This document — integration-pattern-level: the library taxonomy, the 22 pattern codes, the Autonomous cluster as the Loomworks parallel, what the challenge site does and doesn't say.
  3. The substrate inventory — the actual current state of Loomworks' substrate, against which any FORAY integration would be designed.

These three together give the substrate review the grounded picture the Operator has been asking for. The Loomworks-shaped use case — Library entry #472 "Emergent Agent Transaction," in the Autonomous cluster, tagged AGENT-ID + SCALE-INV — is the recommended pattern anchor.