name: constituency-outcome-slice description: 'Work one bounded constituency possible-outcome slice. Use when: creating or reviewing seat-local outcome packets under the new 1 primary + 3 reviewer workflow.'
Constituency Outcome Slice
When to Use
- Working one district or one bounded seat cluster in the constituency possible-outcome lane
- Writing
research/constituency-outcomes/*orresearch/constituency-outcome-reviews/* - Converting a Kerala seed read into the new normalized packet shape
Canonical Files
docs/CONSTITUENCY_POSSIBLE_OUTCOME_CONTRACT.mddocs/CONSTITUENCY_POSSIBLE_OUTCOME_WORKFLOW.mdresearch/constituency-outcomes/<stateId>/<districtId>/<constituencyId>.jsonresearch/constituency-outcome-reviews/<stateId>/<districtId>/<constituencyId>.jsontools/e2e-lite-check.mjstools/constituency-outcome-coverage-report.mjstools/sync-constituency-outcome-index.mjs
Procedure
- Read the contract, workflow doc, and guardrails before mutating any seat packet
- Run
node tools/constituency-outcome-coverage-report.mjs --ref origin/main --compactbefore claiming or closing a slice when the shared checkout is dirty or stale; use the full report only when you need district-level drill-down - Keep the slice district-local or cluster-local; do not build a shared statewide working file
- If another live slice already owns the repo-wide outcome
writinglane, staypreparedand keep payload prep scratch-only until that writer releases - Treat the first
preparedorwritingissue comment for the slice as the reusable source comment; edit that same comment when the slice starts writing or releases - If the source comment is malformed or incomplete, repair it or release the slice before any tracked repo write starts
- Write the primary seat packet with normalized labels, rationale, risk factors, source refs, and exact
lastReviewedAt - Record reviews in the paired review packet only; keep reviewer ids unique and independent from the primary worker
- Use
withheldorescalatedwhen the evidence, alliance context, or field completeness is not strong enough - Keep public-safe runtime writes gated by the paired seat packet + review packet, and never use runtime projections as the working surface
- After rebasing onto the latest
main, runnode tools/sync-constituency-outcome-index.mjs --writebefore commit whenever the slice touched district projection files orpublic/data/constituency-outcomes/index.json
Guardrails
- No deterministic winner language before results
- No append-only seat diaries or run-numbered outcome logs
preparedis read-only and scratch-only for this lane; do not leave tracked repo diffs behind until the single outcomewritinglane is available- Do not leave duplicate
prepared,writing, orreleasedcomments live for one slice when the existing bot-written source comment is still editable - Keep public
summarycopy materially seat-specific; do not seed generic "stays withheld while ... review gate" filler because the runtime suppresses that boilerplate - Public
public/data/constituency-outcomes/*writes are allowed only after the paired seat packet + review packet exist and the row stays inside the approved public-safe projection contract - Keep outcome rationales and public summaries seat-specific; do not reuse one district-wide boilerplate sentence across most seats
- Do not stretch
research/statewide/constituency-outlooks.jsoninto the multi-state working surface
Handoff
- Re-run validator coverage after outcome packet edits; missing seat packets, review packets, projection rows, district files, or manifest entries inside the slice are real defects, not silent gaps
- Re-run the coverage report when sizing the remaining state/district gap; use
--compactfor issue comments and do not replace the live report with a growing handwritten progress ledger - Sync repo-truth docs if the workflow contract changes