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.
| Page | URL | What it is | What it is not |
|---|---|---|---|
| Challenge | / | Interactive 4A-decomposition test harness — type a transaction, get a structured decomposition | Not a use-case catalogue. Not a list of integration examples. |
| Library | /library | Browsable 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 LLM | Not pre-decomposed. Decompositions are produced on demand. |
| About | /about | Project background: 45-year-conception, one-month-build origin story, claim and community status | No 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.
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.
| Code | What it means (verbatim from the library legend) — and what it implies for calling systems |
|---|---|
| BAND | Floor Accrual always builds + conditional ceiling Accrual activates above threshold. Two parallel Accruals with a threshold relationship. |
| WATERFALL | Multi-tier conditional activation — each tier activates only after prior is satisfied. Ordered Accruals with strict dependency. |
| PARALLEL | Multiple independent Accruals running concurrently, each against a different basis. Accruals share an Arrangement but not a calculation. |
| RESET | Accrual recalculates continuously against a changing oracle — daily, hourly, per event. Continuous-time Accruals. |
| DYN-GOV-REF | Governing reference that changes in value continuously — biological growth, time decay. A reference asset whose value changes without the asset itself moving. |
| APPEND-ONLY | Protocol boundary — resolution requires new transaction with parent reference, not modification. Loomworks' Memory non-erasure rule (R-A28) maps directly to this. |
| COND-ACT | Accrual only begins building when a condition is met. Latent Accrual until activation. |
| COND-DEACT | Accrual stops building (suspends) when a condition is met — may resume. Suspendable Accrual. |
| NON-MONO | Accrual changes direction — builds then reduces, or positive then negative. Reversal-and-rebuild without a discrete reversal event. |
| REVERSE-DIR | Accrual flows opposite to the conventional direction for that instrument. Refund-shape Accruals. |
| EXEC-ORACLE | Accrual value not known until execution — determined at the moment the Action occurs. Late-binding amounts. |
| COMP-CONTINGENT | Competing resolution paths — only one becomes an Action, the other retires. Branch-and-resolve. |
| MULTI-PARTY | Proportional Accruals across multiple parties simultaneously. Distribution-shape. |
| OPEN-REC | Receiving party unknown at Arrangement creation — placeholder used. Late-binding party. |
| AGENT-ID | Agent 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-AUTH | A third party governs transaction terms without being a transfer party. Court, regulator, arbitrator. |
| PARENT-REF | Transaction references a prior transaction — the chain is the resolution mechanism. The append-only correction mechanism. |
| SUNK-COST | Sunk Cost Settlement — new transaction references original; incurred costs are the oracle. |
| GATE-ATT | Attestation gates Accrual activation — remove the Attestation, Accrual does not activate. Attestations as prerequisites. |
| CHAIN-ATT | Attestation chain — each link certifies the next; missing link breaks provenance. The Manuka honey shape; directly applies to Companion-mediated decision chains. |
| MIN-CONFIG | Minimum valid configuration — not all four components present; that is correct. Sparse transactions are valid by design. |
| SCALE-INV | Scale invariance — same grammar structure at £50 or £50 billion. The protocol doesn't pivot by amount. |
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.
Every library entry carries one of three statuses. The site's tooltip definitions, verbatim:
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.
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.
These four entries explicitly model AI/algorithmic agents producing transactions on behalf of principals. This is the closest cluster to Loomworks' structural shape.
| # | Name | Status | Patterns |
|---|---|---|---|
| 232 | AI Agent Autonomous Procurement | Clean | AGENT-ID, EXEC-ORACLE |
| 464 | Autonomous Procurement Below Threshold | Clean | AGENT-ID, EXEC-ORACLE |
| 470 | Smart Contract Code-Triggered Payment | Clean | AGENT-ID, MIN-CONFIG |
| 472 | Emergent Agent Transaction | Clean | AGENT-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.
Two more entries carry AGENT-ID in non-autonomous contexts:
| # | Name | Cluster | Patterns |
|---|---|---|---|
| 319 | Virtual Power Plant | Energy | AGENT-ID, PARALLEL |
| 434 | Lloyd's Broker Placing | Insurance Broking | AGENT-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.
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.
| # | Name | Cluster | Patterns |
|---|---|---|---|
| 27 | Carbon Credit Transaction | Environmental Services | TYPE6-CREATE, CHAIN-ATT |
| 40 | Clinical Trial Milestone | Biotech | COND-ACT, GATE-ATT |
| 42 | Organ Procurement Chain | Healthcare | TYPE7-DESTRUCT, CHAIN-ATT |
| 399 | Nuclear Fuel Fabrication | Nuclear | TYPE3-TRANSFORM, GATE-ATT |
| 459 | Fill and Finish Contract | Life Sciences | DYN-GOV-REF, GATE-ATT |
| 569 | Physical Commodity FOB | Commodities | CHAIN-ATT, TYPE1 |
| 601 | Forest Carbon REDD+ | Forestry | TYPE6-CREATE, CHAIN-ATT |
| 707 | CBDC Cross-Border Corridor | Cross-Border | PARALLEL, CHAIN-ATT |
| 853 | Vaccination Programme Government | Public Health | DIRECTING-AUTH, CHAIN-ATT |
| 890 | Self-Sovereign Identity Credential | Digital Identity | TYPE6-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.
All 15 Flaw entries share APPEND-ONLY. These are the canonical protocol boundaries.
| # | Name | Patterns |
|---|---|---|
| 95 | Retroactive Price Adjustment / True-Up | APPEND-ONLY, SUNK-COST |
| 112 | Novation — Contract Party Replacement | APPEND-ONLY, PARENT-REF |
| 116 | Circular Guarantee | APPEND-ONLY, COMP-CONTINGENT |
| 160 | Carried Interest with Clawback | APPEND-ONLY, NON-MONO |
| 172 | Hospital Charity Care Write-Off | APPEND-ONLY, SUNK-COST |
| 222 | Anti-Dumping Duty Retroactive Assessment | APPEND-ONLY, DIRECTING-AUTH |
| 427 | Viral Content Retroactive Licence | APPEND-ONLY, PARENT-REF |
| 433 | Novation of Design Consultant | APPEND-ONLY, PARENT-REF |
| 454 | CCP Clearing — Novation at Scale | APPEND-ONLY, MULTI-PARTY |
| 538 | Collective Action Clause Restructuring | APPEND-ONLY, DIRECTING-AUTH |
| 622 | Transfer Pricing Oracle Dispute | APPEND-ONLY, ORACLE-DISP |
| 671 | PPP Renegotiation — Mid-Contract | APPEND-ONLY, DIRECTING-AUTH |
| 757 | API Terms of Service Unilateral Change | APPEND-ONLY, PARENT-REF |
| 797 | Fast Fashion Order Cancellation Mid-Production | APPEND-ONLY, SUNK-COST |
| 875 | Voluntary Carbon Standard Revision | APPEND-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.
Worth noting because they push the claim's universality:
| # | Name | Cluster | Patterns |
|---|---|---|---|
| 202 | Mesopotamian Grain Loan 2000 BCE | Historical | SCALE-INV, FORMULA |
| 207 | Dutch Tulip Bulb Forward 1637 | Historical | SCALE-INV, FIXED |
| 919 | Hammurabi Grain Loan 1750 BCE | Universal | SCALE-INV, FORMULA |
| 920 | Roman Collegium Burial Insurance | Universal | SCALE-INV, MIN-CONFIG |
| 922 | East India Company Share | Universal | SCALE-INV, TYPE8 |
| 923 | Future Transaction 2075 Orbital Habitat | Universal | SCALE-INV, FIXED |
| 924 | Negative Price Commodity | Grammar Boundary | REVERSE-DIR, VALUATION-BASED |
| 927 | Transaction with No Asset Pure Commitment | Grammar Boundary | MIN-CONFIG, ANTICIPATION-ONLY |
| 928 | Self-Referencing Party on Both Sides | Grammar Boundary | TYPE3-TRANSFORM, SELF-REF |
| 1001 | The FORAY Protocol Itself | Meta | TYPE6-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.
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:
AGENT-ID pattern + the AGENT IDENTITY RULE) makes the Operator the Arrangement party and the Companion the instrument — exactly the Loomworks architecture.The full Autonomous cluster plus the two agent-mediated entries form the structural family:
| # | Name | Patterns | Why it parallels Loomworks |
|---|---|---|---|
| 232 | AI Agent Autonomous Procurement | AGENT-ID, EXEC-ORACLE | Agent decides at execution time (the Companion classifies and responds at runtime, not at design time) |
| 464 | Autonomous Procurement Below Threshold | AGENT-ID, EXEC-ORACLE | Agent acts within delegated authority (the Companion has bounded mandate) |
| 470 | Smart Contract Code-Triggered Payment | AGENT-ID, MIN-CONFIG | Action without ceremonial Arrangement (a Companion turn produces effect without first issuing a contract) |
| 472 | Emergent Agent Transaction | AGENT-ID, SCALE-INV | The exact pattern match |
| 319 | Virtual Power Plant | AGENT-ID, PARALLEL | Aggregator agent coordinating parallel principal actions |
| 434 | Lloyd's Broker Placing | AGENT-ID, PARALLEL | Human-agent variant of the same principal-instrument pattern |
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.
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.
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."
Section labels reproduced verbatim from the prompt:
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.
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"
}
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.
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.
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.
The challenge site does not document a FORAY anchor-service wire interface. It documents two things:
| Method | Path | Purpose |
|---|---|---|
| GET | / | Serve challenge index HTML |
| GET | /library | Serve library index HTML |
| GET | /about | Serve about HTML |
| POST | /sample | Generate a sample transaction description from a seed (LLM-backed) |
| POST | /decompose | Decompose a transaction description into 4A JSON (LLM-backed) |
| POST | /library/submit | Append a decomposition to the community submissions log |
| POST | /generate | Generate a decomposition for a named library entry (LLM-backed) |
| POST | /bulk-test-start | Internal bulk-validation entry point |
| GET | /health | Liveness check |
The /decompose and /generate endpoints use Claude Sonnet 4 (claude-sonnet-4-20250514).
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.
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.
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.
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.
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 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.
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 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 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.
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.
| Topic | What's missing | Why |
|---|---|---|
| Use cases per system type | Integration patterns by source-system type (ERP, CRM, healthcare, agentic system) with calling shape and data flow | Site is a protocol validator, not an integration showcase. The integration-pattern material lives in the foray-kaspathon adapters. |
| Wire-level FORAY service interface | Endpoints, request/response shapes, auth, error handling | Site does not expose this material. foray-sdk.js referenced by adapters is absent from both this repo and foray-kaspathon. |
| Persistence layer choices in practice | Per-use-case persistence selection, multi-layer examples | Site does not demonstrate anchoring at all. The persistence layer is conceptually described but no use case shows the choice. |
| Concrete attestation chains | Worked attestation JSON for AI-agent transactions | Library 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 case | An exact named knowledge-substrate / Companion / multi-tenant-knowledge-management entry | Not in library. The Autonomous cluster is the closest structural family but is procurement/payment-flavoured, not knowledge-work-flavoured. |
| When-to-FORAY criteria | A list of "anchor this, not that" criteria | The 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. |
For Loomworks substrate review, the three deep-reads compose:
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.