From 074ba17ab447b80fd97eecf3f354d6a30f3fae5e Mon Sep 17 00:00:00 2001 From: type-two Date: Wed, 29 Jul 2026 12:40:16 +1000 Subject: [PATCH] [orchestrator] v9.1: pin CorrectionUnit.phase as a union (SCREEN's mid-round request) SCREEN string-matches the phase vocabulary for the warden-arrival compliance tone and the stasis save-load fallback; with phase as a documented-by-example free string, SIM landing 'auditing' instead of 'audit' would silently kill the tone with no red test. Pinned to the six documented phases; additions go through NOTES. Co-Authored-By: Claude Fable 5 --- fktry/src/contracts.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/fktry/src/contracts.ts b/fktry/src/contracts.ts index 8053743..9b8a68d 100644 --- a/fktry/src/contracts.ts +++ b/fktry/src/contracts.ts @@ -166,8 +166,9 @@ export interface CorrectionUnit { id: number; kind: 'checksum-warden' | 'redundancy-gunship' | 'hash-auditor'; pos: Vec2; - /** sim-defined phase, e.g. 'approach' | 'audit' | 'tether' | 'prescan' | 'stasis' | 'leaving' */ - phase: string; + /** v9.1 PINNED (SCREEN string-matches this; a free string was a silent-miss trap): + * the full lifecycle vocabulary. SIM: request additions via NOTES, never invent. */ + phase: 'approach' | 'audit' | 'tether' | 'prescan' | 'stasis' | 'leaving'; progress: number; // 0..1 of current phase target?: number; // warden: audited entity; gunship: the PARITY ANCHOR rect?: { x: number; y: number; w: number; h: number }; // gunship sector / auditor stasis