jacquardSnapshot

← snapshot

6402 bytes
/**
 * The narration. One entry per scene, in order.
 *
 * `id` is matched by tour.mjs to decide what to do on screen; `text` is what
 * the voice says. Scene dwell time is derived from the measured length of the
 * synthesized audio (see narrate.mjs), so the picture always waits for the
 * words rather than the other way round.
 */

export const SCENES = [
  {
    id: "open",
    text: "This is Lovelace — the web front end for jacquard, a replacement for git's core backend. Jacquard records three things git does not: what changed, whose hands made it, and why.",
  },
  {
    id: "stage",
    text: "The front door is deliberately almost empty. One figure, one sentence, one way in. Her name is Jackie, and she is the interviewer the architecture calls for — the component that elicits rationale at review time.",
  },
  {
    id: "alert",
    text: "She opens with what is actually on the floor: how many snapshots there are, and how many decisions are waiting on a human. Nothing here is invented — every sentence she speaks is derived from the repository.",
  },
  {
    id: "offers",
    text: "She is not a tour guide. She offers what there is to look at and then waits. You go wherever you like, in whatever order, including nowhere. The substrate's own phrase for this is recognised, never policed.",
  },
  {
    id: "gate",
    text: "Here is the gate. A promotion is parked: this branch cannot go into main because the blast radius touches a decision no human has settled. The work parks, and nobody is punished. Notice the figure has changed — a four-fold barred lattice, because the subject under review is a closed gate.",
  },
  {
    id: "file",
    text: "This is the file the change touched, read from the branch it lives on. It is governed by an unsettled decision, which is why the gate is holding. The figure is now punched holes on a card — sparse and open, the way a jacquard card actually looks.",
  },
  {
    id: "decision",
    text: "The decision itself. An agent proposed it, and it is unsettled — because proposing is not attesting, even for the proposer. The figure is damask now: twelve-fold, ornate, curved. A decision is the ornament.",
  },
  {
    id: "cloth",
    text: "And this is the whole history, woven. Every snapshot is a band of picks, and the thread colour is the provenance hashed into that snapshot's content address. Gold is a human's hands, indigo an agent's. Where they alternate, the work was mixed — because mixed is both hands, not a third thing.",
  },
  {
    id: "record",
    text: "Because there is something here worth recording, Jackie offers once to ask why. She offers; she does not corner you. If you decline, she does not raise it again for this place.",
  },
  {
    id: "interview",
    text: "Her questions come from a fixed taxonomy of five rationale families — constraints, alternatives, missed abstractions, deferred work, and confidence risk. She is scripted, not clever, and the interface says so. The intelligence in a jacquard decision is the author's answer, not the interviewer's question.",
  },
  {
    id: "answer",
    text: "The answers are spoken by default; here they are typed, because this browser has no microphone. Either way the words are the author's own, and the figure is a five-fold branching thread — an odd fold, so it never quite closes.",
  },
  {
    id: "draft",
    text: "When she is done she drafts a decision, quoting the author verbatim rather than paraphrasing, so what she wrote stays traceable to what was actually said. She signs it as machine synthesis and says plainly that it is not an attestation.",
  },
  {
    id: "propose",
    text: "She proposes it as herself — an agent — and it lands unsettled. Jackie cannot settle it. In the Rust underneath, the attestation constructor accepts only a human identity, and a compile-fail test proves an agent can never reach it.",
  },
  {
    id: "thesis",
    text: "This is the screen the whole project turns on. Above, the machine-drafted rationale on the agent thread. Below, the space for a human attestation on the gold one. Two objects, two provenances, never conflated — and until someone signs, an unsigned signature line.",
  },
  {
    id: "attest",
    text: "A person reads the change and answers in their own words. That statement is validated exactly as the engine validates it — trimmed, and between one and two thousand characters. It becomes a separate object with its own content address.",
  },
  {
    id: "admitted",
    text: "Now the same promotion is admitted, and the gate says precisely what it proved: that a human attested every governing decision. It does not claim the decision was good. That stays a human question.",
  },
  {
    id: "diff",
    text: "Behind the conversation is the detail view — diff-specific, and denser. On the left, the cut: every path the change touches, flagged by whether a decision governs it and whether that decision is settled. On the right, the file read line by line.",
  },
  {
    id: "ungoverned",
    text: "And this is the case the project is most careful about. A promotion that touches nothing anybody declared is admitted — but reported as ungoverned, in amber and behind a hatch, never in green. Zero decisions checked means nothing was verified, not that everything passed.",
  },
  {
    id: "log",
    text: "The log pairs the woven cloth with a commit graph whose nodes are coloured by provenance, so a glance tells you which stretch of history was agent-woven and which was not.",
  },
  {
    id: "registry",
    text: "The registry is the rendezvous board. What leaves an organisation is an identifier, a sixty-four integer sketch, and a timestamp — nothing else can leave, and the build proves it by making the registry crate unable to even name the content types.",
  },
  {
    id: "wizard",
    text: "New repositories are warped on the loom through a seven-step ceremony that teaches the model as it goes — the organisation, the founding weaver, the first thread, the first cloth, and the first card.",
  },
  {
    id: "close",
    text: "Everything you have seen runs against an in-memory substrate with no persistence and no authentication, and the interface says so on every screen rather than implying otherwise. That honesty is the point: the gate proves what it proves, and says plainly what it does not.",
  },
];