PASS2_AUTHORING_RUNBOOK.md

pipelines/PASS2_AUTHORING_RUNBOOK.md

Region-page pass-2 authoring runbook

CANON SUBORDINATION — this document is PROPOSAL-TIER: it serves canon and never outranks it.
The canon: the CVD · the T1 foundation docs · the T0 registries (registries/) · the spine
(docs/spine/CH_*.md) · the region pages (_source/02_Tier_2_Region_Pages/). Authority order: docs/DOC_MAP.md § 0.
Canon served (scanned from this document's own citations — widen it by hand where it is thin):
CVD §17 · T1_Region_Page_Template · _source/02_Tier_2_Region_Pages/flores_island.md
READ THAT CANON FIRST — open it and derive from it before you build anything from this document.
If this document disagrees with canon, CANON WINS and this document is the defect — fix the
document, never the canon. Nothing here is applied until it is ratified into canon.

ENGINE (region-agnostic). The single file every pass-2 section author and section critic reads,

so no agent has to load the full reference stack. Proven on the flores_island pass-2 (16 agents,

8/8 GO-WITH-FIXES, page 555 → 1721 lines); generalized here for every remaining region page.

What pass-2 is

Pass-1 cut the region page from T1_Region_Page_Template [ACTIVE v2.0]: correct structure, thin

substrate. Pass-2 rebuilds the substrate-bearing numbered sections from the region's own AUDITED

deep-read harvest, so the page stops being a template instance and becomes buildable material.

The lane is: extract → conform → merge → audit → pass-2 → assemble → gate → commit.

The five rules that are not negotiable

1. The consumption manifest is the work-list. bali_CONSUMPTION_MANIFEST.md (or the region's

equivalent) is SCRIPT-EMITTED from the typed *_status fields. A row marked HELD (a critic

MAJOR holds it) or CUT (the audit rejected it) must never appear in the page, in any form,

including paraphrase. This is a hard defect, not a judgement call — the flores pass consumed a

CUT civilizational mark and credited living peoples with one contemporary individual's 2013

syncretic method.

2. Cited or cut. Every substantive substrate claim carries its source inline in the page's own

convention: [SRC: SRC_00157, p. 152-156], or [SRC: SRC_00230 — <short title>] where the

title disambiguates. A claim you cannot anchor to a page in the record does not go in. Never

cite a page you have not seen in the record.

3. Declining is the design working. A page that swallows every queued row is a dump. Decline

weak, redundant, or wrong-section rows and say why in your return. Expect to decline some.

4. You return TEXT. You never write files. Parallel agents writing one shared page race, and

the director does not hand-edit canon prose. harness/apply_region_page_sections.py is the only

writer.

5. Proposal-tier discipline. Everything the harvest carries is proposal-tier. The page may

state it as region substrate; it may not promote it to ratified canon, mint a new controlled

vocabulary, or name a legendary weapon / questline id / boss id that canon has not assigned.

A mint_flag in the audit is a RULING PENDING — write around it, never resolve it.

Format contract (CVD §17.14) — the assembler and the gate both check parts of this

section, no "here is the section".

### Section N — Title. A wrong number is a hard fail (it would write to the wrong place).

your section if you need them, never # or ##). No emphasis asterisks. No code blocks for

paste-content. Affirmative framing.

them), but prose is the default — a table of narrative claims is a dump.

Reveal discipline (gate-invisible; the critics catch these, not the gates)

negated mention either ("this is not the work of any banking house" leaks the house). The family

first appears at Ch 8; the antagonist pattern does not surface before ~Ch 38.

chapter assignments, boss verbs/axes, SQ routing, or ws.* keys — those are joins INTO the typed

layer and are copied, never invented.

Care doctrine (CVD §17.1) — calibrated BOLDER, and both directions are checked

Only the §17 FLOOR is absolute: no genocide or slaughter-of-a-living-culture as an encouraged or

enabled goal; no real-world targeted hate or atrocity-glorification against a real living people;

no sexual violence; no child harm.

Above that floor the loop RULES, it does not flag, and the calibration is deliberately bold:

atrocity is ordinary substrate when the people's own agency is shown.

move where it comes from; do not delete the material.

rated-M AAA action RPG. A myth's own monster is a BOSS. Deities are real, portrayable and

usable as characters. Lethal violence against human antagonists is core.

defamed, or exterminated. It does not make an individual antagonist who belongs to that culture

unkillable.

poverty or scapegoating, build THAT cause. Inventing a puppet-master to spare a community its

own agency is a scrub, not care, and teaches the player something false.

species names ship.

Before you soften anything, run the devil's-advocate pass against over-conservatism: ask what the

bolder version would be and why it fails, and if it does not fail, write the bolder version.

The failure modes the flores critics actually caught — check yourself for these

available to the player who investigates it" in a pre-colonial frame. A player of that era cannot

investigate an inbreeding coefficient. If the finding is modern, it belongs to the modern-revisit

strata or to authorial notes, not to era-present play.

zones are highland. Check every environmental description against the page's own Zone Catalog

terrain values before you write it.

people B's surfaces. Keep every attribution exactly where the record puts it, and say plainly

where the corpus has no equivalent for the other people rather than borrowing one.

so explicitly and name it as queued for that section — you cannot see whether Section N took it,

so never assert that it did.

What to read

Read these and no more (the point of this runbook is that you do not load the full stack):

1. This runbook.

2. The consumption manifest for your region.

3. The region page itself — the header block, the Zone Catalog, the Derived Indexes, YOUR current

section, and the two sections either side of yours (your immediate neighbours, for seams).

4. The audited EXR records in docs/book_extractions/ for your region — the rows routed to your

section, plus that record's audit_summary.care_findings in full.

5. The corresponding section of the exemplar page _source/02_Tier_2_Region_Pages/flores_island.md

— for DEPTH and CITATION SHAPE only, never for content.

6. The region's spine chapter file(s) in docs/spine/ — read-only, for the typed joins.

What you return

The section markdown, then a short trailing block the assembler ignores is NOT acceptable — the

reply is markdown only. Put your decline list and your reasoning in the structured fields the

workflow schema asks for, not in the page text.

Generated by harness/site/structure_site.py — the URL path is the repo path. review root