{
  "$comment": "The /get-a-key onboarding flow, published as a derivation contract: one definition (site/src/flow.js), rendered by the worker and hashed here. Every question is a fact about the past (Mom-Test kinds; no hypotheticals, no ratings), every question is skippable, and the final step locks the row. flow_sha256 is over JSON.stringify({entry, nodes}) of this document's \"entry\" and \"nodes\" members; recorded answers carry the same digest.",
  "flow_sha256": "11ae42206501f1e36f6aec93426ff086630276723db2c2ea61d62bf0af3690cc",
  "promise": "Keys are provisioned from this list, in order. One email when yours is ready — one, not a drip campaign; no newsletter, no sequence. If we stop working on this, you get one message saying so and your address is deleted. Either way it is one message.",
  "meetings": "We answer in writing. We take at most five conversations a month, only when you ask for one, and only after you already have the written read.",
  "entry": {
    "integration": "int-q1",
    "agent": "ag-q1",
    "translate": "tr-q1",
    "conformance": "cf-q1",
    "sdk": "sdk-q1",
    "query": "q-q1"
  },
  "nodes": {
    "int-q1": {
      "id": "int-q1",
      "kind": "past_behavior",
      "prompt": "The last time your team needed EPCIS 2.0 conformance, what did you actually do?",
      "type": "choice",
      "options": [
        {
          "value": "built",
          "label": "Built it in-house",
          "next": "int-q2a"
        },
        {
          "value": "bought",
          "label": "Bought a vendor product",
          "next": "int-q2b"
        },
        {
          "value": "deferred",
          "label": "Deferred it",
          "next": "int-q2c"
        },
        {
          "value": "first-time",
          "label": "This is the first time it has come up",
          "next": "int-q3"
        }
      ],
      "skipTo": "int-q3"
    },
    "int-q2a": {
      "id": "int-q2a",
      "kind": "past_behavior",
      "prompt": "What broke first in the in-house build — schema drift, the event hash, the query surface, or something else?",
      "type": "text",
      "next": "int-q3",
      "skipTo": "int-q3"
    },
    "int-q2b": {
      "id": "int-q2b",
      "kind": "actual_spend",
      "prompt": "What did the vendor layer cost last year, and what did renewal look like?",
      "type": "text",
      "next": "int-q3",
      "skipTo": "int-q3"
    },
    "int-q2c": {
      "id": "int-q2c",
      "kind": "existing_commitment",
      "prompt": "Is there a date already on a plan where a repository has to be named? Whose date is it?",
      "type": "text",
      "next": "int-q3",
      "skipTo": "int-q3"
    },
    "int-q3": {
      "id": "int-q3",
      "kind": "ownership",
      "prompt": "Who is the review gate before something like this reaches a line?",
      "type": "choice",
      "options": [
        {
          "value": "security",
          "label": "Security review",
          "next": null
        },
        {
          "value": "architecture",
          "label": "Architecture review",
          "next": null
        },
        {
          "value": "both",
          "label": "Both",
          "next": null
        },
        {
          "value": "neither",
          "label": "Neither — the team decides",
          "next": null
        },
        {
          "value": "not-my-call",
          "label": "Not my call",
          "next": null
        }
      ],
      "skipTo": null
    },
    "tr-q1": {
      "id": "tr-q1",
      "kind": "current_tool",
      "prompt": "Which EPCIS versions are actually in the corpus?",
      "type": "choice",
      "options": [
        {
          "value": "1.1",
          "label": "1.1 XML",
          "next": "tr-q2a"
        },
        {
          "value": "1.2",
          "label": "1.2 XML",
          "next": "tr-q2a"
        },
        {
          "value": "mixed",
          "label": "A mix, across vendors and years",
          "next": "tr-q2a"
        },
        {
          "value": "2.0-xml",
          "label": "2.0 XML only",
          "next": "tr-q2b"
        },
        {
          "value": "unsure",
          "label": "Not sure yet",
          "next": "tr-q2a"
        }
      ],
      "skipTo": "tr-q3"
    },
    "tr-q2a": {
      "id": "tr-q2a",
      "kind": "past_behavior",
      "prompt": "The last time you moved a corpus like this between formats, what got lost — and how did you find out?",
      "type": "text",
      "next": "tr-q3",
      "skipTo": "tr-q3"
    },
    "tr-q2b": {
      "id": "tr-q2b",
      "kind": "current_tool",
      "prompt": "What produces the 2.0 XML today, and what consumes the JSON-LD on the other side?",
      "type": "text",
      "next": "tr-q3",
      "skipTo": "tr-q3"
    },
    "tr-q3": {
      "id": "tr-q3",
      "kind": "ownership",
      "prompt": "Who signs off on adopting an open-source dependency at this layer?",
      "type": "choice",
      "options": [
        {
          "value": "engineering",
          "label": "Engineering alone",
          "next": null
        },
        {
          "value": "security",
          "label": "A security review",
          "next": null
        },
        {
          "value": "architecture",
          "label": "An architecture board",
          "next": null
        },
        {
          "value": "customer-auditor",
          "label": "A customer's auditor",
          "next": null
        },
        {
          "value": "unsure",
          "label": "Not sure",
          "next": null
        }
      ],
      "skipTo": null
    },
    "cf-q1": {
      "id": "cf-q1",
      "kind": "past_behavior",
      "prompt": "When a customer last said “EPCIS 2.0 conformance” to you, what were their actual words?",
      "type": "text",
      "next": "cf-q2",
      "skipTo": "cf-q2"
    },
    "cf-q2": {
      "id": "cf-q2",
      "kind": "past_behavior",
      "prompt": "The last time a customer accepted or rejected a conformance claim of yours — what did they ask to see?",
      "type": "choice",
      "options": [
        {
          "value": "document",
          "label": "A document",
          "next": "cf-q3a"
        },
        {
          "value": "test-run",
          "label": "A test run they could re-run",
          "next": "cf-q3a"
        },
        {
          "value": "third-party",
          "label": "A third party's signature",
          "next": "cf-q3b"
        },
        {
          "value": "not-yet",
          "label": "It has not come up yet",
          "next": "cf-q3a"
        }
      ],
      "skipTo": "cf-q3a"
    },
    "cf-q3a": {
      "id": "cf-q3a",
      "kind": "ownership",
      "prompt": "Whose checklist does the claim have to clear — a customer's auditor, an internal review, a bid response, or a regulator?",
      "type": "text",
      "next": null,
      "skipTo": null
    },
    "cf-q3b": {
      "id": "cf-q3b",
      "kind": "past_behavior",
      "prompt": "Who was the third party, and what did their process actually involve?",
      "type": "text",
      "next": null,
      "skipTo": null
    },
    "ag-q1": {
      "id": "ag-q1",
      "kind": "current_tool",
      "prompt": "Does the agent already run today?",
      "type": "choice",
      "options": [
        {
          "value": "production",
          "label": "Yes, in production",
          "next": "ag-q2a"
        },
        {
          "value": "sandbox",
          "label": "Yes, in a sandbox",
          "next": "ag-q2a"
        },
        {
          "value": "planned",
          "label": "Not yet — it is being planned",
          "next": "ag-q2b"
        }
      ],
      "skipTo": "ag-q3"
    },
    "ag-q2a": {
      "id": "ag-q2a",
      "kind": "ownership",
      "prompt": "Under whose account does it act right now?",
      "type": "choice",
      "options": [
        {
          "value": "service-identity",
          "label": "Its own service identity",
          "next": "ag-q3"
        },
        {
          "value": "personal",
          "label": "A person's credentials",
          "next": "ag-q3"
        },
        {
          "value": "shared",
          "label": "A shared team account",
          "next": "ag-q3"
        },
        {
          "value": "varies",
          "label": "It varies",
          "next": "ag-q3"
        }
      ],
      "skipTo": "ag-q3"
    },
    "ag-q2b": {
      "id": "ag-q2b",
      "kind": "ownership",
      "prompt": "Who will author the agent's mandate — the scope and the ceiling it works under?",
      "type": "text",
      "next": "ag-q3",
      "skipTo": "ag-q3"
    },
    "ag-q3": {
      "id": "ag-q3",
      "kind": "past_behavior",
      "prompt": "On the agent's last run — production, sandbox, or the plan's dry run — which of these did it actually exercise?",
      "type": "choice",
      "options": [
        {
          "value": "capture",
          "label": "Capture, from a line or a WMS",
          "next": null
        },
        {
          "value": "read",
          "label": "Reading traces back",
          "next": null
        },
        {
          "value": "translate",
          "label": "Translating legacy feeds",
          "next": null
        },
        {
          "value": "all",
          "label": "All of it",
          "next": null
        }
      ],
      "skipTo": null
    },
    "sdk-q1": {
      "id": "sdk-q1",
      "kind": "current_tool",
      "prompt": "What do you build against today?",
      "type": "choice",
      "options": [
        {
          "value": "vendor-http",
          "label": "Raw HTTP against a vendor API",
          "next": "sdk-q2a"
        },
        {
          "value": "oss-library",
          "label": "An open-source EPCIS library",
          "next": "sdk-q2b"
        },
        {
          "value": "internal",
          "label": "Our own internal client",
          "next": "sdk-q2a"
        },
        {
          "value": "nothing",
          "label": "Nothing yet",
          "next": "sdk-q2a"
        }
      ],
      "skipTo": "sdk-q3"
    },
    "sdk-q2a": {
      "id": "sdk-q2a",
      "kind": "current_tool",
      "prompt": "Which runtime and language does the integration live in?",
      "type": "text",
      "next": "sdk-q3",
      "skipTo": "sdk-q3"
    },
    "sdk-q2b": {
      "id": "sdk-q2b",
      "kind": "past_behavior",
      "prompt": "Which library — and what did it fail to do the last time it mattered?",
      "type": "text",
      "next": "sdk-q3",
      "skipTo": "sdk-q3"
    },
    "sdk-q3": {
      "id": "sdk-q3",
      "kind": "current_tool",
      "prompt": "Where does the client run?",
      "type": "choice",
      "options": [
        {
          "value": "server",
          "label": "A server-side service",
          "next": null
        },
        {
          "value": "edge",
          "label": "Edge or serverless",
          "next": null
        },
        {
          "value": "line-side",
          "label": "On-device or line-side",
          "next": null
        },
        {
          "value": "mixed",
          "label": "Mixed",
          "next": null
        }
      ],
      "skipTo": null
    },
    "q-q1": {
      "id": "q-q1",
      "kind": "who_else_touches",
      "prompt": "Who reads the answers today?",
      "type": "choice",
      "options": [
        {
          "value": "own-ops",
          "label": "Our own ops team",
          "next": "q-q2a"
        },
        {
          "value": "counterparty",
          "label": "A customer or partner",
          "next": "q-q2b"
        },
        {
          "value": "auditor",
          "label": "An auditor or regulator",
          "next": "q-q2b"
        },
        {
          "value": "agent",
          "label": "An agent",
          "next": "q-q2c"
        }
      ],
      "skipTo": "q-q3"
    },
    "q-q2a": {
      "id": "q-q2a",
      "kind": "pain_cost",
      "prompt": "The last time a trace crossed a system boundary, what did assembling it take?",
      "type": "text",
      "next": "q-q3",
      "skipTo": "q-q3"
    },
    "q-q2b": {
      "id": "q-q2b",
      "kind": "past_behavior",
      "prompt": "The last time you handed a record to the other side, what did they ask for that you could not produce?",
      "type": "text",
      "next": "q-q3",
      "skipTo": "q-q3"
    },
    "q-q2c": {
      "id": "q-q2c",
      "kind": "current_tool",
      "prompt": "What surface does the agent call today, and with whose key?",
      "type": "text",
      "next": "q-q3",
      "skipTo": "q-q3"
    },
    "q-q3": {
      "id": "q-q3",
      "kind": "ownership",
      "prompt": "What grain does the read need — your own events only, a partner's under a grant, or both?",
      "type": "choice",
      "options": [
        {
          "value": "own",
          "label": "Our own events only",
          "next": null
        },
        {
          "value": "partner-grant",
          "label": "A partner's, under a grant",
          "next": null
        },
        {
          "value": "both",
          "label": "Both",
          "next": null
        },
        {
          "value": "unsure",
          "label": "Not sure yet",
          "next": null
        }
      ],
      "skipTo": null
    }
  }
}
