{"tab":"world","section":"arcs","title":"Arcs","summary":"`arcs` is a keyed section that Voyage describes in one line: \"Authored narrative arc definitions keyed by stable arc id.\" It has no authoring reference and no editor surface. This page records the fields the schema defines and the two things the engine is observed to do with them, and marks everything else as undocumented.","kind":"schema","related":[{"section":"quests","note":"a quest carries an arc id at runtime, and is labelled from the arc when the arc has surfaced"},{"section":"triggers","note":"an arc with a premise produces a generated `story` trigger"}],"wikiUrl":"/world/arcs","schema":{"_type":"record","domain":"string","codomain":{"_type":"intersection","parts":[{"_type":"partial","fields":{"id":"string","theme":"string","surfacePremise":"string","expectedConclusion":"string","status":{"_type":"union","of":[{"_type":"literal","value":"active"},{"_type":"literal","value":"resolved"},{"_type":"literal","value":"dormant"}]},"minQuestsForConclusion":"number"}},{"_type":"partial","fields":{"title":"string","secrets":{"_type":"array","of":"string"}}}]}},"sizeLimits":[],"blocks":[{"type":"example","lang":"json","code":"{\n  \"arcs\": {\n    \"the_drowned_bell\": {\n      \"id\": \"the_drowned_bell\",\n      \"title\": \"The Drowned Bell\",\n      \"theme\": \"A sunken shrine is waking, and the tide answers it\",\n      \"surfacePremise\": \"the bell beneath the harbour still rings on some nights\",\n      \"expectedConclusion\": \"The shrine is either sealed for good or allowed to finish waking.\",\n      \"minQuestsForConclusion\": 3,\n      \"status\": \"active\",\n      \"secrets\": [\n        \"The harbourmaster has been muffling the bell for years.\"\n      ]\n    }\n  }\n}"},{"type":"prose","md":"> **⚠️ Warning (undocumented and not exposed):** Voyage documents this section with one line, `Authored narrative arc definitions keyed by stable arc id.` There is no template, no record schema, and no authoring reference for the fields, and the section is not reachable through the editor's menus. Everything else on this page is read from the extracted schema and from the shipped engine, and describes only what can be observed there.\n>\n> This page exists so the section is not a blank space that gets filled in with guesses. What arcs are intended for is not stated anywhere, so this page does not say, and the fields nothing is seen to read are marked as such rather than given a plausible purpose."},{"type":"fields","fields":[{"name":"id","required":true,"tooltip":"The arc's identifier. The generated trigger is named after it, and a quest's runtime arc id is looked up against it.","md":"The arc's identifier.\n\nTwo places use it. The generated trigger described below is named `arcSurfacing_` followed by this value. And a quest's runtime arc id is used as a key into `arcs`, so the value a quest carries is matched against this one."},{"name":"theme","required":true,"tooltip":"A string. Used in place of `surfacePremise` when that field is absent.","md":"A string. When `surfacePremise` is absent, the engine substitutes `theme` in its place before building the trigger, so `theme` becomes the text read into the condition described below.\n\nWhat `theme` does when `surfacePremise` is present is not documented."},{"name":"surfacePremise","required":true,"tooltip":"Read verbatim into a generated condition as \"It is mentioned or revealed that <surfacePremise>\".","md":"A string, read verbatim into the generated condition described below as `It is mentioned or revealed that <surfacePremise>`. The value is placed into that sentence unchanged, so `the bell beneath the harbour still rings on some nights` produces a readable condition and `The Drowned Bell arc` does not.\n\nThe value is trimmed first. If nothing remains, no trigger is produced."},{"name":"expectedConclusion","required":true,"tooltip":"A string. What reads it is undocumented.","md":"A string. Nothing that reads it appears in the schema or the engine, and no authoring reference describes it. It is part of the section and accepted, but what it changes is undocumented."},{"name":"minQuestsForConclusion","required":true,"tooltip":"A number. What reads it is undocumented.","md":"A number. Nothing that reads it appears in the schema or the engine, and no authoring reference describes it. It is part of the section and accepted, but what it changes is undocumented."},{"name":"title","tooltip":"A string, shown on a quest's label once the arc has surfaced. Absent, the label reads \"Storyline\".","md":"A string. It appears in the quest label described below. When the label is produced and `title` is absent, the text used is `Storyline`."},{"name":"secrets","tooltip":"`Array<string>`. What reads it is undocumented.","md":"`Array<string>`. Nothing that reads it appears in the schema or the engine, and no authoring reference describes it. It is part of the section and accepted, but what it changes is undocumented."},{"name":"status","tooltip":"One of `active`, `resolved`, or `dormant`. What reads it is undocumented.","md":"One of `active`, `resolved`, or `dormant`. Nothing that reads it appears in the schema or the engine, and no authoring reference describes it. It is part of the section and accepted, but what it changes is undocumented."}]},{"type":"prose","md":"## The generated trigger\n\nAn arc produces a trigger, built from its `id` and its premise:\n\n- its name is `arcSurfacing_` followed by the arc's `id`\n- `recurring` is `false`\n- it holds one condition, of type `story`, whose query is `It is mentioned or revealed that ` followed by the premise\n- its effects list is empty\n\nThe premise is trimmed before the trigger is built, and if nothing remains the trigger is not produced at all. `surfacePremise` supplies the text, or `theme` when `surfacePremise` is absent.\n\nA `story` condition is one of the two [semantic condition types](/mechanics/triggers#condition-types). Whether this generated trigger is counted alongside authored triggers is not documented."},{"type":"prose","md":"## The quest label\n\nA quest carries an arc id, a position within the arc, and the arc's escalation as it stood when the quest was created. None of the three is an authored field: they are absent from the quest fields an author writes, and are set during play.\n\nWhen a quest has an arc id, and the arc that id resolves to has recorded a surfacing time, a label is produced from the arc's `title` and the quest's position. Where `title` is absent, `Storyline` is used instead."},{"type":"prose","md":"## What the engine records\n\nAn arc gains six fields during play that are not authored: a creation time, a surfacing start time, a surfacing time, a resolved time, an escalation level, and a last-update time.\n\nThe surfacing time is the one with an observable use, in the quest label above. What sets any of the six, and what the escalation level counts, is not documented."},{"type":"prose","md":"## Authoring notes\n\nThese follow from the behaviour above and nothing further.\n\n- **Write `surfacePremise` to complete the sentence it is placed in.** The text is inserted unchanged after `It is mentioned or revealed that `.\n- **A blank premise produces no trigger.** If `surfacePremise` and `theme` are both empty, nothing is generated for the arc.\n- **`title` is player-facing** wherever the quest label is shown, and `Storyline` stands in when it is missing.\n\nThe remaining fields are accepted and stored. Because nothing describes what reads them, this page cannot say what writing them achieves."}],"body":"## Example\n\n```json\n{\n  \"arcs\": {\n    \"the_drowned_bell\": {\n      \"id\": \"the_drowned_bell\",\n      \"title\": \"The Drowned Bell\",\n      \"theme\": \"A sunken shrine is waking, and the tide answers it\",\n      \"surfacePremise\": \"the bell beneath the harbour still rings on some nights\",\n      \"expectedConclusion\": \"The shrine is either sealed for good or allowed to finish waking.\",\n      \"minQuestsForConclusion\": 3,\n      \"status\": \"active\",\n      \"secrets\": [\n        \"The harbourmaster has been muffling the bell for years.\"\n      ]\n    }\n  }\n}\n```\n\n> **⚠️ Warning (undocumented and not exposed):** Voyage documents this section with one line, `Authored narrative arc definitions keyed by stable arc id.` There is no template, no record schema, and no authoring reference for the fields, and the section is not reachable through the editor's menus. Everything else on this page is read from the extracted schema and from the shipped engine, and describes only what can be observed there.\n>\n> This page exists so the section is not a blank space that gets filled in with guesses. What arcs are intended for is not stated anywhere, so this page does not say, and the fields nothing is seen to read are marked as such rather than given a plausible purpose.\n\n## Fields\n\n### id\n\nThe arc's identifier.\n\nTwo places use it. The generated trigger described below is named `arcSurfacing_` followed by this value. And a quest's runtime arc id is used as a key into `arcs`, so the value a quest carries is matched against this one.\n\n### theme\n\nA string. When `surfacePremise` is absent, the engine substitutes `theme` in its place before building the trigger, so `theme` becomes the text read into the condition described below.\n\nWhat `theme` does when `surfacePremise` is present is not documented.\n\n### surfacePremise\n\nA string, read verbatim into the generated condition described below as `It is mentioned or revealed that <surfacePremise>`. The value is placed into that sentence unchanged, so `the bell beneath the harbour still rings on some nights` produces a readable condition and `The Drowned Bell arc` does not.\n\nThe value is trimmed first. If nothing remains, no trigger is produced.\n\n### expectedConclusion\n\nA string. Nothing that reads it appears in the schema or the engine, and no authoring reference describes it. It is part of the section and accepted, but what it changes is undocumented.\n\n### minQuestsForConclusion\n\nA number. Nothing that reads it appears in the schema or the engine, and no authoring reference describes it. It is part of the section and accepted, but what it changes is undocumented.\n\n### title\n\nA string. It appears in the quest label described below. When the label is produced and `title` is absent, the text used is `Storyline`.\n\n### secrets\n\n`Array<string>`. Nothing that reads it appears in the schema or the engine, and no authoring reference describes it. It is part of the section and accepted, but what it changes is undocumented.\n\n### status\n\nOne of `active`, `resolved`, or `dormant`. Nothing that reads it appears in the schema or the engine, and no authoring reference describes it. It is part of the section and accepted, but what it changes is undocumented.\n\n## The generated trigger\n\nAn arc produces a trigger, built from its `id` and its premise:\n\n- its name is `arcSurfacing_` followed by the arc's `id`\n- `recurring` is `false`\n- it holds one condition, of type `story`, whose query is `It is mentioned or revealed that ` followed by the premise\n- its effects list is empty\n\nThe premise is trimmed before the trigger is built, and if nothing remains the trigger is not produced at all. `surfacePremise` supplies the text, or `theme` when `surfacePremise` is absent.\n\nA `story` condition is one of the two [semantic condition types](/mechanics/triggers#condition-types). Whether this generated trigger is counted alongside authored triggers is not documented.\n\n## The quest label\n\nA quest carries an arc id, a position within the arc, and the arc's escalation as it stood when the quest was created. None of the three is an authored field: they are absent from the quest fields an author writes, and are set during play.\n\nWhen a quest has an arc id, and the arc that id resolves to has recorded a surfacing time, a label is produced from the arc's `title` and the quest's position. Where `title` is absent, `Storyline` is used instead.\n\n## What the engine records\n\nAn arc gains six fields during play that are not authored: a creation time, a surfacing start time, a surfacing time, a resolved time, an escalation level, and a last-update time.\n\nThe surfacing time is the one with an observable use, in the quest label above. What sets any of the six, and what the escalation level counts, is not documented.\n\n## Authoring notes\n\nThese follow from the behaviour above and nothing further.\n\n- **Write `surfacePremise` to complete the sentence it is placed in.** The text is inserted unchanged after `It is mentioned or revealed that `.\n- **A blank premise produces no trigger.** If `surfacePremise` and `theme` are both empty, nothing is generated for the arc.\n- **`title` is player-facing** wherever the quest label is shown, and `Storyline` stands in when it is missing.\n\nThe remaining fields are accepted and stored. Because nothing describes what reads them, this page cannot say what writing them achieves."}