{"schemaVersion":"developer.reits.tech/controller-deployment-qualification/v1","status":"T06_REPOSITORY_IMPLEMENTED_LIVE_DEDICATED_CONTROLLER_BLOCKED","observedAt":"2026-07-24T09:46:42Z","program":{"acceptedKnives":4,"totalKnives":36,"currentOrdinal":5,"currentKnife":"D05","remainingIncludingCurrent":32,"remainingAfterCurrentAcceptance":31},"task":{"id":"D05-T06","title":"Deploy the independent Controller and loopback port 8110","owner":"Security + Runtime + SRE","repositoryImplementationComplete":true,"liveDedicatedHostObserved":false,"liveDeploymentAdmitted":false,"controllerListenerObserved":false,"productionAccepted":false,"nextTask":"D05-T07","nextTaskTitle":"Sign release identity and execute intentional rollback","nextTaskBlocked":true},"planBinding":{"planId":"D05-T06-CONTROLLER-DEPLOYMENT-V1","path":"ops/runner-factory/deployment/controller-deployment-plan.json","sha256":"71407e09e779a163febaf6c1d7e261243eff70d3775e15499645c253a6eedce0","maximumReceiptAgeHours":2,"exactRevisionRequired":true},"dependencyTruth":{"requiredGates":["D05-G01","D05-G02","D05-G03","D05-G04"],"satisfiedGates":0,"requiredBeforeInstallation":4,"repositoryCandidatesAreProductionReceipts":false,"portalHostMayBeReused":false,"decision":"DENIED_G01_G04_AND_DEDICATED_HOST_ABSENT"},"repositoryPacket":{"exactArtifacts":6,"componentCandidates":6,"productionQualifiedComponents":0,"readinessGateContracts":11,"runtimeProbeContracts":8,"requiredIndependentSignatures":3,"observedIndependentSignatures":0,"hardenedUnitPresent":true,"loopbackOnlyConfigurationPresent":true,"negativeWebhookContractPresent":true,"preflightPresent":true,"collectorPresent":true,"verifierPresent":true},"currentHostObservation":{"source":"EC2_READ_ONLY_PRODUCTION_HOST_AUDIT","portalRelease":"developer-portal@0d22b6098f92-7015f86fa477","portalSourceRevision":"0d22b6098f92a6124241cfa803b99d648ba882b7","productionHostMarkerPresent":true,"dedicatedControllerMarkerPresent":false,"runtimeManifestPresent":false,"readinessDirectoryPresent":false,"listenerAuthorizationPresent":false,"runtimeDirectoryPresent":false,"controllerUnitLoadState":"not-found","controllerUnitActiveState":"inactive","controllerProcesses":0,"portal8100Listeners":1,"controller8110Listeners":0,"public8110Routes":0,"runnerServices":0,"healthHttp":0,"readyHttp":0,"qualification":"DENIED_SHARED_PRODUCTION_HOST_AND_REQUIRED_RUNTIME_ABSENT"},"topology":{"current":{"host":"shared production application EC2","portal":"127.0.0.1:8100","controller":"ABSENT","admission":"DENIED"},"target":{"host":"dedicated linux-amd64 control plane","portalCoLocated":false,"runnerCoLocated":false,"publicIp":false,"inboundRules":0,"productionRoutes":0,"instanceProfile":false,"imds":false,"controller":"127.0.0.1:8110","reverseProxy":false,"serviceIdentity":"reits-runner-factory","mode":"EVIDENCE_ONLY_UNTIL_ALL_GATES_READY"}},"components":[{"id":"RESERVATION_READER","mode":"READ_ONLY","repositoryCandidate":true,"productionQualified":false,"runtimeBound":false},{"id":"CAPACITY_READER","mode":"READ_ONLY","repositoryCandidate":true,"productionQualified":false,"runtimeBound":false},{"id":"WORKER_READER","mode":"READ_ONLY","repositoryCandidate":true,"productionQualified":false,"runtimeBound":false},{"id":"RUNNER_READER","mode":"READ_ONLY","repositoryCandidate":true,"productionQualified":false,"runtimeBound":false},{"id":"JOURNAL_READER","mode":"READ_ONLY","repositoryCandidate":true,"productionQualified":false,"runtimeBound":false},{"id":"READINESS_VERIFIER","mode":"VERIFY_ONLY","repositoryCandidate":true,"productionQualified":false,"runtimeBound":false}],"readiness":{"required":11,"observed":0,"ready":false,"receiptVerified":false,"gates":[{"code":"RF_READY_DEDICATED_HOST","owner":"PLATFORM_SRE","state":"MISSING"},{"code":"RF_READY_SERVICE_IDENTITY","owner":"SECURITY","state":"MISSING"},{"code":"RF_READY_WEBHOOK_SECRET","owner":"SECURITY","state":"MISSING"},{"code":"RF_READY_RESERVATION_STORE","owner":"DATA_PLATFORM","state":"MISSING"},{"code":"RF_READY_RECEIPT_SIGNER","owner":"SECURITY","state":"MISSING"},{"code":"RF_READY_TOKEN_BROKER","owner":"DEVELOPER_PLATFORM","state":"MISSING"},{"code":"RF_READY_WORKER_PROVIDER","owner":"PLATFORM_SRE","state":"MISSING"},{"code":"RF_READY_GITEA_CONTROL","owner":"DEVELOPER_PLATFORM","state":"MISSING"},{"code":"RF_READY_CAPACITY_CONTROLLER","owner":"PLATFORM_SRE","state":"MISSING"},{"code":"RF_READY_AUDIT_SINK","owner":"QA_ARCHITECTURE","state":"MISSING"},{"code":"RF_READY_OWNER_APPROVAL","owner":"PRODUCT_OWNER","state":"MISSING"}]},"lifecycle":[{"ordinal":1,"id":"DEPENDENCIES","owner":"Gate Owners","title":"Verify fresh positive G01-G04 receipts","state":"0_OF_4"},{"ordinal":2,"id":"HOST","owner":"Platform SRE","title":"Attest a stopped dedicated host","state":"HOST_ABSENT"},{"ordinal":3,"id":"INSTALL","owner":"Security + Runtime","title":"Install exact release, identity, manifest and credential reference","state":"BLOCKED_PREDECESSOR"},{"ordinal":4,"id":"BIND","owner":"Runtime","title":"Bind six production-qualified components","state":"0_OF_6"},{"ordinal":5,"id":"READY","owner":"Gate Owners","title":"Verify all readiness receipts","state":"0_OF_11"},{"ordinal":6,"id":"LISTEN","owner":"Release Owner","title":"Start exactly one loopback listener","state":"0_LISTENERS"},{"ordinal":7,"id":"PROBE","owner":"Security + QA","title":"Run negative webhook, route, restart and stop probes","state":"0_OF_8"},{"ordinal":8,"id":"SIGN","owner":"Security + Runtime + SRE","title":"Sign one fresh exact qualification receipt","state":"0_OF_3"}],"probes":[{"id":"C01","title":"Dedicated host identity","observed":"NOT_RUN","receipt":false},{"id":"C02","title":"Network and cloud authority absence","observed":"NOT_RUN","receipt":false},{"id":"C03","title":"Service identity and systemd sandbox","observed":"NOT_RUN","receipt":false},{"id":"C04","title":"Manifest, credential reference and six components","observed":"NOT_RUN","receipt":false},{"id":"C05","title":"Health plus 11 of 11 readiness","observed":"NOT_RUN","receipt":false},{"id":"C06","title":"Negative webhook rejection","observed":"NOT_RUN","receipt":false},{"id":"C07","title":"No public or reverse-proxy route","observed":"NOT_RUN","receipt":false},{"id":"C08","title":"Restart, stop closure and rollback","observed":"NOT_RUN","receipt":false}],"acceptanceContract":{"requiredDependencyGates":4,"observedDependencyGates":0,"requiredExactArtifacts":6,"observedExactArtifacts":0,"requiredProductionComponents":6,"observedProductionComponents":0,"requiredReadinessReceipts":11,"observedReadinessReceipts":0,"requiredRuntimeProbes":8,"observedRuntimeProbes":0,"requiredSignatures":3,"observedSignatures":0,"requiredControllerListeners":1,"observedControllerListeners":0,"allConditionsRequired":true,"t06ReceiptAcceptsD05":false},"controls":[{"id":"HOST-FIREBREAK","title":"Production host marker blocks co-location","mechanism":"The unit and preflight both reject /etc/reits-production-host; the Portal EC2 is an explicit denial fixture.","state":"REPOSITORY_BOUND"},{"id":"LOOPBACK-ONLY","title":"8110 cannot become a public application route","mechanism":"Exact bind 127.0.0.1, IPAddressDeny=any, IPAddressAllow=localhost and zero reverse proxy routes are required.","state":"REPOSITORY_BOUND"},{"id":"ROOT-MANIFEST","title":"Runtime configuration is not caller supplied","mechanism":"One root-owned 0640 manifest and exact ConfigRef/KeyRef digests must feed the six-component bootstrap.","state":"REPOSITORY_BOUND"},{"id":"CREDENTIAL-REFERENCE","title":"Webhook credential values never enter evidence","mechanism":"systemd LoadCredential and /run/credentials references are permitted; secret-shaped JSON fields are denied.","state":"REPOSITORY_BOUND"},{"id":"READINESS-NO-BOOLEAN","title":"Readiness requires eleven signed receipts","mechanism":"A caller ready=true value, repository fixture or HTTP 200 without the verified receipt chain cannot promote readiness.","state":"REPOSITORY_BOUND"},{"id":"NEGATIVE-WEBHOOK","title":"Bad requests must fail closed","mechanism":"Unsigned, malformed and non-loopback webhook probes are mandatory and cannot create a plan, worker or external write.","state":"REPOSITORY_BOUND"},{"id":"STOP-AND-ROLLBACK","title":"Listener closure and predecessor recovery are evidence","mechanism":"Stop must close 8110, rollback must restore the named predecessor and neither transition may expose a public route.","state":"REPOSITORY_BOUND"},{"id":"THREE-PARTY-SIGNATURE","title":"Runtime cannot self-approve","mechanism":"Distinct Security, Runtime and SRE Ed25519 principals sign the same two-hour receipt.","state":"REPOSITORY_BOUND"}],"liveEvidence":{"ec2ReadOnlyChecks":18,"serviceStarts":0,"systemdMutations":0,"controllerListenerStarts":0,"publicRouteChanges":0,"externalWritesExecuted":0,"credentialsRecorded":false,"paidResourcesCreated":0,"d05G03Satisfied":false,"d05G04Satisfied":false,"d05G05Satisfied":false,"d05G06Satisfied":false},"invariants":{"portalHostUntouched":true,"controllerListener8110":0,"productionComponentsBound":0,"readinessReceiptsVerified":0,"qualifiedReceipts":0,"programAdvanced":false,"d05Accepted":false},"sources":[{"type":"EC2_READ_ONLY","target":"production Developer Portal host","observedAt":"2026-07-24T09:46:42Z","writes":0},{"type":"REPOSITORY","target":"ops/runner-factory service, unit, manifest and six component candidates","revision":"0d22b6098f92a6124241cfa803b99d648ba882b7"}],"boundary":"D05-T06 is repository-complete only. The current EC2 is a shared production application host and is forbidden by both the unit and preflight. Installation requires fresh G01-G04 receipts, a separately authorized dedicated host, six production component qualifications, eleven signed readiness receipts, eight probes and three independent signatures. No service, listener, route, credential, paid resource or D05 acceptance was created."}