{
  "format": "atlas-export/1",
  "product": "Atlas — the written-down manual, inside Bisbe",
  "exportedAt": "2026-08-06T07:00:00.000Z",
  "world": {
    "mode": "demo",
    "orgId": "org_atlantica",
    "name": "Atlantica",
    "isDemo": true
  },
  "store": {
    "driver": "file",
    "durable": false,
    "schema": "docs/runbooks/ATLAS-SCHEMA-2026-08-06.sql",
    "tables": 11
  },
  "totals": {
    "tables": 11,
    "rows": 117,
    "fingerprint": "ff96133d2cd3f5645e47e115aba1303b3fdc453b50da667267ba4104e074c7c1"
  },
  "scope": {
    "saw": "all",
    "meaning": "Everything in this business's records. You are the owner of it, or this is the shared demo world, which has no private half.",
    "omitted": []
  },
  "files": [
    {
      "file": "tables/01-atlas_org.json",
      "table": "atlas_org",
      "what": "The business itself — one row. Everything else hangs off its id.",
      "rows": 1,
      "columns": [
        "id",
        "name",
        "owner_name",
        "trade",
        "updated_at"
      ],
      "pendingColumns": [],
      "columnsNotCarried": [],
      "fingerprint": "4c4769f793fa126cb7e92207e4e6edf6612ea966581507f2ebb14b9e9a456f8c",
      "fencedBy": "it IS the business row"
    },
    {
      "file": "tables/02-atlas_role.json",
      "table": "atlas_role",
      "what": "Who the manual is organised for — owner, rep, office, books, customer, partner.",
      "rows": 6,
      "columns": [
        "org_id",
        "id",
        "label",
        "blurb"
      ],
      "pendingColumns": [],
      "columnsNotCarried": [],
      "fingerprint": "4bd0b08da56466163cbcb885bd309afa53736785a18bb26ab0ed7229d7c6fe8c",
      "fencedBy": "org_id on every row"
    },
    {
      "file": "tables/03-atlas_procedure.json",
      "table": "atlas_procedure",
      "what": "The manual. One row per written-down procedure, with its body and version.",
      "rows": 20,
      "columns": [
        "org_id",
        "id",
        "title",
        "section",
        "roles",
        "audience",
        "version",
        "confirmed_at",
        "status",
        "body",
        "keywords",
        "covers"
      ],
      "pendingColumns": [
        {
          "column": "audience",
          "runbook": "docs/runbooks/ATLAS-PAGE-AUDIENCE-2026-08-09.sql"
        }
      ],
      "columnsNotCarried": [
        {
          "column": "updated_at",
          "why": "Stamped by the database on write. The app never reads it back into the graph, so a value here would be the moment you pressed download, not the moment the page changed — a plausible-looking number that is not a fact."
        },
        {
          "column": "created_at",
          "why": "Set by the database on insert; never read back into the app, so the export would be inventing it."
        }
      ],
      "fingerprint": "559597cc3d6e05f601f8c6ae877c16bc44dd0740d095358e0bdbb91343d484e7",
      "fencedBy": "org_id on every row"
    },
    {
      "file": "tables/04-atlas_procedure_version.json",
      "table": "atlas_procedure_version",
      "what": "Why each procedure changed, and what taught it. One row per version.",
      "rows": 54,
      "columns": [
        "procedure_id",
        "version",
        "at",
        "note",
        "learned_from_thread_id",
        "from_rule_id"
      ],
      "pendingColumns": [],
      "columnsNotCarried": [],
      "fingerprint": "12da5d8c1eb93ee31fb4e5051a89383d507942ac06f1a6723b9963ad21842c05",
      "fencedBy": "its parent — atlas_procedure.procedure_id"
    },
    {
      "file": "tables/05-atlas_rule.json",
      "table": "atlas_rule",
      "what": "Rules the owner stated in plain words, and Atlas's read-back of each one.",
      "rows": 0,
      "columns": [
        "org_id",
        "id",
        "said",
        "heard",
        "stated_at",
        "stated_by_role"
      ],
      "pendingColumns": [],
      "columnsNotCarried": [],
      "fingerprint": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
      "fencedBy": "org_id on every row"
    },
    {
      "file": "tables/06-atlas_thread.json",
      "table": "atlas_thread",
      "what": "Conversations — somebody asked, and this is where the answer happened.",
      "rows": 8,
      "columns": [
        "org_id",
        "id",
        "channel",
        "asker_name",
        "asker_user_id",
        "about",
        "asker_role",
        "subject",
        "opened_at",
        "state",
        "owner_notified",
        "learned_procedure_id"
      ],
      "pendingColumns": [
        {
          "column": "asker_user_id",
          "runbook": "docs/runbooks/ATLAS-ORG-MEMBERSHIP-2026-08-06.sql"
        },
        {
          "column": "about",
          "runbook": "docs/runbooks/ATLAS-THREAD-ABOUT-2026-08-11.sql"
        }
      ],
      "columnsNotCarried": [],
      "fingerprint": "b8fe91615b27ba3ba624149513425ce413dc8ede769107714783d3f0f5206ece",
      "fencedBy": "org_id on every row"
    },
    {
      "file": "tables/07-atlas_message.json",
      "table": "atlas_message",
      "what": "Every message in every conversation, including Atlas's own, with its receipts.",
      "rows": 18,
      "columns": [
        "thread_id",
        "id",
        "at",
        "from",
        "text",
        "author_name",
        "author_user_id",
        "receipts",
        "escalation_reason"
      ],
      "pendingColumns": [
        {
          "column": "author_name",
          "runbook": "docs/runbooks/ATLAS-MESSAGE-AUTHOR-2026-08-06.sql"
        },
        {
          "column": "author_user_id",
          "runbook": "docs/runbooks/ATLAS-MESSAGE-AUTHOR-2026-08-06.sql"
        }
      ],
      "columnsNotCarried": [],
      "fingerprint": "036b6295c981f2c110a411357356b622d643d2fba1abb5e4096c8ce77cf04b0e",
      "fencedBy": "its parent — atlas_thread.thread_id"
    },
    {
      "file": "tables/08-atlas_edge.json",
      "table": "atlas_edge",
      "what": "The links — which rule updated which page, which conversation taught which page.",
      "rows": 1,
      "columns": [
        "org_id",
        "from_id",
        "to_id",
        "kind",
        "at"
      ],
      "pendingColumns": [],
      "columnsNotCarried": [],
      "fingerprint": "d7fda82e6cb4017f90337f9b720414c077cd42328d5e05fe5cc578bbcbaf9bbb",
      "fencedBy": "org_id on every row"
    },
    {
      "file": "tables/09-atlas_release_item.json",
      "table": "atlas_release_item",
      "what": "Changes queued for the owner's say-so. Nothing enters the manual un-released.",
      "rows": 0,
      "columns": [
        "org_id",
        "id",
        "target_procedure_id",
        "target_title",
        "target_section",
        "target_roles",
        "target_audience",
        "change_kind",
        "from_version",
        "to_version",
        "draft_lines",
        "summary",
        "source_kind",
        "source_id",
        "covers_triggers",
        "status",
        "modify_notes",
        "revision",
        "queued_at",
        "released_at"
      ],
      "pendingColumns": [
        {
          "column": "target_audience",
          "runbook": "docs/runbooks/ATLAS-PAGE-AUDIENCE-2026-08-09.sql"
        }
      ],
      "columnsNotCarried": [],
      "fingerprint": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
      "fencedBy": "org_id on every row"
    },
    {
      "file": "tables/10-atlas_notification.json",
      "table": "atlas_notification",
      "what": "What Atlas told somebody, and whether they have read it yet.",
      "rows": 5,
      "columns": [
        "org_id",
        "id",
        "at",
        "audience",
        "kind",
        "thread_id",
        "text",
        "read"
      ],
      "pendingColumns": [],
      "columnsNotCarried": [],
      "fingerprint": "5b22f243fc29240c04e51110bc73a23a17558ef2e7ddfd5e9d76a2b0ba7ce0d1",
      "fencedBy": "org_id on every row"
    },
    {
      "file": "tables/11-atlas_escalation_trigger.json",
      "table": "atlas_escalation_trigger",
      "what": "Questions that always go to a person, never to an answer. Committed data, not a judgment.",
      "rows": 4,
      "columns": [
        "org_id",
        "id",
        "phrases",
        "reason"
      ],
      "pendingColumns": [],
      "columnsNotCarried": [],
      "fingerprint": "d17ea064636cd7754ce10645615ca08fffab7c9ffff6fb4cd9ccf603b768c59f",
      "fencedBy": "org_id on every row"
    }
  ],
  "notes": [
    "These are the real column names and the real row shapes, straight off the same code that writes them to the database. Nothing here has been tidied up for reading.",
    "One file per table. A conversation's messages are their own table (atlas_message), joined by thread_id — that is how they are stored, so that is how they are here.",
    "Empty values are null, exactly as the database holds them. An empty list is [], not missing.",
    "This world is being served from the \"file\" store — the committed demo register, not the live database. The SHAPE is identical (the same projection writes both); the records are the invented ones.",
    "This is the shared demo world. Everyone looking at the demo is looking at this same one, so anything you typed into it may appear in somebody else's download too. Nothing here is real, and nothing here is private.",
    "Some columns are part of the shape but are still waiting on a schema change the owner has to apply by hand: atlas_procedure.audience (docs/runbooks/ATLAS-PAGE-AUDIENCE-2026-08-09.sql), atlas_thread.asker_user_id (docs/runbooks/ATLAS-ORG-MEMBERSHIP-2026-08-06.sql), atlas_thread.about (docs/runbooks/ATLAS-THREAD-ABOUT-2026-08-11.sql), atlas_message.author_name (docs/runbooks/ATLAS-MESSAGE-AUTHOR-2026-08-06.sql), atlas_message.author_user_id (docs/runbooks/ATLAS-MESSAGE-AUTHOR-2026-08-06.sql), atlas_release_item.target_audience (docs/runbooks/ATLAS-PAGE-AUDIENCE-2026-08-09.sql). They are in these files, and they will read as null until that lands.",
    "Customers (the CRM half of Bisbe) has its own records and is not in this download. This is Atlas's world."
  ]
}
