{"schemaVersion":"developer.reits.tech/runner-factory-reconciliation-snapshot-coordinator/v1","status":"COORDINATOR_IMPLEMENTED_NOT_CONFIGURED","observedAt":"2026-07-20T20:30:00Z","scope":{"mode":"FIVE_SOURCE_CONCURRENT_READ_ONLY","sources":5,"consistency":"STRONGLY_CONSISTENT","timeoutMs":2000,"maxCaptureSkewMs":2000,"partialReadPolicy":"NORMALIZE_UNKNOWN_AND_CONTAIN","mutationPolicy":"NO_WRITE_CAPABILITY"},"truth":{"configuredSourceReaders":0,"runtimeIdentityConfigured":false,"runtimeCaptures":0,"runtimeSourceReads":0,"liveSnapshots":0,"externalReadsExecuted":0,"externalWritesExecuted":0,"mutationsExecuted":0,"secretValuesRecorded":0,"paidResourcesCreated":false,"readinessGateSatisfied":false,"deploymentPermitted":false},"implementation":{"coordinator":"ops/runner-factory/reconciliation-snapshot-coordinator.mjs","fixtureRegistry":"ops/runner-factory/reconciliation-snapshot-coordinator-fixtures.json","verifier":"scripts/verify-runner-factory-reconciliation-snapshot-coordinator.mjs","reservationReader":"NOT_CONFIGURED","capacityReader":"NOT_CONFIGURED","workerReader":"NOT_CONFIGURED","runnerReader":"NOT_CONFIGURED","journalReader":"NOT_CONFIGURED"},"operations":[{"id":"plan","guard":"exact capture, plan, job-attempt, repository, pool and slot scope","result":"five immutable strongly-consistent read requests with one deadline"},{"id":"capture","guard":"five authority-pinned reader functions and bounded response identities","result":"complete or explicitly unavailable normalized snapshot packet"},{"id":"verify","guard":"exact packet shape, source order and recomputed read/snapshot/packet digests","result":"local boolean verification without external reads or writes"}],"sourceReaders":[{"source":"Reservation","authority":"reservation-ledger","query":"exact dual-key reservation, lease and terminal state"},{"source":"Capacity","authority":"capacity-ledger","query":"exact pool slot, generation, occupancy and freeze state"},{"source":"Worker","authority":"ec2-worker-read-model","query":"exact instance lifecycle and root-volume retirement state"},{"source":"Runner","authority":"gitea-runner-read-model","query":"exact Gitea plus root-agent credential and local-state facts"},{"source":"Journal","authority":"append-only-journal","query":"exact consistent head, terminal state and receipt count"}],"captureStates":[{"id":"PLANNED","meaning":"five read requests share one scope digest and deadline"},{"id":"READING","meaning":"all five read-only ports execute concurrently"},{"id":"COMPLETE","meaning":"five observed authority-pinned results fit the skew window"},{"id":"PARTIAL_UNAVAILABLE","meaning":"one to four sources normalized to UNKNOWN for containment"},{"id":"ALL_UNAVAILABLE","meaning":"zero sources observed and scheduling must contain"},{"id":"DENIED_INTEGRITY","meaning":"identity, consistency, shape, time, secret or digest guard failed"}],"invariants":["one capture binds an exact plan, job attempt, repository, pool and slot scope","exactly five named reader ports are required and no wildcard reader is accepted","all source queries request strongly consistent reads under one bounded deadline","source name and authority are pinned independently of driver-returned payload data","every response must echo the exact immutable request digest","every observed read timestamp must fall inside the capture deadline","the maximum skew between observed source reads cannot exceed two seconds","reader rejection or timeout becomes explicit UNAVAILABLE and UNKNOWN evidence","partial reads are never omitted, substituted with cache data or treated as safe","cross-source scope drift is preserved for the reconciliation planner to contain","secret-like keys are rejected before snapshot or receipt materialization","source records use exact bounded fields and enum states without extension bags","source receipts are ordered Reservation, Capacity, Worker, Runner and Journal","snapshot identity commits to scope, normalized facts and all source receipts","read-plan, snapshot and packet digests are independently recomputed on verify","deterministic replay of the same capture and source facts yields the same digests","the coordinator owns no terminate, delete, seal, release, freeze or page operation","runtime source reads, writes, mutations, snapshots and secret values remain zero"],"verification":{"status":"PASS_FIXTURE_ONLY","fixtures":30,"completeCaptures":3,"partialCaptures":7,"allUnavailableCaptures":1,"deniedInputs":19,"sourceReadAttempts":55,"unavailableSourceResults":16,"plannerIntegrationCases":11,"secretValuesRecorded":0,"externalCallsExecuted":0,"mutationsExecuted":0},"failureClasses":[{"code":"RF_SOURCE_TIMEOUT|RF_SOURCE_UNAVAILABLE","effect":"normalize that source to UNKNOWN and force planner containment"},{"code":"RF_RECON_SOURCE_IDENTITY","effect":"deny response with wrong source, authority, consistency, digest or timestamp identity"},{"code":"RF_RECON_SOURCE_SHAPE","effect":"deny malformed or extension-bearing source facts"},{"code":"RF_RECON_CAPTURE_SKEW|RF_RECON_SOURCE_TIME","effect":"deny incoherent capture timing instead of joining unrelated reads"},{"code":"RF_RECON_CAPTURE_SECRET","effect":"deny secret-like input before it can enter receipts or snapshot evidence"},{"code":"RF_RECON_CAPTURE_DIGEST","effect":"deny any read-plan, snapshot or packet evidence tamper"}],"productionPrerequisites":["dedicated loopback Controller runtime identity and root-owned configuration","strongly consistent Reservation reader with exact dual-key scope","strongly consistent Capacity reader with pool generation fencing","credential-free EC2 Worker read model with volume retirement proof","read-only Gitea and root-agent Runner evidence aggregation","consistent append-only Journal head and range verifier","deadline, retry-budget and partial-read telemetry with fixed labels","security, platform, reliability and cost-owner approval"],"fixtureRegistry":{"schemaVersion":"developer.reits.tech/runner-factory-reconciliation-snapshot-coordinator-fixtures/v1","fixedTime":"2026-07-20T20:30:00.000Z","cases":[{"id":"RFSC-01","profile":"all-observed","expected":"CAPTURE","status":"COMPLETE","observedSources":5},{"id":"RFSC-02","profile":"deterministic-replay","expected":"CAPTURE","status":"COMPLETE","observedSources":5},{"id":"RFSC-03","profile":"reservation-timeout","expected":"CAPTURE","status":"PARTIAL_UNAVAILABLE","observedSources":4},{"id":"RFSC-04","profile":"capacity-error","expected":"CAPTURE","status":"PARTIAL_UNAVAILABLE","observedSources":4},{"id":"RFSC-05","profile":"worker-timeout","expected":"CAPTURE","status":"PARTIAL_UNAVAILABLE","observedSources":4},{"id":"RFSC-06","profile":"runner-error","expected":"CAPTURE","status":"PARTIAL_UNAVAILABLE","observedSources":4},{"id":"RFSC-07","profile":"journal-timeout","expected":"CAPTURE","status":"PARTIAL_UNAVAILABLE","observedSources":4},{"id":"RFSC-08","profile":"two-unavailable","expected":"CAPTURE","status":"PARTIAL_UNAVAILABLE","observedSources":3},{"id":"RFSC-09","profile":"four-unavailable","expected":"CAPTURE","status":"PARTIAL_UNAVAILABLE","observedSources":1},{"id":"RFSC-10","profile":"all-unavailable","expected":"CAPTURE","status":"ALL_UNAVAILABLE","observedSources":0},{"id":"RFSC-11","profile":"scope-drift-preserved","expected":"CAPTURE","status":"COMPLETE","observedSources":5,"plannerVerdict":"SCOPE_MISMATCH"},{"id":"RFSC-12","profile":"wrong-source","expected":"DENY","errorCode":"RF_RECON_SOURCE_IDENTITY"},{"id":"RFSC-13","profile":"wrong-authority","expected":"DENY","errorCode":"RF_RECON_SOURCE_IDENTITY"},{"id":"RFSC-14","profile":"eventual-consistency","expected":"DENY","errorCode":"RF_RECON_SOURCE_IDENTITY"},{"id":"RFSC-15","profile":"wrong-request-digest","expected":"DENY","errorCode":"RF_RECON_SOURCE_IDENTITY"},{"id":"RFSC-16","profile":"invalid-read-time","expected":"DENY","errorCode":"RF_RECON_SOURCE_IDENTITY"},{"id":"RFSC-17","profile":"capture-skew","expected":"DENY","errorCode":"RF_RECON_CAPTURE_SKEW"},{"id":"RFSC-18","profile":"read-after-deadline","expected":"DENY","errorCode":"RF_RECON_SOURCE_TIME"},{"id":"RFSC-19","profile":"secret-like-response","expected":"DENY","errorCode":"RF_RECON_SOURCE_SECRET"},{"id":"RFSC-20","profile":"extra-response-field","expected":"DENY","errorCode":"RF_RECON_SOURCE_IDENTITY"},{"id":"RFSC-21","profile":"missing-response-field","expected":"DENY","errorCode":"RF_RECON_SOURCE_IDENTITY"},{"id":"RFSC-22","profile":"extra-value-field","expected":"DENY","errorCode":"RF_RECON_SOURCE_SHAPE"},{"id":"RFSC-23","profile":"invalid-source-state","expected":"DENY","errorCode":"RF_RECON_SOURCE_SHAPE"},{"id":"RFSC-24","profile":"secret-like-scope","expected":"DENY","errorCode":"RF_RECON_CAPTURE_SECRET"},{"id":"RFSC-25","profile":"invalid-capture-id","expected":"DENY","errorCode":"RF_RECON_CAPTURE_SCOPE"},{"id":"RFSC-26","profile":"invalid-repository","expected":"DENY","errorCode":"RF_RECON_CAPTURE_SCOPE"},{"id":"RFSC-27","profile":"invalid-job-id","expected":"DENY","errorCode":"RF_RECON_CAPTURE_SCOPE"},{"id":"RFSC-28","profile":"invalid-pool-id","expected":"DENY","errorCode":"RF_RECON_CAPTURE_SCOPE"},{"id":"RFSC-29","profile":"tampered-packet","expected":"DENY","errorCode":"RF_RECON_CAPTURE_DIGEST"},{"id":"RFSC-30","profile":"missing-reader","expected":"DENY","errorCode":"RF_RECON_SOURCE_CONFIG"}]},"discovery":{"reconciliation":"/api/runner-factory/reconciliation","controller":"/api/runner-factory/controller","workbench":"/release-foundation#snapshot-coordinator","schema":"/schemas/runner-factory-reconciliation-snapshot-coordinator.v1.schema.json"}}