From b002e68b5a1ceabf791a8c12f3767342ca25c926 Mon Sep 17 00:00:00 2001 From: type-two Date: Wed, 29 Jul 2026 12:41:28 +1000 Subject: [PATCH] [orchestrator] v9.1 addendum: 'notice' joins the phase union; type SCREEN's fixture The pin caught SIM's in-flight code using a 'notice' phase within ten minutes of landing - the mandated gap between the fax and the act is a real lifecycle state the original six missed. SCREEN's test fixture takes CorrectionUnit['phase'] now, so a typo'd phase fails at compile instead of silently never matching. Co-Authored-By: Claude Fable 5 --- fktry/src/audio/compliance.test.ts | 2 +- fktry/src/contracts.ts | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/fktry/src/audio/compliance.test.ts b/fktry/src/audio/compliance.test.ts index 2f8700b..a635559 100644 --- a/fktry/src/audio/compliance.test.ts +++ b/fktry/src/audio/compliance.test.ts @@ -14,7 +14,7 @@ import { COMPLIANCE_HZ, RATIFY_TRIAD } from './sfx'; function unit( id: number, - phase: string, + phase: CorrectionUnit['phase'], // v9.1: the union is pinned now — a typo'd phase fails here kind: CorrectionUnit['kind'] = 'checksum-warden', ): CorrectionUnit { return { id, kind, pos: { x: 0, y: 0 }, phase, progress: 0 }; diff --git a/fktry/src/contracts.ts b/fktry/src/contracts.ts index 9b8a68d..f8309e3 100644 --- a/fktry/src/contracts.ts +++ b/fktry/src/contracts.ts @@ -168,7 +168,11 @@ export interface CorrectionUnit { pos: Vec2; /** 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'; + phase: 'notice' | 'approach' | 'audit' | 'tether' | 'prescan' | 'stasis' | 'leaving'; + // 'notice' = the mandated gap between the fax and the act — the unit exists, + // is visible on approach vectors, but has not begun. (Added v9.1 when the pin + // caught SIM's in-flight code already using it — the union earned its keep in + // its first ten minutes.) 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