Lesson 100: Fiscal-Year Escalation Governance Closure Checklist - Archive Lessons 92–99, Annual Sign-Off, and Next-Year Charter
Direct answer: A fiscal-year escalation governance closure checklist is the controlled shutdown of the evidence chain that starts at Lesson 92 and ends at Lesson 99: you archive every Lesson 97 quarterly zip, reconcile Lesson 98 digests, confirm no open failed_open rows from Lesson 96, verify final migration_evidence_hash from Lesson 99, then dual-sign a fiscal_closure_evidence_hash and publish the next-year charter (policy semver, roster, training schedule).

What this lesson solves
Without a closure ritual, January becomes “we will fix the spreadsheet later.” This checklist makes the handoff boring and safe.
Prerequisites: Four quarterly Lesson 97 attestations (or documented exceptions), latest Lesson 99 migration_id, and board minutes approving the Lesson 98 risk band narrative. Expected time: about ninety minutes including a tabletop on a late December migration.
What you will build
lesson78_fiscal_year_escalation_governance_closure_checklist_policy.md(contract below)lesson78_fiscal_year_escalation_governance_closure.csv(one row per fiscal year per product line)- A
FY-YYYY-closure.zipcontaining checksums of all quarterly zips plus the final signed closure CSV row
Step 1 - Define closure gate classes
| gate | fail signal | posture |
|---|---|---|
| FY1 – Attestation gap | fewer than four attestation_id_ref rows unless waiver |
block closure |
| FY2 – Open holds | Lesson 94 send_state=held without owner or expiry |
block |
| FY3 – Migration drift | to_semver on last Lesson 99 row ≠ charter target |
remediate before sign |
| FY4 – Retro incomplete | no CAPA ids for any failed_open from the year |
block |
Step 2 - Author lesson78_fiscal_year_escalation_governance_closure_checklist_policy.md
Minimum sections:
- Purpose – certify that the Lessons 92–99 chain is internally consistent for the fiscal year.
- Scope – all
train_cycle_idvalues that produced player- or partner-facing escalation artifacts. - Archive rules – immutable object storage; legal hold tags if litigation exists.
- Signers – CFO delegate + CISO or governance lead; split from quarterly attest signers when possible.
- Next-year charter – publish
policy_semver_target, training calendar, and rollback contact tree before day ten of the new fiscal year. - Retention – align to SOX/ISO schedules; minimum seven years for closure zips if no stricter rule applies.
Step 3 - Author lesson78_fiscal_year_escalation_governance_closure.csv
| column | purpose |
|---|---|
fiscal_closure_id |
stable id |
fiscal_year_label |
FY2026 style |
attestation_ids_included |
semicolon list of Lesson 97 ids |
digest_ids_included |
Lesson 98 ids |
final_migration_id_ref |
Lesson 99 row |
open_hold_count_eoy |
integer |
fy1_fy4_gate_status |
pass / fail |
closure_signer_a_id / closure_signer_b_id |
humans |
fiscal_closure_evidence_hash |
sha256 over archive manifest + this row |
Step 4 - Run closure day (45 minutes)
- Export a CSV of all Lesson 92–99 primary keys for the fiscal year; hash file.
- Verify quarterly zips unpack and pass
manifest_sha256spot checks. - Confirm Lesson 96 has zero
closure_state=failed_openor attach CAPA. - Align Lesson 99 semver with next-year charter doc.
- Sign
fiscal_closure_evidence_hash; uploadFY-YYYY-closure.zip. - Email audit chair with object-store pointer only—no attachments.
Step 5 - Tabletop - “we can close with one quarter missing”
Missing Q3 attestation due to acquisition freeze. Outcome: FY1 fail unless board-approved waiver id is attached to closure row.
Pro tips
- Calendar vs fiscal – if your company uses calendar FY but live-ops uses UTC quarters, footnote the mapping table once.
- Dual listings – if you IPO mid-year, duplicate closure row with
listing_event_id—do not merge histories blindly. - Train the trainers – schedule dry-run refresh before holiday code freeze.
Troubleshooting
| symptom | likely cause | fix |
|---|---|---|
| Hash mismatch on zip | file added after manifest | regenerate manifest |
| Signers unavailable Dec 31 | vacation | pre-sign contingent on FY4 |
| Charter conflicts with semver | product wants MAJOR mid-year | schedule extraordinary migration |
Common mistakes
- Closing while Lesson 95 override roster is mid-audit.
- Archiving only Lesson 97 zips and skipping raw Lesson 92 CSVs.
- Publishing the charter only in email—use the same object store as attestations.
FAQ
Is this the end of the course arc?
It is the fiscal closure for the Lessons 92–99 escalation governance thread; other course lessons remain active.
Do we need a new Lesson 89 charter?
Link next-year capacity and cooldown rules if borrow trains interact with escalations; cross-reference rather than duplicate.
What if we acquire another studio?
Open a cross-product handoff workstream; do not merge CSVs without a Lesson 99 migration.
Lesson recap
Closure is permission to start clean. Without a signed fiscal hash, next year inherits last year’s ghosts.
Next lesson teaser
Next: Lesson 101: Cross-Product Escalation Lineage Handoff Packet defines product_code, joint Lesson 97 manifest hashes, portfolio sign-off, and H1–H4 gates so two live games never blend rows or semver accidentally.
Related learning
- Lesson 99: Annual Policy Version Bump and Migration Runbook
- Lesson 97: Quarterly Escalation Governance Attestation Export
- How to Score Forecast Calibration Drift Before Release Gates for Live-Ops Teams (2026)
Treat fiscal closure as closing the books, not closing the chat.