{"data":[{"id":"bcea3c1c-865c-4062-9851-a30d1820db49","source":"cc-execution","status":"synthesis_required","payload":{"ok":true,"jobId":null,"phase":"pull_request","branch":"ai/roof-help-finder-tenant-native","reason":null,"status":"synthesis_required","metrics":{"receiptBytes":0,"releaseCount":0,"toolCallCount":0,"repeatedCallCount":0,"ownerInterruptionCount":0},"version":"1.58.144-request-contract-inference","prNumber":null,"terminal":false,"missionId":"c6546ca0-a522-441c-b26b-033b1c1c85b7","operation":"execute_mission","proofGate":"repair_mission_synthesis_ready","sourceSha":null,"timingsMs":{"gateMs":0,"proofMs":0,"handlerMs":1432,"releaseMs":0,"mutationMs":0,"repositoryMs":0,"missionSetupMs":308,"providerAuthMs":0,"ledgerPrepareMs":308,"ledgerReconcileMs":0,"lineageReconcileMs":0,"resolvePreflightMs":308,"authoritativeLedgerMs":0,"ledgerAsyncDispatchMs":0,"totalSynchronousLedgerMs":308,"asyncBookkeepingDispatchMs":0,"ledgerAuthoritativeCommitMs":0},"nextAction":"Inspect the bounded repository paths, synthesize exact files or anchored_edits, and call /mission/execute again automatically with this same missionId without another owner prompt or workflow switch.","receiptRef":{"mode":"full","missionId":"c6546ca0-a522-441c-b26b-033b1c1c85b7"},"performance":null,"deploymentId":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":5577,"likelyAffectedFiles":["src/applications/proposal-editor/TenantProposalDocument.tsx","scripts/supabase-migration-release.mjs","src/App.css","src/App.tsx","src/applications/proposal-editor/FreeformProposalRenderer.tsx","src/applications/proposal-editor/index.ts","src/applications/proposal-editor/ProposalAssetPicker.tsx","src/PrivateAppShell.tsx","src/PublicAppShell.tsx","scripts/validate-supabase-migration-integrity.mjs","config/capabilities/tenant-workspace-experience.json","src/__tests__/contracts/supabaseMigrationReleaseWorkflow.contract.test.ts"],"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-14T03:15:40.530702+00:00","proof_gate":"repair_mission_synthesis_ready","source_sha":null,"external_id":null,"receipt_type":"execute_mission","idempotency_key":"mission:c6546ca0-a522-441c-b26b-033b1c1c85b7:execute_mission:repair_mission_synthesis_ready:current-generation","mission_step_id":"c226f71b-7caf-4278-a951-ad225ff30e1d","command_center_event_id":"c6546ca0-a522-441c-b26b-033b1c1c85b7"},{"id":"bcebdf1e-9940-4387-8009-b1dc0b151742","source":"owner_authorized_full_backlog_cleanup","status":"recorded","payload":{"category":"pcg_website","disposition":"superseded_execution_attempt","previousStatus":"retryable","sourcePreserved":true,"noCompletionClaim":true,"recoveryPortfolioId":"18d408fb-c19e-ebff-ad95-b84a435e1d25"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-11T16:14:39.646808+00:00","proof_gate":"source_objective_preserved_in_existing_mission_ledger","source_sha":null,"external_id":null,"receipt_type":"owner_backlog_disposition","idempotency_key":"owner-full-backlog-cleanup-20261011:ad9b6c0c-2983-4058-afb1-415a7a5a39fe","mission_step_id":null,"command_center_event_id":"ad9b6c0c-2983-4058-afb1-415a7a5a39fe"},{"id":"bcef1de6-5874-49e2-af11-b036e4d67dd1","source":"forgejo-runtime","status":"verified","payload":{"failed":[],"states":{"forgejo-main/source":"success","forgejo-release/workflow":"success","frontend-cloudflare/live":"success"},"mainSha":"53ada4500c9b7e0faec9c6c3b01a96ccca7e7d6f","missing":[],"pending":[],"required":["forgejo-main/source","forgejo-release/workflow","frontend-cloudflare/live"],"sourceSha":"53ada4500c9b7e0faec9c6c3b01a96ccca7e7d6f","releaseState":"verified","sourceInMain":true,"compareStatus":"protected_main_push_exact_source","releaseTargets":{"frontend":true,"onrunner":false,"migrations":false,"ccExecution":false,"supabaseEdge":false,"edgeFunctionSlugs":[]},"releaseTargetStates":{"frontend":"success"},"requestContractHash":"bbab43a321077a9e26ce5cb828a6ef4cc5cbd0da440b1dbacc3f25570397db89","forgejoWorkflowProof":{"runId":12017,"source":"signed_push_receipt","status":"success","results":{},"conclusion":"success","targetStates":{"frontend":"success"},"targetJobCount":7,"observedTargetStates":{"frontend":"success"}},"onrunnerRuntimeProof":null,"releaseSourceVerified":true,"ccExecutionRuntimeProof":null,"releaseTargetRecoveryProof":null,"exactReleaseVerifiedAfterMainAdvanced":false},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-26T17:22:02.590508+00:00","proof_gate":"canonical_release_terminal_verified","source_sha":"53ada4500c9b7e0faec9c6c3b01a96ccca7e7d6f","external_id":"forgejo-main-53ada4500c9b","receipt_type":"canonical_release_status","idempotency_key":"mission:7bce1d87-eb51-4c5f-8790-9c059a7bbce3:forgejo-release-status:53ada4500c9b7e0faec9c6c3b01a96ccca7e7d6f:verified:forgejo-main/source=success|forgejo-release/workflow=success|frontend-cloudflare/live=success","mission_step_id":"56600bec-c3c4-4edd-9273-6bf9c582cc4a","command_center_event_id":"7bce1d87-eb51-4c5f-8790-9c059a7bbce3"},{"id":"bcefbad4-94cd-4ef8-9e52-c263eeb95a08","source":"cc-execution","status":"deployment_dispatched","payload":{"ok":true,"jobId":null,"phase":"release","branch":null,"reason":null,"status":"deployment_dispatched","metrics":{"receiptBytes":6009,"releaseCount":0,"toolCallCount":6,"repeatedCallCount":5,"ownerInterruptionCount":0},"version":"1.36.9-github-read-resilience","prNumber":4767,"terminal":false,"missionId":"76fa6c19-ea03-4cb0-a805-5d211cb1c4fd","operation":"ship_and_prove","proofGate":"canonical_release_dispatched","sourceSha":"16fb5c183f9981d38d65218ae0bf6d0a802dac72","timingsMs":null,"nextAction":null,"receiptRef":{"mode":"full","missionId":"76fa6c19-ea03-4cb0-a805-5d211cb1c4fd"},"performance":null,"deploymentId":"canonical-release-16fb5c183f99","workflowRunId":31693873790,"releaseTargets":{"frontend":true,"onrunner":false,"migrations":false,"ccExecution":false,"supabaseEdge":false,"edgeFunctionSlugs":[]},"detailsAvailable":true,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":1233,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true},"tenant_id":"a2929648-19db-46c8-9e93-07378ed1aa5f","created_at":"2026-08-13T11:04:12.739509+00:00","proof_gate":"canonical_release_dispatched","source_sha":"16fb5c183f9981d38d65218ae0bf6d0a802dac72","external_id":"canonical-release-16fb5c183f99","receipt_type":"ship_and_prove","idempotency_key":"mission:76fa6c19-ea03-4cb0-a805-5d211cb1c4fd:ship_and_prove:canonical_release_dispatched:16fb5c183f9981d38d65218ae0bf6d0a802dac72:31693873790","mission_step_id":"a54e9e33-bb96-4895-8ae6-4fea2a767284","command_center_event_id":"76fa6c19-ea03-4cb0-a805-5d211cb1c4fd"},{"id":"bcf05e11-35a2-48dc-93a4-c17b19fdeac5","source":"cc-execution","status":"retryable","payload":{"ok":false,"jobId":null,"phase":"pull_request","branch":"ai/objective-first-repair-dbdce2d841be","reason":"pull_request_not_open","status":"retryable","metrics":{"receiptBytes":0,"releaseCount":0,"toolCallCount":0,"repeatedCallCount":0,"ownerInterruptionCount":0},"version":null,"prNumber":2829,"terminal":false,"missionId":"dbdce2d8-41be-42be-8313-7fef179b605e","operation":"automatic_mission_resume","proofGate":"repair_mission_auto_progress_authorization_retryable","sourceSha":null,"timingsMs":{"prReadinessMs":0,"approvedPlanMs":0,"shipAndProveMs":0,"repositoryMutationMs":0,"repositoryProviderMs":0,"repositoryAtomicCommitMs":0,"repositoryBranchCreateMs":0,"repositoryPullRequestCreateMs":0},"nextAction":"Reconcile this same mission and pull request automatically; do not create a replacement branch or PR.","receiptRef":{"mode":"full","missionId":"dbdce2d8-41be-42be-8313-7fef179b605e"},"performance":null,"deploymentId":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":689,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-15T15:23:24.722456+00:00","proof_gate":"repair_mission_auto_progress_authorization_retryable","source_sha":null,"external_id":"2829","receipt_type":"automatic_mission_resume","idempotency_key":"mission:dbdce2d8-41be-42be-8313-7fef179b605e:automatic-mission-resume:2829:repair_mission_auto_progress_authorization_retryable","mission_step_id":"22cb7d1d-6afb-4ad9-a5af-8cabfaba043e","command_center_event_id":"dbdce2d8-41be-42be-8313-7fef179b605e"},{"id":"bcf09c74-8734-4f07-a8a5-12491f7d5d89","source":"cc-execution","status":"blocked","payload":{"reason":"control_plane_maintenance_authorization_required","fingerprint":"2872e8433d9cba4d913215850467e4a605b7614859f65364104fbe2cbc6e6be8"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-27T02:47:22.032179+00:00","proof_gate":"repository_mutation_intent_deterministic_failure","source_sha":null,"external_id":null,"receipt_type":"repository_mutation_intent_blocked","idempotency_key":"mission:7e3aca5b-b3b9-45fa-b6b4-5d0ec144969f:repository-mutation-intent-blocked:2872e8433d9cba4d913215850467e4a605b7614859f65364104fbe2cbc6e6be8","mission_step_id":"7fa46f03-987d-447f-88c5-c35e7392b1a7","command_center_event_id":"7e3aca5b-b3b9-45fa-b6b4-5d0ec144969f"},{"id":"bcf2316b-3e03-4bcf-97e7-60d85911d134","source":"cc-execution","status":"waiting_for_gate","payload":{"ok":true,"jobId":null,"phase":"pull_request","branch":"ai/objective-first-repair-41e94cc87723","reason":"pull_request_checks_pending","status":"waiting_for_gate","metrics":{"receiptBytes":0,"releaseCount":0,"toolCallCount":0,"repeatedCallCount":0,"ownerInterruptionCount":0},"version":"1.58.182-witness-render-cold-start-aware","prNumber":3125,"terminal":false,"missionId":"41e94cc8-7723-49bf-af79-a067f678dadb","operation":"execute_mission","proofGate":"repair_mission_waiting_for_gate","sourceSha":null,"timingsMs":{"gateMs":0,"proofMs":0,"handlerMs":4162,"releaseMs":0,"mutationMs":0,"repositoryMs":0,"prReadinessMs":3327,"approvedPlanMs":0,"missionSetupMs":1280,"providerAuthMs":0,"shipAndProveMs":0,"ledgerPrepareMs":231,"ledgerReconcileMs":0,"lineageReconcileMs":1049,"resolvePreflightMs":1280,"repositoryMutationMs":0,"repositoryProviderMs":0,"authoritativeLedgerMs":0,"ledgerAsyncDispatchMs":0,"repositoryAtomicCommitMs":0,"repositoryBranchCreateMs":0,"totalSynchronousLedgerMs":231,"asyncBookkeepingDispatchMs":0,"ledgerAuthoritativeCommitMs":0,"repositoryPullRequestCreateMs":0},"nextAction":"Reconcile this same mission and pull request after the exact-head KnockLaunch Gate changes state.","receiptRef":{"mode":"full","missionId":"41e94cc8-7723-49bf-af79-a067f678dadb"},"performance":null,"deploymentId":null,"releaseState":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","pendingProofKinds":["runtime"],"verificationState":null,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":1973,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true,"requestContractState":"pending"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-18T16:29:12.48962+00:00","proof_gate":"repair_mission_waiting_for_gate","source_sha":null,"external_id":"3125","receipt_type":"execute_mission","idempotency_key":"mission:41e94cc8-7723-49bf-af79-a067f678dadb:execute_mission:repair_mission_waiting_for_gate:current-generation","mission_step_id":"2ab21fca-4609-497c-9a07-330c01fa6737","command_center_event_id":"41e94cc8-7723-49bf-af79-a067f678dadb"},{"id":"bcf453c3-6e98-4bab-a04e-97e155719404","source":"cc-execution","status":"blocked","payload":{"reason":"anchored_edit_anchor_missing:src/components/platform/TenantBrandMediaSettings.tsx","fingerprint":"f0e771303875b8000301003e2ccf8e94d4c192eb5ee17cc8d0541799136ce661"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-05T23:35:46.846106+00:00","proof_gate":"repository_mutation_intent_deterministic_failure","source_sha":null,"external_id":null,"receipt_type":"repository_mutation_intent_blocked","idempotency_key":"mission:dd080da9-f8e4-4ff4-8d51-bd19746877cb:repository-mutation-intent-blocked:f0e771303875b8000301003e2ccf8e94d4c192eb5ee17cc8d0541799136ce661","mission_step_id":"e2ee69a2-1d8f-4ac9-872f-6202954b6f53","command_center_event_id":"dd080da9-f8e4-4ff4-8d51-bd19746877cb"},{"id":"bcf86a0f-bdbc-4674-b85e-e4c3997b0006","source":"forgejo-exact-source","status":"verified","payload":{"sourceSha":"029620eeee0811247cd57e9a00c2e4abe2072735","repository":"noel/KnockLaunchOS","repositoryProofs":[{"id":"proof-repository","path":null,"proof":"forgejo_merged_pr_exact_head_gate","headSha":"606f31872178958f0eb810c56a1c5f7e105f5881","prNumber":4476,"gateRunId":14340,"gateContext":"KnockLaunch Gate / KnockLaunch Gate (pull_request)","expectedText":null,"gateTargetUrl":"/noel/KnockLaunchOS/actions/runs/14340/jobs/1","mergeCommitSha":"029620eeee0811247cd57e9a00c2e4abe2072735"}],"requestContractHash":"2bc7c2e8a8ec562a5379f73e7f8662911ec978b934f3d2d57639c247aec13257","namedGateEvidenceReceiptVersion":null},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-02T15:28:16.694897+00:00","proof_gate":"request_contract_repository_verified","source_sha":"029620eeee0811247cd57e9a00c2e4abe2072735","external_id":null,"receipt_type":"request_contract_repository_status","idempotency_key":"mission:c91c868a-d6e2-46e7-9769-862a965c542d:request-contract-repository:2bc7c2e8a8ec562a5379f73e7f8662911ec978b934f3d2d57639c247aec13257:029620eeee0811247cd57e9a00c2e4abe2072735","mission_step_id":"4014420e-ac5e-4f53-81ce-77eafb380f6c","command_center_event_id":"c91c868a-d6e2-46e7-9769-862a965c542d"},{"id":"bcfb5a83-b19e-4339-b9fb-9b78374da8bb","source":"cc-execution","status":"recorded","payload":{"objective":"Ship and prove noel/KnockLaunchOS PR #432","tenantRef":"bigpapisiceys","receivedAt":"2026-08-19T17:06:29.607Z","fingerprint":"a801caad9720d36018340ba589c2201800727538c935e110e5ab56dc4869941c","workstreamRef":"bigpapisiceys","conversationId":null,"canonicalBranch":null,"requestedBranch":null,"conversationContext":null},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-08-19T17:06:30.123385+00:00","proof_gate":"tenant_workstream_contribution_recorded","source_sha":null,"external_id":null,"receipt_type":"tenant_workstream_contribution","idempotency_key":"mission:ab2bdda9-217e-4fe6-8a5b-b66109db7a6e:tenant-workstream-contribution:a801caad9720d36018340ba589c2201800727538c935e110e5ab56dc4869941c","mission_step_id":null,"command_center_event_id":"ab2bdda9-217e-4fe6-8a5b-b66109db7a6e"},{"id":"bcfdb1d8-4ca9-4e39-b92b-86b7ddde9ddd","source":"forgejo","status":"waiting","payload":{"branch":"ai/golden-restore-point-f4009fee-20260909","prNumber":2269,"nextAction":"Follow the existing canonical release to terminal proof.","mergeCommitSha":"3c07f8f6fa8d5fc39c9ebd57afce35ca48a5f9d2","branchDeletedAfterMerge":true,"correctiveGenerationCreated":false},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-10T04:09:49.775224+00:00","proof_gate":"forgejo_merged_pr_is_authoritative_source_lineage","source_sha":"3c07f8f6fa8d5fc39c9ebd57afce35ca48a5f9d2","external_id":"2269","receipt_type":"source_lineage_merged_pr_authoritative","idempotency_key":"mission:4e4f39e7-aef5-40d4-ba05-4db4c43acb4d:merged-pr:2269:3c07f8f6fa8d5fc39c9ebd57afce35ca48a5f9d2","mission_step_id":"db80a112-da53-4509-99db-36e3c6e8c033","command_center_event_id":"4e4f39e7-aef5-40d4-ba05-4db4c43acb4d"},{"id":"bd005839-e008-42fe-9d69-9106b0a582f4","source":"cc-execution","status":"waiting_for_gate","payload":{"ok":true,"jobId":null,"phase":"pull_request","branch":"ai/objective-first-repair-741094365866","reason":"provider_verified_auto_progress_owns_gate_merge_release_outside_owner_response","status":"waiting_for_gate","metrics":{"receiptBytes":39978,"releaseCount":0,"toolCallCount":12,"repeatedCallCount":7,"executorlessWaitMs":101088,"firstUsefulResultAt":"2026-10-04T11:55:02.315Z","recoveryAttemptCount":8,"ownerInterruptionCount":0},"version":"1.64.90-owner-contract-autocompile","prNumber":4758,"terminal":false,"missionId":"74109436-5866-4098-864d-d1dd3d27e466","operation":"execute_mission","proofGate":"repair_mission_pr_handed_off_to_supervisor","sourceSha":null,"timingsMs":{"gateMs":0,"proofMs":0,"handlerMs":6667,"releaseMs":0,"mutationMs":0,"repositoryMs":0,"prReadinessMs":0,"approvedPlanMs":3887,"missionSetupMs":358,"providerAuthMs":0,"shipAndProveMs":0,"ledgerPrepareMs":250,"ledgerReconcileMs":0,"lineageReconcileMs":108,"resolvePreflightMs":358,"repositoryMutationMs":2780,"repositoryProviderMs":2780,"authoritativeLedgerMs":0,"ledgerAsyncDispatchMs":0,"repositoryAtomicCommitMs":2617,"repositoryBranchCreateMs":0,"totalSynchronousLedgerMs":250,"asyncBookkeepingDispatchMs":0,"ledgerAuthoritativeCommitMs":0,"repositoryPullRequestCreateMs":163},"nextAction":"Canonical KnockLaunch Gate notifier and durable mission supervisor own Gate, merge, release, and proof progression from this exact PR head outside the owner response path.","receiptRef":{"mode":"full","missionId":"74109436-5866-4098-864d-d1dd3d27e466"},"performance":null,"deploymentId":null,"releaseState":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","pendingProofKinds":["repository","runtime"],"verificationState":null,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":3464,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true,"requestContractState":"pending"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-04T11:55:58.114355+00:00","proof_gate":"repair_mission_pr_handed_off_to_supervisor","source_sha":null,"external_id":"4758","receipt_type":"execute_mission","idempotency_key":"mission:74109436-5866-4098-864d-d1dd3d27e466:execute_mission:repair_mission_pr_handed_off_to_supervisor:current-generation","mission_step_id":"a86b76cc-c0f3-44d3-ad1a-42817da9b605","command_center_event_id":"74109436-5866-4098-864d-d1dd3d27e466"},{"id":"bd030080-b4de-4147-815d-596f17439b2c","source":"cc-execution","status":"release_reconciliation_pending","payload":{"ok":true,"jobId":null,"phase":"pull_request","branch":"ai/objective-first-repair-17cc9a02a846","reason":null,"status":"release_reconciliation_pending","metrics":{"receiptBytes":45503,"releaseCount":0,"toolCallCount":22,"repeatedCallCount":10,"executorlessWaitMs":368954,"firstUsefulResultAt":"2026-10-03T12:33:15.910Z","recoveryAttemptCount":0,"ownerInterruptionCount":0},"version":null,"prNumber":4630,"terminal":false,"missionId":"17cc9a02-a846-4440-915a-29e007081464","operation":"automatic_mission_resume","proofGate":"canonical_release_reconciliation_pending","sourceSha":"c4444034439600d45f3f58dec782353279ecd0ae","timingsMs":{"prReadinessMs":784,"approvedPlanMs":0,"shipAndProveMs":3076,"repositoryMutationMs":0,"repositoryProviderMs":0,"repositoryAtomicCommitMs":0,"repositoryBranchCreateMs":0,"repositoryPullRequestCreateMs":0},"nextAction":"reconcile_release","receiptRef":{"mode":"full","missionId":"17cc9a02-a846-4440-915a-29e007081464"},"performance":null,"deploymentId":"forgejo-main-c44440344396","releaseState":null,"workflowRunId":null,"releaseTargets":{"frontend":true,"migrations":false,"ccExecution":false,"supabaseEdge":false,"edgeFunctionSlugs":[]},"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","pendingProofKinds":[],"verificationState":null,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":1801,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true,"requestContractState":"pending"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-03T12:39:34.403614+00:00","proof_gate":"canonical_release_reconciliation_pending","source_sha":null,"external_id":"4630","receipt_type":"automatic_mission_resume","idempotency_key":"mission:17cc9a02-a846-4440-915a-29e007081464:automatic-mission-resume:4630:canonical_release_reconciliation_pending","mission_step_id":"dbe2f9f8-04f3-4012-aabc-8bcf9bb9716c","command_center_event_id":"17cc9a02-a846-4440-915a-29e007081464"},{"id":"bd0337fb-7658-48ce-9dc4-d88fe35ff4cf","source":"cc-execution","status":"blocked","payload":{"ok":false,"jobId":null,"phase":"implementation","branch":"ai/objective-first-repair-e2c128abc58a","reason":"control_plane_frozen_explicit_unfreeze_required","status":"blocked","metrics":{"receiptBytes":10364,"releaseCount":0,"toolCallCount":4,"repeatedCallCount":0,"executorlessWaitMs":248063,"firstUsefulResultAt":"2026-10-02T19:54:31.152Z","recoveryAttemptCount":0,"ownerInterruptionCount":0},"version":"1.64.50-onepath-source-domain","prNumber":null,"terminal":false,"missionId":"e2c128ab-c58a-4c80-98ae-916d2c5874fb","operation":"execute_mission","proofGate":"repair_mission_execution_blocked","sourceSha":null,"timingsMs":{"gateMs":0,"proofMs":0,"handlerMs":0,"releaseMs":0,"mutationMs":0,"repositoryMs":0,"prReadinessMs":0,"approvedPlanMs":0,"missionSetupMs":283,"providerAuthMs":0,"shipAndProveMs":0,"ledgerPrepareMs":283,"ledgerReconcileMs":0,"lineageReconcileMs":0,"resolvePreflightMs":283,"repositoryMutationMs":0,"repositoryProviderMs":0,"authoritativeLedgerMs":0,"ledgerAsyncDispatchMs":0,"repositoryAtomicCommitMs":0,"repositoryBranchCreateMs":0,"totalSynchronousLedgerMs":283,"asyncBookkeepingDispatchMs":0,"ledgerAuthoritativeCommitMs":0,"repositoryPullRequestCreateMs":0},"nextAction":null,"receiptRef":{"mode":"full","missionId":"e2c128ab-c58a-4c80-98ae-916d2c5874fb"},"performance":null,"deploymentId":null,"releaseState":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","pendingProofKinds":["runtime"],"verificationState":null,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":1459,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true,"requestContractState":"pending"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-02T19:58:23.840152+00:00","proof_gate":"repair_mission_execution_blocked","source_sha":null,"external_id":null,"receipt_type":"execute_mission","idempotency_key":"mission:e2c128ab-c58a-4c80-98ae-916d2c5874fb:execute_mission:repair_mission_execution_blocked:current-generation","mission_step_id":"522eba07-92e3-475d-97b9-c6d786f1378a","command_center_event_id":"e2c128ab-c58a-4c80-98ae-916d2c5874fb"},{"id":"bd06af70-cce1-440d-aaa9-da6c770847c7","source":"cc-execution","status":"waiting_for_gate","payload":{"ok":true,"jobId":null,"phase":"pull_request","branch":"ai/redfish-real-route-revolution-20260828","reason":"pull_request_checks_pending","status":"waiting_for_gate","metrics":{"receiptBytes":12151,"releaseCount":0,"toolCallCount":4,"repeatedCallCount":0,"ownerInterruptionCount":0},"version":"1.55.7-queue-hardening","prNumber":974,"terminal":false,"missionId":"4fa4aff7-734a-442c-8716-87328a78ed9a","operation":"execute_mission","proofGate":"repair_mission_waiting_for_gate","sourceSha":null,"timingsMs":{"handlerMs":1117,"prReadinessMs":984,"approvedPlanMs":0,"missionSetupMs":955,"shipAndProveMs":0},"nextAction":"Reconcile this same mission and pull request after the exact-head KnockLaunch Gate changes state.","receiptRef":{"mode":"full","missionId":"4fa4aff7-734a-442c-8716-87328a78ed9a"},"performance":null,"deploymentId":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":5966,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true},"tenant_id":"de8369b6-a78f-40bb-ae1f-28ffca62bc7e","created_at":"2026-08-28T23:21:51.147436+00:00","proof_gate":"repair_mission_waiting_for_gate","source_sha":null,"external_id":"974","receipt_type":"execute_mission","idempotency_key":"mission:4fa4aff7-734a-442c-8716-87328a78ed9a:execute_mission:repair_mission_waiting_for_gate:current-generation","mission_step_id":"8fba7560-ffa3-4584-a907-0038197afb6f","command_center_event_id":"4fa4aff7-734a-442c-8716-87328a78ed9a"},{"id":"bd088a00-543d-412b-8702-aefb69754d53","source":"cc-execution","status":"authorized","payload":{"paths":["workers/cc-execution/src/release-target-ownership.js","workers/cc-execution/src/version.js","workers/cc-execution/test/release-orchestration-invariants.test.js"],"reason":"Corrective generation after merged branch deletion to align deployed release reconciliation ownership with the canonical no-op release planner.","baseSha":"1a5fd027a5de20cce48cf8e29fa24935504a4cc8","issuedAt":1788522295240,"expiresAt":1788522475240,"missionId":"43992403-f254-4211-bc17-098b73a8f872","authorizationId":"53e5cb12-7b4d-497f-909e-16c685bfb82c","retryableWithinExactScope":true},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-04T11:44:55.702182+00:00","proof_gate":"control_plane_maintenance_scope_authorized","source_sha":"1a5fd027a5de20cce48cf8e29fa24935504a4cc8","external_id":null,"receipt_type":"control_plane_maintenance_authorization","idempotency_key":"control-plane-maintenance-authorize:53e5cb12-7b4d-497f-909e-16c685bfb82c","mission_step_id":"f84289a3-216f-4c3c-a1f4-edbf79ec19be","command_center_event_id":"43992403-f254-4211-bc17-098b73a8f872"},{"id":"bd089764-ab0a-444b-82b4-322b7cceb8ed","source":"durable-mission-ledger","status":"verified","payload":{"sourceSha":"da0898299566b1dc573f68ce479eb2022af4f96c","requestContractProof":{"legacy":false,"present":true,"outcomes":[{"id":"launch-hub","satisfied":true,"statement":"Successful generic login lands on a compact launch hub that presents Businesses and Apps as the two primary choices, with no automatic single-tenant redirect.","proofConditionIds":["repo-login-flow","repo-launch-hub","runtime-launch-hub"]},{"id":"tenant-selection-revamp","satisfied":true,"statement":"The tenant selection surface is visually refactored into compact branded business cards and removes developer-facing grouping, role badges, GodMode/audit/recovery jargon from the normal user experience while preserving owner and platform access.","proofConditionIds":["repo-launch-hub","runtime-launch-hub"]},{"id":"direct-app-launch","satisfied":true,"statement":"The Apps section only lists launchable tenant-user applications for at least one accessible business and opens directly in the last valid or sole eligible business, otherwise presenting a compact business chooser for that app.","proofConditionIds":["repo-launch-hub","runtime-launch-hub"]}],"satisfied":true,"constraints":[{"id":"preserve-access","satisfied":true,"statement":"Preserve tenant permissions, tenant scoping, app-specific login behavior, owner access, platform-admin access, and existing routing/security contracts.","proofConditionIds":["repo-login-flow","repo-launch-hub"]},{"id":"frontend-only","satisfied":true,"statement":"Change frontend source only and release only the frontend target.","proofConditionIds":["repo-login-flow","repo-launch-hub","runtime-launch-hub"]}],"contractHash":"51db2c3eb6e747ee1500c6c84811ad7dcb9e1fddb842c058588f3515b2d3922f","releaseBound":true,"witnessBound":false,"visualRequested":false,"visualSatisfied":true,"conditionResults":[{"id":"repo-login-flow","kind":"repository","evidence":{"repositoryProofGate":"request_contract_repository_verified","requestContractHash":"51db2c3eb6e747ee1500c6c84811ad7dcb9e1fddb842c058588f3515b2d3922f","repositoryProofStatus":"verified","repositoryProofSourceSha":"da0898299566b1dc573f68ce479eb2022af4f96c"},"required":true,"satisfied":true},{"id":"repo-launch-hub","kind":"repository","evidence":{"repositoryProofGate":"request_contract_repository_verified","requestContractHash":"51db2c3eb6e747ee1500c6c84811ad7dcb9e1fddb842c058588f3515b2d3922f","repositoryProofStatus":"verified","repositoryProofSourceSha":"da0898299566b1dc573f68ce479eb2022af4f96c"},"required":true,"satisfied":true},{"id":"runtime-launch-hub","kind":"runtime","evidence":{"releaseState":"verified","activeReleaseTargets":["frontend"],"releaseRequestContractHash":"51db2c3eb6e747ee1500c6c84811ad7dcb9e1fddb842c058588f3515b2d3922f"},"required":true,"satisfied":true}],"validationErrors":[],"pendingProofKinds":[],"activeReleaseTargets":["frontend"]},"authoritativeMissionRefresh":true,"evaluatedRequestContractRevision":4},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-10T04:53:16.361196+00:00","proof_gate":"request_contract_terminal_verified","source_sha":"da0898299566b1dc573f68ce479eb2022af4f96c","external_id":null,"receipt_type":"request_contract_reconciliation","idempotency_key":"mission:387400c2-2d01-4a97-9e51-345d958591d8:request-contract:51db2c3eb6e747ee1500c6c84811ad7dcb9e1fddb842c058588f3515b2d3922f:da0898299566b1dc573f68ce479eb2022af4f96c:verified:","mission_step_id":"6f69d37a-1a6e-4a7f-b599-29f01242beca","command_center_event_id":"387400c2-2d01-4a97-9e51-345d958591d8"},{"id":"bd096e98-749c-4afd-ae98-19db4fe18633","source":"cc-execution","status":"blocked","payload":{"ok":false,"jobId":null,"phase":"pull_request","branch":null,"reason":"anchored_edits resolution failed","status":"blocked","metrics":{"receiptBytes":925,"releaseCount":0,"toolCallCount":1,"repeatedCallCount":0,"ownerInterruptionCount":0},"version":"1.30.20-pr-scoped-release-missions","prNumber":null,"terminal":false,"missionId":"fb779fc9-aca4-40b9-8e61-a168139f561b","operation":"execute_mission","proofGate":"repair_mission_execution_blocked","sourceSha":null,"timingsMs":null,"nextAction":null,"receiptRef":{"mode":"full","missionId":"fb779fc9-aca4-40b9-8e61-a168139f561b"},"performance":null,"deploymentId":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"onePullRequest":true,"terminalProofRequired":true},"sourceReceiptBytes":676,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true},"tenant_id":"c55998b4-82a3-467e-8d35-177bb4785f6e","created_at":"2026-08-07T01:09:50.50587+00:00","proof_gate":"repair_mission_execution_blocked","source_sha":null,"external_id":null,"receipt_type":"execute_mission","idempotency_key":"mission:fb779fc9-aca4-40b9-8e61-a168139f561b:execute_mission:repair_mission_execution_blocked","mission_step_id":"92591104-3f3a-46ef-9013-635ef23846b1","command_center_event_id":"fb779fc9-aca4-40b9-8e61-a168139f561b"},{"id":"bd0a572a-3f0c-46c9-bcbc-27dc05933366","source":"cc-execution","status":"waiting_for_gate","payload":{"ok":true,"jobId":null,"phase":"implementation","branch":"ai/objective-first-repair-5ea67245081d","reason":"provider_verified_auto_progress_owns_gate_merge_release_outside_owner_response","status":"waiting_for_gate","metrics":{"receiptBytes":0,"releaseCount":0,"toolCallCount":0,"repeatedCallCount":0,"ownerInterruptionCount":0},"version":"1.58.179-terminal-receipt-guard","prNumber":3023,"terminal":false,"missionId":"5ea67245-081d-4e7f-b1ab-b6c933019c4d","operation":"execute_mission","proofGate":"repair_mission_pr_handed_off_to_supervisor","sourceSha":null,"timingsMs":{"gateMs":0,"proofMs":0,"handlerMs":14095,"releaseMs":0,"mutationMs":0,"repositoryMs":0,"prReadinessMs":0,"approvedPlanMs":7502,"missionSetupMs":540,"providerAuthMs":0,"shipAndProveMs":0,"ledgerPrepareMs":540,"ledgerReconcileMs":0,"lineageReconcileMs":0,"resolvePreflightMs":540,"repositoryMutationMs":6593,"repositoryProviderMs":6593,"authoritativeLedgerMs":0,"ledgerAsyncDispatchMs":0,"repositoryAtomicCommitMs":3395,"repositoryBranchCreateMs":0,"totalSynchronousLedgerMs":540,"asyncBookkeepingDispatchMs":0,"ledgerAuthoritativeCommitMs":0,"repositoryPullRequestCreateMs":3198},"nextAction":"Canonical KnockLaunch Gate notifier and durable mission supervisor own Gate, merge, release, and proof progression from this exact PR head outside the owner response path.","receiptRef":{"mode":"full","missionId":"5ea67245-081d-4e7f-b1ab-b6c933019c4d"},"performance":null,"deploymentId":null,"releaseState":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","pendingProofKinds":["runtime"],"verificationState":null,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":3688,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true,"requestContractState":"pending"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-17T18:23:45.907221+00:00","proof_gate":"repair_mission_pr_handed_off_to_supervisor","source_sha":null,"external_id":"3023","receipt_type":"execute_mission","idempotency_key":"mission:5ea67245-081d-4e7f-b1ab-b6c933019c4d:execute_mission:repair_mission_pr_handed_off_to_supervisor:current-generation","mission_step_id":"e623052d-107c-4b29-b4d2-4f5006cf0201","command_center_event_id":"5ea67245-081d-4e7f-b1ab-b6c933019c4d"},{"id":"bd0a7838-8d87-4063-ace1-5c895236cc29","source":"cc-execution","status":"deployment_dispatched","payload":{"ok":true,"jobId":null,"phase":"pull_request","branch":"ai/big-papi-member-referral-qr-20260824","reason":null,"status":"deployment_dispatched","metrics":{"receiptBytes":7984,"releaseCount":0,"toolCallCount":7,"repeatedCallCount":2,"ownerInterruptionCount":0},"version":"1.50.25-cross-scope-source-seeds","prNumber":684,"terminal":false,"missionId":"8c9038d6-07e1-4382-991d-b3ade10e6c02","operation":"execute_mission","proofGate":"canonical_release_dispatched","sourceSha":"3c5f29beaba792fc158e61e9d30f07ce842446c3","timingsMs":null,"nextAction":null,"receiptRef":{"mode":"full","missionId":"8c9038d6-07e1-4382-991d-b3ade10e6c02"},"performance":null,"deploymentId":"forgejo-main-3c5f29beaba7","workflowRunId":null,"releaseTargets":{"frontend":true,"onrunner":false,"migrations":false,"ccExecution":false,"supabaseEdge":false,"edgeFunctionSlugs":[]},"detailsAvailable":true,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":6047,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true},"tenant_id":"766cfaa7-ac42-46c8-bbef-69d13268a29d","created_at":"2026-08-24T19:56:32.508367+00:00","proof_gate":"canonical_release_dispatched","source_sha":"3c5f29beaba792fc158e61e9d30f07ce842446c3","external_id":"forgejo-main-3c5f29beaba7","receipt_type":"execute_mission","idempotency_key":"mission:8c9038d6-07e1-4382-991d-b3ade10e6c02:execute_mission:canonical_release_dispatched","mission_step_id":"6825e042-33ed-4466-a7df-772324b0f35c","command_center_event_id":"8c9038d6-07e1-4382-991d-b3ade10e6c02"},{"id":"bd0bff85-146c-4edf-9c96-0c609bb312c8","source":"cc-execution","status":"deployment_dispatched","payload":{"ok":true,"jobId":null,"phase":"objective_received","branch":"ai/fix-proposal-editor-resize","reason":null,"status":"deployment_dispatched","metrics":{"receiptBytes":0,"releaseCount":0,"toolCallCount":0,"repeatedCallCount":0,"ownerInterruptionCount":0},"version":"1.58.68-visual-witness-self-heal-proof","prNumber":1956,"terminal":false,"missionId":"6e19cdd1-3345-49a9-80fb-f4fff14b61cb","operation":"execute_mission","proofGate":"canonical_release_dispatched","sourceSha":"23834ab772c0abbfe4ffde620397edd4939b9845","timingsMs":{"gateMs":0,"proofMs":0,"handlerMs":6995,"releaseMs":0,"mutationMs":0,"repositoryMs":0,"prReadinessMs":870,"approvedPlanMs":0,"missionSetupMs":1790,"providerAuthMs":0,"shipAndProveMs":6032,"ledgerPrepareMs":768,"ledgerReconcileMs":0,"lineageReconcileMs":0,"resolvePreflightMs":1790,"repositoryMutationMs":0,"repositoryProviderMs":0,"authoritativeLedgerMs":0,"ledgerAsyncDispatchMs":0,"repositoryAtomicCommitMs":0,"repositoryBranchCreateMs":0,"totalSynchronousLedgerMs":768,"asyncBookkeepingDispatchMs":0,"ledgerAuthoritativeCommitMs":0,"repositoryPullRequestCreateMs":0},"nextAction":null,"receiptRef":{"mode":"full","missionId":"6e19cdd1-3345-49a9-80fb-f4fff14b61cb"},"performance":null,"deploymentId":"forgejo-main-23834ab772c0","workflowRunId":null,"releaseTargets":{"frontend":true,"onrunner":false,"migrations":false,"ccExecution":false,"supabaseEdge":false,"edgeFunctionSlugs":[]},"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":2607,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true},"tenant_id":"766cfaa7-ac42-46c8-bbef-69d13268a29d","created_at":"2026-09-06T15:24:27.14486+00:00","proof_gate":"canonical_release_dispatched","source_sha":"23834ab772c0abbfe4ffde620397edd4939b9845","external_id":"forgejo-main-23834ab772c0","receipt_type":"execute_mission","idempotency_key":"mission:6e19cdd1-3345-49a9-80fb-f4fff14b61cb:execute_mission:canonical_release_dispatched:current-generation","mission_step_id":"6744d0a2-78c4-4955-ab91-d622005a2d68","command_center_event_id":"6e19cdd1-3345-49a9-80fb-f4fff14b61cb"},{"id":"bd0cfdca-11c4-4fd9-b9f7-c72797a94d48","source":"cc-execution","status":"authorized","payload":{"paths":[".forgejo/workflows/knocklaunch.yml","config/control-plane-capabilities.json","scripts/visual-witness-hosted-runner/virtual-witness-operating-contract.json"],"reason":"Owner-approved corrective generation for the exact Visual Witness release-contract failure; unfreeze only these exact control-plane paths, then restore frozen-by-default behavior.","baseSha":"3318ac030845b4ab881c11b589407f584ddfa480","issuedAt":1789692270733,"expiresAt":1789692450733,"missionId":"a924d509-8361-466f-9fcc-6999d3a728e6","authorizationId":"84e61905-400f-49f9-ba65-c6633bd30e25","retryableWithinExactScope":true},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-18T00:44:31.504338+00:00","proof_gate":"control_plane_maintenance_scope_authorized","source_sha":"3318ac030845b4ab881c11b589407f584ddfa480","external_id":null,"receipt_type":"control_plane_maintenance_authorization","idempotency_key":"control-plane-maintenance-authorize:84e61905-400f-49f9-ba65-c6633bd30e25","mission_step_id":"6590e7ba-4cf7-40a0-9ad0-e038869d9e2e","command_center_event_id":"a924d509-8361-466f-9fcc-6999d3a728e6"},{"id":"bd0d0df1-c2ae-40fb-a929-600ab58be7c8","source":"forgejo","status":"waiting","payload":{"branch":"ai/objective-first-repair-a7108781af28","prNumber":3094,"nextAction":null,"mergeCommitSha":"527849697abcf616d5ff04b1cee4d9cd1905ae94","branchDeletedAfterMerge":true,"correctiveGenerationCreated":false},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-18T12:48:41.599747+00:00","proof_gate":"forgejo_merged_pr_is_authoritative_source_lineage","source_sha":"527849697abcf616d5ff04b1cee4d9cd1905ae94","external_id":"3094","receipt_type":"source_lineage_merged_pr_authoritative","idempotency_key":"mission:a7108781-af28-48ef-be87-5340894a6b75:merged-pr:3094:527849697abcf616d5ff04b1cee4d9cd1905ae94","mission_step_id":"cac797bb-1cbb-4306-9189-2fef2bc50c65","command_center_event_id":"a7108781-af28-48ef-be87-5340894a6b75"},{"id":"bd0d2f32-07eb-45f1-a916-267c2989db1e","source":"cc-execution","status":"in_progress","payload":{"ok":true,"jobId":null,"phase":"pull_request","branch":"ai/auth-only-rpc-anon-hardening","reason":null,"status":"in_progress","metrics":{"receiptBytes":0,"releaseCount":0,"toolCallCount":0,"repeatedCallCount":0,"ownerInterruptionCount":0},"version":"1.58.182-witness-render-cold-start-aware","prNumber":3106,"terminal":false,"missionId":"0ea68f23-d392-4e94-8448-d735cab59e7d","operation":"execute_mission","proofGate":"canonical_release_reconciliation_pending","sourceSha":null,"timingsMs":{"gateMs":0,"proofMs":0,"handlerMs":6280,"releaseMs":0,"mutationMs":0,"repositoryMs":0,"prReadinessMs":1745,"approvedPlanMs":0,"missionSetupMs":878,"providerAuthMs":0,"shipAndProveMs":3768,"ledgerPrepareMs":310,"ledgerReconcileMs":0,"lineageReconcileMs":568,"resolvePreflightMs":878,"repositoryMutationMs":0,"repositoryProviderMs":0,"authoritativeLedgerMs":0,"ledgerAsyncDispatchMs":0,"repositoryAtomicCommitMs":0,"repositoryBranchCreateMs":0,"totalSynchronousLedgerMs":310,"asyncBookkeepingDispatchMs":0,"ledgerAuthoritativeCommitMs":0,"repositoryPullRequestCreateMs":0},"nextAction":"Reconcile this same mission and pull request automatically; do not create replacement work.","receiptRef":{"mode":"full","missionId":"0ea68f23-d392-4e94-8448-d735cab59e7d"},"performance":null,"deploymentId":null,"releaseState":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","pendingProofKinds":["repository","runtime","runtime"],"verificationState":null,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":1480,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true,"requestContractState":"pending"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-18T15:05:50.495447+00:00","proof_gate":"canonical_release_reconciliation_pending","source_sha":null,"external_id":"3106","receipt_type":"execute_mission","idempotency_key":"mission:0ea68f23-d392-4e94-8448-d735cab59e7d:execute_mission:canonical_release_reconciliation_pending:current-generation","mission_step_id":"7c3bb05b-3d92-464b-9478-4395b89bf91d","command_center_event_id":"0ea68f23-d392-4e94-8448-d735cab59e7d"},{"id":"bd0decdf-ba5c-495a-8593-e1de9f4034e1","source":"cc-execution","status":"authorized","payload":{"paths":["workers/cc-execution/src/index-mission-control.js"],"reason":"The live GodMode Restore Points control plane review still fails because the Forgejo compare payload does not provide authoritative GitHub-style status/merge-base ancestry fields. Replace that incorrect ancestry gate with bounded exact commit-history reachability proof from current protected main while retaining compare only for changed-file enumeration and diagnostic metadata.","baseSha":"ac51f625e91b8540d3803f1635981f882ed82095","issuedAt":1787877393613,"expiresAt":1787877573613,"missionId":"dc798a9f-3aef-4ef8-b613-36906a65cec7","singleUse":true,"authorizationId":"d215316f-8dba-4007-aca5-90bd9c4486d3"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-08-28T00:36:35.031921+00:00","proof_gate":"control_plane_maintenance_scope_authorized","source_sha":"ac51f625e91b8540d3803f1635981f882ed82095","external_id":null,"receipt_type":"control_plane_maintenance_authorization","idempotency_key":"control-plane-maintenance-authorize:d215316f-8dba-4007-aca5-90bd9c4486d3","mission_step_id":"fd80f1c1-d14e-48c6-b34f-f82cf53efa34","command_center_event_id":"dc798a9f-3aef-4ef8-b613-36906a65cec7"},{"id":"bd0f514b-38a2-4085-b82a-dd80b3e50e4e","source":"cc-execution","status":"blocked","payload":{"ok":false,"jobId":null,"phase":"objective_received","branch":"ai/calendar-oversight-hub-20260907","reason":"orphaned_branch_recovery_scope_mismatch:ai/calendar-oversight-hub-20260907","status":"blocked","metrics":{"receiptBytes":0,"releaseCount":0,"toolCallCount":0,"repeatedCallCount":0,"ownerInterruptionCount":0},"version":"1.58.70-forgejo-source-discovery-retry-window","prNumber":null,"terminal":false,"missionId":"2d4a8b84-35aa-47fb-be44-02cb3498af54","operation":"execute_mission","proofGate":"repair_mission_execution_blocked","sourceSha":null,"timingsMs":{"gateMs":0,"proofMs":0,"handlerMs":1261,"releaseMs":0,"mutationMs":0,"repositoryMs":0,"prReadinessMs":0,"approvedPlanMs":0,"missionSetupMs":664,"providerAuthMs":0,"shipAndProveMs":0,"ledgerPrepareMs":664,"ledgerReconcileMs":0,"lineageReconcileMs":0,"resolvePreflightMs":664,"repositoryMutationMs":1261,"repositoryProviderMs":0,"authoritativeLedgerMs":0,"ledgerAsyncDispatchMs":0,"repositoryAtomicCommitMs":0,"repositoryBranchCreateMs":0,"totalSynchronousLedgerMs":664,"asyncBookkeepingDispatchMs":0,"ledgerAuthoritativeCommitMs":0,"repositoryPullRequestCreateMs":0},"nextAction":null,"receiptRef":{"mode":"full","missionId":"2d4a8b84-35aa-47fb-be44-02cb3498af54"},"performance":null,"deploymentId":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":1533,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-07T16:32:44.437769+00:00","proof_gate":"repair_mission_execution_blocked","source_sha":null,"external_id":null,"receipt_type":"execute_mission","idempotency_key":"mission:2d4a8b84-35aa-47fb-be44-02cb3498af54:execute_mission:repair_mission_execution_blocked:current-generation","mission_step_id":"8845cfff-146c-45cb-b950-6ef98f178ad8","command_center_event_id":"2d4a8b84-35aa-47fb-be44-02cb3498af54"},{"id":"bd0fbf3e-f4b5-4005-bcd2-ebce255fcca8","source":"cc-execution","status":"waiting","payload":{"body":{"ship":true,"files":[],"branch":"ai/objective-first-repair-4e92220f9e07","writes":[],"patches":[],"version":1,"approved":true,"missionId":"4e92220f-9e07-4d62-b34f-2cd073888dee","repository":"noel/KnockLaunchOS","ownerApproved":true,"releaseIntent":null,"sourceTargets":[".forgejo/workflows/knocklaunch.yml"],"anchored_edits":[{"path":".forgejo/workflows/knocklaunch.yml","anchor":"            '/config/platform-standards.json' \\\n            '/config/cloudflare-native-frontend-build.json' \\","replacement":"            '/config/platform-standards.json' \\\n            '/config/canonical-platform-primitives.json' \\\n            '/config/cloudflare-native-frontend-build.json' \\"},{"path":".forgejo/workflows/knocklaunch.yml","anchor":"            '/scripts/validate-windows-repository-paths.test.mjs' \\\n            '/scripts/validate-control-plane-restore-point.mjs' \\","replacement":"            '/scripts/validate-windows-repository-paths.test.mjs' \\\n            '/scripts/validate-canonical-platform-primitives.mjs' \\\n            '/scripts/validate-control-plane-restore-point.mjs' \\"},{"path":".forgejo/workflows/knocklaunch.yml","anchor":"      - name: Fast changed-TypeScript deterministic preflight\n        if: ${{ steps.gate-preclassify.outputs.frontend_toolchain == 'true' }}","replacement":"      - name: Enforce canonical primitive ownership before dependency hydration\n        shell: bash\n        env:\n          CURRENT_MAIN_SHA: ${{ steps.gate-preclassify.outputs.current_main_sha }}\n        run: |\n          set -euo pipefail\n          changed_paths=\"$(git diff --name-only \"$CURRENT_MAIN_SHA\" HEAD 2>/dev/null || true)\"\n          export KNOCKLAUNCH_CHANGED_PATHS_B64=\"$(printf '%s' \"$changed_paths\" | base64 | tr -d '\\n')\"\n          node scripts/validate-canonical-platform-primitives.mjs\n\n      - name: Fast changed-TypeScript deterministic preflight\n        if: ${{ steps.gate-preclassify.outputs.frontend_toolchain == 'true' }}"}],"implementation":{"files":[],"writes":[]},"requestContract":null,"repairGeneration":null,"executionEnvelope":{"ship":true,"version":1,"approved":true,"missionId":"4e92220f-9e07-4d62-b34f-2cd073888dee","ownerApproved":true,"releaseIntent":null,"sourceTargets":[".forgejo/workflows/knocklaunch.yml"],"requestContract":null,"repairGeneration":null,"proofRequirements":null,"controlPlaneUnfreeze":true,"controlPlaneMaintenance":true,"controlPlaneMaintenancePaths":[],"controlPlaneMaintenanceReason":"Prime structured exact mutation continuation"},"proofRequirements":null,"controlPlaneUnfreeze":true,"durableMutationResume":true,"controlPlaneMaintenance":true,"controlPlaneMaintenancePaths":[],"controlPlaneMaintenanceReason":"Prime structured exact mutation continuation"},"recovery":false,"fingerprint":"9990577b2cdf8fed0590ac1dc371167a29cb13677a9d03aa33a388cca7401070","replayCount":0,"serializedBytes":2754},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-05T22:51:15.081334+00:00","proof_gate":"repository_mutation_intent_persisted","source_sha":null,"external_id":null,"receipt_type":"repository_mutation_intent","idempotency_key":"mission:4e92220f-9e07-4d62-b34f-2cd073888dee:repository-mutation-intent:9990577b2cdf8fed0590ac1dc371167a29cb13677a9d03aa33a388cca7401070:0","mission_step_id":"d0ae364e-06d1-41a0-a4a6-53b7920977d9","command_center_event_id":"4e92220f-9e07-4d62-b34f-2cd073888dee"},{"id":"bd141416-cad7-404f-8857-b28508919a42","source":"forgejo","status":"waiting","payload":{"branch":"ai/objective-first-repair-f7a750346cb7","prNumber":2166,"nextAction":"Follow the existing canonical release to terminal proof.","mergeCommitSha":"4f06fe66fde1178cea24b60c8399b13c1e741ec1","branchDeletedAfterMerge":false,"correctiveGenerationCreated":false},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-08T20:30:52.399354+00:00","proof_gate":"forgejo_merged_pr_is_authoritative_source_lineage","source_sha":"4f06fe66fde1178cea24b60c8399b13c1e741ec1","external_id":"2166","receipt_type":"source_lineage_merged_pr_authoritative","idempotency_key":"mission:f7a75034-6cb7-4a20-b3d0-18a26ef9020d:merged-pr:2166:4f06fe66fde1178cea24b60c8399b13c1e741ec1","mission_step_id":"ad791ca7-2e9e-4d8d-8802-34d9a1eefec0","command_center_event_id":"f7a75034-6cb7-4a20-b3d0-18a26ef9020d"},{"id":"bd1430c4-1ad5-4639-828a-1e25497768ef","source":"cc-execution","status":"blocked","payload":{"ok":false,"jobId":null,"phase":"objective_received","branch":null,"reason":"content validation failed","status":"blocked","metrics":{"receiptBytes":0,"releaseCount":0,"toolCallCount":0,"repeatedCallCount":0,"ownerInterruptionCount":0},"version":"1.30.20-pr-scoped-release-missions","prNumber":null,"terminal":false,"missionId":"2ec2c77c-996a-43f4-9f8d-29090a3994e2","operation":"execute_mission","proofGate":"repair_mission_execution_blocked","sourceSha":null,"timingsMs":null,"nextAction":null,"receiptRef":{"mode":"full","missionId":"2ec2c77c-996a-43f4-9f8d-29090a3994e2"},"performance":null,"deploymentId":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"onePullRequest":true,"terminalProofRequired":true},"sourceReceiptBytes":322,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true},"tenant_id":"a2929648-19db-46c8-9e93-07378ed1aa5f","created_at":"2026-08-06T21:37:32.306367+00:00","proof_gate":"repair_mission_execution_blocked","source_sha":null,"external_id":null,"receipt_type":"execute_mission","idempotency_key":"mission:2ec2c77c-996a-43f4-9f8d-29090a3994e2:execute_mission:repair_mission_execution_blocked","mission_step_id":"c5332d27-2bb9-4319-9d6f-1a8c922b6619","command_center_event_id":"2ec2c77c-996a-43f4-9f8d-29090a3994e2"},{"id":"bd14c9dd-c88b-44c4-aad7-2f751951ed6f","source":"cc-execution","status":"blocked","payload":{"reason":"anchored_edit_invalid","fingerprint":"ab9f6a8c01df2b461ea33dc2f50a28ccba08469e9e851e7b527cc93123684395"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-03T02:21:53.314227+00:00","proof_gate":"repository_mutation_intent_deterministic_failure","source_sha":null,"external_id":null,"receipt_type":"repository_mutation_intent_blocked","idempotency_key":"mission:ef8ef070-365b-46fc-95e1-22c35fb886dc:repository-mutation-intent-blocked:ab9f6a8c01df2b461ea33dc2f50a28ccba08469e9e851e7b527cc93123684395","mission_step_id":"10411152-9a2b-41a7-8a5e-071f92b77d4a","command_center_event_id":"ef8ef070-365b-46fc-95e1-22c35fb886dc"},{"id":"bd1568a7-f71e-4d19-9d69-e063f53e6901","source":"cc-execution","status":"release_reconciliation_pending","payload":{"ok":true,"jobId":null,"phase":"pull_request","branch":"ai/objective-first-repair-5791b1233557","reason":null,"status":"release_reconciliation_pending","metrics":{"receiptBytes":217444,"releaseCount":0,"toolCallCount":28,"repeatedCallCount":22,"executorlessWaitMs":1938792,"firstUsefulResultAt":"2026-10-01T00:18:36.658Z","recoveryAttemptCount":21,"ownerInterruptionCount":0},"version":null,"prNumber":4295,"terminal":false,"missionId":"5791b123-3557-4cb6-ab08-4274f5632f18","operation":"automatic_mission_resume","proofGate":"canonical_release_reconciliation_pending","sourceSha":"233a243ae8316a1bd71e95e8528301e5422fbfb4","timingsMs":{"prReadinessMs":3000,"approvedPlanMs":0,"shipAndProveMs":2901,"repositoryMutationMs":0,"repositoryProviderMs":0,"repositoryAtomicCommitMs":0,"repositoryBranchCreateMs":0,"repositoryPullRequestCreateMs":0},"nextAction":"reconcile_release","receiptRef":{"mode":"full","missionId":"5791b123-3557-4cb6-ab08-4274f5632f18"},"performance":null,"deploymentId":"forgejo-main-233a243ae831","releaseState":null,"workflowRunId":null,"releaseTargets":{"frontend":true,"migrations":false,"ccExecution":false,"supabaseEdge":true,"edgeFunctionSlugs":["pcg-google-drive-media"]},"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","pendingProofKinds":[],"verificationState":null,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":2057,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true,"requestContractState":"pending"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-01T00:53:09.569256+00:00","proof_gate":"canonical_release_reconciliation_pending","source_sha":null,"external_id":"4295","receipt_type":"automatic_mission_resume","idempotency_key":"mission:5791b123-3557-4cb6-ab08-4274f5632f18:automatic-mission-resume:4295:canonical_release_reconciliation_pending","mission_step_id":"7d684690-e5c5-4315-958a-54ca9e782996","command_center_event_id":"5791b123-3557-4cb6-ab08-4274f5632f18"},{"id":"bd1c4a7d-2231-45a5-ba87-a31fba48f851","source":"cc-execution","status":"recorded","payload":{"requestContract":{"valid":true,"source":"explicit","version":1,"outcomes":[{"id":"outcome-1","statement":"Control plane interpretation preserves the raw owner utterance separately from canonical intent","proofConditionIds":["proof-repo","proof-runtime"]},{"id":"outcome-2","statement":"Canonical intent can correct noisy voice-to-text when the interpreter supplies high-confidence unique resolution evidence","proofConditionIds":["proof-repo","proof-runtime"]},{"id":"outcome-3","statement":"Material ambiguity blocks before mutation with intent_clarification_required","proofConditionIds":["proof-repo"]},{"id":"outcome-4","statement":"Exact ordinary wording remains unchanged","proofConditionIds":["proof-repo"]}],"objective":"Finish PR #856 by repairing the two exact format-sensitive invariants proven by run 2911, without changing runtime semantics. On the existing branch only: make the test assertions for `const existing = freshBranch ? null : await findExisting()` and `atomicWriteTiming: written?.mutationTiming || null` whitespace-tolerant, and compact those two semantically identical runtime expressions so both old and corrected assertions pass. Preserve all intent-canonicalization behavior and continue the same mission through exact-head gate, squash merge, cc-execution-only release, and live proof.","constraints":[{"id":"constraint-1","statement":"Control plane maintenance remains locked and scoped","proofConditionIds":["proof-repo"]},{"id":"constraint-2","statement":"No general product or tenant source behavior changes","proofConditionIds":["proof-repo"]},{"id":"constraint-3","statement":"A changed canonical intent without resolution evidence is invalid","proofConditionIds":["proof-repo"]},{"id":"constraint-4","statement":"Ambiguous interpretation may not silently mutate","proofConditionIds":["proof-repo"]}],"terminalPolicy":"all_required_proof_conditions_satisfied_after_live_release","proofConditions":[{"id":"proof-repo","kind":"repository","claim":"Intent canonicalization implementation and regression coverage exist on the exact source and the exact PR head passes KnockLaunch Gate","route":null,"required":true,"expectedText":null,"targetedActions":[],"allowedReleaseTargets":[],"requiredReleaseTargets":[]},{"id":"proof-runtime","kind":"runtime","claim":"Updated cc-execution exact merged source is live","route":null,"required":true,"expectedText":null,"targetedActions":[],"allowedReleaseTargets":["ccExecution"],"requiredReleaseTargets":["ccExecution"]}],"validationErrors":[]},"requestContractHash":"befaaa1761d996cfc6891db7687666d53e9b3c8864de775122857eff0195368e","requestContractRevision":7,"previousRequestContractHash":"a498a3fcf4201e22e8fe6284e6339b144dca59056ba9319e4205cc6fe2937df6"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-08-27T19:15:25.426808+00:00","proof_gate":"request_contract_revision_recorded","source_sha":null,"external_id":null,"receipt_type":"request_contract_revision","idempotency_key":"mission:e57906ff-764d-4381-9f3a-8b48dc1874fe:request-contract-revision:7:befaaa1761d996cfc6891db7687666d53e9b3c8864de775122857eff0195368e","mission_step_id":"58ecd1ea-7e4d-445c-a32f-d3fba79f7af5","command_center_event_id":"e57906ff-764d-4381-9f3a-8b48dc1874fe"},{"id":"bd1e08f4-ce4f-4eaa-b425-e146ebbcc39d","source":"cc-execution","status":"waiting_for_gate","payload":{"ok":true,"jobId":null,"phase":"pull_request","branch":"ai/objective-first-repair-e318e078d06c","reason":"provider_verified_auto_progress_owns_gate_merge_release_outside_owner_response","status":"waiting_for_gate","metrics":{"receiptBytes":0,"releaseCount":0,"toolCallCount":0,"repeatedCallCount":0,"ownerInterruptionCount":0},"version":"1.58.182-witness-render-cold-start-aware","prNumber":3111,"terminal":false,"missionId":"e318e078-d06c-4615-b595-d0245e558bd4","operation":"execute_mission","proofGate":"repair_mission_pr_handed_off_to_supervisor","sourceSha":null,"timingsMs":{"gateMs":0,"proofMs":0,"handlerMs":5987,"releaseMs":0,"mutationMs":0,"repositoryMs":0,"prReadinessMs":0,"approvedPlanMs":1077,"missionSetupMs":378,"providerAuthMs":0,"shipAndProveMs":0,"ledgerPrepareMs":287,"ledgerReconcileMs":0,"lineageReconcileMs":91,"resolvePreflightMs":378,"repositoryMutationMs":4910,"repositoryProviderMs":4910,"authoritativeLedgerMs":0,"ledgerAsyncDispatchMs":0,"repositoryAtomicCommitMs":2404,"repositoryBranchCreateMs":0,"totalSynchronousLedgerMs":287,"asyncBookkeepingDispatchMs":0,"ledgerAuthoritativeCommitMs":0,"repositoryPullRequestCreateMs":2506},"nextAction":"Canonical KnockLaunch Gate notifier and durable mission supervisor own Gate, merge, release, and proof progression from this exact PR head outside the owner response path.","receiptRef":{"mode":"full","missionId":"e318e078-d06c-4615-b595-d0245e558bd4"},"performance":null,"deploymentId":null,"releaseState":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","pendingProofKinds":[],"verificationState":null,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":4013,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true,"requestContractState":"pending"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-18T15:16:56.699996+00:00","proof_gate":"repair_mission_pr_handed_off_to_supervisor","source_sha":null,"external_id":"3111","receipt_type":"execute_mission","idempotency_key":"mission:e318e078-d06c-4615-b595-d0245e558bd4:execute_mission:repair_mission_pr_handed_off_to_supervisor:current-generation","mission_step_id":"61d27250-5667-4daf-a2a5-e84472c8e050","command_center_event_id":"e318e078-d06c-4615-b595-d0245e558bd4"},{"id":"bd2080f7-45c9-4787-9c57-a4e9ed053d7f","source":"cc-execution","status":"synthesis_required","payload":{"ok":true,"jobId":null,"phase":"objective_received","branch":null,"reason":null,"status":"synthesis_required","metrics":{"receiptBytes":0,"releaseCount":0,"toolCallCount":0,"repeatedCallCount":0,"executorlessWaitMs":0,"firstUsefulResultAt":null,"recoveryAttemptCount":0,"ownerInterruptionCount":0},"version":"1.67.3-cross-conversation-lean-queue","prNumber":null,"terminal":false,"missionId":"0beefde9-d014-4bcd-8c1d-1ac97613e4a0","operation":"execute_mission","proofGate":"repair_mission_synthesis_ready","sourceSha":null,"timingsMs":{"gateMs":0,"proofMs":0,"handlerMs":4105,"releaseMs":0,"mutationMs":0,"repositoryMs":0,"missionSetupMs":940,"providerAuthMs":0,"ledgerPrepareMs":940,"ledgerReconcileMs":0,"lineageReconcileMs":0,"resolvePreflightMs":940,"authoritativeLedgerMs":0,"ledgerAsyncDispatchMs":0,"totalSynchronousLedgerMs":940,"asyncBookkeepingDispatchMs":0,"ledgerAuthoritativeCommitMs":0},"nextAction":"Synthesize exact mutation from the resolved authoritative source targets and continue this same mission.","receiptRef":{"mode":"full","missionId":"0beefde9-d014-4bcd-8c1d-1ac97613e4a0"},"performance":null,"deploymentId":null,"releaseState":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","pendingProofKinds":[],"verificationState":null,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":3456,"likelyAffectedFiles":[".forgejo/workflows/frontend-startup-watchdog.yml",".forgejo/workflows/knocklaunch-local-host-autoconnect.yml",".forgejo/workflows/knocklaunch.yml",".forgejo/workflows/laptop-hybrid-bootstrap.yml"],"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true,"requestContractState":"pending"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-06T17:23:06.228079+00:00","proof_gate":"repair_mission_synthesis_ready","source_sha":null,"external_id":null,"receipt_type":"execute_mission","idempotency_key":"mission:0beefde9-d014-4bcd-8c1d-1ac97613e4a0:execute_mission:repair_mission_synthesis_ready:current-generation","mission_step_id":"35a009b5-06da-4e93-9b77-9f3d0d8c5465","command_center_event_id":"0beefde9-d014-4bcd-8c1d-1ac97613e4a0"},{"id":"bd224e5e-f52d-4175-9f7c-9a52ad35956d","source":"cc-execution","status":"waiting","payload":{"reason":"compiler_exact_bounded_source_targets_required","sourceTargets":[".forgejo/workflows/paul-host-probe.yml",".forgejo/workflows/paul-hybrid-bootstrap.yml",".forgejo/workflows/control-plane-canary.yml",".forgejo/workflows/ai-branch-hygiene-dryrun.yml"]},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-09T23:58:39.213101+00:00","proof_gate":"bounded_implementation_checkpoint_persisted","source_sha":"2275c3f714eec9536086839e989da29330922e7f","external_id":null,"receipt_type":"bounded_implementation_continuation","idempotency_key":"mission:4e7a6797-319b-4866-80ea-325d26318790:compiler:2275c3f714eec9536086839e989da29330922e7f:.forgejo/workflows/paul-host-probe.yml,.forgejo/workflows/paul-hybrid-bootstrap.yml,.forgejo/workflows/control-plane-canary.yml,.forgejo/workflows/ai-branch-hygiene-dryrun.yml","mission_step_id":null,"command_center_event_id":"4e7a6797-319b-4866-80ea-325d26318790"},{"id":"bd23d4ca-2232-4565-b86c-cf85ed212536","source":"cc-execution","status":"synthesis_required","payload":{"ok":true,"jobId":null,"phase":"objective_received","branch":"ai/objective-first-repair-9579e3e086eb","reason":null,"status":"synthesis_required","metrics":{"receiptBytes":0,"releaseCount":0,"toolCallCount":0,"repeatedCallCount":0,"ownerInterruptionCount":0},"version":"1.48.11-schema-authority","prNumber":null,"terminal":false,"missionId":"9579e3e0-86eb-49ac-8fbc-6c6eeb3ac75a","operation":"execute_mission","proofGate":"repair_mission_synthesis_ready","sourceSha":null,"timingsMs":null,"nextAction":"Inspect the bounded repository paths, synthesize exact files or anchored_edits, and call /mission/execute again automatically with this same missionId without another owner prompt or workflow switch.","receiptRef":{"mode":"full","missionId":"9579e3e0-86eb-49ac-8fbc-6c6eeb3ac75a"},"performance":null,"deploymentId":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":8431,"likelyAffectedFiles":["src/__tests__/contracts/supabase-config-unique-function-tables.test.ts","src/components/admin/SupabaseHealthPanel.tsx","src/components/CallActionDialogs.tsx","src/components/CallActionsMenu.tsx","src/components/CallFlow/hooks/useStormData.ts","scripts/owner-supabase-function-migrate.mjs","scripts/resolve-supabase-function-targets.mjs","scripts/supabase-migration-release.mjs","scripts/__tests__/supabase-migration-release.test.mjs","scripts/resolve-supabase-function-targets.test.mjs","src/components/admin/TenantUserCommandCenters.tsx","src/components/CallFlow/WorkflowCallCockpit.tsx"],"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-08-20T23:36:39.23916+00:00","proof_gate":"repair_mission_synthesis_ready","source_sha":null,"external_id":null,"receipt_type":"execute_mission","idempotency_key":"mission:9579e3e0-86eb-49ac-8fbc-6c6eeb3ac75a:execute_mission:repair_mission_synthesis_ready","mission_step_id":"7de9d146-339e-4216-923f-c2c0aafc7553","command_center_event_id":"9579e3e0-86eb-49ac-8fbc-6c6eeb3ac75a"},{"id":"bd265573-616a-4adf-a092-013ada09e2aa","source":"cc-execution","status":"authorized","payload":{"paths":["src/__tests__/contracts/command-center-existing-branch-refresh.contract.test.ts","workers/cc-execution/src/index-release-fast-lane.js","workers/cc-execution/src/version.js"],"reason":"Owner-approved canonical merge/release admission hardening.","baseSha":"43ab87d1e17bc8449ee461c9b4ba439e980aab3d","issuedAt":1791226527196,"expiresAt":1791226707196,"missionId":"a770b022-1597-4486-a023-1c9d2554f8ad","authorizationId":"c3e32ebb-0cf7-4bab-9574-56eab345730f","retryableWithinExactScope":true},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-05T18:55:27.700762+00:00","proof_gate":"control_plane_maintenance_scope_authorized","source_sha":"43ab87d1e17bc8449ee461c9b4ba439e980aab3d","external_id":null,"receipt_type":"control_plane_maintenance_authorization","idempotency_key":"control-plane-maintenance-authorize:c3e32ebb-0cf7-4bab-9574-56eab345730f","mission_step_id":"b4b2dcbe-f2d4-432c-8369-ccbced95e8b3","command_center_event_id":"a770b022-1597-4486-a023-1c9d2554f8ad"},{"id":"bd282c24-7d9d-4f0a-b092-2789d48cc021","source":"cc-execution","status":"retryable","payload":{"ok":false,"jobId":null,"phase":"pull_request","branch":"ai/fix-big-papis-locked-landing-brand","reason":"The operation was aborted due to timeout","status":"retryable","metrics":{"receiptBytes":4195,"releaseCount":0,"toolCallCount":3,"repeatedCallCount":0,"ownerInterruptionCount":0},"version":"1.50.31-fast-atomic-reconcile","prNumber":706,"terminal":false,"missionId":"36ce3301-6266-40fa-80e2-5bacd1143e1f","operation":"execute_mission","proofGate":"canonical_release_transport_retryable","sourceSha":null,"timingsMs":null,"nextAction":"Reconcile this same mission and pull request automatically; do not create a replacement branch or PR.","receiptRef":{"mode":"full","missionId":"36ce3301-6266-40fa-80e2-5bacd1143e1f"},"performance":null,"deploymentId":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":5107,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true},"tenant_id":"766cfaa7-ac42-46c8-bbef-69d13268a29d","created_at":"2026-08-24T23:58:08.576503+00:00","proof_gate":"canonical_release_transport_retryable","source_sha":null,"external_id":"706","receipt_type":"execute_mission","idempotency_key":"mission:36ce3301-6266-40fa-80e2-5bacd1143e1f:execute_mission:canonical_release_transport_retryable","mission_step_id":"bd8b2050-ef3e-4760-b303-b0b2c5dad484","command_center_event_id":"36ce3301-6266-40fa-80e2-5bacd1143e1f"},{"id":"bd29de2d-dd8e-41e4-9463-c8c6a919e496","source":"cc-execution","status":"synthesis_required","payload":{"ok":true,"jobId":null,"phase":"objective_received","branch":"ai/objective-first-repair-4bee31bba286","reason":null,"status":"synthesis_required","metrics":{"receiptBytes":0,"releaseCount":0,"toolCallCount":0,"repeatedCallCount":0,"ownerInterruptionCount":0},"version":"1.50.6-auto-merge-release-persistence","prNumber":null,"terminal":false,"missionId":"4bee31bb-a286-4fbe-a437-c87947cceab6","operation":"execute_mission","proofGate":"repair_mission_synthesis_ready","sourceSha":null,"timingsMs":null,"nextAction":"Inspect the bounded repository paths, synthesize exact files or anchored_edits, and call /mission/execute again automatically with this same missionId without another owner prompt or workflow switch.","receiptRef":{"mode":"full","missionId":"4bee31bb-a286-4fbe-a437-c87947cceab6"},"performance":null,"deploymentId":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":9676,"likelyAffectedFiles":["src/__tests__/contracts/command-center-forgejo-transport-reliability.contract.test.ts","src/__tests__/contracts/command-center-release-reconciliation-budget.contract.test.ts","src/__tests__/contracts/command-center-platform-mission-anchor.contract.test.ts","src/__tests__/contracts/command-center-event-runtime.test.ts",".forgejo/workflows/knocklaunch.yml","src/__tests__/commandCenter/deployDetection.test.ts","scripts/validate-command-center-contracts.mjs","config/control-plane-capabilities.json"],"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-08-21T04:24:58.04227+00:00","proof_gate":"repair_mission_synthesis_ready","source_sha":null,"external_id":null,"receipt_type":"execute_mission","idempotency_key":"mission:4bee31bb-a286-4fbe-a437-c87947cceab6:execute_mission:repair_mission_synthesis_ready","mission_step_id":"878dea0b-bfd1-4b06-9271-16e675b52315","command_center_event_id":"4bee31bb-a286-4fbe-a437-c87947cceab6"},{"id":"bd29e2f1-684d-48d8-a91d-5f21a22e25a8","source":"forgejo-runtime","status":"pending","payload":{"failed":[],"states":{"forgejo-main/source":"success","forgejo-release/workflow":"pending","supabase-migrations/live":"pending","supabase-edge-production/live":"pending"},"mainSha":"1fe1471798a90a3168738120c16be948f05dbfea","missing":[],"pending":["forgejo-release/workflow","supabase-edge-production/live","supabase-migrations/live"],"required":["forgejo-main/source","forgejo-release/workflow","supabase-edge-production/live","supabase-migrations/live"],"sourceSha":"1fe1471798a90a3168738120c16be948f05dbfea","releaseState":"pending","sourceInMain":true,"compareStatus":"protected_main_push_exact_source","releaseTargets":{"frontend":false,"migrations":true,"ccExecution":false,"supabaseEdge":true,"edgeFunctionSlugs":["command-center-autopilot"]},"releaseTargetStates":{"migrations":"pending","supabaseEdge":"pending"},"requestContractHash":"0d410de7973d15c2f1e88f82526130c853a36f2508a31d0f63a5ab0f78dd1548","forgejoWorkflowProof":{"runId":15638,"source":"signed_push_receipt","status":"running","results":{},"conclusion":"running","targetStates":{"migrations":"pending","supabaseEdge":"pending"},"targetJobCount":7,"observedTargetStates":{"migrations":"pending","supabaseEdge":"pending"}},"releaseSourceVerified":true,"ccExecutionRuntimeProof":null,"releaseTargetRecoveryProof":null,"exactReleaseVerifiedAfterMainAdvanced":false},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-05T14:20:27.937264+00:00","proof_gate":"canonical_release_pending","source_sha":"1fe1471798a90a3168738120c16be948f05dbfea","external_id":"forgejo-main-1fe1471798a9","receipt_type":"canonical_release_status","idempotency_key":"mission:6209bd54-40c6-4105-be7c-e634a1d2a544:forgejo-release-status:1fe1471798a90a3168738120c16be948f05dbfea:pending:forgejo-main/source=success|forgejo-release/workflow=pending|supabase-edge-production/live=pending|supabase-migrations/live=pending","mission_step_id":"6eedb71f-1c00-40b8-b781-3feab415e102","command_center_event_id":"6209bd54-40c6-4105-be7c-e634a1d2a544"},{"id":"bd2bb42b-40bc-4b11-a925-e0da8b031718","source":"cc-execution","status":"synthesis_required","payload":{"ok":true,"jobId":null,"phase":"implementation","branch":"ai/objective-first-repair-6c0d93a39b45","reason":null,"status":"synthesis_required","metrics":{"receiptBytes":0,"releaseCount":0,"toolCallCount":0,"repeatedCallCount":0,"ownerInterruptionCount":0},"version":"1.58.144-request-contract-inference","prNumber":null,"terminal":false,"missionId":"6c0d93a3-9b45-4cf0-86f0-df3323ade6aa","operation":"execute_mission","proofGate":"repair_mission_synthesis_ready","sourceSha":null,"timingsMs":{"gateMs":0,"proofMs":0,"handlerMs":11,"releaseMs":0,"mutationMs":0,"repositoryMs":0,"missionSetupMs":421,"providerAuthMs":0,"ledgerPrepareMs":421,"ledgerReconcileMs":0,"lineageReconcileMs":0,"resolvePreflightMs":421,"authoritativeLedgerMs":0,"ledgerAsyncDispatchMs":0,"totalSynchronousLedgerMs":421,"asyncBookkeepingDispatchMs":0,"ledgerAuthoritativeCommitMs":0},"nextAction":"Inspect the bounded repository paths, synthesize exact files or anchored_edits, and call /mission/execute again automatically with this same missionId without another owner prompt or workflow switch.","receiptRef":{"mode":"full","missionId":"6c0d93a3-9b45-4cf0-86f0-df3323ade6aa"},"performance":null,"deploymentId":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":6987,"likelyAffectedFiles":["src/config/applicationCapabilityRegistry.ts","src/pages/owner/KnockLaunchTenantBootstrap.tsx","supabase/functions/tenant-media-library/index.ts"],"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-14T01:51:42.101102+00:00","proof_gate":"repair_mission_synthesis_ready","source_sha":null,"external_id":null,"receipt_type":"execute_mission","idempotency_key":"mission:6c0d93a3-9b45-4cf0-86f0-df3323ade6aa:execute_mission:repair_mission_synthesis_ready:current-generation","mission_step_id":"182e9de6-c286-4894-8682-c5df4322cbec","command_center_event_id":"6c0d93a3-9b45-4cf0-86f0-df3323ade6aa"},{"id":"bd2f8b54-c4e6-407c-b03e-e9144266536a","source":"cc-execution","status":"release_reconciliation_pending","payload":{"ok":true,"jobId":null,"phase":"pull_request","branch":"ai/objective-first-repair-bbfb22638737","reason":null,"status":"release_reconciliation_pending","metrics":{"receiptBytes":23540,"releaseCount":0,"toolCallCount":14,"repeatedCallCount":8,"executorlessWaitMs":44056,"firstUsefulResultAt":"2026-10-06T15:55:12.245Z","recoveryAttemptCount":10,"ownerInterruptionCount":0},"version":null,"prNumber":5199,"terminal":false,"missionId":"bbfb2263-8737-4431-81b9-932610510767","operation":"automatic_mission_resume","proofGate":"canonical_release_reconciliation_pending","sourceSha":"d71417cbdb79488af8aa8011d4594d7a8c3184cc","timingsMs":{"prReadinessMs":863,"approvedPlanMs":0,"shipAndProveMs":1069,"repositoryMutationMs":0,"repositoryProviderMs":0,"repositoryAtomicCommitMs":0,"repositoryBranchCreateMs":0,"repositoryPullRequestCreateMs":0},"nextAction":"reconcile_release","receiptRef":{"mode":"full","missionId":"bbfb2263-8737-4431-81b9-932610510767"},"performance":null,"deploymentId":"forgejo-main-d71417cbdb79","releaseState":null,"workflowRunId":null,"releaseTargets":{"frontend":false,"migrations":false,"ccExecution":true,"supabaseEdge":false,"edgeFunctionSlugs":[]},"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","pendingProofKinds":["repository"],"verificationState":null,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":1931,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true,"requestContractState":"pending"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-06T15:55:59.550501+00:00","proof_gate":"canonical_release_reconciliation_pending","source_sha":null,"external_id":"5199","receipt_type":"automatic_mission_resume","idempotency_key":"mission:bbfb2263-8737-4431-81b9-932610510767:automatic-mission-resume:5199:canonical_release_reconciliation_pending","mission_step_id":"68f7ebd2-2b42-4e7f-b23f-f175315a5b0f","command_center_event_id":"bbfb2263-8737-4431-81b9-932610510767"},{"id":"bd351e43-6f96-48dd-bd06-7addf18f6da1","source":"cc-execution","status":"release_verification_pending","payload":{"ok":true,"jobId":null,"phase":"objective_received","branch":"ai/keep-map-live-while-moving-in-experience-studio-r202608041221","reason":null,"status":"release_verification_pending","metrics":{"receiptBytes":0,"releaseCount":0,"toolCallCount":0,"repeatedCallCount":0,"ownerInterruptionCount":0},"version":"1.30.5-truthful-release-correlation","prNumber":3953,"terminal":false,"missionId":"384ca8f2-80fa-469b-baf3-0b5e78c356e7","operation":"execute_mission","proofGate":"ship_and_prove_release_pending","sourceSha":"fa7d247d489cd9992dbceca26614ecd77bdea59f","timingsMs":null,"nextAction":null,"receiptRef":{"mode":"full","missionId":"384ca8f2-80fa-469b-baf3-0b5e78c356e7"},"performance":null,"deploymentId":"canonical-release-fa7d247d489c","workflowRunId":30908779131,"releaseTargets":{"frontend":true,"onrunner":false,"ccExecution":false,"supabaseEdge":false},"detailsAvailable":true,"sourceReceiptBytes":2236,"ownerActionRequired":false},"tenant_id":"a2929648-19db-46c8-9e93-07378ed1aa5f","created_at":"2026-08-04T12:22:08.678452+00:00","proof_gate":"ship_and_prove_release_pending","source_sha":"fa7d247d489cd9992dbceca26614ecd77bdea59f","external_id":"canonical-release-fa7d247d489c","receipt_type":"execute_mission","idempotency_key":"mission:384ca8f2-80fa-469b-baf3-0b5e78c356e7:execute_mission:ship_and_prove_release_pending","mission_step_id":"03a3c484-e4ea-4257-8867-0206aa1656c3","command_center_event_id":"384ca8f2-80fa-469b-baf3-0b5e78c356e7"},{"id":"bd38e6d3-0883-49f4-a4f7-3eaec9f8e305","source":"cc-execution","status":"deployment_dispatched","payload":{"ok":true,"jobId":null,"phase":"release","branch":"ai/objective-first-repair-bdb936b2e84f","reason":null,"status":"deployment_dispatched","metrics":{"receiptBytes":28667,"releaseCount":0,"toolCallCount":21,"repeatedCallCount":10,"executorlessWaitMs":8948279,"firstUsefulResultAt":"2026-09-25T13:21:36.653Z","recoveryAttemptCount":2,"ownerInterruptionCount":0},"version":"1.58.282-lineage-main-guard","prNumber":3730,"terminal":false,"missionId":"bdb936b2-e84f-409b-98ae-f50b6415629c","operation":"execute_mission","proofGate":"canonical_release_dispatched","sourceSha":"8c6a52496642117d593928d4a926b161c464737d","timingsMs":{"gateMs":0,"proofMs":0,"handlerMs":2049,"releaseMs":0,"mutationMs":0,"repositoryMs":0,"prReadinessMs":121,"approvedPlanMs":0,"missionSetupMs":259,"providerAuthMs":0,"shipAndProveMs":1225,"ledgerPrepareMs":259,"ledgerReconcileMs":0,"lineageReconcileMs":0,"resolvePreflightMs":259,"repositoryMutationMs":0,"repositoryProviderMs":0,"authoritativeLedgerMs":0,"ledgerAsyncDispatchMs":0,"repositoryAtomicCommitMs":0,"repositoryBranchCreateMs":0,"totalSynchronousLedgerMs":259,"asyncBookkeepingDispatchMs":0,"ledgerAuthoritativeCommitMs":0,"repositoryPullRequestCreateMs":0},"nextAction":null,"receiptRef":{"mode":"full","missionId":"bdb936b2-e84f-409b-98ae-f50b6415629c"},"performance":null,"deploymentId":"forgejo-main-8c6a52496642","releaseState":"failed","workflowRunId":11827,"releaseTargets":{"frontend":true,"onrunner":false,"migrations":false,"ccExecution":false,"supabaseEdge":false,"edgeFunctionSlugs":[]},"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","pendingProofKinds":["runtime"],"verificationState":null,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":3039,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true,"requestContractState":"pending"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-25T15:51:31.308495+00:00","proof_gate":"canonical_release_dispatched","source_sha":"8c6a52496642117d593928d4a926b161c464737d","external_id":"forgejo-main-8c6a52496642","receipt_type":"execute_mission","idempotency_key":"mission:bdb936b2-e84f-409b-98ae-f50b6415629c:execute_mission:canonical_release_dispatched:current-generation","mission_step_id":"e8e3549d-fa21-4ca6-a049-d05f0a75c3d6","command_center_event_id":"bdb936b2-e84f-409b-98ae-f50b6415629c"},{"id":"bd3b17bb-9e59-488e-be04-f62a820e0a48","source":"cc-execution","status":"authorized","payload":{"paths":["workers/cc-execution/test/release-orchestration-invariants.test.js"],"reason":"Continue the owner-authorized control-plane maintenance after deterministic gate test failures. Change only the regression test file, re-gate the same PR, deploy the repaired runtime, then refreeze the control plane.","baseSha":"645e4c99eccf3ccdfc5b2cc63dbabab5d2d9f224","issuedAt":1788599018546,"expiresAt":1788599198546,"missionId":"23641945-9fb4-4c4e-8748-8375ab892303","authorizationId":"1f01a1b1-f3f3-4b71-91e6-ef0f1ff3856c","retryableWithinExactScope":true},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-05T09:03:39.031703+00:00","proof_gate":"control_plane_maintenance_scope_authorized","source_sha":"645e4c99eccf3ccdfc5b2cc63dbabab5d2d9f224","external_id":null,"receipt_type":"control_plane_maintenance_authorization","idempotency_key":"control-plane-maintenance-authorize:1f01a1b1-f3f3-4b71-91e6-ef0f1ff3856c","mission_step_id":"93be3b15-8ac5-492d-9dc2-6790e7978d5a","command_center_event_id":"23641945-9fb4-4c4e-8748-8375ab892303"},{"id":"bd3d58af-2b23-4fcd-92bd-0289602d3154","source":"cc-execution","status":"deployment_dispatched","payload":{"ok":true,"jobId":null,"phase":"pull_request","branch":null,"reason":null,"status":"deployment_dispatched","metrics":{"receiptBytes":10475,"releaseCount":0,"toolCallCount":10,"repeatedCallCount":3,"ownerInterruptionCount":0},"version":"1.47.10-forgejo-merge-authority","prNumber":456,"terminal":false,"missionId":"98cb692e-2213-46d1-aed6-5cedc7fd42ae","operation":"ship_and_prove","proofGate":"canonical_release_dispatched","sourceSha":"ecfcb12cb63f5f99523efe152bab9ff8f6c3321f","timingsMs":null,"nextAction":null,"receiptRef":{"mode":"full","missionId":"98cb692e-2213-46d1-aed6-5cedc7fd42ae"},"performance":null,"deploymentId":"forgejo-main-ecfcb12cb63f","workflowRunId":1607,"releaseTargets":{"frontend":true,"onrunner":false,"migrations":false,"ccExecution":false,"supabaseEdge":false,"edgeFunctionSlugs":[]},"detailsAvailable":true,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":5968,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-08-19T23:33:59.255704+00:00","proof_gate":"canonical_release_dispatched","source_sha":"ecfcb12cb63f5f99523efe152bab9ff8f6c3321f","external_id":"forgejo-main-ecfcb12cb63f","receipt_type":"ship_and_prove","idempotency_key":"mission:98cb692e-2213-46d1-aed6-5cedc7fd42ae:ship_and_prove:canonical_release_dispatched:ecfcb12cb63f5f99523efe152bab9ff8f6c3321f:1607","mission_step_id":"5f9f937e-bd1c-487b-8adb-bace7b19ba14","command_center_event_id":"98cb692e-2213-46d1-aed6-5cedc7fd42ae"},{"id":"bd3db983-09f1-4f82-9b1f-4ba2bfd47367","source":"cc-execution","status":"waiting_for_gate","payload":{"ok":true,"jobId":null,"phase":"implementation","branch":"ai/objective-first-repair-47d7bcd844ff","reason":"provider_verified_auto_progress_owns_gate_merge_release_outside_owner_response","status":"waiting_for_gate","metrics":{"receiptBytes":14214,"releaseCount":0,"toolCallCount":2,"repeatedCallCount":0,"executorlessWaitMs":428507,"firstUsefulResultAt":"2026-09-30T14:02:46.197Z","recoveryAttemptCount":0,"ownerInterruptionCount":0},"version":"1.64.16-paul-eval-dash-normalization","prNumber":4245,"terminal":false,"missionId":"47d7bcd8-44ff-4775-bc64-0a716a4cb5f8","operation":"execute_mission","proofGate":"repair_mission_pr_handed_off_to_supervisor","sourceSha":null,"timingsMs":{"gateMs":0,"proofMs":0,"handlerMs":4003,"releaseMs":0,"mutationMs":0,"repositoryMs":0,"prReadinessMs":0,"approvedPlanMs":597,"missionSetupMs":329,"providerAuthMs":0,"shipAndProveMs":0,"ledgerPrepareMs":329,"ledgerReconcileMs":0,"lineageReconcileMs":0,"resolvePreflightMs":329,"repositoryMutationMs":3406,"repositoryProviderMs":3406,"authoritativeLedgerMs":0,"ledgerAsyncDispatchMs":0,"repositoryAtomicCommitMs":2021,"repositoryBranchCreateMs":0,"totalSynchronousLedgerMs":329,"asyncBookkeepingDispatchMs":0,"ledgerAuthoritativeCommitMs":0,"repositoryPullRequestCreateMs":1385},"nextAction":"Canonical KnockLaunch Gate notifier and durable mission supervisor own Gate, merge, release, and proof progression from this exact PR head outside the owner response path.","receiptRef":{"mode":"full","missionId":"47d7bcd8-44ff-4775-bc64-0a716a4cb5f8"},"performance":null,"deploymentId":null,"releaseState":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","pendingProofKinds":["runtime","visual"],"verificationState":null,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":3753,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true,"requestContractState":"pending"},"tenant_id":"9602e177-0cbb-496c-bdf5-2fbc93f1b859","created_at":"2026-09-30T14:10:01.240388+00:00","proof_gate":"repair_mission_pr_handed_off_to_supervisor","source_sha":null,"external_id":"4245","receipt_type":"execute_mission","idempotency_key":"mission:47d7bcd8-44ff-4775-bc64-0a716a4cb5f8:execute_mission:repair_mission_pr_handed_off_to_supervisor:current-generation","mission_step_id":"ae425880-853f-4d28-98a6-109d04effd6e","command_center_event_id":"47d7bcd8-44ff-4775-bc64-0a716a4cb5f8"},{"id":"bd3e3394-8da1-4670-90f5-241a802a1599","source":"forgejo-runtime","status":"pending","payload":{"failed":[],"states":{"forgejo-main/source":"success","forgejo-release/workflow":"pending","cc-execution/runtime-proof":"pending"},"mainSha":"6639535bc6c1a59a48175a9d564f413a6ccfe580","missing":[],"pending":["forgejo-release/workflow","cc-execution/runtime-proof"],"required":["forgejo-main/source","forgejo-release/workflow","cc-execution/runtime-proof"],"sourceSha":"6639535bc6c1a59a48175a9d564f413a6ccfe580","releaseState":"pending","sourceInMain":true,"compareStatus":"protected_main_push_exact_source","releaseTargets":{"frontend":false,"onrunner":false,"migrations":false,"ccExecution":true,"supabaseEdge":false,"edgeFunctionSlugs":[]},"releaseTargetStates":{"ccExecution":"pending"},"requestContractHash":"eb51285432d3bf2b411f133089f9140bc68e5e81b2f99e123fbb5304c6678050","forgejoWorkflowProof":{"url":"https://git.knocklaunch.app/noel/KnockLaunchOS/actions/runs/8477","runId":8477,"status":"running","sourceSha":"6639535bc6c1a59a48175a9d564f413a6ccfe580","conclusion":null,"failedJobs":[],"diagnostics":null,"exactSource":true,"targetStates":{"ccExecution":"pending"},"targetJobCount":7,"observedTargetStates":{"ccExecution":"pending"}},"onrunnerRuntimeProof":null,"releaseSourceVerified":true,"ccExecutionRuntimeProof":{"liveSha":"ca22263b51d6cfc4ed7793bf9fa1413d1ea22664","deploymentId":"forgejo-main-ca22263b51d6cfc4ed7793bf9fa1413d1ea22664","compareStatus":null,"identitySource":"local_build_metadata","runtimeVersion":"1.58.153-cancelled-release-ancestry-fallback","containsSourceSha":false},"releaseTargetRecoveryProof":null,"exactReleaseVerifiedAfterMainAdvanced":false},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-15T19:32:16.406199+00:00","proof_gate":"canonical_release_pending","source_sha":"6639535bc6c1a59a48175a9d564f413a6ccfe580","external_id":"forgejo-main-6639535bc6c1","receipt_type":"canonical_release_status","idempotency_key":"mission:e022ab9e-6319-46ad-8f92-9aaa5762b505:forgejo-release-status:6639535bc6c1a59a48175a9d564f413a6ccfe580:pending:forgejo-main/source=success|forgejo-release/workflow=pending|cc-execution/runtime-proof=pending","mission_step_id":"aa2e5cb4-83be-471d-93f7-4aec91108a5c","command_center_event_id":"e022ab9e-6319-46ad-8f92-9aaa5762b505"},{"id":"bd43a87e-4e20-4961-aaa5-ec9e2bfc011d","source":"cc-execution","status":"waiting","payload":{"kind":"heartbeat","message":"Still active in release.","nextAction":{"lane":"production-release-conductor","action":"reconcile_release","reason":"merged_source_requires_release_proof","automationAllowed":true,"ownerActionRequired":false},"silenceBudgetMs":15000,"semanticCheckpointSignature":"{\"stateMachineVersion\":1,\"phase\":\"release\",\"ownerFacingState\":null,\"latest\":{\"kind\":\"receipt\",\"key\":\"canonical_release_status\",\"status\":\"pending\",\"proofGate\":\"canonical_release_ancestry_pending\"},\"activeStep\":{\"key\":\"preflight\",\"status\":\"ready\",\"lane\":\"cc-execution\"},\"nextStep\":{\"key\":\"implementation\",\"status\":\"pending\",\"lane\":\"cc-execution\"},\"nextSafeAction\":{\"action\":\"reconcile_release\",\"lane\":\"production-release-conductor\",\"reason\":\"merged_source_requires_release_proof\",\"automationAllowed\":true,\"ownerActionRequired\":false},\"executionOwnership\":{\"active\":false,\"state\":\"waiting\",\"executor\":null,\"lane\":\"cc-execution\",\"nextAction\":\"reconcile_release\",\"recoveryOwner\":\"production-release-conductor\"},\"acceptance\":{\"total\":6,\"verified\":0,\"pending\":6,\"percent\":0,\"satisfied\":false,\"verifiedIds\":[],\"pendingIds\":[\"preflight\",\"implementation\",\"pull_request\",\"release\",\"runtime_proof\",\"visual_proof\"]},\"stall\":{\"stalled\":true,\"reason\":\"step_deadline_exceeded\",\"step\":\"release\",\"deadlineAt\":\"2026-08-07T01:21:10.541827+00:00\",\"recoveryAction\":\"reconcile_release\"},\"blocker\":null,\"terminal\":false,\"branch\":null,\"prNumber\":4160,\"sourceSha\":\"38fc119099df613f3af42cc933607d99e6382596\",\"deploymentId\":\"canonical-release-38fc119099df\"}"},"tenant_id":"a2929648-19db-46c8-9e93-07378ed1aa5f","created_at":"2026-10-04T14:08:49.462556+00:00","proof_gate":"owner_progress_heartbeat","source_sha":null,"external_id":null,"receipt_type":"owner_progress_heartbeat","idempotency_key":"mission:d0eaf12c-79cc-4efa-87bc-ae2d2133c818:owner-progress-heartbeat:119408195","mission_step_id":"aa5802a7-5bba-4cc5-8e4a-0bd1c9d8c540","command_center_event_id":"d0eaf12c-79cc-4efa-87bc-ae2d2133c818"},{"id":"bd44f739-71cd-48de-8ea6-ae7575b547bc","source":"cc-execution","status":"blocked","payload":{"reason":"anchored_edit_anchor_not_unique:src/pages/godmode/GodModeDashboard.tsx","fingerprint":"95a9bb7b1973e9f33971fb5ddbafa3ed50ef0a8003d3801fad666759655b8de8"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-01T02:08:44.285567+00:00","proof_gate":"repository_mutation_intent_deterministic_failure","source_sha":null,"external_id":null,"receipt_type":"repository_mutation_intent_blocked","idempotency_key":"mission:c353b894-6db3-4cda-af74-08a44a3c0df3:repository-mutation-intent-blocked:95a9bb7b1973e9f33971fb5ddbafa3ed50ef0a8003d3801fad666759655b8de8","mission_step_id":"6f21a605-04f0-4287-9c0c-d6b788607856","command_center_event_id":"c353b894-6db3-4cda-af74-08a44a3c0df3"},{"id":"bd45e89f-f255-47e2-925b-25d368b1ba8a","source":"cc-execution","status":"in_progress","payload":{"ok":true,"jobId":null,"phase":"pull_request","branch":"ai/big-papis-popup-map-lifecycle","reason":null,"status":"in_progress","metrics":{"receiptBytes":0,"releaseCount":1,"toolCallCount":0,"repeatedCallCount":0,"ownerInterruptionCount":0},"version":"1.58.144-request-contract-inference","prNumber":2739,"terminal":false,"missionId":"c2eafd2f-a15d-4508-bf8b-10996e16e646","operation":"execute_mission","proofGate":"canonical_release_reconciliation_pending","sourceSha":"81689887eb4437afa648e3d6c4ce04c610f0b92d","timingsMs":{"gateMs":0,"proofMs":0,"handlerMs":4717,"releaseMs":0,"mutationMs":0,"repositoryMs":0,"prReadinessMs":271,"approvedPlanMs":0,"missionSetupMs":300,"providerAuthMs":0,"shipAndProveMs":4086,"ledgerPrepareMs":300,"ledgerReconcileMs":0,"lineageReconcileMs":0,"resolvePreflightMs":300,"repositoryMutationMs":0,"repositoryProviderMs":0,"authoritativeLedgerMs":0,"ledgerAsyncDispatchMs":0,"repositoryAtomicCommitMs":0,"repositoryBranchCreateMs":0,"totalSynchronousLedgerMs":300,"asyncBookkeepingDispatchMs":0,"ledgerAuthoritativeCommitMs":0,"repositoryPullRequestCreateMs":0},"nextAction":"Reconcile this same mission and pull request automatically; do not create replacement work.","receiptRef":{"mode":"full","missionId":"c2eafd2f-a15d-4508-bf8b-10996e16e646"},"performance":null,"deploymentId":"forgejo-main-81689887eb44","workflowRunId":8112,"releaseTargets":{"frontend":true,"onrunner":false,"migrations":false,"ccExecution":false,"supabaseEdge":false,"edgeFunctionSlugs":[]},"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":1477,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-14T08:01:34.395878+00:00","proof_gate":"canonical_release_reconciliation_pending","source_sha":"81689887eb4437afa648e3d6c4ce04c610f0b92d","external_id":"forgejo-main-81689887eb44","receipt_type":"execute_mission","idempotency_key":"mission:c2eafd2f-a15d-4508-bf8b-10996e16e646:execute_mission:canonical_release_reconciliation_pending:current-generation","mission_step_id":"5e426735-f216-42a0-97e2-7101f1ce0714","command_center_event_id":"c2eafd2f-a15d-4508-bf8b-10996e16e646"},{"id":"bd466d24-5bfa-4f6f-a3f4-5a5d014ad26b","source":"cc-execution","status":"deployment_dispatched","payload":{"ok":true,"jobId":null,"phase":"runtime_proof","branch":null,"reason":null,"status":"deployment_dispatched","metrics":{"receiptBytes":5767,"releaseCount":0,"toolCallCount":10,"repeatedCallCount":6,"ownerInterruptionCount":0},"version":"1.31.7-canonical-planner-owners","prNumber":4248,"terminal":false,"missionId":"98e1ab21-f240-4878-a7e1-caf8be42b4ae","operation":"ship_and_prove","proofGate":"canonical_release_dispatched","sourceSha":"c8ce235186ee07139a72b556b2a3ab9d2d89606d","timingsMs":null,"nextAction":null,"receiptRef":{"mode":"full","missionId":"98e1ab21-f240-4878-a7e1-caf8be42b4ae"},"performance":null,"deploymentId":"canonical-release-c8ce235186ee","workflowRunId":31207148225,"releaseTargets":{"frontend":true,"onrunner":false,"ccExecution":false,"supabaseEdge":false,"edgeFunctionSlugs":[]},"detailsAvailable":true,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":1058,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true},"tenant_id":"c55998b4-82a3-467e-8d35-177bb4785f6e","created_at":"2026-08-07T18:48:47.916475+00:00","proof_gate":"canonical_release_dispatched","source_sha":"c8ce235186ee07139a72b556b2a3ab9d2d89606d","external_id":"canonical-release-c8ce235186ee","receipt_type":"ship_and_prove","idempotency_key":"mission:98e1ab21-f240-4878-a7e1-caf8be42b4ae:ship_and_prove:canonical_release_dispatched","mission_step_id":"e8da5294-fb56-4f78-87ca-98f092370b2f","command_center_event_id":"98e1ab21-f240-4878-a7e1-caf8be42b4ae"},{"id":"bd47b83d-9fb1-49f6-9b34-9bb3759853d7","source":"cc-execution","status":"recorded","payload":{"requestContract":{"valid":true,"intent":{"evidence":[],"confidence":null,"compilation":{"stages":["owner_intent","conversation_context","scope","live_state","mutation_authority","affected_systems","dependencies","risk_and_blast_radius","execution_tactics","required_proof","release_plan","recovery_plan"],"version":2,"explicit":true,"objective":"Implement major shared PAUL Sidekick operational self-awareness upgrades for Noel's October 1, 2026 America/New_York handoff replacing external ChatGPT sessions. Use the existing platform-sidekick-intelligence primitive across all its consumers, not another intelligence layer. Inspect exact current runtime implementation and existing active related work before editing; reuse relevant canonical work when appropriate. Build grounded self-knowledge from live capability registry/runtime identity/provider availability and authorization; know selected tenant/user/role/route and distinguish owner GodMode from tenant scope; include actual active mission state, latest receipts, blockers, continuation points and concurrent work in responses, without claiming completion beyond proof. Retrieve durable owner decisions and scoped memory, persist relevant decisions and the new October 1 deadline (superseding October 4 handoff target), distinguish observed/inferred/unknown/stale facts and refresh only relevant live context. Keep chat usable during execution and treat follow-up instructions as steering without discarding the objective. Make authorized work continue via existing canonical mission/Gate/merge/release machinery, with bounded recovery and concrete readable progress rather than empty recap or capability menus. Add behavioral regression cases for capabilities questions, ongoing-work questions, reconnect/continue, correction while busy, tenant isolation, stale runtime information, and refusal to claim deployed without receipt. Establish an honest readiness report from actual case results. Inspect exact diff, canonical Gate, squash merge, release only affected owners, verify live behavior. This request authorizes implementation and deployment; do not stop at a plan/config-only declaration or require the owner to repeat go ahead. Preserve existing authorization boundaries and never fabricate readiness. Focus on governing self-awareness primitive and necessary integrations.","proofKinds":["runtime"],"adaptiveDomains":["intent","tenant_route_role_viewport","urgency_deadline","dependency_scope","risk_blast_radius","runner_capacity","queue_active_work","provider_failure_circuits","qa_scope","retry_recovery","release_ownership","proof_depth"],"expansionPolicy":"later_stages_may_only_narrow_or_expand_with_machine_readable_dependency_evidence","dynamicStatePolicy":"live_state_may_change_execution_tactics_but_never_owner_outcome_or_explicit_constraints","dynamicRefreshStages":["preflight","gate","release","runtime_proof"],"adaptiveCompilerVersion":"paul-adaptive-objective-v1","inheritedContextBlockingAuthority":false},"rawUtterance":"Implement major shared PAUL Sidekick operational self-awareness upgrades for Noel's October 1, 2026 America/New_York handoff replacing external ChatGPT sessions. Use the existing platform-sidekick-intelligence primitive across all its consumers, not another intelligence layer. Inspect exact current runtime implementation and existing active related work before editing; reuse relevant canonical work when appropriate. Build grounded self-knowledge from live capability registry/runtime identity/provider availability and authorization; know selected tenant/user/role/route and distinguish owner GodMode from tenant scope; include actual active mission state, latest receipts, blockers, continuation points and concurrent work in responses, without claiming completion beyond proof. Retrieve durable owner decisions and scoped memory, persist relevant decisions and the new October 1 deadline (superseding October 4 handoff target), distinguish observed/inferred/unknown/stale facts and refresh only relevant live context. Keep chat usable during execution and treat follow-up instructions as steering without discarding the objective. Make authorized work continue via existing canonical mission/Gate/merge/release machinery, with bounded recovery and concrete readable progress rather than empty recap or capability menus. Add behavioral regression cases for capabilities questions, ongoing-work questions, reconnect/continue, correction while busy, tenant isolation, stale runtime information, and refusal to claim deployed without receipt. Establish an honest readiness report from actual case results. Inspect exact diff, canonical Gate, squash merge, release only affected owners, verify live behavior. This request authorizes implementation and deployment; do not stop at a plan/config-only declaration or require the owner to repeat go ahead. Preserve existing authorization boundaries and never fabricate readiness. Focus on governing self-awareness primitive and necessary integrations.","wordingChanged":false,"canonicalIntent":"Implement major shared PAUL Sidekick operational self-awareness upgrades for Noel's October 1, 2026 America/New_York handoff replacing external ChatGPT sessions. Use the existing platform-sidekick-intelligence primitive across all its consumers, not another intelligence layer. Inspect exact current runtime implementation and existing active related work before editing; reuse relevant canonical work when appropriate. Build grounded self-knowledge from live capability registry/runtime identity/provider availability and authorization; know selected tenant/user/role/route and distinguish owner GodMode from tenant scope; include actual active mission state, latest receipts, blockers, continuation points and concurrent work in responses, without claiming completion beyond proof. Retrieve durable owner decisions and scoped memory, persist relevant decisions and the new October 1 deadline (superseding October 4 handoff target), distinguish observed/inferred/unknown/stale facts and refresh only relevant live context. Keep chat usable during execution and treat follow-up instructions as steering without discarding the objective. Make authorized work continue via existing canonical mission/Gate/merge/release machinery, with bounded recovery and concrete readable progress rather than empty recap or capability menus. Add behavioral regression cases for capabilities questions, ongoing-work questions, reconnect/continue, correction while busy, tenant isolation, stale runtime information, and refusal to claim deployed without receipt. Establish an honest readiness report from actual case results. Inspect exact diff, canonical Gate, squash merge, release only affected owners, verify live behavior. This request authorizes implementation and deployment; do not stop at a plan/config-only declaration or require the owner to repeat go ahead. Preserve existing authorization boundaries and never fabricate readiness. Focus on governing self-awareness primitive and necessary integrations.","resolutionStatus":"exact","uniqueResolution":true,"clarificationRequired":false},"source":"explicit","version":1,"outcomes":[{"id":"self-awareness","statement":"Implement major shared PAUL Sidekick operational self-awareness upgrades for Noel's October 1, 2026 America/New_York handoff replacing external ChatGPT sessions. Use the existing platform-sidekick-intelligence primitive across all its consumers, not another intelligence layer. Inspect exact current runtime implementation and existing active related work before editing; reuse relevant canonical work when appropriate. Build grounded self-knowledge from live capability registry/runtime identity/provider availability and authorization; know selected tenant/user/role/route and distinguish owner GodMode from tenant scope; include actual active mission state, latest receipts, blockers, continuation points and concurrent work in responses, without claiming completion beyond proof. Retrieve durable owner decisions and scoped memory, persist relevant decisions and the new October 1 deadline (superseding October 4 handoff target), distinguish observed/inferred/unknown/stale facts and refresh only relevant live context. Keep chat usable during execution and treat follow-up instructions as steering without discarding the objective. Make authorized work continue via existing canonical mission/Ga","provenance":{"reason":null,"source":"explicit_request_contract","inherited":false,"blockingAuthority":true},"proofConditionIds":["runtime"]}],"objective":"Implement major shared PAUL Sidekick operational self-awareness upgrades for Noel's October 1, 2026 America/New_York handoff replacing external ChatGPT sessions. Use the existing platform-sidekick-intelligence primitive across all its consumers, not another intelligence layer. Inspect exact current runtime implementation and existing active related work before editing; reuse relevant canonical work when appropriate. Build grounded self-knowledge from live capability registry/runtime identity/provider availability and authorization; know selected tenant/user/role/route and distinguish owner GodMode from tenant scope; include actual active mission state, latest receipts, blockers, continuation points and concurrent work in responses, without claiming completion beyond proof. Retrieve durable owner decisions and scoped memory, persist relevant decisions and the new October 1 deadline (superseding October 4 handoff target), distinguish observed/inferred/unknown/stale facts and refresh only relevant live context. Keep chat usable during execution and treat follow-up instructions as steering without discarding the objective. Make authorized work continue via existing canonical mission/Gate/merge/release machinery, with bounded recovery and concrete readable progress rather than empty recap or capability menus. Add behavioral regression cases for capabilities questions, ongoing-work questions, reconnect/continue, correction while busy, tenant isolation, stale runtime information, and refusal to claim deployed without receipt. Establish an honest readiness report from actual case results. Inspect exact diff, canonical Gate, squash merge, release only affected owners, verify live behavior. This request authorizes implementation and deployment; do not stop at a plan/config-only declaration or require the owner to repeat go ahead. Preserve existing authorization boundaries and never fabricate readiness. Focus on governing self-awareness primitive and necessary integrations.","constraints":[{"id":"scope","statement":"Use existing intelligence; preserve tenant authorization; verify behavioral regression cases and honest readiness results.","provenance":{"reason":null,"source":"explicit_request_contract","inherited":false,"blockingAuthority":true},"proofConditionIds":["runtime"]},{"id":"capability-completeness","statement":"Every dependency the implementation declares or relies on must be wired and proven across applicable frontend, backend/runtime, schema/data/storage, authentication/authorization, provider configuration, prerequisite/loading/empty/error states, release ownership, and live production behavior; owner-authorized unavailable dependencies must become explicit prerequisite states rather than runtime failures.","provenance":{"reason":null,"source":"hard_safety_invariant","inherited":false,"blockingAuthority":true},"proofConditionIds":["runtime"]},{"id":"atomic-capability-lifecycle","statement":"Changed capabilities remain non-active until dependency readiness, N/N-1 compatibility, affected-target release, and claim-matched production canary proof are satisfied; missing optional dependencies become prerequisite_required, and runtime drift or health-contract violation quarantines only the affected capability instead of breaking unrelated working capability.","provenance":{"reason":null,"source":"hard_safety_invariant","inherited":false,"blockingAuthority":true},"proofConditionIds":["runtime"]}],"adaptivePolicy":{"risk":{"tier":"high","blastRadius":"sensitive"},"proof":{"requiredKinds":["runtime"],"visualProofScope":"none","interactionRequired":false,"runtimeProofRequired":true},"scope":{"route":null,"roleRef":null,"tenantRef":null,"sourceTargets":["supabase/functions/operator-respond/index.ts"]},"dynamic":{"variables":["main_and_runtime_lineage","runner_capacity","queue_and_active_work","provider_health","failure_clusters_and_circuits","release_target_state","current_pr_and_gate_state"],"refreshStages":["preflight","gate","release","runtime_proof"],"refreshMayChange":["runner_selection","parallelism","retry_path","qa_depth","release_recovery","proof_timing"],"refreshMayNotChange":["owner_outcome","explicit_no_go_constraints","tenant_identity","credential_boundary","hard_safety_invariants"]},"urgency":{"priority":"deadline_sensitive","deadlineSignals":["before editing"],"deadlineExplicit":true},"version":"paul-adaptive-objective-v1","recovery":{"transient":"one_bounded_retry_then_alternate_eligible_pool_or_provider_path","deterministic":"repair_source_or_contract_do_not_blind_rerun","mutationDependencyFailure":"prerequisite_required_or_targeted_recovery_never_invent","readOnlyDependencyFailure":"degrade_to_available_grounded_context_and_keep_conversation_alive"},"unknowns":["tenant","route"],"authority":{"outcome":"current_explicit_owner_request","tactics":"live_prime_truth","unknownPolicy":"preserve_unknown_never_invent","historicalContext":"advisory_unless_current_request_confirms"},"execution":{"mutation":true,"concurrency":"serialize_overlapping_mutations","scopePolicy":"start_bounded_expand_only_with_machine_readable_dependency_evidence","staleStatePolicy":"refresh_dynamic_state_before_irreversible_or_acceptance_stage","conversationIsolation":true,"ownerOutcomeMayBeChangedByAdaptation":false},"experience":{"visual":false,"viewports":["desktop","mobile"],"behavioral":false,"visualProofScope":"none"},"dependencies":{"requiredDomains":["frontend","backend_runtime","schema_data_storage","authentication_authorization","provider_configuration","release_ownership","live_production_proof"],"capabilityDomains":["frontend","backend_runtime","schema_data_storage","authentication_authorization","provider_configuration","prerequisite_loading_empty_error_states","release_ownership","live_production_proof"],"releaseTargetHints":["supabaseEdge"]},"inputSignals":{"rawUtterance":"Implement major shared PAUL Sidekick operational self-awareness upgrades for Noel's October 1, 2026 America/New_York handoff replacing external ChatGPT sessions. Use the existing platform-sidekick-intelligence primitive across all its consumers, not another intelligence layer. Inspect exact current runtime implementation and existing active related work before editing; reuse relevant canonical work when appropriate. Build grounded self-knowledge from live capability registry/runtime identity/provider availability and authorization; know selected tenant/user/role/route and distinguish owner GodMode from tenant scope; include actual active mission state, latest receipts, blockers, continuation points and concurrent work in responses, without claiming completion beyond proof. Retrieve durable owner decisions and scoped memory, persist relevant decisions and the new October 1 deadline (superseding October 4 handoff target), distinguish observed/inferred/unknown/stale facts and refresh only relevant live context. Keep chat usable during execution and treat follow-up instructions as steering without discarding the objective. Make authorized work continue via existing canonical mission/Gate/merge/release machinery, with bounded recovery and concrete readable progress rather than empty recap or capability menus. Add behavioral regression cases for capabilities questions, ongoing-work questions, reconnect/continue, correction while busy, tenant isolation, stale runtime information, and refusal to claim deployed without receipt. Establish an honest readiness report from actual case results. Inspect exact diff, canonical Gate, squash merge, release only affected owners, verify live behavior. This request authorizes implementation and deployment; do not stop at a plan/config-only declaration or require the owner to repeat go ahead. Preserve existing authorization boundaries and never fabricate readiness. Focus on governing self-awareness primitive and necessary integrations.","canonicalIntent":"Implement major shared PAUL Sidekick operational self-awareness upgrades for Noel's October 1, 2026 America/New_York handoff replacing external ChatGPT sessions. Use the existing platform-sidekick-intelligence primitive across all its consumers, not another intelligence layer. Inspect exact current runtime implementation and existing active related work before editing; reuse relevant canonical work when appropriate. Build grounded self-knowledge from live capability registry/runtime identity/provider availability and authorization; know selected tenant/user/role/route and distinguish owner GodMode from tenant scope; include actual active mission state, latest receipts, blockers, continuation points and concurrent work in responses, without claiming completion beyond proof. Retrieve durable owner decisions and scoped memory, persist relevant decisions and the new October 1 deadline (superseding October 4 handoff target), distinguish observed/inferred/unknown/stale facts and refresh only relevant live context. Keep chat usable during execution and treat follow-up instructions as steering without discarding the objective. Make authorized work continue via existing canonical mission/Gate/merge/release machinery, with bounded recovery and concrete readable progress rather than empty recap or capability menus. Add behavioral regression cases for capabilities questions, ongoing-work questions, reconnect/continue, correction while busy, tenant isolation, stale runtime information, and refusal to claim deployed without receipt. Establish an honest readiness report from actual case results. Inspect exact diff, canonical Gate, squash merge, release only affected owners, verify live behavior. This request authorizes implementation and deployment; do not stop at a plan/config-only declaration or require the owner to repeat go ahead. Preserve existing authorization boundaries and never fabricate readiness. Focus on governing self-awareness primitive and necessary integrations.","conversationContextPresent":false}},"terminalPolicy":"all_required_proof_conditions_satisfied_after_live_release","proofConditions":[{"id":"runtime","kind":"runtime","claim":"Affected owners live with tested grounded capability awareness, current-work continuity, reconnect, steering while busy, tenant isolation, stale-evidence handling and receipt-backed completion claims; October 1 handoff target persisted.","route":null,"roleRef":null,"userRef":null,"required":true,"expectedText":null,"targetedActions":[],"allowedReleaseTargets":[],"requiredReleaseTargets":[],"requireCapacityAdmissible":false,"expectedWatchdogPolicyVersion":null,"minConsecutiveHealthyHeartbeats":1,"requirePositiveMemoryAttribution":false,"requireMemoryAdmissionPressureFalse":false}],"validationErrors":[],"capabilityManifest":{"id":"Implement-major-shared-PAUL-Sidekick-operational-self-awareness-upgrades-for-Noel-s-October-1-2026-A","driftPolicy":"exact_manifest_source_release_dependency_or_runtime_identity_mismatch_is_nonterminal","proofLedger":"command_center_mission_ledger_request_contract_hash_bound","schemaVersion":1,"releaseTargets":[],"lifecycleStates":["prepare","deploy","verify","activate"],"activationPolicy":"dependencies_and_claim_matched_live_proof_before_exposure","dependencyDomains":["frontend","backend_runtime","schema_data_storage","authentication_authorization","provider_configuration","prerequisite_loading_empty_error_states","release_ownership","live_production_proof"],"prerequisitePolicy":"expected_unavailable_dependencies_are_prerequisite_required_not_runtime_failures","compatibilityWindow":["N","N-1"],"failureIsolationPolicy":"quarantine_or_rollback_affected_capability_only_preserve_unrelated_working_capabilities","canaryProofConditionIds":["runtime"]},"capabilityCompleteness":{"domains":["frontend","backend_runtime","schema_data_storage","authentication_authorization","provider_configuration","prerequisite_loading_empty_error_states","release_ownership","live_production_proof"],"required":true,"prerequisitePolicy":"expected_unavailable_dependencies_are_prerequisite_states_not_runtime_failures"}},"requestContractHash":"7e9e08bde92d4ba612ec3bcc04d15bdd46fa485223e432568877655aa68e6435","requestContractRevision":3,"previousRequestContractHash":"516bc39f44a48e0868807aa48c88f9f9f0fb94986ec63ffb2e0f03747bb7f987"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-29T13:58:16.807634+00:00","proof_gate":"request_contract_revision_recorded","source_sha":null,"external_id":null,"receipt_type":"request_contract_revision","idempotency_key":"mission:625d0f4e-d80b-4bfc-ad1f-d4d2b7cf9d8f:request-contract:7e9e08bde92d4ba612ec3bcc04d15bdd46fa485223e432568877655aa68e6435","mission_step_id":"8b7c28f4-a78a-440c-bf3a-b21990828bfd","command_center_event_id":"625d0f4e-d80b-4bfc-ad1f-d4d2b7cf9d8f"},{"id":"bd498bfc-4950-4fb9-83d5-7209231d9af2","source":"cc-execution","status":"waiting_for_gate","payload":{"ok":true,"jobId":null,"phase":"release","branch":"ai/legacy-mission-id-terminalization-20260910","reason":"fresh_pr_provider_receipt_already_proves_auto_progress_gate_notifier_owns_next_state","status":"waiting_for_gate","metrics":{"receiptBytes":0,"releaseCount":1,"toolCallCount":0,"repeatedCallCount":0,"ownerInterruptionCount":0},"version":"1.58.90-mission-terminalization","prNumber":2287,"terminal":false,"missionId":"20aae700-7266-447e-844c-b0d60ddea665","operation":"execute_mission","proofGate":"repair_mission_fresh_pr_handed_off_to_gate","sourceSha":null,"timingsMs":{"gateMs":0,"proofMs":0,"handlerMs":4272,"releaseMs":0,"mutationMs":0,"repositoryMs":0,"prReadinessMs":0,"approvedPlanMs":0,"missionSetupMs":269,"providerAuthMs":0,"shipAndProveMs":0,"ledgerPrepareMs":269,"ledgerReconcileMs":0,"lineageReconcileMs":0,"resolvePreflightMs":269,"repositoryMutationMs":4272,"repositoryProviderMs":3110,"authoritativeLedgerMs":0,"ledgerAsyncDispatchMs":0,"repositoryAtomicCommitMs":1748,"repositoryBranchCreateMs":0,"totalSynchronousLedgerMs":269,"asyncBookkeepingDispatchMs":0,"ledgerAuthoritativeCommitMs":0,"repositoryPullRequestCreateMs":1362},"nextAction":"Canonical KnockLaunch Gate notifier and mission supervisor own progression from this exact PR head; do not synchronously poll Forgejo from the owner request.","receiptRef":{"mode":"full","missionId":"20aae700-7266-447e-844c-b0d60ddea665"},"performance":null,"deploymentId":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":3420,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-10T06:39:40.717675+00:00","proof_gate":"repair_mission_fresh_pr_handed_off_to_gate","source_sha":null,"external_id":"2287","receipt_type":"execute_mission","idempotency_key":"mission:20aae700-7266-447e-844c-b0d60ddea665:execute_mission:repair_mission_fresh_pr_handed_off_to_gate:generation-5","mission_step_id":"fcc4502e-7930-43dc-91dc-49f9dc193586","command_center_event_id":"20aae700-7266-447e-844c-b0d60ddea665"},{"id":"bd4be053-6fe2-4147-8820-d0d615e80340","source":"cc-execution","status":"deployment_dispatched","payload":{"ok":true,"jobId":null,"phase":"pull_request","branch":"ai/proposal-editor-crop-mode-context-menu","reason":null,"status":"deployment_dispatched","metrics":{"receiptBytes":0,"releaseCount":0,"toolCallCount":0,"repeatedCallCount":0,"ownerInterruptionCount":0},"version":"1.58.68-visual-witness-self-heal-proof","prNumber":1977,"terminal":false,"missionId":"fed12649-5db9-4ccc-91dc-e180b5e8752c","operation":"execute_mission","proofGate":"canonical_release_dispatched","sourceSha":"4fddbe556e903e2f88911933b76b74d335dcf0e8","timingsMs":{"gateMs":0,"proofMs":0,"handlerMs":9814,"releaseMs":0,"mutationMs":0,"repositoryMs":0,"prReadinessMs":1081,"approvedPlanMs":0,"missionSetupMs":637,"providerAuthMs":0,"shipAndProveMs":8604,"ledgerPrepareMs":485,"ledgerReconcileMs":0,"lineageReconcileMs":152,"resolvePreflightMs":637,"repositoryMutationMs":0,"repositoryProviderMs":0,"authoritativeLedgerMs":0,"ledgerAsyncDispatchMs":0,"repositoryAtomicCommitMs":0,"repositoryBranchCreateMs":0,"totalSynchronousLedgerMs":485,"asyncBookkeepingDispatchMs":0,"ledgerAuthoritativeCommitMs":0,"repositoryPullRequestCreateMs":0},"nextAction":null,"receiptRef":{"mode":"full","missionId":"fed12649-5db9-4ccc-91dc-e180b5e8752c"},"performance":null,"deploymentId":"forgejo-main-4fddbe556e90","workflowRunId":null,"releaseTargets":{"frontend":true,"onrunner":false,"migrations":false,"ccExecution":false,"supabaseEdge":false,"edgeFunctionSlugs":[]},"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":2655,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true},"tenant_id":"766cfaa7-ac42-46c8-bbef-69d13268a29d","created_at":"2026-09-06T18:06:22.305295+00:00","proof_gate":"canonical_release_dispatched","source_sha":"4fddbe556e903e2f88911933b76b74d335dcf0e8","external_id":"forgejo-main-4fddbe556e90","receipt_type":"execute_mission","idempotency_key":"mission:fed12649-5db9-4ccc-91dc-e180b5e8752c:execute_mission:canonical_release_dispatched:current-generation","mission_step_id":"deab8f65-e19a-4c1f-ad41-f9a94c86168b","command_center_event_id":"fed12649-5db9-4ccc-91dc-e180b5e8752c"},{"id":"bd4c8035-1b42-480f-a43a-fdf32a048c6f","source":"cc-execution","status":"blocked","payload":{"ok":false,"jobId":null,"phase":"release","branch":null,"reason":"forgejo_release_source_not_current_main","status":"blocked","metrics":{"receiptBytes":4510,"releaseCount":0,"toolCallCount":5,"repeatedCallCount":1,"ownerInterruptionCount":0},"version":null,"prNumber":54,"terminal":false,"missionId":"7d0cf7a5-6811-416f-8bac-ecca003d4523","operation":"automatic_mission_resume","proofGate":"canonical_release_blocked","sourceSha":"5613caf6894fc90fec05ba0a1614206b1ef18b6a","timingsMs":null,"nextAction":null,"receiptRef":{"mode":"full","missionId":"7d0cf7a5-6811-416f-8bac-ecca003d4523"},"performance":null,"deploymentId":"forgejo-main-5613caf6894f","workflowRunId":149,"releaseTargets":{"frontend":true,"onrunner":false,"migrations":false,"ccExecution":false,"supabaseEdge":false,"edgeFunctionSlugs":[]},"detailsAvailable":true,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":316,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true},"tenant_id":"766cfaa7-ac42-46c8-bbef-69d13268a29d","created_at":"2026-08-15T03:51:53.702986+00:00","proof_gate":"canonical_release_blocked","source_sha":null,"external_id":"54","receipt_type":"automatic_mission_resume","idempotency_key":"mission:7d0cf7a5-6811-416f-8bac-ecca003d4523:automatic-mission-resume:54:canonical_release_blocked","mission_step_id":"a8218dbb-46fb-4e66-b9e3-a029b5698f2b","command_center_event_id":"7d0cf7a5-6811-416f-8bac-ecca003d4523"},{"id":"bd4e4d2e-b6af-4085-9723-5b2db0bdc69d","source":"cc-execution","status":"deployment_dispatched","payload":{"ok":true,"jobId":null,"phase":"pull_request","branch":"ai/fix-big-papis-inventory-rls-20260825","reason":null,"status":"deployment_dispatched","metrics":{"receiptBytes":9507,"releaseCount":0,"toolCallCount":9,"repeatedCallCount":4,"ownerInterruptionCount":0},"version":"1.50.47-noop-merge-tree-proof","prNumber":751,"terminal":false,"missionId":"77a4caee-1dfe-41aa-b362-df47a6de4cd3","operation":"execute_mission","proofGate":"canonical_release_dispatched","sourceSha":"39904c2807cb1801b69ffb954c86ad223af9bf11","timingsMs":{"handlerMs":10791,"prReadinessMs":126,"approvedPlanMs":0,"missionSetupMs":2835,"shipAndProveMs":10665},"nextAction":null,"receiptRef":{"mode":"full","missionId":"77a4caee-1dfe-41aa-b362-df47a6de4cd3"},"performance":null,"deploymentId":"forgejo-main-39904c2807cb","workflowRunId":null,"releaseTargets":{"frontend":false,"onrunner":false,"migrations":true,"ccExecution":false,"supabaseEdge":true,"edgeFunctionSlugs":["mobile-vendor-event-request","mobile-vendor-growth"]},"detailsAvailable":true,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":6430,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true},"tenant_id":"766cfaa7-ac42-46c8-bbef-69d13268a29d","created_at":"2026-08-25T17:06:37.761129+00:00","proof_gate":"canonical_release_dispatched","source_sha":"39904c2807cb1801b69ffb954c86ad223af9bf11","external_id":"forgejo-main-39904c2807cb","receipt_type":"execute_mission","idempotency_key":"mission:77a4caee-1dfe-41aa-b362-df47a6de4cd3:execute_mission:canonical_release_dispatched","mission_step_id":"db27ad0b-302d-40b4-99a5-214ec01a75fb","command_center_event_id":"77a4caee-1dfe-41aa-b362-df47a6de4cd3"},{"id":"bd50edbc-5631-447c-addb-92d2f27aaa9a","source":"cc-execution","status":"blocked","payload":{"ok":false,"jobId":null,"phase":"implementation","branch":"ai/objective-first-repair-d02f9bb056d2","reason":"anchored_edit_anchor_missing:workers/cc-execution/src/index-release-fast-lane.js","status":"blocked","metrics":{"receiptBytes":15126,"releaseCount":0,"toolCallCount":7,"repeatedCallCount":2,"executorlessWaitMs":166204,"firstUsefulResultAt":"2026-09-25T23:12:19.955Z","recoveryAttemptCount":0,"ownerInterruptionCount":0},"version":"1.58.283-heavy-runner-labels","prNumber":null,"terminal":false,"missionId":"d02f9bb0-56d2-4736-a195-b14226b5aba7","operation":"execute_mission","proofGate":"repair_mission_execution_blocked","sourceSha":null,"timingsMs":{"gateMs":0,"proofMs":0,"handlerMs":1563,"releaseMs":0,"mutationMs":0,"repositoryMs":0,"prReadinessMs":0,"approvedPlanMs":1563,"missionSetupMs":277,"providerAuthMs":0,"shipAndProveMs":0,"ledgerPrepareMs":277,"ledgerReconcileMs":0,"lineageReconcileMs":0,"resolvePreflightMs":277,"repositoryMutationMs":0,"repositoryProviderMs":0,"authoritativeLedgerMs":0,"ledgerAsyncDispatchMs":0,"repositoryAtomicCommitMs":0,"repositoryBranchCreateMs":0,"totalSynchronousLedgerMs":277,"asyncBookkeepingDispatchMs":0,"ledgerAuthoritativeCommitMs":0,"repositoryPullRequestCreateMs":0},"nextAction":null,"receiptRef":{"mode":"full","missionId":"d02f9bb0-56d2-4736-a195-b14226b5aba7"},"performance":null,"deploymentId":null,"releaseState":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","pendingProofKinds":["runtime"],"verificationState":null,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":1541,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true,"requestContractState":"pending"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-25T23:14:51.028838+00:00","proof_gate":"repair_mission_execution_blocked","source_sha":null,"external_id":null,"receipt_type":"execute_mission","idempotency_key":"mission:d02f9bb0-56d2-4736-a195-b14226b5aba7:execute_mission:repair_mission_execution_blocked:current-generation","mission_step_id":"0e8d47a8-fc32-45e7-ac4d-484873772854","command_center_event_id":"d02f9bb0-56d2-4736-a195-b14226b5aba7"},{"id":"bd545129-548e-4839-895c-bfc1eb61dc66","source":"cc-execution","status":"deployment_dispatched","payload":{"ok":true,"jobId":null,"phase":"objective_received","branch":"ai/321-auto-unlock-route-depth-20260901","reason":null,"status":"deployment_dispatched","metrics":{"receiptBytes":9954,"releaseCount":0,"toolCallCount":1,"repeatedCallCount":0,"ownerInterruptionCount":0},"version":"1.58.0-frontend-build-velocity-freeze","prNumber":1240,"terminal":false,"missionId":"32b26b3f-1e3c-4c22-823a-737e3df2fc10","operation":"execute_mission","proofGate":"canonical_release_dispatched","sourceSha":"485e4c5091901f58faf84911dd98e8af7e105d02","timingsMs":{"handlerMs":15858,"prReadinessMs":2856,"approvedPlanMs":4991,"missionSetupMs":2521,"shipAndProveMs":7644},"nextAction":null,"receiptRef":{"mode":"full","missionId":"32b26b3f-1e3c-4c22-823a-737e3df2fc10"},"performance":null,"deploymentId":"forgejo-main-485e4c509190","workflowRunId":null,"releaseTargets":{"frontend":true,"onrunner":false,"migrations":false,"ccExecution":false,"supabaseEdge":false,"edgeFunctionSlugs":[]},"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":3707,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-01T11:28:12.850612+00:00","proof_gate":"canonical_release_dispatched","source_sha":"485e4c5091901f58faf84911dd98e8af7e105d02","external_id":"forgejo-main-485e4c509190","receipt_type":"execute_mission","idempotency_key":"mission:32b26b3f-1e3c-4c22-823a-737e3df2fc10:execute_mission:canonical_release_dispatched:current-generation","mission_step_id":"8d37c5f6-7b48-42d5-be85-e8682abd1844","command_center_event_id":"32b26b3f-1e3c-4c22-823a-737e3df2fc10"},{"id":"bd5582a4-1743-41fb-bbaa-6a1d74d56c94","source":"durable-mission-ledger","status":"waiting","payload":{"reason":"immutable_release_receipt_contract_hash_mismatch","sourceSha":"9f348ceb2c0264336b39d36da97795ad7b3e20bd","currentContractHash":"c9fa0b89e2555506624ea14d7a820ec097e6e8fba89189739e394230d879164e","priorReceiptContractHash":null},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-06T03:06:59.783894+00:00","proof_gate":"request_contract_release_rebind_blocked","source_sha":"9f348ceb2c0264336b39d36da97795ad7b3e20bd","external_id":null,"receipt_type":"request_contract_release_rebind_rejected","idempotency_key":"mission:10b94cd1-90ad-46bd-a864-548ea1c53b2a:release-rebind-blocked:9f348ceb2c0264336b39d36da97795ad7b3e20bd:none:c9fa0b89e2555506624ea14d7a820ec097e6e8fba89189739e394230d879164e","mission_step_id":"e71a1300-92e1-4bd1-8df3-c3e289deee5c","command_center_event_id":"10b94cd1-90ad-46bd-a864-548ea1c53b2a"},{"id":"bd5690ee-f474-486d-9b50-8024ac8bb358","source":"cc-execution","status":"retryable","payload":{"ok":false,"jobId":null,"phase":"implementation","branch":"ai/objective-first-repair-208a1298dd98","reason":"retryable_provider_transport:forgejo_provider_read_timeout","status":"retryable","metrics":{"receiptBytes":6822,"releaseCount":0,"toolCallCount":1,"repeatedCallCount":0,"executorlessWaitMs":0,"firstUsefulResultAt":"2026-10-05T20:45:03.592Z","recoveryAttemptCount":0,"ownerInterruptionCount":0},"version":"1.65.4-release-terminal-proof-unblocks-queue","prNumber":5058,"terminal":false,"missionId":"208a1298-dd98-45b2-bdb2-149eaa5dc7cb","operation":"execute_mission","proofGate":"repair_mission_pr_ready_retryable","sourceSha":null,"timingsMs":{"gateMs":0,"proofMs":0,"handlerMs":8068,"releaseMs":0,"mutationMs":0,"repositoryMs":0,"prReadinessMs":2121,"approvedPlanMs":2205,"missionSetupMs":353,"providerAuthMs":0,"shipAndProveMs":0,"ledgerPrepareMs":353,"ledgerReconcileMs":0,"lineageReconcileMs":0,"resolvePreflightMs":353,"repositoryMutationMs":3736,"repositoryProviderMs":3736,"authoritativeLedgerMs":0,"ledgerAsyncDispatchMs":0,"repositoryAtomicCommitMs":2339,"repositoryBranchCreateMs":0,"totalSynchronousLedgerMs":353,"asyncBookkeepingDispatchMs":0,"ledgerAuthoritativeCommitMs":0,"repositoryPullRequestCreateMs":1397},"nextAction":"Reconcile this same mission and pull request automatically; do not create a replacement branch or PR.","receiptRef":{"mode":"full","missionId":"208a1298-dd98-45b2-bdb2-149eaa5dc7cb"},"performance":null,"deploymentId":null,"releaseState":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","pendingProofKinds":[],"verificationState":null,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":1535,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true,"requestContractState":"pending"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-05T20:45:13.369012+00:00","proof_gate":"repair_mission_pr_ready_retryable","source_sha":null,"external_id":"5058","receipt_type":"execute_mission","idempotency_key":"mission:208a1298-dd98-45b2-bdb2-149eaa5dc7cb:execute_mission:repair_mission_pr_ready_retryable:current-generation","mission_step_id":"d543c35c-04d2-43e8-8e8d-1b92390baecb","command_center_event_id":"208a1298-dd98-45b2-bdb2-149eaa5dc7cb"},{"id":"bd5814f8-3107-4549-988a-81daa4d65185","source":"forgejo","status":"waiting","payload":{"branch":"ai/objective-first-repair-62dc43114763","prNumber":2942,"nextAction":"Follow the existing canonical release to terminal proof.","mergeCommitSha":"bb6bd06be1663b24f2b666d526f1cc553adcb233","branchDeletedAfterMerge":true,"correctiveGenerationCreated":false},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-16T19:38:41.285294+00:00","proof_gate":"forgejo_merged_pr_is_authoritative_source_lineage","source_sha":"bb6bd06be1663b24f2b666d526f1cc553adcb233","external_id":"2942","receipt_type":"source_lineage_merged_pr_authoritative","idempotency_key":"mission:62dc4311-4763-4408-a83e-fad585e3e823:merged-pr:2942:bb6bd06be1663b24f2b666d526f1cc553adcb233","mission_step_id":"ea1dab6a-d26e-4210-8871-0b7e89a9ba57","command_center_event_id":"62dc4311-4763-4408-a83e-fad585e3e823"},{"id":"bd59cace-60ff-4ccb-9cfd-afa829f56c4b","source":"cc-execution","status":"synthesis_required","payload":{"ok":true,"jobId":null,"phase":"reasoning_required","branch":"ai/objective-first-repair-fd70f0e729e4","reason":null,"status":"synthesis_required","metrics":{"receiptBytes":4587,"releaseCount":0,"toolCallCount":4,"repeatedCallCount":2,"executorlessWaitMs":17752,"firstUsefulResultAt":"2026-10-05T17:55:12.242Z","recoveryAttemptCount":0,"ownerInterruptionCount":0},"version":"1.64.99-positive-mutation-admission","prNumber":null,"terminal":false,"missionId":"fd70f0e7-29e4-4e98-aaf2-88436707b426","operation":"execute_mission","proofGate":"repair_mission_synthesis_ready","sourceSha":null,"timingsMs":{"gateMs":0,"proofMs":0,"handlerMs":3274,"releaseMs":0,"mutationMs":0,"repositoryMs":0,"missionSetupMs":276,"providerAuthMs":0,"ledgerPrepareMs":276,"ledgerReconcileMs":0,"lineageReconcileMs":0,"resolvePreflightMs":276,"authoritativeLedgerMs":0,"ledgerAsyncDispatchMs":0,"totalSynchronousLedgerMs":276,"asyncBookkeepingDispatchMs":0,"ledgerAuthoritativeCommitMs":0},"nextAction":"Inspect the bounded repository paths, synthesize exact files or anchored_edits, and call /mission/execute again automatically with this same missionId without another owner prompt or workflow switch.","receiptRef":{"mode":"full","missionId":"fd70f0e7-29e4-4e98-aaf2-88436707b426"},"performance":null,"deploymentId":null,"releaseState":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","pendingProofKinds":["runtime"],"verificationState":null,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":3484,"likelyAffectedFiles":["src/pages/card-grading/PCGAIGradingWorkbench.tsx"],"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true,"requestContractState":"pending"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-05T17:55:14.933371+00:00","proof_gate":"repair_mission_synthesis_ready","source_sha":null,"external_id":null,"receipt_type":"execute_mission","idempotency_key":"mission:fd70f0e7-29e4-4e98-aaf2-88436707b426:execute_mission:repair_mission_synthesis_ready:current-generation","mission_step_id":"bb701a4e-aa1a-49ef-b71f-e76e2e2613a4","command_center_event_id":"fd70f0e7-29e4-4e98-aaf2-88436707b426"},{"id":"bd5b5d81-045d-45f0-92ce-8db5cfc0b8a5","source":"cc-execution","status":"release_reconciliation_pending","payload":{"ok":true,"jobId":null,"phase":"implementation","branch":"ai/objective-first-repair-b3b2f94edb9c","reason":null,"status":"release_reconciliation_pending","metrics":{"receiptBytes":19409,"releaseCount":0,"toolCallCount":9,"repeatedCallCount":2,"executorlessWaitMs":44662,"firstUsefulResultAt":"2026-10-02T00:51:28.644Z","recoveryAttemptCount":4,"ownerInterruptionCount":0},"version":null,"prNumber":4435,"terminal":false,"missionId":"b3b2f94e-db9c-4526-8575-aea80e200751","operation":"automatic_mission_resume","proofGate":"canonical_release_reconciliation_pending","sourceSha":"82f395b8bb329c46783b0390c9ee3d72fcb05103","timingsMs":{"prReadinessMs":679,"approvedPlanMs":0,"shipAndProveMs":2844,"repositoryMutationMs":0,"repositoryProviderMs":0,"repositoryAtomicCommitMs":0,"repositoryBranchCreateMs":0,"repositoryPullRequestCreateMs":0},"nextAction":"reconcile_release","receiptRef":{"mode":"full","missionId":"b3b2f94e-db9c-4526-8575-aea80e200751"},"performance":null,"deploymentId":"forgejo-main-82f395b8bb32","releaseState":null,"workflowRunId":null,"releaseTargets":{"frontend":false,"migrations":false,"ccExecution":true,"supabaseEdge":false,"edgeFunctionSlugs":[]},"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","pendingProofKinds":["repository","runtime","runtime"],"verificationState":null,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":1935,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true,"requestContractState":"pending"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-02T00:52:18.048122+00:00","proof_gate":"canonical_release_reconciliation_pending","source_sha":null,"external_id":"4435","receipt_type":"automatic_mission_resume","idempotency_key":"mission:b3b2f94e-db9c-4526-8575-aea80e200751:automatic-mission-resume:4435:canonical_release_reconciliation_pending","mission_step_id":"3cab161b-137f-4bfd-bd45-361e219b0e3d","command_center_event_id":"b3b2f94e-db9c-4526-8575-aea80e200751"},{"id":"bd5c9855-e74f-4141-8858-40d5cfe85bf9","source":"cc-execution","status":"blocked","payload":{"ok":false,"jobId":null,"phase":"implementation","branch":"ai/objective-first-repair-4b968836f996","reason":"anchored_edit_invalid","status":"blocked","metrics":{"receiptBytes":9564,"releaseCount":0,"toolCallCount":6,"repeatedCallCount":2,"executorlessWaitMs":101860,"firstUsefulResultAt":"2026-10-05T12:34:52.320Z","recoveryAttemptCount":0,"ownerInterruptionCount":0},"version":"1.64.94-terminal-completion-supervisor","prNumber":null,"terminal":false,"missionId":"4b968836-f996-4b44-94df-f1f99deb34c3","operation":"execute_mission","proofGate":"repair_mission_execution_blocked","sourceSha":null,"timingsMs":{"gateMs":0,"proofMs":0,"handlerMs":522,"releaseMs":0,"mutationMs":0,"repositoryMs":0,"prReadinessMs":0,"approvedPlanMs":522,"missionSetupMs":618,"providerAuthMs":0,"shipAndProveMs":0,"ledgerPrepareMs":618,"ledgerReconcileMs":0,"lineageReconcileMs":0,"resolvePreflightMs":618,"repositoryMutationMs":0,"repositoryProviderMs":0,"authoritativeLedgerMs":0,"ledgerAsyncDispatchMs":0,"repositoryAtomicCommitMs":0,"repositoryBranchCreateMs":0,"totalSynchronousLedgerMs":618,"asyncBookkeepingDispatchMs":0,"ledgerAuthoritativeCommitMs":0,"repositoryPullRequestCreateMs":0},"nextAction":null,"receiptRef":{"mode":"full","missionId":"4b968836-f996-4b44-94df-f1f99deb34c3"},"performance":null,"deploymentId":null,"releaseState":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","pendingProofKinds":["runtime"],"verificationState":null,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":1422,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true,"requestContractState":"pending"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-05T12:36:36.093826+00:00","proof_gate":"repair_mission_execution_blocked","source_sha":null,"external_id":null,"receipt_type":"execute_mission","idempotency_key":"mission:4b968836-f996-4b44-94df-f1f99deb34c3:execute_mission:repair_mission_execution_blocked:current-generation","mission_step_id":"d4dc5422-1fd6-4760-8a5a-1d712c17927a","command_center_event_id":"4b968836-f996-4b44-94df-f1f99deb34c3"},{"id":"bd5ce710-6b7d-4c62-bb6c-fe9cde4cfee9","source":"cc-execution","status":"waiting","payload":{"body":{"ship":true,"files":[{"path":"src/pages/admin/WmpRepositoryPage.tsx","content":"import React from 'react';\nimport { Archive, Branch, Clock3, FileText, GitCommitHorizontal, Plus, RotateCcw, Search } from 'lucide-react';\nimport { supabase } from '@/integrations/supabase/client';\nimport { useMultiTenant } from '@/contexts/MultiTenantContext';\n\ntype RepoObject = { id:string; object_key:string; object_type:string; title:string; visibility:string; updated_at:string; current_revision_id?:string|null; branch_id?:string|null };\ntype RepoRevision = { id:string; revision_number:number; message:string|null; created_at:string; snapshot:any; actor_id:string|null };\ntype RepoBranch = { id:string; name:string; is_canonical:boolean; created_at:string };\n\nasync function callRepo(body: Record<string, unknown>) {\n  const { data, error } = await supabase.functions.invoke('wmp-repository', { body });\n  if (error) throw error;\n  if ((data as any)?.ok === false) throw new Error((data as any)?.error || 'Repository request failed');\n  return data as any;\n}\n\nexport default function WmpRepositoryPage() {\n  const { activeTenant } = useMultiTenant();\n  const tenantId = activeTenant?.id || '';\n  const [objects,setObjects]=React.useState<RepoObject[]>([]);\n  const [branches,setBranches]=React.useState<RepoBranch[]>([]);\n  const [selected,setSelected]=React.useState<RepoObject|null>(null);\n  const [history,setHistory]=React.useState<RepoRevision[]>([]);\n  const [query,setQuery]=React.useState('');\n  const [loading,setLoading]=React.useState(true);\n  const [error,setError]=React.useState<string|null>(null);\n\n  const refresh=React.useCallback(async()=>{\n    if(!tenantId) return;\n    setLoading(true); setError(null);\n    try {\n      const data=await callRepo({action:'bootstrap',tenantId});\n      setObjects(data.objects||[]); setBranches(data.branches||[]);\n      if(selected){\n        const updated=(data.objects||[]).find((o:RepoObject)=>o.id===selected.id)||null;\n        setSelected(updated);\n      }\n    } catch(err:any){ setError(err?.message||'Could not open repository.'); }\n    finally{ setLoading(false); }\n  },[tenantId,selected?.id]);\n\n  React.useEffect(()=>{ void refresh(); },[tenantId]);\n\n  const openObject=async(object:RepoObject)=>{\n    setSelected(object); setError(null);\n    try{ const data=await callRepo({action:'history',tenantId,objectId:object.id}); setHistory(data.revisions||[]); }\n    catch(err:any){ setError(err?.message||'Could not load history.'); }\n  };\n\n  const createObject=async()=>{\n    const title=window.prompt('What should this record be called?');\n    if(!title?.trim()) return;\n    await callRepo({action:'create_object',tenantId,title:title.trim(),objectType:'note',visibility:'internal',snapshot:{text:''},message:'Created record'});\n    await refresh();\n  };\n\n  const restore=async(revisionId:string)=>{\n    if(!selected) return;\n    await callRepo({action:'restore',tenantId,objectId:selected.id,revisionId,message:'Restored prior version'});\n    await openObject(selected); await refresh();\n  };\n\n  const filtered=objects.filter(o=>!query.trim()||[o.title,o.object_type,o.object_key].join(' ').toLowerCase().includes(query.toLowerCase()));\n\n  return <main className=\"min-h-screen bg-[#07100d] text-white\">\n    <div className=\"mx-auto w-full max-w-7xl px-4 py-5 sm:px-6 lg:px-8\">\n      <header className=\"sticky top-0 z-20 -mx-4 mb-5 border-b border-white/10 bg-[#07100d]/95 px-4 pb-4 pt-2 backdrop-blur sm:-mx-6 sm:px-6 lg:-mx-8 lg:px-8\">\n        <div className=\"flex flex-wrap items-center justify-between gap-3\">\n          <div>\n            <div className=\"text-[11px] font-black uppercase tracking-[.2em] text-emerald-300/70\">WhatsMyProgress</div>\n            <h1 className=\"text-2xl font-black tracking-tight\">Repository</h1>\n            <p className=\"mt-1 max-w-2xl text-sm text-white/55\">Versioned operational memory for missions, chats, decisions, files, proofs and working context.</p>\n          </div>\n          <button onClick={()=>void createObject()} className=\"inline-flex min-h-11 items-center gap-2 rounded-xl bg-emerald-400 px-4 text-sm font-black text-[#04100b] shadow-lg shadow-emerald-500/10\"><Plus className=\"h-4 w-4\"/>New record</button>\n        </div>\n      </header>\n\n      {error&&<div className=\"mb-4 rounded-2xl border border-rose-400/25 bg-rose-500/10 p-4 text-sm text-rose-100\">{error}</div>}\n      {!tenantId?<div className=\"rounded-3xl border border-white/10 bg-white/[.04] p-8 text-center text-white/60\">Choose a workspace to open its repository.</div>:\n      <div className=\"grid gap-5 lg:grid-cols-[300px_minmax(0,1fr)]\">\n        <aside className=\"space-y-4\">\n          <section className=\"rounded-3xl border border-white/10 bg-white/[.04] p-4\">\n            <div className=\"mb-3 flex items-center gap-2 text-sm font-black\"><Branch className=\"h-4 w-4 text-emerald-300\"/>Workstreams</div>\n            <div className=\"space-y-2\">{branches.map(b=><div key={b.id} className=\"flex items-center justify-between rounded-xl border border-white/8 bg-black/15 px-3 py-2.5 text-sm\"><span className=\"truncate font-semibold\">{b.name}</span>{b.is_canonical&&<span className=\"rounded-full bg-emerald-400/15 px-2 py-0.5 text-[10px] font-black uppercase tracking-wide text-emerald-200\">Main</span>}</div>)}</div>\n          </section>\n          <section className=\"rounded-3xl border border-white/10 bg-white/[.04] p-4\">\n            <div className=\"relative\"><Search className=\"pointer-events-none absolute left-3 top-3 h-4 w-4 text-white/35\"/><input value={query} onChange={e=>setQuery(e.target.value)} placeholder=\"Search repository\" className=\"w-full rounded-xl border border-white/10 bg-black/20 py-2.5 pl-9 pr-3 text-sm outline-none placeholder:text-white/30 focus:border-emerald-300/40\"/></div>\n            <div className=\"mt-3 max-h-[55vh] space-y-2 overflow-auto pr-1\">\n              {loading?<div className=\"p-3 text-sm text-white/45\">Opening repository…</div>:filtered.length===0?<div className=\"p-3 text-sm text-white/45\">No records yet.</div>:filtered.map(o=><button key={o.id} onClick={()=>void openObject(o)} className={\"w-full rounded-2xl border p-3 text-left transition \"+(selected?.id===o.id?\"border-emerald-300/35 bg-emerald-400/10\":\"border-white/8 bg-black/15 hover:bg-white/[.06]\")}><div className=\"flex items-start gap-3\"><FileText className=\"mt-0.5 h-4 w-4 shrink-0 text-emerald-300\"/><div className=\"min-w-0\"><div className=\"truncate text-sm font-black\">{o.title}</div><div className=\"mt-1 text-[11px] uppercase tracking-wide text-white/35\">{o.object_type} · {o.visibility}</div></div></div></button>)}\n            </div>\n          </section>\n        </aside>\n\n        <section className=\"min-w-0 rounded-3xl border border-white/10 bg-white/[.04] p-4 sm:p-5\">\n          {!selected?<div className=\"grid min-h-[420px] place-items-center text-center\"><div><Archive className=\"mx-auto h-10 w-10 text-emerald-300/70\"/><h2 className=\"mt-4 text-xl font-black\">Your operational history lives here.</h2><p className=\"mx-auto mt-2 max-w-lg text-sm leading-6 text-white/50\">Open a record to inspect every version, who changed it, where it came from, and restore any prior state without deleting history.</p></div></div>:\n          <div>\n            <div className=\"flex flex-wrap items-start justify-between gap-3 border-b border-white/10 pb-4\">\n              <div><div className=\"text-[11px] font-black uppercase tracking-[.18em] text-emerald-300/65\">{selected.object_type}</div><h2 className=\"mt-1 text-xl font-black\">{selected.title}</h2><div className=\"mt-1 text-xs text-white/35\">{selected.visibility}</div></div>\n              <div className=\"flex items-center gap-2 rounded-xl border border-white/10 bg-black/20 px-3 py-2 text-xs text-white/45\"><GitCommitHorizontal className=\"h-4 w-4\"/>Immutable history</div>\n            </div>\n            <div className=\"mt-4 space-y-3\">{history.map((rev,index)=><article key={rev.id} className=\"rounded-2xl border border-white/10 bg-black/15 p-4\"><div className=\"flex flex-wrap items-center justify-between gap-3\"><div><div className=\"flex items-center gap-2 text-sm font-black\"><Clock3 className=\"h-4 w-4 text-emerald-300\"/>Version {rev.revision_number}</div><div className=\"mt-1 text-xs text-white/40\">{new Date(rev.created_at).toLocaleString()} · {rev.message||'Saved change'}</div></div>{index>0&&<button onClick={()=>void restore(rev.id)} className=\"inline-flex min-h-10 items-center gap-2 rounded-xl border border-white/12 bg-white/[.05] px-3 text-xs font-black hover:bg-white/[.09]\"><RotateCcw className=\"h-4 w-4\"/>Restore as new version</button>}</div><pre className=\"mt-3 max-h-56 overflow-auto whitespace-pre-wrap break-words rounded-xl border border-white/8 bg-black/25 p-3 text-xs leading-5 text-white/65\">{JSON.stringify(rev.snapshot,null,2)}</pre></article>)}</div>\n          </div>}\n        </section>\n      </div>}\n    </div>\n  </main>;\n}\n"},{"path":"supabase/functions/wmp-repository/index.ts","content":"import { serve } from \"https://deno.land/std@0.168.0/http/server.ts\";\nimport { createClient } from \"https://esm.sh/@supabase/supabase-js@2.45.0\";\n\nconst cors={\"Access-Control-Allow-Origin\":\"*\",\"Access-Control-Allow-Headers\":\"authorization, apikey, content-type, idempotency-key\",\"Access-Control-Allow-Methods\":\"POST, OPTIONS\"};\nconst json=(body:unknown,status=200)=>new Response(JSON.stringify(body),{status,headers:{...cors,\"Content-Type\":\"application/json\",\"Cache-Control\":\"no-store\",\"X-WMP-Repository-Version\":\"1.0.0\"}});\nconst uuid=()=>crypto.randomUUID();\n\nserve(async(req)=>{\n  if(req.method===\"OPTIONS\") return new Response(null,{status:204,headers:cors});\n  if(req.method!==\"POST\") return json({ok:false,error:\"method_not_allowed\"},405);\n  const url=Deno.env.get(\"SUPABASE_URL\")||\"\";\n  const anon=Deno.env.get(\"SUPABASE_ANON_KEY\")||\"\";\n  const service=Deno.env.get(\"SUPABASE_SERVICE_ROLE_KEY\")||\"\";\n  const auth=createClient(url,anon,{global:{headers:{Authorization:req.headers.get(\"Authorization\")||\"\"}}});\n  const admin=createClient(url,service,{auth:{persistSession:false}});\n  const {data:{user},error:userError}=await auth.auth.getUser();\n  if(userError||!user) return json({ok:false,error:\"unauthorized\"},401);\n  const body=await req.json().catch(()=>({}));\n  const action=String(body.action||\"\");\n  const tenantId=String(body.tenantId||\"\");\n  if(!tenantId) return json({ok:false,error:\"tenant_required\"},400);\n  const [{data:tenant},{data:membership}]=await Promise.all([\n    admin.from(\"tenants\").select(\"id,owner_id\").eq(\"id\",tenantId).maybeSingle(),\n    admin.from(\"user_tenant_memberships\").select(\"id,status,is_owner\").eq(\"tenant_id\",tenantId).eq(\"user_id\",user.id).eq(\"status\",\"active\").maybeSingle()\n  ]);\n  if(!tenant || (tenant.owner_id!==user.id && !membership)) return json({ok:false,error:\"forbidden\"},403);\n\n  const idempotencyKey=String(req.headers.get(\"idempotency-key\")||body.idempotencyKey||\"\").trim();\n  if(idempotencyKey){\n    const {data:cached}=await admin.from(\"wmp_repo_idempotency\").select(\"response_body,status_code\").eq(\"tenant_id\",tenantId).eq(\"actor_id\",user.id).eq(\"idempotency_key\",idempotencyKey).maybeSingle();\n    if(cached) return json(cached.response_body,cached.status_code||200);\n  }\n  const done=async(payload:any,status=200)=>{\n    if(idempotencyKey) await admin.from(\"wmp_repo_idempotency\").upsert({tenant_id:tenantId,actor_id:user.id,idempotency_key:idempotencyKey,response_body:payload,status_code:status},{onConflict:\"tenant_id,actor_id,idempotency_key\"});\n    return json(payload,status);\n  };\n\n  try{\n    let {data:repo}=await admin.from(\"wmp_repositories\").select(\"*\").eq(\"tenant_id\",tenantId).eq(\"owner_user_id\",user.id).maybeSingle();\n    if(!repo){\n      const created=await admin.from(\"wmp_repositories\").insert({tenant_id:tenantId,owner_user_id:user.id,name:\"Operational Repository\"}).select(\"*\").single();\n      if(created.error) throw created.error; repo=created.data;\n    }\n    let {data:main}=await admin.from(\"wmp_repo_branches\").select(\"*\").eq(\"repository_id\",repo.id).eq(\"is_canonical\",true).maybeSingle();\n    if(!main){\n      const created=await admin.from(\"wmp_repo_branches\").insert({repository_id:repo.id,name:\"Main\",is_canonical:true,created_by:user.id}).select(\"*\").single();\n      if(created.error) throw created.error; main=created.data;\n    }\n\n    if(action===\"bootstrap\"){\n      const [{data:objects,error:oe},{data:branches,error:be},{data:tags,error:te}]=await Promise.all([\n        admin.from(\"wmp_repo_objects\").select(\"*\").eq(\"repository_id\",repo.id).is(\"archived_at\",null).order(\"updated_at\",{ascending:false}),\n        admin.from(\"wmp_repo_branches\").select(\"*\").eq(\"repository_id\",repo.id).order(\"is_canonical\",{ascending:false}).order(\"created_at\",{ascending:true}),\n        admin.from(\"wmp_repo_tags\").select(\"*\").eq(\"repository_id\",repo.id).order(\"created_at\",{ascending:false})\n      ]);\n      if(oe||be||te) throw oe||be||te; return done({ok:true,repository:repo,objects,branches,tags});\n    }\n\n    if(action===\"create_object\"||action===\"update_object\"){\n      const objectId=action===\"update_object\"?String(body.objectId||\"\"):uuid();\n      let object:any=null;\n      if(action===\"update_object\"){\n        const found=await admin.from(\"wmp_repo_objects\").select(\"*\").eq(\"id\",objectId).eq(\"repository_id\",repo.id).single();\n        if(found.error) throw found.error; object=found.data;\n      } else {\n        const created=await admin.from(\"wmp_repo_objects\").insert({id:objectId,repository_id:repo.id,branch_id:body.branchId||main.id,object_key:String(body.objectKey||uuid()),object_type:String(body.objectType||\"note\"),title:String(body.title||\"Untitled\"),visibility:String(body.visibility||\"internal\"),created_by:user.id,updated_by:user.id}).select(\"*\").single();\n        if(created.error) throw created.error; object=created.data;\n      }\n      const {data:last}=await admin.from(\"wmp_repo_revisions\").select(\"id,revision_number\").eq(\"object_id\",objectId).order(\"revision_number\",{ascending:false}).limit(1).maybeSingle();\n      const commitId=uuid();\n      const commit=await admin.from(\"wmp_repo_commits\").insert({id:commitId,repository_id:repo.id,branch_id:object.branch_id||main.id,actor_id:user.id,message:String(body.message||(action===\"create_object\"?\"Created record\":\"Updated record\")),provenance:body.provenance||{source:\"wmp\"}}).select(\"*\").single();\n      if(commit.error) throw commit.error;\n      const revision=await admin.from(\"wmp_repo_revisions\").insert({object_id:objectId,commit_id:commitId,parent_revision_id:last?.id||null,revision_number:(last?.revision_number||0)+1,actor_id:user.id,message:String(body.message||\"\"),snapshot:body.snapshot??{},metadata:body.metadata??{},provenance:body.provenance??{source:\"wmp\"}}).select(\"*\").single();\n      if(revision.error) throw revision.error;\n      await admin.from(\"wmp_repo_objects\").update({current_revision_id:revision.data.id,title:String(body.title||object.title),visibility:String(body.visibility||object.visibility),updated_by:user.id,updated_at:new Date().toISOString()}).eq(\"id\",objectId);\n      return done({ok:true,objectId,commit:commit.data,revision:revision.data});\n    }\n\n    if(action===\"history\"){\n      const objectId=String(body.objectId||\"\");\n      const {data:object,error:objectError}=await admin.from(\"wmp_repo_objects\").select(\"*\").eq(\"id\",objectId).eq(\"repository_id\",repo.id).single();\n      if(objectError) throw objectError;\n      const {data:revisions,error}=await admin.from(\"wmp_repo_revisions\").select(\"*\").eq(\"object_id\",objectId).order(\"revision_number\",{ascending:false});\n      if(error) throw error; return done({ok:true,object,revisions});\n    }\n\n    if(action===\"diff\"){\n      const ids=[String(body.fromRevisionId||\"\"),String(body.toRevisionId||\"\")].filter(Boolean);\n      const {data,error}=await admin.from(\"wmp_repo_revisions\").select(\"*\").in(\"id\",ids);\n      if(error) throw error; return done({ok:true,revisions:data||[]});\n    }\n\n    if(action===\"restore\"){\n      const objectId=String(body.objectId||\"\"); const revisionId=String(body.revisionId||\"\");\n      const [{data:object,error:oe},{data:source,error:se}]=await Promise.all([\n        admin.from(\"wmp_repo_objects\").select(\"*\").eq(\"id\",objectId).eq(\"repository_id\",repo.id).single(),\n        admin.from(\"wmp_repo_revisions\").select(\"*\").eq(\"id\",revisionId).eq(\"object_id\",objectId).single()\n      ]);\n      if(oe||se) throw oe||se;\n      const {data:last}=await admin.from(\"wmp_repo_revisions\").select(\"id,revision_number\").eq(\"object_id\",objectId).order(\"revision_number\",{ascending:false}).limit(1).single();\n      const commitId=uuid();\n      await admin.from(\"wmp_repo_commits\").insert({id:commitId,repository_id:repo.id,branch_id:object.branch_id||main.id,actor_id:user.id,message:String(body.message||\"Restored prior version\"),provenance:{source:\"restore\",revisionId}});\n      const created=await admin.from(\"wmp_repo_revisions\").insert({object_id:objectId,commit_id:commitId,parent_revision_id:last.id,revision_number:last.revision_number+1,actor_id:user.id,message:String(body.message||\"Restored prior version\"),snapshot:source.snapshot,metadata:source.metadata,provenance:{source:\"restore\",revisionId}}).select(\"*\").single();\n      if(created.error) throw created.error;\n      await admin.from(\"wmp_repo_objects\").update({current_revision_id:created.data.id,updated_by:user.id,updated_at:new Date().toISOString()}).eq(\"id\",objectId);\n      return done({ok:true,revision:created.data});\n    }\n\n    if(action===\"create_branch\"){\n      const branch=await admin.from(\"wmp_repo_branches\").insert({repository_id:repo.id,name:String(body.name||\"Workstream\"),is_canonical:false,base_branch_id:main.id,created_by:user.id}).select(\"*\").single();\n      if(branch.error) throw branch.error; return done({ok:true,branch:branch.data});\n    }\n\n    if(action===\"merge_branch\"){\n      const branchId=String(body.branchId||\"\");\n      const {data:branch,error:branchError}=await admin.from(\"wmp_repo_branches\").select(\"*\").eq(\"id\",branchId).eq(\"repository_id\",repo.id).eq(\"is_canonical\",false).single();\n      if(branchError) throw branchError;\n      const {data:branchObjects,error:boe}=await admin.from(\"wmp_repo_objects\").select(\"*\").eq(\"repository_id\",repo.id).eq(\"branch_id\",branchId).is(\"archived_at\",null);\n      if(boe) throw boe;\n      const conflicts:any[]=[];\n      for(const item of branchObjects||[]){\n        const {data:canonical}=await admin.from(\"wmp_repo_objects\").select(\"*\").eq(\"repository_id\",repo.id).eq(\"branch_id\",main.id).eq(\"object_key\",item.object_key).maybeSingle();\n        if(canonical && item.base_revision_id && canonical.current_revision_id!==item.base_revision_id) conflicts.push({objectKey:item.object_key,canonicalRevisionId:canonical.current_revision_id,branchBaseRevisionId:item.base_revision_id});\n      }\n      if(conflicts.length) return done({ok:false,error:\"merge_conflict\",conflicts},409);\n      await admin.from(\"wmp_repo_branches\").update({merged_at:new Date().toISOString(),merged_by:user.id}).eq(\"id\",branch.id);\n      return done({ok:true,merged:true,branchId});\n    }\n\n    if(action===\"tag\"){\n      const tag=await admin.from(\"wmp_repo_tags\").insert({repository_id:repo.id,name:String(body.name||\"Bookmark\"),commit_id:body.commitId||null,created_by:user.id,metadata:body.metadata||{}}).select(\"*\").single();\n      if(tag.error) throw tag.error; return done({ok:true,tag:tag.data});\n    }\n\n    return done({ok:false,error:\"unsupported_action\"},400);\n  }catch(error:any){ console.error(\"wmp-repository\",error); return json({ok:false,error:error?.message||\"repository_error\"},500); }\n});\n"},{"path":"supabase/migrations/20260923043000_wmp_repository.sql","content":"create extension if not exists pgcrypto;\ncreate table if not exists public.wmp_repositories (\n  id uuid primary key default gen_random_uuid(),\n  tenant_id uuid not null references public.tenants(id) on delete cascade,\n  owner_user_id uuid not null references auth.users(id) on delete cascade,\n  name text not null default 'Operational Repository',\n  created_at timestamptz not null default now(),\n  updated_at timestamptz not null default now(),\n  unique (tenant_id, owner_user_id)\n);\ncreate table if not exists public.wmp_repo_branches (\n  id uuid primary key default gen_random_uuid(),\n  repository_id uuid not null references public.wmp_repositories(id) on delete cascade,\n  name text not null,\n  is_canonical boolean not null default false,\n  base_branch_id uuid references public.wmp_repo_branches(id),\n  created_by uuid references auth.users(id),\n  created_at timestamptz not null default now(),\n  merged_at timestamptz,\n  merged_by uuid references auth.users(id)\n);\ncreate unique index if not exists wmp_repo_one_canonical_branch on public.wmp_repo_branches(repository_id) where is_canonical;\ncreate table if not exists public.wmp_repo_commits (\n  id uuid primary key default gen_random_uuid(),\n  repository_id uuid not null references public.wmp_repositories(id) on delete cascade,\n  branch_id uuid not null references public.wmp_repo_branches(id) on delete cascade,\n  actor_id uuid references auth.users(id),\n  message text,\n  provenance jsonb not null default '{}'::jsonb,\n  created_at timestamptz not null default now()\n);\ncreate table if not exists public.wmp_repo_objects (\n  id uuid primary key default gen_random_uuid(),\n  repository_id uuid not null references public.wmp_repositories(id) on delete cascade,\n  branch_id uuid not null references public.wmp_repo_branches(id) on delete cascade,\n  object_key text not null,\n  object_type text not null,\n  title text not null,\n  visibility text not null default 'internal' check (visibility in ('internal','published')),\n  current_revision_id uuid,\n  base_revision_id uuid,\n  created_by uuid references auth.users(id),\n  updated_by uuid references auth.users(id),\n  created_at timestamptz not null default now(),\n  updated_at timestamptz not null default now(),\n  archived_at timestamptz,\n  unique(repository_id,branch_id,object_key)\n);\ncreate table if not exists public.wmp_repo_revisions (\n  id uuid primary key default gen_random_uuid(),\n  object_id uuid not null references public.wmp_repo_objects(id) on delete cascade,\n  commit_id uuid not null references public.wmp_repo_commits(id) on delete cascade,\n  parent_revision_id uuid references public.wmp_repo_revisions(id),\n  revision_number integer not null,\n  actor_id uuid references auth.users(id),\n  message text,\n  snapshot jsonb not null default '{}'::jsonb,\n  metadata jsonb not null default '{}'::jsonb,\n  provenance jsonb not null default '{}'::jsonb,\n  created_at timestamptz not null default now(),\n  unique(object_id,revision_number)\n);\nalter table public.wmp_repo_objects drop constraint if exists wmp_repo_objects_current_revision_id_fkey;\nalter table public.wmp_repo_objects add constraint wmp_repo_objects_current_revision_id_fkey foreign key (current_revision_id) references public.wmp_repo_revisions(id);\nalter table public.wmp_repo_objects drop constraint if exists wmp_repo_objects_base_revision_id_fkey;\nalter table public.wmp_repo_objects add constraint wmp_repo_objects_base_revision_id_fkey foreign key (base_revision_id) references public.wmp_repo_revisions(id);\ncreate table if not exists public.wmp_repo_tags (\n  id uuid primary key default gen_random_uuid(),\n  repository_id uuid not null references public.wmp_repositories(id) on delete cascade,\n  name text not null,\n  commit_id uuid references public.wmp_repo_commits(id) on delete set null,\n  created_by uuid references auth.users(id),\n  metadata jsonb not null default '{}'::jsonb,\n  created_at timestamptz not null default now(),\n  unique(repository_id,name)\n);\ncreate table if not exists public.wmp_repo_idempotency (\n  id uuid primary key default gen_random_uuid(),\n  tenant_id uuid not null references public.tenants(id) on delete cascade,\n  actor_id uuid not null references auth.users(id) on delete cascade,\n  idempotency_key text not null,\n  response_body jsonb not null,\n  status_code integer not null default 200,\n  created_at timestamptz not null default now(),\n  unique(tenant_id,actor_id,idempotency_key)\n);\ncreate or replace function public.wmp_repo_has_tenant_access(p_tenant_id uuid)\nreturns boolean language sql stable security definer set search_path=public as $$\n  select exists(select 1 from public.tenants t where t.id=p_tenant_id and t.owner_id=auth.uid())\n  or exists(select 1 from public.user_tenant_memberships m where m.tenant_id=p_tenant_id and m.user_id=auth.uid() and m.status='active');\n$$;\nalter table public.wmp_repositories enable row level security;\nalter table public.wmp_repo_branches enable row level security;\nalter table public.wmp_repo_commits enable row level security;\nalter table public.wmp_repo_objects enable row level security;\nalter table public.wmp_repo_revisions enable row level security;\nalter table public.wmp_repo_tags enable row level security;\nalter table public.wmp_repo_idempotency enable row level security;\ndrop policy if exists wmp_repositories_member_access on public.wmp_repositories;\ncreate policy wmp_repositories_member_access on public.wmp_repositories for all to authenticated using (public.wmp_repo_has_tenant_access(tenant_id)) with check (public.wmp_repo_has_tenant_access(tenant_id));\ndrop policy if exists wmp_repo_branches_member_access on public.wmp_repo_branches;\ncreate policy wmp_repo_branches_member_access on public.wmp_repo_branches for all to authenticated using (exists(select 1 from public.wmp_repositories r where r.id=repository_id and public.wmp_repo_has_tenant_access(r.tenant_id))) with check (exists(select 1 from public.wmp_repositories r where r.id=repository_id and public.wmp_repo_has_tenant_access(r.tenant_id)));\ndrop policy if exists wmp_repo_commits_member_access on public.wmp_repo_commits;\ncreate policy wmp_repo_commits_member_access on public.wmp_repo_commits for all to authenticated using (exists(select 1 from public.wmp_repositories r where r.id=repository_id and public.wmp_repo_has_tenant_access(r.tenant_id))) with check (exists(select 1 from public.wmp_repositories r where r.id=repository_id and public.wmp_repo_has_tenant_access(r.tenant_id)));\ndrop policy if exists wmp_repo_objects_member_access on public.wmp_repo_objects;\ncreate policy wmp_repo_objects_member_access on public.wmp_repo_objects for all to authenticated using (exists(select 1 from public.wmp_repositories r where r.id=repository_id and public.wmp_repo_has_tenant_access(r.tenant_id))) with check (exists(select 1 from public.wmp_repositories r where r.id=repository_id and public.wmp_repo_has_tenant_access(r.tenant_id)));\ndrop policy if exists wmp_repo_revisions_member_access on public.wmp_repo_revisions;\ncreate policy wmp_repo_revisions_member_access on public.wmp_repo_revisions for all to authenticated using (exists(select 1 from public.wmp_repo_objects o join public.wmp_repositories r on r.id=o.repository_id where o.id=object_id and public.wmp_repo_has_tenant_access(r.tenant_id))) with check (exists(select 1 from public.wmp_repo_objects o join public.wmp_repositories r on r.id=o.repository_id where o.id=object_id and public.wmp_repo_has_tenant_access(r.tenant_id)));\ndrop policy if exists wmp_repo_tags_member_access on public.wmp_repo_tags;\ncreate policy wmp_repo_tags_member_access on public.wmp_repo_tags for all to authenticated using (exists(select 1 from public.wmp_repositories r where r.id=repository_id and public.wmp_repo_has_tenant_access(r.tenant_id))) with check (exists(select 1 from public.wmp_repositories r where r.id=repository_id and public.wmp_repo_has_tenant_access(r.tenant_id)));\ndrop policy if exists wmp_repo_idempotency_actor_access on public.wmp_repo_idempotency;\ncreate policy wmp_repo_idempotency_actor_access on public.wmp_repo_idempotency for all to authenticated using (actor_id=auth.uid() and public.wmp_repo_has_tenant_access(tenant_id)) with check (actor_id=auth.uid() and public.wmp_repo_has_tenant_access(tenant_id));\ncreate index if not exists wmp_repo_objects_repo_branch_updated on public.wmp_repo_objects(repository_id,branch_id,updated_at desc);\ncreate index if not exists wmp_repo_revisions_object_number on public.wmp_repo_revisions(object_id,revision_number desc);\ncreate index if not exists wmp_repo_commits_repo_created on public.wmp_repo_commits(repository_id,created_at desc);\n"},{"path":"config/capabilities/wmp-repository.json","content":"{\n  \"schemaVersion\": 1,\n  \"id\": \"wmp-repository\",\n  \"owner\": \"KNOCKLAUNCH Platform\",\n  \"status\": \"enforced\",\n  \"surfaces\": [\"src/pages/admin/WmpRepositoryPage.tsx\",\"supabase/functions/wmp-repository\",\"src/routes/ownerRoutes.tsx\"],\n  \"dependencies\": {\n    \"backendRuntime\": [\"supabase/functions/wmp-repository\"],\n    \"dataStorage\": [\"public.wmp_repositories\",\"public.wmp_repo_branches\",\"public.wmp_repo_objects\",\"public.wmp_repo_revisions\",\"public.wmp_repo_commits\",\"public.wmp_repo_tags\",\"public.wmp_repo_idempotency\"],\n    \"authPermissions\": [\"authenticated user\",\"active tenant membership or tenant owner\"],\n    \"providers\": []\n  },\n  \"lifecycle\": {\n    \"states\": [\"prepare\",\"deploy\",\"verify\",\"activate\"],\n    \"activationRequirements\": [\"tenant-isolated storage and RLS are deployed\",\"JWT-protected WMP repository adapter is deployed\",\"owner repository route is released\",\"rollback creates a new revision\",\"idempotent write replay is proven\",\"branch conflicts fail closed\",\"claim-matched production proof recorded\"],\n    \"compatibilityWindow\": [\"N\",\"N-1\"],\n    \"driftPolicy\": \"Repository schema, API, auth, release identity, or owner route drift remains nonterminal until reconciled.\",\n    \"quarantinePolicy\": \"Quarantine only WMP Repository when its dependency contract fails; preserve WMP Mission Control, customer progress, and unrelated platform capabilities.\"\n  },\n  \"release\": {\"order\":[\"migrations\",\"supabase/functions/wmp-repository\",\"frontend\"],\"runtimeFirst\":true},\n  \"canary\": {\"required\":true,\"claims\":[\"Repository data cannot cross tenant membership boundaries.\",\"Every restore appends a new immutable revision.\",\"Repeated idempotency keys do not duplicate writes.\",\"Diverged workstreams fail closed on merge conflict.\",\"Existing WMP mission/progress behavior remains independent.\"]},\n  \"proofLedger\": {\"authority\":\"command_center_mission_ledger\",\"bind\":[\"request_contract_hash\",\"source_sha\",\"release_receipt\",\"runtime_identity\",\"canary\",\"activation_state\",\"drift_state\",\"quarantine_state\"]}\n}\n"},{"path":"src/__tests__/contracts/wmp-repository.contract.test.ts","content":"import fs from 'node:fs';\nimport path from 'node:path';\nimport { describe, expect, it } from 'vitest';\n\ndescribe('WMP Repository contract',()=>{\n  const root=process.cwd();\n  const migration=fs.readFileSync(path.join(root,'supabase/migrations/20260923043000_wmp_repository.sql'),'utf8');\n  const edge=fs.readFileSync(path.join(root,'supabase/functions/wmp-repository/index.ts'),'utf8');\n  const route=fs.readFileSync(path.join(root,'src/routes/ownerRoutes.tsx'),'utf8');\n  it('enforces tenant-scoped RLS',()=>{ expect(migration).toContain('wmp_repo_has_tenant_access'); expect(migration).toContain('enable row level security'); });\n  it('keeps restore append-only and supports idempotency',()=>{ expect(edge).toContain('action===\"restore\"'); expect(edge).toContain('wmp_repo_idempotency'); expect(edge).not.toContain('.delete('); });\n  it('fails closed on branch conflict',()=>{ expect(edge).toContain('merge_conflict'); expect(edge).toContain('return done({ok:false'); });\n  it('routes the owner surface explicitly',()=>{ expect(route).toContain('/wmp/repository'); expect(route).toContain('WmpRepositoryPage'); });\n});\n"}],"branch":"ai/objective-first-repair-8edd2004199e","writes":[],"patches":[],"approved":true,"missionId":"8edd2004-199e-4fc2-9eff-65c1dad6bdcc","objective":"Continue and ship the existing WMP Repository mission with this exact bounded implementation payload.","repository":"noel/KnockLaunchOS","ownerApproved":true,"anchored_edits":[{"path":"src/routes/ownerRoutes.tsx","anchor":"const OwnerWeeklyReports = lazyWithRetry(() => import('@/pages/owner/OwnerWeeklyReports'));","replacement":"const OwnerWeeklyReports = lazyWithRetry(() => import('@/pages/owner/OwnerWeeklyReports'));\nconst WmpRepositoryPage = lazyWithRetry(() => import('@/pages/admin/WmpRepositoryPage'));"},{"path":"src/routes/ownerRoutes.tsx","anchor":"<Route path=\"/owner\" element={lazy(OwnerDashboard)} />","replacement":"<Route path=\"/owner\" element={lazy(OwnerDashboard)} />\n    <Route path=\"/wmp/repository\" element={lazy(WmpRepositoryPage)} />"}],"implementation":{"files":[],"writes":[]},"durableMutationResume":true},"recovery":false,"fingerprint":"9cd9dee29d9facf76d4eedc0ab9db0e5f6775aafe2bf99bf493cf8aa3730a6bc","replayCount":0,"serializedBytes":33515},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-23T04:19:32.505687+00:00","proof_gate":"repository_mutation_intent_persisted","source_sha":null,"external_id":null,"receipt_type":"repository_mutation_intent","idempotency_key":"mission:8edd2004-199e-4fc2-9eff-65c1dad6bdcc:repository-mutation-intent:9cd9dee29d9facf76d4eedc0ab9db0e5f6775aafe2bf99bf493cf8aa3730a6bc:0","mission_step_id":"f9a646da-418b-48eb-a441-448e4a43100e","command_center_event_id":"8edd2004-199e-4fc2-9eff-65c1dad6bdcc"},{"id":"bd5e66b7-d90b-4776-a3bc-ed3028ae4709","source":"cc-execution","status":"synthesis_required","payload":{"ok":true,"jobId":null,"phase":"objective_received","branch":"ai/objective-first-repair-0e3389b62d9a","reason":null,"status":"synthesis_required","metrics":{"receiptBytes":0,"releaseCount":0,"toolCallCount":0,"repeatedCallCount":0,"ownerInterruptionCount":0},"version":"1.48.9-single-mutation-lane","prNumber":null,"terminal":false,"missionId":"0e3389b6-2d9a-41b8-a0b9-80a1f7b676ff","operation":"execute_mission","proofGate":"repair_mission_synthesis_ready","sourceSha":null,"timingsMs":null,"nextAction":"Inspect the bounded repository paths, synthesize exact files or anchored_edits, and call /mission/execute again automatically with this same missionId without another owner prompt or workflow switch.","receiptRef":{"mode":"full","missionId":"0e3389b6-2d9a-41b8-a0b9-80a1f7b676ff"},"performance":null,"deploymentId":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":10131,"likelyAffectedFiles":["src/__tests__/contracts/command-center-platform-mission-anchor.contract.test.ts","src/__tests__/contracts/canonical-production-release-status.test.ts","src/__tests__/contracts/operational-command-application-integration.contract.test.ts","src/__tests__/contracts/command-palette-platform-authority.contract.test.ts",".forgejo/workflows/knocklaunch.yml","src/components/admin/TenantUserCommandCenters.tsx","src/components/GlobalCommandPalette.tsx","src/components/ReleaseAllLeadsButton.tsx","src/components/ReleaseLeadButton.tsx","src/__tests__/commandCenter/deployDetection.test.ts","scripts/supabase-migration-release.mjs","scripts/__tests__/supabase-migration-release.test.mjs"],"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-08-20T05:45:13.831899+00:00","proof_gate":"repair_mission_synthesis_ready","source_sha":null,"external_id":null,"receipt_type":"execute_mission","idempotency_key":"mission:0e3389b6-2d9a-41b8-a0b9-80a1f7b676ff:execute_mission:repair_mission_synthesis_ready","mission_step_id":"3101f668-a6c8-4613-99a1-7161f3b71f81","command_center_event_id":"0e3389b6-2d9a-41b8-a0b9-80a1f7b676ff"},{"id":"bd5e7855-48b6-4da8-8c7b-ec6e34bc6ee3","source":"cc-execution","status":"retryable","payload":{"ok":false,"jobId":null,"phase":"pull_request","branch":"ai/objective-first-repair-569a261a58b8","reason":"retryable_provider_transport:forgejo_provider_read_timeout","status":"retryable","metrics":{"receiptBytes":8257,"releaseCount":0,"toolCallCount":4,"repeatedCallCount":0,"executorlessWaitMs":33944,"firstUsefulResultAt":"2026-09-25T10:05:58.710Z","recoveryAttemptCount":0,"ownerInterruptionCount":0},"version":"1.58.277-exact-gate-fast-path","prNumber":3700,"terminal":false,"missionId":"569a261a-58b8-4aaf-ad86-90edce0def25","operation":"execute_mission","proofGate":"repair_mission_pr_ready_retryable","sourceSha":null,"timingsMs":{"gateMs":0,"proofMs":0,"handlerMs":5560,"releaseMs":0,"mutationMs":0,"repositoryMs":0,"prReadinessMs":5454,"approvedPlanMs":0,"missionSetupMs":442,"providerAuthMs":0,"shipAndProveMs":0,"ledgerPrepareMs":340,"ledgerReconcileMs":0,"lineageReconcileMs":102,"resolvePreflightMs":442,"repositoryMutationMs":0,"repositoryProviderMs":0,"authoritativeLedgerMs":0,"ledgerAsyncDispatchMs":0,"repositoryAtomicCommitMs":0,"repositoryBranchCreateMs":0,"totalSynchronousLedgerMs":340,"asyncBookkeepingDispatchMs":0,"ledgerAuthoritativeCommitMs":0,"repositoryPullRequestCreateMs":0},"nextAction":"Reconcile this same mission and pull request automatically; do not create a replacement branch or PR.","receiptRef":{"mode":"full","missionId":"569a261a-58b8-4aaf-ad86-90edce0def25"},"performance":null,"deploymentId":null,"releaseState":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","pendingProofKinds":["runtime"],"verificationState":null,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":1522,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true,"requestContractState":"pending"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-25T10:06:43.710125+00:00","proof_gate":"repair_mission_pr_ready_retryable","source_sha":null,"external_id":"3700","receipt_type":"execute_mission","idempotency_key":"mission:569a261a-58b8-4aaf-ad86-90edce0def25:execute_mission:repair_mission_pr_ready_retryable:current-generation","mission_step_id":"730e4f14-bd24-4c86-8ac5-9c7b6eb14c60","command_center_event_id":"569a261a-58b8-4aaf-ad86-90edce0def25"},{"id":"bd6052af-3218-4607-85e2-fdac9c60a3fa","source":"forgejo-runtime","status":"pending","payload":{"failed":[],"states":{"forgejo-main/source":"success","forgejo-release/workflow":"pending","frontend-cloudflare/live":"pending"},"mainSha":"eb3dfab185cbcec65d1c047d2b0798c10f579182","missing":[],"pending":["forgejo-release/workflow","frontend-cloudflare/live"],"required":["forgejo-main/source","forgejo-release/workflow","frontend-cloudflare/live"],"sourceSha":"eb3dfab185cbcec65d1c047d2b0798c10f579182","releaseState":"pending","sourceInMain":true,"compareStatus":"identical","forgejoWorkflowProof":{"url":"https://git.knocklaunch.app/noel/KnockLaunchOS/actions/runs/1197","runId":1197,"status":"running","conclusion":null,"failedJobs":[],"diagnostics":null},"onrunnerRuntimeProof":null,"releaseSourceVerified":true,"ccExecutionRuntimeProof":null,"exactReleaseVerifiedAfterMainAdvanced":false},"tenant_id":"a2929648-19db-46c8-9e93-07378ed1aa5f","created_at":"2026-08-18T03:27:21.535939+00:00","proof_gate":"canonical_release_pending","source_sha":"eb3dfab185cbcec65d1c047d2b0798c10f579182","external_id":"forgejo-main-eb3dfab185cb","receipt_type":"canonical_release_status","idempotency_key":"mission:737a7966-9a10-40b1-827d-b929fa512557:forgejo-release-status:eb3dfab185cbcec65d1c047d2b0798c10f579182:pending:forgejo-main/source=success|forgejo-release/workflow=pending|frontend-cloudflare/live=pending","mission_step_id":"12b2dfa4-1ee3-46d7-b1b5-976fd2cd757a","command_center_event_id":"737a7966-9a10-40b1-827d-b929fa512557"},{"id":"bd60e483-99c8-4829-b696-c2ae3537b486","source":"cc-execution","status":"retryable","payload":{"ok":false,"jobId":null,"phase":"pull_request","branch":"ai/objective-first-repair-3d72726d71b0","reason":"retryable_provider_transport:forgejo_provider_read_timeout","status":"retryable","metrics":{"receiptBytes":48092,"releaseCount":0,"toolCallCount":8,"repeatedCallCount":3,"executorlessWaitMs":102850,"firstUsefulResultAt":"2026-10-04T11:50:05.296Z","recoveryAttemptCount":4,"ownerInterruptionCount":0},"version":null,"prNumber":4755,"terminal":false,"missionId":"3d72726d-71b0-4270-a79d-fa4b41606df1","operation":"automatic_mission_resume","proofGate":"repair_mission_pr_ready_retryable","sourceSha":null,"timingsMs":{"prReadinessMs":2257,"approvedPlanMs":0,"shipAndProveMs":0,"repositoryMutationMs":0,"repositoryProviderMs":0,"repositoryAtomicCommitMs":0,"repositoryBranchCreateMs":0,"repositoryPullRequestCreateMs":0},"nextAction":"Reconcile this same mission and pull request automatically; do not create a replacement branch or PR.","receiptRef":{"mode":"full","missionId":"3d72726d-71b0-4270-a79d-fa4b41606df1"},"performance":null,"deploymentId":null,"releaseState":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","pendingProofKinds":["runtime"],"verificationState":null,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":819,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true,"requestContractState":"pending"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-04T11:51:38.76805+00:00","proof_gate":"repair_mission_pr_ready_retryable","source_sha":null,"external_id":"4755","receipt_type":"automatic_mission_resume","idempotency_key":"mission:3d72726d-71b0-4270-a79d-fa4b41606df1:automatic-mission-resume:4755:repair_mission_pr_ready_retryable","mission_step_id":"2609ca90-bec2-442d-89dc-38305ed2de2b","command_center_event_id":"3d72726d-71b0-4270-a79d-fa4b41606df1"},{"id":"bd62490c-e537-4497-9132-ad9502a39cf4","source":"cc-execution","status":"complete","payload":{"ok":true,"jobId":null,"phase":"objective_received","branch":"ai/harden-onboarding-function-acls","reason":null,"status":"complete","metrics":{"receiptBytes":0,"releaseCount":0,"toolCallCount":0,"repeatedCallCount":0,"ownerInterruptionCount":0},"version":"1.39.4-forgejo-pr-self-refresh","prNumber":76,"terminal":false,"missionId":"a089626d-28c7-42e8-9e99-41e8c47c21df","operation":"execute_mission","proofGate":"repair_mission_prepared","sourceSha":null,"timingsMs":null,"nextAction":"continue_batch_or_ship_and_prove","receiptRef":{"mode":"full","missionId":"a089626d-28c7-42e8-9e99-41e8c47c21df"},"performance":null,"deploymentId":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":838,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true},"tenant_id":"a2929648-19db-46c8-9e93-07378ed1aa5f","created_at":"2026-08-15T00:57:36.328021+00:00","proof_gate":"repair_mission_prepared","source_sha":null,"external_id":"76","receipt_type":"execute_mission","idempotency_key":"mission:a089626d-28c7-42e8-9e99-41e8c47c21df:execute_mission:repair_mission_prepared","mission_step_id":"20183ab9-41bf-413b-9b90-beed674fd9a4","command_center_event_id":"a089626d-28c7-42e8-9e99-41e8c47c21df"},{"id":"bd6445eb-4c96-4726-8c57-05a84fa3019b","source":"forgejo-runtime","status":"verified","payload":{"failed":[],"states":{"forgejo-main/source":"success","forgejo-release/workflow":"success","cc-execution/runtime-proof":"success"},"mainSha":"d3c0699e841b21c3c73c845f79d0316b50343913","missing":[],"pending":[],"required":["forgejo-main/source","forgejo-release/workflow","cc-execution/runtime-proof"],"sourceSha":"d3c0699e841b21c3c73c845f79d0316b50343913","releaseState":"verified","sourceInMain":true,"compareStatus":"protected_main_push_exact_source","releaseTargets":{"frontend":false,"migrations":false,"ccExecution":true,"supabaseEdge":false,"edgeFunctionSlugs":[]},"releaseTargetStates":{"ccExecution":"success"},"requestContractHash":"ddd12d298e9aa2a728b18d2e52e6a7199f83a9bb2154a50f5e802e09d6e2108e","forgejoWorkflowProof":{"runId":13411,"source":"exact_live_cc_execution_runtime_identity","status":"running","liveSha":"d3c0699e841b21c3c73c845f79d0316b50343913","results":{},"proofGate":"cc_execution_exact_live_runtime_substitutes_transient_workflow_receipt","sourceSha":"d3c0699e841b21c3c73c845f79d0316b50343913","conclusion":"running","deploymentId":"forgejo-main-d3c0699e841b21c3c73c845f79d0316b50343913","targetStates":{"ccExecution":"pending"},"runtimeVersion":"1.64.19-paul-grounded-tool-arguments","targetJobCount":6,"observedTargetStates":{"ccExecution":"pending"},"workflowReceiptSubstituted":true},"releaseSourceVerified":true,"ccExecutionRuntimeProof":{"liveSha":"d3c0699e841b21c3c73c845f79d0316b50343913","proofGate":"cc_execution_target_aware_runtime_identity_verified","deploymentId":"forgejo-main-d3c0699e841b21c3c73c845f79d0316b50343913","compareStatus":"identical","workflowRunId":13411,"identitySource":"local_build_metadata","runtimeVersion":"1.64.19-paul-grounded-tool-arguments","workflowFailed":false,"containsSourceSha":true},"releaseTargetRecoveryProof":null,"exactReleaseVerifiedAfterMainAdvanced":false},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-30T14:24:23.112695+00:00","proof_gate":"canonical_release_terminal_verified","source_sha":"d3c0699e841b21c3c73c845f79d0316b50343913","external_id":"forgejo-main-d3c0699e841b","receipt_type":"canonical_release_status","idempotency_key":"mission:da6f423c-b447-4551-af69-8b0aa977283a:forgejo-release-status:d3c0699e841b21c3c73c845f79d0316b50343913:verified:forgejo-main/source=success|forgejo-release/workflow=success|cc-execution/runtime-proof=success","mission_step_id":"f56b4884-726a-4948-8ae4-0b99cfe20122","command_center_event_id":"da6f423c-b447-4551-af69-8b0aa977283a"},{"id":"bd649775-74d3-489a-b601-52586e855501","source":"cc-execution","status":"waiting_for_gate","payload":{"ok":true,"jobId":null,"phase":"pull_request","branch":"ai/big-papis-owner-mail-scroll","reason":"pull_request_checks_pending","status":"waiting_for_gate","metrics":{"receiptBytes":0,"releaseCount":0,"toolCallCount":0,"repeatedCallCount":0,"ownerInterruptionCount":0},"version":null,"prNumber":3331,"terminal":false,"missionId":"22588c49-6dad-414c-a149-8881eca1475c","operation":"automatic_mission_resume","proofGate":"repair_mission_waiting_for_gate","sourceSha":null,"timingsMs":{"prReadinessMs":482,"approvedPlanMs":0,"shipAndProveMs":0,"repositoryMutationMs":0,"repositoryProviderMs":0,"repositoryAtomicCommitMs":0,"repositoryBranchCreateMs":0,"repositoryPullRequestCreateMs":0},"nextAction":"Reconcile this same mission and pull request after the exact-head KnockLaunch Gate changes state.","receiptRef":{"mode":"full","missionId":"22588c49-6dad-414c-a149-8881eca1475c"},"performance":null,"deploymentId":null,"releaseState":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","pendingProofKinds":[],"verificationState":null,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":1277,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true,"requestContractState":"pending"},"tenant_id":"766cfaa7-ac42-46c8-bbef-69d13268a29d","created_at":"2026-09-21T01:12:34.508972+00:00","proof_gate":"repair_mission_waiting_for_gate","source_sha":null,"external_id":"3331","receipt_type":"automatic_mission_resume","idempotency_key":"mission:22588c49-6dad-414c-a149-8881eca1475c:automatic-mission-resume:3331:repair_mission_waiting_for_gate","mission_step_id":"7d0ac9bd-d2d1-40b6-b936-5c7136061c85","command_center_event_id":"22588c49-6dad-414c-a149-8881eca1475c"},{"id":"bd64f3be-2146-4dfc-857f-bd60ef2e8e81","source":"cc-execution","status":"blocked","payload":{"ok":false,"jobId":null,"phase":"implementation","branch":"ai/objective-first-repair-24e4d9dc7a40","reason":"anchored_edit_anchor_not_unique:src/pages/admin/AdminProfile.tsx","status":"blocked","metrics":{"receiptBytes":37376,"releaseCount":0,"toolCallCount":1,"repeatedCallCount":0,"executorlessWaitMs":0,"firstUsefulResultAt":"2026-10-01T02:07:26.380Z","recoveryAttemptCount":0,"ownerInterruptionCount":0},"version":"1.64.31-paul-deterministic-correction-recovery","prNumber":null,"terminal":false,"missionId":"24e4d9dc-7a40-4620-abf0-5ab365bde3d3","operation":"execute_mission","proofGate":"repair_mission_execution_blocked","sourceSha":null,"timingsMs":{"gateMs":0,"proofMs":0,"handlerMs":742,"releaseMs":0,"mutationMs":0,"repositoryMs":0,"prReadinessMs":0,"approvedPlanMs":742,"missionSetupMs":349,"providerAuthMs":0,"shipAndProveMs":0,"ledgerPrepareMs":349,"ledgerReconcileMs":0,"lineageReconcileMs":0,"resolvePreflightMs":349,"repositoryMutationMs":0,"repositoryProviderMs":0,"authoritativeLedgerMs":0,"ledgerAsyncDispatchMs":0,"repositoryAtomicCommitMs":0,"repositoryBranchCreateMs":0,"totalSynchronousLedgerMs":349,"asyncBookkeepingDispatchMs":0,"ledgerAuthoritativeCommitMs":0,"repositoryPullRequestCreateMs":0},"nextAction":null,"receiptRef":{"mode":"full","missionId":"24e4d9dc-7a40-4620-abf0-5ab365bde3d3"},"performance":null,"deploymentId":null,"releaseState":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","pendingProofKinds":["runtime"],"verificationState":null,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":1507,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true,"requestContractState":"pending"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-01T02:07:29.188986+00:00","proof_gate":"repair_mission_execution_blocked","source_sha":null,"external_id":null,"receipt_type":"execute_mission","idempotency_key":"mission:24e4d9dc-7a40-4620-abf0-5ab365bde3d3:execute_mission:repair_mission_execution_blocked:current-generation","mission_step_id":"11ee5011-7869-4c9c-b6d5-63a9cbf0d0b9","command_center_event_id":"24e4d9dc-7a40-4620-abf0-5ab365bde3d3"},{"id":"bd672fe6-b3c5-4691-9d1e-7fe61c6faa1a","source":"cc-execution","status":"synthesis_required","payload":{"ok":true,"jobId":null,"phase":"implementation","branch":"ai/objective-first-repair-mtkv4lhf","reason":null,"status":"synthesis_required","metrics":{"receiptBytes":12304,"releaseCount":0,"toolCallCount":6,"repeatedCallCount":0,"ownerInterruptionCount":0},"version":"1.58.4-refresh-fastpath","prNumber":1516,"terminal":false,"missionId":"9d75788f-1bb1-41c1-b45a-164fcbb902b3","operation":"execute_mission","proofGate":"repair_mission_synthesis_ready","sourceSha":null,"timingsMs":{"handlerMs":19,"missionSetupMs":2250},"nextAction":"Inspect the bounded repository paths, synthesize exact files or anchored_edits, and call /mission/execute again automatically with this same missionId without another owner prompt or workflow switch.","receiptRef":{"mode":"full","missionId":"9d75788f-1bb1-41c1-b45a-164fcbb902b3"},"performance":null,"deploymentId":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":4988,"likelyAffectedFiles":["config/platform-standards.json","src/components/GlobalCommandPalette.tsx","src/components/CallFlow/hooks/usePerformanceMonitoring.ts","src/components/NewLeadIntakeForm.tsx","src/components/SignupForm.tsx","scripts/audit-experience-surface-uniformity.mjs","scripts/audit-platform-cohesion.mjs","scripts/cloudflare-native-platform-seo.mjs","scripts/generate-platform-cohesion-auth-proof-requirements.mjs","scripts/generate-platform-cohesion-proof-packs.mjs","scripts/phase3b-sanitize-and-publish-v2.ts","src/__tests__/contracts/command-palette-platform-authority.contract.test.ts"],"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-03T01:52:50.401073+00:00","proof_gate":"repair_mission_synthesis_ready","source_sha":null,"external_id":"1516","receipt_type":"execute_mission","idempotency_key":"mission:9d75788f-1bb1-41c1-b45a-164fcbb902b3:execute_mission:repair_mission_synthesis_ready:current-generation","mission_step_id":"64a10bdf-c7e6-465c-a5b4-54e1d7656107","command_center_event_id":"9d75788f-1bb1-41c1-b45a-164fcbb902b3"},{"id":"bd6758b8-6f0e-4ef3-90df-5a5d2fef6334","source":"cc-execution","status":"source_resolution_required","payload":{"ok":true,"jobId":null,"phase":"objective_received","branch":null,"reason":null,"status":"source_resolution_required","metrics":{"receiptBytes":0,"releaseCount":0,"toolCallCount":0,"repeatedCallCount":0,"executorlessWaitMs":0,"firstUsefulResultAt":null,"recoveryAttemptCount":0,"ownerInterruptionCount":0},"version":"1.58.260-release-actions-query-parity","prNumber":null,"terminal":false,"missionId":"618c39d5-2c42-4512-906b-f385844795a3","operation":"execute_mission","proofGate":"repair_mission_source_resolution_required","sourceSha":null,"timingsMs":{"gateMs":0,"proofMs":0,"handlerMs":1054,"releaseMs":0,"mutationMs":0,"repositoryMs":0,"missionSetupMs":549,"providerAuthMs":0,"ledgerPrepareMs":549,"ledgerReconcileMs":0,"lineageReconcileMs":0,"resolvePreflightMs":549,"authoritativeLedgerMs":0,"ledgerAsyncDispatchMs":0,"totalSynchronousLedgerMs":549,"asyncBookkeepingDispatchMs":0,"ledgerAuthoritativeCommitMs":0},"nextAction":"Supply exact sourceTargets on the same mission; planner guesses cannot replace missing mission scope.","receiptRef":{"mode":"full","missionId":"618c39d5-2c42-4512-906b-f385844795a3"},"performance":null,"deploymentId":null,"releaseState":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","pendingProofKinds":[],"verificationState":null,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":1176,"likelyAffectedFiles":[],"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true,"requestContractState":"pending"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-24T18:20:29.145969+00:00","proof_gate":"repair_mission_source_resolution_required","source_sha":null,"external_id":null,"receipt_type":"execute_mission","idempotency_key":"mission:618c39d5-2c42-4512-906b-f385844795a3:execute_mission:repair_mission_source_resolution_required:current-generation","mission_step_id":"23dea71a-8d8f-4e6b-8173-03522448e85d","command_center_event_id":"618c39d5-2c42-4512-906b-f385844795a3"},{"id":"bd675b69-628a-4928-a319-7c5bc3713381","source":"forgejo-runtime","status":"verified","payload":{"failed":[],"states":{"forgejo-main/source":"success","forgejo-release/workflow":"success","frontend-cloudflare/live":"success"},"mainSha":"5927d4eb622ad4c71e5b39ae6a8a2663e412bb7c","missing":[],"pending":[],"required":["forgejo-main/source","forgejo-release/workflow","frontend-cloudflare/live"],"sourceSha":"5927d4eb622ad4c71e5b39ae6a8a2663e412bb7c","releaseState":"verified","sourceInMain":true,"compareStatus":"identical","forgejoWorkflowProof":{"url":"https://git.knocklaunch.app/noel/KnockLaunchOS/actions/runs/1378","runId":1378,"status":"success","conclusion":null,"failedJobs":[],"diagnostics":null},"onrunnerRuntimeProof":null,"releaseSourceVerified":true,"ccExecutionRuntimeProof":null,"exactReleaseVerifiedAfterMainAdvanced":false},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-08-19T03:14:09.00806+00:00","proof_gate":"canonical_release_terminal_verified","source_sha":"5927d4eb622ad4c71e5b39ae6a8a2663e412bb7c","external_id":"forgejo-main-5927d4eb622a","receipt_type":"canonical_release_status","idempotency_key":"mission:af4879bf-84bf-41a1-ba44-e24e08325311:forgejo-release-status:5927d4eb622ad4c71e5b39ae6a8a2663e412bb7c:verified:forgejo-main/source=success|forgejo-release/workflow=success|frontend-cloudflare/live=success","mission_step_id":"07be0d3c-90ff-481a-9ac0-c3248c995e65","command_center_event_id":"af4879bf-84bf-41a1-ba44-e24e08325311"},{"id":"bd680285-f2c4-40df-9259-977601890853","source":"forgejo","status":"waiting","payload":{"branch":"ai/objective-first-repair-eb02db742a88","prNumber":2685,"nextAction":null,"mergeCommitSha":"ed611056d22d7f8b98afbcdb7d0dec84dfd24105","branchDeletedAfterMerge":true,"correctiveGenerationCreated":false},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-13T23:07:16.67621+00:00","proof_gate":"forgejo_merged_pr_is_authoritative_source_lineage","source_sha":"ed611056d22d7f8b98afbcdb7d0dec84dfd24105","external_id":"2685","receipt_type":"source_lineage_merged_pr_authoritative","idempotency_key":"mission:eb02db74-2a88-40b6-a9b7-9ebb00976c18:merged-pr:2685:ed611056d22d7f8b98afbcdb7d0dec84dfd24105","mission_step_id":"0aa0d63c-93c5-40bb-a96f-faaa8594f7e0","command_center_event_id":"eb02db74-2a88-40b6-a9b7-9ebb00976c18"},{"id":"bd68d00c-8a23-4114-a49a-fb71ce705485","source":"owner_authorized_full_backlog_cleanup","status":"recorded","payload":{"category":"other_product_work","disposition":"superseded_execution_attempt","previousStatus":"blocked","sourcePreserved":true,"noCompletionClaim":true,"recoveryPortfolioId":"1a208a97-7a93-52a9-bc0f-b80fe445c55b"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-11T16:14:39.646808+00:00","proof_gate":"source_objective_preserved_in_existing_mission_ledger","source_sha":null,"external_id":null,"receipt_type":"owner_backlog_disposition","idempotency_key":"owner-full-backlog-cleanup-20261011:a2263413-8791-43e6-b51c-aec1c883457a","mission_step_id":null,"command_center_event_id":"a2263413-8791-43e6-b51c-aec1c883457a"},{"id":"bd6a5050-bfcf-4d3c-95db-c259cb825495","source":"cc-execution","status":"recorded","payload":{"requestContract":{"valid":true,"intent":{"evidence":[],"confidence":null,"rawUtterance":"Continue the same owner-authorized control-plane maintenance mission and same PR. Signed runner inventory proves only one docker-labeled runner is online while paul-light is idle. Eliminate the proven gate/frontend-release serialization without weakening KnockLaunch Gate by moving only the post-merge Release frontend job from runs-on: docker to runs-on: paul-light. Keep Gate and runtime-heavy workers on docker. Preserve every other workflow behavior and the one-PR repair.","wordingChanged":false,"canonicalIntent":"Continue the same owner-authorized control-plane maintenance mission and same PR. Signed runner inventory proves only one docker-labeled runner is online while paul-light is idle. Eliminate the proven gate/frontend-release serialization without weakening KnockLaunch Gate by moving only the post-merge Release frontend job from runs-on: docker to runs-on: paul-light. Keep Gate and runtime-heavy workers on docker. Preserve every other workflow behavior and the one-PR repair.","resolutionStatus":"exact","uniqueResolution":true,"clarificationRequired":false},"source":"explicit","version":1,"outcomes":[{"id":"outcome-1","statement":"Unfreeze control plane maintenance only for the exact authorized paths, repair the recursive Wrangler timeout wrapper, preserve bounded per-command timeouts, restore available runner capacity, and refreeze the control plane.","proofConditionIds":["proof-1","proof-2","proof-3"]}],"objective":"Continue the same owner-authorized control-plane maintenance mission and same PR. Signed runner inventory proves only one docker-labeled runner is online while paul-light is idle. Eliminate the proven gate/frontend-release serialization without weakening KnockLaunch Gate by moving only the post-merge Release frontend job from runs-on: docker to runs-on: paul-light. Keep Gate and runtime-heavy workers on docker. Preserve every other workflow behavior and the one-PR repair.","constraints":[],"terminalPolicy":"all_required_proof_conditions_satisfied_after_live_release","proofConditions":[{"id":"proof-1","kind":"repository","claim":"The exact repair passes KnockLaunch Gate and squash-merges through Forgejo.","route":null,"roleRef":null,"userRef":null,"required":true,"expectedText":null,"targetedActions":[],"allowedReleaseTargets":[],"requiredReleaseTargets":[]},{"id":"proof-2","kind":"host_watchdog","claim":"Runner capacity is restored through the signed host watchdog.","route":null,"roleRef":null,"userRef":null,"required":true,"expectedText":null,"targetedActions":[],"allowedReleaseTargets":[],"requiredReleaseTargets":[]},{"id":"proof-3","kind":"runtime","claim":"A production frontend release using the repaired wrapper succeeds for current main so the already-merged Big Papi and Miss Lawn fixes can be proven live.","route":null,"roleRef":null,"userRef":null,"required":true,"expectedText":null,"targetedActions":[],"allowedReleaseTargets":[],"requiredReleaseTargets":[]}],"validationErrors":[]},"requestContractHash":"ac9a7a4376ac387aab7ff2022e4ca6abd9a0abeccdede405cd9cf5c2bbbd0b00","requestContractRevision":2,"previousRequestContractHash":"57b9854cf94dc8afd61ca8f33c552945ef2011a59652c33cca7d1a734d139b40"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-04T00:28:05.764187+00:00","proof_gate":"request_contract_revision_recorded","source_sha":null,"external_id":null,"receipt_type":"request_contract_revision","idempotency_key":"mission:11b18f7e-3750-43d6-adac-c00c053bf912:request-contract-revision:2:ac9a7a4376ac387aab7ff2022e4ca6abd9a0abeccdede405cd9cf5c2bbbd0b00","mission_step_id":"21d62b65-9d9e-4a6c-b008-795e89bd03ed","command_center_event_id":"11b18f7e-3750-43d6-adac-c00c053bf912"},{"id":"bd6c7a54-f189-4b63-a8de-4ed8e63b9099","source":"cc-execution","status":"waiting","payload":{"kind":"heartbeat","message":"Still active in implementation.","nextAction":{"lane":"cc-execution","action":"reconcile_pull_request","reason":"pull_request_exists_without_merged_source","automationAllowed":true,"ownerActionRequired":false},"silenceBudgetMs":15000,"semanticCheckpointSignature":"{\"stateMachineVersion\":1,\"phase\":\"implementation\",\"ownerFacingState\":null,\"latest\":{\"kind\":\"receipt\",\"key\":\"deterministic_supervisor_transition\",\"status\":\"advanced\",\"proofGate\":\"deterministic_semantic_transition_journaled\"},\"activeStep\":{\"key\":\"pull_request\",\"status\":\"ready\",\"lane\":\"cc-execution\"},\"nextStep\":{\"key\":\"release\",\"status\":\"ready\",\"lane\":\"production-release-conductor\"},\"nextSafeAction\":{\"action\":\"reconcile_pull_request\",\"lane\":\"cc-execution\",\"reason\":\"pull_request_exists_without_merged_source\",\"automationAllowed\":true,\"ownerActionRequired\":false},\"executionOwnership\":{\"active\":false,\"state\":\"waiting\",\"executor\":null,\"lane\":\"cc-execution\",\"nextAction\":\"reconcile_pull_request\",\"recoveryOwner\":\"cc-execution\"},\"acceptance\":{\"total\":6,\"verified\":2,\"pending\":4,\"percent\":33,\"satisfied\":false,\"verifiedIds\":[\"preflight\",\"implementation\"],\"pendingIds\":[\"pull_request\",\"release\",\"runtime_proof\",\"visual_proof\"]},\"stall\":{\"stalled\":true,\"reason\":\"step_deadline_exceeded\",\"step\":\"runtime_proof\",\"deadlineAt\":\"2026-08-05T03:31:01.398179+00:00\",\"recoveryAction\":\"reconcile_pull_request\"},\"blocker\":null,\"terminal\":false,\"branch\":\"ai/fix-experience-editor-proof-dispatch-20260804\",\"prNumber\":4016,\"sourceSha\":null,\"deploymentId\":null}"},"tenant_id":"a2929648-19db-46c8-9e93-07378ed1aa5f","created_at":"2026-10-03T10:33:54.989783+00:00","proof_gate":"owner_progress_heartbeat","source_sha":null,"external_id":null,"receipt_type":"owner_progress_heartbeat","idempotency_key":"mission:871b1f2d-4576-48f4-9977-8d8a8ae99d7e:owner-progress-heartbeat:119401574","mission_step_id":"c6526d6f-0d53-42de-a6a6-b6d8f434e2f5","command_center_event_id":"871b1f2d-4576-48f4-9977-8d8a8ae99d7e"},{"id":"bd6cc8f3-7a27-41a1-8e81-944f95a545bd","source":"cc-execution","status":"waiting","payload":{"kind":"heartbeat","message":"Still active in release.","nextAction":{"lane":"production-release-conductor","action":"reconcile_release","reason":"merged_source_requires_release_proof","automationAllowed":true,"ownerActionRequired":false},"silenceBudgetMs":15000,"semanticCheckpointSignature":"{\"stateMachineVersion\":1,\"phase\":\"release\",\"ownerFacingState\":null,\"latest\":{\"kind\":\"receipt\",\"key\":\"canonical_release_status\",\"status\":\"pending\",\"proofGate\":\"canonical_release_ancestry_pending\"},\"activeStep\":{\"key\":\"preflight\",\"status\":\"ready\",\"lane\":\"cc-execution\"},\"nextStep\":{\"key\":\"implementation\",\"status\":\"pending\",\"lane\":\"cc-execution\"},\"nextSafeAction\":{\"action\":\"reconcile_release\",\"lane\":\"production-release-conductor\",\"reason\":\"merged_source_requires_release_proof\",\"automationAllowed\":true,\"ownerActionRequired\":false},\"executionOwnership\":{\"active\":false,\"state\":\"waiting\",\"executor\":null,\"lane\":\"cc-execution\",\"nextAction\":\"reconcile_release\",\"recoveryOwner\":\"production-release-conductor\"},\"acceptance\":{\"total\":6,\"verified\":0,\"pending\":6,\"percent\":0,\"satisfied\":false,\"verifiedIds\":[],\"pendingIds\":[\"preflight\",\"implementation\",\"pull_request\",\"release\",\"runtime_proof\",\"visual_proof\"]},\"stall\":{\"stalled\":true,\"reason\":\"step_deadline_exceeded\",\"step\":\"release\",\"deadlineAt\":\"2026-08-06T02:29:01.236525+00:00\",\"recoveryAction\":\"reconcile_release\"},\"blocker\":null,\"terminal\":false,\"branch\":\"ai/seaside-profile-identity-actions-touch\",\"prNumber\":4097,\"sourceSha\":\"64093983a2e36360fd897c4a9c37289d6e2ad905\",\"deploymentId\":\"canonical-release-64093983a2e3\"}"},"tenant_id":"c55998b4-82a3-467e-8d35-177bb4785f6e","created_at":"2026-10-04T08:58:39.633169+00:00","proof_gate":"owner_progress_heartbeat","source_sha":null,"external_id":null,"receipt_type":"owner_progress_heartbeat","idempotency_key":"mission:42d94e6b-592b-4af3-b31d-280b00446cc7:owner-progress-heartbeat:119406954","mission_step_id":"439cb97c-0985-4cdf-9f6d-5103daea75d6","command_center_event_id":"42d94e6b-592b-4af3-b31d-280b00446cc7"},{"id":"bd6ef1da-72df-47d3-ba88-6a91ba2c8ab0","source":"cc-execution","status":"synthesis_required","payload":{"ok":true,"jobId":null,"phase":"implementation","branch":"ai/ambient-intelligence-philosophy","reason":null,"status":"synthesis_required","metrics":{"receiptBytes":1684,"releaseCount":0,"toolCallCount":1,"repeatedCallCount":0,"ownerInterruptionCount":0},"version":"1.31.23-targeted-owner-preflight","prNumber":null,"terminal":false,"missionId":"a83f11f0-1689-4abb-b550-9f5083129db7","operation":"execute_mission","proofGate":"repair_mission_synthesis_ready","sourceSha":null,"timingsMs":null,"nextAction":"Inspect the bounded repository paths, synthesize exact files or anchored_edits, and call /repair/continue-mission automatically with this missionId without another owner prompt.","receiptRef":{"mode":"full","missionId":"a83f11f0-1689-4abb-b550-9f5083129db7"},"performance":null,"deploymentId":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":9403,"likelyAffectedFiles":["src/PrivateAppShell.tsx","src/components/ai/AIAssistantLauncher.tsx","docs/AI_INTELLIGENCE_PHILOSOPHY.md","workers/cc-execution/src/index-mission-control.js","workers/cc-execution/src/command-center-contracts.js","workers/cc-execution/src/index-release-fast-lane.js",".github/workflows/production-release-conductor.yml","scripts/resolve-autonomous-change-plan.mjs","scripts/resolve-production-workflow-run.mjs","src/routes/","src/pages/","src/components/"],"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true},"tenant_id":"c55998b4-82a3-467e-8d35-177bb4785f6e","created_at":"2026-08-09T11:00:18.782926+00:00","proof_gate":"repair_mission_synthesis_ready","source_sha":null,"external_id":null,"receipt_type":"execute_mission","idempotency_key":"mission:a83f11f0-1689-4abb-b550-9f5083129db7:execute_mission:repair_mission_synthesis_ready","mission_step_id":"d4af2972-8176-420d-8881-e3811d12d229","command_center_event_id":"a83f11f0-1689-4abb-b550-9f5083129db7"},{"id":"bd70744a-5fdb-4066-b005-db98dc3d9923","source":"cc-execution","status":"deployment_dispatched","payload":{"ok":true,"jobId":null,"phase":"pull_request","branch":"ai/forgejo-operator-read-budget","reason":null,"status":"deployment_dispatched","metrics":{"receiptBytes":0,"releaseCount":0,"toolCallCount":0,"repeatedCallCount":0,"ownerInterruptionCount":0},"version":null,"prNumber":2167,"terminal":false,"missionId":"813c75ae-c335-460c-b3d0-fc3a6af8c909","operation":"automatic_mission_resume","proofGate":"canonical_release_dispatched","sourceSha":"c0720ad592789e60d04b45bc2bc1a5afc3714658","timingsMs":{"prReadinessMs":1605,"approvedPlanMs":0,"shipAndProveMs":7523,"repositoryMutationMs":0,"repositoryProviderMs":0,"repositoryAtomicCommitMs":0,"repositoryBranchCreateMs":0,"repositoryPullRequestCreateMs":0},"nextAction":null,"receiptRef":{"mode":"full","missionId":"813c75ae-c335-460c-b3d0-fc3a6af8c909"},"performance":null,"deploymentId":"forgejo-main-c0720ad59278","workflowRunId":null,"releaseTargets":{"frontend":false,"onrunner":false,"migrations":false,"ccExecution":true,"supabaseEdge":false,"edgeFunctionSlugs":[]},"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":2017,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-08T20:35:31.784618+00:00","proof_gate":"canonical_release_dispatched","source_sha":null,"external_id":"2167","receipt_type":"automatic_mission_resume","idempotency_key":"mission:813c75ae-c335-460c-b3d0-fc3a6af8c909:automatic-mission-resume:2167:canonical_release_dispatched","mission_step_id":"b2d15816-200f-49b0-9f94-5387792ee954","command_center_event_id":"813c75ae-c335-460c-b3d0-fc3a6af8c909"},{"id":"bd71d850-a526-4e3d-a59d-560e723c6a49","source":"cc-execution","status":"retryable","payload":{"ok":false,"jobId":null,"phase":"pull_request","branch":null,"reason":"pull_request_checks_pending","status":"retryable","metrics":{"receiptBytes":3247,"releaseCount":0,"toolCallCount":3,"repeatedCallCount":1,"ownerInterruptionCount":0},"version":null,"prNumber":107,"terminal":false,"missionId":"8acdbd77-b2e6-4458-8ab5-2fe456484224","operation":"automatic_mission_resume","proofGate":"repair_mission_pr_ready_retryable","sourceSha":null,"timingsMs":null,"nextAction":"Reconcile this same mission and pull request automatically; do not create a replacement branch or PR.","receiptRef":{"mode":"full","missionId":"8acdbd77-b2e6-4458-8ab5-2fe456484224"},"performance":null,"deploymentId":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":900,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true},"tenant_id":"a2929648-19db-46c8-9e93-07378ed1aa5f","created_at":"2026-08-15T17:07:29.08442+00:00","proof_gate":"repair_mission_pr_ready_retryable","source_sha":null,"external_id":"107","receipt_type":"automatic_mission_resume","idempotency_key":"mission:8acdbd77-b2e6-4458-8ab5-2fe456484224:automatic-mission-resume:107:repair_mission_pr_ready_retryable","mission_step_id":"6d73dcfa-c67d-4577-b13f-8f504230d66b","command_center_event_id":"8acdbd77-b2e6-4458-8ab5-2fe456484224"},{"id":"bd733fce-1627-4ab4-b028-9d5e144a6af7","source":"cc-execution","status":"deployment_dispatched","payload":{"ok":true,"jobId":null,"phase":"objective_received","branch":null,"reason":null,"status":"deployment_dispatched","metrics":{"receiptBytes":0,"releaseCount":0,"toolCallCount":0,"repeatedCallCount":0,"ownerInterruptionCount":0},"version":"1.36.10-mission-continuation-fix","prNumber":4794,"terminal":false,"missionId":"5862e01c-6f91-466b-a8c4-eea57592b026","operation":"ship_and_prove","proofGate":"canonical_release_dispatched","sourceSha":"2415d0456c9665e3ab2228bb05f23d4a10c1848d","timingsMs":null,"nextAction":null,"receiptRef":{"mode":"full","missionId":"5862e01c-6f91-466b-a8c4-eea57592b026"},"performance":null,"deploymentId":"canonical-release-2415d0456c96","workflowRunId":31724658665,"releaseTargets":{"frontend":true,"onrunner":false,"migrations":false,"ccExecution":false,"supabaseEdge":false,"edgeFunctionSlugs":[]},"detailsAvailable":true,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":1350,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true},"tenant_id":"a2929648-19db-46c8-9e93-07378ed1aa5f","created_at":"2026-08-13T17:14:03.965141+00:00","proof_gate":"canonical_release_dispatched","source_sha":"2415d0456c9665e3ab2228bb05f23d4a10c1848d","external_id":"canonical-release-2415d0456c96","receipt_type":"ship_and_prove","idempotency_key":"mission:5862e01c-6f91-466b-a8c4-eea57592b026:ship_and_prove:canonical_release_dispatched:2415d0456c9665e3ab2228bb05f23d4a10c1848d:31724658665","mission_step_id":"edc1a91d-bc24-4eef-ab19-630d490c1e76","command_center_event_id":"5862e01c-6f91-466b-a8c4-eea57592b026"},{"id":"bd750f7a-c079-46ff-904b-ee66694dd8f1","source":"cc-execution","status":"blocked","payload":{"reason":"control_plane_maintenance_request_contract_required","fingerprint":"d95898a810129c9e01a76101d03ee06bf7c059b6c6391a8434cd39c3d62d9bf7"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-03T02:30:53.943477+00:00","proof_gate":"repository_mutation_intent_deterministic_failure","source_sha":null,"external_id":null,"receipt_type":"repository_mutation_intent_blocked","idempotency_key":"mission:7c4bbef2-985a-485b-ae8c-33aac34fc064:repository-mutation-intent-blocked:d95898a810129c9e01a76101d03ee06bf7c059b6c6391a8434cd39c3d62d9bf7","mission_step_id":"6d54f591-defe-47be-952a-addca7f38dbe","command_center_event_id":"7c4bbef2-985a-485b-ae8c-33aac34fc064"},{"id":"bd77b969-70ef-41d2-992d-d14e298dc2a3","source":"cc-execution","status":"recorded","payload":{"objective":"Correct the live La Vista R2 auth contract after PR #885. Production v8 proves CLOUDFLARE_VISTADELMAR_API_TOKEN is present (laVistaR2Configured=true), but both galleries still return cloudflare_r2_list_failed:403 and lead/login fall back to SVG. Cloudflare's current R2 contract states bucket-scoped Object Read/Object Read & Write tokens are supported by the S3-compatible API, not the Cloudflare REST object API. Use the existing owner-created CLOUDFLARE_VISTADELMAR_API_TOKEN as the R2 API token value: verify it through Cloudflare's token verify endpoint to obtain its token id (the R2 Access Key ID), derive the R2 Secret Access Key as the SHA-256 hex digest of the token value per Cloudflare's R2 auth contract, and use aws4fetch/AWS SigV4 against https://<ACCOUNT_ID>.r2.cloudflarestorage.com for La Vista list/get/put operations. Preserve the existing generic REST path for other tenants. Do not require another owner secret unless live token verification proves the supplied secret is not an R2 API token value. Do not alter any existing R2 objects or tenant keys. Gate, squash merge, deploy only tenant-photo-studio, then prove both galleries contain real keys, lead/login return real image content rather than SVG fallback, and production dashboard visibly renders the actual La Vista imagery.","tenantRef":"lavistadelmar","receivedAt":"2026-08-28T00:26:25.680Z","fingerprint":"0aa5ceb44c554d6bf342c727846c20674a46f63ee4f617708defb2bb50828ae6","workstreamRef":"lavistadelmar","conversationId":null,"canonicalBranch":"ai/fix-vista-r2-s3-auth-20260828","requestContract":{"valid":true,"intent":{"evidence":[],"confidence":null,"rawUtterance":"Correct the live La Vista R2 auth contract after PR #885. Production v8 proves CLOUDFLARE_VISTADELMAR_API_TOKEN is present (laVistaR2Configured=true), but both galleries still return cloudflare_r2_list_failed:403 and lead/login fall back to SVG. Cloudflare's current R2 contract states bucket-scoped Object Read/Object Read & Write tokens are supported by the S3-compatible API, not the Cloudflare REST object API. Use the existing owner-created CLOUDFLARE_VISTADELMAR_API_TOKEN as the R2 API token value: verify it through Cloudflare's token verify endpoint to obtain its token id (the R2 Access Key ID), derive the R2 Secret Access Key as the SHA-256 hex digest of the token value per Cloudflare's R2 auth contract, and use aws4fetch/AWS SigV4 against https://<ACCOUNT_ID>.r2.cloudflarestorage.com for La Vista list/get/put operations. Preserve the existing generic REST path for other tenants. Do not require another owner secret unless live token verification proves the supplied secret is not an R2 API token value. Do not alter any existing R2 objects or tenant keys. Gate, squash merge, deploy only tenant-photo-studio, then prove both galleries contain real keys, lead/login return real image content rather than SVG fallback, and production dashboard visibly renders the actual La Vista imagery.","wordingChanged":false,"canonicalIntent":"Correct the live La Vista R2 auth contract after PR #885. Production v8 proves CLOUDFLARE_VISTADELMAR_API_TOKEN is present (laVistaR2Configured=true), but both galleries still return cloudflare_r2_list_failed:403 and lead/login fall back to SVG. Cloudflare's current R2 contract states bucket-scoped Object Read/Object Read & Write tokens are supported by the S3-compatible API, not the Cloudflare REST object API. Use the existing owner-created CLOUDFLARE_VISTADELMAR_API_TOKEN as the R2 API token value: verify it through Cloudflare's token verify endpoint to obtain its token id (the R2 Access Key ID), derive the R2 Secret Access Key as the SHA-256 hex digest of the token value per Cloudflare's R2 auth contract, and use aws4fetch/AWS SigV4 against https://<ACCOUNT_ID>.r2.cloudflarestorage.com for La Vista list/get/put operations. Preserve the existing generic REST path for other tenants. Do not require another owner secret unless live token verification proves the supplied secret is not an R2 API token value. Do not alter any existing R2 objects or tenant keys. Gate, squash merge, deploy only tenant-photo-studio, then prove both galleries contain real keys, lead/login return real image content rather than SVG fallback, and production dashboard visibly renders the actual La Vista imagery.","resolutionStatus":"exact","uniqueResolution":true,"clarificationRequired":false},"source":"explicit","version":1,"outcomes":[{"id":"s3-auth","statement":"La Vista R2 list/get/put operations use Cloudflare's S3-compatible authentication derived from the existing CLOUDFLARE_VISTADELMAR_API_TOKEN; other tenants retain their existing generic Cloudflare REST path.","proofConditionIds":["source","runtime"]},{"id":"media-live","statement":"The View, The Nest and login/background resolve from existing R2 objects and production no longer shows the media placeholders.","proofConditionIds":["runtime","visual"]}],"objective":"Correct the live La Vista R2 auth contract after PR #885. Production v8 proves CLOUDFLARE_VISTADELMAR_API_TOKEN is present (laVistaR2Configured=true), but both galleries still return cloudflare_r2_list_failed:403 and lead/login fall back to SVG. Cloudflare's current R2 contract states bucket-scoped Object Read/Object Read & Write tokens are supported by the S3-compatible API, not the Cloudflare REST object API. Use the existing owner-created CLOUDFLARE_VISTADELMAR_API_TOKEN as the R2 API token value: verify it through Cloudflare's token verify endpoint to obtain its token id (the R2 Access Key ID), derive the R2 Secret Access Key as the SHA-256 hex digest of the token value per Cloudflare's R2 auth contract, and use aws4fetch/AWS SigV4 against https://<ACCOUNT_ID>.r2.cloudflarestorage.com for La Vista list/get/put operations. Preserve the existing generic REST path for other tenants. Do not require another owner secret unless live token verification proves the supplied secret is not an R2 API token value. Do not alter any existing R2 objects or tenant keys. Gate, squash merge, deploy only tenant-photo-studio, then prove both galleries contain real keys, lead/login return real image content rather than SVG fallback, and production dashboard visibly renders the actual La Vista imagery.","constraints":[{"id":"preserve-objects","statement":"No existing La Vista R2 object may be uploaded, renamed, copied, regenerated, enhanced, replaced or otherwise mutated during this repair.","proofConditionIds":["source"]},{"id":"preserve-type","statement":"La Vista remains SHORT_TERM_RENTAL and its configured object keys remain unchanged.","proofConditionIds":["tenant"]}],"terminalPolicy":"all_required_proof_conditions_satisfied_after_live_release","proofConditions":[{"id":"source","kind":"repository","claim":"The corrective diff is scoped to tenant-photo-studio's La Vista R2 auth adapter.","route":"/la-vista-del-mar/dashboard","required":true,"expectedText":null,"targetedActions":[],"allowedReleaseTargets":[],"requiredReleaseTargets":[]},{"id":"runtime","kind":"runtime","claim":"Both La Vista galleries succeed and lead/login return real image responses rather than 403/placeholder SVG after the exact Edge release.","route":"/la-vista-del-mar/dashboard","required":true,"expectedText":null,"targetedActions":[],"allowedReleaseTargets":["supabaseEdge"],"requiredReleaseTargets":["supabaseEdge"]},{"id":"visual","kind":"visual","claim":"Production /la-vista-del-mar/dashboard visibly renders the actual property imagery instead of Add property photos / Photo ready to add.","route":"/la-vista-del-mar/dashboard","required":true,"expectedText":null,"targetedActions":[],"allowedReleaseTargets":["supabaseEdge"],"requiredReleaseTargets":["supabaseEdge"]},{"id":"tenant","kind":"runtime","claim":"Production tenant remains SHORT_TERM_RENTAL with unchanged R2 bucket and object-key configuration.","route":"/la-vista-del-mar/dashboard","required":true,"expectedText":null,"targetedActions":[],"allowedReleaseTargets":[],"requiredReleaseTargets":[]}],"validationErrors":[]},"requestedBranch":"ai/fix-vista-r2-s3-auth-20260828","conversationContext":null,"requestContractHash":"593ff3e5c363f75652ea78dd09dbc1c13d496f09f3bd8d6d5c365180a09949d5","requestContractRevision":1},"tenant_id":"71b397ba-b9ad-496b-914c-985d97dbb12e","created_at":"2026-08-28T00:26:26.128029+00:00","proof_gate":"tenant_workstream_contribution_recorded","source_sha":null,"external_id":null,"receipt_type":"tenant_workstream_contribution","idempotency_key":"mission:67f003f8-e520-4e75-806d-ab917fe0bfb0:tenant-workstream-contribution:0aa5ceb44c554d6bf342c727846c20674a46f63ee4f617708defb2bb50828ae6","mission_step_id":null,"command_center_event_id":"67f003f8-e520-4e75-806d-ab917fe0bfb0"},{"id":"bd785687-fc71-4cf9-9d92-87155de3808e","source":"forgejo","status":"waiting","payload":{"branch":"ai/objective-first-repair-5f17a082daea","prNumber":3757,"nextAction":"Follow the existing canonical release to terminal proof.","mergeCommitSha":"807dd8278422d907c3ea682717cffdfc574e4584","branchDeletedAfterMerge":true,"correctiveGenerationCreated":false},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-25T19:12:14.419717+00:00","proof_gate":"forgejo_merged_pr_is_authoritative_source_lineage","source_sha":"807dd8278422d907c3ea682717cffdfc574e4584","external_id":"3757","receipt_type":"source_lineage_merged_pr_authoritative","idempotency_key":"mission:5f17a082-daea-4cc5-8735-e9deb4d2f979:merged-pr:3757:807dd8278422d907c3ea682717cffdfc574e4584","mission_step_id":"c176ab4c-a0da-40fb-9d28-80898a31631b","command_center_event_id":"5f17a082-daea-4cc5-8735-e9deb4d2f979"},{"id":"bd78740d-a399-4dcd-9bc5-752849ff0a6b","source":"cc-execution","status":"recorded","payload":{"requestContract":{"valid":true,"intent":{"evidence":[],"confidence":null,"rawUtterance":"Repair only the two deterministic hard-safety test harness failures surfaced by exact-head Gate run #7407 on existing PR #2504. Preserve all runtime behavior and all other hardening changes.","wordingChanged":false,"canonicalIntent":"Repair only the two deterministic hard-safety test harness failures surfaced by exact-head Gate run #7407 on existing PR #2504. Preserve all runtime behavior and all other hardening changes.","resolutionStatus":"exact","uniqueResolution":true,"clarificationRequired":false},"source":"explicit","version":1,"outcomes":[{"id":"continuity-test","statement":"The release-continuity contract locates current function bodies robustly and proves monitoring cannot navigate while stale chunk recovery remains one-shot and route-preserving.","proofConditionIds":["proof-continuity"]},{"id":"tenant-test","statement":"The tenant-isolation contract executes the canonical tenant platform contract and shared application registry for representative sibling tenants.","proofConditionIds":["proof-tenant"]}],"objective":"Repair only the two deterministic hard-safety test harness failures surfaced by exact-head Gate run #7407 on existing PR #2504. Preserve all runtime behavior and all other hardening changes.","constraints":[{"id":"no-runtime-change","statement":"Do not change production runtime code to satisfy these test harness fixes.","proofConditionIds":["proof-continuity","proof-tenant"]},{"id":"same-pr","statement":"Use only mission eb6d99ed-d64f-4d35-97cc-09f797e67c3c and PR #2504.","proofConditionIds":["proof-continuity","proof-tenant"]}],"terminalPolicy":"all_required_proof_conditions_satisfied_after_live_release","proofConditions":[{"id":"proof-continuity","kind":"repository","claim":"Continuity regression test uses real current function boundaries and retains non-navigation plus one-shot route-preserving assertions.","route":"src/__tests__/contracts/frontend-release-continuity.contract.test.ts","roleRef":null,"userRef":null,"required":true,"expectedText":"functionBlock","targetedActions":[],"allowedReleaseTargets":[],"requiredReleaseTargets":[]},{"id":"proof-tenant","kind":"repository","claim":"Tenant isolation test resolves the canonical tenant-platform-contract TypeScript module explicitly and retains sibling route/branding/app/storage isolation assertions.","route":"src/__tests__/contracts/tenant-isolation-hard-safety.contract.test.ts","roleRef":null,"userRef":null,"required":true,"expectedText":"tenant-platform-contract.ts","targetedActions":[],"allowedReleaseTargets":[],"requiredReleaseTargets":[]}],"validationErrors":[]},"requestContractHash":"e744a80321bc91e28fed1566d22cf2fc64ad0264e0f54f0706bc8cc240d0203f","requestContractRevision":8,"previousRequestContractHash":"dc65e4fed30346d42a173520705b6ca41909862f73a93966386cd54d9489e6bb"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-12T16:30:57.351554+00:00","proof_gate":"request_contract_revision_recorded","source_sha":null,"external_id":null,"receipt_type":"request_contract_revision","idempotency_key":"mission:eb6d99ed-d64f-4d35-97cc-09f797e67c3c:request-contract:e744a80321bc91e28fed1566d22cf2fc64ad0264e0f54f0706bc8cc240d0203f","mission_step_id":"8ec2b564-cc5d-427a-9229-c0836013a001","command_center_event_id":"eb6d99ed-d64f-4d35-97cc-09f797e67c3c"},{"id":"bd7908b7-48c0-4d56-8c6b-0bd518238d63","source":"owner_authorized_full_backlog_cleanup","status":"recorded","payload":{"category":"pcg_website","disposition":"superseded_execution_attempt","previousStatus":"blocked","sourcePreserved":true,"noCompletionClaim":true,"recoveryPortfolioId":"fafb1a05-f46c-198b-510b-ca6d77c6eac9"},"tenant_id":"9602e177-0cbb-496c-bdf5-2fbc93f1b859","created_at":"2026-10-11T16:14:39.646808+00:00","proof_gate":"source_objective_preserved_in_existing_mission_ledger","source_sha":null,"external_id":null,"receipt_type":"owner_backlog_disposition","idempotency_key":"owner-full-backlog-cleanup-20261011:f1e53bcd-1ff5-4506-b02a-4f2ebe15759a","mission_step_id":null,"command_center_event_id":"f1e53bcd-1ff5-4506-b02a-4f2ebe15759a"},{"id":"bd7a85d0-5ffe-4163-9e32-04bac536e9d3","source":"cc-execution","status":"recorded","payload":{"requestContract":{"valid":true,"intent":{"evidence":[],"confidence":null,"rawUtterance":"Reconcile the completed release for the existing standalone-app/bootstrap mission and finish live proof. PR #2084 is merged at 752729e0fb72387ad2ce6d27bdb12e3e492f7990. Forgejo release run 6204 succeeded; Cloudflare production version 5999f5bc-d9ed-47ee-982a-a8d6c6daa0de is at 100% and exact-artifact verification passed on knocklaunch.app and app.knocklaunch.app; migration 20260907170500_first_class_application_routes_bootstrap.sql was applied and verified. Database truth now shows 29 catalog apps, 29 unique non-null standalone paths, zero tenant-user apps missing login paths, minimum bootstrap version 1, zero missing route adapters, and preserved Big Papi/Curri app enablement. Complete claim-matched runtime proof for the standalone routes without making any source or data mutations.","wordingChanged":false,"canonicalIntent":"Reconcile the completed release for the existing standalone-app/bootstrap mission and finish live proof. PR #2084 is merged at 752729e0fb72387ad2ce6d27bdb12e3e492f7990. Forgejo release run 6204 succeeded; Cloudflare production version 5999f5bc-d9ed-47ee-982a-a8d6c6daa0de is at 100% and exact-artifact verification passed on knocklaunch.app and app.knocklaunch.app; migration 20260907170500_first_class_application_routes_bootstrap.sql was applied and verified. Database truth now shows 29 catalog apps, 29 unique non-null standalone paths, zero tenant-user apps missing login paths, minimum bootstrap version 1, zero missing route adapters, and preserved Big Papi/Curri app enablement. Complete claim-matched runtime proof for the standalone routes without making any source or data mutations.","resolutionStatus":"exact","uniqueResolution":true,"clarificationRequired":false},"source":"explicit","version":1,"outcomes":[{"id":"standalone-app-contract","statement":"Every cataloged KnockLaunch app has a unique canonical standalone route and bootstrap contract.","proofConditionIds":["repo"]},{"id":"tenant-installation-boundary","statement":"Standalone tenant-user apps only render for eligible tenants where that app is actually installed and enabled.","proofConditionIds":["repo"]},{"id":"public-app-route","statement":"Customer-public catalog apps such as Progress resolve through their standalone path to their canonical public owner.","proofConditionIds":["repo"]},{"id":"proposal-editor-first-class","statement":"Proposal Editor is a standalone tenant-specific app; Big Papi is only its flagship profile, not the universal renderer.","proofConditionIds":["proposal-editor-route"]}],"objective":"Reconcile the completed release for the existing standalone-app/bootstrap mission and finish live proof. PR #2084 is merged at 752729e0fb72387ad2ce6d27bdb12e3e492f7990. Forgejo release run 6204 succeeded; Cloudflare production version 5999f5bc-d9ed-47ee-982a-a8d6c6daa0de is at 100% and exact-artifact verification passed on knocklaunch.app and app.knocklaunch.app; migration 20260907170500_first_class_application_routes_bootstrap.sql was applied and verified. Database truth now shows 29 catalog apps, 29 unique non-null standalone paths, zero tenant-user apps missing login paths, minimum bootstrap version 1, zero missing route adapters, and preserved Big Papi/Curri app enablement. Complete claim-matched runtime proof for the standalone routes without making any source or data mutations.","constraints":[{"id":"one-pr","statement":"Keep the repair on existing PR #2084 / branch ai/standalone-app-routes-bootstrap-0907; do not create a duplicate branch or PR.","proofConditionIds":["repo","proposal-editor-route","mail-route","calendar-route","booking-route","call-center-route","vertical-route"]},{"id":"preserve-compatibility","statement":"Existing tenant-specific routes remain compatibility paths.","proofConditionIds":["repo","proposal-editor-route","mail-route","calendar-route","booking-route","call-center-route","vertical-route"]},{"id":"release-scope","statement":"Release only affected frontend and Supabase migration owners.","proofConditionIds":["repo","proposal-editor-route","mail-route","calendar-route","booking-route","call-center-route","vertical-route"]}],"terminalPolicy":"all_required_proof_conditions_satisfied_after_live_release","proofConditions":[{"id":"repo","kind":"repository","claim":"PR #2084 contains the canonical registry, standalone resolver, tenant installation guard, public Progress route, bootstrap migration, and contract tests.","route":null,"roleRef":null,"userRef":null,"required":true,"expectedText":null,"targetedActions":[],"allowedReleaseTargets":[],"requiredReleaseTargets":[]},{"id":"proposal-editor-route","kind":"runtime","claim":"The standalone Proposal Editor route is live and tenant-specific.","route":"/proposal-editor","roleRef":null,"userRef":null,"required":true,"expectedText":"Proposal Editor","targetedActions":[],"allowedReleaseTargets":[],"requiredReleaseTargets":[]},{"id":"mail-route","kind":"runtime","claim":"The standalone Mail route is live.","route":"/mail","roleRef":null,"userRef":null,"required":true,"expectedText":null,"targetedActions":[],"allowedReleaseTargets":[],"requiredReleaseTargets":[]},{"id":"calendar-route","kind":"runtime","claim":"The standalone Calendar route is live.","route":"/calendar","roleRef":null,"userRef":null,"required":true,"expectedText":null,"targetedActions":[],"allowedReleaseTargets":[],"requiredReleaseTargets":[]},{"id":"booking-route","kind":"runtime","claim":"The standalone Booking route is live.","route":"/booking","roleRef":null,"userRef":null,"required":true,"expectedText":null,"targetedActions":[],"allowedReleaseTargets":[],"requiredReleaseTargets":[]},{"id":"call-center-route","kind":"runtime","claim":"The standalone Call Center route remains live.","route":"/call-center","roleRef":null,"userRef":null,"required":true,"expectedText":null,"targetedActions":[],"allowedReleaseTargets":[],"requiredReleaseTargets":[]},{"id":"vertical-route","kind":"runtime","claim":"At least one standalone vertical-specific application route is live for an eligible installed tenant.","route":"/realtor-transaction-operations","roleRef":null,"userRef":null,"required":true,"expectedText":null,"targetedActions":[],"allowedReleaseTargets":[],"requiredReleaseTargets":[]}],"validationErrors":[]},"requestContractHash":"b0bbf8f7fa06c61410a4634ea24a7bc756eaca2a8d9ea9da6cf0de73bf462e0f","requestContractRevision":4,"previousRequestContractHash":"b3148719d49695f46bce7cd79b50e7a95c46b892ccc6a7e5661df23d397a2da0"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-07T17:22:28.556599+00:00","proof_gate":"request_contract_revision_recorded","source_sha":null,"external_id":null,"receipt_type":"request_contract_revision","idempotency_key":"mission:bc8b7d18-a45c-473d-939b-531ae27c4450:request-contract:b0bbf8f7fa06c61410a4634ea24a7bc756eaca2a8d9ea9da6cf0de73bf462e0f","mission_step_id":"70ca9ebc-92a3-4168-ad06-b30a2d332696","command_center_event_id":"bc8b7d18-a45c-473d-939b-531ae27c4450"},{"id":"bd7b4a81-828b-4acc-a22a-2fd00fbc519a","source":"cc-execution","status":"pending","payload":{"ok":true,"jobId":"1cea0b90-cbc7-44da-97b2-aef7316d93a1","phase":"universal_visual_witness_supervised","branch":"ai/objective-first-repair-b79255f67e21","reason":null,"status":"pending","metrics":{"receiptBytes":173093,"releaseCount":0,"toolCallCount":83,"repeatedCallCount":55,"executorlessWaitMs":2431803,"firstUsefulResultAt":"2026-10-04T09:22:12.147Z","recoveryAttemptCount":46,"ownerInterruptionCount":0},"version":null,"prNumber":4718,"terminal":false,"missionId":"b79255f6-7e21-493b-90ff-5552f473f906","operation":"visual_proof_started","proofGate":"universal_visual_witness_pending","sourceSha":"2e8efad698df6ae0a2071146284fc51edd609ca6","timingsMs":{"queue":945,"total":971,"execution":26},"nextAction":"Execution is pending; poll inspect_route_status only when fresh progress is expected, or cancel with inspect_route_cancel.","receiptRef":{"mode":"full","missionId":"b79255f6-7e21-493b-90ff-5552f473f906"},"performance":null,"deploymentId":"forgejo-main-2e8efad698df","releaseState":"verified","visualWitness":{"role":"GodMode","jobId":"1cea0b90-cbc7-44da-97b2-aef7316d93a1","tenant":"pcg","runnerUrl":"https://paul-witness.knocklaunch.app","runnerLane":"paul","attemptsUsed":0,"supervisorId":"1cea0b90-cbc7-44da-97b2-aef7316d93a1","failureReason":null,"observedRoute":null,"runnerVersion":null,"attemptLineage":[],"missionOutcome":null,"requestedRoute":"/pcg/this-route-does-not-exist","runnerSourceSha":null,"selectedViewports":["desktop"],"checkpointAccounting":null,"correctiveGeneration":1,"restartReplayHistory":[]},"workflowRunId":15070,"releaseTargets":{"frontend":true,"migrations":false,"ccExecution":false,"supabaseEdge":false,"edgeFunctionSlugs":[]},"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","pendingProofKinds":["repository","interaction","visual"],"verificationState":"failed","workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":1767,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true,"requestContractState":"pending"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-04T10:02:46.310281+00:00","proof_gate":"post_release_visual_proof_started","source_sha":"2e8efad698df6ae0a2071146284fc51edd609ca6","external_id":"1cea0b90-cbc7-44da-97b2-aef7316d93a1","receipt_type":"visual_proof_started","idempotency_key":"mission:b79255f6-7e21-493b-90ff-5552f473f906:visual-start:1cea0b90-cbc7-44da-97b2-aef7316d93a1","mission_step_id":"cee8ad0a-7578-4a93-b226-981e3d96d84e","command_center_event_id":"b79255f6-7e21-493b-90ff-5552f473f906"},{"id":"bd80300f-7564-4b00-b09b-8c9ae58a23d0","source":"cc-execution-autonomous-supervisor","status":"advanced","payload":{"trigger":"cloudflare_cron","leaseEpoch":8,"afterSignature":"{\"stateMachineVersion\":1,\"phase\":\"release\",\"ownerFacingState\":null,\"latest\":null,\"activeStep\":null,\"nextStep\":null,\"nextSafeAction\":{\"action\":\"reconcile_pull_request\",\"lane\":\"cc-execution\",\"reason\":\"pull_request_requires_merge_reconciliation\",\"automationAllowed\":true,\"ownerActionRequired\":false,\"capability\":\"light-control-plane\",\"resumeFromCheckpoint\":null,\"handoff\":null},\"executionOwnership\":{\"active\":false,\"state\":\"waiting\",\"executor\":null,\"lane\":\"cc-execution\",\"nextAction\":\"reconcile_pull_request\",\"recoveryOwner\":\"cc-execution\",\"capability\":\"light-control-plane\",\"resumeFromCheckpoint\":null,\"handoff\":null},\"acceptance\":{\"total\":1,\"verified\":0,\"pending\":1,\"percent\":0,\"satisfied\":false,\"verifiedIds\":[],\"pendingIds\":[\"proof-production\"]},\"stall\":{\"stalled\":false,\"reason\":\"within_deadline\",\"step\":null,\"deadlineAt\":null,\"recoveryAction\":null},\"blocker\":\"forgejo_exact_source\",\"terminal\":false,\"branch\":\"ai/fast-ui-mutate-and-ship-now-apply-this-exact-pcg-2da1e7b2\",\"prNumber\":5203,\"sourceSha\":\"2b57df054966516cba427d986810cbcd97979d5c\",\"deploymentId\":\"forgejo-main-2b57df054966\"}","beforeSignature":"{\"stateMachineVersion\":1,\"phase\":\"pull_request\",\"ownerFacingState\":null,\"latest\":null,\"activeStep\":null,\"nextStep\":null,\"nextSafeAction\":{\"action\":\"reconcile_pull_request\",\"lane\":\"cc-execution\",\"reason\":\"pull_request_requires_merge_reconciliation\",\"automationAllowed\":true,\"ownerActionRequired\":false,\"capability\":\"light-control-plane\",\"resumeFromCheckpoint\":null,\"handoff\":null},\"executionOwnership\":{\"active\":false,\"state\":\"waiting\",\"executor\":null,\"lane\":\"cc-execution\",\"nextAction\":\"reconcile_pull_request\",\"recoveryOwner\":\"cc-execution\",\"capability\":\"light-control-plane\",\"resumeFromCheckpoint\":null,\"handoff\":null},\"acceptance\":{\"total\":1,\"verified\":0,\"pending\":1,\"percent\":0,\"satisfied\":false,\"verifiedIds\":[],\"pendingIds\":[\"proof-production\"]},\"stall\":{\"stalled\":false,\"reason\":\"within_deadline\",\"step\":null,\"deadlineAt\":null,\"recoveryAction\":null},\"blocker\":null,\"terminal\":false,\"branch\":\"ai/fast-ui-mutate-and-ship-now-apply-this-exact-pcg-2da1e7b2\",\"prNumber\":5203,\"sourceSha\":\"2b57df054966516cba427d986810cbcd97979d5c\",\"deploymentId\":\"forgejo-main-2b57df054966\"}","transitionBrain":"mission_status_deterministic_supervisor"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-06T20:16:23.805319+00:00","proof_gate":"deterministic_semantic_transition_journaled","source_sha":null,"external_id":null,"receipt_type":"deterministic_supervisor_transition","idempotency_key":"mission:d2d608ec-8dd6-4701-8b13-2db3e67aab2e:deterministic-transition:{\"stateMachineVersion\":1,\"phase\":\"pull_request\",\"ownerFacingState\":null,\"latest\":null,\"activeStep\":null,\"nextStep\":null,\"nextSafeAction\":{\"action\":\"reconcile_pull_request\",\"lane\":\"cc-execution\",\"reason\":\"pull_request_requires_merge_reconciliation\",\"automationAllowed\":true,\"ownerActionRequired\":false,\"capability\":\"light-control-plane\",\"resumeFromCheckpoint\":null,\"handoff\":null},\"executionOwnership\":{\"active\":false,\"state\":\"wait","mission_step_id":"027aab8e-0c21-46ec-8211-d1ddc1ea037f","command_center_event_id":"d2d608ec-8dd6-4701-8b13-2db3e67aab2e"},{"id":"bd80b660-42e4-41e8-80ec-82641bea8fd7","source":"durable-mission-ledger","status":"pending","payload":{"sourceSha":"ac663fcf7052e314fac920ee8da3394da760012a","requestContractProof":{"legacy":false,"present":true,"outcomes":[{"id":"record","satisfied":false,"statement":"Existing PR #2416 squash-merges the Golden Restore Point metadata into main after Gate 7162.","proofConditionIds":["repository-proof"]},{"id":"frozen","satisfied":false,"statement":"The restore point targets 1b2110b7a8988859ec73184d299584ce4e2490d8 with Command Center 1.58.107-exact-green-no-prearm and normal control-plane mutation remains frozen by default.","proofConditionIds":["repository-proof","frozen-proof"]}],"satisfied":false,"constraints":[{"id":"same-pr","satisfied":false,"statement":"Use only existing PR #2416, change no product/runtime target, preserve database records and migration history, and do not run Visual Witness.","proofConditionIds":["repository-proof","frozen-proof"]}],"contractHash":"a9383c18ba04a01539c0e186623a979fccb2023c274602497a690d985d20fdf6","releaseBound":true,"witnessBound":false,"visualRequested":false,"visualSatisfied":true,"conditionResults":[{"id":"repository-proof","kind":"repository","evidence":{"repositoryProofGate":null,"requestContractHash":"a9383c18ba04a01539c0e186623a979fccb2023c274602497a690d985d20fdf6","repositoryProofStatus":"required","repositoryProofSourceSha":null},"required":true,"satisfied":false},{"id":"frozen-proof","kind":"runtime","evidence":{"releaseState":"verified","activeReleaseTargets":[],"releaseRequestContractHash":"a9383c18ba04a01539c0e186623a979fccb2023c274602497a690d985d20fdf6"},"required":true,"satisfied":false}],"validationErrors":[],"pendingProofKinds":["repository","runtime"],"activeReleaseTargets":[]},"authoritativeMissionRefresh":true,"evaluatedRequestContractRevision":2},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-11T20:04:27.556208+00:00","proof_gate":"request_contract_pending","source_sha":"ac663fcf7052e314fac920ee8da3394da760012a","external_id":null,"receipt_type":"request_contract_reconciliation","idempotency_key":"mission:5ad2c3fd-60f9-44ea-a5ff-11518064cccd:request-contract:a9383c18ba04a01539c0e186623a979fccb2023c274602497a690d985d20fdf6:ac663fcf7052e314fac920ee8da3394da760012a:pending:repository,runtime","mission_step_id":"2206f395-b3f2-4802-b731-b84b24e399cc","command_center_event_id":"5ad2c3fd-60f9-44ea-a5ff-11518064cccd"},{"id":"bd83140a-016c-47ca-b28c-9d99f7b7125f","source":"cc-execution","status":"synthesis_required","payload":{"ok":true,"jobId":null,"phase":"objective_received","branch":null,"reason":null,"status":"synthesis_required","metrics":{"receiptBytes":0,"releaseCount":0,"toolCallCount":0,"repeatedCallCount":0,"executorlessWaitMs":0,"firstUsefulResultAt":null,"recoveryAttemptCount":0,"ownerInterruptionCount":0},"version":"1.67.3-cross-conversation-lean-queue","prNumber":null,"terminal":false,"missionId":"81208071-76bc-4839-8d5a-a7926e5318b1","operation":"execute_mission","proofGate":"repair_mission_synthesis_ready","sourceSha":null,"timingsMs":{"gateMs":0,"proofMs":0,"handlerMs":2789,"releaseMs":0,"mutationMs":0,"repositoryMs":0,"missionSetupMs":513,"providerAuthMs":0,"ledgerPrepareMs":513,"ledgerReconcileMs":0,"lineageReconcileMs":0,"resolvePreflightMs":513,"authoritativeLedgerMs":0,"ledgerAsyncDispatchMs":0,"totalSynchronousLedgerMs":513,"asyncBookkeepingDispatchMs":0,"ledgerAuthoritativeCommitMs":0},"nextAction":"Synthesize exact mutation from the resolved authoritative source targets and continue this same mission.","receiptRef":{"mode":"full","missionId":"81208071-76bc-4839-8d5a-a7926e5318b1"},"performance":null,"deploymentId":null,"releaseState":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","pendingProofKinds":[],"verificationState":null,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":3129,"likelyAffectedFiles":["src/PrivateAppShell.tsx","src/PcgAppShell.tsx"],"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true,"requestContractState":"pending"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-06T17:19:31.053905+00:00","proof_gate":"repair_mission_synthesis_ready","source_sha":null,"external_id":null,"receipt_type":"execute_mission","idempotency_key":"mission:81208071-76bc-4839-8d5a-a7926e5318b1:execute_mission:repair_mission_synthesis_ready:current-generation","mission_step_id":"ba7df782-e62f-4411-8e2f-73d91d848eae","command_center_event_id":"81208071-76bc-4839-8d5a-a7926e5318b1"},{"id":"bd832eee-02d4-4c16-a241-53639473036b","source":"cc-execution","status":"waiting","payload":{"body":{"ship":true,"files":[{"path":"supabase/functions/tenant-provider-connections/index.ts","content":"import {createClient} from 'https://esm.sh/@supabase/supabase-js@2.45.0';\nimport {decryptSecret,encryptSecret} from '../_shared/tenantCrypto.ts';\n\nconst APP_BASE='https://app.knocklaunch.app';\nconst SUPABASE_URL=Deno.env.get('SUPABASE_URL')||'';\nconst CALLBACK_URL=`${SUPABASE_URL}/functions/v1/tenant-provider-connections?oauth=callback`;\nconst ORIGINS=new Set(['https://knocklaunch.app','https://app.knocklaunch.app']);\ntype Key='google_workspace'|'google_search_console'|'microsoft_365'|'monday'|'quickbooks'|'slack'|'dropbox'|'hubspot'|'docusign'|'ebay'|'stripe';\ntype Def={key:Key;label:string;category:string;caps:string[];permissions:string[];clientIdEnv:string;clientSecretEnv:string;redirectUriEnv?:string;authUrl:string;tokenUrl:string;revokeUrl?:string;scopes:string[];delimiter:' '|',';pkce:boolean;tokenAuth:'body'|'basic'};\ntype Token={access_token:string;refresh_token?:string|null;expires_at?:string|null;token_type?:string|null;scope?:string|null;metadata?:Record<string,unknown>};\nconst PRIVATE_OWNER_TENANT_ID='a3ffa31f-0c88-4fdd-b872-051db013ca3e';\nconst PRIVATE_PROVIDER_KEY:Key='google_search_console';\nconst P:Record<Key,Def>={\n google_workspace:{key:'google_workspace',label:'Google Workspace',category:'Calendar, files & Gmail',caps:['Calendar events','Drive files used with KnockLaunch','Gmail inbox, search & sending'],permissions:['View and manage calendar events','Use only Drive files opened or created through KnockLaunch','Read, organize and send email in the connected Gmail account','Basic account identity'],clientIdEnv:'GOOGLE_WORKSPACE_CLIENT_ID',clientSecretEnv:'GOOGLE_WORKSPACE_CLIENT_SECRET',authUrl:'https://accounts.google.com/o/oauth2/v2/auth',tokenUrl:'https://oauth2.googleapis.com/token',revokeUrl:'https://oauth2.googleapis.com/revoke',scopes:['openid','email','profile','https://www.googleapis.com/auth/calendar.events','https://www.googleapis.com/auth/calendar.calendarlist.readonly','https://www.googleapis.com/auth/drive.file','https://www.googleapis.com/auth/gmail.modify','https://www.googleapis.com/auth/gmail.send'],delimiter:' ',pkce:true,tokenAuth:'body'},\n google_search_console:{key:'google_search_console',label:'Google Search Console',category:'Owner SEO',caps:['Search performance','Search Console properties','Sitemaps','URL inspection'],permissions:['Read Search Console performance and property status','Inspect indexing status for registered owner URLs','Basic account identity'],clientIdEnv:'GOOGLE_WORKSPACE_CLIENT_ID',clientSecretEnv:'GOOGLE_WORKSPACE_CLIENT_SECRET',authUrl:'https://accounts.google.com/o/oauth2/v2/auth',tokenUrl:'https://oauth2.googleapis.com/token',revokeUrl:'https://oauth2.googleapis.com/revoke',scopes:['openid','email','profile','https://www.googleapis.com/auth/webmasters.readonly'],delimiter:' ',pkce:true,tokenAuth:'body'},\n microsoft_365:{key:'microsoft_365',label:'Microsoft 365',category:'Calendar',caps:['Microsoft 365 calendar'],permissions:['Basic Microsoft account identity','View and manage calendar events','Offline access for scheduled calendar sync'],clientIdEnv:'MICROSOFT_365_CLIENT_ID',clientSecretEnv:'MICROSOFT_365_CLIENT_SECRET',authUrl:'https://login.microsoftonline.com/common/oauth2/v2.0/authorize',tokenUrl:'https://login.microsoftonline.com/common/oauth2/v2.0/token',scopes:['openid','profile','email','offline_access','User.Read','Calendars.ReadWrite'],delimiter:' ',pkce:true,tokenAuth:'body'},\n monday:{key:'monday',label:'monday.com',category:'Work management',caps:['Boards','Workspaces','Users'],permissions:['Read account identity','Read and update boards','Read workspaces','Read users'],clientIdEnv:'MONDAY_CLIENT_ID',clientSecretEnv:'MONDAY_CLIENT_SECRET',authUrl:'https://auth.monday.com/oauth2/authorize',tokenUrl:'https://auth.monday.com/oauth_ms/oauth/token',revokeUrl:'https://auth.monday.com/oauth_ms/oauth/revoke',scopes:['me:read','boards:read','boards:write','workspaces:read','users:read'],delimiter:' ',pkce:true,tokenAuth:'body'},\n quickbooks:{key:'quickbooks',label:'QuickBooks Online',category:'Accounting',caps:['Accounting data'],permissions:['Read and update the connected QuickBooks company accounting data'],clientIdEnv:'QUICKBOOKS_CLIENT_ID',clientSecretEnv:'QUICKBOOKS_CLIENT_SECRET',authUrl:'https://appcenter.intuit.com/connect/oauth2',tokenUrl:'https://oauth.platform.intuit.com/oauth2/v1/tokens/bearer',revokeUrl:'https://developer.api.intuit.com/v2/oauth2/tokens/revoke',scopes:['com.intuit.quickbooks.accounting'],delimiter:' ',pkce:false,tokenAuth:'basic'},\n slack:{key:'slack',label:'Slack',category:'Team messaging',caps:['Channel list','KnockLaunch notifications'],permissions:['View channel names','Post messages as the KnockLaunch app'],clientIdEnv:'SLACK_CLIENT_ID',clientSecretEnv:'SLACK_CLIENT_SECRET',authUrl:'https://slack.com/oauth/v2/authorize',tokenUrl:'https://slack.com/api/oauth.v2.access',revokeUrl:'https://slack.com/api/auth.revoke',scopes:['channels:read','chat:write'],delimiter:',',pkce:false,tokenAuth:'body'},\n dropbox:{key:'dropbox',label:'Dropbox',category:'Files',caps:['KnockLaunch app-folder files'],permissions:['Read account identity','Read and write files inside the Dropbox app folder configured for KnockLaunch'],clientIdEnv:'DROPBOX_CLIENT_ID',clientSecretEnv:'DROPBOX_CLIENT_SECRET',authUrl:'https://www.dropbox.com/oauth2/authorize',tokenUrl:'https://api.dropboxapi.com/oauth2/token',revokeUrl:'https://api.dropboxapi.com/2/auth/token/revoke',scopes:['account_info.read','files.metadata.read','files.content.read','files.content.write'],delimiter:' ',pkce:true,tokenAuth:'basic'},\n hubspot:{key:'hubspot',label:'HubSpot',category:'CRM',caps:['Contacts'],permissions:['Read contacts','Create and update contacts'],clientIdEnv:'HUBSPOT_CLIENT_ID',clientSecretEnv:'HUBSPOT_CLIENT_SECRET',authUrl:'https://app.hubspot.com/oauth/authorize',tokenUrl:'https://api.hubapi.com/oauth/v3/token',scopes:['oauth','crm.objects.contacts.read','crm.objects.contacts.write'],delimiter:' ',pkce:false,tokenAuth:'body'},\n docusign:{key:'docusign',label:'DocuSign',category:'E-signature',caps:['Envelope signing'],permissions:['Create and manage signature envelopes','Maintain authorized background access until disconnected'],clientIdEnv:'DOCUSIGN_CLIENT_ID',clientSecretEnv:'DOCUSIGN_CLIENT_SECRET',authUrl:'https://account.docusign.com/oauth/auth',tokenUrl:'https://account.docusign.com/oauth/token',scopes:['signature','extended'],delimiter:' ',pkce:false,tokenAuth:'basic'},\n ebay:{key:'ebay',label:'eBay',category:'Marketplace',caps:['Inventory items & locations','Offers & published listings','Orders','Fulfillment & shipment tracking','Seller business policies','Marketplace notifications'],permissions:['Authorize the connected eBay seller account','Read and manage inventory and listings','Read orders and manage fulfillment','Read seller account policies','Manage marketplace notification subscriptions'],clientIdEnv:'EBAY_CLIENT_ID',clientSecretEnv:'EBAY_CLIENT_SECRET',redirectUriEnv:'EBAY_RUNAME',authUrl:'https://auth.ebay.com/oauth2/authorize',tokenUrl:'https://api.ebay.com/identity/v1/oauth2/token',scopes:['https://api.ebay.com/oauth/api_scope/sell.inventory','https://api.ebay.com/oauth/api_scope/sell.fulfillment','https://api.ebay.com/oauth/api_scope/sell.account','https://api.ebay.com/oauth/api_scope/commerce.notification.subscription'],delimiter:' ',pkce:false,tokenAuth:'basic'},\n stripe:{key:'stripe',label:'Stripe',category:'Payments',caps:['Customers','Payment intents & payments','Invoices','Products & prices','Refunds','Subscriptions','Balance & payouts','Webhook-driven reconciliation'],permissions:['Authorize the connected Stripe account through Stripe Connect','Manage billing and payment lifecycle data for the connected business','Keep privileged Stripe access server-side and tenant-scoped'],clientIdEnv:'STRIPE_CONNECT_CLIENT_ID',clientSecretEnv:'STRIPE_CONNECT_CLIENT_SECRET',authUrl:'https://connect.stripe.com/oauth/authorize',tokenUrl:'https://connect.stripe.com/oauth/token',scopes:['read_write'],delimiter:' ',pkce:false,tokenAuth:'body'}\n};\nconst PUBLIC_OAUTH=(Object.keys(P) as Key[]).filter(k=>k!==PRIVATE_PROVIDER_KEY);\nconst MUSE={key:'meta_muse',label:'Meta Muse',category:'AI & Assistants',caps:['Calendar & events','Inventory','Customers','Tasks & notes','Proposals & invoices','Pop-up planning','Workspace search'],permissions:['Use only the connected tenant workspace','Respect current KnockLaunch user and tenant authorization','Destructive or outbound actions still require KnockLaunch approval controls']} as const;\nconst MUSE_ROLLOUT_SLUGS=new Set(['big-papis']);\nfunction cors(req:Request){const o=String(req.headers.get('Origin')||'');return{...(ORIGINS.has(o)?{'Access-Control-Allow-Origin':o}:{}),'Access-Control-Allow-Headers':'authorization, x-client-info, apikey, content-type','Access-Control-Allow-Methods':'POST, OPTIONS','Vary':'Origin'}}\nfunction j(req:Request,status:number,body:unknown){return new Response(JSON.stringify(body),{status,headers:{...cors(req),'Content-Type':'application/json','Cache-Control':'no-store'}})}\nfunction safePath(v:unknown){const s=String(v||'');if(!s.startsWith('/')||s.startsWith('//')||s.includes('://'))return'/connections';return s}\nfunction ret(path:string,provider:string,status:'connected'|'error'){const u=new URL(safePath(path),APP_BASE);u.searchParams.set('connection',status);u.searchParams.set('provider',provider);return u.toString()}\nfunction cfg(d:Def){const clientId=Deno.env.get(d.clientIdEnv)||'',clientSecret=Deno.env.get(d.clientSecretEnv)||'',redirectUri=d.redirectUriEnv?(Deno.env.get(d.redirectUriEnv)||''):CALLBACK_URL;return{clientId,clientSecret,redirectUri,configured:Boolean(clientId&&clientSecret&&redirectUri)}}\nfunction b64u(bytes:Uint8Array){let b='';for(const x of bytes)b+=String.fromCharCode(x);return btoa(b).replace(/\\+/g,'-').replace(/\\//g,'_').replace(/=+$/,'')}\nasync function sha(v:string){return b64u(new Uint8Array(await crypto.subtle.digest('SHA-256',new TextEncoder().encode(v))))}\nasync function userId(req:Request){const h=req.headers.get('Authorization')||'';if(!h.startsWith('Bearer '))throw new Error('Unauthorized');const c=createClient(SUPABASE_URL,Deno.env.get('SUPABASE_ANON_KEY')||'',{global:{headers:{Authorization:h}}});const {data,error}=await c.auth.getUser(h.slice(7));if(error||!data.user?.id)throw new Error('Unauthorized');return data.user.id}\nasync function authorize(admin:any,uid:string,tid:string){const [o,a]=await Promise.all([admin.rpc('is_tenant_owner_for',{_user_id:uid,_tenant_id:tid}),admin.rpc('is_system_admin',{_user_id:uid})]);if(o.error)throw o.error;if(a.error)throw a.error;if(!o.data&&!a.data)throw new Error('Tenant owner or admin required')}\nasync function authorizeTenantMember(admin:any,uid:string,tid:string){const [o,a,m]=await Promise.all([admin.rpc('is_tenant_owner_for',{_user_id:uid,_tenant_id:tid}),admin.rpc('is_system_admin',{_user_id:uid}),admin.from('user_tenant_memberships').select('user_id,status').eq('user_id',uid).eq('tenant_id',tid).maybeSingle()]);if(o.error)throw o.error;if(a.error)throw a.error;if(m.error)throw m.error;const activeMember=Boolean(m.data?.user_id)&&(!m.data?.status||m.data.status==='active');if(!o.data&&!a.data&&!activeMember)throw new Error('Active tenant membership required')}\nasync function resolveConnectionSubject(admin:any,operatorUid:string,tid:string,requested:unknown){const targetUid=String(requested||operatorUid).trim()||operatorUid;if(targetUid===operatorUid)return{targetUserId:operatorUid,support:false};const a=await admin.rpc('is_system_admin',{_user_id:operatorUid});if(a.error)throw a.error;if(!a.data)throw new Error('GodMode support access required');const m=await admin.from('user_tenant_memberships').select('user_id,status').eq('tenant_id',tid).eq('user_id',targetUid).maybeSingle();if(m.error)throw m.error;if(!m.data?.user_id||(m.data.status&&m.data.status!=='active'))throw new Error('Projected user is not an active tenant member');return{targetUserId:targetUid,support:true}}\nfunction visibleToConnectionSubject(metadata:any,targetUid:string){const bound=String(metadata?.bound_user_id||'').trim();return !bound||bound===targetUid}\nasync function auditSupportAction(admin:any,tid:string,operatorUid:string,targetUid:string,action:string,provider:string,connectionId?:string|null){if(operatorUid===targetUid)return;const now=new Date().toISOString();const{error}=await admin.from('activity_timeline').insert({tenant_org_id:tid,user_id:operatorUid,activity_type:'godmode_connection_support',title:'GodMode connection support: '+action,metadata:{operator_user_id:operatorUid,projected_user_id:targetUid,provider,connection_id:connectionId||null,action},related_entity_type:'provider_connection',importance:'normal',is_system_generated:true,event_domain:'connections',source_channel:'godmode_support',source_system:'knocklaunch',source_record_type:'provider_connection',source_record_id:connectionId||provider,correlation_key:'godmode-connection:'+tid+':'+targetUid+':'+provider+':'+action+':'+Date.now(),actor_role:'GodMode',new_state:action,currency:'USD',recorded_at:now});if(error)throw error}\nasync function tenantSlug(admin:any,tid:string){const {data,error}=await admin.from('tenants').select('company_slug').eq('id',tid).maybeSingle();if(error)throw error;return String(data?.company_slug||'').trim().toLowerCase()}\nconst PCG_DEDICATED_CALENDAR_SCOPE='https://www.googleapis.com/auth/calendar.app.created';\nasync function providerScopes(admin:any,d:Def,tid:string){const scopes=[...d.scopes];if(d.key==='google_workspace'&&await tenantSlug(admin,tid)==='pcg')scopes.push(PCG_DEDICATED_CALENDAR_SCOPE);return Array.from(new Set(scopes))}\nasync function privateOwner(admin:any,uid:string,tid:string){if(tid!==PRIVATE_OWNER_TENANT_ID)throw new Error('Personal Knock Launch OS owner required');const {data}=await admin.from('tenants').select('owner_id').eq('id',tid).maybeSingle();const a=await admin.rpc('is_system_admin',{_user_id:uid});if(data?.owner_id!==uid&&!a.data)throw new Error('Personal Knock Launch OS owner required')}\nasync function readToken(admin:any,tid:string,key:Key){const {data,error}=await admin.from('tenant_provider_secrets').select('ciphertext,iv').eq('tenant_id',tid).eq('provider',key).maybeSingle();if(error)throw error;if(!data)return null;return JSON.parse(await decryptSecret(data.ciphertext,data.iv)) as Token}\nasync function write(admin:any,tid:string,uid:string,operatorUid:string,d:Def,t:Token){const e=await encryptSecret(JSON.stringify(t));let r=await admin.from('tenant_provider_secrets').upsert({tenant_id:tid,provider:d.key,ciphertext:e.ciphertext,iv:e.iv,key_version:1,verified_at:new Date().toISOString(),verification_error:null,created_by:uid},{onConflict:'tenant_id,provider'});if(r.error)throw r.error;r=await admin.from('tenant_provider_credentials').upsert({tenant_id:tid,provider:d.key,credential_ref:`db:tenant_provider_secrets:${d.key}`,credential_status:'active',last_verified_at:new Date().toISOString(),verification_notes:`${d.label} connected through OAuth.`,metadata:{capabilities:d.caps,granted_scopes:String(t.scope||d.scopes.join(d.delimiter)).split(/[ ,]+/).filter(Boolean),connected_by_user_id:uid,bound_user_id:uid,support_operator_user_id:operatorUid!==uid?operatorUid:null,provider_account_id:String(t.metadata?.realm_id||t.metadata?.team_id||t.metadata?.account_id||t.metadata?.user_id||'').trim()||null,...(t.metadata||{})},created_by:operatorUid},{onConflict:'tenant_id,provider'});if(r.error)throw r.error}\nasync function googleIdentity(accessToken:string){const res=await fetch('https://openidconnect.googleapis.com/v1/userinfo',{headers:{Authorization:`Bearer ${accessToken}`}});const data=await res.json().catch(()=>({}));if(!res.ok)throw new Error(String(data?.error_description||data?.error||'Google account identity could not be read.'));return{providerAccountId:String(data?.sub||'').trim(),email:String(data?.email||'').trim().toLowerCase(),name:String(data?.name||'').trim()}}\nasync function refreshGoogleWorkspaceToken(token:Token){if(!token?.refresh_token)return token;const d=P.google_workspace,c=cfg(d);if(!c.configured)return token;const p=new URLSearchParams({grant_type:'refresh_token',refresh_token:String(token.refresh_token),client_id:c.clientId,client_secret:c.clientSecret});const res=await fetch(d.tokenUrl,{method:'POST',headers:{'Content-Type':'application/x-www-form-urlencoded'},body:p});const x=await res.json().catch(()=>({}));if(!res.ok||!x.access_token)return token;return{...token,access_token:String(x.access_token),expires_at:x.expires_in?new Date(Date.now()+Number(x.expires_in)*1000).toISOString():token.expires_at,scope:x.scope||token.scope,refresh_token:token.refresh_token}}\nasync function hydrateGoogleAccountIdentity(admin:any,tid:string,row:any){const existingStable=String(row?.provider_account_id||'').trim(),existingEmail=String(row?.account_email||'').trim().toLowerCase();if(row?.credential_status!=='active'||!row?.ciphertext||!row?.iv)return row;if(row?.account_email&&row?.account_name&&existingStable&&existingStable!==existingEmail)return row;try{let token=JSON.parse(await decryptSecret(row.ciphertext,row.iv)) as Token;let identity:{providerAccountId:string;email:string;name:string};try{identity=await googleIdentity(token.access_token)}catch{token=await refreshGoogleWorkspaceToken(token);identity=await googleIdentity(token.access_token)}if(!identity.email||!identity.providerAccountId)return row;const encrypted=await encryptSecret(JSON.stringify(token));const tokenScopes=String(token.scope||'').split(/[ ,]+/).filter(Boolean);const grantedScopes=tokenScopes.length?tokenScopes:(Array.isArray(row.granted_scopes)?row.granted_scopes:Array.isArray(row?.metadata?.granted_scopes)?row.metadata.granted_scopes:[]);const actorUserId=row.actor_user_id||row?.metadata?.bound_user_id||row?.metadata?.connected_by_user_id||row.created_by;const metadata={...(row.metadata||{}),provider_account_id:identity.providerAccountId,account_email:identity.email,account_name:identity.name||row.account_name||null,granted_scopes:grantedScopes,bound_user_id:row?.metadata?.bound_user_id||actorUserId,connected_by_user_id:row?.metadata?.connected_by_user_id||actorUserId};const{data,error}=await admin.from('tenant_google_workspace_connections').update({provider_account_id:identity.providerAccountId,actor_user_id:actorUserId,granted_scopes:grantedScopes,account_email:identity.email,account_name:identity.name||null,metadata,ciphertext:encrypted.ciphertext,iv:encrypted.iv,updated_at:new Date().toISOString()}).eq('id',row.id).eq('tenant_id',tid).select('id,provider_account_id,actor_user_id,granted_scopes,account_email,account_name,connection_role,is_primary,metadata,credential_status,verified_at,created_at,ciphertext,iv,key_version,created_by').single();if(error)return row;return data||row}catch{return row}}\nasync function googleAccounts(admin:any,tid:string){const{data,error}=await admin.from('tenant_google_workspace_connections').select('id,provider_account_id,actor_user_id,granted_scopes,account_email,account_name,connection_role,is_primary,metadata,credential_status,verified_at,created_at,ciphertext,iv,key_version,created_by').eq('tenant_id',tid).order('is_primary',{ascending:false}).order('created_at',{ascending:true});if(error)throw error;const rows=data||[];return await Promise.all(rows.map((row:any)=>hydrateGoogleAccountIdentity(admin,tid,row)))}\nfunction googleServices(metadata:any){const raw=metadata?.service_access&&typeof metadata.service_access==='object'?metadata.service_access:{};return{mail:raw.mail!==false,drive:raw.drive!==false,calendar:raw.calendar!==false}}\nasync function syncGoogleStorageBinding(admin:any,tid:string,row:any){const scopes=Array.isArray(row?.granted_scopes)?row.granted_scopes.map((value:unknown)=>String(value)):Array.isArray(row?.metadata?.granted_scopes)?row.metadata.granted_scopes.map((value:unknown)=>String(value)):[];const enabled=googleServices(row?.metadata).drive&&scopes.includes('https://www.googleapis.com/auth/drive.file');if(!enabled){const{error}=await admin.from('tenant_capability_providers').update({enabled:false,connection_ref:null,updated_at:new Date().toISOString()}).eq('tenant_id',tid).eq('capability','storage.files').eq('provider_key','google_workspace');if(error)throw error;return}const connectionRef='tenant_google_workspace_connection:'+String(row.id);const{error}=await admin.from('tenant_capability_providers').upsert({tenant_id:tid,capability:'storage.files',provider_key:'google_workspace',adapter_key:'google_drive_file',connection_ref:connectionRef,enabled:true,priority:50,metadata:{binding:'onepath',provider_account_id:row.provider_account_id||row?.metadata?.provider_account_id||null,account_email:row.account_email||null,connection_id:row.id},updated_at:new Date().toISOString()},{onConflict:'tenant_id,capability,provider_key'});if(error)throw error}\nasync function syncLegacyGooglePrimary(admin:any,tid:string,uid:string,row:any){let r=await admin.from('tenant_provider_secrets').upsert({tenant_id:tid,provider:'google_workspace',ciphertext:row.ciphertext,iv:row.iv,key_version:row.key_version||1,verified_at:row.verified_at||new Date().toISOString(),verification_error:null,created_by:row.created_by||uid},{onConflict:'tenant_id,provider'});if(r.error)throw r.error;r=await admin.from('tenant_provider_credentials').upsert({tenant_id:tid,provider:'google_workspace',credential_ref:'db:tenant_provider_secrets:google_workspace',credential_status:'active',last_verified_at:row.verified_at||new Date().toISOString(),verification_notes:'Primary Google Workspace connection.',metadata:{...(row.metadata||{}),account_email:row.account_email||null,account_name:row.account_name||null,connection_id:row.id},created_by:row.created_by||uid},{onConflict:'tenant_id,provider'});if(r.error)throw r.error}\nasync function writeGoogleConnection(admin:any,tid:string,uid:string,operatorUid:string,d:Def,t:Token){const identity=await googleIdentity(t.access_token);if(!identity.providerAccountId)throw new Error('Google stable account identity was unavailable.');if(!identity.email)throw new Error('Google account email was unavailable.');const encrypted=await encryptSecret(JSON.stringify(t));const existing=await googleAccounts(admin,tid);const current=existing.find((row:any)=>String(row.provider_account_id||'')===identity.providerAccountId)||existing.find((row:any)=>String(row.account_email||'').toLowerCase()===identity.email);const hasPrimary=existing.some((row:any)=>row.is_primary&&row.credential_status==='active'&&row.id!==current?.id);const isPrimary=current?.is_primary===true||!hasPrimary;const role=isPrimary?'primary':String(current?.connection_role||'secondary');const grantedScopes=String(t.scope||d.scopes.join(d.delimiter)).split(/[ ,]+/).filter(Boolean);const metadata={...(current?.metadata||{}),capabilities:d.caps,granted_scopes:grantedScopes,account_email:identity.email,account_name:identity.name,connected_by_user_id:uid,bound_user_id:uid,support_operator_user_id:operatorUid!==uid?operatorUid:null,provider_account_id:identity.providerAccountId,service_access:googleServices(current?.metadata)};let query=admin.from('tenant_google_workspace_connections');const payload={tenant_id:tid,provider_account_id:identity.providerAccountId,actor_user_id:uid,granted_scopes:grantedScopes,account_email:identity.email,account_name:identity.name||null,connection_role:role,is_primary:isPrimary,ciphertext:encrypted.ciphertext,iv:encrypted.iv,key_version:1,metadata,credential_status:'active',verified_at:new Date().toISOString(),verification_error:null,created_by:current?.created_by||operatorUid,updated_at:new Date().toISOString()};const result=current?await query.update(payload).eq('id',current.id).eq('tenant_id',tid).select('*').single():await query.insert(payload).select('*').single();if(result.error)throw result.error;if(isPrimary){await syncLegacyGooglePrimary(admin,tid,operatorUid,result.data);await syncGoogleStorageBinding(admin,tid,result.data)}return result.data}\nasync function exchange(d:Def,code:string,verifier:string|null,u:URL,requestedScopes:string[]=d.scopes){const c=cfg(d);if(!c.configured)throw new Error(`${d.label} connection is not configured.`);const p=new URLSearchParams({grant_type:'authorization_code',code,redirect_uri:c.redirectUri});if(verifier)p.set('code_verifier',verifier);const h:Record<string,string>={'Content-Type':'application/x-www-form-urlencoded'};if(d.tokenAuth==='basic')h.Authorization=`Basic ${btoa(`${c.clientId}:${c.clientSecret}`)}`;else{p.set('client_id',c.clientId);p.set('client_secret',c.clientSecret)}const res=await fetch(d.tokenUrl,{method:'POST',headers:h,body:p});const x=await res.json().catch(()=>({}));if(!res.ok||!x.access_token)throw new Error(String(x.error_description||x.error||`${d.label} authorization failed.`));return{access_token:String(x.access_token),refresh_token:x.refresh_token?String(x.refresh_token):null,expires_at:x.expires_in?new Date(Date.now()+Number(x.expires_in)*1000).toISOString():null,token_type:x.token_type||'Bearer',scope:x.scope||requestedScopes.join(d.delimiter),metadata:d.key==='quickbooks'?{realm_id:u.searchParams.get('realmId')}:d.key==='slack'?{team_id:x.team?.id||null,team_name:x.team?.name||null}:d.key==='stripe'?{account_id:x.stripe_user_id||null,stripe_user_id:x.stripe_user_id||null,livemode:x.livemode??null}:{} } as Token}\nasync function state(admin:any,raw:string){const h=await sha(raw),now=new Date().toISOString();const {data,error}=await admin.from('tenant_provider_oauth_states').update({consumed_at:now}).eq('state_hash',h).is('consumed_at',null).gt('expires_at',now).select('provider,tenant_id,user_id,operator_user_id,return_path,code_verifier').maybeSingle();if(error)throw error;if(!data)throw new Error('Connection state is invalid, expired, or already used.');return data}\nasync function authUrl(admin:any,d:Def,tid:string,operatorUid:string,targetUid:string,path:string){const c=cfg(d);if(!c.configured)throw new Error(`${d.label} is not enabled on KnockLaunch yet.`);const raw=b64u(crypto.getRandomValues(new Uint8Array(32))),verifier=d.pkce?b64u(crypto.getRandomValues(new Uint8Array(48))):null;const {error}=await admin.from('tenant_provider_oauth_states').insert({state_hash:await sha(raw),provider:d.key,tenant_id:tid,user_id:targetUid,operator_user_id:operatorUid,return_path:safePath(path),code_verifier:verifier,expires_at:new Date(Date.now()+600000).toISOString()});if(error)throw error;const p=new URLSearchParams({client_id:c.clientId,response_type:'code',redirect_uri:c.redirectUri,scope:(await providerScopes(admin,d,tid)).join(d.delimiter),state:raw});if(verifier){p.set('code_challenge',await sha(verifier));p.set('code_challenge_method','S256')}if(d.key==='google_workspace'||d.key===PRIVATE_PROVIDER_KEY){p.set('access_type','offline');p.set('prompt','consent');p.set('include_granted_scopes','true')}if(d.key==='microsoft_365')p.set('response_mode','query');if(d.key==='dropbox')p.set('token_access_type','offline');return`${d.authUrl}?${p}`}\nDeno.serve(async req=>{if(req.method==='OPTIONS')return new Response('ok',{headers:cors(req)});const admin=createClient(SUPABASE_URL,Deno.env.get('SUPABASE_SERVICE_ROLE_KEY')||''),u=new URL(req.url),cb=u.searchParams.get('oauth')==='callback';let provider='connection',path='/connections';try{if(cb){const s=await state(admin,u.searchParams.get('state')||'');provider=s.provider;path=safePath(s.return_path);const d=P[s.provider as Key];if(!d)throw new Error('Unsupported connection provider.');const targetUid=String(s.user_id||'').trim(),operatorUid=String(s.operator_user_id||s.user_id||'').trim();if(!targetUid||!operatorUid)throw new Error('Connection state identity is incomplete.');if(operatorUid!==targetUid){const support=await admin.rpc('is_system_admin',{_user_id:operatorUid});if(support.error)throw support.error;if(!support.data)throw new Error('GodMode support access required');await authorizeTenantMember(admin,targetUid,s.tenant_id)}else if(d.key==='google_workspace')await authorizeTenantMember(admin,targetUid,s.tenant_id);else await authorize(admin,targetUid,s.tenant_id);if(d.key===PRIVATE_PROVIDER_KEY)await privateOwner(admin,operatorUid,s.tenant_id);const code=u.searchParams.get('code')||'';if(!code)throw new Error(u.searchParams.get('error_description')||u.searchParams.get('error')||'Authorization was not completed.');const exchanged=await exchange(d,code,s.code_verifier,u,await providerScopes(admin,d,s.tenant_id));if(d.key==='google_workspace')await writeGoogleConnection(admin,s.tenant_id,targetUid,operatorUid,d,exchanged);else await write(admin,s.tenant_id,targetUid,operatorUid,d,exchanged);await auditSupportAction(admin,s.tenant_id,operatorUid,targetUid,'oauth_callback',d.key);return Response.redirect(ret(path,d.key,'connected'),302)}if(req.method!=='POST')return j(req,405,{ok:false,error:'Method not allowed'});const uid=await userId(req),x=await req.json().catch(()=>({})),tid=String(x.tenant_id||'').trim(),action=String(x.action||'catalog').toLowerCase(),requestedProvider=String(x.provider||'');if(!tid)return j(req,400,{ok:false,error:'tenant_id required'});const subject=await resolveConnectionSubject(admin,uid,tid,x.projected_user_id),targetUid=subject.targetUserId;if(action==='catalog'||(requestedProvider==='google_workspace'&&action==='authorize_url'))await authorizeTenantMember(admin,uid,tid);else await authorize(admin,uid,tid);if(action==='catalog'){const {data,error}=await admin.from('tenant_provider_credentials').select('provider,credential_status,last_verified_at,metadata').eq('tenant_id',tid).in('provider',PUBLIC_OAUTH);if(error)throw error;const google=(await googleAccounts(admin,tid)).filter((account:any)=>visibleToConnectionSubject(account.metadata,targetUid));const rows=new Map((data||[]).filter((r:any)=>visibleToConnectionSubject(r.metadata,targetUid)).map((r:any)=>[r.provider,r])),slug=await tenantSlug(admin,tid),museEligible=MUSE_ROLLOUT_SLUGS.has(slug);return j(req,200,{ok:true,providers:[...PUBLIC_OAUTH.map(key=>{const d=P[key],r:any=rows.get(key);const accounts=key==='google_workspace'?google.map((account:any)=>({id:account.id,providerAccountId:account.provider_account_id||account?.metadata?.provider_account_id||null,email:account.account_email,name:account.account_name,role:account.connection_role,is_primary:account.is_primary,status:account.credential_status,last_verified_at:account.verified_at,bound_user_id:String(account.metadata?.bound_user_id||'').trim()||null,scopes:Array.isArray(account.metadata?.granted_scopes)?account.metadata.granted_scopes:[],services:googleServices(account.metadata)})):undefined;return{key,label:d.label,category:d.category,capabilities:key==='google_workspace'&&slug==='pcg'?[...d.caps,'Dedicated Prestigious Card Grading calendar']:d.caps,permissions:key==='google_workspace'&&slug==='pcg'?[...d.permissions,'Create and manage the dedicated Prestigious Card Grading calendar']:d.permissions,configured:cfg(d).configured,connected:key==='google_workspace'?google.some((account:any)=>account.credential_status==='active'):r?.credential_status==='active',status:key==='google_workspace'?(google.some((account:any)=>account.credential_status==='active')?'active':'missing'):(r?.credential_status||'missing'),last_verified_at:key==='google_workspace'?(google.find((account:any)=>account.is_primary)?.verified_at||null):(r?.last_verified_at||null),accounts}}),{key:MUSE.key,label:MUSE.label,category:MUSE.category,capabilities:MUSE.caps,permissions:MUSE.permissions,configured:false,connected:false,status:museEligible?'setup_required':'rollout_pending',eligible:museEligible,setup_message:museEligible?'Meta Muse is enabled for this workspace rollout, but Meta connector review and issued platform credentials are still required before authorization can begin. No Muse provider token is stored until Meta activation is complete.':'Meta Muse is available in the global Connections catalog. Big Papi\\'s is the first rollout tenant; this workspace is not enabled for authorization yet.',last_verified_at:null}]})}if(requestedProvider==='irslogiqs'){if(action!=='revoke')return j(req,400,{ok:false,error:'Unsupported action'});await admin.from('tenant_provider_secrets').delete().eq('tenant_id',tid).eq('provider','irslogiqs');await admin.from('tenant_provider_credentials').update({credential_status:'disabled',last_verified_at:null,verification_notes:'Disconnected by tenant owner or platform admin.',metadata:{disconnected_at:new Date().toISOString()}}).eq('tenant_id',tid).eq('provider','irslogiqs');return j(req,200,{ok:true,disconnected:true})}if(requestedProvider===MUSE.key){const slug=await tenantSlug(admin,tid),eligible=MUSE_ROLLOUT_SLUGS.has(slug);return j(req,409,{ok:false,code:eligible?'provider_prerequisite_required':'provider_rollout_not_enabled',error:eligible?'Meta Muse is enabled for this workspace rollout, but Meta connector review and issued platform credentials are not activated yet.':'Meta Muse is in the global Connections catalog, but this workspace is not in the first rollout.'})}const d=P[requestedProvider as Key];if(!d)return j(req,400,{ok:false,error:'Unsupported provider'});if(d.key===PRIVATE_PROVIDER_KEY)await privateOwner(admin,uid,tid);if(action==='authorize_url'){const authorize_url=await authUrl(admin,d,tid,uid,targetUid,String(x.return_path||'/connections'));await auditSupportAction(admin,tid,uid,targetUid,'authorize_url',d.key);return j(req,200,{ok:true,authorize_url})}if(d.key==='google_workspace'&&action==='set_services'){const connectionId=String(x.connection_id||'').trim();if(!connectionId)return j(req,400,{ok:false,error:'connection_id required'});const{data:row,error}=await admin.from('tenant_google_workspace_connections').select('id,metadata').eq('id',connectionId).eq('tenant_id',tid).maybeSingle();if(error)throw error;if(!row)return j(req,404,{ok:false,error:'Google Workspace connection not found'});if(!visibleToConnectionSubject(row.metadata,targetUid))return j(req,403,{ok:false,error:'Connection is scoped to a different tenant user'});const current=googleServices(row.metadata);const requested=x.services&&typeof x.services==='object'?x.services:{};const services={mail:typeof requested.mail==='boolean'?requested.mail:current.mail,drive:typeof requested.drive==='boolean'?requested.drive:current.drive,calendar:typeof requested.calendar==='boolean'?requested.calendar:current.calendar};const metadata={...(row.metadata||{}),service_access:services};const updated=await admin.from('tenant_google_workspace_connections').update({metadata,updated_at:new Date().toISOString()}).eq('id',connectionId).eq('tenant_id',tid).select('id,metadata').single();if(updated.error)throw updated.error;return j(req,200,{ok:true,connection_id:connectionId,services})}if(d.key==='google_workspace'&&action==='set_role'){const connectionId=String(x.connection_id||'').trim(),role=String(x.connection_role||'').trim().toLowerCase();if(!connectionId)return j(req,400,{ok:false,error:'connection_id required'});if(!new Set(['secondary','legacy','import']).has(role))return j(req,400,{ok:false,error:'connection_role must be secondary, legacy, or import'});const{data:row,error}=await admin.from('tenant_google_workspace_connections').select('id,is_primary,metadata').eq('id',connectionId).eq('tenant_id',tid).maybeSingle();if(error)throw error;if(!row)return j(req,404,{ok:false,error:'Google Workspace connection not found'});if(!visibleToConnectionSubject(row.metadata,targetUid))return j(req,403,{ok:false,error:'Connection is scoped to a different tenant user'});if(row.is_primary)return j(req,409,{ok:false,code:'primary_role_locked',error:'Set another Google Workspace account as primary before changing this account role.'});const updated=await admin.from('tenant_google_workspace_connections').update({connection_role:role,updated_at:new Date().toISOString()}).eq('id',connectionId).eq('tenant_id',tid).select('id,connection_role').single();if(updated.error)throw updated.error;return j(req,200,{ok:true,connection_id:connectionId,connection_role:role})}if(d.key==='google_workspace'&&action==='set_primary'){const connectionId=String(x.connection_id||'').trim();if(!connectionId)return j(req,400,{ok:false,error:'connection_id required'});const{data:row,error}=await admin.from('tenant_google_workspace_connections').select('*').eq('id',connectionId).eq('tenant_id',tid).eq('credential_status','active').maybeSingle();if(error)throw error;if(!row)return j(req,404,{ok:false,error:'Google Workspace connection not found'});if(!visibleToConnectionSubject(row.metadata,targetUid))return j(req,403,{ok:false,error:'Connection is scoped to a different tenant user'});await admin.from('tenant_google_workspace_connections').update({is_primary:false,connection_role:'secondary',updated_at:new Date().toISOString()}).eq('tenant_id',tid).neq('id',connectionId);const promoted=await admin.from('tenant_google_workspace_connections').update({is_primary:true,connection_role:'primary',updated_at:new Date().toISOString()}).eq('id',connectionId).eq('tenant_id',tid).select('*').single();if(promoted.error)throw promoted.error;await syncLegacyGooglePrimary(admin,tid,uid,promoted.data);await syncGoogleStorageBinding(admin,tid,promoted.data);await auditSupportAction(admin,tid,uid,targetUid,'set_primary',d.key,connectionId);return j(req,200,{ok:true,primary:connectionId})}if(action==='refresh'){const t=await readToken(admin,tid,d.key);if(!t?.access_token)return j(req,409,{ok:false,code:'provider_prerequisite_required',error:`${d.label} is not connected.`});return j(req,200,{ok:true,expires_at:t.expires_at||null})}if(action==='revoke'){if(d.key==='google_workspace'&&x.connection_id){const connectionId=String(x.connection_id).trim();const{data:row,error}=await admin.from('tenant_google_workspace_connections').select('id,is_primary,metadata').eq('id',connectionId).eq('tenant_id',tid).maybeSingle();if(error)throw error;if(!row)return j(req,404,{ok:false,error:'Google Workspace connection not found'});if(!visibleToConnectionSubject(row.metadata,targetUid))return j(req,403,{ok:false,error:'Connection is scoped to a different tenant user'});const{count}=await admin.from('tenant_google_workspace_connections').select('id',{count:'exact',head:true}).eq('tenant_id',tid).eq('credential_status','active');if(row.is_primary&&Number(count||0)>1)return j(req,409,{ok:false,code:'primary_connection_required',error:'Set another Google Workspace account as primary before disconnecting this one.'});await admin.from('tenant_google_workspace_connections').delete().eq('id',connectionId).eq('tenant_id',tid);if(row.is_primary){await admin.from('tenant_provider_secrets').delete().eq('tenant_id',tid).eq('provider','google_workspace');await admin.from('tenant_provider_credentials').update({credential_status:'disabled',last_verified_at:null,verification_notes:'Disconnected by tenant owner or platform admin.',metadata:{disconnected_at:new Date().toISOString()}}).eq('tenant_id',tid).eq('provider','google_workspace')}return j(req,200,{ok:true,disconnected:true,connection_id:connectionId})}await admin.from('tenant_provider_secrets').delete().eq('tenant_id',tid).eq('provider',d.key);await admin.from('tenant_provider_credentials').update({credential_status:'disabled',last_verified_at:null,verification_notes:'Disconnected by tenant owner or platform admin.',metadata:{disconnected_at:new Date().toISOString()}}).eq('tenant_id',tid).eq('provider',d.key);return j(req,200,{ok:true,disconnected:true})}return j(req,400,{ok:false,error:'Unsupported action'})}catch(e){console.error('[tenant-provider-connections]',e);if(cb)return Response.redirect(ret(path,provider,'error'),302);const m=e instanceof Error?e.message:String(e);return j(req,m==='Unauthorized'?401:m.includes('owner or admin')?403:500,{ok:false,error:m})}});\n","expectedSha":"0e9086d2e17daec0d5aae5aaa4f32e09e85f912e"},{"path":"src/pages/connections/TenantConnections.tsx","content":"import { useCallback, useEffect, useMemo, useState, type ComponentType } from 'react';\nimport { useLocation, useSearchParams } from 'react-router-dom';\nimport { Briefcase, Calendar, CheckCircle2, Cloud, ExternalLink, FileSignature, Folder, KeyRound, Landmark, Loader2, Mail, MessageSquare, Phone, PlugZap, Search, ShieldCheck, Users, WalletCards, XCircle } from 'lucide-react';\nimport { Badge } from '@/components/ui/badge';\nimport { Button } from '@/components/ui/button';\nimport { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card';\nimport { CompactDisclosureContent, CompactDisclosureItem, CompactDisclosureList, CompactDisclosureTrigger } from '@/components/ui/compact-disclosure';\nimport { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle } from '@/components/ui/dialog';\nimport { Input } from '@/components/ui/input';\nimport { Label } from '@/components/ui/label';\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs';\nimport { useMultiTenant } from '@/contexts/MultiTenantContext';\nimport { useAuth } from '@/contexts/AuthContext';\nimport { supabase } from '@/integrations/supabase/client';\nimport { readGodModeAccessContext } from '@/lib/godmodeAccess';\nimport { toast } from '@/lib/notify';\nimport { buildClientCommissioningReceipt, requiredProvidersFromTenantSettings, type ClientCommissioningReceipt } from '@/lib/tenants/clientCommissioning';\ntype ProviderKey='square'|'zoho_mail'|'twilio'|'resend'|'stripe'|'ebay'|'google_workspace'|'microsoft_365'|'monday'|'quickbooks'|'slack'|'dropbox'|'hubspot'|'docusign'|'irslogiqs'|'meta_muse'|'squarespace'|'cloudflare_r2';\ntype ConnectionKind='oauth'|'secret'; type ConnectionDriver='square'|'zoho'|'secret'|'broker';\ntype ConnectionRow={provider:string;credential_status:string|null;last_verified_at:string|null;verification_notes:string|null;phone_number:string|null;sending_domain:string|null;metadata:Record<string,any>|null};\ntype ProviderDefinition={key:ProviderKey;label:string;category:string;description:string;kind:ConnectionKind;driver:ConnectionDriver;icon:ComponentType<{className?:string}>;keywords:string[];capabilities:string[];permissions:string[]};\ntype GoogleWorkspaceAccount={id:string;email:string|null;name:string|null;role:'primary'|'secondary'|'legacy'|'import';is_primary:boolean;status:string;last_verified_at?:string|null;bound_user_id?:string|null;scopes:string[];services:{mail:boolean;drive:boolean;calendar:boolean}}; type BrokerAvailability=Record<string,{configured:boolean;connected:boolean;status:string;eligible?:boolean;setup_message?:string|null;last_verified_at?:string|null;accounts?:GoogleWorkspaceAccount[]}>; type ConnectionsTab='mine'|'find';\ntype CommissioningTeamRow={user_id:string;tenant_id:string;effective_role:string|null;membership_status:string|null};\ntype CommissioningInviteRow={id:string;tenant_id:string;email:string|null;role:string|null;status:string|null;expires_at:string|null;metadata:Record<string,unknown>|null};\nconst PROVIDERS:ProviderDefinition[]=[\n{key:'ebay',label:'eBay',category:'Marketplace',description:'Tenant-owned eBay seller connection for inventory, listings, orders, fulfillment, and marketplace events.',kind:'oauth',driver:'broker',icon:Search,keywords:['ebay','marketplace','sales','listings','inventory','orders','fulfillment','shipping'],capabilities:['Inventory items & locations','Offers & published listings','Orders','Fulfillment & shipment tracking','Seller business policies','Marketplace notifications'],permissions:['Uses eBay OAuth user consent and refresh tokens','Requests only the Sell scopes required by enabled KnockLaunch workflows','Missing or revoked scopes must remain unavailable until the tenant reconnects']},\n{key:'google_workspace',label:'Google Workspace',category:'Calendar, files & Gmail',description:'Gmail sending, Calendar, Drive, and the Google tools your business already uses.',kind:'oauth',driver:'broker',icon:Calendar,keywords:['google','workspace','gmail','email','calendar','drive','files'],capabilities:['Gmail sending','Calendar events','Drive files used with KnockLaunch'],permissions:['Send email from the connected Gmail account','View and manage calendar events','Use only Drive files opened or created through KnockLaunch','Basic Google account identity']},\n{key:'microsoft_365',label:'Microsoft 365',category:'Calendar',description:'Outlook, Microsoft calendar, and connected business account tools.',kind:'oauth',driver:'broker',icon:Cloud,keywords:['microsoft','office','365','outlook','calendar'],capabilities:['Microsoft 365 calendar'],permissions:['Basic Microsoft account identity','View and manage calendar events','Offline access for scheduled calendar sync']},\n{key:'monday',label:'monday.com',category:'Work management',description:'Boards, workspaces, tasks, and team work management.',kind:'oauth',driver:'broker',icon:Briefcase,keywords:['monday','boards','work','project','tasks','workspaces'],capabilities:['Boards','Workspaces','Users'],permissions:['Read account identity','Read and update boards','Read workspaces','Read users']},\n{key:'quickbooks',label:'QuickBooks Online',category:'Accounting',description:'Accounting, invoices, books, and company financial records with tenant-safe schema-aware sync.',kind:'oauth',driver:'broker',icon:Landmark,keywords:['quickbooks','intuit','accounting','books','finance','invoices','customers','payments'],capabilities:['Customers','Invoices','Payments','QuickBooks schema identity & sync health'],permissions:['Read the connected QuickBooks company accounting data','Preserve QuickBooks entity IDs, references, SyncToken versions, and company realm identity','Future write actions require explicit KnockLaunch actions and current QuickBooks concurrency tokens']},\n{key:'square',label:'Square',category:'Payments',description:'Payments, invoices, customers, and finance sync through Square.',kind:'oauth',driver:'square',icon:WalletCards,keywords:['payments','invoices','money','point of sale','pos','customers','cards'],capabilities:['Payments','Invoices','Customers','Finance sync'],permissions:['Square permissions are requested by the existing payment connector and shown by Square during authorization']},\n{key:'stripe',label:'Stripe',category:'Payments',description:'Connect this business Stripe account for billing, payments, subscriptions, refunds, payouts, and reconciliation.',kind:'oauth',driver:'broker',icon:WalletCards,keywords:['payments','cards','billing','invoices','money','customers','refunds','subscriptions','payouts'],capabilities:['Customers','Payment intents & payments','Invoices','Products & prices','Refunds','Subscriptions','Balance & payouts','Webhook-driven reconciliation'],permissions:['Uses Stripe Connect account authorization','Privileged Stripe access stays server-side and tenant-scoped','Disconnecting removes KnockLaunch authorization without exposing Stripe credentials']},\n{key:'slack',label:'Slack',category:'Team messaging',description:'Channels, team messaging, and KnockLaunch notifications.',kind:'oauth',driver:'broker',icon:MessageSquare,keywords:['slack','chat','messages','notifications','channels'],capabilities:['Channel list','KnockLaunch notifications'],permissions:['View channel names','Post messages as the KnockLaunch app']},\n{key:'dropbox',label:'Dropbox',category:'Files',description:'Files, documents, photos, and connected app-folder storage.',kind:'oauth',driver:'broker',icon:Folder,keywords:['dropbox','files','documents','storage','photos'],capabilities:['KnockLaunch app-folder files'],permissions:['Read account identity','Read and write files inside the Dropbox app folder configured for KnockLaunch']},\n{key:'hubspot',label:'HubSpot',category:'CRM',description:'CRM contacts and customer records from your HubSpot account.',kind:'oauth',driver:'broker',icon:Users,keywords:['hubspot','crm','contacts','customers','leads'],capabilities:['Contacts'],permissions:['Read contacts','Create and update contacts']},\n{key:'irslogiqs',label:'IRSLogiqs',category:'Tax resolution CRM',description:'Tax-resolution lead and case intake for this workspace.',kind:'secret',driver:'secret',icon:Briefcase,keywords:['irslogiqs','irslogics','tax','tax relief','crm','cases','leads'],capabilities:['Lead intake','Case creation handoff'],permissions:['Uses only the tenant-owned IRSLogiqs API key','Requires Case.Write permission in IRSLogiqs','Keeps the credential isolated to this tenant']},\n{key:'docusign',label:'DocuSign',category:'E-signature',description:'Signature envelopes and document signing workflows.',kind:'oauth',driver:'broker',icon:FileSignature,keywords:['docusign','esign','signature','documents','envelopes'],capabilities:['Envelope signing'],permissions:['Create and manage signature envelopes','Maintain authorized background access until disconnected']},\n{key:'cloudflare_r2',label:'Cloudflare R2',category:'Storage',description:'Private tenant-owned object storage for card masters, media, and durable business files.',kind:'secret',driver:'secret',icon:Cloud,keywords:['cloudflare','r2','storage','files','media','cards'],capabilities:['Private object storage','PCG card master imagery','Tenant-scoped media'],permissions:['Uses only the tenant-owned R2 S3 credential supplied here','Credential access stays isolated to this tenant','Storage verification must pass before the connection becomes active']},\n{key:'squarespace',label:'Squarespace',category:'Website commerce',description:'Publish approved PCG cards from KnockLaunch directly to the existing Squarespace store.',kind:'secret',driver:'secret',icon:Cloud,keywords:['squarespace','website','store','products','commerce','publishing'],capabilities:['Create PCG products','Upload card imagery','Publish approved inventory'],permissions:['Uses only the tenant-owned Squarespace Commerce API key','Publishes only owner-approved PCG card records','Cloudflare R2 remains the master image store']},\n{key:'meta_muse',label:'Meta Muse',category:'AI & Assistants',description:'Use Muse as an optional day-to-day assistant with approved access to this KnockLaunch workspace.',kind:'oauth',driver:'broker',icon:PlugZap,keywords:['meta','muse','ai','assistant','agent','automation'],capabilities:['Calendar & events','Inventory','Customers','Tasks & notes','Proposals & invoices','Pop-up planning','Workspace search'],permissions:['Use only this tenant workspace','Respect current KnockLaunch user and tenant authorization','Destructive or outbound actions still require KnockLaunch approval controls']},\n{key:'zoho_mail',label:'Zoho Mail',category:'Email',description:'Business email and inbox access through your Zoho mailbox.',kind:'oauth',driver:'zoho',icon:Mail,keywords:['zoho','email','mail','inbox','messages','homeowner communication'],capabilities:['Business email','Inbox'],permissions:['Mailbox access is limited to the existing Zoho Mail connector scopes shown during provider authorization']},\n{key:'twilio',label:'Twilio',category:'Phone & SMS',description:'Calling, phone numbers, and SMS through a tenant-owned account.',kind:'secret',driver:'secret',icon:Phone,keywords:['phone','calls','calling','sms','text','messaging'],capabilities:['Calling','SMS'],permissions:['Uses only the tenant-owned Twilio account represented by the supplied Account SID and auth token']},\n{key:'resend',label:'Resend',category:'Email delivery',description:'Outbound email delivery for your verified sending domain.',kind:'secret',driver:'secret',icon:Mail,keywords:['resend','email','outbound','delivery','domain','messages'],capabilities:['Outbound email delivery'],permissions:['Uses only the tenant-owned Resend API key supplied here']}\n];\nconst PROVIDER_MAP=new Map(PROVIDERS.map(p=>[p.key,p])); const REQUIRED_GOOGLE_WORKSPACE_SCOPES=['https://www.googleapis.com/auth/gmail.modify','https://www.googleapis.com/auth/gmail.send','https://www.googleapis.com/auth/calendar.events','https://www.googleapis.com/auth/drive.file']; const CONNECTOR_URLS:Record<ProviderKey,string>={google_workspace:'https://workspace.google.com/',microsoft_365:'https://www.microsoft365.com/',monday:'https://monday.com/',quickbooks:'https://qbo.intuit.com/',square:'https://squareup.com/dashboard',stripe:'https://dashboard.stripe.com/',ebay:'https://www.ebay.com/sh/ovw',slack:'https://app.slack.com/',dropbox:'https://www.dropbox.com/home',hubspot:'https://app.hubspot.com/',docusign:'https://app.docusign.com/',irslogiqs:'https://www.irslogics.com/',zoho_mail:'https://mail.zoho.com/',twilio:'https://console.twilio.com/',resend:'https://resend.com/api-keys',meta_muse:'https://muse.ai/',squarespace:'https://account.squarespace.com/',cloudflare_r2:'https://dash.cloudflare.com/?to=/:account/r2'};\nfunction isConnectedStatus(s?:string|null){return s==='active'||s==='connected'} function statusLabel(s?:string|null){if(isConnectedStatus(s))return'Connected';if(s==='pending')return'Needs verification';if(s==='degraded')return'Degraded';if(s==='invalid')return'Needs attention';if(s==='disabled')return'Disconnected';return'Not connected'} function statusBadgeClass(s?:string|null){if(isConnectedStatus(s))return'border-emerald-400/20 bg-emerald-500/10 text-emerald-200';if(s==='degraded'||s==='invalid')return'border-destructive/30 bg-destructive/10 text-destructive-foreground';if(s==='pending')return'border-amber-400/25 bg-amber-400/10 text-amber-200';return'border-border bg-muted/40 text-muted-foreground'} function providerLabel(p:string){return PROVIDER_MAP.get(p as ProviderKey)?.label||p.replaceAll('_',' ').replace(/\\b\\w/g,l=>l.toUpperCase())} function connectionDetail(r:ConnectionRow){if(r.provider==='zoho_mail')return String(r.metadata?.email||'Business mailbox');if(r.provider==='square')return String(r.metadata?.square_location_name||'Square account');if(r.provider==='twilio')return r.phone_number||'Twilio account';if(r.provider==='resend')return r.sending_domain||'Resend account';if(r.provider==='cloudflare_r2')return String(r.metadata?.bucket||'Cloudflare R2');if(r.metadata?.team_name)return String(r.metadata.team_name);if(r.metadata?.realm_id)return`QuickBooks company ${r.metadata.realm_id}`;return r.verification_notes||'Provider account'}\nexport default function TenantConnections(){const{activeTenant}=useMultiTenant();const{user}=useAuth();const tenantId=activeTenant?.id||'';const projection=useMemo(()=>{const context=readGodModeAccessContext();if(!context||context.tenantId!==tenantId)return null;if(context.operatorId&&context.operatorId!==user?.id)return null;return context},[tenantId,user?.id]);const projectedUserId=projection?.userId||null;const location=useLocation();const businessName=activeTenant?.company_dba_name||activeTenant?.company_legal_name||activeTenant?.name||'this business';const returnPath=typeof window!=='undefined'&&window.location.pathname.startsWith('/')?window.location.pathname:(location.pathname||'/connections');const[searchParams,setSearchParams]=useSearchParams();const[rows,setRows]=useState<ConnectionRow[]>([]);const[brokerAvailability,setBrokerAvailability]=useState<BrokerAvailability>({});const[googleAccounts,setGoogleAccounts]=useState<GoogleWorkspaceAccount[]>([]);const[teamRows,setTeamRows]=useState<CommissioningTeamRow[]>([]);const[inviteRows,setInviteRows]=useState<CommissioningInviteRow[]>([]);const[peopleLoaded,setPeopleLoaded]=useState(false);const[loading,setLoading]=useState(true);const[query,setQuery]=useState('');const[selected,setSelected]=useState<ProviderDefinition|null>(null);const[connecting,setConnecting]=useState(false);const[disconnectArmed,setDisconnectArmed]=useState(false);const[advancedSetup,setAdvancedSetup]=useState(false);const[tab,setTab]=useState<ConnectionsTab>('find');const[tabTouched,setTabTouched]=useState(false);const[secretForm,setSecretForm]=useState({apiSecret:'',accountSid:'',fromNumber:'',fromEmail:'',fromName:'',publishableKey:'',accountSubdomain:'',secretToken:'',statusIds:'',r2AccessKeyId:'',r2AccountId:'',r2Endpoint:'',r2Bucket:'',r2Region:'auto'});const loadConnections=useCallback(async()=>{if(!tenantId)return;setLoading(true);try{const[c,catalog,team,invites]=await Promise.all([supabase.from('tenant_provider_credentials' as any).select('provider,credential_status,last_verified_at,verification_notes,phone_number,sending_domain,metadata').eq('tenant_id',tenantId).order('provider'),supabase.functions.invoke('tenant-provider-connections',{body:{action:'catalog',tenant_id:tenantId,projected_user_id:projectedUserId||undefined}}),(supabase as any).from('user_tenant_access').select('user_id,tenant_id,effective_role,membership_status').eq('tenant_id',tenantId),(supabase as any).from('user_invitations').select('id,tenant_id,email,role,status,expires_at,metadata').eq('tenant_id',tenantId)]);if(c.error)throw c.error;if(team.error)throw team.error;if(invites.error)throw invites.error;setRows((c.data||[]) as unknown as ConnectionRow[]);setTeamRows((team.data||[]) as CommissioningTeamRow[]);setInviteRows((invites.data||[]) as CommissioningInviteRow[]);setPeopleLoaded(true);if(!catalog.error&&catalog.data?.ok===true&&Array.isArray(catalog.data.providers)){const n:BrokerAvailability={};for(const p of catalog.data.providers){const accounts=Array.isArray(p.accounts)?p.accounts.map((account:any)=>({id:String(account.id),email:account.email?String(account.email):null,name:account.name?String(account.name):null,role:String(account.role||'secondary'),is_primary:account.is_primary===true,status:String(account.status||'active'),last_verified_at:account.last_verified_at||null,bound_user_id:account.bound_user_id?String(account.bound_user_id):null,scopes:Array.isArray(account.scopes)?account.scopes.map((scope:any)=>String(scope)):[],services:{mail:account?.services?.mail!==false,drive:account?.services?.drive!==false,calendar:account?.services?.calendar!==false}})):undefined;n[String(p.key)]={configured:p.configured===true,connected:p.connected===true,status:String(p.status||'missing'),eligible:p.eligible===true,setup_message:p.setup_message?String(p.setup_message):null,last_verified_at:p.last_verified_at||null,accounts};if(String(p.key)==='google_workspace')setGoogleAccounts(accounts||[])}setBrokerAvailability(n)}else{setBrokerAvailability({});setGoogleAccounts([])}}catch(e:any){setPeopleLoaded(false);toast.error(e?.message||'Could not load connections')}finally{setLoading(false)}},[projectedUserId,tenantId]);useEffect(()=>{void loadConnections()},[loadConnections]);useEffect(()=>{const square=searchParams.get('square'),mail=searchParams.get('mail'),connection=searchParams.get('connection'),provider=searchParams.get('provider');if(!square&&!mail&&!connection)return;if(square==='connected')toast.success('Square connected');else if(square==='error')toast.error('Square connection was not completed');if(mail==='connected')toast.success('Zoho Mail connected');else if(mail==='error')toast.error('Zoho Mail connection was not completed');if(connection==='connected')toast.success(`${providerLabel(provider||'provider')} connected`);else if(connection==='error')toast.error(`${providerLabel(provider||'provider')} connection was not completed`);void loadConnections();const next=new URLSearchParams(searchParams);['square','reason','mail','mail_code','connection','provider'].forEach(k=>next.delete(k));setSearchParams(next,{replace:true})},[loadConnections,searchParams,setSearchParams]);const connectionMap=useMemo(()=>new Map(rows.map(r=>[r.provider,r])),[rows]);const providerReady=useCallback((r?:ConnectionRow|null)=>{if(!r||!isConnectedStatus(r.credential_status))return false;if(PROVIDER_MAP.get(r.provider as ProviderKey)?.kind==='secret'&&r.provider!=='irslogiqs'&&!r.last_verified_at)return false;if(r.provider==='google_workspace'){const scopes=Array.isArray(r.metadata?.granted_scopes)?r.metadata!.granted_scopes.map((value:any)=>String(value)):[];return REQUIRED_GOOGLE_WORKSPACE_SCOPES.every(scope=>scopes.includes(scope))}if(r.provider==='quickbooks')return Boolean(String(r.metadata?.realm_id||'').trim());return true},[]);const providerStatusText=useCallback((r?:ConnectionRow|null)=>isConnectedStatus(r?.credential_status)&&!providerReady(r)?'Needs reconnect':statusLabel(r?.credential_status),[providerReady]);const activeRows=useMemo(()=>rows.filter(r=>providerReady(r)),[rows,providerReady]);const savedRows=useMemo(()=>rows.filter(r=>r.credential_status&&r.credential_status!=='missing').sort((a,b)=>{const rank=(s?:string|null)=>isConnectedStatus(s)?0:(s==='invalid'||s==='degraded')?1:s==='pending'?2:3;return rank(a.credential_status)-rank(b.credential_status)||providerLabel(a.provider).localeCompare(providerLabel(b.provider))}),[rows]);const attentionCount=useMemo(()=>rows.filter(r=>r.credential_status==='invalid'||r.credential_status==='degraded'||r.credential_status==='pending'||(isConnectedStatus(r.credential_status)&&!providerReady(r))).length,[rows,providerReady]);const results=useMemo(()=>{const n=query.trim().toLowerCase();return n?PROVIDERS.filter(p=>[p.label,p.category,p.description,...p.keywords,...p.capabilities].join(' ').toLowerCase().includes(n)):PROVIDERS},[query]);useEffect(()=>{if(!loading&&!tabTouched)setTab(activeRows.length>0?'mine':'find')},[activeRows.length,loading,tabTouched]);const providerConfigured=useCallback((p:ProviderDefinition)=>p.driver!=='broker'||brokerAvailability[p.key]?.configured===true,[brokerAvailability]);const chooseProvider=(p:ProviderDefinition)=>{setSecretForm({apiSecret:'',accountSid:'',fromNumber:'',fromEmail:'',fromName:'',publishableKey:'',accountSubdomain:'',secretToken:'',statusIds:'',r2AccessKeyId:'',r2AccountId:'',r2Endpoint:'',r2Bucket:'',r2Region:'auto'});setDisconnectArmed(false);setAdvancedSetup(false);setSelected(p)};const openProviderApp=(p:ProviderDefinition)=>window.open(CONNECTOR_URLS[p.key],'_blank','noopener,noreferrer');const setGooglePrimary=async(connectionId:string)=>{if(!tenantId)return;setConnecting(true);try{const{data,error}=await supabase.functions.invoke('tenant-provider-connections',{body:{action:'set_primary',tenant_id:tenantId,provider:'google_workspace',connection_id:connectionId,projected_user_id:projectedUserId||undefined}});if(error||data?.ok!==true)throw new Error(data?.error||error?.message||'Could not set primary Google Workspace');toast.success('Primary Google Workspace updated');await loadConnections()}catch(e:any){toast.error(e?.message||'Could not set primary Google Workspace')}finally{setConnecting(false)}};const setGoogleRole=async(account:GoogleWorkspaceAccount,role:'secondary'|'legacy'|'import')=>{if(!tenantId||account.is_primary)return;setConnecting(true);try{const{data,error}=await supabase.functions.invoke('tenant-provider-connections',{body:{action:'set_role',tenant_id:tenantId,provider:'google_workspace',connection_id:account.id,connection_role:role,projected_user_id:projectedUserId||undefined}});if(error||data?.ok!==true)throw new Error(data?.error||error?.message||'Could not update Google Workspace role');toast.success('Google Workspace role updated');await loadConnections()}catch(e:any){toast.error(e?.message||'Could not update Google Workspace role')}finally{setConnecting(false)}};const setGoogleService=async(account:GoogleWorkspaceAccount,service:'mail'|'drive'|'calendar')=>{if(!tenantId)return;setConnecting(true);try{const next={...account.services,[service]:!account.services[service]};const{data,error}=await supabase.functions.invoke('tenant-provider-connections',{body:{action:'set_services',tenant_id:tenantId,provider:'google_workspace',connection_id:account.id,services:next,projected_user_id:projectedUserId||undefined}});if(error||data?.ok!==true)throw new Error(data?.error||error?.message||'Could not update Google service access');await loadConnections()}catch(e:any){toast.error(e?.message||'Could not update Google service access')}finally{setConnecting(false)}};const disconnectGoogleAccount=async(connectionId:string)=>{if(!tenantId)return;setConnecting(true);try{const{data,error}=await supabase.functions.invoke('tenant-provider-connections',{body:{action:'revoke',tenant_id:tenantId,provider:'google_workspace',connection_id:connectionId,projected_user_id:projectedUserId||undefined}});if(error||data?.ok!==true)throw new Error(data?.error||error?.message||'Could not disconnect Google Workspace account');toast.success('Google Workspace account disconnected');await loadConnections()}catch(e:any){toast.error(e?.message||'Could not disconnect Google Workspace account')}finally{setConnecting(false)}};const connectOauth=async(p:ProviderDefinition)=>{if(!tenantId)return;setConnecting(true);try{if(p.driver==='square'){const{data,error}=await supabase.functions.invoke('finance-square',{body:{action:'authorize_url',tenant_id:tenantId,return_path:returnPath}});if(error||data?.ok!==true||!data?.authorize_url)throw new Error(data?.error||error?.message||'Could not start Square connection');window.location.assign(String(data.authorize_url));return}if(p.driver==='zoho'){const{data,error}=await supabase.functions.invoke('zoho-mail',{body:{action:'authorize_url',tenantId,returnPath}});if(error||data?.ok!==true||!data?.authorize_url)throw new Error(data?.error||error?.message||'Could not start Zoho Mail connection');window.location.assign(String(data.authorize_url));return}if(p.driver==='broker'){const{data,error}=await supabase.functions.invoke('tenant-provider-connections',{body:{action:'authorize_url',tenant_id:tenantId,provider:p.key,return_path:returnPath,projected_user_id:projectedUserId||undefined}});if(error||data?.ok!==true||!data?.authorize_url)throw new Error(data?.error||error?.message||`Could not start ${p.label} connection`);window.location.assign(String(data.authorize_url));return}throw new Error('This provider does not use OAuth')}catch(e:any){toast.error(e?.message||`Could not connect ${p.label}`);setConnecting(false)}};const connectSecretProvider=async(p:ProviderDefinition)=>{if(!tenantId)return;if(!secretForm.apiSecret.trim()){toast.error('Enter the provider credential first');return}setConnecting(true);try{const body:Record<string,any>={tenant_id:tenantId,provider:p.key,api_secret:secretForm.apiSecret.trim()};if(projectedUserId)body.projected_user_id=projectedUserId;if(p.key==='twilio'){body.account_sid=secretForm.accountSid.trim();body.from_number=secretForm.fromNumber.trim()}else if(p.key==='resend'){body.from_email=secretForm.fromEmail.trim();body.from_name=secretForm.fromName.trim()}else if(p.key==='stripe')body.publishable_key=secretForm.publishableKey.trim();else if(p.key==='cloudflare_r2'){body.access_key_id=secretForm.r2AccessKeyId.trim();body.account_id=secretForm.r2AccountId.trim();body.endpoint=secretForm.r2Endpoint.trim();body.bucket=secretForm.r2Bucket.trim();body.region=secretForm.r2Region.trim()||'auto'}else if(p.key==='irslogiqs'){if(!secretForm.accountSubdomain.trim()){toast.error('Enter the IRSLogiqs account subdomain');setConnecting(false);return}if(!secretForm.secretToken.trim()){toast.error('Enter the IRSLogiqs Secret Token');setConnecting(false);return}body.account_subdomain=secretForm.accountSubdomain.trim();body.secret_token=secretForm.secretToken.trim()}const stored=await supabase.functions.invoke('upsert-tenant-provider-secret',{body});if(stored.error||stored.data?.ok!==true)throw new Error(stored.data?.error||stored.error?.message||`Could not save ${p.label} connection`);if(p.key!=='irslogiqs'){const verified=await supabase.functions.invoke('verify-tenant-provider',{body:{tenant_id:tenantId,provider:p.key}});if(verified.error||verified.data?.ok!==true)throw new Error(verified.data?.error||verified.error?.message||`${p.label} could not be verified`);toast.success(`${p.label} connected`)}else{const verified=await supabase.functions.invoke('irslogiqs-sync',{body:{tenant_id:tenantId}});if(verified.error||verified.data?.ok!==true)throw new Error(verified.data?.error||verified.error?.message||'IRSLogiqs could not be verified');toast.success('IRSLogiqs verified and connected.')}setSelected(null);setSecretForm({apiSecret:'',accountSid:'',fromNumber:'',fromEmail:'',fromName:'',publishableKey:'',accountSubdomain:'',secretToken:'',statusIds:'',r2AccessKeyId:'',r2AccountId:'',r2Endpoint:'',r2Bucket:'',r2Region:'auto'});await loadConnections()}catch(e:any){toast.error(e?.message||`Could not connect ${p.label}`)}finally{setConnecting(false)}};const disconnectProvider=async(p:ProviderDefinition)=>{if(!tenantId)return;if(!disconnectArmed){setDisconnectArmed(true);return}setConnecting(true);try{const{data,error}=await supabase.functions.invoke('tenant-provider-connections',{body:{action:'revoke',tenant_id:tenantId,provider:p.key,projected_user_id:projectedUserId||undefined}});if(error||data?.ok!==true)throw new Error(data?.error||error?.message||`Could not disconnect ${p.label}`);toast.success(`${p.label} disconnected`);setSelected(null);setDisconnectArmed(false);await loadConnections()}catch(e:any){toast.error(e?.message||`Could not disconnect ${p.label}`)}finally{setConnecting(false)}};const selectedRow=selected?connectionMap.get(selected.key):null,selectedStatus=selectedRow?.credential_status||null,selectedConnected=isConnectedStatus(selectedStatus),selectedReady=selectedConnected&&providerReady(selectedRow),selectedConfigured=selected?providerConfigured(selected):false;const tenantSlug=String(activeTenant?.company_slug||'').trim().toLowerCase();const pcgUsesGoogle=tenantSlug==='pcg'||tenantSlug==='prestigious-card-grading';const googleWorkspace=PROVIDER_MAP.get('google_workspace')!;const googleRow=connectionMap.get('google_workspace');const googleConnected=isConnectedStatus(googleRow?.credential_status);const googleMeta=(googleRow?.metadata||{}) as Record<string,unknown>;const googleScopes=Array.isArray(googleMeta.granted_scopes)?googleMeta.granted_scopes.map(value=>String(value)):[];const googleDriveReady=googleConnected&&googleScopes.includes('https://www.googleapis.com/auth/drive.file');const showCommissioning=searchParams.get('commissioning')==='1';const commissioningSettings=((activeTenant as any)?.settings||{}) as Record<string,any>;const requiredCommissioningProviders=useMemo(()=>requiredProvidersFromTenantSettings(commissioningSettings),[commissioningSettings]);const persistedMigration=(commissioningSettings.client_commissioning?.migration||null) as any;const commissioningManifest=useMemo<ClientCommissioningReceipt>(()=>buildClientCommissioningReceipt({tenantId,tenantType:activeTenant?.tenant_type,peopleLoaded,invitationsLoaded:peopleLoaded,memberships:teamRows,invitations:inviteRows,providersLoaded:!loading,providerCredentials:rows,googleAccounts,providerCatalog:PROVIDERS.map(provider=>provider.key),requiredProviders:requiredCommissioningProviders,migration:persistedMigration}),[activeTenant?.tenant_type,googleAccounts,inviteRows,loading,peopleLoaded,persistedMigration,requiredCommissioningProviders,rows,teamRows,tenantId]);return <section className=\"mx-auto w-full max-w-6xl space-y-5\" data-tenant-connections=\"true\">{projection?<Card data-godmode-projected-user-connections=\"true\" className=\"border-primary/30 bg-primary/[.06]\"><CardContent className=\"flex flex-col gap-1 p-4 sm:flex-row sm:items-center sm:justify-between\"><div><p className=\"text-xs font-bold uppercase tracking-[.16em] text-primary\">GodMode user projection</p><p className=\"mt-1 text-sm font-semibold\">Viewing connections as {projection.projectedUserName||projection.projectedUserEmail||'selected tenant user'}</p><p className=\"mt-1 text-xs text-muted-foreground\">Actual role: {projection.actualRole||projection.role}{projection.roleOverride?` · Simulating: ${projection.roleOverride}`:''}. Support changes remain audited to your GodMode account.</p></div><Badge variant=\"outline\">User-scoped support</Badge></CardContent></Card>:null}<Card className=\"overflow-hidden border-border/70 bg-card/95 shadow-sm\"><CardHeader className=\"gap-5 p-5 sm:p-6\"><div className=\"flex flex-col gap-4 sm:flex-row sm:items-start sm:justify-between\"><div className=\"flex min-w-0 items-start gap-3\"><span className=\"grid h-11 w-11 shrink-0 place-items-center rounded-2xl border border-primary/20 bg-primary/10 text-primary shadow-sm\"><PlugZap className=\"h-5 w-5\"/></span><div className=\"min-w-0\"><CardTitle className=\"text-2xl tracking-tight sm:text-3xl\">Connections</CardTitle><CardDescription className=\"mt-1 max-w-2xl text-sm leading-6\">Connect and manage the services {businessName} uses without leaving the workspace workflow.</CardDescription></div></div><div className=\"flex shrink-0 flex-wrap items-center gap-2\"><Button size=\"sm\" variant={showCommissioning?'default':'outline'} onClick={()=>{const next=new URLSearchParams(searchParams);if(showCommissioning)next.delete('commissioning');else next.set('commissioning','1');setSearchParams(next,{replace:true})}} data-client-setup-toggle=\"true\">{showCommissioning?'Hide client setup':'Client setup'}</Button><Badge variant=\"outline\" className=\"w-fit border-primary/20 bg-primary/5 px-3 py-1.5 text-xs font-semibold\">Owner controls</Badge></div></div><div className=\"grid gap-2 sm:grid-cols-3\"><div className=\"rounded-2xl border border-border/70 bg-background/55 px-4 py-3\"><p className=\"text-xs font-medium text-muted-foreground\">Connected</p><p className=\"mt-1 text-2xl font-semibold tracking-tight\">{activeRows.length}</p></div><div className=\"rounded-2xl border border-border/70 bg-background/55 px-4 py-3\"><p className=\"text-xs font-medium text-muted-foreground\">Needs attention</p><p className=\"mt-1 text-2xl font-semibold tracking-tight\">{attentionCount}</p></div><div className=\"rounded-2xl border border-border/70 bg-background/55 px-4 py-3\"><p className=\"text-xs font-medium text-muted-foreground\">Available providers</p><p className=\"mt-1 text-2xl font-semibold tracking-tight\">{PROVIDERS.length}</p></div></div></CardHeader></Card>{googleAccounts.length>0?<Card data-google-workspace-accounts=\"true\" className=\"border-border/70 bg-card/95\"><CardHeader className=\"gap-3 sm:flex-row sm:items-start sm:justify-between\"><div><CardTitle className=\"text-base\">Google Workspace accounts</CardTitle><CardDescription className=\"mt-1\">This workspace can keep more than one Google account connected. One account is primary for normal Mail, Calendar, and Drive work; additional accounts stay available as secondary or legacy sources.</CardDescription></div><Button className=\"shrink-0\" onClick={()=>void connectOauth(googleWorkspace)} disabled={connecting}>Add another Google Workspace</Button></CardHeader><CardContent className=\"space-y-2\">{googleAccounts.map(account=><div key={account.id} className=\"flex flex-col gap-3 rounded-xl border p-3 sm:flex-row sm:items-center sm:justify-between\"><div className=\"min-w-0\"><div className=\"flex flex-wrap items-center gap-2\"><span className=\"truncate text-sm font-semibold\">{account.email||account.name||'Google Workspace account'}</span>{account.is_primary?<Badge variant=\"outline\" className={statusBadgeClass('active')}>Primary</Badge>:<Badge variant=\"outline\">{account.role==='legacy'?'Legacy':account.role==='import'?'Import':'Secondary'}</Badge>}</div><div className=\"mt-1 text-xs text-muted-foreground\">{account.name&&account.email?account.name+' · ':''}{account.role.replaceAll('_',' ')}</div><div className=\"mt-1 text-[11px] text-muted-foreground\">Scopes: {account.scopes.length?account.scopes.map(scope=>scope.split('/').pop()||scope).join(', '):'provider default'}</div></div><div className=\"flex flex-wrap gap-2\"><Button size=\"sm\" variant={account.services.mail?'default':'outline'} disabled={connecting} onClick={()=>void setGoogleService(account,'mail')}>Mail</Button><Button size=\"sm\" variant={account.services.drive?'default':'outline'} disabled={connecting} onClick={()=>void setGoogleService(account,'drive')}>Drive</Button><Button size=\"sm\" variant={account.services.calendar?'default':'outline'} disabled={connecting} onClick={()=>void setGoogleService(account,'calendar')}>Calendar</Button>{!account.is_primary?<><Button size=\"sm\" variant=\"outline\" disabled={connecting} onClick={()=>void setGooglePrimary(account.id)}>Set primary</Button>{(['secondary','legacy','import'] as const).map(role=><Button key={role} size=\"sm\" variant={account.role===role?'default':'outline'} disabled={connecting} onClick={()=>void setGoogleRole(account,role)}>{role[0].toUpperCase()+role.slice(1)}</Button>)}</>:null}<Button size=\"sm\" variant=\"outline\" disabled={connecting} onClick={()=>void disconnectGoogleAccount(account.id)}>Disconnect</Button></div></div>)}</CardContent></Card>:null}{pcgUsesGoogle?<Card data-pcg-google-workspace-required=\"true\" className=\"border-primary/20 bg-primary/[.035]\"><CardHeader className=\"gap-3 sm:flex-row sm:items-start sm:justify-between\"><div><CardTitle className=\"text-base\">PCG uses Google Workspace Drive + Gmail</CardTitle><CardDescription className=\"mt-1\">PCG master card imagery is stored in Anthony’s dedicated Cloudflare R2 bucket. Google Workspace is auxiliary for Gmail and legacy/import file access; it is not the card-image source of truth.</CardDescription></div><Badge variant=\"outline\" className={googleDriveReady?statusBadgeClass('active'):'border-amber-400/25 bg-amber-400/10 text-amber-200'}>{googleDriveReady?'Drive ready':googleConnected?'Reconnect for Drive':'Setup required'}</Badge></CardHeader><CardContent className=\"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between\"><p className=\"text-sm text-muted-foreground\">Card intake does not depend on Google Drive. New card masters go to Cloudflare R2. Keep Google Workspace connected only for Gmail and any legacy/import files Anthony still wants available.</p><Button className=\"shrink-0\" onClick={()=>chooseProvider(googleWorkspace)}>{googleDriveReady?'Manage Google Workspace':googleConnected?'Reconnect Google Workspace':'Connect Google account'}</Button></CardContent></Card>:null}{showCommissioning?<Card data-client-commissioning=\"true\" className=\"border-primary/20 bg-card/95\"><CardHeader><CardTitle className=\"text-base\">Client commissioning</CardTitle><CardDescription>Deterministic setup manifest for this tenant. Unknown people or role mappings stay blocked instead of being guessed, provider provenance is preserved, and cross-tenant credential fallback is disabled.</CardDescription></CardHeader><CardContent className=\"space-y-3\"><div className=\"flex flex-wrap gap-2\">{commissioningManifest.stages.map(stage=><Badge key={stage} variant=\"outline\">{stage}</Badge>)}</div><div className=\"grid gap-2 sm:grid-cols-3\"><div className=\"rounded-xl border p-3\"><p className=\"text-xs text-muted-foreground\">Provider instances</p><p className=\"mt-1 text-lg font-semibold\">{commissioningManifest.providerInstances.length}</p></div><div className=\"rounded-xl border p-3\"><p className=\"text-xs text-muted-foreground\">Isolation</p><p className=\"mt-1 text-sm font-semibold\">No cross-tenant fallback</p></div><div className=\"rounded-xl border p-3\"><p className=\"text-xs text-muted-foreground\">Go-live blockers</p><p className=\"mt-1 text-lg font-semibold\">{commissioningManifest.readiness.blockers.length}</p></div></div><div className=\"grid gap-2 sm:grid-cols-3\"><div className=\"rounded-xl border p-3\"><p className=\"text-xs text-muted-foreground\">People</p><p className=\"mt-1 text-sm font-semibold\">{commissioningManifest.people.state==='resolved'?`${commissioningManifest.people.activeCount} active · ${commissioningManifest.people.invitationCount} invites`:'Not loaded'}</p></div><div className=\"rounded-xl border p-3\"><p className=\"text-xs text-muted-foreground\">Role contract</p><p className=\"mt-1 text-sm font-semibold\">{commissioningManifest.roles.state==='resolved'?'Resolved':commissioningManifest.roles.state==='blocked'?`${commissioningManifest.roles.invalid.length} invalid`:'Not loaded'}</p></div><div className=\"rounded-xl border p-3\"><p className=\"text-xs text-muted-foreground\">Manifest fingerprint</p><p className=\"mt-1 truncate font-mono text-xs font-semibold\">{commissioningManifest.manifestFingerprint}</p></div></div><p className=\"text-xs leading-5 text-muted-foreground\">People, invitation delivery, roles, provider instances, required connections, migration state, provenance, and tenant isolation are evaluated from observed tenant state. Unknown roles fail closed and never silently become Rep. PAUL connection research is credential-free and activation stays a separate tenant/provider-instance authorization.</p></CardContent></Card>:null}<Tabs value={tab} onValueChange={v=>{setTab(v as ConnectionsTab);setTabTouched(true)}} className=\"space-y-4\"><TabsList className=\"grid w-full grid-cols-2 sm:w-[360px]\"><TabsTrigger value=\"mine\" className=\"gap-2\">{projection?'User connections':'My connections'}{activeRows.length>0?<Badge variant=\"secondary\" className=\"px-1.5 py-0 text-[10px]\">{activeRows.length}</Badge>:null}</TabsTrigger><TabsTrigger value=\"find\">Find a connection</TabsTrigger></TabsList><TabsContent value=\"mine\" className=\"space-y-4\">{loading?<Card className=\"border-border/70 bg-card/90\"><CardContent className=\"flex min-h-32 items-center justify-center\"><Loader2 className=\"h-5 w-5 animate-spin text-muted-foreground\"/></CardContent></Card>:null}{!loading&&savedRows.length===0?<Card className=\"border-dashed border-border/80 bg-card/70\"><CardContent className=\"flex flex-col items-center px-5 py-10 text-center\"><span className=\"grid h-12 w-12 place-items-center rounded-2xl bg-primary/10 text-primary\"><PlugZap className=\"h-5 w-5\"/></span><p className=\"mt-4 font-semibold\">No connections yet</p><p className=\"mt-1 max-w-md text-sm leading-6 text-muted-foreground\">Add the tools this business actually uses. Connected services will stay organized here.</p><Button className=\"mt-5\" onClick={()=>{setTab('find');setTabTouched(true)}}>Find a connection</Button></CardContent></Card>:null}{!loading&&savedRows.length>0?<CompactDisclosureList type=\"single\" collapsible data-compact-disclosure-list=\"connections-saved\">{savedRows.map(r=>{const p=PROVIDER_MAP.get(r.provider as ProviderKey),Icon=p?.icon||PlugZap,active=providerReady(r);return <CompactDisclosureItem key={r.provider} value={r.provider} data-connection-row={r.provider}><CompactDisclosureTrigger><span className=\"flex min-w-0 flex-1 items-center gap-3 pr-2\"><span className=\"grid h-9 w-9 shrink-0 place-items-center rounded-xl border border-border/70 bg-muted/40 text-foreground\"><Icon className=\"h-4 w-4\"/></span><span className=\"min-w-0 flex-1\"><span className=\"block truncate text-sm font-semibold text-foreground\">{providerLabel(r.provider)}</span><span className=\"mt-0.5 block truncate text-xs font-normal text-muted-foreground\">{connectionDetail(r)}</span></span><Badge variant=\"outline\" className={statusBadgeClass(isConnectedStatus(r.credential_status)&&!providerReady(r)?'pending':r.credential_status)}>{providerStatusText(r)}</Badge></span></CompactDisclosureTrigger><CompactDisclosureContent><div className=\"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between\">{r.last_verified_at?<p className=\"text-xs text-muted-foreground\">Verified {new Date(r.last_verified_at).toLocaleString()}</p>:<p className=\"text-xs text-muted-foreground\">Verification pending</p>}<div className=\"flex flex-wrap gap-2\">{p?<Button size=\"sm\" className={r.provider==='cloudflare_r2'&&!active?'w-full sm:w-auto':''} onClick={()=>chooseProvider(p)} data-review-connection={r.provider}>{active?'Manage':p?.kind==='secret'?'Admin setup required':r.credential_status==='invalid'?'Fix connection':'Review'}</Button>:null}{p?<Button size=\"sm\" variant=\"outline\" onClick={()=>openProviderApp(p)}>Open app <ExternalLink className=\"ml-1.5 h-3.5 w-3.5\"/></Button>:null}</div></div></CompactDisclosureContent></CompactDisclosureItem>})}</CompactDisclosureList>:null}</TabsContent><TabsContent value=\"find\" className=\"space-y-4\"><Card className=\"border-border/70 bg-card/95 shadow-sm\"><CardContent className=\"p-4 sm:p-5\"><div className=\"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between\"><div className=\"relative min-w-0 flex-1\"><Search className=\"absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground\"/><Input value={query} onChange={e=>setQuery(e.target.value)} placeholder=\"Search payments, email, calendar, files, CRM…\" className=\"h-11 pl-10\" aria-label=\"Search available connectors\"/></div><p className=\"shrink-0 text-xs font-medium text-muted-foreground\">{results.length} of {PROVIDERS.length} providers</p></div></CardContent></Card>{results.length>0?<div className=\"min-w-0 max-w-full overflow-hidden rounded-2xl border border-border/70 bg-card/90\" data-connector-list=\"connections-catalog\">{results.map(p=>{const Icon=p.icon,row=connectionMap.get(p.key),connected=providerReady(row),configured=providerConfigured(p),setupPending=p.driver==='broker'&&!configured&&!connected;return <div key={p.key} className=\"flex min-w-0 max-w-full items-center gap-3 border-b border-border/70 px-3 py-3 last:border-b-0 sm:px-4\" data-connection-result={p.key} data-connector-url={CONNECTOR_URLS[p.key]}><span className=\"grid h-9 w-9 shrink-0 place-items-center rounded-xl border border-primary/15 bg-primary/8 text-primary\"><Icon className=\"h-4 w-4\"/></span><span className=\"min-w-0 flex-1 overflow-hidden\"><span className=\"block truncate text-sm font-semibold text-foreground\">{p.label}</span><span className=\"mt-0.5 block truncate text-xs font-normal text-muted-foreground\">{p.description}</span></span><Button size=\"sm\" className=\"shrink-0\" variant={setupPending?'outline':'default'} onClick={()=>chooseProvider(p)} data-connector-action={p.key}>{connected?'Manage':p.kind==='secret'?'Admin setup':setupPending?'Not ready':'Connect'}</Button></div>})}</div>:<Card className=\"border-dashed border-border/80 bg-card/70\"><CardContent className=\"px-5 py-10 text-center\"><Search className=\"mx-auto h-6 w-6 text-muted-foreground\"/><p className=\"mt-3 font-semibold\">No matching connection</p><p className=\"mt-1 text-sm text-muted-foreground\">Try a provider name or a category like payments, email, calendar, files, or CRM.</p></CardContent></Card>}</TabsContent></Tabs><Dialog open={Boolean(selected)} onOpenChange={open=>{if(!open&&!connecting){setSelected(null);setDisconnectArmed(false);setAdvancedSetup(false)}}}>{selected?<DialogContent className=\"sm:max-w-xl\"><DialogHeader><DialogTitle className=\"flex items-center gap-2\"><selected.icon className=\"h-5 w-5 text-primary\"/>{selectedConnected?`Manage ${selected.label}`:selected.kind==='oauth'?`Sign in with ${selected.label}`:`Connect ${selected.label}`}</DialogTitle><DialogDescription>{selected.description}</DialogDescription></DialogHeader><div className=\"grid gap-3 rounded-2xl border bg-muted/25 p-4 sm:grid-cols-2\"><div><p className=\"text-xs font-bold uppercase tracking-wide text-muted-foreground\">What this unlocks</p><div className=\"mt-2 flex flex-wrap gap-1.5\">{selected.capabilities.map(c=><Badge key={c} variant=\"outline\">{c}</Badge>)}</div></div><div><p className=\"text-xs font-bold uppercase tracking-wide text-muted-foreground\">What KnockLaunch needs</p><ul className=\"mt-2 space-y-1 text-sm text-muted-foreground\">{selected.permissions.map(p=><li key={p}>• {p}</li>)}</ul></div></div>{selected.driver==='broker'&&!selectedConfigured&&!selectedConnected?<div className=\"flex gap-3 rounded-2xl border border-amber-400/20 bg-amber-400/[.06] p-4 text-sm text-muted-foreground\"><ShieldCheck className=\"mt-0.5 h-5 w-5 shrink-0 text-amber-300\"/><p>{brokerAvailability[selected.key]?.setup_message||`${selected.label} sign-in is not ready yet. There is nothing you need to configure. KnockLaunch is finishing the platform connection; once it is enabled, this will be a single Sign in with ${selected.label} button.`}</p></div>:selected.kind==='oauth'?<div className=\"rounded-2xl border bg-muted/30 p-4 text-sm text-muted-foreground\"><div className=\"flex gap-3\"><ShieldCheck className=\"mt-0.5 h-5 w-5 shrink-0 text-primary\"/><p>Click Sign in with {selected.label}. {selected.label} handles the sign-in and permission screen. You never give KnockLaunch your {selected.label} password.</p></div></div>:<div className=\"space-y-4\"><div className=\"rounded-2xl border bg-muted/30 p-4 text-sm text-muted-foreground\"><div className=\"flex gap-3\"><KeyRound className=\"mt-0.5 h-5 w-5 shrink-0 text-primary\"/><div className=\"min-w-0\"><p className=\"font-semibold text-foreground\">Admin-managed connection</p><p className=\"mt-1\">This provider does not currently offer a KnockLaunch sign-in flow. Its credentials are configured securely by a KnockLaunch administrator and are never entered or displayed in the normal tenant workspace.</p></div></div><Badge variant=\"outline\" className=\"mt-3 border-primary/20 bg-primary/5\">Admin-managed setup</Badge></div><div className={advancedSetup?'space-y-4':'hidden'}>{selected.key==='twilio'?<><div className=\"space-y-1.5\"><Label>Account SID</Label><Input value={secretForm.accountSid} onChange={e=>setSecretForm(c=>({...c,accountSid:e.target.value}))} placeholder=\"AC…\" autoComplete=\"off\"/></div><div className=\"space-y-1.5\"><Label>Auth token</Label><Input type=\"password\" value={secretForm.apiSecret} onChange={e=>setSecretForm(c=>({...c,apiSecret:e.target.value}))} autoComplete=\"new-password\"/></div><div className=\"space-y-1.5\"><Label>Sending number</Label><Input value={secretForm.fromNumber} onChange={e=>setSecretForm(c=>({...c,fromNumber:e.target.value}))} placeholder=\"+1…\" autoComplete=\"off\"/></div></>:null}{selected.key==='resend'?<><div className=\"space-y-1.5\"><Label>API key</Label><Input type=\"password\" value={secretForm.apiSecret} onChange={e=>setSecretForm(c=>({...c,apiSecret:e.target.value}))} autoComplete=\"new-password\"/></div><div className=\"space-y-1.5\"><Label>From email</Label><Input type=\"email\" value={secretForm.fromEmail} onChange={e=>setSecretForm(c=>({...c,fromEmail:e.target.value}))} placeholder=\"info@yourcompany.com\"/></div><div className=\"space-y-1.5\"><Label>From name</Label><Input value={secretForm.fromName} onChange={e=>setSecretForm(c=>({...c,fromName:e.target.value}))} placeholder={businessName}/></div></>:null}{selected.key==='cloudflare_r2'?<><div className=\"space-y-1.5\"><Label>Access Key ID</Label><Input value={secretForm.r2AccessKeyId} onChange={e=>setSecretForm(c=>({...c,r2AccessKeyId:e.target.value}))} autoComplete=\"off\"/></div><div className=\"space-y-1.5\"><Label>Secret Access Key</Label><Input type=\"password\" value={secretForm.apiSecret} onChange={e=>setSecretForm(c=>({...c,apiSecret:e.target.value}))} autoComplete=\"new-password\"/></div><div className=\"space-y-1.5\"><Label>Account ID</Label><Input value={secretForm.r2AccountId} onChange={e=>setSecretForm(c=>({...c,r2AccountId:e.target.value}))} autoComplete=\"off\"/></div><div className=\"space-y-1.5\"><Label>S3 endpoint</Label><Input value={secretForm.r2Endpoint} onChange={e=>setSecretForm(c=>({...c,r2Endpoint:e.target.value}))} placeholder=\"https://ACCOUNT_ID.r2.cloudflarestorage.com\" autoComplete=\"off\"/></div><div className=\"space-y-1.5\"><Label>Bucket</Label><Input value={secretForm.r2Bucket} onChange={e=>setSecretForm(c=>({...c,r2Bucket:e.target.value}))} autoComplete=\"off\"/></div><div className=\"space-y-1.5\"><Label>Region</Label><Input value={secretForm.r2Region} onChange={e=>setSecretForm(c=>({...c,r2Region:e.target.value}))} placeholder=\"auto\" autoComplete=\"off\"/></div><p className=\"text-xs text-muted-foreground sm:col-span-2\">Use a bucket-scoped Cloudflare R2 Object Read & Write S3 credential. KnockLaunch verifies the bucket before activating storage.</p></>:null}{selected.key==='squarespace'?<><div className=\"space-y-1.5\"><Label>Squarespace Commerce API key</Label><Input type=\"password\" value={secretForm.apiSecret} onChange={e=>setSecretForm(c=>({...c,apiSecret:e.target.value}))} placeholder=\"Squarespace API key\" autoComplete=\"new-password\"/></div><p className=\"text-xs text-muted-foreground sm:col-span-2\">Create a Squarespace API key with Products read/write access for Anthony’s current PCG site. KnockLaunch verifies the key against Squarespace before enabling publishing.</p></>:null}{selected.key==='irslogiqs'?<><div className=\"space-y-1.5\"><Label>Account subdomain</Label><Input value={secretForm.accountSubdomain} onChange={e=>setSecretForm(c=>({...c,accountSubdomain:e.target.value}))} placeholder=\"your-account\" autoComplete=\"off\"/></div><div className=\"space-y-1.5\"><Label>API key</Label><Input type=\"password\" value={secretForm.apiSecret} onChange={e=>setSecretForm(c=>({...c,apiSecret:e.target.value}))} autoComplete=\"new-password\"/></div><div className=\"space-y-1.5\"><Label>Secret Token</Label><Input type=\"password\" value={secretForm.secretToken} onChange={e=>setSecretForm(c=>({...c,secretToken:e.target.value}))} autoComplete=\"new-password\"/></div><p className=\"text-xs text-muted-foreground sm:col-span-2\">Use the IRSLogiqs API key from Security → API Key and Secret Token from Settings → Integrations. KnockLaunch discovers any case-status filtering it needs automatically; there is nothing else to configure. Connect verifies the credentials immediately with a read-only IRSLogiqs request before the connection becomes active.</p></>:null}</div></div>}{selectedReady?<div className=\"flex items-center gap-2 rounded-xl border border-emerald-400/20 bg-emerald-400/[.07] px-3 py-2 text-sm text-emerald-200\"><CheckCircle2 className=\"h-4 w-4\"/>This provider is connected and ready.</div>:selectedConnected?<div className=\"flex items-center gap-2 rounded-xl border border-amber-400/20 bg-amber-400/[.07] px-3 py-2 text-sm text-amber-100\"><ShieldCheck className=\"h-4 w-4\"/>The authorization is saved, but required capability data is incomplete. Reconnect this provider before relying on it.</div>:(selectedStatus==='invalid'||selectedStatus==='degraded')?<div className=\"flex items-center gap-2 rounded-xl border border-red-400/20 bg-red-400/[.07] px-3 py-2 text-sm text-red-200\"><XCircle className=\"h-4 w-4\"/>The saved credential needs to be replaced and verified again.</div>:null}{disconnectArmed?<div className=\"rounded-xl border border-red-400/20 bg-red-400/[.07] px-3 py-2 text-sm text-red-100\">Disconnecting removes KnockLaunch’s stored authorization immediately. Click Confirm disconnect to continue.</div>:null}<DialogFooter className=\"gap-2 sm:gap-2\"><Button variant=\"outline\" onClick={()=>{setSelected(null);setDisconnectArmed(false)}} disabled={connecting}>Cancel</Button>{selectedConnected?<Button variant=\"destructive\" onClick={()=>void disconnectProvider(selected)} disabled={connecting} data-revoke-connection={selected.key}>{connecting?<Loader2 className=\"mr-2 h-4 w-4 animate-spin\"/>:null}{disconnectArmed?'Confirm disconnect':`Disconnect ${selected.label}`}</Button>:null}{(!selectedConnected||selectedConfigured)&&(selected.driver!=='broker'||selectedConfigured)&&(selected.kind==='oauth'||advancedSetup)?<Button onClick={()=>selected.kind==='oauth'?void connectOauth(selected):void connectSecretProvider(selected)} disabled={connecting} data-activate-connection={selected.key}>{connecting?<Loader2 className=\"mr-2 h-4 w-4 animate-spin\"/>:<PlugZap className=\"mr-2 h-4 w-4\"/>}{selectedConnected?`Reconnect ${selected.label}`:selected.kind==='oauth'?`Sign in with ${selected.label}`:`Connect ${selected.label}`}</Button>:null}</DialogFooter></DialogContent>:null}</Dialog></section>}\n","expectedSha":"76e4117a99ef5268969c0340f675d64a5ac6db34"}],"branch":"ai/objective-first-repair-470ab57a99c2","writes":[],"patches":[],"version":1,"approved":true,"missionId":"470ab57a-99c2-48c9-aeda-5a2cb5eebcf8","objective":"Prioritize eBay and Stripe Connections. Keep the newly deployed eBay OAuth broker implementation intact. Convert Stripe from tenant-entered API keys to a real Stripe Connect OAuth flow in the canonical tenant-provider-connections broker and Connections UI. Stripe must appear as OAuth/broker, launch Stripe authorization when platform Connect credentials are configured, store the connected Stripe account token tenant-scoped, preserve disconnect/manage behavior, and expose no Stripe secret-key or publishable-key form in normal tenant UX. Use STRIPE_CONNECT_CLIENT_ID and STRIPE_CONNECT_CLIENT_SECRET as platform-owned configuration. Gate, squash merge, release both the frontend and tenant-provider-connections Edge Function, and verify production source/deploy identity. Do not claim user-operable login unless live catalog configuration reports Stripe configured.","repository":"noel/KnockLaunchOS","ownerApproved":true,"releaseIntent":null,"sourceTargets":["supabase/functions/tenant-provider-connections/index.ts","src/pages/connections/TenantConnections.tsx"],"implementation":{"files":[],"writes":[]},"requestContract":{"source":"explicit","version":1,"outcomes":[{"id":"outcome-1","statement":"Prioritize eBay and Stripe Connections. Keep the newly deployed eBay OAuth broker implementation intact. Convert Stripe from tenant-entered API keys to a real Stripe Connect OAuth flow in the canonical tenant-provider-connections broker and Connections UI. Stripe must appear as OAuth/broker, launch Stripe authorization when platform Connect credentials are configured, store the connected Stripe account token tenant-scoped, preserve disconnect/manage behavior, and expose no Stripe secret-key or publishable-key form in normal tenant UX. Use STRIPE_CONNECT_CLIENT_ID and STRIPE_CONNECT_CLIENT_SECRET as platform-owned configuration. Gate, squash merge, release both the frontend and tenant-provider-connections Edge Function, and verify production source/deploy identity. Do not claim user-operable login unless live catalog configuration reports Stripe configured.","provenance":{"reason":null,"source":"current_explicit_owner_request","inherited":false,"blockingAuthority":true},"proofConditionIds":["proof-production"]}],"objective":"Prioritize eBay and Stripe Connections. Keep the newly deployed eBay OAuth broker implementation intact. Convert Stripe from tenant-entered API keys to a real Stripe Connect OAuth flow in the canonical tenant-provider-connections broker and Connections UI. Stripe must appear as OAuth/broker, launch Stripe authorization when platform Connect credentials are configured, store the connected Stripe account token tenant-scoped, preserve disconnect/manage behavior, and expose no Stripe secret-key or publishable-key form in normal tenant UX. Use STRIPE_CONNECT_CLIENT_ID and STRIPE_CONNECT_CLIENT_SECRET as platform-owned configuration. Gate, squash merge, release both the frontend and tenant-provider-connections Edge Function, and verify production source/deploy identity. Do not claim user-operable login unless live catalog configuration reports Stripe configured.","constraints":[],"terminalPolicy":"all_required_proof_conditions_satisfied_after_live_release","proofConditions":[{"id":"proof-production","kind":"runtime","claim":"Stripe is implemented as OAuth/Stripe Connect in the deployed broker and frontend, eBay remains implemented, and live provider readiness is reported truthfully.","route":null,"roleRef":null,"userRef":null,"required":true,"expectedText":null,"targetedActions":[],"allowedReleaseTargets":[],"requiredReleaseTargets":[]}]},"repairGeneration":null,"executionEnvelope":{"ship":true,"version":1,"approved":true,"missionId":null,"ownerApproved":true,"releaseIntent":null,"sourceTargets":["supabase/functions/tenant-provider-connections/index.ts","src/pages/connections/TenantConnections.tsx"],"requestContract":{"source":"explicit","version":1,"outcomes":[{"id":"outcome-1","statement":"Prioritize eBay and Stripe Connections. Keep the newly deployed eBay OAuth broker implementation intact. Convert Stripe from tenant-entered API keys to a real Stripe Connect OAuth flow in the canonical tenant-provider-connections broker and Connections UI. Stripe must appear as OAuth/broker, launch Stripe authorization when platform Connect credentials are configured, store the connected Stripe account token tenant-scoped, preserve disconnect/manage behavior, and expose no Stripe secret-key or publishable-key form in normal tenant UX. Use STRIPE_CONNECT_CLIENT_ID and STRIPE_CONNECT_CLIENT_SECRET as platform-owned configuration. Gate, squash merge, release both the frontend and tenant-provider-connections Edge Function, and verify production source/deploy identity. Do not claim user-operable login unless live catalog configuration reports Stripe configured.","provenance":{"reason":null,"source":"current_explicit_owner_request","inherited":false,"blockingAuthority":true},"proofConditionIds":["proof-production"]}],"objective":"Prioritize eBay and Stripe Connections. Keep the newly deployed eBay OAuth broker implementation intact. Convert Stripe from tenant-entered API keys to a real Stripe Connect OAuth flow in the canonical tenant-provider-connections broker and Connections UI. Stripe must appear as OAuth/broker, launch Stripe authorization when platform Connect credentials are configured, store the connected Stripe account token tenant-scoped, preserve disconnect/manage behavior, and expose no Stripe secret-key or publishable-key form in normal tenant UX. Use STRIPE_CONNECT_CLIENT_ID and STRIPE_CONNECT_CLIENT_SECRET as platform-owned configuration. Gate, squash merge, release both the frontend and tenant-provider-connections Edge Function, and verify production source/deploy identity. Do not claim user-operable login unless live catalog configuration reports Stripe configured.","constraints":[],"terminalPolicy":"all_required_proof_conditions_satisfied_after_live_release","proofConditions":[{"id":"proof-production","kind":"runtime","claim":"Stripe is implemented as OAuth/Stripe Connect in the deployed broker and frontend, eBay remains implemented, and live provider readiness is reported truthfully.","route":null,"roleRef":null,"userRef":null,"required":true,"expectedText":null,"targetedActions":[],"allowedReleaseTargets":[],"requiredReleaseTargets":[]}]},"repairGeneration":null,"proofRequirements":null,"controlPlaneUnfreeze":false,"controlPlaneMaintenance":false,"controlPlaneMaintenancePaths":[],"controlPlaneMaintenanceReason":null},"proofRequirements":null,"controlPlaneUnfreeze":false,"durableMutationResume":true,"controlPlaneMaintenance":false,"controlPlaneMaintenancePaths":[],"controlPlaneMaintenanceReason":null},"recovery":false,"fingerprint":"391590dba9e25d93a58afad4651d3bfae1a8407992c102fd53eed4fc02ea0e07","replayCount":0,"serializedBytes":102793},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-06T00:34:49.001072+00:00","proof_gate":"repository_mutation_intent_persisted","source_sha":null,"external_id":null,"receipt_type":"repository_mutation_intent","idempotency_key":"mission:470ab57a-99c2-48c9-aeda-5a2cb5eebcf8:repository-mutation-intent:391590dba9e25d93a58afad4651d3bfae1a8407992c102fd53eed4fc02ea0e07:0","mission_step_id":"4d9fe2ed-5541-46f0-adeb-e30bf12cfdc0","command_center_event_id":"470ab57a-99c2-48c9-aeda-5a2cb5eebcf8"},{"id":"bd839dc8-b92b-448e-8d94-7ca11d6604d0","source":"cc-execution","status":"synthesis_required","payload":{"ok":true,"jobId":null,"phase":"objective_received","branch":"ai/objective-first-repair-943b268ebe90","reason":null,"status":"synthesis_required","metrics":{"receiptBytes":0,"releaseCount":0,"toolCallCount":0,"repeatedCallCount":0,"executorlessWaitMs":0,"firstUsefulResultAt":null,"recoveryAttemptCount":0,"ownerInterruptionCount":0},"version":"1.64.94-terminal-completion-supervisor","prNumber":null,"terminal":false,"missionId":"943b268e-be90-4561-84f3-bed0b61fe1a5","operation":"execute_mission","proofGate":"repair_mission_synthesis_ready","sourceSha":null,"timingsMs":{"gateMs":0,"proofMs":0,"handlerMs":2671,"releaseMs":0,"mutationMs":0,"repositoryMs":0,"missionSetupMs":2384,"providerAuthMs":0,"ledgerPrepareMs":2384,"ledgerReconcileMs":0,"lineageReconcileMs":0,"resolvePreflightMs":2384,"authoritativeLedgerMs":0,"ledgerAsyncDispatchMs":0,"totalSynchronousLedgerMs":2384,"asyncBookkeepingDispatchMs":0,"ledgerAuthoritativeCommitMs":0},"nextAction":"Inspect the bounded repository paths, synthesize exact files or anchored_edits, and call /mission/execute again automatically with this same missionId without another owner prompt or workflow switch.","receiptRef":{"mode":"full","missionId":"943b268e-be90-4561-84f3-bed0b61fe1a5"},"performance":null,"deploymentId":null,"releaseState":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","pendingProofKinds":[],"verificationState":null,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":3417,"likelyAffectedFiles":["src/pages/crm/PcgWorkspace.tsx"],"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true,"requestContractState":"pending"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-04T19:57:16.428549+00:00","proof_gate":"repair_mission_synthesis_ready","source_sha":null,"external_id":null,"receipt_type":"execute_mission","idempotency_key":"mission:943b268e-be90-4561-84f3-bed0b61fe1a5:execute_mission:repair_mission_synthesis_ready:current-generation","mission_step_id":"95a98c6e-86ca-47f4-9a9d-9abdc99a576b","command_center_event_id":"943b268e-be90-4561-84f3-bed0b61fe1a5"},{"id":"bd848904-f151-49dc-bc59-12eaa79f80de","source":"cc-execution","status":"deployment_dispatched","payload":{"ok":true,"jobId":null,"phase":"release","branch":"ai/objective-first-repair-a3d6673b3c9f","reason":null,"status":"deployment_dispatched","metrics":{"receiptBytes":0,"releaseCount":2,"toolCallCount":0,"repeatedCallCount":0,"ownerInterruptionCount":0},"version":null,"prNumber":2469,"terminal":false,"missionId":"a3d6673b-3c9f-4d2f-b261-b03d33ae21ac","operation":"automatic_mission_resume","proofGate":"canonical_release_dispatched","sourceSha":"d94aa396eccb9631e8f4eaeb63062a1bb577107a","timingsMs":{"prReadinessMs":691,"approvedPlanMs":0,"shipAndProveMs":3016,"repositoryMutationMs":0,"repositoryProviderMs":0,"repositoryAtomicCommitMs":0,"repositoryBranchCreateMs":0,"repositoryPullRequestCreateMs":0},"nextAction":null,"receiptRef":{"mode":"full","missionId":"a3d6673b-3c9f-4d2f-b261-b03d33ae21ac"},"performance":null,"deploymentId":"forgejo-main-d94aa396eccb","workflowRunId":7297,"releaseTargets":{"frontend":false,"onrunner":false,"migrations":false,"ccExecution":true,"supabaseEdge":false,"edgeFunctionSlugs":[]},"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":2069,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-12T01:49:27.078605+00:00","proof_gate":"canonical_release_dispatched","source_sha":null,"external_id":"2469","receipt_type":"automatic_mission_resume","idempotency_key":"mission:a3d6673b-3c9f-4d2f-b261-b03d33ae21ac:automatic-mission-resume:2469:canonical_release_dispatched","mission_step_id":"f6fe0f0a-a4ca-453b-b49c-e45dc3cb0d08","command_center_event_id":"a3d6673b-3c9f-4d2f-b261-b03d33ae21ac"},{"id":"bd86ac76-3882-4fa5-842a-714cfa80bd45","source":"cc-execution","status":"blocked","payload":{"reason":"control_plane_maintenance_request_contract_required","fingerprint":"b808b3516b563854d7cde2a80f190852a772888014752e3db1e40522c6b04b11"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-05T18:52:51.029541+00:00","proof_gate":"repository_mutation_intent_deterministic_failure","source_sha":null,"external_id":null,"receipt_type":"repository_mutation_intent_blocked","idempotency_key":"mission:26af90c1-91d2-4596-9103-007df826bd96:repository-mutation-intent-blocked:b808b3516b563854d7cde2a80f190852a772888014752e3db1e40522c6b04b11","mission_step_id":"590fa173-47d6-4a3d-9e70-022bac5c4ff6","command_center_event_id":"26af90c1-91d2-4596-9103-007df826bd96"},{"id":"bd87e9bb-1ccb-4555-8bb2-b2bb2b833b05","source":"cc-execution","status":"waiting_for_gate","payload":{"ok":true,"jobId":null,"phase":"implementation","branch":"ai/big-papis-zoho-mail","reason":"pull_request_checks_pending","status":"waiting_for_gate","metrics":{"receiptBytes":17494,"releaseCount":0,"toolCallCount":11,"repeatedCallCount":6,"ownerInterruptionCount":0},"version":"1.47.6-live-release-idempotency","prNumber":425,"terminal":false,"missionId":"6614d3fd-5a35-4676-9cf0-7978438d3e42","operation":"ship_and_prove","proofGate":"ship_and_prove_waiting_for_gate","sourceSha":null,"timingsMs":null,"nextAction":null,"receiptRef":{"mode":"full","missionId":"6614d3fd-5a35-4676-9cf0-7978438d3e42"},"performance":null,"deploymentId":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":5537,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true},"tenant_id":"766cfaa7-ac42-46c8-bbef-69d13268a29d","created_at":"2026-08-19T14:37:53.245173+00:00","proof_gate":"ship_and_prove_waiting_for_gate","source_sha":null,"external_id":"425","receipt_type":"ship_and_prove","idempotency_key":"mission:6614d3fd-5a35-4676-9cf0-7978438d3e42:ship_and_prove:ship_and_prove_waiting_for_gate:no-source:no-run","mission_step_id":"ac41ec83-aea1-4565-bf79-003be401ae6a","command_center_event_id":"6614d3fd-5a35-4676-9cf0-7978438d3e42"},{"id":"bd88b159-e10d-4c20-9fcb-dd4a5cf9baaf","source":"cc-execution","status":"in_progress","payload":{"ok":true,"jobId":null,"phase":"release","branch":"ai/tenant-app-contract-standardization","reason":null,"status":"in_progress","metrics":{"receiptBytes":0,"releaseCount":1,"toolCallCount":0,"repeatedCallCount":0,"ownerInterruptionCount":0},"version":"1.58.77-mcp-oauth-es256","prNumber":2209,"terminal":false,"missionId":"c8033605-c2a0-4742-b1c3-c72a514dd8f2","operation":"execute_mission","proofGate":"canonical_release_reconciliation_pending","sourceSha":"8c4f2bfba787caf80ccbe0ebf67baa445033490f","timingsMs":{"gateMs":0,"proofMs":0,"handlerMs":20241,"releaseMs":0,"mutationMs":0,"repositoryMs":0,"prReadinessMs":899,"approvedPlanMs":0,"missionSetupMs":436,"providerAuthMs":0,"shipAndProveMs":18579,"ledgerPrepareMs":436,"ledgerReconcileMs":0,"lineageReconcileMs":0,"resolvePreflightMs":436,"repositoryMutationMs":0,"repositoryProviderMs":0,"authoritativeLedgerMs":0,"ledgerAsyncDispatchMs":0,"repositoryAtomicCommitMs":0,"repositoryBranchCreateMs":0,"totalSynchronousLedgerMs":436,"asyncBookkeepingDispatchMs":0,"ledgerAuthoritativeCommitMs":0,"repositoryPullRequestCreateMs":0},"nextAction":"Reconcile this same mission and pull request automatically; do not create replacement work.","receiptRef":{"mode":"full","missionId":"c8033605-c2a0-4742-b1c3-c72a514dd8f2"},"performance":null,"deploymentId":"forgejo-main-8c4f2bfba787","workflowRunId":6511,"releaseTargets":{"frontend":true,"onrunner":false,"migrations":false,"ccExecution":false,"supabaseEdge":false,"edgeFunctionSlugs":[]},"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":1479,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-09T01:56:43.906185+00:00","proof_gate":"canonical_release_reconciliation_pending","source_sha":"8c4f2bfba787caf80ccbe0ebf67baa445033490f","external_id":"forgejo-main-8c4f2bfba787","receipt_type":"execute_mission","idempotency_key":"mission:c8033605-c2a0-4742-b1c3-c72a514dd8f2:execute_mission:canonical_release_reconciliation_pending:current-generation","mission_step_id":"6ea9f2fb-a727-4e76-aa7f-404c30ff52c6","command_center_event_id":"c8033605-c2a0-4742-b1c3-c72a514dd8f2"},{"id":"bd88f33d-21f3-451b-9bea-d7c5fc9a3c3d","source":"cc-execution","status":"waiting_for_gate","payload":{"ok":true,"jobId":null,"phase":"pull_request","branch":"ai/objective-first-repair-6f17dc7ec1f8","reason":"pull_request_checks_pending","status":"waiting_for_gate","metrics":{"receiptBytes":0,"releaseCount":0,"toolCallCount":0,"repeatedCallCount":0,"ownerInterruptionCount":0},"version":null,"prNumber":3426,"terminal":false,"missionId":"6f17dc7e-c1f8-470e-b5f3-324858c42d28","operation":"automatic_mission_resume","proofGate":"repair_mission_waiting_for_gate","sourceSha":null,"timingsMs":{"prReadinessMs":540,"approvedPlanMs":0,"shipAndProveMs":0,"repositoryMutationMs":0,"repositoryProviderMs":0,"repositoryAtomicCommitMs":0,"repositoryBranchCreateMs":0,"repositoryPullRequestCreateMs":0},"nextAction":"Reconcile this same mission and pull request after the exact-head KnockLaunch Gate changes state.","receiptRef":{"mode":"full","missionId":"6f17dc7e-c1f8-470e-b5f3-324858c42d28"},"performance":null,"deploymentId":null,"releaseState":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","pendingProofKinds":[],"verificationState":null,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":1285,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true,"requestContractState":"pending"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-22T13:29:49.550498+00:00","proof_gate":"repair_mission_waiting_for_gate","source_sha":null,"external_id":"3426","receipt_type":"automatic_mission_resume","idempotency_key":"mission:6f17dc7e-c1f8-470e-b5f3-324858c42d28:automatic-mission-resume:3426:repair_mission_waiting_for_gate","mission_step_id":"d43cd73e-3c36-4c3a-8b89-6eecceef4fad","command_center_event_id":"6f17dc7e-c1f8-470e-b5f3-324858c42d28"},{"id":"bd8a1326-5e1c-47ea-af7d-84b371407458","source":"cc-execution","status":"authorized","payload":{"paths":["src/__tests__/contracts/paul-scheduled-synthesis.contract.test.ts","workers/cc-execution/src/index-mission-control.js","workers/cc-execution/src/mission-ledger.js"],"reason":"Owner-authorized repair of the proven PAUL scheduled synthesis and no-op lifecycle handoff. Exact source-bounded automation only; existing locked-path safety remains enforced.","baseSha":"4ef89e7fd46b83f33533e1e000015897583d8587","issuedAt":1790786826335,"expiresAt":1790787006335,"missionId":"213b5e73-5b97-4afd-b93d-518def6d6071","authorizationId":"480b9d1a-8a4f-4182-ac1d-7471f1ff17b2","retryableWithinExactScope":true},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-30T16:47:06.74695+00:00","proof_gate":"control_plane_maintenance_scope_authorized","source_sha":"4ef89e7fd46b83f33533e1e000015897583d8587","external_id":null,"receipt_type":"control_plane_maintenance_authorization","idempotency_key":"control-plane-maintenance-authorize:480b9d1a-8a4f-4182-ac1d-7471f1ff17b2","mission_step_id":"4be9b66b-0048-4c54-b985-f53b34c2250c","command_center_event_id":"213b5e73-5b97-4afd-b93d-518def6d6071"},{"id":"bd8a7fd8-6669-480d-9554-70abc3f73409","source":"cc-execution","status":"waiting_for_gate","payload":{"ok":true,"jobId":null,"phase":"implementation","branch":"ai/objective-first-repair-d09e5839c43c","reason":"provider_verified_auto_progress_owns_gate_merge_release_outside_owner_response","status":"waiting_for_gate","metrics":{"receiptBytes":14274,"releaseCount":0,"toolCallCount":4,"repeatedCallCount":0,"executorlessWaitMs":25814,"firstUsefulResultAt":"2026-10-02T19:59:11.898Z","recoveryAttemptCount":0,"ownerInterruptionCount":0},"version":"1.64.50-onepath-source-domain","prNumber":4521,"terminal":false,"missionId":"d09e5839-c43c-4a74-8907-a33aa3a1d3c2","operation":"execute_mission","proofGate":"repair_mission_pr_handed_off_to_supervisor","sourceSha":null,"timingsMs":{"gateMs":0,"proofMs":0,"handlerMs":5057,"releaseMs":0,"mutationMs":0,"repositoryMs":0,"prReadinessMs":0,"approvedPlanMs":1518,"missionSetupMs":274,"providerAuthMs":0,"shipAndProveMs":0,"ledgerPrepareMs":274,"ledgerReconcileMs":0,"lineageReconcileMs":0,"resolvePreflightMs":274,"repositoryMutationMs":3539,"repositoryProviderMs":3539,"authoritativeLedgerMs":0,"ledgerAsyncDispatchMs":0,"repositoryAtomicCommitMs":1996,"repositoryBranchCreateMs":0,"totalSynchronousLedgerMs":274,"asyncBookkeepingDispatchMs":0,"ledgerAuthoritativeCommitMs":0,"repositoryPullRequestCreateMs":1543},"nextAction":"Canonical KnockLaunch Gate notifier and durable mission supervisor own Gate, merge, release, and proof progression from this exact PR head outside the owner response path.","receiptRef":{"mode":"full","missionId":"d09e5839-c43c-4a74-8907-a33aa3a1d3c2"},"performance":null,"deploymentId":null,"releaseState":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","pendingProofKinds":[],"verificationState":null,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":3581,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true,"requestContractState":"pending"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-02T19:59:43.775545+00:00","proof_gate":"repair_mission_pr_handed_off_to_supervisor","source_sha":null,"external_id":"4521","receipt_type":"execute_mission","idempotency_key":"mission:d09e5839-c43c-4a74-8907-a33aa3a1d3c2:execute_mission:repair_mission_pr_handed_off_to_supervisor:current-generation","mission_step_id":"4f064110-fe16-4557-8c81-9301677d5d1f","command_center_event_id":"d09e5839-c43c-4a74-8907-a33aa3a1d3c2"},{"id":"bd918976-964a-4f86-b5c3-3c1fad62717b","source":"forgejo-runtime","status":"verified","payload":{"failed":[],"states":{"forgejo-main/source":"success","forgejo-release/workflow":"success","frontend-cloudflare/live":"success"},"mainSha":"24f572bb3d82e1e56cba82fcda0adfa6a5326063","missing":[],"pending":[],"required":["forgejo-main/source","forgejo-release/workflow","frontend-cloudflare/live"],"sourceSha":"24f572bb3d82e1e56cba82fcda0adfa6a5326063","releaseState":"verified","sourceInMain":true,"compareStatus":"protected_main_push_exact_source","releaseTargets":{"frontend":true,"onrunner":false,"migrations":false,"ccExecution":false,"supabaseEdge":false,"edgeFunctionSlugs":[]},"releaseTargetStates":{"frontend":"success"},"requestContractHash":"98fa544f9fe681a101aadef7e868e91b556c4686c3e90d40cb93cd00ae381ef1","forgejoWorkflowProof":{"url":"https://git.knocklaunch.app/noel/KnockLaunchOS/actions/runs/8763","runId":8763,"status":"success","sourceSha":"24f572bb3d82e1e56cba82fcda0adfa6a5326063","conclusion":null,"failedJobs":[],"diagnostics":null,"exactSource":true,"targetStates":{"frontend":"success"},"targetJobCount":7,"observedTargetStates":{"frontend":"success"}},"onrunnerRuntimeProof":null,"releaseSourceVerified":true,"ccExecutionRuntimeProof":null,"releaseTargetRecoveryProof":null,"exactReleaseVerifiedAfterMainAdvanced":false},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-16T14:43:00.853246+00:00","proof_gate":"canonical_release_terminal_verified","source_sha":"24f572bb3d82e1e56cba82fcda0adfa6a5326063","external_id":"forgejo-main-24f572bb3d82","receipt_type":"canonical_release_status","idempotency_key":"mission:b7d14137-df0a-43b6-a6a0-a4faad80c1cd:forgejo-release-status:24f572bb3d82e1e56cba82fcda0adfa6a5326063:verified:forgejo-main/source=success|forgejo-release/workflow=success|frontend-cloudflare/live=success","mission_step_id":"56cbb994-4269-4205-87f1-9840ac0774d1","command_center_event_id":"b7d14137-df0a-43b6-a6a0-a4faad80c1cd"},{"id":"bd9363d8-bb8a-4761-8a50-dca96bd9d4e7","source":"cc-execution","status":"retryable","payload":{"ok":false,"jobId":null,"phase":"pull_request","branch":"ai/objective-first-repair-60fe65fb412a","reason":"retryable_provider_transport:forgejo_provider_read_timeout","status":"retryable","metrics":{"receiptBytes":0,"releaseCount":0,"toolCallCount":0,"repeatedCallCount":0,"ownerInterruptionCount":0},"version":null,"prNumber":2238,"terminal":false,"missionId":"60fe65fb-412a-4f4e-848f-781390533940","operation":"automatic_mission_resume","proofGate":"repair_mission_pr_ready_retryable","sourceSha":null,"timingsMs":{"prReadinessMs":2156,"approvedPlanMs":0,"shipAndProveMs":0,"repositoryMutationMs":0,"repositoryProviderMs":0,"repositoryAtomicCommitMs":0,"repositoryBranchCreateMs":0,"repositoryPullRequestCreateMs":0},"nextAction":"Reconcile this same mission and pull request automatically; do not create a replacement branch or PR.","receiptRef":{"mode":"full","missionId":"60fe65fb-412a-4f4e-848f-781390533940"},"performance":null,"deploymentId":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":819,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-09T16:52:28.908886+00:00","proof_gate":"repair_mission_pr_ready_retryable","source_sha":null,"external_id":"2238","receipt_type":"automatic_mission_resume","idempotency_key":"mission:60fe65fb-412a-4f4e-848f-781390533940:automatic-mission-resume:2238:repair_mission_pr_ready_retryable","mission_step_id":"cad32b5d-922f-42f9-aed3-52e9375da61a","command_center_event_id":"60fe65fb-412a-4f4e-848f-781390533940"},{"id":"bd937c0f-2c48-46c3-81bc-6f1fefe7044c","source":"cc-execution","status":"authorized","payload":{"paths":["workers/cc-execution/test/release-orchestration-invariants.test.js"],"reason":"Gate proved the existing hard-safety operator-count invariant must be updated from 13 to 14 for the newly added forgejo_pr_reopen command. This is the only additional file and no runtime semantics change beyond the already-authorized reopen primitive.","baseSha":"434d467c8f1a21a3a60935879690eeb8a9a726a1","issuedAt":1789246589193,"expiresAt":1789246769193,"missionId":"21b436fd-01d7-4d57-a0f0-1736701208f6","authorizationId":"f4afe86c-0474-40d5-a24d-729b1aa8c515","retryableWithinExactScope":true},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-12T20:56:29.657396+00:00","proof_gate":"control_plane_maintenance_scope_authorized","source_sha":"434d467c8f1a21a3a60935879690eeb8a9a726a1","external_id":null,"receipt_type":"control_plane_maintenance_authorization","idempotency_key":"control-plane-maintenance-authorize:f4afe86c-0474-40d5-a24d-729b1aa8c515","mission_step_id":"79a91e67-fa01-498d-8453-e7781eafaeef","command_center_event_id":"21b436fd-01d7-4d57-a0f0-1736701208f6"},{"id":"bd947ea6-e3dc-4343-8087-54100db6760c","source":"cc-execution","status":"recorded","payload":{"requestContract":{"valid":true,"intent":{"evidence":[],"confidence":null,"rawUtterance":"Continue mission c417b477 on PR #1306. Fix remaining Redfish owner-workspace command/navigation defects found in the 26-app audit: command palette must recognize /homeowners/:id as a contact context, must not send Redfish to nonexistent pipeline or drive routes, and New Lead must open the new-leads view/form. Remove duplicate generic CRM chrome from the Redfish Rebuttals application while preserving the actual rebuttal editor. Keep the same branch/PR and do not merge/deploy yet.","wordingChanged":false,"canonicalIntent":"Continue mission c417b477 on PR #1306. Fix remaining Redfish owner-workspace command/navigation defects found in the 26-app audit: command palette must recognize /homeowners/:id as a contact context, must not send Redfish to nonexistent pipeline or drive routes, and New Lead must open the new-leads view/form. Remove duplicate generic CRM chrome from the Redfish Rebuttals application while preserving the actual rebuttal editor. Keep the same branch/PR and do not merge/deploy yet.","resolutionStatus":"exact","uniqueResolution":true,"clarificationRequired":false},"source":"explicit","version":1,"outcomes":[{"id":"owner-route-integrity","statement":"Redfish shared navigation and Operations Map links remain inside the owner-facing /redfish-roofing route family.","proofConditionIds":["proof-repository","proof-runtime"]},{"id":"homeowner-record-integrity","statement":"Redfish homeowner and lead record routing is canonicalized to the Homeowners route family and no SCE/PA-only feature panels leak into Redfish.","proofConditionIds":["proof-repository","proof-runtime"]},{"id":"owner-command-integrity","statement":"Redfish command-palette and New Lead actions point to real owner routes and Redfish Rebuttals does not recreate generic CRM chrome.","proofConditionIds":["proof-repository","proof-runtime"]}],"objective":"Continue mission c417b477 on PR #1306. Fix remaining Redfish owner-workspace command/navigation defects found in the 26-app audit: command palette must recognize /homeowners/:id as a contact context, must not send Redfish to nonexistent pipeline or drive routes, and New Lead must open the new-leads view/form. Remove duplicate generic CRM chrome from the Redfish Rebuttals application while preserving the actual rebuttal editor. Keep the same branch/PR and do not merge/deploy yet.","constraints":[{"id":"preserve-contracts","statement":"Do not change Redfish data, custom pipelines, financial records, workflow scripts, or any other tenant behavior.","proofConditionIds":["proof-repository"]}],"terminalPolicy":"all_required_proof_conditions_satisfied_after_live_release","proofConditions":[{"id":"proof-repository","kind":"repository","claim":"PR #1306 contains only bounded Redfish owner-workspace route and chrome repairs and passes KnockLaunch Gate.","route":null,"roleRef":null,"userRef":null,"required":true,"expectedText":null,"targetedActions":[],"allowedReleaseTargets":[],"requiredReleaseTargets":[]},{"id":"proof-runtime","kind":"runtime","claim":"The merged Redfish owner-workspace repair source is live on the frontend production runtime.","route":null,"roleRef":null,"userRef":null,"required":true,"expectedText":null,"targetedActions":[],"allowedReleaseTargets":[],"requiredReleaseTargets":[]}],"validationErrors":[]},"requestContractHash":"49a9495d61d0fc272da81629b43ce6fb3c7624f8588466e4d8889ad40f17bf30","requestContractRevision":3,"previousRequestContractHash":"438688bd62d9e723c2683b672c327d5ee878db26931ca6cf7e39728ea790b02b"},"tenant_id":"de8369b6-a78f-40bb-ae1f-28ffca62bc7e","created_at":"2026-09-01T20:56:02.948667+00:00","proof_gate":"request_contract_revision_recorded","source_sha":null,"external_id":null,"receipt_type":"request_contract_revision","idempotency_key":"mission:c417b477-62c0-4014-a60a-054912f42257:request-contract-revision:3:49a9495d61d0fc272da81629b43ce6fb3c7624f8588466e4d8889ad40f17bf30","mission_step_id":"f75a115f-2b00-41a7-847d-87e46ea7ab6b","command_center_event_id":"c417b477-62c0-4014-a60a-054912f42257"},{"id":"bd94bea4-08a9-4f35-a31f-5d210e2683df","source":"cc-execution","status":"waiting_for_gate","payload":{"ok":true,"jobId":null,"phase":"pull_request","branch":"ai/objective-first-repair-bd008151ac47","reason":"pull_request_checks_pending","status":"waiting_for_gate","metrics":{"receiptBytes":83327,"releaseCount":0,"toolCallCount":23,"repeatedCallCount":16,"executorlessWaitMs":1159842,"firstUsefulResultAt":"2026-10-02T14:16:08.592Z","recoveryAttemptCount":18,"ownerInterruptionCount":0},"version":"1.64.48-guarded-legacy-pr-retirement","prNumber":4470,"terminal":false,"missionId":"bd008151-ac47-4c79-9642-d7f60ce0d501","operation":"execute_mission","proofGate":"repair_mission_waiting_for_gate","sourceSha":null,"timingsMs":{"gateMs":0,"proofMs":0,"handlerMs":4127,"releaseMs":0,"mutationMs":0,"repositoryMs":0,"prReadinessMs":4000,"approvedPlanMs":0,"missionSetupMs":407,"providerAuthMs":0,"shipAndProveMs":0,"ledgerPrepareMs":296,"ledgerReconcileMs":0,"lineageReconcileMs":111,"resolvePreflightMs":407,"repositoryMutationMs":0,"repositoryProviderMs":0,"authoritativeLedgerMs":0,"ledgerAsyncDispatchMs":0,"repositoryAtomicCommitMs":0,"repositoryBranchCreateMs":0,"totalSynchronousLedgerMs":296,"asyncBookkeepingDispatchMs":0,"ledgerAuthoritativeCommitMs":0,"repositoryPullRequestCreateMs":0},"nextAction":"Reconcile this same mission and pull request after the exact-head KnockLaunch Gate changes state.","receiptRef":{"mode":"full","missionId":"bd008151-ac47-4c79-9642-d7f60ce0d501"},"performance":null,"deploymentId":null,"releaseState":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","pendingProofKinds":["runtime"],"verificationState":null,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":1692,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true,"requestContractState":"pending"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-02T14:43:22.705221+00:00","proof_gate":"repair_mission_waiting_for_gate","source_sha":null,"external_id":"4470","receipt_type":"execute_mission","idempotency_key":"mission:bd008151-ac47-4c79-9642-d7f60ce0d501:execute_mission:repair_mission_waiting_for_gate:current-generation","mission_step_id":"da00b8f3-2fbe-4d2a-9e99-8d3556e63853","command_center_event_id":"bd008151-ac47-4c79-9642-d7f60ce0d501"},{"id":"bd9633a8-fc31-4e5d-8dbc-308865df9817","source":"cc-execution","status":"waiting_for_gate","payload":{"ok":true,"jobId":null,"phase":"implementation","branch":"ai/objective-first-repair-mutvqzks","reason":"provider_verified_auto_progress_owns_gate_merge_release_outside_owner_response","status":"waiting_for_gate","metrics":{"receiptBytes":32964,"releaseCount":0,"toolCallCount":1,"repeatedCallCount":0,"executorlessWaitMs":0,"firstUsefulResultAt":"2026-10-04T13:57:34.232Z","recoveryAttemptCount":0,"ownerInterruptionCount":0},"version":"1.64.90-owner-contract-autocompile","prNumber":4798,"terminal":false,"missionId":"536e55dc-dabc-4153-9520-9fe3b9311c84","operation":"execute_mission","proofGate":"repair_mission_pr_handed_off_to_supervisor","sourceSha":null,"timingsMs":{"gateMs":0,"proofMs":0,"handlerMs":4362,"releaseMs":0,"mutationMs":0,"repositoryMs":0,"prReadinessMs":0,"approvedPlanMs":786,"missionSetupMs":333,"providerAuthMs":0,"shipAndProveMs":0,"ledgerPrepareMs":333,"ledgerReconcileMs":0,"lineageReconcileMs":0,"resolvePreflightMs":333,"repositoryMutationMs":3576,"repositoryProviderMs":3576,"authoritativeLedgerMs":0,"ledgerAsyncDispatchMs":0,"repositoryAtomicCommitMs":2254,"repositoryBranchCreateMs":0,"totalSynchronousLedgerMs":333,"asyncBookkeepingDispatchMs":0,"ledgerAuthoritativeCommitMs":0,"repositoryPullRequestCreateMs":1322},"nextAction":"Canonical KnockLaunch Gate notifier and durable mission supervisor own Gate, merge, release, and proof progression from this exact PR head outside the owner response path.","receiptRef":{"mode":"full","missionId":"536e55dc-dabc-4153-9520-9fe3b9311c84"},"performance":null,"deploymentId":null,"releaseState":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","pendingProofKinds":["runtime"],"verificationState":null,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":3425,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true,"requestContractState":"pending"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-04T13:57:42.080661+00:00","proof_gate":"repair_mission_pr_handed_off_to_supervisor","source_sha":null,"external_id":"4798","receipt_type":"execute_mission","idempotency_key":"mission:536e55dc-dabc-4153-9520-9fe3b9311c84:execute_mission:repair_mission_pr_handed_off_to_supervisor:current-generation","mission_step_id":"e239b075-8e5a-40e4-b7da-a265ab9e5083","command_center_event_id":"536e55dc-dabc-4153-9520-9fe3b9311c84"},{"id":"bd966695-952e-4b8f-bf6b-ab79c4c45d99","source":"cc-execution","status":"synthesis_required","payload":{"ok":true,"jobId":null,"phase":"reasoning_required","branch":"ai/objective-first-repair-a705b71f223e","reason":null,"status":"synthesis_required","metrics":{"receiptBytes":17268,"releaseCount":0,"toolCallCount":13,"repeatedCallCount":10,"executorlessWaitMs":82092,"firstUsefulResultAt":"2026-10-06T00:48:46.164Z","recoveryAttemptCount":0,"ownerInterruptionCount":0},"version":"1.65.7-prime-stale-manual-retirement-adapter","prNumber":null,"terminal":false,"missionId":"a705b71f-223e-41d2-b17f-5acf680e2db1","operation":"execute_mission","proofGate":"repair_mission_synthesis_ready","sourceSha":null,"timingsMs":{"gateMs":0,"proofMs":0,"handlerMs":3195,"releaseMs":0,"mutationMs":0,"repositoryMs":0,"missionSetupMs":280,"providerAuthMs":0,"ledgerPrepareMs":280,"ledgerReconcileMs":0,"lineageReconcileMs":0,"resolvePreflightMs":280,"authoritativeLedgerMs":0,"ledgerAsyncDispatchMs":0,"totalSynchronousLedgerMs":280,"asyncBookkeepingDispatchMs":0,"ledgerAuthoritativeCommitMs":0},"nextAction":"Inspect the bounded repository paths, synthesize exact files or anchored_edits, and call /mission/execute again automatically with this same missionId without another owner prompt or workflow switch.","receiptRef":{"mode":"full","missionId":"a705b71f-223e-41d2-b17f-5acf680e2db1"},"performance":null,"deploymentId":null,"releaseState":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","pendingProofKinds":["runtime","visual"],"verificationState":null,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":3523,"likelyAffectedFiles":["config/capabilities/pcg-public-card-intake.json"],"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true,"requestContractState":"pending"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-06T00:48:48.466737+00:00","proof_gate":"repair_mission_synthesis_ready","source_sha":null,"external_id":null,"receipt_type":"execute_mission","idempotency_key":"mission:a705b71f-223e-41d2-b17f-5acf680e2db1:execute_mission:repair_mission_synthesis_ready:current-generation","mission_step_id":"5a7fc5a4-1bc3-4e7f-b94b-0568c2638c58","command_center_event_id":"a705b71f-223e-41d2-b17f-5acf680e2db1"},{"id":"bd966e0b-1565-4441-9af9-c1b27285d4be","source":"cc-execution","status":"authorized","payload":{"paths":["src/__tests__/contracts/command-center-existing-branch-refresh.contract.test.ts"],"reason":"Prime structured exact mutation continuation","baseSha":"b9de631b6d57369f78fbe81e4942ce37ed1189de","issuedAt":1791230758443,"expiresAt":1791230938443,"missionId":"e83752ef-d135-46bc-a27e-9b05fd0d7897","authorizationId":"d1ef3ab4-6a1d-47fa-8a5e-ca040a337468","retryableWithinExactScope":true},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-05T20:05:58.946967+00:00","proof_gate":"control_plane_maintenance_scope_authorized","source_sha":"b9de631b6d57369f78fbe81e4942ce37ed1189de","external_id":null,"receipt_type":"control_plane_maintenance_authorization","idempotency_key":"control-plane-maintenance-authorize:d1ef3ab4-6a1d-47fa-8a5e-ca040a337468","mission_step_id":"5823fe2c-1e9c-44fa-b564-361db8c8148f","command_center_event_id":"e83752ef-d135-46bc-a27e-9b05fd0d7897"},{"id":"bd98deae-adfc-4e8f-ae75-12c3e4e3d9f2","source":"durable-mission-ledger","status":"verified","payload":{"sourceSha":"68235fa3681dbba5f5662aba693f6724c7e6590d","requestContractProof":{"legacy":false,"present":true,"outcomes":[{"id":"rollback","satisfied":true,"statement":"If acceptance fails after mutating an existing user, prior membership, tenant roles, profile fields, tenant ownership, and auth user metadata are restored; newly created invited accounts retain the existing full-delete rollback.","proofConditionIds":["repo","runtime"]},{"id":"landing","satisfied":true,"statement":"Successful acceptance returns tenantId, tenantSlug, and canonical landingPath derived from the verified tenant.","proofConditionIds":["repo","runtime"]},{"id":"finalization","satisfied":true,"statement":"Invitation is marked accepted only after membership, role, profile, and ownership verification succeeds.","proofConditionIds":["repo","runtime"]}],"satisfied":true,"constraints":[{"id":"single-owner","satisfied":true,"statement":"Change only the canonical accept-invitation primitive and regression coverage; do not create another invitation acceptance path.","proofConditionIds":["repo"]},{"id":"no-live-invite","satisfied":true,"statement":"Do not create or send real customer invitations for proof.","proofConditionIds":["runtime"]},{"id":"capability-completeness","satisfied":true,"statement":"Every dependency the implementation declares or relies on must be wired and proven across applicable frontend, backend/runtime, schema/data/storage, authentication/authorization, provider configuration, prerequisite/loading/empty/error states, release ownership, and live production behavior; owner-authorized unavailable dependencies must become explicit prerequisite states rather than runtime failures.","proofConditionIds":["repo","runtime"]},{"id":"atomic-capability-lifecycle","satisfied":true,"statement":"Changed capabilities remain non-active until dependency readiness, N/N-1 compatibility, affected-target release, and claim-matched production canary proof are satisfied; missing optional dependencies become prerequisite_required, and runtime drift or health-contract violation quarantines only the affected capability instead of breaking unrelated working capability.","proofConditionIds":["repo","runtime"]}],"contractHash":"bb47ec54c701f9a9b750b19ed32defd1c69b7cb119cf98ac0d30f313dc88d3ef","releaseBound":true,"witnessBound":false,"visualRequested":false,"visualSatisfied":true,"conditionResults":[{"id":"repo","kind":"repository","evidence":{"reason":null,"gateRunId":9663,"satisfied":true,"gateTestProof":null,"gateTestPassed":false,"missingTargets":[],"gateTestExecuted":false,"disallowedTargets":[],"migrationRequired":false,"namedGateTestPath":null,"releaseTargetStates":{"supabaseEdge":"success"},"repositoryProofGate":"request_contract_repository_verified","repositoryProofPath":null,"requestContractHash":"bb47ec54c701f9a9b750b19ed32defd1c69b7cb119cf98ac0d30f313dc88d3ef","unsuccessfulTargets":[],"activeReleaseTargets":["supabaseEdge"],"allowedReleaseTargets":["supabaseEdge"],"repositoryProofStatus":"verified","expectedRepositoryPath":null,"namedGateTestSatisfied":true,"requiredReleaseTargets":["supabaseEdge"],"migrationReleaseVerified":null,"repositoryConditionBound":true,"repositoryProofSourceSha":"68235fa3681dbba5f5662aba693f6724c7e6590d"},"required":true,"satisfied":true},{"id":"runtime","kind":"runtime","evidence":{"reason":null,"satisfied":true,"releaseState":"verified","missingTargets":[],"disallowedTargets":[],"migrationRequired":false,"releaseTargetStates":{"supabaseEdge":"success"},"unsuccessfulTargets":[],"activeReleaseTargets":["supabaseEdge"],"allowedReleaseTargets":["supabaseEdge"],"requiredReleaseTargets":["supabaseEdge"],"migrationReleaseVerified":null,"releaseRequestContractHash":"bb47ec54c701f9a9b750b19ed32defd1c69b7cb119cf98ac0d30f313dc88d3ef"},"required":true,"satisfied":true}],"validationErrors":[],"pendingProofKinds":[],"activeReleaseTargets":["supabaseEdge"]},"authoritativeMissionRefresh":true,"evaluatedRequestContractRevision":1},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-18T16:21:48.599374+00:00","proof_gate":"request_contract_terminal_verified","source_sha":"68235fa3681dbba5f5662aba693f6724c7e6590d","external_id":null,"receipt_type":"request_contract_reconciliation","idempotency_key":"mission:767de355-8d1c-40cc-884e-c1bf21a93da4:request-contract:bb47ec54c701f9a9b750b19ed32defd1c69b7cb119cf98ac0d30f313dc88d3ef:68235fa3681dbba5f5662aba693f6724c7e6590d:verified:","mission_step_id":"345d9c17-0d70-475a-8800-2606b94fc773","command_center_event_id":"767de355-8d1c-40cc-884e-c1bf21a93da4"},{"id":"bd98ffdc-f20e-49b5-8978-09fa610438dd","source":"cc-execution","status":"waiting_for_gate","payload":{"ok":true,"jobId":null,"phase":"implementation","branch":"ai/objective-first-repair-4f5629350243","reason":"provider_verified_auto_progress_owns_gate_merge_release_outside_owner_response","status":"waiting_for_gate","metrics":{"receiptBytes":0,"releaseCount":0,"toolCallCount":0,"repeatedCallCount":0,"ownerInterruptionCount":0},"version":"1.58.223-durable-witness-lane-affinity","prNumber":3535,"terminal":false,"missionId":"4f562935-0243-4d4c-8e92-442c01b17cbc","operation":"execute_mission","proofGate":"repair_mission_pr_handed_off_to_supervisor","sourceSha":null,"timingsMs":{"gateMs":0,"proofMs":0,"handlerMs":5451,"releaseMs":0,"mutationMs":0,"repositoryMs":0,"prReadinessMs":0,"approvedPlanMs":809,"missionSetupMs":364,"providerAuthMs":0,"shipAndProveMs":0,"ledgerPrepareMs":364,"ledgerReconcileMs":0,"lineageReconcileMs":0,"resolvePreflightMs":364,"repositoryMutationMs":4642,"repositoryProviderMs":4642,"authoritativeLedgerMs":0,"ledgerAsyncDispatchMs":0,"repositoryAtomicCommitMs":2548,"repositoryBranchCreateMs":0,"totalSynchronousLedgerMs":364,"asyncBookkeepingDispatchMs":0,"ledgerAuthoritativeCommitMs":0,"repositoryPullRequestCreateMs":2094},"nextAction":"Canonical KnockLaunch Gate notifier and durable mission supervisor own Gate, merge, release, and proof progression from this exact PR head outside the owner response path.","receiptRef":{"mode":"full","missionId":"4f562935-0243-4d4c-8e92-442c01b17cbc"},"performance":null,"deploymentId":null,"releaseState":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","pendingProofKinds":["runtime"],"verificationState":null,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":3218,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true,"requestContractState":"pending"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-23T16:29:44.791001+00:00","proof_gate":"repair_mission_pr_handed_off_to_supervisor","source_sha":null,"external_id":"3535","receipt_type":"execute_mission","idempotency_key":"mission:4f562935-0243-4d4c-8e92-442c01b17cbc:execute_mission:repair_mission_pr_handed_off_to_supervisor:current-generation","mission_step_id":"f43b4174-cda8-491c-b1d3-e9c37df69ddd","command_center_event_id":"4f562935-0243-4d4c-8e92-442c01b17cbc"},{"id":"bd99c393-2497-43ee-ad2a-5f3c699997f4","source":"forgejo-runtime","status":"pending","payload":{"failed":[],"states":{"forgejo-main/source":"success","forgejo-release/workflow":"pending","cc-execution/runtime-proof":"pending"},"mainSha":"792d98b6214eab6a14fb130e3645b2b44b87fa04","missing":[],"pending":["forgejo-release/workflow","cc-execution/runtime-proof"],"required":["forgejo-main/source","forgejo-release/workflow","cc-execution/runtime-proof"],"sourceSha":"792d98b6214eab6a14fb130e3645b2b44b87fa04","releaseState":"pending","sourceInMain":true,"compareStatus":"protected_main_push_exact_source","releaseTargets":{"frontend":false,"onrunner":false,"migrations":false,"ccExecution":true,"supabaseEdge":false,"edgeFunctionSlugs":[]},"releaseTargetStates":{"ccExecution":"pending"},"requestContractHash":"ab41749acc6a4eafb27c0339f1ad7c701d38426a0e21ddbf961357470ac3d6f4","forgejoWorkflowProof":{"url":"https://git.knocklaunch.app/noel/KnockLaunchOS/actions/runs/5274","runId":5274,"status":"running","sourceSha":"792d98b6214eab6a14fb130e3645b2b44b87fa04","conclusion":null,"failedJobs":[],"diagnostics":null,"exactSource":true,"targetStates":{"ccExecution":"pending"},"targetJobCount":7,"observedTargetStates":{"ccExecution":"pending"}},"onrunnerRuntimeProof":null,"releaseSourceVerified":true,"ccExecutionRuntimeProof":{"liveSha":"c9435f6d5853c6ebb9deb06f425bccabbcb981ee","deploymentId":"forgejo-main-c9435f6d5853c6ebb9deb06f425bccabbcb981ee","compareStatus":null,"identitySource":"local_build_metadata","runtimeVersion":"1.58.56-known-superseded-pr-cleanup","containsSourceSha":false},"releaseTargetRecoveryProof":null,"exactReleaseVerifiedAfterMainAdvanced":false},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-04T18:22:31.158223+00:00","proof_gate":"canonical_release_pending","source_sha":"792d98b6214eab6a14fb130e3645b2b44b87fa04","external_id":"forgejo-main-792d98b6214e","receipt_type":"canonical_release_status","idempotency_key":"mission:6705d859-325f-4053-8ba2-63fc38192958:forgejo-release-status:792d98b6214eab6a14fb130e3645b2b44b87fa04:pending:forgejo-main/source=success|forgejo-release/workflow=pending|cc-execution/runtime-proof=pending","mission_step_id":"e454ead2-a6b5-4fa8-bd55-243e62de641d","command_center_event_id":"6705d859-325f-4053-8ba2-63fc38192958"},{"id":"bd9a17d4-aa56-4a98-b841-1f0e5ced0113","source":"cc-execution","status":"cancelled","payload":{"cancelled":true,"missionId":"0ab0b58e-0612-4cef-bd0c-9f370ac33fef"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-03T23:20:19.412997+00:00","proof_gate":"durable_mission_cancelled","source_sha":null,"external_id":null,"receipt_type":"owner_mission_cancelled","idempotency_key":"mission:0ab0b58e-0612-4cef-bd0c-9f370ac33fef:mission-cancel:0ab0b58e-0612-4cef-bd0c-9f370ac33fef","mission_step_id":null,"command_center_event_id":"0ab0b58e-0612-4cef-bd0c-9f370ac33fef"},{"id":"bd9a3ea5-2b50-4858-a73c-5e9d4d5ef902","source":"cc-execution","status":"pending","payload":{"ok":true,"jobId":"63c49b6e-0839-44c9-bccb-bcf756294cff","phase":"universal_visual_witness_supervised","branch":"ai/calendar-final-mobile-authority-polish-20260907","reason":null,"status":"pending","metrics":{"receiptBytes":0,"releaseCount":0,"toolCallCount":0,"repeatedCallCount":0,"ownerInterruptionCount":0},"version":null,"prNumber":2097,"terminal":false,"missionId":"8a76ddba-3041-4df0-a7e3-45c2424957e5","operation":"visual_proof_started","proofGate":"universal_visual_witness_pending","sourceSha":"16c567ffb21328e5fc037bc4fa8889b51749c7a3","timingsMs":{"wake":200,"total":527,"submit":327,"wakeAttempts":1},"nextAction":"Poll inspect_route_status or cancel with inspect_route_cancel.","receiptRef":{"mode":"full","missionId":"8a76ddba-3041-4df0-a7e3-45c2424957e5"},"performance":null,"deploymentId":"forgejo-main-16c567ffb213","workflowRunId":6238,"releaseTargets":{"frontend":true,"onrunner":false,"migrations":false,"ccExecution":false,"supabaseEdge":false,"edgeFunctionSlugs":[]},"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":642,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true},"tenant_id":"c55998b4-82a3-467e-8d35-177bb4785f6e","created_at":"2026-09-07T19:25:22.809344+00:00","proof_gate":"post_release_visual_proof_started","source_sha":"16c567ffb21328e5fc037bc4fa8889b51749c7a3","external_id":"63c49b6e-0839-44c9-bccb-bcf756294cff","receipt_type":"visual_proof_started","idempotency_key":"mission:8a76ddba-3041-4df0-a7e3-45c2424957e5:visual-start:63c49b6e-0839-44c9-bccb-bcf756294cff","mission_step_id":"39766053-4cef-408c-ae9c-17cd0c18bba0","command_center_event_id":"8a76ddba-3041-4df0-a7e3-45c2424957e5"},{"id":"bd9bddc8-0f38-4011-b80a-98e4f8b7415e","source":"forgejo-runtime","status":"pending","payload":{"failed":[],"states":{"forgejo-main/source":"success","forgejo-release/workflow":"pending","cc-execution/runtime-proof":"success","supabase-edge-production/live":"pending"},"mainSha":"05b77e3e5958b4460793a8ba4a8903abb75cc09f","missing":[],"pending":["forgejo-release/workflow","supabase-edge-production/live"],"required":["forgejo-main/source","forgejo-release/workflow","cc-execution/runtime-proof","supabase-edge-production/live"],"sourceSha":"05b77e3e5958b4460793a8ba4a8903abb75cc09f","releaseState":"pending","sourceInMain":true,"compareStatus":"identical","forgejoWorkflowProof":{"url":"https://git.knocklaunch.app/noel/KnockLaunchOS/actions/runs/1471","runId":1471,"status":"running","conclusion":null,"failedJobs":[],"diagnostics":null},"onrunnerRuntimeProof":null,"releaseSourceVerified":true,"ccExecutionRuntimeProof":{"liveSha":"05b77e3e5958b4460793a8ba4a8903abb75cc09f","deploymentId":"forgejo-main-05b77e3e5958b4460793a8ba4a8903abb75cc09f","compareStatus":"identical","identitySource":"local_build_metadata","runtimeVersion":"1.47.6-live-release-idempotency","containsSourceSha":true},"exactReleaseVerifiedAfterMainAdvanced":false},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-08-19T15:55:49.000969+00:00","proof_gate":"canonical_release_pending","source_sha":"05b77e3e5958b4460793a8ba4a8903abb75cc09f","external_id":"forgejo-main-05b77e3e5958","receipt_type":"canonical_release_status","idempotency_key":"mission:cbe4f2a8-bd98-4f91-bcfe-8ef16e270cd6:forgejo-release-status:05b77e3e5958b4460793a8ba4a8903abb75cc09f:pending:forgejo-main/source=success|forgejo-release/workflow=pending|cc-execution/runtime-proof=success|supabase-edge-production/live=pending","mission_step_id":"cb47b484-6d25-4856-9e35-94b2fc237461","command_center_event_id":"cbe4f2a8-bd98-4f91-bcfe-8ef16e270cd6"},{"id":"bd9c2a6f-562e-4269-8ba1-8a92bcc8889f","source":"cc-execution","status":"waiting","payload":{"kind":"heartbeat","message":"Still active in visual proof.","nextAction":{"lane":"visual-sandbox","action":"verify_visual","reason":"release_verified_visual_proof_pending","automationAllowed":true,"ownerActionRequired":false},"silenceBudgetMs":15000,"semanticCheckpointSignature":"{\"stateMachineVersion\":1,\"phase\":\"visual_proof\",\"ownerFacingState\":null,\"latest\":{\"kind\":\"receipt\",\"key\":\"request_contract_reconciliation\",\"status\":\"pending\",\"proofGate\":\"request_contract_pending\"},\"activeStep\":{\"key\":\"implementation\",\"status\":\"waiting\",\"lane\":\"cc-execution\"},\"nextStep\":{\"key\":\"pull_request\",\"status\":\"waiting\",\"lane\":\"cc-execution\"},\"nextSafeAction\":{\"action\":\"verify_visual\",\"lane\":\"visual-sandbox\",\"reason\":\"release_verified_visual_proof_pending\",\"automationAllowed\":true,\"ownerActionRequired\":false},\"executionOwnership\":{\"active\":false,\"state\":\"waiting\",\"executor\":null,\"lane\":\"cc-execution\",\"nextAction\":\"verify_visual\",\"recoveryOwner\":\"visual-sandbox\"},\"acceptance\":{\"total\":2,\"verified\":1,\"pending\":1,\"percent\":50,\"satisfied\":false,\"verifiedIds\":[\"proof-production\"],\"pendingIds\":[\"proof-visual\"]},\"stall\":{\"stalled\":false,\"reason\":\"within_deadline\",\"step\":\"visual_proof\",\"deadlineAt\":\"2026-10-05T21:11:49.43394+00:00\",\"recoveryAction\":null},\"blocker\":null,\"terminal\":false,\"branch\":\"ai/objective-first-repair-d7ae93924645\",\"prNumber\":5002,\"sourceSha\":\"f974ee259fd187004ca84f5e9d518050ad900698\",\"deploymentId\":null}"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-05T17:19:37.846784+00:00","proof_gate":"owner_progress_heartbeat","source_sha":null,"external_id":null,"receipt_type":"owner_progress_heartbeat","idempotency_key":"mission:d7ae9392-4645-40d3-9b1e-8e506c612dda:owner-progress-heartbeat:119414718","mission_step_id":"8eb32bd4-1a9e-495f-8fb8-0b2769bb839c","command_center_event_id":"d7ae9392-4645-40d3-9b1e-8e506c612dda"},{"id":"bd9d2f54-0067-41e4-bef5-1327b8bcb24a","source":"cc-execution","status":"waiting_for_gate","payload":{"ok":true,"jobId":null,"phase":"pull_request","branch":"ai/tenant-readiness-contract-v1-20260913","reason":"pull_request_checks_pending","status":"waiting_for_gate","metrics":{"receiptBytes":0,"releaseCount":0,"toolCallCount":0,"repeatedCallCount":0,"ownerInterruptionCount":0},"version":null,"prNumber":2648,"terminal":false,"missionId":"4a9bbbf7-015e-4413-82e6-5fdab504ced0","operation":"automatic_mission_resume","proofGate":"repair_mission_waiting_for_gate","sourceSha":null,"timingsMs":{"prReadinessMs":3165,"approvedPlanMs":0,"shipAndProveMs":0,"repositoryMutationMs":0,"repositoryProviderMs":0,"repositoryAtomicCommitMs":0,"repositoryBranchCreateMs":0,"repositoryPullRequestCreateMs":0},"nextAction":"Reconcile this same mission and pull request after the exact-head KnockLaunch Gate changes state.","receiptRef":{"mode":"full","missionId":"4a9bbbf7-015e-4413-82e6-5fdab504ced0"},"performance":null,"deploymentId":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":1286,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-13T16:16:31.646356+00:00","proof_gate":"repair_mission_waiting_for_gate","source_sha":null,"external_id":"2648","receipt_type":"automatic_mission_resume","idempotency_key":"mission:4a9bbbf7-015e-4413-82e6-5fdab504ced0:automatic-mission-resume:2648:repair_mission_waiting_for_gate","mission_step_id":"34a3fb92-5772-46ab-bdec-a8014096213e","command_center_event_id":"4a9bbbf7-015e-4413-82e6-5fdab504ced0"},{"id":"bd9e5f88-1b49-4c48-8fdc-82a51f84a703","source":"forgejo","status":"waiting","payload":{"branch":"ai/universal-account-settings","prNumber":3290,"nextAction":"Follow the existing canonical release to terminal proof.","mergeCommitSha":"ea520535d26f859529f07fe22dd1815c04d8de96","branchDeletedAfterMerge":true,"correctiveGenerationCreated":false},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-20T15:02:05.134796+00:00","proof_gate":"forgejo_merged_pr_is_authoritative_source_lineage","source_sha":"ea520535d26f859529f07fe22dd1815c04d8de96","external_id":"3290","receipt_type":"source_lineage_merged_pr_authoritative","idempotency_key":"mission:cfd7c7b3-773d-46c5-8d99-cbb2455d0485:merged-pr:3290:ea520535d26f859529f07fe22dd1815c04d8de96","mission_step_id":"0b412634-8ea5-4db4-9dd3-eef25baf7d63","command_center_event_id":"cfd7c7b3-773d-46c5-8d99-cbb2455d0485"},{"id":"bd9f2944-9357-490c-8b97-353f93a65834","source":"cc-execution","status":"recorded","payload":{"requestContract":{"valid":true,"intent":{"evidence":[],"confidence":null,"rawUtterance":"Fix the final Console cockpit runtime defect found by live visual proof. Remove the accidental Remote Desktop execution footer from the tracked cockpit JS, HTML, and CSS assets; declare reviewView='live' before it is referenced; allow witness evidence URLs from paul-witness.knocklaunch.app instead of laptop-witness.knocklaunch.app; and change standby wording from Laptop witness to Cloud witness. Preserve the compact cockpit layout and Candidate controls.","wordingChanged":false,"canonicalIntent":"Fix the final Console cockpit runtime defect found by live visual proof. Remove the accidental Remote Desktop execution footer from the tracked cockpit JS, HTML, and CSS assets; declare reviewView='live' before it is referenced; allow witness evidence URLs from paul-witness.knocklaunch.app instead of laptop-witness.knocklaunch.app; and change standby wording from Laptop witness to Cloud witness. Preserve the compact cockpit layout and Candidate controls.","resolutionStatus":"exact","uniqueResolution":true,"clarificationRequired":false},"source":"explicit","version":1,"outcomes":[{"id":"candidate-review-loop","statement":"Implement the missing Console Candidate review workflow on /admin/console without changing the accepted compact cockpit layout. A change request must create a non-production candidate branch and exact candidate SHA. The UI must expose Live / Candidate / Compare plus a review drawer showing branch, exact SHA, changed scope, Gate state, and preview state. Accept must bind to that exact SHA and only then run canonical Gate, squash merge, affected-target release, and production proof. Revise and Reject must leave production unchanged; Revise must yield a reviewable candidate SHA and Reject must close/discard the candidate path. Stale SHA, missing preview, failed Gate, auth failure, source drift, or unavailable Laptop witness must fail closed. Desktop and mobile must work. Verification must exercise candidate creation, revise, reject, and accept with exact SHA semantics; route rendering alone is insufficient. Reuse existing mission, witness, Gate, merge, and release primitives; do not create a parallel orchestration system.","provenance":{"reason":null,"source":"explicit_request_contract","inherited":false,"blockingAuthority":true},"proofConditionIds":["runtime","visual"]}],"objective":"Fix the final Console cockpit runtime defect found by live visual proof. Remove the accidental Remote Desktop execution footer from the tracked cockpit JS, HTML, and CSS assets; declare reviewView='live' before it is referenced; allow witness evidence URLs from paul-witness.knocklaunch.app instead of laptop-witness.knocklaunch.app; and change standby wording from Laptop witness to Cloud witness. Preserve the compact cockpit layout and Candidate controls.","constraints":[{"id":"preserve-cockpit","statement":"Preserve one compact toolbar, one giant Witness canvas, Routes in the toolbar, Commentary and Activity/History as slide-out drawers, tiny status chips, and no stacked panels below the preview.","provenance":{"reason":null,"source":"explicit_request_contract","inherited":false,"blockingAuthority":true},"proofConditionIds":["visual"]},{"id":"exact-sha-review","statement":"Owner approval must bind the exact candidate SHA; production must remain unchanged before Accept; stale SHA and proof drift fail closed.","provenance":{"reason":null,"source":"explicit_request_contract","inherited":false,"blockingAuthority":true},"proofConditionIds":["runtime"]},{"id":"visual-content-truth","statement":"Do not present invented source identity, Gate state, preview state, branch, SHA, status, or other unknown operational facts as real.","provenance":{"reason":null,"source":"explicit_request_contract","inherited":false,"blockingAuthority":true},"proofConditionIds":["visual"]},{"id":"visual-viewport-authority","statement":"Desktop and mobile are both authoritative acceptance viewports for this workflow and must preserve the same review capability without a second design.","provenance":{"reason":null,"source":"explicit_request_contract","inherited":false,"blockingAuthority":true},"proofConditionIds":["visual"]},{"id":"capability-completeness","statement":"Every dependency the implementation relies on must be wired and proven across frontend, backend/runtime, auth, provider/prerequisite states, release ownership, and live production behavior.","provenance":{"reason":null,"source":"hard_safety_invariant","inherited":false,"blockingAuthority":true},"proofConditionIds":["runtime"]},{"id":"atomic-capability-lifecycle","statement":"Changed capabilities remain non-active until dependency readiness, affected-target release, and claim-matched production proof are satisfied; missing dependencies become prerequisite states and runtime drift fails closed.","provenance":{"reason":null,"source":"hard_safety_invariant","inherited":false,"blockingAuthority":true},"proofConditionIds":["runtime"]},{"id":"reference-visual-fidelity","statement":"The approved reference owns the material visual composition: hierarchy, major geometry, typography scale, spacing rhythm, image placement/crop, color treatment, radii, shadows/glow, and overall density. Material deviation is a failed visual acceptance, not a stylistic reinterpretation.","provenance":{"reason":null,"source":"heuristic_current_objective","inherited":false,"blockingAuthority":true},"proofConditionIds":["visual"]},{"id":"responsive-visual-continuity","statement":"Responsive adaptation may reflow for the target viewport, but it must preserve information hierarchy, branding, functionality, and design language. It must not invent a second design.","provenance":{"reason":null,"source":"heuristic_current_objective","inherited":false,"blockingAuthority":true},"proofConditionIds":["visual"]},{"id":"reference-visual-authority","statement":"The supplied or approved reference visual is immutable acceptance evidence. Generating another mockup, image, or concept cannot satisfy this implementation request; completion requires source implementation, deployment, and reference-matched visual proof.","provenance":{"reason":null,"source":"heuristic_current_objective","inherited":false,"blockingAuthority":true},"proofConditionIds":["visual"]}],"terminalPolicy":"all_required_proof_conditions_satisfied_after_live_release","proofConditions":[{"id":"runtime","kind":"runtime","claim":"Authenticated end-to-end candidate creation, review, revise, reject, and exact-SHA accept/promotion work without production mutation before Accept.","route":"/admin/console","roleRef":null,"userRef":null,"required":true,"expectedText":null,"targetedActions":[],"allowedReleaseTargets":[],"requiredReleaseTargets":[],"requireCapacityAdmissible":false,"expectedWatchdogPolicyVersion":null,"minConsecutiveHealthyHeartbeats":1,"requirePositiveMemoryAttribution":false,"requireMemoryAdmissionPressureFalse":false},{"id":"visual","kind":"visual","claim":"Live / Candidate / Compare and the candidate review drawer render in the accepted cockpit on desktop and mobile with real candidate source identity.","route":"/admin/console","roleRef":null,"userRef":null,"required":true,"expectedText":"Candidate","targetedActions":[],"allowedReleaseTargets":[],"requiredReleaseTargets":[],"requireCapacityAdmissible":false,"expectedWatchdogPolicyVersion":null,"minConsecutiveHealthyHeartbeats":1,"requirePositiveMemoryAttribution":false,"requireMemoryAdmissionPressureFalse":false}],"validationErrors":[],"capabilityManifest":{"id":"console-candidate-review-loop","driftPolicy":"exact_manifest_source_release_dependency_or_runtime_identity_mismatch_is_nonterminal","proofLedger":"command_center_mission_ledger_request_contract_hash_bound","schemaVersion":1,"releaseTargets":[],"lifecycleStates":["prepare","deploy","verify","activate"],"activationPolicy":"dependencies_and_claim_matched_live_proof_before_exposure","dependencyDomains":["frontend","backend_runtime","schema_data_storage","authentication_authorization","provider_configuration","prerequisite_loading_empty_error_states","release_ownership","live_production_proof"],"prerequisitePolicy":"expected_unavailable_dependencies_are_prerequisite_required_not_runtime_failures","compatibilityWindow":["N","N-1"],"failureIsolationPolicy":"quarantine_or_rollback_affected_capability_only_preserve_unrelated_working_capabilities","canaryProofConditionIds":["runtime"]},"capabilityCompleteness":{"domains":["frontend","backend_runtime","schema_data_storage","authentication_authorization","provider_configuration","prerequisite_loading_empty_error_states","release_ownership","live_production_proof"],"required":true,"prerequisitePolicy":"expected_unavailable_dependencies_are_prerequisite_states_not_runtime_failures"}},"requestContractHash":"5014d77ce94858696261d1c8ace013b115dad8515de12e95abbdd01a29a66e08","requestContractRevision":14,"previousRequestContractHash":"604328fc37c8afdc2453f3866f9ef099cf1fcf1133ae8b3b560d5215c6694f9a"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-27T06:45:06.61651+00:00","proof_gate":"request_contract_revision_recorded","source_sha":null,"external_id":null,"receipt_type":"request_contract_revision","idempotency_key":"mission:1297fc3e-a836-406c-ae04-a0aa8f124741:request-contract:5014d77ce94858696261d1c8ace013b115dad8515de12e95abbdd01a29a66e08","mission_step_id":"2266f7cf-e64b-4bf0-be59-708167719cb5","command_center_event_id":"1297fc3e-a836-406c-ae04-a0aa8f124741"},{"id":"bda08c63-f16c-47c1-a537-b3d50a032de2","source":"cc-execution","status":"recorded","payload":{"objective":"Finish the existing PR #1977 and report only when the crop-mode/right-click improvement is live.","tenantRef":"big-papis","receivedAt":"2026-09-06T18:02:50.058Z","fingerprint":"40ad8b203e5529a763e09b4d2b51bd362896a18e827378ff962230ff13b4a358","workstreamRef":"bigpapis","conversationId":null,"canonicalBranch":"ai/proposal-editor-crop-mode-context-menu","requestContract":{"valid":true,"intent":{"evidence":[],"confidence":null,"rawUtterance":"Finish the existing PR #1977 and report only when the crop-mode/right-click improvement is live.","wordingChanged":false,"canonicalIntent":"Finish the existing PR #1977 and report only when the crop-mode/right-click improvement is live.","resolutionStatus":"exact","uniqueResolution":true,"clarificationRequired":false},"source":"explicit","version":1,"outcomes":[{"id":"crop-live","statement":"The Big Papi Proposal Editor live production build exposes a reliable crop mode for ornament/image editing, with Alt/Option shortcut remaining optional rather than required.","proofConditionIds":["repo","release","interaction"]},{"id":"context-menu-live","statement":"The live Proposal Editor right-click menu exposes the expanded object actions for crop, duplicate, rotate, flip, layer ordering, aspect lock, reset, and delete where applicable.","proofConditionIds":["repo","release","interaction"]}],"objective":"Finish the existing PR #1977 and report only when the crop-mode/right-click improvement is live.","constraints":[{"id":"same-pr","statement":"Use the existing PR #1977; do not create a duplicate PR or change unrelated source.","proofConditionIds":["repo"]}],"terminalPolicy":"all_required_proof_conditions_satisfied_after_live_release","proofConditions":[{"id":"repo","kind":"repository","claim":"PR #1977 is refreshed onto current protected main, passes KnockLaunch Gate on its exact refreshed head, and is squash merged.","route":"/big-papis/owner/proposals","roleRef":null,"userRef":null,"required":true,"expectedText":null,"targetedActions":[],"allowedReleaseTargets":["frontend"],"requiredReleaseTargets":["frontend"]},{"id":"release","kind":"runtime","claim":"Production frontend serves the merged #1977 source.","route":"/big-papis/owner/proposals","roleRef":null,"userRef":null,"required":true,"expectedText":null,"targetedActions":[],"allowedReleaseTargets":["frontend"],"requiredReleaseTargets":["frontend"]},{"id":"interaction","kind":"interaction","claim":"On the live Proposal Editor, Crop Mode can be entered without relying on Alt timing, crop manipulation executes, and right-click opens the expanded object menu.","route":"/big-papis/owner/proposals","roleRef":null,"userRef":null,"required":true,"expectedText":null,"targetedActions":[{"action":"select_ornament_instance"},{"action":"enter_crop_mode"},{"action":"drag_crop"},{"action":"open_context_menu"},{"action":"verify_context_actions"}],"allowedReleaseTargets":["frontend"],"requiredReleaseTargets":["frontend"]}],"validationErrors":[]},"requestedBranch":"ai/proposal-editor-crop-mode-context-menu","conversationContext":null,"requestContractHash":"05670226fe527f8ced7a51de662765c54d6e8f4036ffe2781577b9426888ee20","requestContractRevision":1},"tenant_id":"766cfaa7-ac42-46c8-bbef-69d13268a29d","created_at":"2026-09-06T18:02:50.716447+00:00","proof_gate":"tenant_workstream_contribution_recorded","source_sha":null,"external_id":null,"receipt_type":"tenant_workstream_contribution","idempotency_key":"mission:fed12649-5db9-4ccc-91dc-e180b5e8752c:tenant-workstream-contribution:40ad8b203e5529a763e09b4d2b51bd362896a18e827378ff962230ff13b4a358","mission_step_id":null,"command_center_event_id":"fed12649-5db9-4ccc-91dc-e180b5e8752c"},{"id":"bda0f1c7-d446-4716-9728-95177509f126","source":"cc-execution","status":"synthesis_required","payload":{"ok":true,"jobId":null,"phase":"objective_received","branch":"ai/experience-editor-precise-canvas-fastpath-20260804","reason":null,"status":"synthesis_required","metrics":{"receiptBytes":0,"releaseCount":0,"toolCallCount":0,"repeatedCallCount":0,"ownerInterruptionCount":0},"version":"1.30.16-controlled-merge-fallback-fix","prNumber":null,"terminal":false,"missionId":"441774c2-2e70-43ca-95b9-370d7855ab99","operation":"execute_mission","proofGate":"repair_mission_synthesis_ready","sourceSha":null,"timingsMs":null,"nextAction":"Inspect the bounded repository paths, synthesize exact files or anchored_edits, and recall /repair/execute-mission automatically without another owner prompt.","receiptRef":{"mode":"full","missionId":"441774c2-2e70-43ca-95b9-370d7855ab99"},"performance":null,"deploymentId":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"onePullRequest":true,"terminalProofRequired":true},"sourceReceiptBytes":4597,"likelyAffectedFiles":[],"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true},"tenant_id":"c55998b4-82a3-467e-8d35-177bb4785f6e","created_at":"2026-08-04T20:38:13.866492+00:00","proof_gate":"repair_mission_synthesis_ready","source_sha":null,"external_id":null,"receipt_type":"execute_mission","idempotency_key":"mission:441774c2-2e70-43ca-95b9-370d7855ab99:execute_mission:repair_mission_synthesis_ready","mission_step_id":"2291c511-f606-414c-9a9c-90697898eeb0","command_center_event_id":"441774c2-2e70-43ca-95b9-370d7855ab99"},{"id":"bda10e0d-d890-453b-aba5-78db80806351","source":"cc-execution","status":"waiting","payload":{"body":{"ship":true,"files":[],"branch":"ai/objective-first-repair-4acbdb991bf3","writes":[],"patches":[],"version":1,"approved":true,"missionId":"4acbdb99-1bf3-4238-a497-e0717c192478","objective":"Apply these exact edits on the existing branch. Mobile header becomes truly fixed at top 0 and never scrolls. Desktop remains relative. Add the 56px/64px mobile flow spacer immediately after header so the existing fixed video at top 56px/64px stays directly beneath the fixed header, and the already-present geometry-matched video spacer keeps all subsequent content below both fixed surfaces. Then inspect diff, one PR, canonical Gate, squash merge, Cloudflare deploy, and verify mobile scroll behavior.","repository":"noel/KnockLaunchOS","anchoredEdits":[{"path":"src/pages/auto-lockout/AutoUnlockPublic.tsx","anchor":"<header className=\"sticky top-0 z-40 border-b border-sky-300/20 bg-[#010712]/62 shadow-[0_10px_35px_rgba(0,0,0,.2),0_1px_0_rgba(56,189,248,.12)] backdrop-blur-2xl lg:relative lg:z-20 lg:bg-[#010712]/42\">","replacement":"<header className=\"fixed inset-x-0 top-0 z-40 border-b border-sky-300/20 bg-[#010712]/62 shadow-[0_10px_35px_rgba(0,0,0,.2),0_1px_0_rgba(56,189,248,.12)] backdrop-blur-2xl lg:relative lg:inset-auto lg:z-20 lg:bg-[#010712]/42\">"},{"path":"src/pages/auto-lockout/AutoUnlockPublic.tsx","anchor":"</div></div></header>\n\n      <div className=\"fixed inset-x-0 top-[56px] z-30 px-3 py-2 sm:top-[64px] sm:px-4 lg:hidden\">","replacement":"</div></div></header>\n      <div aria-hidden=\"true\" className=\"h-[56px] sm:h-[64px] lg:hidden\" />\n\n      <div className=\"fixed inset-x-0 top-[56px] z-30 px-3 py-2 sm:top-[64px] sm:px-4 lg:hidden\">"}],"ownerApproved":true,"releaseIntent":null,"sourceTargets":["src/pages/auto-lockout/AutoUnlockPublic.tsx"],"implementation":{"files":[],"writes":[]},"requestContract":null,"repairGeneration":null,"executionEnvelope":{"ship":true,"version":1,"approved":true,"missionId":"4acbdb99-1bf3-4238-a497-e0717c192478","ownerApproved":true,"releaseIntent":null,"sourceTargets":["src/pages/auto-lockout/AutoUnlockPublic.tsx"],"requestContract":null,"repairGeneration":null,"proofRequirements":null,"controlPlaneUnfreeze":false,"controlPlaneMaintenance":false,"controlPlaneMaintenancePaths":[],"controlPlaneMaintenanceReason":null},"proofRequirements":null,"controlPlaneUnfreeze":false,"durableMutationResume":true,"controlPlaneMaintenance":false,"controlPlaneMaintenancePaths":[],"controlPlaneMaintenanceReason":null},"recovery":false,"fingerprint":"94b9ce897c66ca614af88c4f645337bf9105d04302b41a71e36213bf7e0e3cb3","replayCount":0,"serializedBytes":2483},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-24T19:30:55.676714+00:00","proof_gate":"repository_mutation_intent_persisted","source_sha":null,"external_id":null,"receipt_type":"repository_mutation_intent","idempotency_key":"mission:4acbdb99-1bf3-4238-a497-e0717c192478:repository-mutation-intent:94b9ce897c66ca614af88c4f645337bf9105d04302b41a71e36213bf7e0e3cb3:0","mission_step_id":"40421fd7-98eb-4239-a9fc-7aa8b035cc59","command_center_event_id":"4acbdb99-1bf3-4238-a497-e0717c192478"},{"id":"bda11963-57a4-47f1-85e4-d2857c2439dc","source":"cc-execution","status":"repair_prepared","payload":{"ok":true,"jobId":null,"phase":"pull_request","branch":"ai/redesign-route-service-runner","reason":null,"status":"repair_prepared","metrics":{"receiptBytes":3028,"releaseCount":0,"toolCallCount":3,"repeatedCallCount":0,"ownerInterruptionCount":0},"version":"1.30.16-controlled-merge-fallback-fix","prNumber":4051,"terminal":false,"missionId":"b5dfea3c-bbba-4f1c-aa43-2b5780e34e1d","operation":"execute_mission","proofGate":"repair_mission_prepared","sourceSha":null,"timingsMs":null,"nextAction":"continue_batch_or_ship_and_prove","receiptRef":{"mode":"full","missionId":"b5dfea3c-bbba-4f1c-aa43-2b5780e34e1d"},"performance":null,"deploymentId":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"onePullRequest":true,"terminalProofRequired":true},"sourceReceiptBytes":1173,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true},"tenant_id":"c55998b4-82a3-467e-8d35-177bb4785f6e","created_at":"2026-08-05T13:27:51.375855+00:00","proof_gate":"repair_mission_prepared","source_sha":null,"external_id":"4051","receipt_type":"execute_mission","idempotency_key":"mission:b5dfea3c-bbba-4f1c-aa43-2b5780e34e1d:execute_mission:repair_mission_prepared","mission_step_id":"f2a125a3-ee04-44e7-9b7a-20c6cef99d38","command_center_event_id":"b5dfea3c-bbba-4f1c-aa43-2b5780e34e1d"},{"id":"bda162d1-f335-4a32-818b-7198ee562753","source":"cc-execution","status":"blocked","payload":{"ok":false,"jobId":null,"phase":"release","branch":"ai/big-papis-mail-premium-rebuild-20260819","reason":"Cannot read properties of null (reading 'id')","status":"blocked","metrics":{"receiptBytes":9363,"releaseCount":0,"toolCallCount":6,"repeatedCallCount":0,"ownerInterruptionCount":0},"version":null,"prNumber":439,"terminal":false,"missionId":"775b10da-a6dc-45aa-9fba-5e60f6d2114f","operation":"automatic_mission_resume","proofGate":"canonical_release_blocked","sourceSha":null,"timingsMs":null,"nextAction":null,"receiptRef":{"mode":"full","missionId":"775b10da-a6dc-45aa-9fba-5e60f6d2114f"},"performance":null,"deploymentId":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":324,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-08-19T18:56:20.392872+00:00","proof_gate":"canonical_release_blocked","source_sha":null,"external_id":"439","receipt_type":"automatic_mission_resume","idempotency_key":"mission:775b10da-a6dc-45aa-9fba-5e60f6d2114f:automatic-mission-resume:439:canonical_release_blocked","mission_step_id":"f23f7334-f94d-4018-a92c-4540b51abb99","command_center_event_id":"775b10da-a6dc-45aa-9fba-5e60f6d2114f"},{"id":"bda17d5e-f9bb-4bd9-bdd2-9a06e435be1c","source":"durable-mission-ledger","status":"verified","payload":{"sourceSha":"bc9b501516c16ea041c15ec19587a714a3d4f316","requestContractProof":{"legacy":false,"present":true,"outcomes":[{"id":"outcome-1","satisfied":true,"statement":"PAUL Hybrid bootstrap passes the Cloudflare temporary-token stage and continues through its existing fail-closed activation proof.","proofConditionIds":["proof-production"]}],"satisfied":true,"constraints":[{"id":"least-privilege","satisfied":true,"statement":"Do not broaden Cloudflare permissions; preserve the existing Tunnel Write plus DNS/Zone Read policy only.","proofConditionIds":["proof-production"]},{"id":"temporary-token-delete","satisfied":true,"statement":"The temporary Cloudflare token must still be deleted in the existing finally block after tunnel/DNS setup.","proofConditionIds":["proof-production"]},{"id":"failure-isolation","satisfied":true,"statement":"Any subsequent PAUL bootstrap failure must leave the existing Render plus Cloudflare Visual Witness pair healthy and PAUL unregistered unless its external authority proof passes.","proofConditionIds":["proof-production"]},{"id":"capability-completeness","satisfied":true,"statement":"Every dependency the implementation declares or relies on must be wired and proven across applicable frontend, backend/runtime, schema/data/storage, authentication/authorization, provider configuration, prerequisite/loading/empty/error states, release ownership, and live production behavior; owner-authorized unavailable dependencies must become explicit prerequisite states rather than runtime failures.","proofConditionIds":["proof-production"]},{"id":"atomic-capability-lifecycle","satisfied":true,"statement":"Changed capabilities remain non-active until dependency readiness, N/N-1 compatibility, affected-target release, and claim-matched production canary proof are satisfied; missing optional dependencies become prerequisite_required, and runtime drift or health-contract violation quarantines only the affected capability instead of breaking unrelated working capability.","proofConditionIds":["proof-production"]}],"contractHash":"3d3752a7d93e73dae860df0de952fa50b99cf6dd80d75e82a364921bc568ddfc","releaseBound":true,"witnessBound":false,"visualRequested":false,"visualSatisfied":true,"conditionResults":[{"id":"proof-production","kind":"runtime","evidence":{"reason":null,"satisfied":true,"releaseState":"verified","missingTargets":[],"disallowedTargets":[],"migrationRequired":false,"releaseTargetStates":{},"unsuccessfulTargets":[],"activeReleaseTargets":[],"allowedReleaseTargets":[],"requiredReleaseTargets":[],"migrationReleaseVerified":null,"releaseRequestContractHash":"3d3752a7d93e73dae860df0de952fa50b99cf6dd80d75e82a364921bc568ddfc"},"required":true,"satisfied":true}],"validationErrors":[],"pendingProofKinds":[],"activeReleaseTargets":[]},"authoritativeMissionRefresh":true,"evaluatedRequestContractRevision":1},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-25T13:05:09.787429+00:00","proof_gate":"request_contract_terminal_verified","source_sha":"bc9b501516c16ea041c15ec19587a714a3d4f316","external_id":null,"receipt_type":"request_contract_reconciliation","idempotency_key":"mission:9e36c5ac-dd31-48b1-ad36-da022371ac48:request-contract:3d3752a7d93e73dae860df0de952fa50b99cf6dd80d75e82a364921bc568ddfc:bc9b501516c16ea041c15ec19587a714a3d4f316:verified:","mission_step_id":"93460207-0fa2-45cc-b259-97c4f9f92dee","command_center_event_id":"9e36c5ac-dd31-48b1-ad36-da022371ac48"},{"id":"bda3d586-0738-49cd-a46f-8b466c0e6d71","source":"github-status","status":"pending","payload":{"failed":[],"states":{"cc-execution/runtime-proof":"pending","canonical-production-release/verified":"pending"},"missing":[],"pending":["canonical-production-release/verified","cc-execution/runtime-proof"],"required":["canonical-production-release/verified","cc-execution/runtime-proof"],"sourceSha":"8639f42e5325c82594d27cd7ad0e8ab2bfe7db4c","releaseState":"pending","exactConductorRun":{"id":31313310312,"status":"in_progress","headSha":"8639f42e5325c82594d27cd7ad0e8ab2bfe7db4c","conclusion":null,"compareStatus":"identical","sourceMatches":true,"containsSourceSha":true,"reconciliationMode":null},"ccExecutionRuntimeProof":{"buildId":"31312948001-1","liveSha":"f0388bab485ffb3d059368813addd5f49a5fb149","deploymentId":"ai-pr-4445-f0388bab485f-cc-execution","compareStatus":"behind","identitySource":"worker_env_git_sha","runtimeVersion":null,"containsSourceSha":false}},"tenant_id":"a2929648-19db-46c8-9e93-07378ed1aa5f","created_at":"2026-08-09T12:27:37.179217+00:00","proof_gate":"canonical_release_pending","source_sha":"8639f42e5325c82594d27cd7ad0e8ab2bfe7db4c","external_id":"canonical-release-8639f42e5325","receipt_type":"canonical_release_status","idempotency_key":"mission:44f7b8de-676e-43ad-8c8a-47d25f41588e:release-status:8639f42e5325c82594d27cd7ad0e8ab2bfe7db4c:31313310312:pending:canonical-production-release/verified=pending|cc-execution/runtime-proof=pending","mission_step_id":"c7b81f15-63e1-4677-bb2c-d52d5eb1f62a","command_center_event_id":"44f7b8de-676e-43ad-8c8a-47d25f41588e"},{"id":"bda83243-51f5-4787-871d-d44adbdf72ff","source":"cc-execution","status":"cancelled","payload":{"cancelled":true,"missionId":"a91a4902-9e21-4a51-8434-e1a7b6e3c7dc"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-28T02:25:51.638506+00:00","proof_gate":"durable_mission_cancelled","source_sha":null,"external_id":null,"receipt_type":"owner_mission_cancelled","idempotency_key":"mission:a91a4902-9e21-4a51-8434-e1a7b6e3c7dc:mission-cancel:a91a4902-9e21-4a51-8434-e1a7b6e3c7dc","mission_step_id":"6fab4f45-c138-4b66-95b7-9df5ffe674a3","command_center_event_id":"a91a4902-9e21-4a51-8434-e1a7b6e3c7dc"},{"id":"bda91b86-f62e-4f6c-9dcb-d5fd1b183842","source":"forgejo-runtime","status":"verified","payload":{"failed":[],"states":{"forgejo-main/source":"success","forgejo-release/workflow":"success","cc-execution/runtime-proof":"success"},"mainSha":"207653e58e8a531b0525755adc312e524f7d1def","missing":[],"pending":[],"required":["forgejo-main/source","forgejo-release/workflow","cc-execution/runtime-proof"],"sourceSha":"207653e58e8a531b0525755adc312e524f7d1def","releaseState":"verified","sourceInMain":true,"compareStatus":"protected_main_push_exact_source","releaseTargets":{"frontend":false,"migrations":false,"ccExecution":true,"supabaseEdge":false,"edgeFunctionSlugs":[]},"releaseTargetStates":{"ccExecution":"success"},"requestContractHash":"e84b0939e62844bbded771f8b3fd3db88d4d675137fa760352e5cc5b3943236e","forgejoWorkflowProof":{"runId":13360,"source":"exact_live_cc_execution_runtime_identity","status":"running","liveSha":"207653e58e8a531b0525755adc312e524f7d1def","results":{},"proofGate":"cc_execution_exact_live_runtime_substitutes_transient_workflow_receipt","sourceSha":"207653e58e8a531b0525755adc312e524f7d1def","conclusion":"running","deploymentId":"forgejo-main-207653e58e8a531b0525755adc312e524f7d1def","targetStates":{"ccExecution":"pending"},"runtimeVersion":"1.64.13-paul-source-roots","targetJobCount":6,"observedTargetStates":{"ccExecution":"pending"},"workflowReceiptSubstituted":true},"releaseSourceVerified":true,"ccExecutionRuntimeProof":{"liveSha":"207653e58e8a531b0525755adc312e524f7d1def","proofGate":"cc_execution_target_aware_runtime_identity_verified","deploymentId":"forgejo-main-207653e58e8a531b0525755adc312e524f7d1def","compareStatus":"identical","workflowRunId":13360,"identitySource":"local_build_metadata","runtimeVersion":"1.64.13-paul-source-roots","workflowFailed":false,"containsSourceSha":true},"releaseTargetRecoveryProof":null,"exactReleaseVerifiedAfterMainAdvanced":false},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-30T13:19:26.881513+00:00","proof_gate":"canonical_release_terminal_verified","source_sha":"207653e58e8a531b0525755adc312e524f7d1def","external_id":"forgejo-main-207653e58e8a","receipt_type":"canonical_release_status","idempotency_key":"mission:c6909141-b0ae-43cc-ba94-078175c6e938:forgejo-release-status:207653e58e8a531b0525755adc312e524f7d1def:verified:forgejo-main/source=success|forgejo-release/workflow=success|cc-execution/runtime-proof=success","mission_step_id":"f0cb6c0a-788b-467a-be1f-e7a2f044e2d7","command_center_event_id":"c6909141-b0ae-43cc-ba94-078175c6e938"},{"id":"bda91ded-cf04-4253-88e6-8ac8801c6b0c","source":"cc-execution","status":"authorized","payload":{"paths":["workers/cc-execution/src/index-mcp.js","workers/cc-execution/src/paul-connection-research.js","workers/cc-execution/src/version.js","workers/cc-execution/test/mcp.test.js","workers/cc-execution/test/paul-connection-research.test.js"],"reason":"Owner explicitly requested the deterministic PAUL connection-research capability be set up and shipped; authorize only this mission's exact mutation paths while preserving newer main changes.","baseSha":"8c50c954aece4ba01541e3ddda4806b528b72fc4","issuedAt":1790900932642,"expiresAt":1790901112642,"missionId":"4adeff75-f590-4e0b-8da0-1b5cdd2e1d17","authorizationId":"c81cb44e-1cee-4929-9bbf-b97dc15f5f5a","retryableWithinExactScope":true},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-02T00:28:52.956122+00:00","proof_gate":"control_plane_maintenance_scope_authorized","source_sha":"8c50c954aece4ba01541e3ddda4806b528b72fc4","external_id":null,"receipt_type":"control_plane_maintenance_authorization","idempotency_key":"control-plane-maintenance-authorize:c81cb44e-1cee-4929-9bbf-b97dc15f5f5a","mission_step_id":"8328eafb-178f-4abb-8850-79207c8fd570","command_center_event_id":"4adeff75-f590-4e0b-8da0-1b5cdd2e1d17"},{"id":"bdaa61fc-ca62-4bb2-8440-e3658eed1503","source":"forgejo-runtime","status":"pending","payload":{"failed":[],"states":{"forgejo-main/source":"success","forgejo-release/workflow":"pending","cc-execution/runtime-proof":"pending"},"mainSha":"ac5ec0dc210d3ea1c93ce6acc1c2d438a8439853","missing":[],"pending":["forgejo-release/workflow","cc-execution/runtime-proof"],"required":["forgejo-main/source","forgejo-release/workflow","cc-execution/runtime-proof"],"sourceSha":"ac5ec0dc210d3ea1c93ce6acc1c2d438a8439853","releaseState":"pending","sourceInMain":true,"compareStatus":"protected_main_push_exact_source","releaseTargets":{"frontend":false,"onrunner":false,"migrations":false,"ccExecution":true,"supabaseEdge":false,"edgeFunctionSlugs":[]},"releaseTargetStates":{"ccExecution":"pending"},"requestContractHash":"93c8734b0e7d7e5ae6a53c2693bc53e4bdf1d149593057922317e7427035974c","forgejoWorkflowProof":{"runId":10502,"source":"signed_push_receipt","status":"running","results":{},"conclusion":"running","targetStates":{"ccExecution":"pending"},"targetJobCount":7,"observedTargetStates":{"ccExecution":"pending"}},"onrunnerRuntimeProof":null,"releaseSourceVerified":true,"ccExecutionRuntimeProof":{"liveSha":"62614039a5d172eca523ef4972f7ec53b15d784e","deploymentId":"forgejo-main-62614039a5d172eca523ef4972f7ec53b15d784e","compareStatus":null,"identitySource":"local_build_metadata","runtimeVersion":"1.58.203-reliability-canary","containsSourceSha":false},"releaseTargetRecoveryProof":null,"exactReleaseVerifiedAfterMainAdvanced":false},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-21T12:29:12.203015+00:00","proof_gate":"canonical_release_pending","source_sha":"ac5ec0dc210d3ea1c93ce6acc1c2d438a8439853","external_id":"forgejo-main-ac5ec0dc210d","receipt_type":"canonical_release_status","idempotency_key":"mission:91ff498b-e241-4a2c-bef0-dee8e9d6aa5f:forgejo-release-status:ac5ec0dc210d3ea1c93ce6acc1c2d438a8439853:pending:forgejo-main/source=success|forgejo-release/workflow=pending|cc-execution/runtime-proof=pending","mission_step_id":"0bf9c26f-4cdd-4bfb-9e77-51874e1229e6","command_center_event_id":"91ff498b-e241-4a2c-bef0-dee8e9d6aa5f"},{"id":"bdad4f94-b60f-4e92-b558-e06320e512b5","source":"cc-execution","status":"retryable","payload":{"ok":false,"jobId":null,"phase":"implementation","branch":"ai/optimize-supabase-rls-realtime-v2","reason":"retryable_provider_transport:GET:The operation was aborted due to timeout","status":"retryable","metrics":{"receiptBytes":1881,"releaseCount":0,"toolCallCount":1,"repeatedCallCount":0,"ownerInterruptionCount":0},"version":"1.48.11-schema-authority","prNumber":null,"terminal":false,"missionId":"293d332d-521e-4e38-854a-2113726196ca","operation":"execute_mission","proofGate":"repair_mission_execution_retryable","sourceSha":null,"timingsMs":null,"nextAction":null,"receiptRef":{"mode":"full","missionId":"293d332d-521e-4e38-854a-2113726196ca"},"performance":null,"deploymentId":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":5101,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-08-20T22:21:15.356201+00:00","proof_gate":"repair_mission_execution_retryable","source_sha":null,"external_id":null,"receipt_type":"execute_mission","idempotency_key":"mission:293d332d-521e-4e38-854a-2113726196ca:execute_mission:repair_mission_execution_retryable","mission_step_id":"dea0fd2e-7ddd-4459-8588-ffb654a264f2","command_center_event_id":"293d332d-521e-4e38-854a-2113726196ca"},{"id":"bdae0350-8814-4599-995a-b9cc0813e0a6","source":"cc-execution","status":"recorded","payload":{"requestContract":{"valid":true,"intent":{"evidence":[],"confidence":null,"rawUtterance":"Continue the same completed merge/release mission for PR #2059. Source is squash merged to protected main at 3ebb8f8025678ca61bf77355b86df621e592676f and frontend-only Cloudflare release has been dispatched. Do not mutate source. Reconcile the release to terminal deployed proof, then perform the required desktop/mobile visual acceptance on /demo?mode=applications&app=roof-estimator.","wordingChanged":false,"canonicalIntent":"Continue the same completed merge/release mission for PR #2059. Source is squash merged to protected main at 3ebb8f8025678ca61bf77355b86df621e592676f and frontend-only Cloudflare release has been dispatched. Do not mutate source. Reconcile the release to terminal deployed proof, then perform the required desktop/mobile visual acceptance on /demo?mode=applications&app=roof-estimator.","resolutionStatus":"exact","uniqueResolution":true,"clarificationRequired":false},"source":"explicit","version":1,"outcomes":[{"id":"outcome-video","statement":"The Demo Studio primary background video shows its full composition within the viewport on the live route without aggressive cropping.","proofConditionIds":["proof-live-route"]},{"id":"outcome-logo","statement":"The Demo Studio start screen shows a large centered KNOCKLAUNCH logo with premium animated aura/orbit/sweep/float/3D motion.","proofConditionIds":["proof-live-route"]},{"id":"outcome-release","statement":"PR #2059 is squash merged and the affected frontend release is live.","proofConditionIds":["proof-merge","proof-release"]}],"objective":"Continue the same completed merge/release mission for PR #2059. Source is squash merged to protected main at 3ebb8f8025678ca61bf77355b86df621e592676f and frontend-only Cloudflare release has been dispatched. Do not mutate source. Reconcile the release to terminal deployed proof, then perform the required desktop/mobile visual acceptance on /demo?mode=applications&app=roof-estimator.","constraints":[{"id":"constraint-1","statement":"Do not rebuild or replace the existing dark green lightning video asset.","proofConditionIds":["proof-merge","proof-release"]},{"id":"constraint-2","statement":"Do not change backend, database, auth, or demo behavior.","proofConditionIds":["proof-merge","proof-release"]},{"id":"constraint-3","statement":"Do not create replacement branch or PR.","proofConditionIds":["proof-merge","proof-release"]}],"terminalPolicy":"all_required_proof_conditions_satisfied_after_live_release","proofConditions":[{"id":"proof-merge","kind":"repository","claim":"PR #2059 is squash merged to protected main from its refreshed green head.","route":"/demo?mode=applications&app=roof-estimator","roleRef":null,"userRef":null,"required":true,"expectedText":null,"targetedActions":[],"allowedReleaseTargets":[],"requiredReleaseTargets":[]},{"id":"proof-release","kind":"runtime","claim":"The affected frontend release for the merge is deployed through Cloudflare Workers Builds.","route":"/demo?mode=applications&app=roof-estimator","roleRef":null,"userRef":null,"required":true,"expectedText":null,"targetedActions":[],"allowedReleaseTargets":["frontend"],"requiredReleaseTargets":["frontend"]},{"id":"proof-live-route","kind":"visual","claim":"On /demo?mode=applications&app=roof-estimator, the full video composition is visible and the large centered logo uses premium motion/effects.","route":"/demo?mode=applications&app=roof-estimator","roleRef":null,"userRef":null,"required":true,"expectedText":"Show us your business.","targetedActions":[],"allowedReleaseTargets":[],"requiredReleaseTargets":[]}],"validationErrors":[]},"requestContractHash":"5a652587101298f941d3ef8d2e91b46487eb236e9fde77dc536ce9c26f218a8a","requestContractRevision":7,"previousRequestContractHash":"0363aa59519e3391f93cb1dd480527c3cf998679b3af5d43cb3912d19b2a0dd0"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-07T13:06:52.147221+00:00","proof_gate":"request_contract_revision_recorded","source_sha":null,"external_id":null,"receipt_type":"request_contract_revision","idempotency_key":"mission:fbcf6e36-2854-4b29-a04f-1ffa70fe241e:request-contract:5a652587101298f941d3ef8d2e91b46487eb236e9fde77dc536ce9c26f218a8a","mission_step_id":"d86e6d16-050e-46e4-8c64-695a5e507ede","command_center_event_id":"fbcf6e36-2854-4b29-a04f-1ffa70fe241e"},{"id":"bdae736d-0e04-4bc6-a658-6895434d7a3f","source":"cc-execution","status":"waiting","payload":{"body":{"ship":true,"files":[{"path":"src/lib/tenants/clientCommissioning.ts","content":"import { isRoleValidForTenantType } from '@/lib/roles';\n\nexport const CLIENT_COMMISSIONING_CONTRACT = 'CLIENT_COMMISSIONING_V1' as const;\nexport const CLIENT_COMMISSIONING_STAGES = [\n  'Business',\n  'People',\n  'Roles',\n  'Mail',\n  'Calendar',\n  'Contacts',\n  'CRM',\n  'Files',\n  'Phone',\n  'Bookings',\n  'Payments',\n  'Data Import',\n  'Test Everything',\n  'Go Live',\n] as const;\n\nexport type ClientCommissioningMigrationState =\n  | 'discover'\n  | 'connect_legacy'\n  | 'inventory'\n  | 'shadow_read'\n  | 'reconcile'\n  | 'assign_destination'\n  | 'cutover'\n  | 'verify'\n  | 'retire_legacy';\n\nexport type CommissioningMembership = {\n  user_id: string;\n  tenant_id?: string | null;\n  effective_role?: string | null;\n  membership_status?: string | null;\n};\n\nexport type CommissioningInvitation = {\n  id: string;\n  tenant_id?: string | null;\n  email?: string | null;\n  role?: string | null;\n  status?: string | null;\n  expires_at?: string | null;\n  metadata?: Record<string, unknown> | null;\n};\n\nexport type CommissioningProviderCredential = {\n  provider: string;\n  credential_status?: string | null;\n};\n\nexport type CommissioningGoogleAccount = {\n  id: string;\n  role?: string | null;\n  is_primary?: boolean;\n  status?: string | null;\n  services?: { mail?: boolean; drive?: boolean; calendar?: boolean };\n};\n\nexport type ClientCommissioningInput = {\n  tenantId: string;\n  tenantType?: string | null;\n  peopleLoaded: boolean;\n  memberships?: CommissioningMembership[];\n  invitationsLoaded?: boolean;\n  invitations?: CommissioningInvitation[];\n  providersLoaded: boolean;\n  providerCredentials?: CommissioningProviderCredential[];\n  googleAccounts?: CommissioningGoogleAccount[];\n  providerCatalog?: string[];\n  requiredProviders?: string[];\n  migration?: {\n    required?: boolean;\n    state?: ClientCommissioningMigrationState;\n    reconciled?: boolean;\n    verified?: boolean;\n  } | null;\n  observedAt?: string;\n};\n\nexport type ClientCommissioningReceipt = {\n  contract: typeof CLIENT_COMMISSIONING_CONTRACT;\n  version: 1;\n  tenantId: string;\n  manifestFingerprint: string;\n  observedAt: string;\n  stages: readonly string[];\n  people: {\n    state: 'not_loaded' | 'resolved';\n    activeCount: number;\n    invitationCount: number;\n  };\n  roles: {\n    state: 'not_loaded' | 'resolved' | 'blocked';\n    authority: 'tenant_role_contract';\n    unknownRolePolicy: 'fail_closed';\n    invalid: Array<{ subject: string; role: string }>;\n  };\n  providerInstances: Array<{\n    id: string;\n    provider: string;\n    purpose: 'primary' | 'secondary' | 'legacy';\n    status: string;\n    services?: { mail: boolean; drive: boolean; calendar: boolean };\n  }>;\n  serviceDefaults: {\n    googlePrimaryConnectionId: string | null;\n  };\n  providerResearch: {\n    command: 'paul_connection_research';\n    researchBeforeActivation: true;\n    researchIsCredentialFree: true;\n    activationRequiresExactTenantProviderInstance: true;\n    unknownWriteCapabilityPolicy: 'block';\n  };\n  sourceProvenance: {\n    preserveSource: true;\n    writeBack: 'explicit_target_only';\n  };\n  migration: {\n    required: boolean;\n    state: ClientCommissioningMigrationState;\n    reconciled: boolean;\n    verified: boolean;\n    retirementPolicy: 'reconcile_and_verify_before_retire';\n  };\n  tenantIsolation: {\n    crossTenantCredentialFallback: false;\n  };\n  readiness: {\n    ready: boolean;\n    blockers: string[];\n  };\n};\n\nconst clean = (value: unknown) => String(value ?? '').trim();\nconst normalizedProvider = (value: unknown) => clean(value).toLowerCase();\n\nfunction uniqueSorted(values: string[]) {\n  return [...new Set(values.filter(Boolean))].sort((a, b) => a.localeCompare(b));\n}\n\nfunction stableJson(value: unknown): string {\n  if (Array.isArray(value)) return '[' + value.map(stableJson).join(',') + ']';\n  if (value && typeof value === 'object') {\n    const entries = Object.entries(value as Record<string, unknown>)\n      .sort(([a], [b]) => a.localeCompare(b))\n      .map(([key, item]) => JSON.stringify(key) + ':' + stableJson(item));\n    return '{' + entries.join(',') + '}';\n  }\n  return JSON.stringify(value);\n}\n\nfunction fnv1a(value: string) {\n  let hash = 0x811c9dc5;\n  for (let index = 0; index < value.length; index += 1) {\n    hash ^= value.charCodeAt(index);\n    hash = Math.imul(hash, 0x01000193);\n  }\n  return (hash >>> 0).toString(16).padStart(8, '0');\n}\n\nfunction invitationDeliveryConfirmed(invitation: CommissioningInvitation) {\n  const status = clean(invitation.status).toLowerCase();\n  if (['sent', 'accepted', 'active'].includes(status)) return true;\n  const metadata = invitation.metadata && typeof invitation.metadata === 'object' ? invitation.metadata : {};\n  return Boolean(clean(metadata.sent_at));\n}\n\nexport function requiredProvidersFromTenantSettings(settings: unknown): string[] {\n  const root = settings && typeof settings === 'object' && !Array.isArray(settings)\n    ? settings as Record<string, any>\n    : {};\n  const manifest = root.tenant_manifest && typeof root.tenant_manifest === 'object'\n    ? root.tenant_manifest as Record<string, any>\n    : {};\n  const blueprint = root.business_operating_blueprint && typeof root.business_operating_blueprint === 'object'\n    ? root.business_operating_blueprint as Record<string, any>\n    : manifest.businessOperatingBlueprint && typeof manifest.businessOperatingBlueprint === 'object'\n      ? manifest.businessOperatingBlueprint as Record<string, any>\n      : {};\n  const requirements = blueprint.bootstrapRequirements && typeof blueprint.bootstrapRequirements === 'object'\n    ? blueprint.bootstrapRequirements as Record<string, any>\n    : blueprint.bootstrap_requirements && typeof blueprint.bootstrap_requirements === 'object'\n      ? blueprint.bootstrap_requirements as Record<string, any>\n      : {};\n  const connections = requirements.connections && typeof requirements.connections === 'object'\n    ? requirements.connections as Record<string, any>\n    : {};\n  const raw = Array.isArray(connections.requiredProviders)\n    ? connections.requiredProviders\n    : Array.isArray(connections.required_providers)\n      ? connections.required_providers\n      : [];\n  return uniqueSorted(raw.map(normalizedProvider));\n}\n\nexport function buildClientCommissioningReceipt(input: ClientCommissioningInput): ClientCommissioningReceipt {\n  const tenantId = clean(input.tenantId);\n  const tenantType = clean(input.tenantType);\n  const blockers: string[] = [];\n  if (!tenantId) blockers.push('tenant_identity_required');\n\n  const memberships = (input.memberships || [])\n    .map((row) => ({\n      userId: clean(row.user_id),\n      tenantId: clean(row.tenant_id),\n      role: clean(row.effective_role),\n      status: clean(row.membership_status).toLowerCase(),\n    }))\n    .filter((row) => row.userId)\n    .sort((a, b) => a.userId.localeCompare(b.userId));\n\n  const invitations = (input.invitations || [])\n    .map((row) => ({\n      id: clean(row.id),\n      tenantId: clean(row.tenant_id),\n      email: clean(row.email).toLowerCase(),\n      role: clean(row.role),\n      status: clean(row.status).toLowerCase(),\n      expiresAt: clean(row.expires_at),\n      metadata: row.metadata || null,\n      raw: row,\n    }))\n    .filter((row) => row.id)\n    .sort((a, b) => a.id.localeCompare(b.id));\n\n  if (!input.peopleLoaded) blockers.push('people_mapping_not_loaded');\n  if (input.invitationsLoaded === false) blockers.push('invitation_state_not_loaded');\n\n  const activeMemberships = memberships.filter((row) => row.status === 'active');\n  if (input.peopleLoaded && activeMemberships.length === 0) blockers.push('active_membership_required');\n\n  const invalidRoles: Array<{ subject: string; role: string }> = [];\n  for (const row of activeMemberships) {\n    if (row.tenantId && tenantId && row.tenantId !== tenantId) {\n      blockers.push('cross_tenant_membership_observed:' + row.userId);\n      continue;\n    }\n    if (!row.role || !isRoleValidForTenantType(row.role, tenantType)) {\n      invalidRoles.push({ subject: row.userId, role: row.role || '<missing>' });\n    }\n  }\n  for (const invitation of invitations) {\n    if (invitation.tenantId && tenantId && invitation.tenantId !== tenantId) {\n      blockers.push('cross_tenant_invitation_observed:' + invitation.id);\n      continue;\n    }\n    if (['cancelled', 'canceled', 'revoked'].includes(invitation.status)) continue;\n    if (!invitation.role || !isRoleValidForTenantType(invitation.role, tenantType)) {\n      invalidRoles.push({ subject: invitation.email || invitation.id, role: invitation.role || '<missing>' });\n    }\n    if (['failed', 'error', 'delivery_failed'].includes(invitation.status)) {\n      blockers.push('invitation_delivery_failed:' + invitation.id);\n    } else if (invitation.status === 'pending' && !invitationDeliveryConfirmed(invitation.raw)) {\n      blockers.push('invitation_delivery_unconfirmed:' + invitation.id);\n    }\n  }\n  for (const invalid of invalidRoles) blockers.push('invalid_role:' + invalid.role + ':' + invalid.subject);\n\n  if (!input.providersLoaded) blockers.push('provider_state_not_loaded');\n  const catalog = new Set((input.providerCatalog || []).map(normalizedProvider).filter(Boolean));\n  const credentials = (input.providerCredentials || [])\n    .map((row) => ({ provider: normalizedProvider(row.provider), status: clean(row.credential_status).toLowerCase() || 'missing' }))\n    .filter((row) => row.provider)\n    .sort((a, b) => a.provider.localeCompare(b.provider));\n  for (const credential of credentials) {\n    if (catalog.size > 0 && !catalog.has(credential.provider)) blockers.push('unknown_provider:' + credential.provider);\n    if (['invalid', 'pending'].includes(credential.status)) blockers.push('provider_attention_required:' + credential.provider);\n  }\n\n  const requiredProviders = uniqueSorted((input.requiredProviders || []).map(normalizedProvider));\n  const activeProviders = new Set(credentials.filter((row) => row.status === 'active').map((row) => row.provider));\n  for (const provider of requiredProviders) {\n    if (!activeProviders.has(provider)) blockers.push('required_provider_not_ready:' + provider);\n  }\n\n  const googleAccounts = (input.googleAccounts || [])\n    .map((account) => ({\n      id: clean(account.id),\n      role: clean(account.role).toLowerCase(),\n      isPrimary: account.is_primary === true,\n      status: clean(account.status).toLowerCase() || 'missing',\n      services: {\n        mail: account.services?.mail !== false,\n        drive: account.services?.drive !== false,\n        calendar: account.services?.calendar !== false,\n      },\n    }))\n    .filter((account) => account.id)\n    .sort((a, b) => a.id.localeCompare(b.id));\n  const primaryGoogleAccounts = googleAccounts.filter((account) => account.isPrimary);\n  if (primaryGoogleAccounts.length > 1) blockers.push('multiple_google_primary_accounts');\n  if (activeProviders.has('google_workspace') && googleAccounts.length > 0 && primaryGoogleAccounts.length !== 1) {\n    blockers.push('google_primary_account_required');\n  }\n\n  const providerInstances: ClientCommissioningReceipt['providerInstances'] = [];\n  for (const credential of credentials) {\n    if (credential.provider === 'google_workspace' && googleAccounts.length > 0) continue;\n    providerInstances.push({\n      id: credential.provider,\n      provider: credential.provider,\n      purpose: 'primary',\n      status: credential.status,\n    });\n  }\n  for (const account of googleAccounts) {\n    providerInstances.push({\n      id: account.id,\n      provider: 'google_workspace',\n      purpose: account.isPrimary ? 'primary' : account.role.includes('legacy') ? 'legacy' : 'secondary',\n      status: account.status,\n      services: account.services,\n    });\n  }\n  providerInstances.sort((a, b) => (a.provider + ':' + a.id).localeCompare(b.provider + ':' + b.id));\n\n  const migration = {\n    required: input.migration?.required === true,\n    state: input.migration?.state || 'discover' as ClientCommissioningMigrationState,\n    reconciled: input.migration?.reconciled === true,\n    verified: input.migration?.verified === true,\n    retirementPolicy: 'reconcile_and_verify_before_retire' as const,\n  };\n  if (migration.required && !migration.verified) blockers.push('migration_not_verified:' + migration.state);\n  if (migration.state === 'retire_legacy' && (!migration.reconciled || !migration.verified)) {\n    blockers.push('legacy_retirement_requires_reconcile_and_verify');\n  }\n\n  const normalizedInvalidRoles = invalidRoles\n    .sort((a, b) => (a.subject + ':' + a.role).localeCompare(b.subject + ':' + b.role));\n  const normalizedBlockers = uniqueSorted(blockers);\n\n  const fingerprintSource = {\n    contract: CLIENT_COMMISSIONING_CONTRACT,\n    tenantId,\n    tenantType,\n    memberships: activeMemberships,\n    invitations: invitations.map(({ raw: _raw, ...row }) => row),\n    providerInstances,\n    requiredProviders,\n    migration,\n    invalidRoles: normalizedInvalidRoles,\n    blockers: normalizedBlockers,\n    isolation: { crossTenantCredentialFallback: false },\n    provenance: { preserveSource: true, writeBack: 'explicit_target_only' },\n  };\n\n  return {\n    contract: CLIENT_COMMISSIONING_CONTRACT,\n    version: 1,\n    tenantId,\n    manifestFingerprint: 'klcm-' + fnv1a(stableJson(fingerprintSource)),\n    observedAt: input.observedAt || new Date().toISOString(),\n    stages: CLIENT_COMMISSIONING_STAGES,\n    people: {\n      state: input.peopleLoaded ? 'resolved' : 'not_loaded',\n      activeCount: activeMemberships.length,\n      invitationCount: invitations.length,\n    },\n    roles: {\n      state: !input.peopleLoaded ? 'not_loaded' : normalizedInvalidRoles.length ? 'blocked' : 'resolved',\n      authority: 'tenant_role_contract',\n      unknownRolePolicy: 'fail_closed',\n      invalid: normalizedInvalidRoles,\n    },\n    providerInstances,\n    serviceDefaults: {\n      googlePrimaryConnectionId: primaryGoogleAccounts[0]?.id || null,\n    },\n    providerResearch: {\n      command: 'paul_connection_research',\n      researchBeforeActivation: true,\n      researchIsCredentialFree: true,\n      activationRequiresExactTenantProviderInstance: true,\n      unknownWriteCapabilityPolicy: 'block',\n    },\n    sourceProvenance: {\n      preserveSource: true,\n      writeBack: 'explicit_target_only',\n    },\n    migration,\n    tenantIsolation: {\n      crossTenantCredentialFallback: false,\n    },\n    readiness: {\n      ready: normalizedBlockers.length === 0,\n      blockers: normalizedBlockers,\n    },\n  };\n}\n"},{"path":"src/__tests__/contracts/client-commissioning.contract.test.ts","content":"import { describe, expect, it } from 'vitest';\nimport { buildClientCommissioningReceipt, requiredProvidersFromTenantSettings } from '@/lib/tenants/clientCommissioning';\n\nconst base = {\n  tenantId: 'tenant-a',\n  tenantType: 'TAX_SERVICES',\n  peopleLoaded: true,\n  invitationsLoaded: true,\n  providersLoaded: true,\n  memberships: [{ user_id: 'owner-1', tenant_id: 'tenant-a', effective_role: 'Tenant Owner', membership_status: 'active' }],\n  invitations: [],\n  providerCredentials: [],\n  googleAccounts: [],\n  providerCatalog: ['google_workspace', 'hubspot', 'irslogiqs'],\n  requiredProviders: [],\n  observedAt: '2026-10-02T00:00:00.000Z',\n} as const;\n\ndescribe('client commissioning deterministic contract', () => {\n  it('is stable for the same observed state', () => {\n    const first = buildClientCommissioningReceipt(base);\n    const second = buildClientCommissioningReceipt(base);\n    expect(first).toEqual(second);\n    expect(first.manifestFingerprint).toMatch(/^klcm-[0-9a-f]{8}$/);\n    expect(first.readiness.ready).toBe(true);\n  });\n\n  it('fails closed on a role that does not belong to the tenant type', () => {\n    const receipt = buildClientCommissioningReceipt({\n      ...base,\n      memberships: [{ user_id: 'alfred', tenant_id: 'tenant-a', effective_role: 'Rep', membership_status: 'active' }],\n    });\n    expect(receipt.roles.state).toBe('blocked');\n    expect(receipt.readiness.ready).toBe(false);\n    expect(receipt.readiness.blockers).toContain('invalid_role:Rep:alfred');\n  });\n\n  it('accepts tax-service assistant without rewriting it to Rep', () => {\n    const receipt = buildClientCommissioningReceipt({\n      ...base,\n      memberships: [{ user_id: 'alfred', tenant_id: 'tenant-a', effective_role: 'Assistant', membership_status: 'active' }],\n    });\n    expect(receipt.roles.state).toBe('resolved');\n    expect(receipt.roles.invalid).toEqual([]);\n    expect(receipt.readiness.blockers.some((value) => value.includes('Rep'))).toBe(false);\n  });\n\n  it('blocks unconfirmed invitation delivery and cross-tenant observations', () => {\n    const receipt = buildClientCommissioningReceipt({\n      ...base,\n      memberships: [{ user_id: 'owner-1', tenant_id: 'tenant-b', effective_role: 'Tenant Owner', membership_status: 'active' }],\n      invitations: [{ id: 'invite-1', tenant_id: 'tenant-a', email: 'a@example.com', role: 'Assistant', status: 'pending', metadata: null }],\n    });\n    expect(receipt.readiness.blockers).toContain('cross_tenant_membership_observed:owner-1');\n    expect(receipt.readiness.blockers).toContain('invitation_delivery_unconfirmed:invite-1');\n  });\n\n  it('requires one explicit primary for multi-account Google Workspace', () => {\n    const receipt = buildClientCommissioningReceipt({\n      ...base,\n      providerCredentials: [{ provider: 'google_workspace', credential_status: 'active' }],\n      googleAccounts: [\n        { id: 'g1', is_primary: true, status: 'active', services: { mail: true, drive: true, calendar: true } },\n        { id: 'g2', is_primary: true, status: 'active', services: { mail: true, drive: true, calendar: true } },\n      ],\n    });\n    expect(receipt.readiness.blockers).toContain('multiple_google_primary_accounts');\n    expect(receipt.tenantIsolation.crossTenantCredentialFallback).toBe(false);\n  });\n\n  it('does not permit legacy retirement before reconciliation and verification', () => {\n    const receipt = buildClientCommissioningReceipt({\n      ...base,\n      migration: { required: true, state: 'retire_legacy', reconciled: false, verified: false },\n    });\n    expect(receipt.readiness.blockers).toContain('legacy_retirement_requires_reconcile_and_verify');\n    expect(receipt.migration.retirementPolicy).toBe('reconcile_and_verify_before_retire');\n  });\n\n  it('extracts required providers from the existing tenant blueprint manifest', () => {\n    expect(requiredProvidersFromTenantSettings({\n      tenant_manifest: {\n        businessOperatingBlueprint: {\n          bootstrapRequirements: {\n            connections: { requiredProviders: ['HubSpot', 'google_workspace', 'HubSpot'] },\n          },\n        },\n      },\n    })).toEqual(['google_workspace', 'hubspot']);\n  });\n\n  it('declares PAUL research as credential-free and separate from activation', () => {\n    const receipt = buildClientCommissioningReceipt(base);\n    expect(receipt.providerResearch.command).toBe('paul_connection_research');\n    expect(receipt.providerResearch.researchIsCredentialFree).toBe(true);\n    expect(receipt.providerResearch.activationRequiresExactTenantProviderInstance).toBe(true);\n    expect(receipt.providerResearch.unknownWriteCapabilityPolicy).toBe('block');\n  });\n});\n"},{"path":"config/capabilities/client-commissioning-v1.json","content":"{\n  \"schemaVersion\": 1,\n  \"id\": \"client-commissioning-v1\",\n  \"owner\": \"KNOCKLAUNCH Platform\",\n  \"status\": \"enforced\",\n  \"surfaces\": [\n    \"src/lib/tenants/clientCommissioning.ts\",\n    \"src/pages/connections/TenantConnections.tsx\",\n    \"src/pages/applications/TeamApplicationRoute.tsx\",\n    \"src/pages/settings/TenantSettingsPage.tsx\"\n  ],\n  \"dependencies\": {\n    \"backendRuntime\": [\n      \"tenant-provider-connections\",\n      \"user_tenant_access\",\n      \"user_invitations\",\n      \"user-roles-manage\",\n      \"tenant-media-library\",\n      \"PAUL paul_connection_research\"\n    ],\n    \"dataStorage\": [\n      \"tenant manifest\",\n      \"tenant provider credentials\",\n      \"tenant-scoped membership and invitation state\"\n    ],\n    \"authPermissions\": [\n      \"active tenant membership\",\n      \"tenant-scoped role authority\"\n    ],\n    \"providers\": []\n  },\n  \"contract\": {\n    \"id\": \"CLIENT_COMMISSIONING_V1\",\n    \"stages\": [\n      \"Business\",\n      \"People\",\n      \"Roles\",\n      \"Mail\",\n      \"Calendar\",\n      \"Contacts\",\n      \"CRM\",\n      \"Files\",\n      \"Phone\",\n      \"Bookings\",\n      \"Payments\",\n      \"Data Import\",\n      \"Test Everything\",\n      \"Go Live\"\n    ],\n    \"invariants\": [\n      \"person identity and provider identities remain separately attributable\",\n      \"unknown or tenant-invalid roles fail closed and never silently become Rep\",\n      \"provider instances are tenant-scoped with explicit primary/secondary/legacy purpose\",\n      \"source provenance is preserved and write-back requires an explicit target\",\n      \"legacy migration cannot retire before reconcile and verify\",\n      \"cross-tenant credential fallback is forbidden\",\n      \"PAUL researches provider documentation without credentials before activation\",\n      \"unknown provider write capability blocks write activation\"\n    ]\n  },\n  \"lifecycle\": {\n    \"states\": [\n      \"prepare\",\n      \"map\",\n      \"research\",\n      \"verify\",\n      \"commission\",\n      \"activate\"\n    ],\n    \"compatibilityWindow\": [\n      \"N\",\n      \"N-1\"\n    ],\n    \"driftPolicy\": \"Any people, role, provider-instance, source-provenance, migration, tenant-isolation, or activation mismatch returns the commissioning receipt to blocked until observed state matches the manifest.\",\n    \"quarantinePolicy\": \"Fail closed only the affected commissioning domain; preserve unrelated tenant capability.\"\n  },\n  \"release\": {\n    \"order\": [\n      \"frontend\"\n    ],\n    \"runtimeFirst\": true\n  },\n  \"canary\": {\n    \"required\": true,\n    \"claims\": [\n      \"TAX_SERVICES Assistant remains Assistant and Rep is rejected as tenant-invalid commissioning state\",\n      \"multi-account Google requires exactly one primary when connected\",\n      \"cross-tenant membership observations block commissioning\",\n      \"unconfirmed invitations remain visible as blockers\",\n      \"provider research remains separate from activation\"\n    ]\n  },\n  \"proofLedger\": {\n    \"authority\": \"command_center_mission_ledger\",\n    \"bind\": [\n      \"request_contract_hash\",\n      \"source_sha\",\n      \"release_receipt\",\n      \"runtime_identity\",\n      \"canary\",\n      \"activation_state\",\n      \"drift_state\",\n      \"quarantine_state\"\n    ]\n  }\n}\n"}],"branch":"ai/objective-first-repair-19457138be04","writes":[],"patches":[],"version":1,"approved":true,"missionId":"19457138-be04-49c0-b203-386c285a1cab","objective":"Ship the first deterministic KNOCKLAUNCH Client Commissioning foundation by replacing the UI-local placeholder manifest with a reusable CLIENT_COMMISSIONING_V1 evaluator wired to real tenant memberships, invitations, provider instances, required-provider state, migration safeguards, source provenance, tenant isolation, and PAUL connection-research policy. Make Client setup discoverable from Connections. Read-only commissioning only: do not mutate tenant data, roles, credentials, or provider state.","sourceSha":"4674784332e9bc4635742d897a13f4adac2cdbe4","repository":"noel/KnockLaunchOS","anchoredEdits":[{"path":"src/pages/connections/TenantConnections.tsx","edits":[{"new_content":"import { toast } from '@/lib/notify';\nimport { buildClientCommissioningReceipt, requiredProvidersFromTenantSettings, type ClientCommissioningReceipt } from '@/lib/tenants/clientCommissioning';","old_content":"import { toast } from '@/lib/notify';"},{"new_content":"type CommissioningTeamRow={user_id:string;tenant_id:string;effective_role:string|null;membership_status:string|null};\ntype CommissioningInviteRow={id:string;tenant_id:string;email:string|null;role:string|null;status:string|null;expires_at:string|null;metadata:Record<string,unknown>|null};","old_content":"type ClientCommissioningManifest={version:1;tenantId:string;stages:readonly string[];people:{state:'not_loaded'|'resolved'};roles:{state:'not_loaded'|'resolved';unknownRolePolicy:'fail_closed'};providerInstances:Array<{provider:string;purpose:'primary'|'secondary'|'legacy';status:string}>;serviceDefaults:{googlePrimaryConnectionId:string|null};sourceProvenance:{preserveSource:true;writeBack:'explicit_target_only'};migration:{state:'discover'|'connect_legacy'|'inventory'|'shadow_read'|'reconcile'|'assign_destination'|'cutover'|'verify'|'retire_legacy'};tenantIsolation:{crossTenantCredentialFallback:false};readiness:{ready:boolean;blockers:string[]}};\nconst COMMISSIONING_STAGES=['Business','People','Roles','Mail','Calendar','Contacts','CRM','Files','Phone','Bookings','Payments','Data Import','Test Everything','Go Live'] as const;"},{"new_content":"const[googleAccounts,setGoogleAccounts]=useState<GoogleWorkspaceAccount[]>([]);const[teamRows,setTeamRows]=useState<CommissioningTeamRow[]>([]);const[inviteRows,setInviteRows]=useState<CommissioningInviteRow[]>([]);const[peopleLoaded,setPeopleLoaded]=useState(false);const[loading,setLoading]=useState(true);","old_content":"const[googleAccounts,setGoogleAccounts]=useState<GoogleWorkspaceAccount[]>([]);const[loading,setLoading]=useState(true);"},{"new_content":"try{const[c,catalog,team,invites]=await Promise.all([supabase.from('tenant_provider_credentials' as any).select('provider,credential_status,last_verified_at,verification_notes,phone_number,sending_domain,metadata').eq('tenant_id',tenantId).order('provider'),supabase.functions.invoke('tenant-provider-connections',{body:{action:'catalog',tenant_id:tenantId}}),(supabase as any).from('user_tenant_access').select('user_id,tenant_id,effective_role,membership_status').eq('tenant_id',tenantId),(supabase as any).from('user_invitations').select('id,tenant_id,email,role,status,expires_at,metadata').eq('tenant_id',tenantId)]);if(c.error)throw c.error;if(team.error)throw team.error;if(invites.error)throw invites.error;setRows((c.data||[]) as unknown as ConnectionRow[]);setTeamRows((team.data||[]) as CommissioningTeamRow[]);setInviteRows((invites.data||[]) as CommissioningInviteRow[]);setPeopleLoaded(true);","old_content":"try{const[c,catalog]=await Promise.all([supabase.from('tenant_provider_credentials' as any).select('provider,credential_status,last_verified_at,verification_notes,phone_number,sending_domain,metadata').eq('tenant_id',tenantId).order('provider'),supabase.functions.invoke('tenant-provider-connections',{body:{action:'catalog',tenant_id:tenantId}})]);if(c.error)throw c.error;setRows((c.data||[]) as unknown as ConnectionRow[]);"},{"new_content":"}catch(e:any){setPeopleLoaded(false);toast.error(e?.message||'Could not load connections')}finally{setLoading(false)}}","old_content":"}catch(e:any){toast.error(e?.message||'Could not load connections')}finally{setLoading(false)}}"},{"new_content":"const showCommissioning=searchParams.get('commissioning')==='1';const commissioningSettings=((activeTenant as any)?.settings||{}) as Record<string,any>;const requiredCommissioningProviders=useMemo(()=>requiredProvidersFromTenantSettings(commissioningSettings),[commissioningSettings]);const persistedMigration=(commissioningSettings.client_commissioning?.migration||null) as any;const commissioningManifest=useMemo<ClientCommissioningReceipt>(()=>buildClientCommissioningReceipt({tenantId,tenantType:activeTenant?.tenant_type,peopleLoaded,invitationsLoaded:peopleLoaded,memberships:teamRows,invitations:inviteRows,providersLoaded:!loading,providerCredentials:rows,googleAccounts,providerCatalog:PROVIDERS.map(provider=>provider.key),requiredProviders:requiredCommissioningProviders,migration:persistedMigration}),[activeTenant?.tenant_type,googleAccounts,inviteRows,loading,peopleLoaded,persistedMigration,requiredCommissioningProviders,rows,teamRows,tenantId]);","old_content":"const showCommissioning=searchParams.get('commissioning')==='1';const commissioningManifest=useMemo<ClientCommissioningManifest>(()=>{const blockers:string[]=[];if(!tenantId)blockers.push('tenant_identity_required');if(rows.some(row=>row.credential_status==='invalid'||row.credential_status==='pending'))blockers.push('provider_attention_required');blockers.push('people_mapping_not_loaded','role_capability_mapping_not_loaded');const primaryGoogle=googleAccounts.find(account=>account.is_primary)?.id||null;return{version:1,tenantId,stages:COMMISSIONING_STAGES,people:{state:'not_loaded'},roles:{state:'not_loaded',unknownRolePolicy:'fail_closed'},providerInstances:rows.map(row=>({provider:row.provider,purpose:row.provider==='google_workspace'&&primaryGoogle?'primary':'secondary',status:row.credential_status||'missing'})),serviceDefaults:{googlePrimaryConnectionId:primaryGoogle},sourceProvenance:{preserveSource:true,writeBack:'explicit_target_only'},migration:{state:'discover'},tenantIsolation:{crossTenantCredentialFallback:false},readiness:{ready:blockers.length===0,blockers}}},[googleAccounts,rows,tenantId]);"},{"new_content":"<div className=\"flex shrink-0 flex-wrap items-center gap-2\"><Button size=\"sm\" variant={showCommissioning?'default':'outline'} onClick={()=>{const next=new URLSearchParams(searchParams);if(showCommissioning)next.delete('commissioning');else next.set('commissioning','1');setSearchParams(next,{replace:true})}} data-client-setup-toggle=\"true\">{showCommissioning?'Hide client setup':'Client setup'}</Button><Badge variant=\"outline\" className=\"w-fit border-primary/20 bg-primary/5 px-3 py-1.5 text-xs font-semibold\">Owner controls</Badge></div>","old_content":"<Badge variant=\"outline\" className=\"w-fit border-primary/20 bg-primary/5 px-3 py-1.5 text-xs font-semibold\">Owner controls</Badge>"},{"new_content":"<div className=\"grid gap-2 sm:grid-cols-3\"><div className=\"rounded-xl border p-3\"><p className=\"text-xs text-muted-foreground\">People</p><p className=\"mt-1 text-sm font-semibold\">{commissioningManifest.people.state==='resolved'?`${commissioningManifest.people.activeCount} active · ${commissioningManifest.people.invitationCount} invites`:'Not loaded'}</p></div><div className=\"rounded-xl border p-3\"><p className=\"text-xs text-muted-foreground\">Role contract</p><p className=\"mt-1 text-sm font-semibold\">{commissioningManifest.roles.state==='resolved'?'Resolved':commissioningManifest.roles.state==='blocked'?`${commissioningManifest.roles.invalid.length} invalid`:'Not loaded'}</p></div><div className=\"rounded-xl border p-3\"><p className=\"text-xs text-muted-foreground\">Manifest fingerprint</p><p className=\"mt-1 truncate font-mono text-xs font-semibold\">{commissioningManifest.manifestFingerprint}</p></div></div><p className=\"text-xs leading-5 text-muted-foreground\">People, invitation delivery, roles, provider instances, required connections, migration state, provenance, and tenant isolation are evaluated from observed tenant state. Unknown roles fail closed and never silently become Rep. PAUL connection research is credential-free and activation stays a separate tenant/provider-instance authorization.</p>","old_content":"<p className=\"text-xs leading-5 text-muted-foreground\">People and role/capability mappings must be explicitly resolved before commissioning can pass. Unknown roles fail closed and never silently become Rep. Source write-back requires an explicit target.</p>"}]}],"ownerApproved":true,"releaseIntent":null,"shipRequested":true,"sourceTargets":["src/pages/connections/TenantConnections.tsx"],"implementation":{"files":[],"writes":[]},"requestContract":{"outcomes":[{"id":"deterministic-manifest","statement":"Connections uses a reusable deterministic CLIENT_COMMISSIONING_V1 evaluator over real tenant memberships, invitations, provider instances, required-provider requirements, migration state, provenance, and isolation rules.","proofConditionIds":["repo","runtime"]},{"id":"role-fail-closed","statement":"Tenant-invalid or unknown role observations block commissioning and are never silently rewritten to Rep; TAX_SERVICES Assistant remains valid.","proofConditionIds":["repo","runtime"]},{"id":"provider-safeguards","statement":"Multi-account providers expose explicit instance purpose/defaults, required providers fail closed when unavailable, source write-back is explicit-target-only, and cross-tenant credential fallback is forbidden.","proofConditionIds":["repo","runtime"]},{"id":"research-binding","statement":"Commissioning explicitly binds provider discovery to the live read-only paul_connection_research contract and separates research from activation.","proofConditionIds":["repo","runtime"]},{"id":"discoverable-console","statement":"The existing Connections surface exposes a visible Client setup control and renders the deterministic commissioning status without requiring a hidden URL to discover it.","proofConditionIds":["repo","runtime"]}],"constraints":[{"id":"no-new-backend","statement":"Reuse current tenant manifest, membership/invitation state, provider connection state, server role authority, and Connections surface; do not create a parallel auth, connector, or tenant backend.","proofConditionIds":["repo"]},{"id":"preserve-tenants","statement":"Do not change tenant-specific data, credentials, roles, branding, or enabled apps. This release reads state and reports blockers only.","proofConditionIds":["repo","runtime"]},{"id":"fail-closed","statement":"Missing people/invitation/provider observations remain blockers rather than guessed success.","proofConditionIds":["repo","runtime"]}],"proofConditions":[{"id":"repo","kind":"repository","claim":"Exact diff and Gate prove the commissioning evaluator, contract tests, capability manifest, real state wiring, and discoverable Client setup control.","required":true},{"id":"runtime","kind":"runtime","claim":"Affected frontend release is live and the Connections surface loads with the CLIENT_COMMISSIONING_V1 client setup contract without regressing normal provider management.","required":true,"requiredReleaseTargets":["frontend"]}]},"repairGeneration":null,"executionEnvelope":{"ship":true,"version":1,"approved":true,"missionId":null,"ownerApproved":true,"releaseIntent":null,"sourceTargets":["src/pages/connections/TenantConnections.tsx"],"requestContract":{"outcomes":[{"id":"deterministic-manifest","statement":"Connections uses a reusable deterministic CLIENT_COMMISSIONING_V1 evaluator over real tenant memberships, invitations, provider instances, required-provider requirements, migration state, provenance, and isolation rules.","proofConditionIds":["repo","runtime"]},{"id":"role-fail-closed","statement":"Tenant-invalid or unknown role observations block commissioning and are never silently rewritten to Rep; TAX_SERVICES Assistant remains valid.","proofConditionIds":["repo","runtime"]},{"id":"provider-safeguards","statement":"Multi-account providers expose explicit instance purpose/defaults, required providers fail closed when unavailable, source write-back is explicit-target-only, and cross-tenant credential fallback is forbidden.","proofConditionIds":["repo","runtime"]},{"id":"research-binding","statement":"Commissioning explicitly binds provider discovery to the live read-only paul_connection_research contract and separates research from activation.","proofConditionIds":["repo","runtime"]},{"id":"discoverable-console","statement":"The existing Connections surface exposes a visible Client setup control and renders the deterministic commissioning status without requiring a hidden URL to discover it.","proofConditionIds":["repo","runtime"]}],"constraints":[{"id":"no-new-backend","statement":"Reuse current tenant manifest, membership/invitation state, provider connection state, server role authority, and Connections surface; do not create a parallel auth, connector, or tenant backend.","proofConditionIds":["repo"]},{"id":"preserve-tenants","statement":"Do not change tenant-specific data, credentials, roles, branding, or enabled apps. This release reads state and reports blockers only.","proofConditionIds":["repo","runtime"]},{"id":"fail-closed","statement":"Missing people/invitation/provider observations remain blockers rather than guessed success.","proofConditionIds":["repo","runtime"]}],"proofConditions":[{"id":"repo","kind":"repository","claim":"Exact diff and Gate prove the commissioning evaluator, contract tests, capability manifest, real state wiring, and discoverable Client setup control.","required":true},{"id":"runtime","kind":"runtime","claim":"Affected frontend release is live and the Connections surface loads with the CLIENT_COMMISSIONING_V1 client setup contract without regressing normal provider management.","required":true,"requiredReleaseTargets":["frontend"]}]},"repairGeneration":null,"proofRequirements":null,"controlPlaneUnfreeze":false,"controlPlaneMaintenance":false,"controlPlaneMaintenancePaths":[],"controlPlaneMaintenanceReason":null},"proofRequirements":null,"controlPlaneUnfreeze":false,"durableMutationResume":true,"controlPlaneMaintenance":false,"controlPlaneMaintenancePaths":[],"controlPlaneMaintenanceReason":null},"recovery":false,"fingerprint":"a5c83180ffc97cf4d846c75f76a78cd7c96c57c4b5f4ac7a2ec68e06613e8828","replayCount":0,"serializedBytes":37758},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-02T00:44:43.380339+00:00","proof_gate":"repository_mutation_intent_persisted","source_sha":null,"external_id":null,"receipt_type":"repository_mutation_intent","idempotency_key":"mission:19457138-be04-49c0-b203-386c285a1cab:repository-mutation-intent:a5c83180ffc97cf4d846c75f76a78cd7c96c57c4b5f4ac7a2ec68e06613e8828:0","mission_step_id":"a4c9c051-4754-4283-8c67-f7b3dffd92f8","command_center_event_id":"19457138-be04-49c0-b203-386c285a1cab"},{"id":"bdaf6210-48a0-4f9f-8df6-5c8104e1bc79","source":"cc-execution","status":"retryable","payload":{"ok":false,"jobId":null,"phase":"implementation","branch":null,"reason":"retryable_provider_transport:forgejo_provider_read_timeout","status":"retryable","metrics":{"receiptBytes":0,"releaseCount":0,"toolCallCount":0,"repeatedCallCount":0,"ownerInterruptionCount":0},"version":"1.58.105-orphan-compare-evidence-adoption","prNumber":2407,"terminal":false,"missionId":"7ccdd3b3-2896-4e6f-9b89-90780d32730e","operation":"execute_mission","proofGate":"repair_mission_pr_ready_retryable","sourceSha":null,"timingsMs":{"gateMs":0,"proofMs":0,"handlerMs":6519,"releaseMs":0,"mutationMs":0,"repositoryMs":0,"prReadinessMs":5551,"approvedPlanMs":0,"missionSetupMs":2016,"providerAuthMs":0,"shipAndProveMs":0,"ledgerPrepareMs":1219,"ledgerReconcileMs":0,"lineageReconcileMs":797,"resolvePreflightMs":2016,"repositoryMutationMs":0,"repositoryProviderMs":0,"authoritativeLedgerMs":0,"ledgerAsyncDispatchMs":0,"repositoryAtomicCommitMs":0,"repositoryBranchCreateMs":0,"totalSynchronousLedgerMs":1219,"asyncBookkeepingDispatchMs":0,"ledgerAuthoritativeCommitMs":0,"repositoryPullRequestCreateMs":0},"nextAction":"Reconcile this same mission and pull request automatically; do not create a replacement branch or PR.","receiptRef":{"mode":"full","missionId":"7ccdd3b3-2896-4e6f-9b89-90780d32730e"},"performance":null,"deploymentId":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":1526,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-11T18:31:36.261459+00:00","proof_gate":"repair_mission_pr_ready_retryable","source_sha":null,"external_id":"2407","receipt_type":"execute_mission","idempotency_key":"mission:7ccdd3b3-2896-4e6f-9b89-90780d32730e:execute_mission:repair_mission_pr_ready_retryable:current-generation","mission_step_id":"7a86f463-82e6-4f31-ae11-386274c3c15c","command_center_event_id":"7ccdd3b3-2896-4e6f-9b89-90780d32730e"},{"id":"bdafb6cb-a511-4107-a936-0dc382a1ef9a","source":"forgejo","status":"waiting","payload":{"branch":"ai/objective-first-repair-bc6592091c5c","prNumber":3466,"nextAction":"Follow the existing canonical release to terminal proof.","mergeCommitSha":"3d1b98415a83904f5d4eeb699ee0b1a853773ba1","branchDeletedAfterMerge":true,"correctiveGenerationCreated":false},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-23T01:22:44.088115+00:00","proof_gate":"forgejo_merged_pr_is_authoritative_source_lineage","source_sha":"3d1b98415a83904f5d4eeb699ee0b1a853773ba1","external_id":"3466","receipt_type":"source_lineage_merged_pr_authoritative","idempotency_key":"mission:bc659209-1c5c-4732-ad67-17493a96409e:merged-pr:3466:3d1b98415a83904f5d4eeb699ee0b1a853773ba1","mission_step_id":"8be90034-328d-42c6-8a9b-262d0d6ee743","command_center_event_id":"bc659209-1c5c-4732-ad67-17493a96409e"},{"id":"bdb1060f-b20e-4ec0-852d-910912cbe430","source":"cc-execution","status":"recorded","payload":{"requestContract":{"valid":true,"intent":{"evidence":[],"confidence":null,"rawUtterance":"Start a corrective generation from current protected main because prior PR #916 is conflicted by the already-merged #915 restoration. Supersede #916; do not merge it. Make one deterministic change only in supabase/functions/tenant-photo-studio/index.ts: preserve the currently working La Vista token-derived S3 credential path exactly, but when streamR2 catches an R2 error for the La Vista bucket, log and throw the real error instead of returning the generic 200 SVG placeholder. Keep generic placeholder behavior unchanged for other tenants. Do not mutate any R2 object, tenant media setting, gallery/lead key, frontend source, database, auth, or other function. Pass gate, squash merge, deploy only tenant-photo-studio, then re-prove The View=10 images, The Nest=13 images, both lead/representative assets are real image content types, and dashboard real photos display desktop/mobile.","wordingChanged":false,"canonicalIntent":"Start a corrective generation from current protected main because prior PR #916 is conflicted by the already-merged #915 restoration. Supersede #916; do not merge it. Make one deterministic change only in supabase/functions/tenant-photo-studio/index.ts: preserve the currently working La Vista token-derived S3 credential path exactly, but when streamR2 catches an R2 error for the La Vista bucket, log and throw the real error instead of returning the generic 200 SVG placeholder. Keep generic placeholder behavior unchanged for other tenants. Do not mutate any R2 object, tenant media setting, gallery/lead key, frontend source, database, auth, or other function. Pass gate, squash merge, deploy only tenant-photo-studio, then re-prove The View=10 images, The Nest=13 images, both lead/representative assets are real image content types, and dashboard real photos display desktop/mobile.","resolutionStatus":"exact","uniqueResolution":true,"clarificationRequired":false},"source":"explicit","version":1,"outcomes":[{"id":"false-green-prevented","statement":"La Vista photo failures cannot masquerade as successful SVG photos.","proofConditionIds":["proof-source","proof-edge","proof-images"]},{"id":"healthy-photos-preserved","statement":"Healthy La Vista photo delivery remains intact after the safeguard.","proofConditionIds":["proof-galleries","proof-images","proof-dashboard"]}],"objective":"Start a corrective generation from current protected main because prior PR #916 is conflicted by the already-merged #915 restoration. Supersede #916; do not merge it. Make one deterministic change only in supabase/functions/tenant-photo-studio/index.ts: preserve the currently working La Vista token-derived S3 credential path exactly, but when streamR2 catches an R2 error for the La Vista bucket, log and throw the real error instead of returning the generic 200 SVG placeholder. Keep generic placeholder behavior unchanged for other tenants. Do not mutate any R2 object, tenant media setting, gallery/lead key, frontend source, database, auth, or other function. Pass gate, squash merge, deploy only tenant-photo-studio, then re-prove The View=10 images, The Nest=13 images, both lead/representative assets are real image content types, and dashboard real photos display desktop/mobile.","constraints":[{"id":"only-error-path","statement":"Only tenant-photo-studio La Vista streamR2 error handling changes; the working credential path remains identical.","proofConditionIds":["proof-source"]},{"id":"no-media-mutation","statement":"No R2 objects, tenant media settings, gallery keys, lead keys, or media rows are mutated.","proofConditionIds":["proof-source","proof-edge"]},{"id":"edge-only","statement":"Only tenant-photo-studio is released.","proofConditionIds":["proof-edge"]}],"terminalPolicy":"all_required_proof_conditions_satisfied_after_live_release","proofConditions":[{"id":"proof-source","kind":"runtime","claim":"Merged diff contains only the fail-loud streamR2 change in tenant-photo-studio and preserves token-derived S3 code.","route":"/la-vista-del-mar/dashboard","required":true,"expectedText":null,"targetedActions":[],"allowedReleaseTargets":[],"requiredReleaseTargets":[]},{"id":"proof-edge","kind":"runtime","claim":"Production tenant-photo-studio runs the exact merged safeguard and no unrelated target is released.","route":"/la-vista-del-mar/dashboard","required":true,"expectedText":null,"targetedActions":[],"allowedReleaseTargets":[],"requiredReleaseTargets":[]},{"id":"proof-galleries","kind":"runtime","claim":"The View gallery has 10 real items and The Nest gallery has 13 real items after release.","route":"/la-vista-del-mar/dashboard","required":true,"expectedText":null,"targetedActions":[],"allowedReleaseTargets":[],"requiredReleaseTargets":[]},{"id":"proof-images","kind":"runtime","claim":"Both leads and representative individual assets return real image content types and not SVG.","route":"/la-vista-del-mar/dashboard","required":true,"expectedText":null,"targetedActions":[],"allowedReleaseTargets":[],"requiredReleaseTargets":[]},{"id":"proof-dashboard","kind":"visual","claim":"Both real property photos render on the live dashboard desktop and mobile after release.","route":"/la-vista-del-mar/dashboard","required":true,"expectedText":null,"targetedActions":[],"allowedReleaseTargets":[],"requiredReleaseTargets":[]}],"validationErrors":[]},"requestContractHash":"1cd4b7a5fb5d1ca948fe47d54f1f0d09d98123fda0d7f1ad46a803d6a6e276ec","requestContractRevision":6,"previousRequestContractHash":"556a1c64d21d9e6e2e499f66b75947a4aa4f13c997bfd6dbd73132692156e1ed"},"tenant_id":"71b397ba-b9ad-496b-914c-985d97dbb12e","created_at":"2026-08-28T04:07:05.398561+00:00","proof_gate":"request_contract_revision_recorded","source_sha":null,"external_id":null,"receipt_type":"request_contract_revision","idempotency_key":"mission:6e5cf2a3-fcc1-4ee6-aecc-4c3bf43ddd2b:request-contract-revision:6:1cd4b7a5fb5d1ca948fe47d54f1f0d09d98123fda0d7f1ad46a803d6a6e276ec","mission_step_id":"19fc6c3a-a963-43e8-8f7b-c3ed953be59a","command_center_event_id":"6e5cf2a3-fcc1-4ee6-aecc-4c3bf43ddd2b"},{"id":"bdb3ffd9-6050-4baa-b530-aae3ed1981ec","source":"cc-execution","status":"waiting","payload":{"body":{"ship":true,"files":[{"path":"src/__tests__/commandCenter/source-resolution-continuation.contract.test.ts","content":"import { readFileSync } from 'node:fs';\nimport { describe, expect, it } from 'vitest';\n\nconst source = readFileSync('workers/cc-execution/src/index-mission-control.js', 'utf8');\n\ndescribe('mission source resolution continuation contract', () => {\n  it('resolves unknown source targets internally before returning synthesis work', () => {\n    expect(source).toContain('planUrl.pathname = \"/repair/plan\"');\n    expect(source).toContain('proofGate: \"repair_mission_source_resolution_resolved\"');\n    expect(source).toContain('status: \"synthesis_required\"');\n    expect(source).toContain('ownerActionRequired: false');\n    expect(source).toContain('continuationRequired: true');\n  });\n\n  it('preserves fail-closed behavior when authoritative resolution yields no targets', () => {\n    expect(source).toContain('authoritative_source_resolution_failed');\n    expect(source).toContain('repair_mission_source_resolution_required');\n  });\n});\n"}],"branch":"ai/objective-first-repair-96205e13fba5","writes":[],"patches":[],"version":1,"approved":true,"missionId":"96205e13-fba5-423b-9ada-cf0d546d2c31","objective":"Fix the KNOCKLAUNCH mission source-resolution dead-end reproduced live today. Never guess files. When source_resolution_required is returned with no mutation payload, mission control must internally call the canonical /repair/plan authoritative resolver, carry resolved targets forward, and continue as synthesis_required in the same mission. Preserve fail-closed behavior when resolution genuinely fails. Add focused regression coverage, bump cc-execution version, run canonical Gate, squash merge, deploy cc-execution, and prove the live runtime.","repository":"noel/KnockLaunchOS","ownerApproved":true,"releaseIntent":null,"sourceTargets":["workers/cc-execution/src/index-mission-control.js","workers/cc-execution/src/version.js","src/__tests__/commandCenter/source-resolution-continuation.contract.test.ts"],"anchored_edits":[{"path":"workers/cc-execution/src/index-mission-control.js","new_content":"  if (executionData?.status === \"source_resolution_required\" && explicitMutationPaths(body).length === 0) {\n    const planUrl = new URL(request.url);\n    planUrl.pathname = \"/repair/plan\";\n    planUrl.search = \"\";\n    const sourceResolutionRequest = new Request(planUrl.toString(), {\n      method: \"POST\",\n      headers: request.headers,\n      body: JSON.stringify({\n        ...body,\n        objective: objectiveText,\n        issue: objectiveText,\n        approved: true,\n        ownerApproved: true,\n      }),\n    });\n    const sourceResolutionResponse = await coreExecutionWorker.fetch(sourceResolutionRequest, env, ctx);\n    const sourceResolutionData = await sourceResolutionResponse.json().catch(() => ({\n      ok: false,\n      status: \"source_resolution_required\",\n      proofGate: \"repair_mission_source_resolution_invalid_response\",\n    }));\n    const resolvedTargets = Array.isArray(sourceResolutionData?.likelyAffectedFiles)\n      ? [...new Set(sourceResolutionData.likelyAffectedFiles.map((value) => String(value || \"\").trim()).filter(Boolean))]\n      : [];\n    if (sourceResolutionResponse.ok && resolvedTargets.length > 0) {\n      executionData = {\n        ...executionData,\n        ok: true,\n        status: \"synthesis_required\",\n        proofGate: \"repair_mission_source_resolution_resolved\",\n        likelyAffectedFiles: resolvedTargets,\n        sourceTargets: resolvedTargets,\n        sourceResolution: sourceResolutionData.sourceResolution || null,\n        ownerActionRequired: false,\n        continuationRequired: true,\n        nextAction: \"Synthesize exact mutation from the resolved authoritative source targets and continue this same mission.\",\n      };\n    } else {\n      executionData = {\n        ...executionData,\n        sourceResolution: sourceResolutionData?.sourceResolution || null,\n        reason: sourceResolutionData?.reason || executionData?.reason || \"authoritative_source_resolution_failed\",\n      };\n    }\n  }\n\n  const sourceResolutionBareContinuation = executionData?.status === \"source_resolution_required\"\n    && Boolean(String(body.missionId || body.mission_id || \"\").trim())\n    && explicitMutationPaths(body).length === 0;","old_content":"  const sourceResolutionBareContinuation = executionData?.status === \"source_resolution_required\"\n    && Boolean(String(body.missionId || body.mission_id || \"\").trim())\n    && explicitMutationPaths(body).length === 0;"},{"path":"workers/cc-execution/src/version.js","new_content":"export const CC_EXECUTION_VERSION = \"1.64.39-source-resolution-continuation\";","old_content":"export const CC_EXECUTION_VERSION = \"1.64.38-paul-owner-velocity\";"}],"implementation":{"files":[],"writes":[]},"requestContract":{"intent":{"rawUtterance":"Fix the KNOCKLAUNCH mission source-resolution dead-end reproduced live today. Never guess files. When source_resolution_required is returned with no mutation payload, mission control must internally call the canonical /repair/plan authoritative resolver, carry resolved targets forward, and continue as synthesis_required in the same mission. Preserve fail-closed behavior when resolution genuinely fails. Add focused regression coverage, bump cc-execution version, run canonical Gate, squash merge, deploy cc-execution, and prove the live runtime.","wordingChanged":false,"canonicalIntent":"Fix the KNOCKLAUNCH mission source-resolution dead-end reproduced live today. Never guess files. When source_resolution_required is returned with no mutation payload, mission control must internally call the canonical /repair/plan authoritative resolver, carry resolved targets forward, and continue as synthesis_required in the same mission. Preserve fail-closed behavior when resolution genuinely fails. Add focused regression coverage, bump cc-execution version, run canonical Gate, squash merge, deploy cc-execution, and prove the live runtime.","resolutionStatus":"exact","uniqueResolution":true,"clarificationRequired":false},"source":"explicit","version":1,"outcomes":[{"id":"outcome-1","statement":"Unknown mutation source targets are resolved authoritatively and the same mission continues automatically without guessing or owner re-prompting.","proofConditionIds":["proof-production"]}],"objective":"Fix the KNOCKLAUNCH mission source-resolution dead-end reproduced live today. Never guess files. When source_resolution_required is returned with no mutation payload, mission control must internally call the canonical /repair/plan authoritative resolver, carry resolved targets forward, and continue as synthesis_required in the same mission. Preserve fail-closed behavior when resolution genuinely fails. Add focused regression coverage, bump cc-execution version, run canonical Gate, squash merge, deploy cc-execution, and prove the live runtime.","constraints":[{"id":"no-source-guessing","statement":"Mutation source files must never be guessed; only authoritative repository resolution may supply targets.","proofConditionIds":["proof-production"]},{"id":"fail-closed","statement":"If authoritative resolution yields no safe target, the mission remains fail-closed.","proofConditionIds":["proof-production"]}],"terminalPolicy":"all_required_proof_conditions_satisfied_after_live_release","proofConditions":[{"id":"proof-production","kind":"runtime","claim":"The live cc-execution runtime automatically transitions unresolved source scope into authoritative source resolution and continuation.","required":true,"targetedActions":[],"allowedReleaseTargets":["ccExecution"],"requiredReleaseTargets":["ccExecution"],"requireCapacityAdmissible":false,"minConsecutiveHealthyHeartbeats":1,"requirePositiveMemoryAttribution":false,"requireMemoryAdmissionPressureFalse":false}]},"repairGeneration":null,"executionEnvelope":{"ship":true,"version":1,"approved":true,"missionId":null,"ownerApproved":true,"releaseIntent":null,"sourceTargets":["workers/cc-execution/src/index-mission-control.js","workers/cc-execution/src/version.js","src/__tests__/commandCenter/source-resolution-continuation.contract.test.ts"],"requestContract":{"intent":{"rawUtterance":"Fix the KNOCKLAUNCH mission source-resolution dead-end reproduced live today. Never guess files. When source_resolution_required is returned with no mutation payload, mission control must internally call the canonical /repair/plan authoritative resolver, carry resolved targets forward, and continue as synthesis_required in the same mission. Preserve fail-closed behavior when resolution genuinely fails. Add focused regression coverage, bump cc-execution version, run canonical Gate, squash merge, deploy cc-execution, and prove the live runtime.","wordingChanged":false,"canonicalIntent":"Fix the KNOCKLAUNCH mission source-resolution dead-end reproduced live today. Never guess files. When source_resolution_required is returned with no mutation payload, mission control must internally call the canonical /repair/plan authoritative resolver, carry resolved targets forward, and continue as synthesis_required in the same mission. Preserve fail-closed behavior when resolution genuinely fails. Add focused regression coverage, bump cc-execution version, run canonical Gate, squash merge, deploy cc-execution, and prove the live runtime.","resolutionStatus":"exact","uniqueResolution":true,"clarificationRequired":false},"source":"explicit","version":1,"outcomes":[{"id":"outcome-1","statement":"Unknown mutation source targets are resolved authoritatively and the same mission continues automatically without guessing or owner re-prompting.","proofConditionIds":["proof-production"]}],"objective":"Fix the KNOCKLAUNCH mission source-resolution dead-end reproduced live today. Never guess files. When source_resolution_required is returned with no mutation payload, mission control must internally call the canonical /repair/plan authoritative resolver, carry resolved targets forward, and continue as synthesis_required in the same mission. Preserve fail-closed behavior when resolution genuinely fails. Add focused regression coverage, bump cc-execution version, run canonical Gate, squash merge, deploy cc-execution, and prove the live runtime.","constraints":[{"id":"no-source-guessing","statement":"Mutation source files must never be guessed; only authoritative repository resolution may supply targets.","proofConditionIds":["proof-production"]},{"id":"fail-closed","statement":"If authoritative resolution yields no safe target, the mission remains fail-closed.","proofConditionIds":["proof-production"]}],"terminalPolicy":"all_required_proof_conditions_satisfied_after_live_release","proofConditions":[{"id":"proof-production","kind":"runtime","claim":"The live cc-execution runtime automatically transitions unresolved source scope into authoritative source resolution and continuation.","required":true,"targetedActions":[],"allowedReleaseTargets":["ccExecution"],"requiredReleaseTargets":["ccExecution"],"requireCapacityAdmissible":false,"minConsecutiveHealthyHeartbeats":1,"requirePositiveMemoryAttribution":false,"requireMemoryAdmissionPressureFalse":false}]},"repairGeneration":null,"proofRequirements":null,"controlPlaneUnfreeze":true,"controlPlaneMaintenance":true,"controlPlaneMaintenancePaths":["workers/cc-execution/src/index-mission-control.js","workers/cc-execution/src/version.js","src/__tests__/commandCenter/source-resolution-continuation.contract.test.ts"],"controlPlaneMaintenanceReason":"Owner explicitly requested immediate repair of the reproduced source-resolution dead-end."},"proofRequirements":null,"controlPlaneUnfreeze":true,"durableMutationResume":true,"controlPlaneMaintenance":true,"controlPlaneMaintenancePaths":["workers/cc-execution/src/index-mission-control.js","workers/cc-execution/src/version.js","src/__tests__/commandCenter/source-resolution-continuation.contract.test.ts"],"controlPlaneMaintenanceReason":"Owner explicitly requested immediate repair of the reproduced source-resolution dead-end."},"recovery":false,"fingerprint":"b36b394c8fa737742a1207a42df9bc632e01101ecd6b0c18e4cef8a036a1f779","replayCount":0,"serializedBytes":12153},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-01T19:45:24.996338+00:00","proof_gate":"repository_mutation_intent_persisted","source_sha":null,"external_id":null,"receipt_type":"repository_mutation_intent","idempotency_key":"mission:96205e13-fba5-423b-9ada-cf0d546d2c31:repository-mutation-intent:b36b394c8fa737742a1207a42df9bc632e01101ecd6b0c18e4cef8a036a1f779:0","mission_step_id":"fc6ee58e-fc5d-4404-acc6-7c09ab64cb1c","command_center_event_id":"96205e13-fba5-423b-9ada-cf0d546d2c31"},{"id":"bdb46203-9df6-49e9-a8a7-493005095f1e","source":"forgejo-runtime","status":"verified","payload":{"failed":[],"states":{"forgejo-main/source":"success","forgejo-release/workflow":"success","cc-execution/runtime-proof":"success"},"mainSha":"6d586b7449d625bb6e648290b0faea8570c4ee41","missing":[],"pending":[],"required":["forgejo-main/source","forgejo-release/workflow","cc-execution/runtime-proof"],"sourceSha":"6d586b7449d625bb6e648290b0faea8570c4ee41","releaseState":"verified","sourceInMain":true,"compareStatus":"protected_main_push_exact_source","releaseTargets":{"frontend":false,"onrunner":false,"migrations":false,"ccExecution":true,"supabaseEdge":false,"edgeFunctionSlugs":[]},"requestContractHash":"7f359c19e8928a290c01bd65f3568ab8768d5d34b05ac98dbabdf54a5b35f308","forgejoWorkflowProof":{"url":"https://git.knocklaunch.app/noel/KnockLaunchOS/actions/runs/3892","runId":3892,"status":"success","sourceSha":"6d586b7449d625bb6e648290b0faea8570c4ee41","conclusion":null,"failedJobs":[],"diagnostics":null,"exactSource":true},"onrunnerRuntimeProof":null,"releaseSourceVerified":true,"ccExecutionRuntimeProof":{"liveSha":"6d586b7449d625bb6e648290b0faea8570c4ee41","proofGate":"cc_execution_historical_runtime_identity_verified","deploymentId":"forgejo-main-6d586b7449d625bb6e648290b0faea8570c4ee41","compareStatus":"exact_release_workflow_runtime_verified","workflowRunId":3892,"identitySource":"canonical_release_workflow_exact_runtime_identity","runtimeVersion":"1.56.9-owner-shorthand-parallel-execution","containsSourceSha":true,"historicalExactSourceProof":true},"releaseTargetRecoveryProof":null,"exactReleaseVerifiedAfterMainAdvanced":false},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-08-31T17:56:44.32291+00:00","proof_gate":"canonical_release_terminal_verified","source_sha":"6d586b7449d625bb6e648290b0faea8570c4ee41","external_id":"forgejo-main-6d586b7449d6","receipt_type":"canonical_release_status","idempotency_key":"mission:0e2f8d65-b4c1-4148-b47c-19e5c912f6f7:forgejo-release-status:6d586b7449d625bb6e648290b0faea8570c4ee41:verified:forgejo-main/source=success|forgejo-release/workflow=success|cc-execution/runtime-proof=success","mission_step_id":"f0c0020e-542c-4ad9-8dd3-4400e5c67203","command_center_event_id":"0e2f8d65-b4c1-4148-b47c-19e5c912f6f7"},{"id":"bdb62598-52a8-45e7-b079-8d4d964b5ed4","source":"cc-execution","status":"waiting_for_gate","payload":{"ok":true,"jobId":null,"phase":"pull_request","branch":"ai/objective-first-repair-ec7b9c10c31d","reason":"pull_request_checks_pending","status":"waiting_for_gate","metrics":{"receiptBytes":0,"releaseCount":0,"toolCallCount":0,"repeatedCallCount":0,"ownerInterruptionCount":0},"version":null,"prNumber":2923,"terminal":false,"missionId":"ec7b9c10-c31d-4c67-bb72-4209ecfa92e2","operation":"automatic_mission_resume","proofGate":"repair_mission_waiting_for_gate","sourceSha":null,"timingsMs":{"prReadinessMs":2060,"approvedPlanMs":0,"shipAndProveMs":0,"repositoryMutationMs":0,"repositoryProviderMs":0,"repositoryAtomicCommitMs":0,"repositoryBranchCreateMs":0,"repositoryPullRequestCreateMs":0},"nextAction":"Reconcile this same mission and pull request after the exact-head KnockLaunch Gate changes state.","receiptRef":{"mode":"full","missionId":"ec7b9c10-c31d-4c67-bb72-4209ecfa92e2"},"performance":null,"deploymentId":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":1284,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-16T16:16:48.641868+00:00","proof_gate":"repair_mission_waiting_for_gate","source_sha":null,"external_id":"2923","receipt_type":"automatic_mission_resume","idempotency_key":"mission:ec7b9c10-c31d-4c67-bb72-4209ecfa92e2:automatic-mission-resume:2923:repair_mission_waiting_for_gate","mission_step_id":"3b008094-0602-41ed-8ec9-cbbe22fa5e12","command_center_event_id":"ec7b9c10-c31d-4c67-bb72-4209ecfa92e2"},{"id":"bdb6435c-d6a9-4f06-9c5f-c69fe8649841","source":"forgejo-runtime","status":"pending","payload":{"failed":[],"states":{"forgejo-main/source":"success","forgejo-release/workflow":"pending","frontend-cloudflare/live":"pending"},"mainSha":"8b8bb11b386a2fb948882afd5513144c2d80ed8c","missing":[],"pending":["forgejo-release/workflow","frontend-cloudflare/live"],"required":["forgejo-main/source","forgejo-release/workflow","frontend-cloudflare/live"],"sourceSha":"8b8bb11b386a2fb948882afd5513144c2d80ed8c","releaseState":"pending","sourceInMain":true,"compareStatus":"identical","releaseTargets":{"frontend":true,"onrunner":false,"migrations":false,"ccExecution":false,"supabaseEdge":false,"edgeFunctionSlugs":[]},"requestContractHash":"71df5d1f46cfe2d656474ea1e145b3c1dc7657cfba34e93054c0c3275d69d07f","forgejoWorkflowProof":{"url":"https://git.knocklaunch.app/noel/KnockLaunchOS/actions/runs/3954","runId":3954,"status":"running","sourceSha":"8b8bb11b386a2fb948882afd5513144c2d80ed8c","conclusion":null,"failedJobs":[],"diagnostics":null,"exactSource":true},"onrunnerRuntimeProof":null,"releaseSourceVerified":true,"ccExecutionRuntimeProof":null,"releaseTargetRecoveryProof":null,"exactReleaseVerifiedAfterMainAdvanced":false},"tenant_id":"de8369b6-a78f-40bb-ae1f-28ffca62bc7e","created_at":"2026-09-01T10:19:44.082425+00:00","proof_gate":"canonical_release_pending","source_sha":"8b8bb11b386a2fb948882afd5513144c2d80ed8c","external_id":"forgejo-main-8b8bb11b386a","receipt_type":"canonical_release_status","idempotency_key":"mission:8815289d-c577-409f-8d51-92c78a69d810:forgejo-release-status:8b8bb11b386a2fb948882afd5513144c2d80ed8c:pending:forgejo-main/source=success|forgejo-release/workflow=pending|frontend-cloudflare/live=pending","mission_step_id":"ae9138f8-3d67-450a-9c0d-c4da3e1635d1","command_center_event_id":"8815289d-c577-409f-8d51-92c78a69d810"},{"id":"bdb80209-1061-4b66-833a-682248019ab0","source":"cc-execution","status":"blocked","payload":{"ok":false,"jobId":null,"phase":"pull_request","branch":"ai/forgejo-timeout-hardening","reason":"existing_branch_refresh_failed:2219:500","status":"blocked","metrics":{"receiptBytes":0,"releaseCount":0,"toolCallCount":0,"repeatedCallCount":0,"ownerInterruptionCount":0},"version":"1.58.77-mcp-oauth-es256","prNumber":2219,"terminal":false,"missionId":"366e8a41-b11b-446f-8147-da071bd5769c","operation":"execute_mission","proofGate":"repair_mission_execution_blocked","sourceSha":null,"timingsMs":{"gateMs":0,"proofMs":0,"handlerMs":2404,"releaseMs":0,"mutationMs":0,"repositoryMs":0,"prReadinessMs":0,"approvedPlanMs":0,"missionSetupMs":451,"providerAuthMs":0,"shipAndProveMs":0,"ledgerPrepareMs":266,"ledgerReconcileMs":0,"lineageReconcileMs":185,"resolvePreflightMs":451,"repositoryMutationMs":2404,"repositoryProviderMs":0,"authoritativeLedgerMs":0,"ledgerAsyncDispatchMs":0,"repositoryAtomicCommitMs":0,"repositoryBranchCreateMs":0,"totalSynchronousLedgerMs":266,"asyncBookkeepingDispatchMs":0,"ledgerAuthoritativeCommitMs":0,"repositoryPullRequestCreateMs":0},"nextAction":null,"receiptRef":{"mode":"full","missionId":"366e8a41-b11b-446f-8147-da071bd5769c"},"performance":null,"deploymentId":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":1465,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-09T03:03:33.327768+00:00","proof_gate":"repair_mission_execution_blocked","source_sha":null,"external_id":null,"receipt_type":"execute_mission","idempotency_key":"mission:366e8a41-b11b-446f-8147-da071bd5769c:execute_mission:repair_mission_execution_blocked:current-generation","mission_step_id":"4556eec2-c237-4709-923d-185f22719e56","command_center_event_id":"366e8a41-b11b-446f-8147-da071bd5769c"},{"id":"bdb825c3-d45b-44f9-8ac3-82c5e2b1b245","source":"forgejo","status":"waiting","payload":{"branch":"ai/objective-first-repair-358e24ae4f67","prNumber":4902,"nextAction":"Follow the existing canonical release to terminal proof.","mergeCommitSha":"d95a888cc0304fcb33b631f13f62f1afb572d4dd","branchDeletedAfterMerge":true,"correctiveGenerationCreated":false},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-05T12:39:37.174768+00:00","proof_gate":"forgejo_merged_pr_is_authoritative_source_lineage","source_sha":"d95a888cc0304fcb33b631f13f62f1afb572d4dd","external_id":"4902","receipt_type":"source_lineage_merged_pr_authoritative","idempotency_key":"mission:358e24ae-4f67-487a-8654-8e9ea25e1c7f:merged-pr:4902:d95a888cc0304fcb33b631f13f62f1afb572d4dd","mission_step_id":"03c35dd8-6a39-4457-9ecf-33d6a71cec11","command_center_event_id":"358e24ae-4f67-487a-8654-8e9ea25e1c7f"},{"id":"bdb928c4-dbac-4622-b723-7558cf0748cb","source":"cc-execution","status":"retryable","payload":{"ok":false,"jobId":null,"phase":"pull_request","branch":"ai/objective-first-repair-2d15c0e03818","reason":"retryable_provider_transport:forgejo_provider_read_timeout","status":"retryable","metrics":{"receiptBytes":44131,"releaseCount":0,"toolCallCount":29,"repeatedCallCount":23,"executorlessWaitMs":89740,"firstUsefulResultAt":"2026-10-06T01:49:51.295Z","recoveryAttemptCount":25,"ownerInterruptionCount":0},"version":null,"prNumber":5126,"terminal":false,"missionId":"2d15c0e0-3818-4d46-bfee-e3e86d0461c6","operation":"automatic_mission_resume","proofGate":"repair_mission_pr_ready_retryable","sourceSha":null,"timingsMs":{"prReadinessMs":2055,"approvedPlanMs":0,"shipAndProveMs":0,"repositoryMutationMs":0,"repositoryProviderMs":0,"repositoryAtomicCommitMs":0,"repositoryBranchCreateMs":0,"repositoryPullRequestCreateMs":0},"nextAction":"Reconcile this same mission and pull request automatically; do not create a replacement branch or PR.","receiptRef":{"mode":"full","missionId":"2d15c0e0-3818-4d46-bfee-e3e86d0461c6"},"performance":null,"deploymentId":null,"releaseState":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","pendingProofKinds":["runtime"],"verificationState":null,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":819,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true,"requestContractState":"pending"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-06T01:50:11.463775+00:00","proof_gate":"repair_mission_pr_ready_retryable","source_sha":null,"external_id":"5126","receipt_type":"automatic_mission_resume","idempotency_key":"mission:2d15c0e0-3818-4d46-bfee-e3e86d0461c6:automatic-mission-resume:5126:repair_mission_pr_ready_retryable","mission_step_id":"93a91405-4f3f-48ac-ac1c-6a753e302b21","command_center_event_id":"2d15c0e0-3818-4d46-bfee-e3e86d0461c6"},{"id":"bdbaaa54-8c8a-4486-9e65-fb3ac8271fe9","source":"cc-execution","status":"blocked","payload":{"reason":"control_plane_maintenance_authorization_required","fingerprint":"2e024d548ab40308e143301c6cb7018c2ef7e19f348c9e3ca771669416390738"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-30T13:10:54.070274+00:00","proof_gate":"repository_mutation_intent_deterministic_failure","source_sha":null,"external_id":null,"receipt_type":"repository_mutation_intent_blocked","idempotency_key":"mission:706a49ce-70b7-4390-aafe-e19a3997d054:repository-mutation-intent-blocked:2e024d548ab40308e143301c6cb7018c2ef7e19f348c9e3ca771669416390738","mission_step_id":"2a46537d-8923-4162-ae70-89c3ed2e1f9a","command_center_event_id":"706a49ce-70b7-4390-aafe-e19a3997d054"},{"id":"bdbaf001-d6e6-41c2-9c26-953ef63b9db4","source":"durable-mission-ledger","status":"pending","payload":{"sourceSha":"e5ffd986c40256768664ed5fa2518cdba22c18e6","requestContractProof":{"legacy":false,"present":true,"outcomes":[{"id":"outcome-1","satisfied":false,"statement":"Install a permanent tenant-route outage safeguard from current Forgejo main dc915936223c04342d0976bb13ec647dbc16fb4b. Use one fresh ai/* branch and change only src/routes/verticalRouteRegistry.ts and src/__tests__/contracts/tenant-isolation-hard-safety.contract.test.ts. In verticalRouteRegistry, create one shared business-route-eligibility boundary using existing normalizeDeclaredBusinessType so reserved/non-business identities (including PLATFORM, PLATFORM_ADMIN, GODMODE, ADMIN, SYSTEM_ADMIN) fail soft in canonicalTenantRouteSlugForIdentity, tenantRouteIdentityAliases, tenantRouteIdentityMatchesRequestedSlug, and resolveTenantRouteMembership instead of ever reaching business canonicalization and throwing. Preserve all valid canonical and custom business tenant routing. If requestedTenantType itself is reserved/non-business, resolveTenantRouteMembership must return a normal non-match/type-mismatch result rather than throw. In the existing always-run tenant-isolation-hard-safety contract, add behavioral regression coverage for a mixed GodMode-style membership list containing all reserved identities plus ROOFING_COMPANY Redfish and MOBILE_VENDOR Big Papi's; prove both business routes","proofConditionIds":["proof-production"]}],"satisfied":false,"constraints":[{"id":"capability-completeness","satisfied":false,"statement":"Every dependency the implementation declares or relies on must be wired and proven across applicable frontend, backend/runtime, schema/data/storage, authentication/authorization, provider configuration, prerequisite/loading/empty/error states, release ownership, and live production behavior; owner-authorized unavailable dependencies must become explicit prerequisite states rather than runtime failures.","proofConditionIds":["proof-production"]},{"id":"atomic-capability-lifecycle","satisfied":false,"statement":"Changed capabilities remain non-active until dependency readiness, N/N-1 compatibility, affected-target release, and claim-matched production canary proof are satisfied; missing optional dependencies become prerequisite_required, and runtime drift or health-contract violation quarantines only the affected capability instead of breaking unrelated working capability.","proofConditionIds":["proof-production"]}],"contractHash":"38c97d1a721c9f7f6f86d6691a2fe33578ef5bfa5b7c696cba48ca2970109e4e","releaseBound":true,"witnessBound":false,"visualRequested":false,"visualSatisfied":true,"conditionResults":[{"id":"proof-production","kind":"runtime","evidence":{"reason":null,"satisfied":true,"releaseState":"verified","missingTargets":[],"disallowedTargets":[],"migrationRequired":false,"releaseTargetStates":{},"unsuccessfulTargets":[],"activeReleaseTargets":[],"allowedReleaseTargets":[],"requiredReleaseTargets":[],"migrationReleaseVerified":null,"releaseRequestContractHash":"38c97d1a721c9f7f6f86d6691a2fe33578ef5bfa5b7c696cba48ca2970109e4e"},"required":true,"satisfied":false}],"validationErrors":[],"pendingProofKinds":["runtime"],"activeReleaseTargets":[]},"authoritativeMissionRefresh":true,"evaluatedRequestContractRevision":1},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-14T00:43:35.007545+00:00","proof_gate":"request_contract_pending","source_sha":"e5ffd986c40256768664ed5fa2518cdba22c18e6","external_id":null,"receipt_type":"request_contract_reconciliation","idempotency_key":"mission:9de0b291-5856-43cb-9f33-5ac84a81cdef:request-contract:38c97d1a721c9f7f6f86d6691a2fe33578ef5bfa5b7c696cba48ca2970109e4e:e5ffd986c40256768664ed5fa2518cdba22c18e6:pending:runtime","mission_step_id":"b60fc738-6787-4256-bd2f-3c36434cb3b2","command_center_event_id":"9de0b291-5856-43cb-9f33-5ac84a81cdef"},{"id":"bdbb3a46-e183-4f23-bb6d-ebca71961986","source":"cc-execution","status":"authorized","payload":{"paths":["workers/cc-execution/src/command-center-contracts.js","workers/cc-execution/test/release-orchestration-invariants.test.js"],"reason":"Owner explicitly authorized unfreezing the control plane to remove the legacy request-contract lockout while preserving strict explicit proof and all release safety invariants.","baseSha":"6c0aae1227b24a2e0741b75f09631e88ac9337c6","issuedAt":1789669409714,"expiresAt":1789669589714,"missionId":"5ea67245-081d-4e7f-b1ab-b6c933019c4d","authorizationId":"da7a4e40-f082-463a-9744-8860b7c46d71","retryableWithinExactScope":true},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-17T18:23:31.191417+00:00","proof_gate":"control_plane_maintenance_scope_authorized","source_sha":"6c0aae1227b24a2e0741b75f09631e88ac9337c6","external_id":null,"receipt_type":"control_plane_maintenance_authorization","idempotency_key":"control-plane-maintenance-authorize:da7a4e40-f082-463a-9744-8860b7c46d71","mission_step_id":"1cd942d8-a732-44e2-8be4-f37328b2a4a4","command_center_event_id":"5ea67245-081d-4e7f-b1ab-b6c933019c4d"},{"id":"bdbb9776-1343-47b0-b45f-e62ede7c4db9","source":"cc-execution","status":"waiting","payload":{"kind":"heartbeat","message":"Still active in implementation.","nextAction":{"lane":"cc-execution","action":"reconcile_pull_request","reason":"pull_request_exists_without_merged_source","automationAllowed":true,"ownerActionRequired":false},"silenceBudgetMs":15000,"semanticCheckpointSignature":"{\"stateMachineVersion\":1,\"phase\":\"implementation\",\"ownerFacingState\":null,\"latest\":{\"kind\":\"receipt\",\"key\":\"deterministic_supervisor_transition\",\"status\":\"advanced\",\"proofGate\":\"deterministic_semantic_transition_journaled\"},\"activeStep\":{\"key\":\"pull_request\",\"status\":\"ready\",\"lane\":\"cc-execution\"},\"nextStep\":{\"key\":\"release\",\"status\":\"ready\",\"lane\":\"production-release-conductor\"},\"nextSafeAction\":{\"action\":\"reconcile_pull_request\",\"lane\":\"cc-execution\",\"reason\":\"pull_request_exists_without_merged_source\",\"automationAllowed\":true,\"ownerActionRequired\":false},\"executionOwnership\":{\"active\":false,\"state\":\"waiting\",\"executor\":null,\"lane\":\"cc-execution\",\"nextAction\":\"reconcile_pull_request\",\"recoveryOwner\":\"cc-execution\"},\"acceptance\":{\"total\":6,\"verified\":2,\"pending\":4,\"percent\":33,\"satisfied\":false,\"verifiedIds\":[\"preflight\",\"implementation\"],\"pendingIds\":[\"pull_request\",\"release\",\"runtime_proof\",\"visual_proof\"]},\"stall\":{\"stalled\":true,\"reason\":\"step_deadline_exceeded\",\"step\":\"runtime_proof\",\"deadlineAt\":\"2026-08-05T03:31:01.398179+00:00\",\"recoveryAction\":\"reconcile_pull_request\"},\"blocker\":null,\"terminal\":false,\"branch\":\"ai/fix-experience-editor-proof-dispatch-20260804\",\"prNumber\":4016,\"sourceSha\":null,\"deploymentId\":null}"},"tenant_id":"a2929648-19db-46c8-9e93-07378ed1aa5f","created_at":"2026-10-03T09:48:11.058921+00:00","proof_gate":"owner_progress_heartbeat","source_sha":null,"external_id":null,"receipt_type":"owner_progress_heartbeat","idempotency_key":"mission:871b1f2d-4576-48f4-9977-8d8a8ae99d7e:owner-progress-heartbeat:119401392","mission_step_id":"c6526d6f-0d53-42de-a6a6-b6d8f434e2f5","command_center_event_id":"871b1f2d-4576-48f4-9977-8d8a8ae99d7e"},{"id":"bdbd55e1-91f8-45b5-992a-850e660f6b23","source":"cc-execution","status":"release_freshness_reconciliation_pending","payload":{"ok":true,"jobId":null,"phase":"pull_request","branch":"ai/objective-first-repair-e908936ef307","reason":null,"status":"release_freshness_reconciliation_pending","metrics":{"receiptBytes":50881,"releaseCount":0,"toolCallCount":20,"repeatedCallCount":12,"executorlessWaitMs":250589,"firstUsefulResultAt":"2026-10-06T13:50:58.954Z","recoveryAttemptCount":12,"ownerInterruptionCount":0},"version":null,"prNumber":5181,"terminal":false,"missionId":"e908936e-f307-463c-9631-a6fa61f98025","operation":"automatic_mission_resume","proofGate":"canonical_release_freshness_reconciliation_pending","sourceSha":null,"timingsMs":{"prReadinessMs":957,"approvedPlanMs":0,"shipAndProveMs":1047,"repositoryMutationMs":0,"repositoryProviderMs":0,"repositoryAtomicCommitMs":0,"repositoryBranchCreateMs":0,"repositoryPullRequestCreateMs":0},"nextAction":"refresh_regate_and_reconcile_release","receiptRef":{"mode":"full","missionId":"e908936e-f307-463c-9631-a6fa61f98025"},"performance":null,"deploymentId":null,"releaseState":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","pendingProofKinds":[],"verificationState":null,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":777,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true,"requestContractState":"pending"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-06T13:55:30.999782+00:00","proof_gate":"canonical_release_freshness_reconciliation_pending","source_sha":null,"external_id":"5181","receipt_type":"automatic_mission_resume","idempotency_key":"mission:e908936e-f307-463c-9631-a6fa61f98025:automatic-mission-resume:5181:canonical_release_freshness_reconciliation_pending","mission_step_id":"baa11ec4-7bb2-455c-ac85-399bd7143d21","command_center_event_id":"e908936e-f307-463c-9631-a6fa61f98025"},{"id":"bdbd5967-50fe-4045-9e5d-71289bbcd148","source":"forgejo","status":"waiting","payload":{"branch":"ai/command-center-host-access-20260825","prNumber":766,"nextAction":"Follow the existing canonical release to terminal proof.","mergeCommitSha":"372c1439a794928e2ae76e7b499bfb96fba93b07","branchDeletedAfterMerge":true,"correctiveGenerationCreated":false},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-08-26T03:01:56.837762+00:00","proof_gate":"forgejo_merged_pr_is_authoritative_source_lineage","source_sha":"372c1439a794928e2ae76e7b499bfb96fba93b07","external_id":"766","receipt_type":"source_lineage_merged_pr_authoritative","idempotency_key":"mission:2a20d855-d9bb-4414-8407-41d17e580efd:merged-pr:766:372c1439a794928e2ae76e7b499bfb96fba93b07","mission_step_id":"42b4104a-fc6f-4109-b528-d7a3d36b06ce","command_center_event_id":"2a20d855-d9bb-4414-8407-41d17e580efd"},{"id":"bdbdc955-e06c-4706-b87f-f3822d7bb2ed","source":"durable-mission-ledger","status":"pending","payload":{"sourceSha":"2b8f065ebf4d762a39f87cf8b65290f9eff7fd18","requestContractProof":{"legacy":false,"present":true,"outcomes":[{"id":"migration-live","satisfied":false,"statement":"PR #1895 is squash merged and the corrected Supabase migration succeeds.","proofConditionIds":["gate-proof","release-proof"]},{"id":"runtime-repaired","satisfied":true,"statement":"V2 classifier and same-tenant move identity trigger are live, and the guarded La Vista split is reconciled to the original asset ID.","proofConditionIds":["runtime-proof"]}],"satisfied":false,"constraints":[{"id":"migration-only","satisfied":true,"statement":"Only Supabase migrations are released.","proofConditionIds":["release-proof"]},{"id":"no-organizer-before-live","satisfied":true,"statement":"No additional storage organization runs before this exact migration release is verified.","proofConditionIds":["release-proof","runtime-proof"]}],"contractHash":"9c7bf42778cc155b70c510865166a424bf8619ed478625d92526f262c307515d","releaseBound":true,"witnessBound":false,"visualRequested":false,"visualSatisfied":true,"conditionResults":[{"id":"gate-proof","kind":"repository","evidence":{"repositoryProofGate":null,"requestContractHash":"9c7bf42778cc155b70c510865166a424bf8619ed478625d92526f262c307515d","repositoryProofStatus":"required","repositoryProofSourceSha":null},"required":true,"satisfied":false},{"id":"release-proof","kind":"release","evidence":{"releaseState":"verified","activeReleaseTargets":["migrations"],"releaseRequestContractHash":"9c7bf42778cc155b70c510865166a424bf8619ed478625d92526f262c307515d"},"required":true,"satisfied":true},{"id":"runtime-proof","kind":"runtime","evidence":{"releaseState":"verified","activeReleaseTargets":["migrations"],"releaseRequestContractHash":"9c7bf42778cc155b70c510865166a424bf8619ed478625d92526f262c307515d"},"required":true,"satisfied":true}],"validationErrors":[],"pendingProofKinds":["repository"],"activeReleaseTargets":["migrations"]},"authoritativeMissionRefresh":true,"evaluatedRequestContractRevision":1},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-06T00:14:35.228033+00:00","proof_gate":"request_contract_pending","source_sha":"2b8f065ebf4d762a39f87cf8b65290f9eff7fd18","external_id":null,"receipt_type":"request_contract_reconciliation","idempotency_key":"mission:48324922-59ea-4ae3-bbe5-64520eb8e844:request-contract:9c7bf42778cc155b70c510865166a424bf8619ed478625d92526f262c307515d:2b8f065ebf4d762a39f87cf8b65290f9eff7fd18:pending:repository","mission_step_id":"4a980d2b-9d32-4f1e-ad4f-e8f595696358","command_center_event_id":"48324922-59ea-4ae3-bbe5-64520eb8e844"},{"id":"bdbf9b00-e1a2-4a5f-9ce3-f770c537bc40","source":"cc-execution","status":"recorded","payload":{"requestContract":{"valid":true,"intent":{"evidence":[],"confidence":null,"rawUtterance":"Unfreeze the control plane only for this bounded proof-kind correction discovered by live verification of 1.58.116, then refreeze after proof. Preserve missing-migration fail-closed behavior, restrict implicit migration release-target inference to runtime/release/scope proof kinds, add the repository-prose regression, bump to 1.58.117-request-proof-kind-aware, and ship ccExecution only.","wordingChanged":false,"canonicalIntent":"Unfreeze the control plane only for this bounded proof-kind correction discovered by live verification of 1.58.116, then refreeze after proof. Preserve missing-migration fail-closed behavior, restrict implicit migration release-target inference to runtime/release/scope proof kinds, add the repository-prose regression, bump to 1.58.117-request-proof-kind-aware, and ship ccExecution only.","resolutionStatus":"exact","uniqueResolution":true,"clarificationRequired":false},"source":"explicit","version":1,"outcomes":[{"id":"outcome-1","statement":"Runtime/release/scope migration-applied claims still infer migrations and fail closed when migrations is absent.","proofConditionIds":["proof-1","proof-2"]},{"id":"outcome-2","statement":"Repository proof prose that merely mentions/describes a migration regression does not implicitly require the migrations release target.","proofConditionIds":["proof-1","proof-2"]},{"id":"outcome-3","statement":"Production cc-execution runs 1.58.117-request-proof-kind-aware on the merged SHA and the control plane is frozen after deployment.","proofConditionIds":["proof-2"]}],"objective":"Unfreeze the control plane only for this bounded proof-kind correction discovered by live verification of 1.58.116, then refreeze after proof. Preserve missing-migration fail-closed behavior, restrict implicit migration release-target inference to runtime/release/scope proof kinds, add the repository-prose regression, bump to 1.58.117-request-proof-kind-aware, and ship ccExecution only.","constraints":[{"id":"constraint-1","statement":"Preserve 1.58.116 target-aware enforcement, release singleflight, and legitimate edge-only missions.","proofConditionIds":["proof-1","proof-2"]},{"id":"constraint-2","statement":"No parallel verifier, release lane, mission ledger, tenant behavior change, or database mutation.","proofConditionIds":["proof-1"]},{"id":"constraint-3","statement":"One branch, one PR, one Gate, one squash merge, ccExecution-only release.","proofConditionIds":["proof-2"]}],"terminalPolicy":"all_required_proof_conditions_satisfied_after_live_release","proofConditions":[{"id":"proof-1","kind":"repository","claim":"Merged source and contract regression tests implement proof-kind-aware migration inference and preserve the original missing-migration runtime fail-closed case.","route":null,"roleRef":null,"userRef":null,"required":true,"expectedText":null,"targetedActions":[],"allowedReleaseTargets":["ccExecution"],"requiredReleaseTargets":[]},{"id":"proof-2","kind":"runtime","claim":"Production cc-execution runs version 1.58.117-request-proof-kind-aware on the merged SHA and the maintenance window is closed/frozen.","route":null,"roleRef":null,"userRef":null,"required":true,"expectedText":null,"targetedActions":[],"allowedReleaseTargets":["ccExecution"],"requiredReleaseTargets":["ccExecution"]}],"validationErrors":[]},"requestContractHash":"636f864cde2692e7e70680f38f07494fbd6eb34243b26ed0e4b9a968349c5db6","requestContractRevision":2,"previousRequestContractHash":"26157c4b3140ba1886204c532fd75b20f2cbf0ab620d31c7cf1e70d0f943b680"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-12T01:30:45.181171+00:00","proof_gate":"request_contract_revision_recorded","source_sha":null,"external_id":null,"receipt_type":"request_contract_revision","idempotency_key":"mission:11a7db98-6a2a-4928-ae51-603014ea7da5:request-contract:636f864cde2692e7e70680f38f07494fbd6eb34243b26ed0e4b9a968349c5db6","mission_step_id":"bee2031a-4ead-40b5-875d-e8aa4912cab8","command_center_event_id":"11a7db98-6a2a-4928-ae51-603014ea7da5"},{"id":"bdc3612a-1a36-4773-88fd-07bc0f828bbd","source":"cc-execution","status":"deployment_dispatched","payload":{"ok":true,"jobId":null,"phase":"implementation","branch":"ai/sync-runtime-release-ownership-20260904","reason":null,"status":"deployment_dispatched","metrics":{"receiptBytes":0,"releaseCount":0,"toolCallCount":0,"repeatedCallCount":0,"ownerInterruptionCount":0},"version":"1.58.38-atomic-new-branch-refreeze","prNumber":1684,"terminal":false,"missionId":"7163978d-886d-4591-ad04-d960d4591f77","operation":"execute_mission","proofGate":"canonical_release_dispatched","sourceSha":"266e0808e3d2ffce22e9b317f0930d67d0136eaa","timingsMs":{"gateMs":0,"proofMs":0,"handlerMs":12856,"releaseMs":0,"mutationMs":0,"repositoryMs":0,"prReadinessMs":928,"approvedPlanMs":0,"missionSetupMs":1056,"providerAuthMs":0,"shipAndProveMs":11813,"ledgerPrepareMs":907,"ledgerReconcileMs":0,"lineageReconcileMs":149,"resolvePreflightMs":1056,"repositoryMutationMs":0,"repositoryProviderMs":0,"authoritativeLedgerMs":0,"ledgerAsyncDispatchMs":0,"repositoryAtomicCommitMs":0,"repositoryBranchCreateMs":0,"totalSynchronousLedgerMs":907,"asyncBookkeepingDispatchMs":0,"ledgerAuthoritativeCommitMs":0,"repositoryPullRequestCreateMs":0},"nextAction":null,"receiptRef":{"mode":"full","missionId":"7163978d-886d-4591-ad04-d960d4591f77"},"performance":null,"deploymentId":"forgejo-main-266e0808e3d2","workflowRunId":null,"releaseTargets":{"frontend":false,"onrunner":false,"migrations":false,"ccExecution":true,"supabaseEdge":false,"edgeFunctionSlugs":[]},"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":2691,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-04T12:37:14.096372+00:00","proof_gate":"canonical_release_dispatched","source_sha":"266e0808e3d2ffce22e9b317f0930d67d0136eaa","external_id":"forgejo-main-266e0808e3d2","receipt_type":"execute_mission","idempotency_key":"mission:7163978d-886d-4591-ad04-d960d4591f77:execute_mission:canonical_release_dispatched:current-generation","mission_step_id":"4be52e17-ba32-4726-a111-7cf43ba45568","command_center_event_id":"7163978d-886d-4591-ad04-d960d4591f77"},{"id":"bdc36962-71db-4aca-91ea-6ccab5c8a615","source":"durable-mission-ledger","status":"pending","payload":{"sourceSha":"52caadb8a15ac752e42150bb9e56cc4e6b8fc652","requestContractProof":{"legacy":false,"present":true,"outcomes":[{"id":"outcome-1","satisfied":false,"statement":"Every individual route in the four Curri tenant families has been inspected for graphic cohesiveness.","proofConditionIds":["proof-certified-settings","proof-curri-today","proof-realty-today","proof-onecall-today"]},{"id":"outcome-2","satisfied":false,"statement":"Certified Pro Roofing Settings no longer has the split white/background visual break or unreadable white-on-white controls.","proofConditionIds":["proof-certified-settings"]},{"id":"outcome-3","satisfied":false,"statement":"Shared shell/theme defects causing background discontinuity or contrast failures are repaired at the governing frontend primitive when safe.","proofConditionIds":["proof-source-diff","proof-certified-settings","proof-curri-today","proof-realty-today","proof-onecall-today"]},{"id":"outcome-4","satisfied":false,"statement":"Each tenant retains its own brand styling and correct tenant-specific route family without cross-tenant contamination.","proofConditionIds":["proof-source-diff","proof-certified-settings","proof-curri-today","proof-realty-today","proof-onecall-today"]},{"id":"outcome-5","satisfied":false,"statement":"Affected frontend changes are live in production.","proofConditionIds":["proof-production-release","proof-certified-settings","proof-curri-today","proof-realty-today","proof-onecall-today"]}],"satisfied":false,"constraints":[{"id":"constraint-1","satisfied":false,"statement":"Forgejo main is canonical source truth.","proofConditionIds":["proof-source-diff"]},{"id":"constraint-2","satisfied":false,"statement":"One fresh ai/* branch, one PR, KnockLaunch Gate, squash merge.","proofConditionIds":["proof-source-diff"]},{"id":"constraint-3","satisfied":false,"statement":"Do not touch database, auth, backend, or unrelated runtime unless evidence proves required.","proofConditionIds":["proof-source-diff"]},{"id":"constraint-4","satisfied":false,"statement":"Do not introduce Redfish routes or content into Certified Pro Roofing.","proofConditionIds":["proof-source-diff","proof-certified-settings"]},{"id":"constraint-5","satisfied":true,"statement":"Do not run unrelated production targets.","proofConditionIds":["proof-production-release"]}],"contractHash":"588a068cdacf7f47747651749c10902f174db7e45bb0f0cf2bb1c5a7cdf54e71","releaseBound":true,"witnessBound":false,"visualRequested":false,"visualSatisfied":true,"conditionResults":[{"id":"proof-source-diff","kind":"repository","evidence":{"repositoryProofGate":null,"requestContractHash":"588a068cdacf7f47747651749c10902f174db7e45bb0f0cf2bb1c5a7cdf54e71","repositoryProofStatus":"required","repositoryProofSourceSha":null},"required":true,"satisfied":false},{"id":"proof-production-release","kind":"release","evidence":{"releaseState":"verified","activeReleaseTargets":["frontend"],"releaseRequestContractHash":"588a068cdacf7f47747651749c10902f174db7e45bb0f0cf2bb1c5a7cdf54e71"},"required":true,"satisfied":true},{"id":"proof-certified-settings","kind":"visual","evidence":{"verificationState":null,"witnessRequestContractHash":"588a068cdacf7f47747651749c10902f174db7e45bb0f0cf2bb1c5a7cdf54e71"},"required":true,"satisfied":false},{"id":"proof-curri-today","kind":"visual","evidence":{"verificationState":null,"witnessRequestContractHash":"588a068cdacf7f47747651749c10902f174db7e45bb0f0cf2bb1c5a7cdf54e71"},"required":true,"satisfied":false},{"id":"proof-realty-today","kind":"visual","evidence":{"verificationState":null,"witnessRequestContractHash":"588a068cdacf7f47747651749c10902f174db7e45bb0f0cf2bb1c5a7cdf54e71"},"required":true,"satisfied":false},{"id":"proof-onecall-today","kind":"visual","evidence":{"verificationState":null,"witnessRequestContractHash":"588a068cdacf7f47747651749c10902f174db7e45bb0f0cf2bb1c5a7cdf54e71"},"required":true,"satisfied":false}],"validationErrors":[],"pendingProofKinds":["repository","visual"],"activeReleaseTargets":["frontend"]},"authoritativeMissionRefresh":true,"evaluatedRequestContractRevision":1},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-09T12:12:38.680999+00:00","proof_gate":"request_contract_pending","source_sha":"52caadb8a15ac752e42150bb9e56cc4e6b8fc652","external_id":null,"receipt_type":"request_contract_reconciliation","idempotency_key":"mission:f976d803-e66e-4f6f-afc3-2161b3c38ff6:request-contract:588a068cdacf7f47747651749c10902f174db7e45bb0f0cf2bb1c5a7cdf54e71:52caadb8a15ac752e42150bb9e56cc4e6b8fc652:pending:repository,visual","mission_step_id":"3d47b538-758e-41a3-9bbd-a96f29683040","command_center_event_id":"f976d803-e66e-4f6f-afc3-2161b3c38ff6"},{"id":"bdc62cc7-33c0-47f5-a117-e346fec5db32","source":"cc-execution","status":"waiting_for_gate","payload":{"ok":true,"jobId":null,"phase":"implementation","branch":"ai/objective-first-repair-b06df43ce5df","reason":"provider_verified_auto_progress_owns_gate_merge_release_outside_owner_response","status":"waiting_for_gate","metrics":{"receiptBytes":4882,"releaseCount":0,"toolCallCount":1,"repeatedCallCount":0,"executorlessWaitMs":0,"firstUsefulResultAt":"2026-09-24T14:45:32.191Z","recoveryAttemptCount":0,"ownerInterruptionCount":0},"version":"1.58.259-release-main-reread-eliminated","prNumber":3627,"terminal":false,"missionId":"b06df43c-e5df-4bb5-91af-d0f0a414fcfa","operation":"execute_mission","proofGate":"repair_mission_pr_handed_off_to_supervisor","sourceSha":null,"timingsMs":{"gateMs":0,"proofMs":0,"handlerMs":5541,"releaseMs":0,"mutationMs":0,"repositoryMs":0,"prReadinessMs":0,"approvedPlanMs":1666,"missionSetupMs":475,"providerAuthMs":0,"shipAndProveMs":0,"ledgerPrepareMs":475,"ledgerReconcileMs":0,"lineageReconcileMs":0,"resolvePreflightMs":475,"repositoryMutationMs":3875,"repositoryProviderMs":3875,"authoritativeLedgerMs":0,"ledgerAsyncDispatchMs":0,"repositoryAtomicCommitMs":2207,"repositoryBranchCreateMs":0,"totalSynchronousLedgerMs":475,"asyncBookkeepingDispatchMs":0,"ledgerAuthoritativeCommitMs":0,"repositoryPullRequestCreateMs":1668},"nextAction":"Canonical KnockLaunch Gate notifier and durable mission supervisor own Gate, merge, release, and proof progression from this exact PR head outside the owner response path.","receiptRef":{"mode":"full","missionId":"b06df43c-e5df-4bb5-91af-d0f0a414fcfa"},"performance":null,"deploymentId":null,"releaseState":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","pendingProofKinds":[],"verificationState":null,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":3497,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true,"requestContractState":"pending"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-24T14:45:38.931003+00:00","proof_gate":"repair_mission_pr_handed_off_to_supervisor","source_sha":null,"external_id":"3627","receipt_type":"execute_mission","idempotency_key":"mission:b06df43c-e5df-4bb5-91af-d0f0a414fcfa:execute_mission:repair_mission_pr_handed_off_to_supervisor:current-generation","mission_step_id":"5cf661e7-bc63-4824-aff2-3d12f211cc0e","command_center_event_id":"b06df43c-e5df-4bb5-91af-d0f0a414fcfa"},{"id":"bdc693f5-1ec0-4ca9-a68c-30193f0ddd92","source":"cc-execution","status":"authorized","payload":{"paths":["config/control-plane-capabilities.json","supabase/functions/command-center-autopilot/missionLedger.ts","workers/cc-execution/src/index-mcp.js","workers/cc-execution/src/index-mission-control.js","workers/cc-execution/src/mission-ledger.js","workers/cc-execution/src/version.js","workers/cc-execution/test/release-orchestration-invariants.test.js"],"reason":"Bounded owner-requested Command Center recovery hardening.","baseSha":"3591039579150b1d5b6885416bf380bfa9c4d833","issuedAt":1789950417368,"expiresAt":1789950597368,"missionId":"403bc395-9d19-486a-9409-06e51cc91573","authorizationId":"ce612e61-766b-4a22-b875-b991adaf2625","retryableWithinExactScope":true},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-21T00:26:57.70258+00:00","proof_gate":"control_plane_maintenance_scope_authorized","source_sha":"3591039579150b1d5b6885416bf380bfa9c4d833","external_id":null,"receipt_type":"control_plane_maintenance_authorization","idempotency_key":"control-plane-maintenance-authorize:ce612e61-766b-4a22-b875-b991adaf2625","mission_step_id":"8ff399e3-6061-4f45-91be-950b006841e4","command_center_event_id":"403bc395-9d19-486a-9409-06e51cc91573"},{"id":"bdc74b9a-becc-4695-a333-691d1e1d5f3a","source":"durable-mission-ledger","status":"verified","payload":{"sourceSha":"082744a8d00a91776c714ebe6f80d70ee49d3741","requestContractProof":{"legacy":false,"present":true,"outcomes":[{"id":"outcome-1","satisfied":true,"statement":"Repair TENANT_MESSENGER_V1 application-scope precedence and vocabulary source precedence. In supabase/functions/_shared/tenantMessengerProfile.ts, when settings.application_ids is a non-empty array it is authoritative and must be returned without unioning blueprint application lists; blueprint lists are fallback only. In vocabulary derivation, business_operating_blueprint module labels must be considered before settings.modes.cards labels. Apply the same authoritative settings.application_ids precedence in tenantCompilerApplicationIds inside supabase/functions/tenant-media-library/index.ts. Preserve all other behavior. Add regression assertions for both precedence rules. Ship through one PR, canonical Gate, squash merge, Supabase tenant-media-library release, and runtime contract proof.","proofConditionIds":["proof-production"]}],"satisfied":true,"constraints":[{"id":"visual-content-truth","satisfied":true,"statement":"Do not present invented names, metrics, prices, dates, services, testimonials, credentials, customer records, or other unknown business facts as real. Omit unknowns or mark them clearly as placeholder/example content.","proofConditionIds":["proof-production"]},{"id":"tenant-visual-isolation","satisfied":true,"statement":"Visual work is isolated to requested tenant. Do not import another tenant's logo, colors, imagery, copy, shell, customer data, business facts, or visual identity unless explicitly requested.","proofConditionIds":["proof-production"]},{"id":"reference-visual-fidelity","satisfied":true,"statement":"The approved reference owns the material visual composition: hierarchy, major geometry, typography scale, spacing rhythm, image placement/crop, color treatment, radii, shadows/glow, and overall density. Material deviation is a failed visual acceptance, not a stylistic reinterpretation.","proofConditionIds":["proof-production"]},{"id":"responsive-visual-continuity","satisfied":true,"statement":"Responsive adaptation may reflow for the target viewport, but it must preserve information hierarchy, branding, functionality, and design language. It must not invent a second design.","proofConditionIds":["proof-production"]},{"id":"reference-visual-authority","satisfied":true,"statement":"The supplied or approved reference visual is immutable acceptance evidence. Generating another mockup, image, or concept cannot satisfy this implementation request; completion requires source implementation, deployment, and reference-matched visual proof.","proofConditionIds":["proof-production"]},{"id":"capability-completeness","satisfied":true,"statement":"Every dependency the implementation declares or relies on must be wired and proven across applicable frontend, backend/runtime, schema/data/storage, authentication/authorization, provider configuration, prerequisite/loading/empty/error states, release ownership, and live production behavior; owner-authorized unavailable dependencies must become explicit prerequisite states rather than runtime failures.","proofConditionIds":["proof-production"]},{"id":"atomic-capability-lifecycle","satisfied":true,"statement":"Changed capabilities remain non-active until dependency readiness, N/N-1 compatibility, affected-target release, and claim-matched production canary proof are satisfied; missing optional dependencies become prerequisite_required, and runtime drift or health-contract violation quarantines only the affected capability instead of breaking unrelated working capability.","proofConditionIds":["proof-production"]}],"contractHash":"01d902eb85315c00599ceba88b1fecf9e62b724d9056329cfa1347e53e151243","releaseBound":true,"witnessBound":false,"visualRequested":false,"visualSatisfied":true,"conditionResults":[{"id":"proof-production","kind":"runtime","evidence":{"reason":null,"satisfied":true,"releaseState":"verified","missingTargets":[],"disallowedTargets":[],"migrationRequired":false,"releaseTargetStates":{"supabaseEdge":"success"},"unsuccessfulTargets":[],"activeReleaseTargets":["supabaseEdge"],"allowedReleaseTargets":[],"requiredReleaseTargets":[],"migrationReleaseVerified":null,"releaseRequestContractHash":"01d902eb85315c00599ceba88b1fecf9e62b724d9056329cfa1347e53e151243"},"required":true,"satisfied":true}],"validationErrors":[],"pendingProofKinds":[],"activeReleaseTargets":["supabaseEdge"]},"authoritativeMissionRefresh":true,"evaluatedRequestContractRevision":1},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-24T06:10:08.421804+00:00","proof_gate":"request_contract_terminal_verified","source_sha":"082744a8d00a91776c714ebe6f80d70ee49d3741","external_id":null,"receipt_type":"request_contract_reconciliation","idempotency_key":"mission:8d195a64-b51f-46aa-8a30-006deb40eab1:request-contract:01d902eb85315c00599ceba88b1fecf9e62b724d9056329cfa1347e53e151243:082744a8d00a91776c714ebe6f80d70ee49d3741:verified:","mission_step_id":"ceaf39db-1e60-4520-af72-9a8c5a8cc192","command_center_event_id":"8d195a64-b51f-46aa-8a30-006deb40eab1"},{"id":"bdc8d7e0-c2c4-413f-b085-76005e38b3f1","source":"owner_authorized_full_backlog_cleanup","status":"recorded","payload":{"category":"platform_editor_brand","disposition":"superseded_execution_attempt","previousStatus":"waiting","sourcePreserved":true,"noCompletionClaim":true,"recoveryPortfolioId":"f5ac0529-8647-57d7-d698-8cbb7f61212a"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-11T16:14:39.646808+00:00","proof_gate":"source_objective_preserved_in_existing_mission_ledger","source_sha":null,"external_id":null,"receipt_type":"owner_backlog_disposition","idempotency_key":"owner-full-backlog-cleanup-20261011:61d68e1e-9cf1-4260-b4ba-e286fab9894a","mission_step_id":null,"command_center_event_id":"61d68e1e-9cf1-4260-b4ba-e286fab9894a"},{"id":"bdc92e54-6a79-405c-9618-c6710c907911","source":"cc-execution","status":"retryable","payload":{"ok":false,"jobId":null,"phase":"pull_request","branch":null,"reason":"The operation was aborted due to timeout","status":"retryable","metrics":{"receiptBytes":3314,"releaseCount":0,"toolCallCount":3,"repeatedCallCount":1,"ownerInterruptionCount":0},"version":null,"prNumber":574,"terminal":false,"missionId":"1afc49b8-0b78-4a6d-99e5-525dbb475794","operation":"automatic_mission_resume","proofGate":"canonical_release_transport_retryable","sourceSha":null,"timingsMs":null,"nextAction":"Reconcile this same mission and pull request automatically; do not create a replacement branch or PR.","receiptRef":{"mode":"full","missionId":"1afc49b8-0b78-4a6d-99e5-525dbb475794"},"performance":null,"deploymentId":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":599,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-08-21T18:26:23.970389+00:00","proof_gate":"canonical_release_transport_retryable","source_sha":null,"external_id":"574","receipt_type":"automatic_mission_resume","idempotency_key":"mission:1afc49b8-0b78-4a6d-99e5-525dbb475794:automatic-mission-resume:574:canonical_release_transport_retryable","mission_step_id":"7d848358-6583-45a9-8c4a-c57952cbb312","command_center_event_id":"1afc49b8-0b78-4a6d-99e5-525dbb475794"},{"id":"bdc9a1cf-c959-419b-a356-e0f82bd83789","source":"forgejo-runtime","status":"pending","payload":{"failed":[],"states":{"forgejo-main/source":"success","forgejo-release/workflow":"pending","cc-execution/runtime-proof":"pending"},"mainSha":"d7ca49a09f29cfb352ee09b564561e775a9987cb","missing":[],"pending":["forgejo-release/workflow","cc-execution/runtime-proof"],"required":["forgejo-main/source","forgejo-release/workflow","cc-execution/runtime-proof"],"sourceSha":"d7ca49a09f29cfb352ee09b564561e775a9987cb","releaseState":"pending","sourceInMain":true,"compareStatus":"protected_main_push_exact_source","releaseTargets":{"frontend":false,"onrunner":false,"migrations":false,"ccExecution":true,"supabaseEdge":false,"edgeFunctionSlugs":[]},"releaseTargetStates":{"ccExecution":"pending"},"requestContractHash":"1a0f5967e03bf773672af0f213fc2229bff9ce2fac77efbb4b1583e03777c3fd","forgejoWorkflowProof":{"runId":11334,"source":"signed_push_receipt","status":"running","results":{},"conclusion":"running","targetStates":{"ccExecution":"pending"},"targetJobCount":7,"observedTargetStates":{"ccExecution":"pending"}},"onrunnerRuntimeProof":null,"releaseSourceVerified":true,"ccExecutionRuntimeProof":{"liveSha":"e156e62a44e50cfc019d142cba45ae1493371087","deploymentId":"forgejo-main-e156e62a44e50cfc019d142cba45ae1493371087","compareStatus":null,"identitySource":"local_build_metadata","runtimeVersion":"1.58.227-visual-work-intent-contract","containsSourceSha":false},"releaseTargetRecoveryProof":null,"exactReleaseVerifiedAfterMainAdvanced":false},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-24T03:59:29.784016+00:00","proof_gate":"canonical_release_pending","source_sha":"d7ca49a09f29cfb352ee09b564561e775a9987cb","external_id":"forgejo-main-d7ca49a09f29","receipt_type":"canonical_release_status","idempotency_key":"mission:a736aad7-f792-4785-aa47-eab1f1fac0b5:forgejo-release-status:d7ca49a09f29cfb352ee09b564561e775a9987cb:pending:forgejo-main/source=success|forgejo-release/workflow=pending|cc-execution/runtime-proof=pending","mission_step_id":"474feb91-dddb-4947-91f9-b0bc48f85d37","command_center_event_id":"a736aad7-f792-4785-aa47-eab1f1fac0b5"},{"id":"bdc9a700-8c02-4368-96a8-12c6ee34ad5d","source":"cc-execution","status":"release_reconciliation_pending","payload":{"ok":true,"jobId":null,"phase":"pull_request","branch":null,"reason":null,"status":"release_reconciliation_pending","metrics":{"receiptBytes":11148,"releaseCount":0,"toolCallCount":7,"repeatedCallCount":5,"executorlessWaitMs":18210,"firstUsefulResultAt":"2026-10-01T18:36:31.951Z","recoveryAttemptCount":7,"ownerInterruptionCount":0},"version":null,"prNumber":4380,"terminal":false,"missionId":"b63537c1-629f-4bc8-bc61-adf19c615d3d","operation":"automatic_mission_resume","proofGate":"canonical_release_reconciliation_pending","sourceSha":"d293c14411064dd2bf7bf15967c117ca262966a5","timingsMs":{"prReadinessMs":101,"approvedPlanMs":0,"shipAndProveMs":380,"repositoryMutationMs":0,"repositoryProviderMs":0,"repositoryAtomicCommitMs":0,"repositoryBranchCreateMs":0,"repositoryPullRequestCreateMs":0},"nextAction":"reconcile_release","receiptRef":{"mode":"full","missionId":"b63537c1-629f-4bc8-bc61-adf19c615d3d"},"performance":null,"deploymentId":"forgejo-main-d293c1441106","releaseState":null,"workflowRunId":null,"releaseTargets":{"frontend":true,"migrations":false,"ccExecution":false,"supabaseEdge":false,"edgeFunctionSlugs":[]},"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","pendingProofKinds":[],"verificationState":null,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":1942,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true,"requestContractState":"pending"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-01T18:39:49.428323+00:00","proof_gate":"canonical_release_reconciliation_pending","source_sha":null,"external_id":"4380","receipt_type":"automatic_mission_resume","idempotency_key":"mission:b63537c1-629f-4bc8-bc61-adf19c615d3d:automatic-mission-resume:4380:canonical_release_reconciliation_pending","mission_step_id":"87e8447a-6bff-4703-bd52-98fd9b9e8c19","command_center_event_id":"b63537c1-629f-4bc8-bc61-adf19c615d3d"},{"id":"bdcb5435-8417-43fa-9bb1-e6bf79bc9d6e","source":"forgejo-runtime","status":"pending","payload":{"failed":[],"states":{"forgejo-main/source":"success","forgejo-release/workflow":"success","cc-execution/runtime-proof":"pending"},"mainSha":"103a400ced69fdcd3119e59d7a80235dae259720","missing":[],"pending":["cc-execution/runtime-proof"],"required":["forgejo-main/source","forgejo-release/workflow","cc-execution/runtime-proof"],"sourceSha":"103a400ced69fdcd3119e59d7a80235dae259720","releaseState":"pending","sourceInMain":true,"compareStatus":"protected_main_push_exact_source","releaseTargets":{"frontend":false,"onrunner":false,"migrations":false,"ccExecution":true,"supabaseEdge":false,"edgeFunctionSlugs":[]},"releaseTargetStates":{"ccExecution":"pending"},"requestContractHash":"b4c5cc902ca28589acf49f40e668e08c8eca50ca90cb79253a414102268adcf6","forgejoWorkflowProof":{"runId":11704,"source":"signed_push_receipt","status":"success","results":{},"conclusion":"success","targetStates":{"ccExecution":"pending"},"targetJobCount":7,"observedTargetStates":{"ccExecution":"pending"}},"onrunnerRuntimeProof":null,"releaseSourceVerified":true,"ccExecutionRuntimeProof":{"liveSha":"7a5a86205a76754b16bcb257dea59ef20a8cbbca","deploymentId":"forgejo-main-7a5a86205a76754b16bcb257dea59ef20a8cbbca","compareStatus":null,"identitySource":"local_build_metadata","runtimeVersion":"1.58.277-exact-gate-fast-path","containsSourceSha":false},"releaseTargetRecoveryProof":null,"exactReleaseVerifiedAfterMainAdvanced":false},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-25T10:02:44.508165+00:00","proof_gate":"canonical_release_pending","source_sha":"103a400ced69fdcd3119e59d7a80235dae259720","external_id":"forgejo-main-103a400ced69","receipt_type":"canonical_release_status","idempotency_key":"mission:b080a989-f83c-4f77-b1e9-d3723f2c7a7d:forgejo-release-status:103a400ced69fdcd3119e59d7a80235dae259720:pending:forgejo-main/source=success|forgejo-release/workflow=success|cc-execution/runtime-proof=pending","mission_step_id":"2fee487b-cc28-499d-a126-3a8da3a834ab","command_center_event_id":"b080a989-f83c-4f77-b1e9-d3723f2c7a7d"},{"id":"bdcce4ba-6ef3-42d5-86ee-390724d7c666","source":"cc-execution","status":"authorized","payload":{"paths":["workers/cc-execution/src/index-mission-control.js","workers/cc-execution/src/version.js","workers/cc-execution/test/release-orchestration-invariants.test.js"],"reason":"Live 1.58.170 proves dispatch identity and timeout repairs, but direct DB and source inspection prove cancelled-release recovery is never reached because compact mission context omits forgejoWorkflowProof before reconcileTransientReleaseFailure eligibility checks.","baseSha":"5e92041f28ae566a29bf4f58f3467d747c05e57d","issuedAt":1789595358362,"expiresAt":1789595538362,"missionId":"3c90c847-9f8c-4ffe-a730-ae784c860419","authorizationId":"f0208e57-f7de-49a2-93f4-189f27d4c011","retryableWithinExactScope":true},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-16T21:49:18.681056+00:00","proof_gate":"control_plane_maintenance_scope_authorized","source_sha":"5e92041f28ae566a29bf4f58f3467d747c05e57d","external_id":null,"receipt_type":"control_plane_maintenance_authorization","idempotency_key":"control-plane-maintenance-authorize:f0208e57-f7de-49a2-93f4-189f27d4c011","mission_step_id":"837a1d46-4266-48ec-ad51-20db400083f3","command_center_event_id":"3c90c847-9f8c-4ffe-a730-ae784c860419"},{"id":"bdcd5d3f-63e5-4ce9-b3b6-d65f54b3e8a0","source":"cc-execution","status":"authorized","payload":{"paths":["workers/cc-execution/src/index-mcp.js","workers/cc-execution/src/version.js"],"reason":"Owner explicitly authorized immediate PAUL continuous intelligence improvement. This exact maintenance scope repairs a false-negative cc-execution intelligence eval assertion and bumps runtime identity.","baseSha":"02e5390795329e1c843dbb888289d815a3c8d6fd","issuedAt":1790776845753,"expiresAt":1790777025753,"missionId":"b56825f5-dfeb-4bb3-8ea3-1a88aab50a5a","authorizationId":"2e13a2bf-d93c-4374-81e5-5cef6a701a9c","retryableWithinExactScope":true},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-30T14:00:46.243214+00:00","proof_gate":"control_plane_maintenance_scope_authorized","source_sha":"02e5390795329e1c843dbb888289d815a3c8d6fd","external_id":null,"receipt_type":"control_plane_maintenance_authorization","idempotency_key":"control-plane-maintenance-authorize:2e13a2bf-d93c-4374-81e5-5cef6a701a9c","mission_step_id":"4d50221a-e579-4885-bc3d-e4cb53d17e1b","command_center_event_id":"b56825f5-dfeb-4bb3-8ea3-1a88aab50a5a"},{"id":"bdcffae5-b392-4318-8ca4-e6d9b273ef23","source":"durable-mission-ledger","status":"verified","payload":{"sourceSha":"5021a8af705b0cacdf867872422dcc0e27e3d1aa","requestContractProof":{"legacy":false,"present":true,"outcomes":[{"id":"outcome-1","satisfied":true,"statement":"Repair PAUL's production /admin/console conversational intelligence for self-awareness and recent-work questions. The exact owner-visible failure is: when asked \"What kind of upgrades have you made?\" PAUL produced repetitive prompt-like text, echoed phrases such as \"tell me what kind of progress we made today\", failed to answer directly, and did not ground itself in its durable operating context/recent mission receipts.\n\nRequired outcome:\n1. Reproduce and diagnose the exact current response path on live main before mutation.\n2. Fix the governing PAUL conversation/inference primitive, not a one-off string.\n3. Questions about PAUL itself, what changed today/since yesterday, what it has learned/improved, or current platform progress must route to the authoritative context available for that claim: owner_operating_context for durable facts and recent durable mission/action receipts or live machinery snapshot for current/recent operational changes. Never fabricate.\n4. Add an answer-quality contract before owner-visible output: no hidden/system/meta prompt leakage, no parroting the user's question, no repetitive sentence loops, no instruction-like fragments such as \"tell me...\" or \"try..","proofConditionIds":["proof-production"]}],"satisfied":true,"constraints":[{"id":"capability-completeness","satisfied":true,"statement":"Every dependency the implementation declares or relies on must be wired and proven across applicable frontend, backend/runtime, schema/data/storage, authentication/authorization, provider configuration, prerequisite/loading/empty/error states, release ownership, and live production behavior; owner-authorized unavailable dependencies must become explicit prerequisite states rather than runtime failures.","proofConditionIds":["proof-production"]},{"id":"atomic-capability-lifecycle","satisfied":true,"statement":"Changed capabilities remain non-active until dependency readiness, N/N-1 compatibility, affected-target release, and claim-matched production canary proof are satisfied; missing optional dependencies become prerequisite_required, and runtime drift or health-contract violation quarantines only the affected capability instead of breaking unrelated working capability.","proofConditionIds":["proof-production"]}],"contractHash":"1e9ecf996ee233039e2a5a51bf5e5cc50bec895c0d4c5d2cef0c6109a5fe3fc8","releaseBound":true,"witnessBound":false,"visualRequested":false,"visualSatisfied":true,"conditionResults":[{"id":"proof-production","kind":"runtime","evidence":{"reason":null,"satisfied":true,"releaseState":"verified","missingTargets":[],"disallowedTargets":[],"migrationRequired":false,"releaseTargetStates":{"ccExecution":"success","supabaseEdge":"success"},"unsuccessfulTargets":[],"activeReleaseTargets":["ccExecution","supabaseEdge"],"allowedReleaseTargets":[],"requiredReleaseTargets":[],"migrationReleaseVerified":null,"releaseRequestContractHash":"1e9ecf996ee233039e2a5a51bf5e5cc50bec895c0d4c5d2cef0c6109a5fe3fc8"},"required":true,"satisfied":true}],"validationErrors":[],"pendingProofKinds":[],"activeReleaseTargets":["ccExecution","supabaseEdge"]},"authoritativeMissionRefresh":true,"evaluatedRequestContractRevision":1},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-02T01:40:02.906303+00:00","proof_gate":"request_contract_terminal_verified","source_sha":"5021a8af705b0cacdf867872422dcc0e27e3d1aa","external_id":null,"receipt_type":"request_contract_reconciliation","idempotency_key":"mission:80e8ab49-6e97-4c75-98f8-11e149c01a3d:request-contract:1e9ecf996ee233039e2a5a51bf5e5cc50bec895c0d4c5d2cef0c6109a5fe3fc8:5021a8af705b0cacdf867872422dcc0e27e3d1aa:verified:","mission_step_id":"a005a1d0-f9ff-4943-9ece-c7b33dc1f3ee","command_center_event_id":"80e8ab49-6e97-4c75-98f8-11e149c01a3d"},{"id":"bdd0d292-c8ad-41c9-924e-1290b7a147d7","source":"cc-execution","status":"waiting","payload":{"body":{"branch":"ai/objective-first-repair-16ed4d9dfbe9","approved":true,"missionId":"16ed4d9d-fbe9-4546-8ff2-db39db9f025b","objective":"Continue the existing durable mission using exact structured edits.","repository":"noel/KnockLaunchOS","trackMission":true,"ownerApproved":true,"sourceTargets":["workers/cc-execution/src/index-release-fast-lane.js"],"anchored_edits":[{"path":"workers/cc-execution/src/index-release-fast-lane.js","new_text":"const FORGEJO_READ_TIMEOUT_MS = 4500;\nconst FORGEJO_READ_ATTEMPT_TIMEOUT_MS = 2000;\nconst FORGEJO_READ_TOTAL_BUDGET_MS = 4500;","old_text":"const FORGEJO_READ_TIMEOUT_MS = 10000;\nconst FORGEJO_READ_ATTEMPT_TIMEOUT_MS = 5000;\nconst FORGEJO_READ_TOTAL_BUDGET_MS = 10000;"}],"update_strategy":"auto","controlPlaneUnfreeze":true,"durableMutationResume":true,"controlPlaneMaintenance":true,"controlPlaneMaintenanceReason":"Prime structured exact mutation continuation"},"recovery":false,"fingerprint":"826fce0d3b6cb393f714b4bb9b84bacf82cb65a81f7f4c654b4d3039b021b2b5","replayCount":0,"serializedBytes":907},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-05T23:36:04.150408+00:00","proof_gate":"repository_mutation_intent_persisted","source_sha":null,"external_id":null,"receipt_type":"repository_mutation_intent","idempotency_key":"mission:16ed4d9d-fbe9-4546-8ff2-db39db9f025b:repository-mutation-intent:826fce0d3b6cb393f714b4bb9b84bacf82cb65a81f7f4c654b4d3039b021b2b5:0","mission_step_id":"304e1fed-48f5-4e23-b3b1-835f45381fb0","command_center_event_id":"16ed4d9d-fbe9-4546-8ff2-db39db9f025b"},{"id":"bdd29954-e97f-4099-9187-6da31afed733","source":"cc-execution","status":"retryable","payload":{"ok":false,"jobId":null,"phase":"pull_request","branch":"ai/objective-first-repair-13317d2ada11","reason":"retryable_provider_transport:forgejo_provider_read_timeout","status":"retryable","metrics":{"receiptBytes":64247,"releaseCount":0,"toolCallCount":7,"repeatedCallCount":3,"executorlessWaitMs":15521,"firstUsefulResultAt":"2026-10-03T02:50:48.940Z","recoveryAttemptCount":5,"ownerInterruptionCount":0},"version":null,"prNumber":4600,"terminal":false,"missionId":"13317d2a-da11-47b1-acb7-1e979fba9dbb","operation":"automatic_mission_resume","proofGate":"repair_mission_pr_ready_retryable","sourceSha":null,"timingsMs":{"prReadinessMs":2167,"approvedPlanMs":0,"shipAndProveMs":0,"repositoryMutationMs":0,"repositoryProviderMs":0,"repositoryAtomicCommitMs":0,"repositoryBranchCreateMs":0,"repositoryPullRequestCreateMs":0},"nextAction":"Reconcile this same mission and pull request automatically; do not create a replacement branch or PR.","receiptRef":{"mode":"full","missionId":"13317d2a-da11-47b1-acb7-1e979fba9dbb"},"performance":null,"deploymentId":null,"releaseState":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","pendingProofKinds":[],"verificationState":null,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":819,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true,"requestContractState":"pending"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-03T02:51:00.716681+00:00","proof_gate":"repair_mission_pr_ready_retryable","source_sha":null,"external_id":"4600","receipt_type":"automatic_mission_resume","idempotency_key":"mission:13317d2a-da11-47b1-acb7-1e979fba9dbb:automatic-mission-resume:4600:repair_mission_pr_ready_retryable","mission_step_id":"0a3d2acc-3a70-406f-9046-e8f49c18bc0c","command_center_event_id":"13317d2a-da11-47b1-acb7-1e979fba9dbb"},{"id":"bdd86561-154f-4266-b7cf-b06d6c4de763","source":"forgejo","status":"waiting","payload":{"branch":"ai/objective-first-repair-83515a4a94d3","prNumber":4085,"nextAction":"Follow the existing canonical release to terminal proof.","mergeCommitSha":"c2eea2a4ff6cec84887d9be917c3584c7c90739f","branchDeletedAfterMerge":true,"correctiveGenerationCreated":false},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-29T02:31:41.659294+00:00","proof_gate":"forgejo_merged_pr_is_authoritative_source_lineage","source_sha":"c2eea2a4ff6cec84887d9be917c3584c7c90739f","external_id":"4085","receipt_type":"source_lineage_merged_pr_authoritative","idempotency_key":"mission:83515a4a-94d3-4807-bbee-e6c6d341bc36:merged-pr:4085:c2eea2a4ff6cec84887d9be917c3584c7c90739f","mission_step_id":"e99e38c5-0fde-43d0-ae74-a4389ff9075b","command_center_event_id":"83515a4a-94d3-4807-bbee-e6c6d341bc36"},{"id":"bdd9dfbc-397f-49fd-adcc-6d7c89355528","source":"cc-execution","status":"blocked","payload":{"ok":false,"jobId":null,"phase":"pull_request","branch":"ai/big-papis-interaction-friction","reason":"forgejo_release_source_not_contained_in_current_main","status":"blocked","metrics":{"receiptBytes":8349,"releaseCount":0,"toolCallCount":10,"repeatedCallCount":1,"ownerInterruptionCount":0},"version":"1.47.4-pr-native-freshness","prNumber":395,"terminal":false,"missionId":"b40772e3-9979-4f71-b8f6-0d297f8d66c8","operation":"execute_mission","proofGate":"canonical_release_blocked","sourceSha":"caa3ecb3a9d11c5ba47e4a3c5a56279aae6c84cc","timingsMs":null,"nextAction":null,"receiptRef":{"mode":"full","missionId":"b40772e3-9979-4f71-b8f6-0d297f8d66c8"},"performance":null,"deploymentId":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":5107,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true},"tenant_id":"766cfaa7-ac42-46c8-bbef-69d13268a29d","created_at":"2026-08-19T03:00:11.102847+00:00","proof_gate":"canonical_release_blocked","source_sha":"caa3ecb3a9d11c5ba47e4a3c5a56279aae6c84cc","external_id":"395","receipt_type":"execute_mission","idempotency_key":"mission:b40772e3-9979-4f71-b8f6-0d297f8d66c8:execute_mission:canonical_release_blocked","mission_step_id":"4debf524-e916-46e5-b5ab-8a8d532b3063","command_center_event_id":"b40772e3-9979-4f71-b8f6-0d297f8d66c8"},{"id":"bddc65f6-8110-418a-b276-96e2ace33677","source":"cc-execution","status":"source_resolution_required","payload":{"ok":true,"jobId":null,"phase":"implementation","branch":"ai/objective-first-repair-d42a3eb0b039","reason":"authoritative_source_resolution_failed","status":"source_resolution_required","metrics":{"receiptBytes":4167,"releaseCount":0,"toolCallCount":2,"repeatedCallCount":0,"executorlessWaitMs":14911,"firstUsefulResultAt":"2026-10-02T01:03:12.672Z","recoveryAttemptCount":0,"ownerInterruptionCount":0},"version":"1.64.46-connection-research-human-readable-unknowns","prNumber":null,"terminal":false,"missionId":"d42a3eb0-b039-47f0-ac6b-d0fa0fd7604a","operation":"execute_mission","proofGate":"repair_mission_source_resolution_required","sourceSha":null,"timingsMs":{"gateMs":0,"proofMs":0,"handlerMs":1410,"releaseMs":0,"mutationMs":0,"repositoryMs":0,"missionSetupMs":217,"providerAuthMs":0,"ledgerPrepareMs":217,"ledgerReconcileMs":0,"lineageReconcileMs":0,"resolvePreflightMs":217,"authoritativeLedgerMs":0,"ledgerAsyncDispatchMs":0,"totalSynchronousLedgerMs":217,"asyncBookkeepingDispatchMs":0,"ledgerAuthoritativeCommitMs":0},"nextAction":"Supply exact sourceTargets on the same mission; planner guesses cannot replace missing mission scope.","receiptRef":{"mode":"full","missionId":"d42a3eb0-b039-47f0-ac6b-d0fa0fd7604a"},"performance":null,"deploymentId":null,"releaseState":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","pendingProofKinds":["runtime"],"verificationState":null,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":1671,"likelyAffectedFiles":[],"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true,"requestContractState":"pending"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-02T01:03:12.726715+00:00","proof_gate":"repair_mission_source_resolution_required","source_sha":null,"external_id":null,"receipt_type":"execute_mission","idempotency_key":"mission:d42a3eb0-b039-47f0-ac6b-d0fa0fd7604a:execute_mission:repair_mission_source_resolution_required:current-generation","mission_step_id":"3f8516bc-0470-40b8-b4d1-2e4ef7a38dd9","command_center_event_id":"d42a3eb0-b039-47f0-ac6b-d0fa0fd7604a"},{"id":"bddd1457-a5b8-47c4-86df-aaecc51d869f","source":"cc-execution","status":"waiting","payload":{"body":{"ship":true,"files":[],"branch":"ai/objective-first-repair-825effeea3ee","writes":[],"patches":[],"version":1,"approved":true,"missionId":"825effee-a3ee-4b8a-8249-073b827f502c","objective":"Implement the stale-tool compatibility adapter at the ChatGPT-to-Prime MCP boundary on this same mission.","sourceSha":"61fc38ea2e3972abac30de00d836e63c05970629","repository":"noel/KnockLaunchOS","visualProof":false,"ownerApproved":true,"releaseIntent":null,"sourceTargets":[],"anchored_edits":[{"path":"workers/cc-execution/src/index-mcp.js","new_content":"const PUBLIC_TOOLS = TOOLS.filter((entry) => !INTERNAL_MUTATION_TOOLS.has(entry.name));\nconst PUBLIC_TOOL_NAME_SET = new Set(PUBLIC_TOOLS.map((entry) => entry.name));\nconst STALE_MUTATION_TOOL_ALIASES = new Set([\n  \"mission_apply_exact_patch\",\n  \"mission_continue_exact\",\n  \"mission_ship_exact\",\n]);\n\nexport function canonicalizeStaleMutationCommand(name, args = {}) {\n  const staleName = String(name || \"\").trim();\n  if (!STALE_MUTATION_TOOL_ALIASES.has(staleName)) return null;\n  const input = args && typeof args === \"object\" && !Array.isArray(args) ? { ...args } : {};\n  const defaultObjective = staleName === \"mission_ship_exact\"\n    ? \"Continue the existing durable mission through canonical Gate, merge, release, and proof.\"\n    : \"Continue the existing durable mission using the supplied exact deterministic continuation payload.\";\n  return {\n    command: \"execute_objective\",\n    input: {\n      ...input,\n      objective: String(input.objective || defaultObjective).trim(),\n      boundaryCanonicalizedFrom: staleName,\n      canonicalTool: \"execute_objective\",\n    },\n    boundaryCanonicalizedFrom: staleName,\n    canonicalTool: \"execute_objective\",\n  };\n}","old_content":"const PUBLIC_TOOLS = TOOLS.filter((entry) => !INTERNAL_MUTATION_TOOLS.has(entry.name));\nconst PUBLIC_TOOL_NAME_SET = new Set(PUBLIC_TOOLS.map((entry) => entry.name));"},{"path":"workers/cc-execution/src/index-mcp.js","new_content":"    if (name === \"command_center_execute\") {\n      const requestedCommand = String(args.command || \"\").trim();\n      const requestedInput = args.input && typeof args.input === \"object\" && !Array.isArray(args.input) ? args.input : {};\n      const staleCanonicalization = canonicalizeStaleMutationCommand(requestedCommand, requestedInput);\n      const command = staleCanonicalization?.command || requestedCommand;\n      const input = staleCanonicalization?.input || requestedInput;\n      const entry = TOOL_BY_NAME.get(command);\n      const publiclyAllowed = Boolean(entry) && PUBLIC_TOOL_NAME_SET.has(command) && !INTERNAL_MUTATION_TOOLS.has(command);\n      if (!publiclyAllowed) {\n        return jsonRpcError(message.id, -32003, \"Server-side command is not publicly callable\", {\n          proofGate: \"mcp_server_side_command_blocked\",\n          command: requestedCommand || null,\n        });\n      }\n      try {\n        const result = await invokeTool(request, env, ctx, entry, input, dispatch);\n        if (staleCanonicalization && result?.structuredContent) {\n          result.structuredContent = {\n            ...result.structuredContent,\n            boundaryCanonicalizedFrom: staleCanonicalization.boundaryCanonicalizedFrom,\n            canonicalTool: \"execute_objective\",\n          };\n        }\n        return jsonRpcResult(message.id, result);","old_content":"    if (name === \"command_center_execute\") {\n      const command = String(args.command || \"\").trim();\n      const input = args.input && typeof args.input === \"object\" && !Array.isArray(args.input) ? args.input : {};\n      const entry = TOOL_BY_NAME.get(command);\n      const publiclyAllowed = Boolean(entry) && PUBLIC_TOOL_NAME_SET.has(command) && !INTERNAL_MUTATION_TOOLS.has(command);\n      if (!publiclyAllowed) {\n        return jsonRpcError(message.id, -32003, \"Server-side command is not publicly callable\", {\n          proofGate: \"mcp_server_side_command_blocked\",\n          command: command || null,\n        });\n      }\n      try {\n        return jsonRpcResult(message.id, await invokeTool(request, env, ctx, entry, input, dispatch));"},{"path":"workers/cc-execution/src/index-mcp.js","new_content":"    const staleCanonicalization = canonicalizeStaleMutationCommand(name, args);\n    if (staleCanonicalization) {\n      const canonicalEntry = TOOL_BY_NAME.get(\"execute_objective\");\n      try {\n        const result = await invokeTool(request, env, ctx, canonicalEntry, staleCanonicalization.input, dispatch);\n        if (result?.structuredContent) {\n          result.structuredContent = {\n            ...result.structuredContent,\n            boundaryCanonicalizedFrom: staleCanonicalization.boundaryCanonicalizedFrom,\n            canonicalTool: \"execute_objective\",\n          };\n        }\n        return jsonRpcResult(message.id, result);\n      } catch (error) {\n        console.error(JSON.stringify({ event: \"mcp_stale_mutation_alias_failed\", tool: name, error: error instanceof Error ? error.message : String(error) }));\n        return jsonRpcResult(message.id, mcpToolResult(\"execute_objective\", { ok: false, status: \"blocked\", proofGate: \"mcp_stale_mutation_alias_failed\", boundaryCanonicalizedFrom: name, canonicalTool: \"execute_objective\" }, true));\n      }\n    }\n    const retiredTool = RETIRED_TOOLS.get(name);\n    if (retiredTool) {\n      return jsonRpcError(message.id, -32004, \"Tool retired\", retiredTool);\n    }\n    const entry = TOOL_BY_NAME.get(name);\n    if (!entry) return jsonRpcError(message.id, -32602, `Unknown tool: ${name}`);\n    if (INTERNAL_MUTATION_TOOLS.has(name)) {\n      return jsonRpcError(message.id, -32003, \"Internal mutation primitive is not publicly callable\", {\n        proofGate: \"single_public_mutation_lane_enforced\",\n        canonicalTool: \"execute_objective\",\n      });\n    }\n    try {\n      return jsonRpcResult(message.id, await invokeTool(request, env, ctx, entry, args, dispatch));","old_content":"    const retiredTool = RETIRED_TOOLS.get(name);\n    if (retiredTool) {\n      return jsonRpcError(message.id, -32004, \"Tool retired\", retiredTool);\n    }\n    const entry = TOOL_BY_NAME.get(name);\n    if (!entry) return jsonRpcError(message.id, -32602, `Unknown tool: ${name}`);\n    if (INTERNAL_MUTATION_TOOLS.has(name)) {\n      return jsonRpcError(message.id, -32003, \"Internal mutation primitive is not publicly callable\", {\n        proofGate: \"single_public_mutation_lane_enforced\",\n        canonicalTool: \"execute_objective\",\n      });\n    }\n    try {\n      return jsonRpcResult(message.id, await invokeTool(request, env, ctx, entry, args, dispatch));"},{"path":"workers/cc-execution/test/release-orchestration-invariants.test.js","new_content":"import { canonicalizeStaleMutationCommand, classifyOpenPullBacklog, handleMcpRequest, publicMcpCatalogSummary } from \"../src/index-mcp.js\";","old_content":"import { classifyOpenPullBacklog, handleMcpRequest, publicMcpCatalogSummary } from \"../src/index-mcp.js\";"},{"path":"workers/cc-execution/test/release-orchestration-invariants.test.js","new_content":"test(\"stale exact mutation tools canonicalize across the MCP boundary without synthesizing authorization\", () => {\n  for (const alias of [\"mission_apply_exact_patch\", \"mission_continue_exact\", \"mission_ship_exact\"]) {\n    const canonical = canonicalizeStaleMutationCommand(alias, { missionId: \"mission-1\", sourceSha: SOURCE_SHA });\n    assert.equal(canonical.command, \"execute_objective\");\n    assert.equal(canonical.boundaryCanonicalizedFrom, alias);\n    assert.equal(canonical.input.missionId, \"mission-1\");\n    assert.equal(canonical.input.sourceSha, SOURCE_SHA);\n    assert.equal(canonical.input.approved, undefined);\n    assert.equal(canonical.input.ownerApproved, undefined);\n    assert.equal(canonical.input.controlPlaneMaintenance, undefined);\n  }\n  assert.equal(canonicalizeStaleMutationCommand(\"merge_forgejo_pr\", {}), null);\n  assert.equal(canonicalizeStaleMutationCommand(\"totally_unknown_mutator\", {}), null);\n});\n\ntest(\"deterministic Gate quarantine is bound to the exact PR head\", () => {","old_content":"test(\"deterministic Gate quarantine is bound to the exact PR head\", () => {"},{"path":"workers/cc-execution/src/version.js","new_content":"export const CC_EXECUTION_VERSION = \"1.67.5-tool-boundary-canonicalization\";","old_content":"export const CC_EXECUTION_VERSION = \"1.67.4-single-mutation-boundary\";"}],"implementation":{"files":[],"writes":[]},"requestContract":{"version":1,"outcomes":[{"id":"tool-boundary","statement":"Stale exact continuation tool calls are canonicalized at the MCP boundary into execute_objective rather than rejected before Prime sees them.","proofConditionIds":["repo","runtime"]}],"constraints":[{"id":"single-authority","statement":"execute_objective remains the only mutation authority.","proofConditionIds":["repo"]},{"id":"no-auth-bypass","statement":"Boundary canonicalization may not synthesize missing owner/control-plane authorization or weaken safety.","proofConditionIds":["repo"]}],"proofConditions":[{"id":"repo","kind":"repository","claim":"MCP boundary canonicalizes only allowlisted stale exact aliases into execute_objective and keeps unknown mutation tools blocked.","required":true},{"id":"runtime","kind":"runtime","claim":"Updated cc-execution runtime is live.","required":true}]},"repairGeneration":null,"executionEnvelope":{"ship":true,"version":1,"approved":true,"missionId":"825effee-a3ee-4b8a-8249-073b827f502c","ownerApproved":true,"releaseIntent":null,"sourceTargets":[],"requestContract":{"version":1,"outcomes":[{"id":"tool-boundary","statement":"Stale exact continuation tool calls are canonicalized at the MCP boundary into execute_objective rather than rejected before Prime sees them.","proofConditionIds":["repo","runtime"]}],"constraints":[{"id":"single-authority","statement":"execute_objective remains the only mutation authority.","proofConditionIds":["repo"]},{"id":"no-auth-bypass","statement":"Boundary canonicalization may not synthesize missing owner/control-plane authorization or weaken safety.","proofConditionIds":["repo"]}],"proofConditions":[{"id":"repo","kind":"repository","claim":"MCP boundary canonicalizes only allowlisted stale exact aliases into execute_objective and keeps unknown mutation tools blocked.","required":true},{"id":"runtime","kind":"runtime","claim":"Updated cc-execution runtime is live.","required":true}]},"repairGeneration":null,"proofRequirements":null,"controlPlaneUnfreeze":true,"controlPlaneMaintenance":true,"controlPlaneMaintenancePaths":["workers/cc-execution/src/index-mcp.js","workers/cc-execution/test/release-orchestration-invariants.test.js","workers/cc-execution/src/version.js"],"controlPlaneMaintenanceReason":"Owner explicitly requires the ChatGPT-to-Prime tool boundary to canonicalize stale deterministic continuation tool calls rather than reject them before Prime."},"proofRequirements":null,"controlPlaneUnfreeze":true,"durableMutationResume":true,"controlPlaneMaintenance":true,"controlPlaneMaintenancePaths":["workers/cc-execution/src/index-mcp.js","workers/cc-execution/test/release-orchestration-invariants.test.js","workers/cc-execution/src/version.js"],"controlPlaneMaintenanceReason":"Owner explicitly requires the ChatGPT-to-Prime tool boundary to canonicalize stale deterministic continuation tool calls rather than reject them before Prime."},"recovery":false,"fingerprint":"7a1f22de5fa497a44b717316133969c6f829b83b24c385f91104741f5dd9a7fe","replayCount":0,"serializedBytes":11505},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-06T17:29:39.930724+00:00","proof_gate":"repository_mutation_intent_persisted","source_sha":null,"external_id":null,"receipt_type":"repository_mutation_intent","idempotency_key":"mission:825effee-a3ee-4b8a-8249-073b827f502c:repository-mutation-intent:7a1f22de5fa497a44b717316133969c6f829b83b24c385f91104741f5dd9a7fe:0","mission_step_id":"2ca5f939-7636-4df6-8206-f63c5425c5bd","command_center_event_id":"825effee-a3ee-4b8a-8249-073b827f502c"},{"id":"bdde7f77-8a43-4e78-870b-35fa2a773c09","source":"forgejo","status":"waiting","payload":{"branch":"","prNumber":3158,"nextAction":"Follow the existing canonical release to terminal proof.","mergeCommitSha":"07050c35b8c878caf4d34e2b37bc03ba656fe78f","branchDeletedAfterMerge":true,"correctiveGenerationCreated":false},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-18T22:46:53.756187+00:00","proof_gate":"forgejo_merged_pr_is_authoritative_source_lineage","source_sha":"07050c35b8c878caf4d34e2b37bc03ba656fe78f","external_id":"3158","receipt_type":"source_lineage_merged_pr_authoritative","idempotency_key":"mission:b25bf297-e3e7-4a59-aa66-d3216243739c:merged-pr:3158:07050c35b8c878caf4d34e2b37bc03ba656fe78f","mission_step_id":"7bd865ef-5e24-4f48-9663-b335e6744c6f","command_center_event_id":"b25bf297-e3e7-4a59-aa66-d3216243739c"},{"id":"bddeaa31-8450-4362-aa75-0daa053d8ce5","source":"cc-execution","status":"synthesis_required","payload":{"ok":true,"jobId":null,"phase":"objective_received","branch":"ai/fix-lawn-care-editor-selection-default-20260804","reason":null,"status":"synthesis_required","metrics":{"receiptBytes":0,"releaseCount":0,"toolCallCount":0,"repeatedCallCount":0,"ownerInterruptionCount":0},"version":"1.30.16-controlled-merge-fallback-fix","prNumber":null,"terminal":false,"missionId":"0be45703-41bd-4cf9-84db-e404c5275bb4","operation":"execute_mission","proofGate":"repair_mission_synthesis_ready","sourceSha":null,"timingsMs":null,"nextAction":"Inspect the bounded repository paths, synthesize exact files or anchored_edits, and recall /repair/execute-mission automatically without another owner prompt.","receiptRef":{"mode":"full","missionId":"0be45703-41bd-4cf9-84db-e404c5275bb4"},"performance":null,"deploymentId":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"onePullRequest":true,"terminalProofRequired":true},"sourceReceiptBytes":3346,"likelyAffectedFiles":[],"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true},"tenant_id":"c55998b4-82a3-467e-8d35-177bb4785f6e","created_at":"2026-08-04T18:47:55.674684+00:00","proof_gate":"repair_mission_synthesis_ready","source_sha":null,"external_id":null,"receipt_type":"execute_mission","idempotency_key":"mission:0be45703-41bd-4cf9-84db-e404c5275bb4:execute_mission:repair_mission_synthesis_ready","mission_step_id":"2b4dadfd-0500-4168-a2b7-93dbc68c0b52","command_center_event_id":"0be45703-41bd-4cf9-84db-e404c5275bb4"},{"id":"bde23888-160e-4aa1-98da-0ad85418fc66","source":"cc-execution","status":"blocked","payload":{"ok":false,"jobId":null,"phase":"runtime_proof","branch":"ai/objective-first-repair-0270bdd55fff","reason":"anchored_edit_anchor_missing:supabase/functions/mobile-vendor-event-request/index.ts","status":"blocked","metrics":{"receiptBytes":46125,"releaseCount":0,"toolCallCount":23,"repeatedCallCount":13,"executorlessWaitMs":859467,"firstUsefulResultAt":"2026-10-02T16:26:26.763Z","recoveryAttemptCount":2,"ownerInterruptionCount":0},"version":"1.64.50-onepath-source-domain","prNumber":null,"terminal":false,"missionId":"0270bdd5-5fff-46f3-bc11-c1481e103f21","operation":"execute_mission","proofGate":"repair_mission_execution_blocked","sourceSha":null,"timingsMs":{"gateMs":0,"proofMs":0,"handlerMs":988,"releaseMs":0,"mutationMs":0,"repositoryMs":0,"prReadinessMs":0,"approvedPlanMs":988,"missionSetupMs":863,"providerAuthMs":0,"shipAndProveMs":0,"ledgerPrepareMs":863,"ledgerReconcileMs":0,"lineageReconcileMs":0,"resolvePreflightMs":863,"repositoryMutationMs":0,"repositoryProviderMs":0,"authoritativeLedgerMs":0,"ledgerAsyncDispatchMs":0,"repositoryAtomicCommitMs":0,"repositoryBranchCreateMs":0,"totalSynchronousLedgerMs":863,"asyncBookkeepingDispatchMs":0,"ledgerAuthoritativeCommitMs":0,"repositoryPullRequestCreateMs":0},"nextAction":null,"receiptRef":{"mode":"full","missionId":"0270bdd5-5fff-46f3-bc11-c1481e103f21"},"performance":null,"deploymentId":null,"releaseState":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","pendingProofKinds":["runtime"],"verificationState":null,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":1547,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true,"requestContractState":"pending"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-02T16:53:34.321276+00:00","proof_gate":"repair_mission_execution_blocked","source_sha":null,"external_id":null,"receipt_type":"execute_mission","idempotency_key":"mission:0270bdd5-5fff-46f3-bc11-c1481e103f21:execute_mission:repair_mission_execution_blocked:generation-1","mission_step_id":"4427ad63-763a-4d54-a0ed-85de5899a772","command_center_event_id":"0270bdd5-5fff-46f3-bc11-c1481e103f21"},{"id":"bde41e5f-89b6-4958-9473-3a6b157dda19","source":"cc-execution","status":"synthesis_required","payload":{"ok":true,"jobId":null,"phase":"reasoning_required","branch":"ai/objective-first-repair-d16be9483397","reason":null,"status":"synthesis_required","metrics":{"receiptBytes":2298,"releaseCount":0,"toolCallCount":2,"repeatedCallCount":0,"executorlessWaitMs":3967,"firstUsefulResultAt":"2026-10-04T20:16:08.545Z","recoveryAttemptCount":0,"ownerInterruptionCount":0},"version":"1.64.94-terminal-completion-supervisor","prNumber":null,"terminal":false,"missionId":"d16be948-3397-40c1-becc-b4fea413676f","operation":"execute_mission","proofGate":"repair_mission_synthesis_ready","sourceSha":null,"timingsMs":{"gateMs":0,"proofMs":0,"handlerMs":4673,"releaseMs":0,"mutationMs":0,"repositoryMs":0,"missionSetupMs":377,"providerAuthMs":0,"ledgerPrepareMs":377,"ledgerReconcileMs":0,"lineageReconcileMs":0,"resolvePreflightMs":377,"authoritativeLedgerMs":0,"ledgerAsyncDispatchMs":0,"totalSynchronousLedgerMs":377,"asyncBookkeepingDispatchMs":0,"ledgerAuthoritativeCommitMs":0},"nextAction":"Inspect the bounded repository paths, synthesize exact files or anchored_edits, and call /mission/execute again automatically with this same missionId without another owner prompt or workflow switch.","receiptRef":{"mode":"full","missionId":"d16be948-3397-40c1-becc-b4fea413676f"},"performance":null,"deploymentId":null,"releaseState":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","pendingProofKinds":[],"verificationState":null,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":3770,"likelyAffectedFiles":["src/PcgAppShell.tsx","src/shells/pcg/PCGTenantShell.tsx","src/pages/card-grading/PCGCanonicalWorkspaceRoute.tsx"],"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true,"requestContractState":"pending"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-04T20:16:12.589019+00:00","proof_gate":"repair_mission_synthesis_ready","source_sha":null,"external_id":null,"receipt_type":"execute_mission","idempotency_key":"mission:d16be948-3397-40c1-becc-b4fea413676f:execute_mission:repair_mission_synthesis_ready:current-generation","mission_step_id":"e4c875fe-b014-43d2-ae11-5360311dac29","command_center_event_id":"d16be948-3397-40c1-becc-b4fea413676f"},{"id":"bde47c06-8b07-49c1-bf9f-9cfd38b2b583","source":"cc-execution","status":"synthesis_required","payload":{"ok":true,"jobId":null,"phase":"objective_received","branch":"ai/objective-first-repair-594b664590ce","reason":null,"status":"synthesis_required","metrics":{"receiptBytes":0,"releaseCount":0,"toolCallCount":0,"repeatedCallCount":0,"ownerInterruptionCount":0},"version":"1.50.48-visual-proof-intent-routing","prNumber":null,"terminal":false,"missionId":"594b6645-90ce-44ec-b81a-33ec5aae6044","operation":"execute_mission","proofGate":"repair_mission_synthesis_ready","sourceSha":null,"timingsMs":{"handlerMs":1818,"missionSetupMs":2635},"nextAction":"Inspect the bounded repository paths, synthesize exact files or anchored_edits, and call /mission/execute again automatically with this same missionId without another owner prompt or workflow switch.","receiptRef":{"mode":"full","missionId":"594b6645-90ce-44ec-b81a-33ec5aae6044"},"performance":null,"deploymentId":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":9683,"likelyAffectedFiles":[".forgejo/workflows/knocklaunch.yml","src/__tests__/commandCenter/deployDetection.test.ts","src/__tests__/contracts/command-center-forgejo-transport-reliability.contract.test.ts","src/__tests__/contracts/command-center-release-reconciliation-budget.contract.test.ts","src/__tests__/contracts/command-center-event-runtime.test.ts","src/__tests__/contracts/command-center-existing-branch-refresh.contract.test.ts","config/control-plane-capabilities.json","scripts/validate-command-center-contracts.mjs"],"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-08-25T23:05:04.631814+00:00","proof_gate":"repair_mission_synthesis_ready","source_sha":null,"external_id":null,"receipt_type":"execute_mission","idempotency_key":"mission:594b6645-90ce-44ec-b81a-33ec5aae6044:execute_mission:repair_mission_synthesis_ready","mission_step_id":"8e875bc5-38fc-4b1b-b288-f667b84571c8","command_center_event_id":"594b6645-90ce-44ec-b81a-33ec5aae6044"},{"id":"bde69cb3-6ce5-406c-814c-02e7fc56a87f","source":"cc-execution","status":"synthesis_required","payload":{"ok":true,"jobId":null,"phase":"objective_received","branch":"ai/objective-first-repair-8ade12620874","reason":null,"status":"synthesis_required","metrics":{"receiptBytes":0,"releaseCount":0,"toolCallCount":0,"repeatedCallCount":0,"executorlessWaitMs":0,"firstUsefulResultAt":null,"recoveryAttemptCount":0,"ownerInterruptionCount":0},"version":"1.65.7-prime-stale-manual-retirement-adapter","prNumber":null,"terminal":false,"missionId":"8ade1262-0874-4ccb-964c-f41ec8a97bf4","operation":"execute_mission","proofGate":"repair_mission_synthesis_ready","sourceSha":null,"timingsMs":{"gateMs":0,"proofMs":0,"handlerMs":2618,"releaseMs":0,"mutationMs":0,"repositoryMs":0,"missionSetupMs":506,"providerAuthMs":0,"ledgerPrepareMs":506,"ledgerReconcileMs":0,"lineageReconcileMs":0,"resolvePreflightMs":506,"authoritativeLedgerMs":0,"ledgerAsyncDispatchMs":0,"totalSynchronousLedgerMs":506,"asyncBookkeepingDispatchMs":0,"ledgerAuthoritativeCommitMs":0},"nextAction":"Inspect the bounded repository paths, synthesize exact files or anchored_edits, and call /mission/execute again automatically with this same missionId without another owner prompt or workflow switch.","receiptRef":{"mode":"full","missionId":"8ade1262-0874-4ccb-964c-f41ec8a97bf4"},"performance":null,"deploymentId":null,"releaseState":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","pendingProofKinds":[],"verificationState":null,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":3923,"likelyAffectedFiles":["workers/cc-execution/src/index-mission-control.js","workers/cc-execution/src/version.js","workers/cc-execution/test/release-orchestration-invariants.test.js"],"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true,"requestContractState":"pending"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-06T01:57:57.435722+00:00","proof_gate":"repair_mission_synthesis_ready","source_sha":null,"external_id":null,"receipt_type":"execute_mission","idempotency_key":"mission:8ade1262-0874-4ccb-964c-f41ec8a97bf4:execute_mission:repair_mission_synthesis_ready:current-generation","mission_step_id":"b5f24fe7-82a1-4b16-81ad-5176c154424e","command_center_event_id":"8ade1262-0874-4ccb-964c-f41ec8a97bf4"},{"id":"bde706e8-95cf-4e67-91f8-80467021e813","source":"forgejo-runtime","status":"verified","payload":{"failed":[],"states":{"forgejo-main/source":"success"},"mainSha":"8fe58bb25112dfd908247ebebd054b70700c287d","missing":[],"pending":[],"required":["forgejo-main/source"],"sourceSha":"8fe58bb25112dfd908247ebebd054b70700c287d","releaseState":"verified","sourceInMain":true,"compareStatus":"protected_main_push_exact_source","releaseTargets":{"frontend":false,"onrunner":false,"migrations":false,"ccExecution":false,"supabaseEdge":false,"edgeFunctionSlugs":[]},"releaseTargetStates":{},"requestContractHash":"e3731a95796e96c6bee98f76466add588d34aea56d40fd59c39edfe3d6afa71f","forgejoWorkflowProof":null,"onrunnerRuntimeProof":null,"releaseSourceVerified":true,"ccExecutionRuntimeProof":null,"releaseTargetRecoveryProof":null,"exactReleaseVerifiedAfterMainAdvanced":false},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-24T05:22:23.313278+00:00","proof_gate":"canonical_release_terminal_verified","source_sha":"8fe58bb25112dfd908247ebebd054b70700c287d","external_id":"forgejo-main-8fe58bb25112","receipt_type":"canonical_release_status","idempotency_key":"mission:44d49e03-d254-40a5-b682-2e1dda0261fb:forgejo-release-status:8fe58bb25112dfd908247ebebd054b70700c287d:verified:forgejo-main/source=success","mission_step_id":"63e11856-2947-4e5e-a7dd-be2c7e480ef7","command_center_event_id":"44d49e03-d254-40a5-b682-2e1dda0261fb"},{"id":"bdeb311f-8a76-4c4a-9add-5e5a3e07dd1f","source":"cc-execution","status":"waiting","payload":{"sourceTargets":["src/PrivateAppShell.tsx","config/platform-standards.json","scripts/visual-witness-hosted-runner/src/mission-gateway.mjs","config/system-reference-points/release-reliability-standard-2026-10-05.json"],"continuationObjective":"MUTATE AND SHIP EXISTING PR #5197. This is the current PCG P0 acceptance/Card Vault repair. Reuse the existing PR and branch only. Forgejo already reports exact-head Gate success for f32ba59c2245de2fb7ab052f5ff9eeddb18b90b3 and the PR is mergeable against current main. Consume that green Gate, merge through the canonical protected-main path, release the affected frontend, and verify the PCG acceptance/Card Vault behavior in production. Do not create replacement PRs or unrelated control-plane work. If the supervisor fails to advance, treat that as the causal defect and recover deterministically within this same execution."},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-06T17:40:19.363898+00:00","proof_gate":"mission_continuation_scope_persisted","source_sha":null,"external_id":null,"receipt_type":"mission_continuation_scope_updated","idempotency_key":"mission:c5a8bd5d-9248-42dd-89d8-65e7b8f67728:mission_continuation_scope_updated:mission_continuation_scope_persisted:waiting","mission_step_id":"a68f53cd-77e7-48c5-b9b8-12ff78474e5c","command_center_event_id":"c5a8bd5d-9248-42dd-89d8-65e7b8f67728"},{"id":"bdf1b04c-4763-47a5-b523-86c6a7082de8","source":"cc-execution","status":"waiting_for_gate","payload":{"ok":true,"jobId":null,"phase":"implementation","branch":"ai/objective-first-repair-d95acae96954","reason":"provider_verified_auto_progress_owns_gate_merge_release_outside_owner_response","status":"waiting_for_gate","metrics":{"receiptBytes":24552,"releaseCount":0,"toolCallCount":1,"repeatedCallCount":0,"executorlessWaitMs":0,"firstUsefulResultAt":"2026-10-02T21:49:46.829Z","recoveryAttemptCount":0,"ownerInterruptionCount":0},"version":"1.64.53-paul-context-depth","prNumber":4536,"terminal":false,"missionId":"d95acae9-6954-49dc-9e9c-caebc0321692","operation":"execute_mission","proofGate":"repair_mission_pr_handed_off_to_supervisor","sourceSha":null,"timingsMs":{"gateMs":0,"proofMs":0,"handlerMs":5722,"releaseMs":0,"mutationMs":0,"repositoryMs":0,"prReadinessMs":0,"approvedPlanMs":1935,"missionSetupMs":475,"providerAuthMs":0,"shipAndProveMs":0,"ledgerPrepareMs":475,"ledgerReconcileMs":0,"lineageReconcileMs":0,"resolvePreflightMs":475,"repositoryMutationMs":3787,"repositoryProviderMs":3787,"authoritativeLedgerMs":0,"ledgerAsyncDispatchMs":0,"repositoryAtomicCommitMs":2383,"repositoryBranchCreateMs":0,"totalSynchronousLedgerMs":475,"asyncBookkeepingDispatchMs":0,"ledgerAuthoritativeCommitMs":0,"repositoryPullRequestCreateMs":1404},"nextAction":"Canonical KnockLaunch Gate notifier and durable mission supervisor own Gate, merge, release, and proof progression from this exact PR head outside the owner response path.","receiptRef":{"mode":"full","missionId":"d95acae9-6954-49dc-9e9c-caebc0321692"},"performance":null,"deploymentId":null,"releaseState":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","pendingProofKinds":[],"verificationState":null,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":3909,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true,"requestContractState":"pending"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-02T21:49:54.145154+00:00","proof_gate":"repair_mission_pr_handed_off_to_supervisor","source_sha":null,"external_id":"4536","receipt_type":"execute_mission","idempotency_key":"mission:d95acae9-6954-49dc-9e9c-caebc0321692:execute_mission:repair_mission_pr_handed_off_to_supervisor:current-generation","mission_step_id":"1b74e6b1-b027-447b-a11b-e1e33ce86abb","command_center_event_id":"d95acae9-6954-49dc-9e9c-caebc0321692"},{"id":"bdf340a2-f947-4fd5-bfde-db39281f2d4e","source":"cc-execution","status":"no_change","payload":{"ok":true,"jobId":null,"phase":"objective_received","branch":"ai/control-plane-1485-noop-canary-20260819","reason":null,"status":"no_change","metrics":{"receiptBytes":0,"releaseCount":0,"toolCallCount":0,"repeatedCallCount":0,"ownerInterruptionCount":0},"version":"1.48.5-single-mutation-lane","prNumber":null,"terminal":true,"missionId":"26b53534-2f70-4097-a904-98ec7a3b1c9d","operation":"execute_mission","proofGate":"repair_mission_no_change_verified","sourceSha":null,"timingsMs":null,"nextAction":null,"receiptRef":{"mode":"full","missionId":"26b53534-2f70-4097-a904-98ec7a3b1c9d"},"performance":null,"deploymentId":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":5013,"ownerActionRequired":false,"ownerFacingTerminal":true,"continuationRequired":false},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-08-20T03:58:45.401075+00:00","proof_gate":"repair_mission_no_change_verified","source_sha":null,"external_id":null,"receipt_type":"execute_mission","idempotency_key":"mission:26b53534-2f70-4097-a904-98ec7a3b1c9d:execute_mission:repair_mission_no_change_verified","mission_step_id":"d333d71e-b475-46bf-a33e-0a098f8ceacd","command_center_event_id":"26b53534-2f70-4097-a904-98ec7a3b1c9d"},{"id":"bdf49f10-f951-48f3-a6ba-5dc0dd787993","source":"cc-execution","status":"verified","payload":{"ownerWaitSloMs":{"merge_to_live_ms":null,"owner_action_to_pr_ms":null,"green_gate_to_merge_ms":null,"owner_action_to_useful_response_ms":null},"ownerWaitLiveAt":"2026-09-10T02:12:52.697Z"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-10T01:53:01.010701+00:00","proof_gate":"owner_wait_live_milestone_recorded","source_sha":null,"external_id":null,"receipt_type":"owner_wait_live_milestone","idempotency_key":"mission:aa87b95e-0096-4470-bebc-05121e58a2d0:owner-wait-live","mission_step_id":"5be1a72f-d6e0-4184-a80e-1cd094895d6c","command_center_event_id":"aa87b95e-0096-4470-bebc-05121e58a2d0"},{"id":"bdf4ef13-1477-4ce8-a8ba-38bc2195ad6a","source":"durable-mission-ledger","status":"verified","payload":{"sourceSha":"06472e1338f877d719a00136cc25d506a0e47b18","requestContractProof":{"legacy":false,"present":true,"outcomes":[{"id":"config-cache","satisfied":true,"statement":"Verified PCG R2 storage configuration is single-flighted and cached per tenant for 5 minutes within an Edge isolate.","proofConditionIds":["proof-live"]},{"id":"browser-cache","satisfied":true,"statement":"Successful signed PCG media responses use a one-hour private browser cache with stale-while-revalidate while preserving ETag and content headers.","proofConditionIds":["proof-live"]},{"id":"behavior","satisfied":true,"statement":"Existing signed media URLs, R2 reads, uploads, deletes, and authorization behavior remain unchanged.","proofConditionIds":["proof-live"]}],"satisfied":true,"constraints":[{"id":"no-auth-cache","satisfied":true,"statement":"Do not cache authenticated mutation decisions or error JSON.","proofConditionIds":["proof-live"]},{"id":"no-public-cache","satisfied":true,"statement":"Do not make signed PCG media publicly cacheable in shared caches.","proofConditionIds":["proof-live"]},{"id":"capability-completeness","satisfied":true,"statement":"Every dependency the implementation declares or relies on must be wired and proven across applicable frontend, backend/runtime, schema/data/storage, authentication/authorization, provider configuration, prerequisite/loading/empty/error states, release ownership, and live production behavior; owner-authorized unavailable dependencies must become explicit prerequisite states rather than runtime failures.","proofConditionIds":["proof-live"]},{"id":"atomic-capability-lifecycle","satisfied":true,"statement":"Changed capabilities remain non-active until dependency readiness, N/N-1 compatibility, affected-target release, and claim-matched production canary proof are satisfied; missing optional dependencies become prerequisite_required, and runtime drift or health-contract violation quarantines only the affected capability instead of breaking unrelated working capability.","proofConditionIds":["proof-live"]}],"contractHash":"5e2e57369c1c5890b9bc0e165c37b5fa66da6c1714cb123b035950659ae259ab","releaseBound":true,"witnessBound":false,"visualRequested":false,"visualSatisfied":true,"conditionResults":[{"id":"proof-live","kind":"runtime","evidence":{"reason":null,"satisfied":true,"releaseState":"verified","missingTargets":[],"disallowedTargets":[],"migrationRequired":false,"releaseTargetStates":{"supabaseEdge":"success"},"unsuccessfulTargets":[],"activeReleaseTargets":["supabaseEdge"],"allowedReleaseTargets":[],"requiredReleaseTargets":[],"migrationReleaseVerified":null,"releaseRequestContractHash":"5e2e57369c1c5890b9bc0e165c37b5fa66da6c1714cb123b035950659ae259ab"},"required":true,"satisfied":true}],"validationErrors":[],"pendingProofKinds":[],"activeReleaseTargets":["supabaseEdge"]},"authoritativeMissionRefresh":true,"evaluatedRequestContractRevision":1},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-05T15:20:34.863884+00:00","proof_gate":"request_contract_terminal_verified","source_sha":"06472e1338f877d719a00136cc25d506a0e47b18","external_id":null,"receipt_type":"request_contract_reconciliation","idempotency_key":"mission:e6a7856b-a16a-44b6-9b64-b6529b859926:request-contract:5e2e57369c1c5890b9bc0e165c37b5fa66da6c1714cb123b035950659ae259ab:06472e1338f877d719a00136cc25d506a0e47b18:verified:","mission_step_id":"b996f4d0-f73c-44e3-86d3-81f10b51cf01","command_center_event_id":"e6a7856b-a16a-44b6-9b64-b6529b859926"},{"id":"bdf502c5-4092-4cdd-81f4-6b64a7ed6c37","source":"forgejo-runtime","status":"verified","payload":{"failed":[],"states":{"forgejo-main/source":"success","forgejo-release/workflow":"success","frontend-cloudflare/live":"success","supabase-edge-production/live":"success"},"mainSha":"0cccfbf4b9c3811fccdfc98fcce33fc391cddebb","missing":[],"pending":[],"required":["forgejo-main/source","forgejo-release/workflow","supabase-edge-production/live","frontend-cloudflare/live"],"sourceSha":"fa47e38cbd9caf4f939e9348b076164c197c534e","releaseState":"verified","sourceInMain":true,"compareStatus":"known_exact_protected_main_push_history","releaseTargets":{"frontend":true,"migrations":false,"ccExecution":false,"supabaseEdge":true},"releaseTargetStates":{"frontend":"success","supabaseEdge":"success"},"requestContractHash":null,"forgejoWorkflowProof":{"url":"https://git.knocklaunch.app/noel/KnockLaunchOS/actions/runs/13206","runId":13206,"status":"success","sourceSha":"fa47e38cbd9caf4f939e9348b076164c197c534e","conclusion":null,"failedJobs":[],"diagnostics":null,"exactSource":true,"targetStates":{"frontend":"success","supabaseEdge":"success"},"targetJobCount":6,"observedTargetStates":{"frontend":"success","supabaseEdge":"success"}},"releaseSourceVerified":true,"ccExecutionRuntimeProof":null,"releaseTargetRecoveryProof":{"exact":true,"source":"exact_source_parent_diff_shared_release_owner_mapping","parentSha":"06879d338058a9efbba3fcac45d1d3d6707ab4fb","sourceSha":"fa47e38cbd9caf4f939e9348b076164c197c534e","changedPaths":["src/__tests__/tenant-brand-media-settings.contract.test.ts","src/components/CRMUserMenu.tsx","src/components/platform/TenantBrandMediaSettings.tsx","src/lib/tenants/tenantMediaBranding.ts","supabase/functions/tenant-media-library/index.ts"],"changedPathCount":5,"independentOfCurrentMainCompare":true},"exactReleaseVerifiedAfterMainAdvanced":false},"tenant_id":"a2929648-19db-46c8-9e93-07378ed1aa5f","created_at":"2026-10-04T18:22:54.921477+00:00","proof_gate":"canonical_release_terminal_verified","source_sha":"fa47e38cbd9caf4f939e9348b076164c197c534e","external_id":null,"receipt_type":"canonical_release_status","idempotency_key":"mission:e603e9dd-10ce-4982-bfd2-d979df863266:forgejo-release-status:fa47e38cbd9caf4f939e9348b076164c197c534e:verified:forgejo-main/source=success|forgejo-release/workflow=success|supabase-edge-production/live=success|frontend-cloudflare/live=success","mission_step_id":"3058bbfc-4b9d-45f5-bbf0-ca4c619b7db7","command_center_event_id":"e603e9dd-10ce-4982-bfd2-d979df863266"},{"id":"bdf65019-f889-4518-ae15-f9a1b1934048","source":"forgejo-runtime","status":"pending","payload":{"failed":[],"states":{"forgejo-main/source":"success","forgejo-release/workflow":"pending","frontend-cloudflare/live":"pending","supabase-edge-production/live":"pending"},"mainSha":"e61b410678c0cf2af2f4f408bc9382c5cefa2138","missing":[],"pending":["forgejo-release/workflow","supabase-edge-production/live","frontend-cloudflare/live"],"required":["forgejo-main/source","forgejo-release/workflow","supabase-edge-production/live","frontend-cloudflare/live"],"sourceSha":"e61b410678c0cf2af2f4f408bc9382c5cefa2138","releaseState":"pending","sourceInMain":true,"compareStatus":"protected_main_push_exact_source","releaseTargets":{"frontend":true,"migrations":false,"ccExecution":false,"supabaseEdge":true,"edgeFunctionSlugs":["google-workspace-mail"]},"releaseTargetStates":{"frontend":"pending","supabaseEdge":"pending"},"requestContractHash":"2f07d9aab7561d314c703f96c2c27ac00d0795173de2ba4171e3fb73b9114ca3","forgejoWorkflowProof":{"url":"https://git.knocklaunch.app/noel/KnockLaunchOS/actions/runs/13547","runId":13547,"status":"running","sourceSha":"e61b410678c0cf2af2f4f408bc9382c5cefa2138","conclusion":null,"failedJobs":[],"diagnostics":null,"exactSource":true,"targetStates":{"frontend":"pending","supabaseEdge":"pending"},"targetJobCount":6,"observedTargetStates":{"frontend":"pending","supabaseEdge":"pending"}},"releaseSourceVerified":true,"ccExecutionRuntimeProof":null,"releaseTargetRecoveryProof":null,"exactReleaseVerifiedAfterMainAdvanced":false},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-01T01:03:53.33976+00:00","proof_gate":"canonical_release_pending","source_sha":"e61b410678c0cf2af2f4f408bc9382c5cefa2138","external_id":"forgejo-main-e61b410678c0","receipt_type":"canonical_release_status","idempotency_key":"mission:82187a1f-58b6-4681-869a-2c67d474a1ea:forgejo-release-status:e61b410678c0cf2af2f4f408bc9382c5cefa2138:pending:forgejo-main/source=success|forgejo-release/workflow=pending|supabase-edge-production/live=pending|frontend-cloudflare/live=pending","mission_step_id":"44f8e840-f03e-4614-b9cf-2e881d5393e7","command_center_event_id":"82187a1f-58b6-4681-869a-2c67d474a1ea"},{"id":"bdf6875d-0add-4994-805c-ca39a1e67fa2","source":"cc-execution","status":"waiting","payload":{"kind":"heartbeat","message":"Still active in release.","nextAction":{"lane":"production-release-conductor","action":"reconcile_release","reason":"merged_source_requires_release_proof","automationAllowed":true,"ownerActionRequired":false},"silenceBudgetMs":15000,"semanticCheckpointSignature":"{\"stateMachineVersion\":1,\"phase\":\"release\",\"ownerFacingState\":null,\"latest\":{\"kind\":\"receipt\",\"key\":\"owner_progress_heartbeat\",\"status\":\"waiting\",\"proofGate\":\"owner_progress_heartbeat\"},\"activeStep\":{\"key\":\"implementation\",\"status\":\"waiting\",\"lane\":\"cc-execution\"},\"nextStep\":{\"key\":\"pull_request\",\"status\":\"waiting\",\"lane\":\"cc-execution\"},\"nextSafeAction\":{\"action\":\"reconcile_release\",\"lane\":\"production-release-conductor\",\"reason\":\"merged_source_requires_release_proof\",\"automationAllowed\":true,\"ownerActionRequired\":false},\"executionOwnership\":{\"active\":false,\"state\":\"waiting\",\"executor\":null,\"lane\":\"cc-execution\",\"nextAction\":\"reconcile_release\",\"recoveryOwner\":\"production-release-conductor\"},\"acceptance\":{\"total\":1,\"verified\":0,\"pending\":1,\"percent\":0,\"satisfied\":false,\"verifiedIds\":[],\"pendingIds\":[\"proof-production\"]},\"stall\":{\"stalled\":false,\"reason\":\"within_deadline\",\"step\":\"visual_proof\",\"deadlineAt\":\"2026-10-06T08:33:13.056202+00:00\",\"recoveryAction\":null},\"blocker\":null,\"terminal\":false,\"branch\":null,\"prNumber\":5163,\"sourceSha\":\"d059e784c8fb33ceeb0e36baec00e818ef3753e8\",\"deploymentId\":\"forgejo-main-d059e784c8fb\"}"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-06T07:33:38.017872+00:00","proof_gate":"owner_progress_heartbeat","source_sha":null,"external_id":null,"receipt_type":"owner_progress_heartbeat","idempotency_key":"mission:6cd825d0-ddfe-4532-8e8e-5f72704f5be5:owner-progress-heartbeat:119418134","mission_step_id":"8f1c0a7d-df5b-4529-9b5e-b41c824b98db","command_center_event_id":"6cd825d0-ddfe-4532-8e8e-5f72704f5be5"},{"id":"bdf737dd-eca4-4005-835b-a6adc5fdc93b","source":"cc-execution","status":"retryable","payload":{"ok":false,"jobId":null,"phase":"pull_request","branch":"ai/objective-first-repair-2de8885eb3fa","reason":"retryable_provider_transport:forgejo_provider_read_timeout","status":"retryable","metrics":{"receiptBytes":56558,"releaseCount":0,"toolCallCount":14,"repeatedCallCount":4,"executorlessWaitMs":98715,"firstUsefulResultAt":"2026-10-03T01:05:05.772Z","recoveryAttemptCount":5,"ownerInterruptionCount":0},"version":null,"prNumber":4578,"terminal":false,"missionId":"2de8885e-b3fa-4534-bcf4-73b46fc72746","operation":"automatic_mission_resume","proofGate":"repair_mission_pr_ready_retryable","sourceSha":null,"timingsMs":{"prReadinessMs":2207,"approvedPlanMs":0,"shipAndProveMs":0,"repositoryMutationMs":0,"repositoryProviderMs":0,"repositoryAtomicCommitMs":0,"repositoryBranchCreateMs":0,"repositoryPullRequestCreateMs":0},"nextAction":"Reconcile this same mission and pull request automatically; do not create a replacement branch or PR.","receiptRef":{"mode":"full","missionId":"2de8885e-b3fa-4534-bcf4-73b46fc72746"},"performance":null,"deploymentId":null,"releaseState":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","pendingProofKinds":[],"verificationState":null,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":819,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true,"requestContractState":"pending"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-03T01:06:41.137167+00:00","proof_gate":"repair_mission_pr_ready_retryable","source_sha":null,"external_id":"4578","receipt_type":"automatic_mission_resume","idempotency_key":"mission:2de8885e-b3fa-4534-bcf4-73b46fc72746:automatic-mission-resume:4578:repair_mission_pr_ready_retryable","mission_step_id":"6c2b9137-3915-4bcc-8b41-fc1719902e0c","command_center_event_id":"2de8885e-b3fa-4534-bcf4-73b46fc72746"},{"id":"bdf7d485-c9f6-400e-97f6-5636db52cc30","source":"cc-execution","status":"repair_prepared","payload":{"ok":true,"jobId":null,"phase":"pull_request","branch":"ai/seaside-contrast-mobile-nav-20260807-r202608070415","reason":null,"status":"repair_prepared","metrics":{"receiptBytes":5184,"releaseCount":0,"toolCallCount":5,"repeatedCallCount":2,"ownerInterruptionCount":0},"version":"1.30.20-pr-scoped-release-missions","prNumber":4179,"terminal":false,"missionId":"5d8409e2-c5ff-4721-8d07-ec106599fbf5","operation":"execute_mission","proofGate":"repair_mission_prepared","sourceSha":null,"timingsMs":null,"nextAction":"continue_batch_or_ship_and_prove","receiptRef":{"mode":"full","missionId":"5d8409e2-c5ff-4721-8d07-ec106599fbf5"},"performance":null,"deploymentId":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"onePullRequest":true,"terminalProofRequired":true},"sourceReceiptBytes":1233,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true},"tenant_id":"c55998b4-82a3-467e-8d35-177bb4785f6e","created_at":"2026-08-07T04:15:29.545789+00:00","proof_gate":"repair_mission_prepared","source_sha":null,"external_id":"4179","receipt_type":"execute_mission","idempotency_key":"mission:5d8409e2-c5ff-4721-8d07-ec106599fbf5:execute_mission:repair_mission_prepared","mission_step_id":"0ad96ab9-101f-41b9-83b4-26e557021a8f","command_center_event_id":"5d8409e2-c5ff-4721-8d07-ec106599fbf5"},{"id":"bdf9737f-428c-46cd-94d5-06da48052750","source":"cc-execution","status":"recorded","payload":{"objective":"Continue PR #1368 on its existing branch. Add the exact migration that removes the obsolete one-estimate-per-contact uniqueness and creates a non-unique tenant/contact/updated lookup index. This is part of the already-authorized Redfish repair estimate work; do not release yet. Do not touch unrelated systems.","tenantRef":"Redfish Roofing","receivedAt":"2026-09-02T02:58:01.439Z","fingerprint":"907e0565589b88d27e17318d05fc9fc617fb0e5eff9007621ff58b01bed93142","workstreamRef":"redfishroofing","conversationId":null,"canonicalBranch":"ai/redfish-roof-repair-estimates-20260901","requestContract":{"valid":true,"intent":{"evidence":[],"confidence":null,"rawUtterance":"Continue PR #1368 on its existing branch. Add the exact migration that removes the obsolete one-estimate-per-contact uniqueness and creates a non-unique tenant/contact/updated lookup index. This is part of the already-authorized Redfish repair estimate work; do not release yet. Do not touch unrelated systems.","wordingChanged":false,"canonicalIntent":"Continue PR #1368 on its existing branch. Add the exact migration that removes the obsolete one-estimate-per-contact uniqueness and creates a non-unique tenant/contact/updated lookup index. This is part of the already-authorized Redfish repair estimate work; do not release yet. Do not touch unrelated systems.","resolutionStatus":"exact","uniqueResolution":true,"clarificationRequired":false},"source":"explicit","version":1,"outcomes":[{"id":"outcome-repair-estimate","statement":"Redfish users can create and save a Repair estimate separately from a Full Replacement estimate for the same homeowner/property.","proofConditionIds":["proof-repair-production","proof-multiple-estimates"]},{"id":"outcome-estimate-detail","statement":"Saved estimates show type, scope summary, total, status and dates; repair estimates capture affected area, damage/problem, component/material, measurement, scope of work, notes, labor/material/other/disposal line items and pricing.","proofConditionIds":["proof-repair-production"]},{"id":"outcome-replacement-preserved","statement":"The existing Full Replacement Measure, Materials, Pricing and Review workflow remains available.","proofConditionIds":["proof-replacement-preserved"]},{"id":"outcome-contact-bound","statement":"Estimates created from Contact Workspace remain bound to the selected homeowner and property instead of requiring duplicate customer/property entry.","proofConditionIds":["proof-contact-bound"]}],"objective":"Continue PR #1368 on its existing branch. Add the exact migration that removes the obsolete one-estimate-per-contact uniqueness and creates a non-unique tenant/contact/updated lookup index. This is part of the already-authorized Redfish repair estimate work; do not release yet. Do not touch unrelated systems.","constraints":[{"id":"constraint-1","statement":"Use the existing public.roof_estimates table, calculation_metadata JSON and canonical line_items/pricing primitives; do not create a parallel estimate backend.","proofConditionIds":["proof-existing-primitive"]},{"id":"constraint-2","statement":"Preserve tenant isolation and existing replacement estimates; legacy rows without estimate_type metadata are treated as Full Replacement.","proofConditionIds":["proof-replacement-preserved","proof-contact-bound"]},{"id":"constraint-3","statement":"Use the existing branch and PR #1368; do not create a duplicate PR.","proofConditionIds":["proof-process"]},{"id":"constraint-4","statement":"The database must allow more than one roof estimate per tenant/contact while retaining an efficient tenant/contact lookup index.","proofConditionIds":["proof-multiple-estimates"]},{"id":"constraint-5","statement":"Require KnockLaunch Gate after the migration is added; squash merge through Forgejo.","proofConditionIds":["proof-process"]},{"id":"constraint-6","statement":"Release only the affected frontend and Supabase migration targets.","proofConditionIds":["proof-process"]},{"id":"constraint-7","statement":"Do not create fake demo records.","proofConditionIds":["proof-existing-primitive"]},{"id":"constraint-8","statement":"Visual Witness is not requested.","proofConditionIds":["proof-process"]}],"terminalPolicy":"all_required_proof_conditions_satisfied_after_live_release","proofConditions":[{"id":"proof-repair-production","kind":"runtime","claim":"The released Redfish Contact Workspace estimate experience contains a New Repair creation path and the repair workflow fields, itemized pricing, status and saved-estimate summaries.","route":"/redfish-roofing/homeowners/:contactId","roleRef":null,"userRef":null,"required":true,"expectedText":"New Repair","targetedActions":[],"allowedReleaseTargets":["frontend","migrations"],"requiredReleaseTargets":["frontend"]},{"id":"proof-multiple-estimates","kind":"runtime","claim":"Production public.roof_estimates no longer enforces unique (contact_id, tenant_org_id) and has a non-unique tenant/contact/updated lookup index, so repair and replacement estimates can coexist.","route":null,"roleRef":null,"userRef":null,"required":true,"expectedText":null,"targetedActions":[],"allowedReleaseTargets":["migrations"],"requiredReleaseTargets":["migrations"]},{"id":"proof-replacement-preserved","kind":"repository","claim":"The Full Replacement workflow still exposes Measure, Materials, Pricing and Review steps after the repair-estimate change.","route":null,"roleRef":null,"userRef":null,"required":true,"expectedText":null,"targetedActions":[],"allowedReleaseTargets":["frontend"],"requiredReleaseTargets":[]},{"id":"proof-contact-bound","kind":"repository","claim":"ContactBoundRoofEstimator continues passing the selected contact and property fields into RoofEstimatorWizard/useRoofEstimate and saves them on roof_estimates.","route":null,"roleRef":null,"userRef":null,"required":true,"expectedText":null,"targetedActions":[],"allowedReleaseTargets":["frontend"],"requiredReleaseTargets":[]},{"id":"proof-existing-primitive","kind":"repository","claim":"The change continues using public.roof_estimates, calculation_metadata and line_items and does not add a parallel estimate table or fake demo data.","route":null,"roleRef":null,"userRef":null,"required":true,"expectedText":null,"targetedActions":[],"allowedReleaseTargets":["frontend","migrations"],"requiredReleaseTargets":[]},{"id":"proof-process","kind":"repository","claim":"One existing PR #1368 is used, KnockLaunch Gate is required for the final generation, the change is squash merged through Forgejo, only frontend and migrations are released, and no visual witness is required.","route":null,"roleRef":null,"userRef":null,"required":true,"expectedText":null,"targetedActions":[],"allowedReleaseTargets":["frontend","migrations"],"requiredReleaseTargets":[]}],"validationErrors":[]},"requestedBranch":"ai/redfish-roof-repair-estimates-20260901","conversationContext":null,"requestContractHash":"697cf7f07bf5487f186e3979b9ee9b74efa75c3d92401ff3f24abad88889457b","requestContractRevision":1},"tenant_id":"de8369b6-a78f-40bb-ae1f-28ffca62bc7e","created_at":"2026-09-02T02:58:02.043072+00:00","proof_gate":"tenant_workstream_contribution_recorded","source_sha":null,"external_id":null,"receipt_type":"tenant_workstream_contribution","idempotency_key":"mission:a277198e-97a4-42ba-96bd-8321a910bbee:tenant-workstream-contribution:907e0565589b88d27e17318d05fc9fc617fb0e5eff9007621ff58b01bed93142","mission_step_id":null,"command_center_event_id":"a277198e-97a4-42ba-96bd-8321a910bbee"},{"id":"bdfa106b-b163-4167-80e8-5fc06521f63f","source":"cc-execution","status":"blocked","payload":{"ok":false,"jobId":null,"phase":"pull_request","branch":"ai/fix-forgejo-actions-operator-524-20260826","reason":"orphaned_branch_recovery_scope_mismatch:ai/fix-forgejo-actions-operator-524-20260826","status":"blocked","metrics":{"receiptBytes":4400,"releaseCount":0,"toolCallCount":3,"repeatedCallCount":0,"ownerInterruptionCount":0},"version":"1.52.1-protected-main-release-handoff","prNumber":null,"terminal":false,"missionId":"49c6154a-22ac-46d5-ac37-5a6be555e074","operation":"execute_mission","proofGate":"repair_mission_execution_blocked","sourceSha":null,"timingsMs":{"handlerMs":479,"prReadinessMs":0,"approvedPlanMs":479,"missionSetupMs":805,"shipAndProveMs":0},"nextAction":null,"receiptRef":{"mode":"full","missionId":"49c6154a-22ac-46d5-ac37-5a6be555e074"},"performance":null,"deploymentId":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":5195,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-08-26T23:38:30.325521+00:00","proof_gate":"repair_mission_execution_blocked","source_sha":null,"external_id":null,"receipt_type":"execute_mission","idempotency_key":"mission:49c6154a-22ac-46d5-ac37-5a6be555e074:execute_mission:repair_mission_execution_blocked","mission_step_id":"bf13f5e6-1489-4feb-b2f4-760999b5d48e","command_center_event_id":"49c6154a-22ac-46d5-ac37-5a6be555e074"},{"id":"bdfb0c78-118b-4ced-a129-7ae106c47d65","source":"cc-execution","status":"source_resolution_required","payload":{"ok":true,"jobId":null,"phase":"objective_received","branch":"ai/objective-first-repair-9e2bde27f114","reason":null,"status":"source_resolution_required","metrics":{"receiptBytes":0,"releaseCount":0,"toolCallCount":0,"repeatedCallCount":0,"ownerInterruptionCount":0},"version":"1.58.115-release-speed-lock","prNumber":null,"terminal":false,"missionId":"9e2bde27-f114-43ca-9cfa-7001f9d43aa7","operation":"execute_mission","proofGate":"repair_mission_source_resolution_required","sourceSha":null,"timingsMs":{"gateMs":0,"proofMs":0,"handlerMs":5,"releaseMs":0,"mutationMs":0,"repositoryMs":0,"missionSetupMs":853,"providerAuthMs":0,"ledgerPrepareMs":853,"ledgerReconcileMs":278,"lineageReconcileMs":0,"resolvePreflightMs":853,"authoritativeLedgerMs":0,"ledgerAsyncDispatchMs":0,"totalSynchronousLedgerMs":1131,"asyncBookkeepingDispatchMs":0,"ledgerAuthoritativeCommitMs":0},"nextAction":"Resolve bounded authoritative Forgejo source targets, then call /mission/execute again with this same missionId and exact files or anchored_edits. Do not switch workflows.","receiptRef":{"mode":"full","missionId":"9e2bde27-f114-43ca-9cfa-7001f9d43aa7"},"performance":null,"deploymentId":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":2517,"likelyAffectedFiles":[],"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-12T01:16:03.359911+00:00","proof_gate":"repair_mission_source_resolution_required","source_sha":null,"external_id":null,"receipt_type":"execute_mission","idempotency_key":"mission:9e2bde27-f114-43ca-9cfa-7001f9d43aa7:execute_mission:repair_mission_source_resolution_required:current-generation","mission_step_id":"6a5e29df-25c4-4612-ba37-72eb852431ec","command_center_event_id":"9e2bde27-f114-43ca-9cfa-7001f9d43aa7"},{"id":"bdfbc486-40a2-4259-b083-bca9be0779ff","source":"cc-execution","status":"recorded","payload":{"objective":"Recover the missed Big Papi Supabase backend release from current Forgejo main. No source mutation, branch, or PR is required: current main already contains the correct SHA-pinned release workflow and the intended Big Papi backend source. Dispatch exactly one canonical backend release from source SHA a96a770e761ade0f88bb0fd3837b22db1822e502 for only these affected paths: supabase/functions/mobile-vendor-event-request/index.ts, supabase/functions/mobile-vendor-growth/index.ts, supabase/migrations/20260825061000_mobile_vendor_inventory_ledger.sql, supabase/migrations/20260825062000_mobile_vendor_event_finance_and_domain_truth.sql. Release only Supabase migrations and those two Edge Functions. Do not deploy frontend, cc-execution, or OnRunner. After release, require live proof that inventory tables exist, Big Papi tenant settings.website is https://bigpapiscoquitoiceys.com/, and mobile-vendor-event-request reports version 0.14.0-canonical-identity-inventory-catalog.","tenantRef":"766cfaa7-ac42-46c8-bbef-69d13268a29d","receivedAt":"2026-08-25T16:35:42.857Z","fingerprint":"c57dc5f2cbc6e40fcd226a487b4806365c5e381aa75028a5e568a81e2d6cbdc6","workstreamRef":"766cfaa7ac4246c8bbef69d13268a29d","conversationId":null,"canonicalBranch":null,"requestedBranch":null,"conversationContext":null},"tenant_id":"766cfaa7-ac42-46c8-bbef-69d13268a29d","created_at":"2026-08-25T16:35:43.429846+00:00","proof_gate":"tenant_workstream_contribution_recorded","source_sha":null,"external_id":null,"receipt_type":"tenant_workstream_contribution","idempotency_key":"mission:472d6c93-01e9-49c0-ba95-72d5310a3e7c:tenant-workstream-contribution:c57dc5f2cbc6e40fcd226a487b4806365c5e381aa75028a5e568a81e2d6cbdc6","mission_step_id":null,"command_center_event_id":"472d6c93-01e9-49c0-ba95-72d5310a3e7c"},{"id":"bdfe2ed5-3bd6-4482-a169-a383b01a642e","source":"cc-execution","status":"waiting","payload":{"kind":"heartbeat","message":"Still active in pull request.","nextAction":{"lane":"production-release-conductor","action":"reconcile_release","reason":"merged_source_requires_release_proof","automationAllowed":true,"ownerActionRequired":false},"silenceBudgetMs":15000,"semanticCheckpointSignature":"{\"stateMachineVersion\":1,\"phase\":\"pull_request\",\"ownerFacingState\":null,\"latest\":{\"kind\":\"receipt\",\"key\":\"execute_mission\",\"status\":\"release_verification_pending\",\"proofGate\":\"ship_and_prove_release_pending\"},\"activeStep\":{\"key\":\"preflight\",\"status\":\"ready\",\"lane\":\"cc-execution\"},\"nextStep\":{\"key\":\"pull_request\",\"status\":\"ready\",\"lane\":\"cc-execution\"},\"nextSafeAction\":{\"action\":\"reconcile_release\",\"lane\":\"production-release-conductor\",\"reason\":\"merged_source_requires_release_proof\",\"automationAllowed\":true,\"ownerActionRequired\":false},\"acceptance\":{\"total\":6,\"verified\":1,\"pending\":5,\"percent\":17,\"satisfied\":false,\"verifiedIds\":[\"implementation\"],\"pendingIds\":[\"preflight\",\"pull_request\",\"release\",\"runtime_proof\",\"visual_proof\"]},\"stall\":{\"stalled\":true,\"reason\":\"step_deadline_exceeded\",\"step\":\"preflight\",\"deadlineAt\":\"2026-08-04T00:08:23.643899+00:00\",\"recoveryAction\":\"reconcile_release\"},\"blocker\":null,\"terminal\":false,\"branch\":\"ai/editable-map-controls-and-parcel-options-r202608032358\",\"prNumber\":3922,\"sourceSha\":\"c6f2b526ca5fe0e0c61651004e275ff125f9f0ff\",\"deploymentId\":\"canonical-release-c6f2b526ca5f\"}"},"tenant_id":"c55998b4-82a3-467e-8d35-177bb4785f6e","created_at":"2026-09-20T21:55:51.905633+00:00","proof_gate":"owner_progress_heartbeat","source_sha":null,"external_id":null,"receipt_type":"owner_progress_heartbeat","idempotency_key":"mission:b3102df2-2bcc-4fc3-95b4-ffe03a2461d3:owner-progress-heartbeat:119329423","mission_step_id":"19f38596-a24e-4890-871a-9257b4f0e865","command_center_event_id":"b3102df2-2bcc-4fc3-95b4-ffe03a2461d3"},{"id":"bdffbf39-2fd7-4620-98a0-18cbbdf16f10","source":"cc-execution","status":"waiting","payload":{"kind":"heartbeat","message":"Still active in release.","nextAction":{"lane":"production-release-conductor","action":"reconcile_release","reason":"merged_source_requires_release_proof","automationAllowed":true,"ownerActionRequired":false},"silenceBudgetMs":15000,"semanticCheckpointSignature":"{\"stateMachineVersion\":1,\"phase\":\"release\",\"ownerFacingState\":null,\"latest\":{\"kind\":\"receipt\",\"key\":\"canonical_release_status\",\"status\":\"pending\",\"proofGate\":\"canonical_release_pending\"},\"activeStep\":{\"key\":\"pull_request\",\"status\":\"waiting\",\"lane\":\"cc-execution\"},\"nextStep\":{\"key\":\"release\",\"status\":\"waiting\",\"lane\":\"production-release-conductor\"},\"nextSafeAction\":{\"action\":\"reconcile_release\",\"lane\":\"production-release-conductor\",\"reason\":\"merged_source_requires_release_proof\",\"automationAllowed\":true,\"ownerActionRequired\":false},\"acceptance\":{\"total\":1,\"verified\":0,\"pending\":1,\"percent\":0,\"satisfied\":false,\"verifiedIds\":[],\"pendingIds\":[\"runtime\"]},\"stall\":{\"stalled\":false,\"reason\":\"within_deadline\",\"step\":\"visual_proof\",\"deadlineAt\":\"2026-09-23T15:19:19.724293+00:00\",\"recoveryAction\":null},\"blocker\":null,\"terminal\":false,\"branch\":\"ai/objective-first-repair-bc17ba05a9c9\",\"prNumber\":3509,\"sourceSha\":\"408a8cb75e551aba18ad4a867c877197ca7fbc2b\",\"deploymentId\":\"forgejo-main-408a8cb75e55\"}"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-23T11:23:41.894905+00:00","proof_gate":"owner_progress_heartbeat","source_sha":null,"external_id":null,"receipt_type":"owner_progress_heartbeat","idempotency_key":"mission:bc17ba05-a9c9-4da0-851b-bb322456939b:owner-progress-heartbeat:119344174","mission_step_id":"fae9f6c0-d7ac-42c3-92a6-449e5aad0d84","command_center_event_id":"bc17ba05-a9c9-4da0-851b-bb322456939b"},{"id":"be0209c6-3e51-4ec5-98ed-128e70064373","source":"forgejo-runtime","status":"pending","payload":{"failed":[],"states":{"forgejo-main/source":"success","forgejo-release/workflow":"pending","cc-execution/runtime-proof":"pending"},"mainSha":"0917f973b746779a52cc6f686c7d400e5c16045f","missing":[],"pending":["forgejo-release/workflow","cc-execution/runtime-proof"],"required":["forgejo-main/source","forgejo-release/workflow","cc-execution/runtime-proof"],"sourceSha":"0917f973b746779a52cc6f686c7d400e5c16045f","releaseState":"pending","sourceInMain":true,"compareStatus":"identical","forgejoWorkflowProof":{"url":"https://git.knocklaunch.app/noel/KnockLaunchOS/actions/runs/229","runId":229,"status":"running","conclusion":null,"failedJobs":[]},"ccExecutionRuntimeProof":{"liveSha":"307657628d94084429fb8ce08dbe53940297b46f","deploymentId":"forgejo-main-307657628d94084429fb8ce08dbe53940297b46f","compareStatus":null,"identitySource":"local_build_metadata","runtimeVersion":"1.43.0-control-plane-efficiency-iii","containsSourceSha":false}},"tenant_id":"a2929648-19db-46c8-9e93-07378ed1aa5f","created_at":"2026-08-15T02:37:52.002747+00:00","proof_gate":"canonical_release_pending","source_sha":"0917f973b746779a52cc6f686c7d400e5c16045f","external_id":"forgejo-main-0917f973b746","receipt_type":"canonical_release_status","idempotency_key":"mission:f1063950-7071-42ee-a826-81d12e0decec:forgejo-release-status:0917f973b746779a52cc6f686c7d400e5c16045f:pending:forgejo-main/source=success|forgejo-release/workflow=pending|cc-execution/runtime-proof=pending","mission_step_id":"d054e37c-63fa-4dcb-aba8-3dc23fb7f3e4","command_center_event_id":"f1063950-7071-42ee-a826-81d12e0decec"},{"id":"be0340dd-595d-4ac7-891b-6561f9e0ab78","source":"forgejo","status":"waiting","payload":{"branch":"ai/curri-scroll-edge-gutter","prNumber":1972,"nextAction":"Follow the existing canonical release to terminal proof.","mergeCommitSha":"d3e48687a3a4e8e803f729042d3ee68e62c0a76d","branchDeletedAfterMerge":true,"correctiveGenerationCreated":false},"tenant_id":"90ed5bf4-8abd-4d3a-af7c-024664b5b99d","created_at":"2026-09-06T17:30:30.163759+00:00","proof_gate":"forgejo_merged_pr_is_authoritative_source_lineage","source_sha":"d3e48687a3a4e8e803f729042d3ee68e62c0a76d","external_id":"1972","receipt_type":"source_lineage_merged_pr_authoritative","idempotency_key":"mission:a4e24455-dcdd-4587-85e6-c274679447cd:merged-pr:1972:d3e48687a3a4e8e803f729042d3ee68e62c0a76d","mission_step_id":"fd025ffc-577d-4eb3-a6e1-e0206c2d5993","command_center_event_id":"a4e24455-dcdd-4587-85e6-c274679447cd"},{"id":"be03ea58-7437-4dff-bf1c-b583e67f34cf","source":"forgejo-exact-source","status":"verified","payload":{"sourceSha":"e22d2ca83ac4da16d3b310e5daf14418855ad685","repository":"noel/KnockLaunchOS","repositoryProofs":[{"id":"repository","path":".forgejo/workflows/knocklaunch.yml","blobSha":"ed0f442cca77bf62742c84f98be0035eeee4dff1","expectedText":"if printf '%s\\n' \"$changed_paths\" | grep -Eq"}],"requestContractHash":"12bb17bc1315a6f726d99c9e10f9f39e586343f604d939a5e2e1b20f6128b021","namedGateEvidenceReceiptVersion":null},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-05T15:08:12.488925+00:00","proof_gate":"request_contract_repository_verified","source_sha":"e22d2ca83ac4da16d3b310e5daf14418855ad685","external_id":null,"receipt_type":"request_contract_repository_status","idempotency_key":"mission:647b7f8a-e08b-49a4-97dd-fab75d1e17a3:request-contract-repository:12bb17bc1315a6f726d99c9e10f9f39e586343f604d939a5e2e1b20f6128b021:e22d2ca83ac4da16d3b310e5daf14418855ad685","mission_step_id":"30c2681b-b1e5-426b-bb11-59f89e129b01","command_center_event_id":"647b7f8a-e08b-49a4-97dd-fab75d1e17a3"},{"id":"be066007-ad84-4887-84c9-17d8429f718a","source":"cc-execution","status":"waiting_for_gate","payload":{"ok":true,"jobId":null,"phase":"implementation","branch":"ai/objective-first-repair-2303bf6febc1","reason":"provider_verified_auto_progress_owns_gate_merge_release_outside_owner_response","status":"waiting_for_gate","metrics":{"receiptBytes":5987,"releaseCount":0,"toolCallCount":1,"repeatedCallCount":0,"executorlessWaitMs":0,"firstUsefulResultAt":"2026-10-03T22:06:48.836Z","recoveryAttemptCount":0,"ownerInterruptionCount":0},"version":"1.64.88-paul-synthesis-normalized","prNumber":4684,"terminal":false,"missionId":"2303bf6f-ebc1-48c4-b91a-f225169f56d4","operation":"execute_mission","proofGate":"repair_mission_pr_handed_off_to_supervisor","sourceSha":null,"timingsMs":{"gateMs":0,"proofMs":0,"handlerMs":5128,"releaseMs":0,"mutationMs":0,"repositoryMs":0,"prReadinessMs":0,"approvedPlanMs":1494,"missionSetupMs":258,"providerAuthMs":0,"shipAndProveMs":0,"ledgerPrepareMs":258,"ledgerReconcileMs":0,"lineageReconcileMs":0,"resolvePreflightMs":258,"repositoryMutationMs":3634,"repositoryProviderMs":3634,"authoritativeLedgerMs":0,"ledgerAsyncDispatchMs":0,"repositoryAtomicCommitMs":2319,"repositoryBranchCreateMs":0,"totalSynchronousLedgerMs":258,"asyncBookkeepingDispatchMs":0,"ledgerAuthoritativeCommitMs":0,"repositoryPullRequestCreateMs":1315},"nextAction":"Canonical KnockLaunch Gate notifier and durable mission supervisor own Gate, merge, release, and proof progression from this exact PR head outside the owner response path.","receiptRef":{"mode":"full","missionId":"2303bf6f-ebc1-48c4-b91a-f225169f56d4"},"performance":null,"deploymentId":null,"releaseState":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","pendingProofKinds":[],"verificationState":null,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":3709,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true,"requestContractState":"pending"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-03T22:06:54.950441+00:00","proof_gate":"repair_mission_pr_handed_off_to_supervisor","source_sha":null,"external_id":"4684","receipt_type":"execute_mission","idempotency_key":"mission:2303bf6f-ebc1-48c4-b91a-f225169f56d4:execute_mission:repair_mission_pr_handed_off_to_supervisor:current-generation","mission_step_id":"c1e2ac0d-cc10-4cbf-901e-c0cbe0eb19c7","command_center_event_id":"2303bf6f-ebc1-48c4-b91a-f225169f56d4"},{"id":"be07603b-aac8-472d-a81d-f7c1cf080c3f","source":"cc-execution","status":"retryable","payload":{"ok":false,"jobId":null,"phase":"objective_received","branch":"ai/auto-merge-release-persistence-20260820","reason":"The operation was aborted due to timeout","status":"retryable","metrics":{"receiptBytes":0,"releaseCount":0,"toolCallCount":0,"repeatedCallCount":0,"ownerInterruptionCount":0},"version":"1.50.5-release-queue-freshness","prNumber":543,"terminal":false,"missionId":"235ff68d-bcab-4a7f-ba95-3c76885c8ca7","operation":"execute_mission","proofGate":"canonical_release_transport_retryable","sourceSha":null,"timingsMs":null,"nextAction":"Reconcile this same mission and pull request automatically; do not create a replacement branch or PR.","receiptRef":{"mode":"full","missionId":"235ff68d-bcab-4a7f-ba95-3c76885c8ca7"},"performance":null,"deploymentId":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":5085,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-08-21T04:17:08.576358+00:00","proof_gate":"canonical_release_transport_retryable","source_sha":null,"external_id":"543","receipt_type":"execute_mission","idempotency_key":"mission:235ff68d-bcab-4a7f-ba95-3c76885c8ca7:execute_mission:canonical_release_transport_retryable","mission_step_id":"bd5697f2-e5db-4353-935f-1b169d490447","command_center_event_id":"235ff68d-bcab-4a7f-ba95-3c76885c8ca7"},{"id":"be0a9f79-91e1-4c2e-a9c2-7afe3cf75f1f","source":"cc-execution","status":"synthesis_required","payload":{"ok":true,"jobId":null,"phase":"objective_received","branch":"ai/objective-first-repair-a8ec43274d21","reason":null,"status":"synthesis_required","metrics":{"receiptBytes":0,"releaseCount":0,"toolCallCount":0,"repeatedCallCount":0,"executorlessWaitMs":0,"firstUsefulResultAt":null,"recoveryAttemptCount":0,"ownerInterruptionCount":0},"version":"1.64.48-guarded-legacy-pr-retirement","prNumber":null,"terminal":false,"missionId":"a8ec4327-4d21-40e7-b291-4dfd8e3de55c","operation":"execute_mission","proofGate":"repair_mission_synthesis_ready","sourceSha":null,"timingsMs":{"gateMs":0,"proofMs":0,"handlerMs":1566,"releaseMs":0,"mutationMs":0,"repositoryMs":0,"missionSetupMs":497,"providerAuthMs":0,"ledgerPrepareMs":497,"ledgerReconcileMs":0,"lineageReconcileMs":0,"resolvePreflightMs":497,"authoritativeLedgerMs":0,"ledgerAsyncDispatchMs":0,"totalSynchronousLedgerMs":497,"asyncBookkeepingDispatchMs":0,"ledgerAuthoritativeCommitMs":0},"nextAction":"Inspect the bounded repository paths, synthesize exact files or anchored_edits, and call /mission/execute again automatically with this same missionId without another owner prompt or workflow switch.","receiptRef":{"mode":"full","missionId":"a8ec4327-4d21-40e7-b291-4dfd8e3de55c"},"performance":null,"deploymentId":null,"releaseState":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","pendingProofKinds":[],"verificationState":null,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":6143,"likelyAffectedFiles":["src/pages/SelectTenant.tsx","src/lib/godmodeAccess.ts","src/contexts/MultiTenantContext.tsx","src/pages/connections/TenantConnections.tsx","supabase/functions/tenant-provider-connections/index.ts","supabase/functions/upsert-tenant-provider-secret/index.ts","src/__tests__/contracts/godmode-role-projection.contract.test.ts","src/__tests__/tenant-connections-standard.contract.test.ts"],"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true,"requestContractState":"pending"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-02T16:12:07.910182+00:00","proof_gate":"repair_mission_synthesis_ready","source_sha":null,"external_id":null,"receipt_type":"execute_mission","idempotency_key":"mission:a8ec4327-4d21-40e7-b291-4dfd8e3de55c:execute_mission:repair_mission_synthesis_ready:current-generation","mission_step_id":"7a3e4e68-d97b-4bae-8e5d-d66d632a42dd","command_center_event_id":"a8ec4327-4d21-40e7-b291-4dfd8e3de55c"},{"id":"be0ab413-ebfa-47ea-9599-1c5119f704ac","source":"cc-execution","status":"blocked","payload":{"ok":false,"jobId":null,"phase":"implementation","branch":"ai/visual-witness-implement-and-prove-an-explicit-k","reason":"anchored_edits resolution failed","status":"blocked","metrics":{"receiptBytes":1727,"releaseCount":0,"toolCallCount":1,"repeatedCallCount":0,"ownerInterruptionCount":0},"version":"1.31.26-direct-route-visual-intent","prNumber":null,"terminal":false,"missionId":"a27cd572-38aa-45dc-9e1a-a4259edf8eab","operation":"execute_mission","proofGate":"repair_mission_execution_blocked","sourceSha":null,"timingsMs":null,"nextAction":null,"receiptRef":{"mode":"full","missionId":"a27cd572-38aa-45dc-9e1a-a4259edf8eab"},"performance":null,"deploymentId":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":462,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true},"tenant_id":"a2929648-19db-46c8-9e93-07378ed1aa5f","created_at":"2026-08-09T13:58:02.512624+00:00","proof_gate":"repair_mission_execution_blocked","source_sha":null,"external_id":null,"receipt_type":"execute_mission","idempotency_key":"mission:a27cd572-38aa-45dc-9e1a-a4259edf8eab:execute_mission:repair_mission_execution_blocked","mission_step_id":"79d5237b-cfc5-45e6-9bee-08c1f3d8d1f7","command_center_event_id":"a27cd572-38aa-45dc-9e1a-a4259edf8eab"},{"id":"be0adf27-73af-4dcb-a498-2a58f1d02944","source":"cc-execution","status":"waiting_for_gate","payload":{"ok":true,"jobId":null,"phase":"pull_request","branch":"ai/objective-first-repair-c0df4bef6af3","reason":"pull_request_checks_pending","status":"waiting_for_gate","metrics":{"receiptBytes":130583,"releaseCount":0,"toolCallCount":63,"repeatedCallCount":56,"executorlessWaitMs":568849,"firstUsefulResultAt":"2026-10-06T16:45:56.962Z","recoveryAttemptCount":42,"ownerInterruptionCount":0},"version":null,"prNumber":5210,"terminal":false,"missionId":"c0df4bef-6af3-4c61-b7d1-75a7eef21c95","operation":"automatic_mission_resume","proofGate":"repair_mission_waiting_for_gate","sourceSha":null,"timingsMs":{"prReadinessMs":4000,"approvedPlanMs":0,"shipAndProveMs":0,"repositoryMutationMs":0,"repositoryProviderMs":0,"repositoryAtomicCommitMs":0,"repositoryBranchCreateMs":0,"repositoryPullRequestCreateMs":0},"nextAction":"Reconcile this same mission and pull request after the exact-head KnockLaunch Gate changes state.","receiptRef":{"mode":"full","missionId":"c0df4bef-6af3-4c61-b7d1-75a7eef21c95"},"performance":null,"deploymentId":null,"releaseState":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","pendingProofKinds":[],"verificationState":null,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":1006,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true,"requestContractState":"pending"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-06T16:53:36.536097+00:00","proof_gate":"repair_mission_waiting_for_gate","source_sha":null,"external_id":"5210","receipt_type":"automatic_mission_resume","idempotency_key":"mission:c0df4bef-6af3-4c61-b7d1-75a7eef21c95:automatic-mission-resume:5210:repair_mission_waiting_for_gate","mission_step_id":"e88906aa-0d8d-4755-8bfc-7ecbe6cf8d0d","command_center_event_id":"c0df4bef-6af3-4c61-b7d1-75a7eef21c95"},{"id":"be0ca484-9765-4181-ad2e-f11bca688e8a","source":"cc-execution","status":"synthesis_required","payload":{"ok":true,"jobId":null,"phase":"pull_request","branch":"ai/fix-witness-tenant-projection-20260823","reason":null,"status":"synthesis_required","metrics":{"receiptBytes":2777,"releaseCount":0,"toolCallCount":2,"repeatedCallCount":0,"ownerInterruptionCount":0},"version":"1.50.16-onrunner-release-ownership","prNumber":null,"terminal":false,"missionId":"f4d27963-466c-4245-96c4-207badfd984a","operation":"execute_mission","proofGate":"repair_mission_synthesis_ready","sourceSha":null,"timingsMs":null,"nextAction":"Inspect the bounded repository paths, synthesize exact files or anchored_edits, and call /mission/execute again automatically with this same missionId without another owner prompt or workflow switch.","receiptRef":{"mode":"full","missionId":"f4d27963-466c-4245-96c4-207badfd984a"},"performance":null,"deploymentId":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":7594,"likelyAffectedFiles":["scripts/visual-witness-hosted-runner/src/universal-witness.mjs","scripts/visual-witness-hosted-runner/src/projection-storage-contract.mjs","scripts/visual-witness-hosted-runner/src/projection-storage-contract.test.mjs"],"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-08-23T21:59:03.530388+00:00","proof_gate":"repair_mission_synthesis_ready","source_sha":null,"external_id":null,"receipt_type":"execute_mission","idempotency_key":"mission:f4d27963-466c-4245-96c4-207badfd984a:execute_mission:repair_mission_synthesis_ready","mission_step_id":"81ee7553-0b94-4ef0-a46f-1e961281a126","command_center_event_id":"f4d27963-466c-4245-96c4-207badfd984a"},{"id":"be111971-d708-4959-b010-8cef18d3d46f","source":"forgejo-runtime","status":"pending","payload":{"failed":[],"states":{"forgejo-main/source":"success","release-targets/detection":"pending"},"mainSha":"196fd6980e546295f0c9a1d1c9247e47050d15e4","missing":[],"pending":["release-targets/detection"],"required":["forgejo-main/source","release-targets/detection"],"sourceSha":"196fd6980e546295f0c9a1d1c9247e47050d15e4","releaseState":"pending","sourceInMain":true,"compareStatus":"protected_main_push_exact_source","releaseTargets":null,"releaseTargetStates":{},"requestContractHash":"716007d3dd2a30e4b23e6eefaf4544795666bcf7cc4ca51ae6548cfbaddafd82","forgejoWorkflowProof":null,"releaseSourceVerified":true,"ccExecutionRuntimeProof":null,"releaseTargetRecoveryProof":null,"exactReleaseVerifiedAfterMainAdvanced":false},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-06T15:45:56.603158+00:00","proof_gate":"canonical_release_pending","source_sha":"196fd6980e546295f0c9a1d1c9247e47050d15e4","external_id":null,"receipt_type":"canonical_release_status","idempotency_key":"mission:729b5f56-ebf6-4e8a-a5fa-2c8727304b66:forgejo-release-status:196fd6980e546295f0c9a1d1c9247e47050d15e4:pending:forgejo-main/source=success|release-targets/detection=pending","mission_step_id":"fba04c14-55ce-4bc3-a830-61a480fcb047","command_center_event_id":"729b5f56-ebf6-4e8a-a5fa-2c8727304b66"},{"id":"be1195f0-f83e-4903-9df7-4106e70191ea","source":"cc-execution","status":"waiting","payload":{"body":{"ship":true,"files":[],"branch":"ai/objective-first-repair-e2c4e5d0d3d4","writes":[],"patches":[],"version":1,"approved":true,"missionId":"e2c4e5d0-d3d4-430f-a887-4f7105fc6751","objective":"Owner directive: \"Unfreeze the control plane for this optimization, then refreeze and lock it down when it is live and proven.\" Explicitly modify exactly .forgejo/workflows/knocklaunch.yml and config/control-plane-capabilities.json to remove the proven physical Gate startup tax from unused remote Forgejo action helpers; enforce at most two external action helpers in the physical Gate; preserve hard-safety checks, exact-head/live-main proof, domain-scoped QA, one canonical Gate/release authority, exact validated frontend artifact promotion, and parallel unrelated PR Gates. Encode targets: non-frontend physical Gate <=8s, routine UI Gate <=10s, UI merge-to-live <=15s, scoped backend/control-plane Gate <=20s, scoped release <=25s. Advance the freeze identity and leave controlPlaneFrozen=true when live and proven. No Visual Witness.","repository":"noel/KnockLaunchOS","ownerApproved":true,"releaseIntent":null,"sourceTargets":[".forgejo/workflows/knocklaunch.yml","config/control-plane-capabilities.json"],"anchored_edits":[{"path":".forgejo/workflows/knocklaunch.yml","anchor":"      - name: Restore reusable frontend QA evidence\n        if: ${{ steps.gate-preclassify.outputs.frontend_toolchain == 'true' }}\n        id: gate-frontend-qa-evidence-restore\n        uses: https://data.forgejo.org/actions/cache/restore@v4\n        with:\n          path: .knocklaunch-gate-cache/frontend-qa-evidence\n          key: ${{ steps.gate-frontend-qa-evidence-key.outputs.key }}\n\n","replacement":""},{"path":".forgejo/workflows/knocklaunch.yml","anchor":"          FRONTEND_QA_EVIDENCE_HIT: ${{ steps.gate-frontend-qa-evidence-restore.outputs.cache-hit }}","replacement":"          FRONTEND_QA_EVIDENCE_HIT: 'false'"},{"path":".forgejo/workflows/knocklaunch.yml","anchor":"      - name: Save reusable frontend QA evidence before final main freshness verdict\n        if: ${{ steps.validate.outputs.frontend_qa_evidence_save == 'true' }}\n        continue-on-error: true\n        uses: https://data.forgejo.org/actions/cache/save@v4\n        with:\n          path: .knocklaunch-gate-cache/frontend-qa-evidence\n          key: ${{ steps.gate-frontend-qa-evidence-key.outputs.key }}\n\n","replacement":""},{"path":".forgejo/workflows/knocklaunch.yml","anchor":"      - name: Upload exact-head TypeScript incremental artifact\n        if: ${{ steps.validate.outputs.typescript_cache_save == 'true' }}\n        continue-on-error: true\n        uses: https://data.forgejo.org/actions/upload-artifact@v3\n        with:\n          name: ${{ steps.gate-ts-cache-key.outputs.head_artifact }}\n          path: .knocklaunch-gate-cache/tsconfig.app.native-ts7.tsbuildinfo\n          if-no-files-found: error\n          retention-days: 14\n\n","replacement":""},{"path":".forgejo/workflows/knocklaunch.yml","anchor":"      - name: Save exact validated frontend artifact to promotion cache\n        id: frontend_artifact_cache_save\n        if: ${{ steps.validate.outputs.frontend_artifact_save == 'true' }}\n        continue-on-error: true\n        uses: https://data.forgejo.org/actions/cache/save@v4\n        with:\n          path: |\n            dist\n            .knocklaunch-frontend-artifact/manifest.json\n          key: ${{ steps.gate-frontend-artifact-key.outputs.key }}\n\n","replacement":""},{"path":".forgejo/workflows/knocklaunch.yml","anchor":"          const gate = section('gate', 'release-cc-execution');\n          const gateHeader = gate.slice(0, gate.indexOf('    steps:'));\n          const frontend = section('release-frontend', 'release-migrations');","replacement":"          const gate = section('gate', 'release-cc-execution');\n          const gateHeader = gate.slice(0, gate.indexOf('    steps:'));\n          const frontend = section('release-frontend', 'release-migrations');\n          const remoteGateActions = [...gate.matchAll(/uses:\\s*https:\\/\\/data\\.forgejo\\.org\\/actions\\//g)];\n          if (remoteGateActions.length > 2) throw new Error(`Gate external action startup budget exceeded: ${remoteGateActions.length} > 2`);\n          if (gate.includes('actions/cache/restore@') || gate.includes('actions/cache/save@')) throw new Error('Gate must not split cache restore/save into separate remote action helpers');\n          if (gate.includes('name: Upload exact-head TypeScript incremental artifact')) throw new Error('Gate must not pay a dedicated remote upload helper for TypeScript buildinfo');\n          if (gate.includes('name: Save exact validated frontend artifact to promotion cache')) throw new Error('Gate must not pay a redundant remote promotion-cache helper when the exact cross-ref artifact is authoritative');"},{"path":"config/control-plane-capabilities.json","anchor":"    \"gateCacheSavePolicy\": \"one_combined_exact_dependency_cache_action_per_gate_legacy_exact_restore_key_allowed_current_exact_key_saved_by_post_step_typescript_cache_saved_after_each_successful_frontend_gate_by_semantic_input_key\",","replacement":"    \"gateCacheSavePolicy\": \"one_exact_dependency_cache_action_per_physical_gate_no_separate_remote_qa_evidence_restore_or_save_helpers_cross_ref_frontend_promotion_uses_one_exact_repository_visible_artifact\","},{"path":"config/control-plane-capabilities.json","anchor":"    \"gateTypeScriptIncrementalCachePolicy\": \"forgejo_repository_visible_artifact_native_ts7_tsbuildinfo_exact_compiler_manifest_tsconfig_base_src_tree_restore_exact_head_src_tree_publish_cross_pr_visible_current_source_graph_incrementally_revalidated_poisoned_buildinfo_deleted_on_failure\",","replacement":"    \"gateTypeScriptIncrementalCachePolicy\": \"no_dedicated_remote_upload_helper_on_gate_hot_path_exact_source_graph_is_revalidated_from_locked_dependencies_and_any_local_incremental_state_is_disposable_poisoned_buildinfo_deleted_on_failure\","},{"path":"config/control-plane-capabilities.json","anchor":"    \"frontendGateArtifactPromotionCachePolicy\": \"same_ref_actions_cache_opportunistic_cross_ref_repository_artifact_is_single_compressed_tgz_payload_exact_source_tree_browser_public_build_inputs_and_dist_integrity_manifest_required_prior_unpacked_server_artifact_read_compatible_exact_source_rebuild_final_fallback\",","replacement":"    \"frontendGateArtifactPromotionCachePolicy\": \"cross_ref_repository_artifact_is_primary_single_compressed_tgz_payload_exact_source_tree_browser_public_build_inputs_and_dist_integrity_manifest_required_no_redundant_pull_request_cache_save_exact_source_rebuild_final_fallback\","},{"path":"config/control-plane-capabilities.json","anchor":"    \"automaticMergeExactGreenTargetMs\": 2000,","replacement":"    \"automaticMergeExactGreenTargetMs\": 2000,\n    \"routineNonFrontendPhysicalGateTargetMs\": 8000,\n    \"routineFrontendGateTargetMs\": 10000,\n    \"routineFrontendMergeToLiveTargetMs\": 15000,\n    \"routineScopedBackendControlPlaneGateTargetMs\": 20000,\n    \"routineScopedBackendControlPlaneReleaseTargetMs\": 25000,\n    \"gateRemoteExternalActionRefsMax\": 2,\n    \"gateRemoteExternalActionBudgetPolicy\": \"physical_gate_may_resolve_at_most_two_external_action_helpers_dependency_cache_plus_exact_frontend_artifact_upload_all_other_gate_evidence_uses_local_or_direct_authenticated_paths\","},{"path":"config/control-plane-capabilities.json","anchor":"    \"controlPlaneFreezeVersion\": \"1.58.94-release-machinery-hardening-refreeze\",","replacement":"    \"controlPlaneFreezeVersion\": \"1.65.4-seconds-class-delivery-hardening-refreeze\","}],"implementation":{"files":[],"writes":[]},"requestContract":{"source":"current_owner_request","version":1,"explicit":true,"outcomes":[{"id":"optimize-refreeze","statement":"Modify the exact two control-plane files, ship the hot-path optimization, prove it live, and leave the control plane refrozen.","proofConditionIds":["runtime-proof"]}],"objective":"Owner directive: \"Unfreeze the control plane for this optimization, then refreeze and lock it down when it is live and proven.\" Explicitly modify exactly .forgejo/workflows/knocklaunch.yml and config/control-plane-capabilities.json to remove the proven physical Gate startup tax from unused remote Forgejo action helpers; enforce at most two external action helpers in the physical Gate; preserve hard-safety checks, exact-head/live-main proof, domain-scoped QA, one canonical Gate/release authority, exact validated frontend artifact promotion, and parallel unrelated PR Gates. Encode targets: non-frontend physical Gate <=8s, routine UI Gate <=10s, UI merge-to-live <=15s, scoped backend/control-plane Gate <=20s, scoped release <=25s. Advance the freeze identity and leave controlPlaneFrozen=true when live and proven. No Visual Witness.","constraints":[{"id":"owner-unfreeze","statement":"The owner explicitly authorizes unfreezing the control plane for this optimization.","proofConditionIds":["runtime-proof"]},{"id":"exact-scope","statement":"Only .forgejo/workflows/knocklaunch.yml and config/control-plane-capabilities.json may be modified.","proofConditionIds":["runtime-proof"]},{"id":"hard-safety","statement":"Hard safety checks may never be skipped or weakened.","proofConditionIds":["runtime-proof"]},{"id":"refreeze","statement":"The control plane must be refrozen and locked down when the optimization is live and proven.","proofConditionIds":["runtime-proof"]}],"proofConditions":[{"id":"runtime-proof","kind":"runtime","claim":"The optimized Gate/release machinery is live, timing is proven, and the control plane is refrozen at the new production source.","required":true}]},"repairGeneration":null,"executionEnvelope":{"ship":true,"version":1,"approved":true,"missionId":null,"ownerApproved":true,"releaseIntent":null,"sourceTargets":[".forgejo/workflows/knocklaunch.yml","config/control-plane-capabilities.json"],"requestContract":{"source":"current_owner_request","version":1,"explicit":true,"outcomes":[{"id":"optimize-refreeze","statement":"Modify the exact two control-plane files, ship the hot-path optimization, prove it live, and leave the control plane refrozen.","proofConditionIds":["runtime-proof"]}],"objective":"Owner directive: \"Unfreeze the control plane for this optimization, then refreeze and lock it down when it is live and proven.\" Explicitly modify exactly .forgejo/workflows/knocklaunch.yml and config/control-plane-capabilities.json to remove the proven physical Gate startup tax from unused remote Forgejo action helpers; enforce at most two external action helpers in the physical Gate; preserve hard-safety checks, exact-head/live-main proof, domain-scoped QA, one canonical Gate/release authority, exact validated frontend artifact promotion, and parallel unrelated PR Gates. Encode targets: non-frontend physical Gate <=8s, routine UI Gate <=10s, UI merge-to-live <=15s, scoped backend/control-plane Gate <=20s, scoped release <=25s. Advance the freeze identity and leave controlPlaneFrozen=true when live and proven. No Visual Witness.","constraints":[{"id":"owner-unfreeze","statement":"The owner explicitly authorizes unfreezing the control plane for this optimization.","proofConditionIds":["runtime-proof"]},{"id":"exact-scope","statement":"Only .forgejo/workflows/knocklaunch.yml and config/control-plane-capabilities.json may be modified.","proofConditionIds":["runtime-proof"]},{"id":"hard-safety","statement":"Hard safety checks may never be skipped or weakened.","proofConditionIds":["runtime-proof"]},{"id":"refreeze","statement":"The control plane must be refrozen and locked down when the optimization is live and proven.","proofConditionIds":["runtime-proof"]}],"proofConditions":[{"id":"runtime-proof","kind":"runtime","claim":"The optimized Gate/release machinery is live, timing is proven, and the control plane is refrozen at the new production source.","required":true}]},"repairGeneration":null,"proofRequirements":null,"controlPlaneUnfreeze":true,"controlPlaneMaintenance":true,"controlPlaneMaintenancePaths":[".forgejo/workflows/knocklaunch.yml","config/control-plane-capabilities.json"],"controlPlaneMaintenanceReason":"Owner explicitly authorized unfreezing for this exact optimization and required refreeze after live proof."},"proofRequirements":null,"controlPlaneUnfreeze":true,"durableMutationResume":true,"controlPlaneMaintenance":true,"controlPlaneMaintenancePaths":[".forgejo/workflows/knocklaunch.yml","config/control-plane-capabilities.json"],"controlPlaneMaintenanceReason":"Owner explicitly authorized unfreezing for this exact optimization and required refreeze after live proof."},"recovery":false,"fingerprint":"566fd64c58caa4e70681b26005f2cbf8e2d83f5b03f3a450e5e848ec7b11b04a","replayCount":0,"serializedBytes":12683},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-05T21:03:42.035328+00:00","proof_gate":"repository_mutation_intent_persisted","source_sha":null,"external_id":null,"receipt_type":"repository_mutation_intent","idempotency_key":"mission:e2c4e5d0-d3d4-430f-a887-4f7105fc6751:repository-mutation-intent:566fd64c58caa4e70681b26005f2cbf8e2d83f5b03f3a450e5e848ec7b11b04a:0","mission_step_id":"a92a3d7a-0f7a-4698-97cc-0b9196f07426","command_center_event_id":"e2c4e5d0-d3d4-430f-a887-4f7105fc6751"},{"id":"be12c660-91a1-4b7e-84ee-e19d123e12bc","source":"cc-execution","status":"recorded","payload":{"objective":"Mount the real Cafe QSR storefront","tenantRef":"69c86c8d-c737-439a-8f30-3246af0b3ad1","receivedAt":"2026-08-18T14:01:25.335Z","fingerprint":"e48afa9c4e34f49328a08989a6cc2260b22d10ecd90d5c918b3cc6c46188197c","workstreamRef":"69c86c8dc737439a8f303246af0b3ad1","conversationId":null,"canonicalBranch":"ai/cafe-qsr-template-20260817","requestedBranch":"ai/cafe-qsr-public-route-mount-fix-20260818","conversationContext":null},"tenant_id":"69c86c8d-c737-439a-8f30-3246af0b3ad1","created_at":"2026-08-18T14:01:26.011433+00:00","proof_gate":"tenant_workstream_contribution_recorded","source_sha":null,"external_id":null,"receipt_type":"tenant_workstream_contribution","idempotency_key":"mission:2e6daddd-a84f-4378-9db4-490413fefbaf:tenant-workstream-contribution:e48afa9c4e34f49328a08989a6cc2260b22d10ecd90d5c918b3cc6c46188197c","mission_step_id":"5fc7bd8f-209e-40d8-a005-28fd03f16f7c","command_center_event_id":"2e6daddd-a84f-4378-9db4-490413fefbaf"},{"id":"be167a24-6e62-4c1a-be52-bdb1ebb980b0","source":"cc-execution","status":"synthesis_required","payload":{"ok":true,"jobId":null,"phase":"reasoning_required","branch":"ai/objective-first-repair-ef8ef070365b","reason":null,"status":"synthesis_required","metrics":{"receiptBytes":7524,"releaseCount":0,"toolCallCount":4,"repeatedCallCount":2,"executorlessWaitMs":92977,"firstUsefulResultAt":"2026-10-03T02:19:32.561Z","recoveryAttemptCount":0,"ownerInterruptionCount":0},"version":"1.64.68-paul-web-acquisition","prNumber":null,"terminal":false,"missionId":"ef8ef070-365b-46fc-95e1-22c35fb886dc","operation":"execute_mission","proofGate":"repair_mission_synthesis_ready","sourceSha":null,"timingsMs":{"gateMs":0,"proofMs":0,"handlerMs":1179,"releaseMs":0,"mutationMs":0,"repositoryMs":0,"missionSetupMs":271,"providerAuthMs":0,"ledgerPrepareMs":271,"ledgerReconcileMs":0,"lineageReconcileMs":0,"resolvePreflightMs":271,"authoritativeLedgerMs":0,"ledgerAsyncDispatchMs":0,"totalSynchronousLedgerMs":271,"asyncBookkeepingDispatchMs":0,"ledgerAuthoritativeCommitMs":0},"nextAction":"Inspect the bounded repository paths, synthesize exact files or anchored_edits, and call /mission/execute again automatically with this same missionId without another owner prompt or workflow switch.","receiptRef":{"mode":"full","missionId":"ef8ef070-365b-46fc-95e1-22c35fb886dc"},"performance":null,"deploymentId":null,"releaseState":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","pendingProofKinds":["runtime"],"verificationState":null,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":3783,"likelyAffectedFiles":["src/pages/settings/TenantSettingsPageWithWebsiteAssets.tsx","src/shells/modesTenantShell.ts","src/shells/TenantModesShell.tsx","supabase/functions/tenant-media-library/index.ts"],"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true,"requestContractState":"pending"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-03T02:19:32.601542+00:00","proof_gate":"repair_mission_synthesis_ready","source_sha":null,"external_id":null,"receipt_type":"execute_mission","idempotency_key":"mission:ef8ef070-365b-46fc-95e1-22c35fb886dc:execute_mission:repair_mission_synthesis_ready:current-generation","mission_step_id":"22779fa6-7ea3-464e-8e9f-e3a32d2a9ccb","command_center_event_id":"ef8ef070-365b-46fc-95e1-22c35fb886dc"},{"id":"be172822-8728-4d08-bddb-86091b551888","source":"forgejo-runtime","status":"pending","payload":{"failed":[],"states":{"forgejo-main/source":"success","forgejo-release/workflow":"pending","cc-execution/runtime-proof":"pending"},"mainSha":"7301a14c6514c0afe36b1da3c9c6cd88437ee69b","missing":[],"pending":["forgejo-release/workflow","cc-execution/runtime-proof"],"required":["forgejo-main/source","forgejo-release/workflow","cc-execution/runtime-proof"],"sourceSha":"7301a14c6514c0afe36b1da3c9c6cd88437ee69b","releaseState":"pending","sourceInMain":true,"compareStatus":"identical","releaseTargets":{"frontend":false,"migrations":false,"ccExecution":true,"supabaseEdge":false,"edgeFunctionSlugs":[]},"releaseTargetStates":{"ccExecution":"pending"},"requestContractHash":"91032a7b51d61b72bff55a571c0027448a3404b286b19bb0f110e0ce57593d76","forgejoWorkflowProof":{"url":"https://git.knocklaunch.app/noel/KnockLaunchOS/actions/runs/13057","runId":13057,"status":"waiting","sourceSha":"7301a14c6514c0afe36b1da3c9c6cd88437ee69b","conclusion":null,"failedJobs":[],"diagnostics":null,"exactSource":true,"targetStates":{"ccExecution":"pending"},"targetJobCount":6,"observedTargetStates":{"ccExecution":"pending"}},"releaseSourceVerified":true,"ccExecutionRuntimeProof":{"liveSha":"4ff2a40642a621384920e97dcc7a8d93eb519eeb","deploymentId":"forgejo-main-4ff2a40642a621384920e97dcc7a8d93eb519eeb","compareStatus":null,"identitySource":"local_build_metadata","runtimeVersion":"1.64.0-platform-sidekick-intelligence","containsSourceSha":false},"releaseTargetRecoveryProof":null,"exactReleaseVerifiedAfterMainAdvanced":false},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-29T14:46:19.033088+00:00","proof_gate":"canonical_release_pending","source_sha":"7301a14c6514c0afe36b1da3c9c6cd88437ee69b","external_id":"forgejo-main-7301a14c6514","receipt_type":"canonical_release_status","idempotency_key":"mission:12978616-8236-42a0-bff7-69f525cf900b:forgejo-release-status:7301a14c6514c0afe36b1da3c9c6cd88437ee69b:pending:forgejo-main/source=success|forgejo-release/workflow=pending|cc-execution/runtime-proof=pending","mission_step_id":"ba25a0fd-471c-4413-ab6e-587eb21c6430","command_center_event_id":"12978616-8236-42a0-bff7-69f525cf900b"},{"id":"be183252-feb6-4f65-b62d-28ef10ca5358","source":"durable-mission-ledger","status":"verified","payload":{"sourceSha":"f7aee76a8d02233c805bf437f7f6cec803fb6cb7","requestContractProof":{"legacy":false,"present":true,"outcomes":[{"id":"bootstrap","satisfied":true,"statement":"A pre-feature runtime 403 from the new intent transport remains visible but no longer invalidates an otherwise green Gate.","proofConditionIds":["repo","gate"]},{"id":"architecture","satisfied":true,"statement":"The second notifier job stays removed and the 1.58.43 handler remains the independent green-verification owner.","proofConditionIds":["repo","runtime"]},{"id":"proof","satisfied":true,"statement":"Post-deploy proof against live 1.58.43 must show successful intent-driven auto-progression without notifier job.","proofConditionIds":["benchmark"]},{"id":"refreeze","satisfied":true,"statement":"Control plane refrozen after proof.","proofConditionIds":["refrozen"]}],"satisfied":true,"constraints":[{"id":"safety","satisfied":true,"statement":"The intent script still exits nonzero on non-2xx, recovery supervisor remains fallback, and no running Gate self-certifies green.","proofConditionIds":["repo","gate","runtime"]}],"contractHash":"589557aecba1d5e4f4d1e6f5a6950c056da077da9c68fd38cfe2b8db430f69ce","releaseBound":true,"witnessBound":false,"visualRequested":false,"visualSatisfied":true,"conditionResults":[{"id":"repo","kind":"repository","evidence":{"releaseState":"verified","releaseRequestContractHash":"589557aecba1d5e4f4d1e6f5a6950c056da077da9c68fd38cfe2b8db430f69ce"},"required":true,"satisfied":true},{"id":"gate","kind":"release","evidence":{"releaseState":"verified","activeReleaseTargets":["ccExecution"],"releaseRequestContractHash":"589557aecba1d5e4f4d1e6f5a6950c056da077da9c68fd38cfe2b8db430f69ce"},"required":true,"satisfied":true},{"id":"runtime","kind":"runtime","evidence":{"releaseState":"verified","activeReleaseTargets":["ccExecution"],"releaseRequestContractHash":"589557aecba1d5e4f4d1e6f5a6950c056da077da9c68fd38cfe2b8db430f69ce"},"required":true,"satisfied":true},{"id":"benchmark","kind":"release","evidence":{"releaseState":"verified","activeReleaseTargets":["ccExecution"],"releaseRequestContractHash":"589557aecba1d5e4f4d1e6f5a6950c056da077da9c68fd38cfe2b8db430f69ce"},"required":true,"satisfied":true},{"id":"refrozen","kind":"runtime","evidence":{"releaseState":"verified","activeReleaseTargets":["ccExecution"],"releaseRequestContractHash":"589557aecba1d5e4f4d1e6f5a6950c056da077da9c68fd38cfe2b8db430f69ce"},"required":true,"satisfied":true}],"validationErrors":[],"pendingProofKinds":[],"activeReleaseTargets":["ccExecution"]},"authoritativeMissionRefresh":true,"evaluatedRequestContractRevision":5},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-04T13:19:31.525097+00:00","proof_gate":"request_contract_terminal_verified","source_sha":"f7aee76a8d02233c805bf437f7f6cec803fb6cb7","external_id":null,"receipt_type":"request_contract_reconciliation","idempotency_key":"mission:cc66771b-8e30-4451-a87b-29b6419f9c8f:request-contract:589557aecba1d5e4f4d1e6f5a6950c056da077da9c68fd38cfe2b8db430f69ce:f7aee76a8d02233c805bf437f7f6cec803fb6cb7:verified:","mission_step_id":"04219198-7c15-4148-9f86-013e38fca28c","command_center_event_id":"cc66771b-8e30-4451-a87b-29b6419f9c8f"},{"id":"be18ca2c-1d5f-4659-9bb3-96fb16223358","source":"forgejo-runtime","status":"pending","payload":{"failed":[],"states":{"forgejo-main/source":"success","forgejo-release/workflow":"pending","frontend-cloudflare/live":"success","supabase-migrations/live":"success","supabase-edge-production/live":"pending"},"mainSha":"413252b1da211238f36322af3bf1dd554f41df71","missing":[],"pending":["forgejo-release/workflow","supabase-edge-production/live"],"required":["forgejo-main/source","forgejo-release/workflow","supabase-edge-production/live","frontend-cloudflare/live","supabase-migrations/live"],"sourceSha":"413252b1da211238f36322af3bf1dd554f41df71","releaseState":"pending","sourceInMain":true,"compareStatus":"protected_main_push_exact_source","releaseTargets":{"frontend":true,"migrations":true,"ccExecution":false,"supabaseEdge":true,"edgeFunctionSlugs":["marketing-campaign-dispatch"]},"releaseTargetStates":{"frontend":"success","migrations":"success","supabaseEdge":"pending"},"requestContractHash":"871b0e527d80b2d5508c4531af772fb480a3e7ceba16c4d39eae61a594deada7","forgejoWorkflowProof":{"runId":13844,"source":"signed_push_receipt","status":"running","results":{},"conclusion":"running","targetStates":{"frontend":"success","migrations":"success","supabaseEdge":"pending"},"targetJobCount":7,"observedTargetStates":{"frontend":"pending","migrations":"success","supabaseEdge":"pending"}},"releaseSourceVerified":true,"ccExecutionRuntimeProof":null,"releaseTargetRecoveryProof":null,"exactReleaseVerifiedAfterMainAdvanced":false},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-01T12:52:42.556116+00:00","proof_gate":"canonical_release_pending","source_sha":"413252b1da211238f36322af3bf1dd554f41df71","external_id":"forgejo-main-413252b1da21","receipt_type":"canonical_release_status","idempotency_key":"mission:e941883c-e08c-4d2b-ac54-4eeb4afee0b1:forgejo-release-status:413252b1da211238f36322af3bf1dd554f41df71:pending:forgejo-main/source=success|forgejo-release/workflow=pending|supabase-edge-production/live=pending|frontend-cloudflare/live=success|supabase-migrations/live=success","mission_step_id":"47f87b39-0db3-4086-a170-50d0f57b239f","command_center_event_id":"e941883c-e08c-4d2b-ac54-4eeb4afee0b1"},{"id":"be18f82a-6520-4f4e-bf7f-52f66f8b01eb","source":"cc-execution","status":"blocked","payload":{"reason":"control_plane_frozen_explicit_unfreeze_required","fingerprint":"8666ea370fe9c9c41be052a46b85aa5facb19bb93b7f39f33c5000ad1243187f"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-04T15:47:08.927544+00:00","proof_gate":"repository_mutation_intent_deterministic_failure","source_sha":null,"external_id":null,"receipt_type":"repository_mutation_intent_blocked","idempotency_key":"mission:63adcd7e-3f25-4473-b073-5216c0bb17dc:repository-mutation-intent-blocked:8666ea370fe9c9c41be052a46b85aa5facb19bb93b7f39f33c5000ad1243187f","mission_step_id":"0685eabf-6479-4530-a882-c13bee4f6e4d","command_center_event_id":"63adcd7e-3f25-4473-b073-5216c0bb17dc"},{"id":"be196f26-084e-46c6-a322-750ba194baf7","source":"cc-execution","status":"no_change","payload":{"ok":true,"jobId":null,"phase":"implementation","branch":"ai/objective-first-repair-850a73db30fe","reason":null,"status":"no_change","metrics":{"receiptBytes":10128,"releaseCount":0,"toolCallCount":6,"repeatedCallCount":1,"executorlessWaitMs":114343,"firstUsefulResultAt":"2026-10-03T21:18:50.219Z","recoveryAttemptCount":0,"ownerInterruptionCount":0},"version":"1.64.77-paul-heldout-repair","prNumber":null,"terminal":false,"missionId":"850a73db-30fe-47b2-9651-e2dff4f26843","operation":"execute_mission","proofGate":"repair_mission_prepared","sourceSha":null,"timingsMs":{"gateMs":0,"proofMs":0,"handlerMs":504,"releaseMs":0,"mutationMs":0,"repositoryMs":0,"missionSetupMs":255,"providerAuthMs":0,"ledgerPrepareMs":255,"ledgerReconcileMs":0,"lineageReconcileMs":0,"resolvePreflightMs":255,"authoritativeLedgerMs":0,"ledgerAsyncDispatchMs":0,"totalSynchronousLedgerMs":255,"asyncBookkeepingDispatchMs":0,"ledgerAuthoritativeCommitMs":0},"nextAction":"pull_request_required","receiptRef":{"mode":"full","missionId":"850a73db-30fe-47b2-9651-e2dff4f26843"},"performance":null,"deploymentId":null,"releaseState":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","pendingProofKinds":["repository","runtime"],"verificationState":null,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":1384,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true,"requestContractState":"pending"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-03T21:20:46.963368+00:00","proof_gate":"repair_mission_prepared","source_sha":null,"external_id":null,"receipt_type":"execute_mission","idempotency_key":"mission:850a73db-30fe-47b2-9651-e2dff4f26843:execute_mission:repair_mission_prepared:current-generation","mission_step_id":"1535e058-fa36-4acf-86ad-8b9049932923","command_center_event_id":"850a73db-30fe-47b2-9651-e2dff4f26843"},{"id":"be19859f-660c-4188-85af-3b3bd3e23c1c","source":"cc-execution","status":"retryable","payload":{"ok":false,"jobId":null,"phase":"release","branch":null,"reason":"github_auth_failed","status":"retryable","metrics":{"receiptBytes":977,"releaseCount":0,"toolCallCount":1,"repeatedCallCount":0,"ownerInterruptionCount":0},"version":"1.31.23-targeted-owner-preflight","prNumber":4384,"terminal":false,"missionId":"372257d1-8fc0-42c8-802f-85e25537db39","operation":"execute_mission","proofGate":"repair_mission_pr_ready_retryable","sourceSha":null,"timingsMs":null,"nextAction":"Reconcile this same mission and pull request automatically; do not create a replacement branch or PR.","receiptRef":{"mode":"full","missionId":"372257d1-8fc0-42c8-802f-85e25537db39"},"performance":null,"deploymentId":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":469,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true},"tenant_id":"fe5cc9d9-c2fe-4062-84c7-a334663cd63c","created_at":"2026-08-08T20:41:30.764272+00:00","proof_gate":"repair_mission_pr_ready_retryable","source_sha":null,"external_id":"4384","receipt_type":"execute_mission","idempotency_key":"mission:372257d1-8fc0-42c8-802f-85e25537db39:execute_mission:repair_mission_pr_ready_retryable","mission_step_id":"2d826cc4-6534-4195-af2d-6da3f8f7a5ee","command_center_event_id":"372257d1-8fc0-42c8-802f-85e25537db39"},{"id":"be19ab6d-99f7-42eb-8bdc-e2df1d65c387","source":"cc-execution","status":"source_resolution_required","payload":{"ok":true,"jobId":null,"phase":"pull_request","branch":"ai/objective-first-repair-43eb9b8cc50a","reason":null,"status":"source_resolution_required","metrics":{"receiptBytes":0,"releaseCount":0,"toolCallCount":0,"repeatedCallCount":0,"ownerInterruptionCount":0},"version":"1.58.90-mission-terminalization","prNumber":null,"terminal":false,"missionId":"43eb9b8c-c50a-4a2e-8ae8-b4ffe6cc3338","operation":"execute_mission","proofGate":"repair_mission_source_resolution_required","sourceSha":null,"timingsMs":{"gateMs":0,"proofMs":0,"handlerMs":112,"releaseMs":0,"mutationMs":0,"repositoryMs":0,"missionSetupMs":424,"providerAuthMs":0,"ledgerPrepareMs":306,"ledgerReconcileMs":0,"lineageReconcileMs":118,"resolvePreflightMs":424,"authoritativeLedgerMs":0,"ledgerAsyncDispatchMs":0,"totalSynchronousLedgerMs":306,"asyncBookkeepingDispatchMs":0,"ledgerAuthoritativeCommitMs":0},"nextAction":"Resolve bounded authoritative Forgejo source targets, then call /mission/execute again with this same missionId and exact files or anchored_edits. Do not switch workflows.","receiptRef":{"mode":"full","missionId":"43eb9b8c-c50a-4a2e-8ae8-b4ffe6cc3338"},"performance":null,"deploymentId":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":3282,"likelyAffectedFiles":[],"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-10T05:17:22.186625+00:00","proof_gate":"repair_mission_source_resolution_required","source_sha":null,"external_id":null,"receipt_type":"execute_mission","idempotency_key":"mission:43eb9b8c-c50a-4a2e-8ae8-b4ffe6cc3338:execute_mission:repair_mission_source_resolution_required:current-generation","mission_step_id":"e4a0dafb-8442-4706-a5d5-c4020c42960d","command_center_event_id":"43eb9b8c-c50a-4a2e-8ae8-b4ffe6cc3338"},{"id":"be19b03c-6bc5-46f6-a97a-afa649d40095","source":"durable-mission-ledger","status":"pending","payload":{"sourceSha":"78c897179420d7ef7228abc23b0f77e95c57b2a0","requestContractProof":{"legacy":false,"present":true,"outcomes":[{"id":"outcome-1","satisfied":false,"statement":"P0 PCG Create Submission routing repair. Live owner proof shows Create Submission from /pcg/dashboard?mode=submissions can eject the session into an unrelated tenant route such as /big-papis/owner/settings/media. Fix the exact post-create transition so a successful PCG submission remains inside the dedicated PcgAppShell, preserves the PCG tenant binding, and opens the newly created submission/card-intake surface where front/back card images can be uploaded. Never navigate to another tenant, last-used tenant, PrivateAppShell, or generic owner route. Preserve current receive-card form behavior and tenant isolation. Add focused regression coverage. Gate, squash merge, release affected owners, and visually prove the exact production Create Submission flow.","proofConditionIds":["proof-production","proof-visual"]}],"satisfied":false,"constraints":[{"id":"capability-completeness","satisfied":true,"statement":"Every dependency the implementation declares or relies on must be wired and proven across applicable frontend, backend/runtime, schema/data/storage, authentication/authorization, provider configuration, prerequisite/loading/empty/error states, release ownership, and live production behavior; owner-authorized unavailable dependencies must become explicit prerequisite states rather than runtime failures.","proofConditionIds":["proof-production"]},{"id":"atomic-capability-lifecycle","satisfied":true,"statement":"Changed capabilities remain non-active until dependency readiness, N/N-1 compatibility, affected-target release, and claim-matched production canary proof are satisfied; missing optional dependencies become prerequisite_required, and runtime drift or health-contract violation quarantines only the affected capability instead of breaking unrelated working capability.","proofConditionIds":["proof-production"]}],"contractHash":"511d58b3c2435915467dc7bf70686784cfc5d2cfc8252b401f20c7604c389b06","releaseBound":true,"witnessBound":false,"visualRequested":true,"visualSatisfied":false,"conditionResults":[{"id":"proof-production","kind":"runtime","evidence":{"reason":null,"satisfied":true,"releaseState":"verified","missingTargets":[],"disallowedTargets":[],"migrationRequired":false,"releaseTargetStates":{"frontend":"success"},"unsuccessfulTargets":[],"activeReleaseTargets":["frontend"],"allowedReleaseTargets":[],"requiredReleaseTargets":[],"migrationReleaseVerified":null,"releaseRequestContractHash":"511d58b3c2435915467dc7bf70686784cfc5d2cfc8252b401f20c7604c389b06"},"required":true,"satisfied":true},{"id":"proof-visual","kind":"visual","evidence":{"modeBound":true,"claimBound":false,"routeBound":false,"witnessMode":null,"witnessRoute":null,"currentSourceSha":"78c897179420d7ef7228abc23b0f77e95c57b2a0","witnessSourceSha":null,"verificationState":null,"witnessRequestContractHash":null},"required":true,"satisfied":false}],"validationErrors":[],"pendingProofKinds":["visual"],"activeReleaseTargets":["frontend"]},"authoritativeMissionRefresh":true,"evaluatedRequestContractRevision":1},"tenant_id":"9602e177-0cbb-496c-bdf5-2fbc93f1b859","created_at":"2026-10-04T13:24:36.127615+00:00","proof_gate":"request_contract_pending","source_sha":"78c897179420d7ef7228abc23b0f77e95c57b2a0","external_id":null,"receipt_type":"request_contract_reconciliation","idempotency_key":"mission:64e0593a-efa6-447d-8529-3acc58e28fd6:request-contract:511d58b3c2435915467dc7bf70686784cfc5d2cfc8252b401f20c7604c389b06:78c897179420d7ef7228abc23b0f77e95c57b2a0:pending:visual","mission_step_id":"4046b852-cb3e-4437-b209-f838dc6a34a3","command_center_event_id":"64e0593a-efa6-447d-8529-3acc58e28fd6"},{"id":"be1ad778-a737-4cdc-8881-61fc0d088717","source":"cc-execution","status":"blocked","payload":{"ok":false,"jobId":null,"phase":"implementation","branch":"ai/objective-first-repair-ad191708ce11","reason":"control_plane_maintenance_base_sha_mismatch","status":"blocked","metrics":{"receiptBytes":63667,"releaseCount":1,"toolCallCount":12,"repeatedCallCount":4,"executorlessWaitMs":1808036,"firstUsefulResultAt":"2026-09-30T18:49:48.862Z","recoveryAttemptCount":0,"ownerInterruptionCount":0},"version":"1.64.21-paul-present-tense-continuation","prNumber":null,"terminal":false,"missionId":"ad191708-ce11-43d0-bd1e-41cf5e6e9431","operation":"execute_mission","proofGate":"repair_mission_execution_blocked","sourceSha":"4b998244e15b439fb942afc1c12e6df3ed165911","timingsMs":{"gateMs":0,"proofMs":0,"handlerMs":179,"releaseMs":0,"mutationMs":0,"repositoryMs":0,"prReadinessMs":0,"approvedPlanMs":179,"missionSetupMs":390,"providerAuthMs":0,"shipAndProveMs":0,"ledgerPrepareMs":322,"ledgerReconcileMs":0,"lineageReconcileMs":68,"resolvePreflightMs":390,"repositoryMutationMs":0,"repositoryProviderMs":0,"authoritativeLedgerMs":0,"ledgerAsyncDispatchMs":0,"repositoryAtomicCommitMs":0,"repositoryBranchCreateMs":0,"totalSynchronousLedgerMs":322,"asyncBookkeepingDispatchMs":0,"ledgerAuthoritativeCommitMs":0,"repositoryPullRequestCreateMs":0},"nextAction":null,"receiptRef":{"mode":"full","missionId":"ad191708-ce11-43d0-bd1e-41cf5e6e9431"},"performance":null,"deploymentId":"forgejo-main-4b998244e15b","releaseState":null,"workflowRunId":13435,"releaseTargets":{"frontend":false,"migrations":false,"ccExecution":true,"supabaseEdge":false,"edgeFunctionSlugs":[]},"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","pendingProofKinds":["runtime"],"verificationState":null,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":1541,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true,"requestContractState":"pending"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-30T19:18:14.603211+00:00","proof_gate":"repair_mission_execution_blocked","source_sha":"4b998244e15b439fb942afc1c12e6df3ed165911","external_id":"forgejo-main-4b998244e15b","receipt_type":"execute_mission","idempotency_key":"mission:ad191708-ce11-43d0-bd1e-41cf5e6e9431:execute_mission:repair_mission_execution_blocked:current-generation","mission_step_id":"6f0191ce-1c8e-4bdb-b82e-f0ee9dc41baf","command_center_event_id":"ad191708-ce11-43d0-bd1e-41cf5e6e9431"},{"id":"be1bed51-487f-47da-b5cf-4a4b182be9ac","source":"cc-execution","status":"waiting_for_gate","payload":{"ok":true,"jobId":"f33fdb3b-73a8-4df8-a2f5-550eddbbbeca","phase":"pull_request","branch":"ai/visual-witness-firefox-retry-g8","reason":"fresh_pr_provider_receipt_already_proves_auto_progress_gate_notifier_owns_next_state","status":"waiting_for_gate","metrics":{"receiptBytes":0,"releaseCount":9,"toolCallCount":0,"repeatedCallCount":0,"ownerInterruptionCount":0},"version":"1.58.158-visual-witness-container-rollout","prNumber":2892,"terminal":false,"missionId":"25776a3e-f543-4fb8-921f-4747b7def5a8","operation":"execute_mission","proofGate":"repair_mission_fresh_pr_handed_off_to_gate","sourceSha":null,"timingsMs":{"gateMs":0,"proofMs":0,"handlerMs":12624,"releaseMs":0,"mutationMs":0,"repositoryMs":0,"prReadinessMs":0,"approvedPlanMs":0,"missionSetupMs":269,"providerAuthMs":0,"shipAndProveMs":0,"ledgerPrepareMs":269,"ledgerReconcileMs":0,"lineageReconcileMs":0,"resolvePreflightMs":269,"repositoryMutationMs":12624,"repositoryProviderMs":11111,"authoritativeLedgerMs":0,"ledgerAsyncDispatchMs":0,"repositoryAtomicCommitMs":4781,"repositoryBranchCreateMs":0,"totalSynchronousLedgerMs":269,"asyncBookkeepingDispatchMs":0,"ledgerAuthoritativeCommitMs":0,"repositoryPullRequestCreateMs":6330},"nextAction":"Canonical KnockLaunch Gate notifier and mission supervisor own progression from this exact PR head; do not synchronously poll Forgejo from the owner request.","receiptRef":{"mode":"full","missionId":"25776a3e-f543-4fb8-921f-4747b7def5a8"},"performance":null,"deploymentId":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":3304,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-16T06:26:43.581051+00:00","proof_gate":"repair_mission_fresh_pr_handed_off_to_gate","source_sha":null,"external_id":"f33fdb3b-73a8-4df8-a2f5-550eddbbbeca","receipt_type":"execute_mission","idempotency_key":"mission:25776a3e-f543-4fb8-921f-4747b7def5a8:execute_mission:repair_mission_fresh_pr_handed_off_to_gate:generation-8","mission_step_id":"12611830-4e24-47b0-8186-fe5b9970fd62","command_center_event_id":"25776a3e-f543-4fb8-921f-4747b7def5a8"},{"id":"be235534-bffc-45da-9e4c-6d8b25016e32","source":"cc-execution","status":"release_reconciliation_pending","payload":{"ok":true,"jobId":null,"phase":"pull_request","branch":"ai/objective-first-repair-3a33a7f6e8bd","reason":null,"status":"release_reconciliation_pending","metrics":{"receiptBytes":11504,"releaseCount":0,"toolCallCount":6,"repeatedCallCount":3,"executorlessWaitMs":180852,"firstUsefulResultAt":"2026-10-02T21:24:39.318Z","recoveryAttemptCount":0,"ownerInterruptionCount":0},"version":null,"prNumber":4533,"terminal":false,"missionId":"3a33a7f6-e8bd-40ca-92a9-65e1e94f241f","operation":"automatic_mission_resume","proofGate":"canonical_release_reconciliation_pending","sourceSha":"3b6fa3175433f553599b4ce105330026c98d771b","timingsMs":{"prReadinessMs":576,"approvedPlanMs":0,"shipAndProveMs":2927,"repositoryMutationMs":0,"repositoryProviderMs":0,"repositoryAtomicCommitMs":0,"repositoryBranchCreateMs":0,"repositoryPullRequestCreateMs":0},"nextAction":"reconcile_release","receiptRef":{"mode":"full","missionId":"3a33a7f6-e8bd-40ca-92a9-65e1e94f241f"},"performance":null,"deploymentId":"forgejo-main-3b6fa3175433","releaseState":null,"workflowRunId":null,"releaseTargets":{"frontend":true,"migrations":false,"ccExecution":false,"supabaseEdge":false,"edgeFunctionSlugs":[]},"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","pendingProofKinds":[],"verificationState":null,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":1801,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true,"requestContractState":"pending"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-02T21:27:47.964504+00:00","proof_gate":"canonical_release_reconciliation_pending","source_sha":null,"external_id":"4533","receipt_type":"automatic_mission_resume","idempotency_key":"mission:3a33a7f6-e8bd-40ca-92a9-65e1e94f241f:automatic-mission-resume:4533:canonical_release_reconciliation_pending","mission_step_id":"90f86d74-866a-4284-b29e-f5c8e7cd301a","command_center_event_id":"3a33a7f6-e8bd-40ca-92a9-65e1e94f241f"},{"id":"be24cbe9-2444-4e14-9065-0535e71d8f38","source":"cc-execution","status":"blocked","payload":{"ok":false,"jobId":null,"phase":"objective_received","branch":"ai/exact-green-bounded-latch-v2-20260904","reason":"anchored_edit_anchor_missing:config/control-plane-capabilities.json","status":"blocked","metrics":{"receiptBytes":0,"releaseCount":0,"toolCallCount":0,"repeatedCallCount":0,"ownerInterruptionCount":0},"version":"1.58.48-exact-green-auto-refresh-refreeze","prNumber":null,"terminal":false,"missionId":"e8d3985f-d85f-4265-9d18-a88e26cab116","operation":"execute_mission","proofGate":"repair_mission_execution_blocked","sourceSha":null,"timingsMs":{"gateMs":0,"proofMs":0,"handlerMs":1567,"releaseMs":0,"mutationMs":0,"repositoryMs":0,"prReadinessMs":0,"approvedPlanMs":0,"missionSetupMs":619,"providerAuthMs":0,"shipAndProveMs":0,"ledgerPrepareMs":619,"ledgerReconcileMs":0,"lineageReconcileMs":0,"resolvePreflightMs":619,"repositoryMutationMs":1567,"repositoryProviderMs":0,"authoritativeLedgerMs":0,"ledgerAsyncDispatchMs":0,"repositoryAtomicCommitMs":0,"repositoryBranchCreateMs":0,"totalSynchronousLedgerMs":619,"asyncBookkeepingDispatchMs":0,"ledgerAuthoritativeCommitMs":0,"repositoryPullRequestCreateMs":0},"nextAction":null,"receiptRef":{"mode":"full","missionId":"e8d3985f-d85f-4265-9d18-a88e26cab116"},"performance":null,"deploymentId":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":1517,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-04T13:55:33.734365+00:00","proof_gate":"repair_mission_execution_blocked","source_sha":null,"external_id":null,"receipt_type":"execute_mission","idempotency_key":"mission:e8d3985f-d85f-4265-9d18-a88e26cab116:execute_mission:repair_mission_execution_blocked:current-generation","mission_step_id":"25312c4c-8429-4806-a9cf-0f68bcc19dfe","command_center_event_id":"e8d3985f-d85f-4265-9d18-a88e26cab116"},{"id":"be263a6a-5525-4bbe-9d2c-45e8382f3cdc","source":"cc-execution","status":"recorded","payload":{"requestContract":{"valid":true,"intent":{"evidence":[],"confidence":null,"rawUtterance":"Unfreeze the control plane only for this bounded proof-kind correction on current main 5b5faac378335d272039a52560918dfda6d06674, apply the three exact edits, deploy cc-execution only, verify version 1.58.118-request-proof-kind-aware, then refreeze the control plane.","wordingChanged":false,"canonicalIntent":"Unfreeze the control plane only for this bounded proof-kind correction on current main 5b5faac378335d272039a52560918dfda6d06674, apply the three exact edits, deploy cc-execution only, verify version 1.58.118-request-proof-kind-aware, then refreeze the control plane.","resolutionStatus":"exact","uniqueResolution":true,"clarificationRequired":false},"source":"explicit","version":1,"outcomes":[{"id":"outcome-1","statement":"Runtime/release/scope migration-applied claims still infer migrations and fail closed when migrations is absent.","proofConditionIds":["proof-1","proof-2"]},{"id":"outcome-2","statement":"Repository proof prose that merely mentions/describes a migration regression does not implicitly require the migrations release target.","proofConditionIds":["proof-1","proof-2"]},{"id":"outcome-3","statement":"Production cc-execution runs 1.58.118-request-proof-kind-aware on the merged SHA and the control plane is frozen after deployment.","proofConditionIds":["proof-2"]}],"objective":"Unfreeze the control plane only for this bounded proof-kind correction on current main 5b5faac378335d272039a52560918dfda6d06674, apply the three exact edits, deploy cc-execution only, verify version 1.58.118-request-proof-kind-aware, then refreeze the control plane.","constraints":[{"id":"constraint-1","statement":"Preserve target-aware enforcement, release singleflight, queue-snapshot-first improvements, and legitimate edge-only missions.","proofConditionIds":["proof-1","proof-2"]},{"id":"constraint-2","statement":"No parallel verifier, release lane, mission ledger, tenant behavior change, or database mutation.","proofConditionIds":["proof-1"]},{"id":"constraint-3","statement":"One branch, one PR, one Gate, one squash merge, ccExecution-only release.","proofConditionIds":["proof-2"]}],"terminalPolicy":"all_required_proof_conditions_satisfied_after_live_release","proofConditions":[{"id":"proof-1","kind":"repository","claim":"Merged source and contract regression tests implement proof-kind-aware migration inference and preserve the original missing-migration runtime fail-closed case.","route":null,"roleRef":null,"userRef":null,"required":true,"expectedText":null,"targetedActions":[],"allowedReleaseTargets":["ccExecution"],"requiredReleaseTargets":[]},{"id":"proof-2","kind":"runtime","claim":"Production cc-execution runs version 1.58.118-request-proof-kind-aware on the merged SHA and the maintenance window is closed/frozen.","route":null,"roleRef":null,"userRef":null,"required":true,"expectedText":null,"targetedActions":[],"allowedReleaseTargets":["ccExecution"],"requiredReleaseTargets":["ccExecution"]}],"validationErrors":[]},"requestContractHash":"4ed783065b300e019eab6d8454d3b07133adf3a5420223b6ecc0517d8e2b8fe3","requestContractRevision":3,"previousRequestContractHash":"636f864cde2692e7e70680f38f07494fbd6eb34243b26ed0e4b9a968349c5db6"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-12T01:32:47.459403+00:00","proof_gate":"request_contract_revision_recorded","source_sha":null,"external_id":null,"receipt_type":"request_contract_revision","idempotency_key":"mission:11a7db98-6a2a-4928-ae51-603014ea7da5:request-contract:4ed783065b300e019eab6d8454d3b07133adf3a5420223b6ecc0517d8e2b8fe3","mission_step_id":"bee2031a-4ead-40b5-875d-e8aa4912cab8","command_center_event_id":"11a7db98-6a2a-4928-ae51-603014ea7da5"},{"id":"be274ac5-6e49-4d9e-8e8f-ce178bdb9d65","source":"cc-execution","status":"recorded","payload":{"requestContract":{"valid":true,"intent":{"evidence":[],"confidence":null,"rawUtterance":"Apply the exact single-file Restore Points owner-facing copy update from current main. Change only src/pages/admin/GodModeRestorePoints.tsx. Preserve all existing admin action names and explicit RESTORE confirmation. Continue through one PR, Gate, squash merge, frontend release, and production proof.","wordingChanged":false,"canonicalIntent":"Apply the exact single-file Restore Points owner-facing copy update from current main. Change only src/pages/admin/GodModeRestorePoints.tsx. Preserve all existing admin action names and explicit RESTORE confirmation. Continue through one PR, Gate, squash merge, frontend release, and production proof.","resolutionStatus":"exact","uniqueResolution":true,"clarificationRequired":false},"source":"explicit","version":1,"outcomes":[{"id":"human-primary-copy","statement":"Restore Points primary UI explains saved state, timing, readiness, purpose, impact, and preserved data in plain owner-facing language without leading with repository/runtime identifiers.","proofConditionIds":["repository-proof","production-proof"]},{"id":"technical-secondary","statement":"Engineering identifiers and mechanics remain available only inside Technical details disclosures for troubleshooting.","proofConditionIds":["repository-proof","production-proof"]},{"id":"safe-review","statement":"Review and restore confirmation remain non-destructive until explicit RESTORE confirmation and existing backend execution behavior is preserved.","proofConditionIds":["repository-proof"]}],"objective":"Apply the exact single-file Restore Points owner-facing copy update from current main. Change only src/pages/admin/GodModeRestorePoints.tsx. Preserve all existing admin action names and explicit RESTORE confirmation. Continue through one PR, Gate, squash merge, frontend release, and production proof.","constraints":[{"id":"frontend-only","statement":"Change only src/pages/admin/GodModeRestorePoints.tsx.","proofConditionIds":["repository-proof"]},{"id":"no-contract-change","statement":"Do not alter backend actions, restore safety contracts, control-plane configuration, or data.","proofConditionIds":["repository-proof"]}],"terminalPolicy":"all_required_proof_conditions_satisfied_after_live_release","proofConditions":[{"id":"repository-proof","kind":"repository","claim":"Merged source in src/pages/admin/GodModeRestorePoints.tsx uses human owner-facing copy for primary restore information, moves technical identifiers/mechanics behind Technical details, and preserves existing restore_point_review and restore_point_execute behavior including RESTORE confirmation.","route":null,"roleRef":null,"userRef":null,"required":true,"expectedText":null,"targetedActions":[],"allowedReleaseTargets":[],"requiredReleaseTargets":[]},{"id":"production-proof","kind":"runtime","claim":"The frontend containing the human-readable Restore Points experience is successfully released to production at /admin/godmode/restore-points.","route":null,"roleRef":null,"userRef":null,"required":true,"expectedText":null,"targetedActions":[],"allowedReleaseTargets":[],"requiredReleaseTargets":[]}],"validationErrors":[]},"requestContractHash":"6f69f5a8662400890c887c6ca52ce0ed4515d58be8f95cf4d27cb27cc48ae50c","requestContractRevision":8,"previousRequestContractHash":"439f476ec60b48193dc358aada192004859a763368c087a8071a2c24df9e2850"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-10T04:34:31.041087+00:00","proof_gate":"request_contract_revision_recorded","source_sha":null,"external_id":null,"receipt_type":"request_contract_revision","idempotency_key":"mission:dae7be12-c46c-4ad1-b68f-babda00d72ee:request-contract:6f69f5a8662400890c887c6ca52ce0ed4515d58be8f95cf4d27cb27cc48ae50c","mission_step_id":"bdb32c7b-a248-4d8b-8697-6f0ccf53d118","command_center_event_id":"dae7be12-c46c-4ad1-b68f-babda00d72ee"},{"id":"be2b3dbc-f3ed-4cc0-88a1-8f7a6bed1f15","source":"forgejo-runtime","status":"pending","payload":{"mainSha":"0646720cad3dc88b10532a280fd98ff47c311f3e","sourceSha":"1598f3e423c9d2b6e818fa31dd854dfb35052abb","sourceInMain":false,"compareStatus":"ancestry_read_retryable","ancestryProofResolved":false},"tenant_id":"c55998b4-82a3-467e-8d35-177bb4785f6e","created_at":"2026-09-20T16:10:11.261201+00:00","proof_gate":"canonical_release_ancestry_pending","source_sha":"1598f3e423c9d2b6e818fa31dd854dfb35052abb","external_id":"canonical-release-1598f3e423c9","receipt_type":"canonical_release_status","idempotency_key":"mission:4efc6e5e-8e57-4f02-8be2-8a820a63c224:forgejo-release-ancestry:1598f3e423c9d2b6e818fa31dd854dfb35052abb:0646720cad3dc88b10532a280fd98ff47c311f3e:ancestry_read_retryable","mission_step_id":"4afd74c9-4b81-4e30-8369-537cc463b456","command_center_event_id":"4efc6e5e-8e57-4f02-8be2-8a820a63c224"},{"id":"be303879-146b-49c8-92ec-80e666151dee","source":"cc-execution","status":"waiting","payload":{"kind":"heartbeat","message":"Still active in visual proof.","nextAction":{"lane":"visual-sandbox","action":"verify_visual","reason":"release_verified_existing_visual_job_pending_reconciliation","automationAllowed":true,"ownerActionRequired":false},"silenceBudgetMs":15000,"semanticCheckpointSignature":"{\"stateMachineVersion\":1,\"phase\":\"visual_proof\",\"ownerFacingState\":null,\"latest\":{\"kind\":\"receipt\",\"key\":\"visual_proof_started\",\"status\":\"pending\",\"proofGate\":\"post_release_visual_proof_started\"},\"activeStep\":{\"key\":\"pull_request\",\"status\":\"waiting\",\"lane\":\"cc-execution\"},\"nextStep\":{\"key\":\"release\",\"status\":\"waiting\",\"lane\":\"production-release-conductor\"},\"nextSafeAction\":{\"action\":\"verify_visual\",\"lane\":\"visual-sandbox\",\"reason\":\"release_verified_existing_visual_job_pending_reconciliation\",\"automationAllowed\":true,\"ownerActionRequired\":false},\"executionOwnership\":{\"active\":false,\"state\":\"waiting\",\"executor\":null,\"lane\":\"cc-execution\",\"nextAction\":\"verify_visual\",\"recoveryOwner\":\"visual-sandbox\"},\"acceptance\":{\"total\":3,\"verified\":1,\"pending\":2,\"percent\":33,\"satisfied\":false,\"verifiedIds\":[\"proof-live\"],\"pendingIds\":[\"proof-desktop\",\"proof-mobile\"]},\"stall\":{\"stalled\":false,\"reason\":\"within_deadline\",\"step\":\"visual_proof\",\"deadlineAt\":\"2026-09-30T22:24:44.112836+00:00\",\"recoveryAction\":null},\"blocker\":null,\"terminal\":false,\"branch\":\"ai/objective-first-repair-e020b5c6b3f8\",\"prNumber\":4255,\"sourceSha\":\"70b87aebe0d97e2f1ffb74f0d79070d90ab52d68\",\"deploymentId\":\"forgejo-main-70b87aebe0d9\"}"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-30T18:39:26.269129+00:00","proof_gate":"owner_progress_heartbeat","source_sha":null,"external_id":null,"receipt_type":"owner_progress_heartbeat","idempotency_key":"mission:e020b5c6-b3f8-4d93-9c5c-0d62cb75b237:owner-progress-heartbeat:119386237","mission_step_id":"6941dcda-38df-48a1-95ae-83bcf5413db0","command_center_event_id":"e020b5c6-b3f8-4d93-9c5c-0d62cb75b237"},{"id":"be3239cc-fe87-4072-b070-a1c3dc1f029b","source":"durable-mission-ledger","status":"verified","payload":{"sourceSha":"2ba417adc03f92cd4290c8e79028619b0068c95f","requestContractProof":{"legacy":false,"present":true,"outcomes":[{"id":"outcome-selector-diagnostic","satisfied":true,"statement":"Direct inspection of /select-tenant no longer produces tenant_selector_escape, while genuine redirects from another private route to /select-tenant still do.","proofConditionIds":["proof-test","proof-paul"]}],"satisfied":true,"constraints":[{"id":"diagnostic-only","satisfied":true,"statement":"Change only Visual Witness diagnostic classification and its focused tests; do not alter application routing or tenant selection.","proofConditionIds":["proof-test","proof-paul"]},{"id":"preserve-genuine-escape","satisfied":true,"statement":"A requested route other than /select-tenant that ends at /select-tenant without next/workspace must still report tenant_selector_escape.","proofConditionIds":["proof-test"]},{"id":"capability-completeness","satisfied":true,"statement":"Every dependency the implementation declares or relies on must be wired and proven across applicable frontend, backend/runtime, schema/data/storage, authentication/authorization, provider configuration, prerequisite/loading/empty/error states, release ownership, and live production behavior; owner-authorized unavailable dependencies must become explicit prerequisite states rather than runtime failures.","proofConditionIds":["proof-test","proof-paul"]},{"id":"atomic-capability-lifecycle","satisfied":true,"statement":"Changed capabilities remain non-active until dependency readiness, N/N-1 compatibility, affected-target release, and claim-matched production canary proof are satisfied; missing optional dependencies become prerequisite_required, and runtime drift or health-contract violation quarantines only the affected capability instead of breaking unrelated working capability.","proofConditionIds":["proof-test","proof-paul"]}],"contractHash":"fce5d35c1dcbe1cbc0abf5be9e792a28b6bf9f5b2b2dc8dad40b05a31ff41862","releaseBound":true,"witnessBound":false,"visualRequested":false,"visualSatisfied":true,"conditionResults":[{"id":"proof-test","kind":"runtime","evidence":{"reason":null,"satisfied":true,"releaseState":"verified","missingTargets":[],"disallowedTargets":[],"migrationRequired":false,"releaseTargetStates":{"onrunner":"success"},"unsuccessfulTargets":[],"activeReleaseTargets":["onrunner"],"allowedReleaseTargets":[],"requiredReleaseTargets":[],"migrationReleaseVerified":null,"releaseRequestContractHash":"fce5d35c1dcbe1cbc0abf5be9e792a28b6bf9f5b2b2dc8dad40b05a31ff41862"},"required":true,"satisfied":true},{"id":"proof-paul","kind":"runtime","evidence":{"reason":null,"satisfied":true,"releaseState":"verified","missingTargets":[],"disallowedTargets":[],"migrationRequired":false,"releaseTargetStates":{"onrunner":"success"},"unsuccessfulTargets":[],"activeReleaseTargets":["onrunner"],"allowedReleaseTargets":[],"requiredReleaseTargets":[],"migrationReleaseVerified":null,"releaseRequestContractHash":"fce5d35c1dcbe1cbc0abf5be9e792a28b6bf9f5b2b2dc8dad40b05a31ff41862"},"required":true,"satisfied":true}],"validationErrors":[],"pendingProofKinds":[],"activeReleaseTargets":["onrunner"]},"authoritativeMissionRefresh":true,"evaluatedRequestContractRevision":1},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-25T14:08:14.751135+00:00","proof_gate":"request_contract_terminal_verified","source_sha":"2ba417adc03f92cd4290c8e79028619b0068c95f","external_id":null,"receipt_type":"request_contract_reconciliation","idempotency_key":"mission:e0cf6a8a-969a-45bd-9bf1-a35f2d3cc564:request-contract:fce5d35c1dcbe1cbc0abf5be9e792a28b6bf9f5b2b2dc8dad40b05a31ff41862:2ba417adc03f92cd4290c8e79028619b0068c95f:verified:","mission_step_id":"84e3f691-e61e-4758-a0b6-82f59e060038","command_center_event_id":"e0cf6a8a-969a-45bd-9bf1-a35f2d3cc564"},{"id":"be349b10-0511-41ca-87ab-c426fd89ff2c","source":"durable-mission-ledger","status":"verified","payload":{"sourceSha":"f22e1874041b3c67273f3cb024d4f7e6d04aece8","requestContractProof":{"legacy":false,"present":true,"outcomes":[{"id":"depth4","satisfied":true,"statement":"Canonical Gate exact head+main partial fetch uses depth 4 and configured maximum is 4.","proofConditionIds":["repo","runtime"]},{"id":"no-common-deepen","satisfied":true,"statement":"The representative repair generation resolves merge-base without the 128-commit deepen fallback when within the 4-commit window.","proofConditionIds":["repo","runtime"]},{"id":"fallback","satisfied":true,"statement":"The explicit deepen=128 fail-safe remains for genuinely deeper shallow history and all exact source/freshness checks remain mandatory.","proofConditionIds":["repo","runtime"]},{"id":"refreeze","satisfied":true,"statement":"Runtime 1.58.40 is live on exact merged SHA and control plane is refrozen.","proofConditionIds":["runtime","refrozen"]}],"satisfied":true,"constraints":[{"id":"bounded","satisfied":true,"statement":"Keep blob:none partial fetch, one combined head+main fetch, and do not broaden Gate source hydration or weaken merge readiness.","proofConditionIds":["repo","runtime"]}],"contractHash":"9a8bbf71b5568123da73a3dbefbf57ee9ad8ea95376bb29c47dce5922114eef5","releaseBound":true,"witnessBound":false,"visualRequested":false,"visualSatisfied":true,"conditionResults":[{"id":"repo","kind":"repository","evidence":{"releaseState":"verified","releaseRequestContractHash":"9a8bbf71b5568123da73a3dbefbf57ee9ad8ea95376bb29c47dce5922114eef5"},"required":true,"satisfied":true},{"id":"runtime","kind":"runtime","evidence":{"releaseState":"verified","activeReleaseTargets":["ccExecution"],"releaseRequestContractHash":"9a8bbf71b5568123da73a3dbefbf57ee9ad8ea95376bb29c47dce5922114eef5"},"required":true,"satisfied":true},{"id":"refrozen","kind":"runtime","evidence":{"releaseState":"verified","activeReleaseTargets":["ccExecution"],"releaseRequestContractHash":"9a8bbf71b5568123da73a3dbefbf57ee9ad8ea95376bb29c47dce5922114eef5"},"required":true,"satisfied":true}],"validationErrors":[],"pendingProofKinds":[],"activeReleaseTargets":["ccExecution"]},"authoritativeMissionRefresh":true,"evaluatedRequestContractRevision":1},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-04T12:44:11.920644+00:00","proof_gate":"request_contract_terminal_verified","source_sha":"f22e1874041b3c67273f3cb024d4f7e6d04aece8","external_id":null,"receipt_type":"request_contract_reconciliation","idempotency_key":"mission:d6e7ac28-f7e6-4354-9a0f-71210ab8098f:request-contract:9a8bbf71b5568123da73a3dbefbf57ee9ad8ea95376bb29c47dce5922114eef5:f22e1874041b3c67273f3cb024d4f7e6d04aece8:verified:","mission_step_id":"c9af1386-44b3-49ed-9ff0-3d6bb73e35bc","command_center_event_id":"d6e7ac28-f7e6-4354-9a0f-71210ab8098f"},{"id":"be386ea3-a7c9-434b-a57c-24c3eceaa18c","source":"cc-execution","status":"release_reconciliation_pending","payload":{"ok":true,"jobId":null,"phase":"implementation","branch":"ai/objective-first-repair-a813430d68cd","reason":null,"status":"release_reconciliation_pending","metrics":{"receiptBytes":24215,"releaseCount":0,"toolCallCount":5,"repeatedCallCount":2,"executorlessWaitMs":21267,"firstUsefulResultAt":"2026-10-05T16:32:30.784Z","recoveryAttemptCount":4,"ownerInterruptionCount":0},"version":null,"prNumber":4981,"terminal":false,"missionId":"a813430d-68cd-4ae3-b758-d4f8164bd739","operation":"automatic_mission_resume","proofGate":"canonical_release_reconciliation_pending","sourceSha":"383c2be65a93be3e8b91c237d0fb8a27cbcfe888","timingsMs":{"prReadinessMs":759,"approvedPlanMs":0,"shipAndProveMs":1865,"repositoryMutationMs":0,"repositoryProviderMs":0,"repositoryAtomicCommitMs":0,"repositoryBranchCreateMs":0,"repositoryPullRequestCreateMs":0},"nextAction":"reconcile_release","receiptRef":{"mode":"full","missionId":"a813430d-68cd-4ae3-b758-d4f8164bd739"},"performance":null,"deploymentId":"forgejo-main-383c2be65a93","releaseState":null,"workflowRunId":null,"releaseTargets":{"frontend":false,"migrations":false,"ccExecution":true,"supabaseEdge":false,"edgeFunctionSlugs":[]},"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","pendingProofKinds":["repository","repository","runtime"],"verificationState":null,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":1895,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true,"requestContractState":"pending"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-05T16:32:57.473803+00:00","proof_gate":"canonical_release_reconciliation_pending","source_sha":null,"external_id":"4981","receipt_type":"automatic_mission_resume","idempotency_key":"mission:a813430d-68cd-4ae3-b758-d4f8164bd739:automatic-mission-resume:4981:canonical_release_reconciliation_pending","mission_step_id":"79c96b38-1cf8-4903-9ce8-4720b48d89ae","command_center_event_id":"a813430d-68cd-4ae3-b758-d4f8164bd739"},{"id":"be3a5014-9113-4f66-87da-bc38e78beaa9","source":"cc-execution","status":"blocked","payload":{"ok":false,"jobId":null,"phase":"implementation","branch":"ai/seaside-mobile-booking-contrast-final-20260811","reason":"anchored_edits resolution failed","status":"blocked","metrics":{"receiptBytes":3051,"releaseCount":0,"toolCallCount":2,"repeatedCallCount":1,"ownerInterruptionCount":0},"version":"1.35.0-cloudflare-native-frontend-owner","prNumber":null,"terminal":false,"missionId":"0ebf064a-f785-4837-ab1e-6a8aafa2a3d1","operation":"execute_mission","proofGate":"repair_mission_execution_blocked","sourceSha":null,"timingsMs":null,"nextAction":null,"receiptRef":{"mode":"full","missionId":"0ebf064a-f785-4837-ab1e-6a8aafa2a3d1"},"performance":null,"deploymentId":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":463,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true},"tenant_id":"a2929648-19db-46c8-9e93-07378ed1aa5f","created_at":"2026-08-11T20:18:54.092564+00:00","proof_gate":"repair_mission_execution_blocked","source_sha":null,"external_id":null,"receipt_type":"execute_mission","idempotency_key":"mission:0ebf064a-f785-4837-ab1e-6a8aafa2a3d1:execute_mission:repair_mission_execution_blocked","mission_step_id":"979cc71c-cd46-4a72-a8bb-6af5d936bf30","command_center_event_id":"0ebf064a-f785-4837-ab1e-6a8aafa2a3d1"},{"id":"be3ac2c3-1621-4510-b762-a1c898c3e127","source":"cc-execution","status":"blocked","payload":{"ok":false,"jobId":null,"phase":"pull_request","branch":"ai/objective-first-repair-07b2f40a16a5","reason":"explicit_pull_request_identity_mismatch:3257","status":"blocked","metrics":{"receiptBytes":0,"releaseCount":0,"toolCallCount":0,"repeatedCallCount":0,"ownerInterruptionCount":0},"version":"1.58.182-witness-render-cold-start-aware","prNumber":3257,"terminal":false,"missionId":"07b2f40a-16a5-4b53-ade2-c554c94fea57","operation":"execute_mission","proofGate":"repair_mission_execution_blocked","sourceSha":null,"timingsMs":{"gateMs":0,"proofMs":0,"handlerMs":578,"releaseMs":0,"mutationMs":0,"repositoryMs":0,"prReadinessMs":0,"approvedPlanMs":578,"missionSetupMs":1129,"providerAuthMs":0,"shipAndProveMs":0,"ledgerPrepareMs":343,"ledgerReconcileMs":0,"lineageReconcileMs":786,"resolvePreflightMs":1129,"repositoryMutationMs":0,"repositoryProviderMs":0,"authoritativeLedgerMs":0,"ledgerAsyncDispatchMs":0,"repositoryAtomicCommitMs":0,"repositoryBranchCreateMs":0,"totalSynchronousLedgerMs":343,"asyncBookkeepingDispatchMs":0,"ledgerAuthoritativeCommitMs":0,"repositoryPullRequestCreateMs":0},"nextAction":null,"receiptRef":{"mode":"full","missionId":"07b2f40a-16a5-4b53-ade2-c554c94fea57"},"performance":null,"deploymentId":null,"releaseState":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","pendingProofKinds":["runtime"],"verificationState":null,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":1471,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true,"requestContractState":"pending"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-20T03:19:49.64215+00:00","proof_gate":"repair_mission_execution_blocked","source_sha":null,"external_id":"3257","receipt_type":"execute_mission","idempotency_key":"mission:07b2f40a-16a5-4b53-ade2-c554c94fea57:execute_mission:repair_mission_execution_blocked:current-generation","mission_step_id":"d25edb8a-219f-4f91-b0e3-df89d5fe25f8","command_center_event_id":"07b2f40a-16a5-4b53-ade2-c554c94fea57"},{"id":"be3cbd44-13d1-4445-81c0-f3e10d8b3cdd","source":"paul-scheduler:compiler-recovery-v1","status":"blocked","payload":{"reason":"compiler_model_generation_failed","attempt":2,"prNumber":null,"httpStatus":409},"tenant_id":"9602e177-0cbb-496c-bdf5-2fbc93f1b859","created_at":"2026-10-12T16:56:36.654837+00:00","proof_gate":"compiler_scheduler_resume_not_advanced","source_sha":null,"external_id":null,"receipt_type":"bounded_compiler_scheduler_recovery","idempotency_key":"mission:5feb1afd-dbd1-4e9c-b143-b1434a7b16ef:compiler-scheduler-recovery:2:blocked","mission_step_id":null,"command_center_event_id":"5feb1afd-dbd1-4e9c-b143-b1434a7b16ef"},{"id":"be4100ca-fa83-4588-9ada-aad2d46f39f7","source":"cc-execution","status":"authorized","payload":{"paths":["workers/cc-execution/src/index-release-fast-lane.js","workers/cc-execution/src/version.js"],"reason":"Owner requested machinery speed improvement.","baseSha":"2a8f43946936dcf3d6a1eb77629c29e2078d5008","issuedAt":1790378155004,"expiresAt":1790378335004,"missionId":"9cc6dad6-6432-40f5-b534-aba02e720e9c","authorizationId":"d3461e52-39db-4efb-ad7e-149f9e37493a","retryableWithinExactScope":true},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-25T23:15:55.275194+00:00","proof_gate":"control_plane_maintenance_scope_authorized","source_sha":"2a8f43946936dcf3d6a1eb77629c29e2078d5008","external_id":null,"receipt_type":"control_plane_maintenance_authorization","idempotency_key":"control-plane-maintenance-authorize:d3461e52-39db-4efb-ad7e-149f9e37493a","mission_step_id":"d16e5db0-a0d8-4f2b-b23e-24d825696dc5","command_center_event_id":"9cc6dad6-6432-40f5-b534-aba02e720e9c"},{"id":"be41af40-ca95-4dca-aa4f-2b2eb5f75bce","source":"forgejo","status":"waiting","payload":{"branch":"ai/objective-first-repair-63f4a37ee368","prNumber":4224,"nextAction":"Follow the existing canonical release to terminal proof.","mergeCommitSha":"1e584ec3ade25cb983a5e112d154cb39a234d865","branchDeletedAfterMerge":true,"correctiveGenerationCreated":false},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-30T12:32:20.652478+00:00","proof_gate":"forgejo_merged_pr_is_authoritative_source_lineage","source_sha":"1e584ec3ade25cb983a5e112d154cb39a234d865","external_id":"4224","receipt_type":"source_lineage_merged_pr_authoritative","idempotency_key":"mission:63f4a37e-e368-482b-bcb4-81922308737a:merged-pr:4224:1e584ec3ade25cb983a5e112d154cb39a234d865","mission_step_id":"b05d419b-be2c-444b-8c10-db5773d709a5","command_center_event_id":"63f4a37e-e368-482b-bcb4-81922308737a"},{"id":"be42430a-e479-4ea0-b1d9-73f8b81e661e","source":"cc-execution","status":"blocked","payload":{"ok":false,"jobId":null,"phase":"implementation","branch":null,"reason":"control_plane_maintenance_authorization_required","status":"blocked","metrics":{"receiptBytes":4124,"releaseCount":0,"toolCallCount":3,"repeatedCallCount":0,"executorlessWaitMs":17723,"firstUsefulResultAt":"2026-10-06T11:24:21.772Z","recoveryAttemptCount":0,"ownerInterruptionCount":0},"version":"1.65.10-boundary-fix-release-retry","prNumber":null,"terminal":false,"missionId":"8461f374-86b0-422f-bb81-3fb39febaab9","operation":"execute_mission","proofGate":"repair_mission_execution_blocked","sourceSha":null,"timingsMs":{"gateMs":0,"proofMs":0,"handlerMs":0,"releaseMs":0,"mutationMs":0,"repositoryMs":0,"prReadinessMs":0,"approvedPlanMs":0,"missionSetupMs":1028,"providerAuthMs":0,"shipAndProveMs":0,"ledgerPrepareMs":1028,"ledgerReconcileMs":0,"lineageReconcileMs":0,"resolvePreflightMs":1028,"repositoryMutationMs":0,"repositoryProviderMs":0,"authoritativeLedgerMs":0,"ledgerAsyncDispatchMs":0,"repositoryAtomicCommitMs":0,"repositoryBranchCreateMs":0,"totalSynchronousLedgerMs":1028,"asyncBookkeepingDispatchMs":0,"ledgerAuthoritativeCommitMs":0,"repositoryPullRequestCreateMs":0},"nextAction":null,"receiptRef":{"mode":"full","missionId":"8461f374-86b0-422f-bb81-3fb39febaab9"},"performance":null,"deploymentId":null,"releaseState":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","pendingProofKinds":["runtime"],"verificationState":null,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":1443,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true,"requestContractState":"pending"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-06T11:24:21.820195+00:00","proof_gate":"repair_mission_execution_blocked","source_sha":null,"external_id":null,"receipt_type":"execute_mission","idempotency_key":"mission:8461f374-86b0-422f-bb81-3fb39febaab9:execute_mission:repair_mission_execution_blocked:current-generation","mission_step_id":"222f7259-d184-41cf-bb95-5afb8f456bed","command_center_event_id":"8461f374-86b0-422f-bb81-3fb39febaab9"},{"id":"be427c92-421c-460f-b345-b77a9f4c57c9","source":"cc-execution","status":"synthesis_required","payload":{"ok":true,"jobId":null,"phase":"objective_received","branch":"ai/objective-first-repair-bf144d103b28","reason":null,"status":"synthesis_required","metrics":{"receiptBytes":0,"releaseCount":0,"toolCallCount":0,"repeatedCallCount":0,"executorlessWaitMs":0,"firstUsefulResultAt":null,"recoveryAttemptCount":0,"ownerInterruptionCount":0},"version":"1.58.242-persisted-intent-authority","prNumber":null,"terminal":false,"missionId":"bf144d10-3b28-4bd5-b326-69634b1fd991","operation":"execute_mission","proofGate":"repair_mission_synthesis_ready","sourceSha":null,"timingsMs":{"gateMs":0,"proofMs":0,"handlerMs":570,"releaseMs":0,"mutationMs":0,"repositoryMs":0,"missionSetupMs":334,"providerAuthMs":0,"ledgerPrepareMs":334,"ledgerReconcileMs":0,"lineageReconcileMs":0,"resolvePreflightMs":334,"authoritativeLedgerMs":0,"ledgerAsyncDispatchMs":0,"totalSynchronousLedgerMs":334,"asyncBookkeepingDispatchMs":0,"ledgerAuthoritativeCommitMs":0},"nextAction":"Inspect the bounded repository paths, synthesize exact files or anchored_edits, and call /mission/execute again automatically with this same missionId without another owner prompt or workflow switch.","receiptRef":{"mode":"full","missionId":"bf144d10-3b28-4bd5-b326-69634b1fd991"},"performance":null,"deploymentId":null,"releaseState":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","pendingProofKinds":[],"verificationState":null,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":5772,"likelyAffectedFiles":["scripts/command-center-host-agent/forgejo-watchdog.sh","scripts/command-center-host-agent/install-forgejo-watchdog.sh","scripts/command-center-host-agent/knocklaunch-forgejo-watchdog.service","scripts/command-center-host-agent/knocklaunch-forgejo-watchdog.timer"],"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true,"requestContractState":"pending"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-24T05:25:03.108433+00:00","proof_gate":"repair_mission_synthesis_ready","source_sha":null,"external_id":null,"receipt_type":"execute_mission","idempotency_key":"mission:bf144d10-3b28-4bd5-b326-69634b1fd991:execute_mission:repair_mission_synthesis_ready:current-generation","mission_step_id":"76525787-b9fb-452b-89b4-f3a24a948423","command_center_event_id":"bf144d10-3b28-4bd5-b326-69634b1fd991"},{"id":"be456cae-ad8e-44c4-9974-3ec2839007f1","source":"cc-execution","status":"authorized","payload":{"paths":["workers/cc-execution/src/bounded-objective-compiler.js"],"baseSha":"ac4f59946c2b084cd4dc11d5ac1f60420a3788df","issuedAt":1791594824323,"expiresAt":1791595004323,"missionId":"65daf112-81cd-4b91-b621-203c107f6222","autoRefreeze":true,"authorizationId":"be50cbb6-b175-4c20-a7cc-eacbc6136ff8","authorizationSource":"explicit_owner_request_contract"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-10T01:13:44.755572+00:00","proof_gate":"control_plane_maintenance_exact_scope_authorized","source_sha":"ac4f59946c2b084cd4dc11d5ac1f60420a3788df","external_id":"be50cbb6-b175-4c20-a7cc-eacbc6136ff8","receipt_type":"control_plane_maintenance_authorized","idempotency_key":"control-plane-maintenance:65daf112-81cd-4b91-b621-203c107f6222:be50cbb6-b175-4c20-a7cc-eacbc6136ff8","mission_step_id":null,"command_center_event_id":"65daf112-81cd-4b91-b621-203c107f6222"},{"id":"be46aeaf-897a-403f-8215-c0277b8374d6","source":"cc-execution","status":"synthesis_required","payload":{"ok":true,"jobId":null,"phase":"objective_received","branch":"ai/objective-first-repair-8bd65447c549","reason":null,"status":"synthesis_required","metrics":{"receiptBytes":0,"releaseCount":0,"toolCallCount":0,"repeatedCallCount":0,"executorlessWaitMs":0,"firstUsefulResultAt":null,"recoveryAttemptCount":0,"ownerInterruptionCount":0},"version":"1.65.7-prime-stale-manual-retirement-adapter","prNumber":null,"terminal":false,"missionId":"8bd65447-c549-4656-9cd6-bf1d4a6dd4b8","operation":"execute_mission","proofGate":"repair_mission_synthesis_ready","sourceSha":null,"timingsMs":{"gateMs":0,"proofMs":0,"handlerMs":3469,"releaseMs":0,"mutationMs":0,"repositoryMs":0,"missionSetupMs":672,"providerAuthMs":0,"ledgerPrepareMs":672,"ledgerReconcileMs":0,"lineageReconcileMs":0,"resolvePreflightMs":672,"authoritativeLedgerMs":0,"ledgerAsyncDispatchMs":0,"totalSynchronousLedgerMs":672,"asyncBookkeepingDispatchMs":0,"ledgerAuthoritativeCommitMs":0},"nextAction":"Inspect the bounded repository paths, synthesize exact files or anchored_edits, and call /mission/execute again automatically with this same missionId without another owner prompt or workflow switch.","receiptRef":{"mode":"full","missionId":"8bd65447-c549-4656-9cd6-bf1d4a6dd4b8"},"performance":null,"deploymentId":null,"releaseState":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","pendingProofKinds":[],"verificationState":null,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":3692,"likelyAffectedFiles":["workers/cc-execution/src/index-mission-control.js","workers/cc-execution/src/version.js"],"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true,"requestContractState":"pending"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-06T01:52:21.57647+00:00","proof_gate":"repair_mission_synthesis_ready","source_sha":null,"external_id":null,"receipt_type":"execute_mission","idempotency_key":"mission:8bd65447-c549-4656-9cd6-bf1d4a6dd4b8:execute_mission:repair_mission_synthesis_ready:current-generation","mission_step_id":"163d63fd-d55b-4b98-a0f3-b513368a33ce","command_center_event_id":"8bd65447-c549-4656-9cd6-bf1d4a6dd4b8"},{"id":"be4776b0-abb5-4a2f-bd67-211c3372b182","source":"cc-execution","status":"synthesis_required","payload":{"ok":true,"jobId":null,"phase":"objective_received","branch":"ai/forgejo-orphan-pr-reconciliation-repair","reason":null,"status":"synthesis_required","metrics":{"receiptBytes":0,"releaseCount":0,"toolCallCount":0,"repeatedCallCount":0,"ownerInterruptionCount":0},"version":"1.58.159-visual-witness-three-attempt-policy","prNumber":null,"terminal":false,"missionId":"9f448d31-6af5-4b8e-a1f3-4e11ba17e7a6","operation":"execute_mission","proofGate":"repair_mission_synthesis_ready","sourceSha":null,"timingsMs":{"gateMs":0,"proofMs":0,"handlerMs":232,"releaseMs":0,"mutationMs":0,"repositoryMs":0,"missionSetupMs":425,"providerAuthMs":0,"ledgerPrepareMs":425,"ledgerReconcileMs":0,"lineageReconcileMs":0,"resolvePreflightMs":425,"authoritativeLedgerMs":0,"ledgerAsyncDispatchMs":0,"totalSynchronousLedgerMs":425,"asyncBookkeepingDispatchMs":0,"ledgerAuthoritativeCommitMs":0},"nextAction":"Inspect the bounded repository paths, synthesize exact files or anchored_edits, and call /mission/execute again automatically with this same missionId without another owner prompt or workflow switch.","receiptRef":{"mode":"full","missionId":"9f448d31-6af5-4b8e-a1f3-4e11ba17e7a6"},"performance":null,"deploymentId":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":3887,"likelyAffectedFiles":["workers/cc-execution/src/index-scoped-repo-patch.js"],"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-16T13:29:15.190137+00:00","proof_gate":"repair_mission_synthesis_ready","source_sha":null,"external_id":null,"receipt_type":"execute_mission","idempotency_key":"mission:9f448d31-6af5-4b8e-a1f3-4e11ba17e7a6:execute_mission:repair_mission_synthesis_ready:current-generation","mission_step_id":"c0802219-6693-4ee3-b5b2-b7dfb16e0cf7","command_center_event_id":"9f448d31-6af5-4b8e-a1f3-4e11ba17e7a6"},{"id":"be497b2c-1360-497e-9b7f-7771c9bde88f","source":"cc-execution","status":"waiting","payload":{"kind":"heartbeat","message":"Still active in implementation.","nextAction":{"lane":"cc-execution","action":"continue_implementation","reason":"durable_state:implementation","automationAllowed":false,"ownerActionRequired":false},"silenceBudgetMs":15000,"semanticCheckpointSignature":"{\"stateMachineVersion\":1,\"phase\":\"implementation\",\"ownerFacingState\":null,\"latest\":{\"kind\":\"receipt\",\"key\":\"execute_mission\",\"status\":\"synthesis_required\",\"proofGate\":\"repair_mission_synthesis_ready\"},\"activeStep\":{\"key\":\"implementation\",\"status\":\"ready\",\"lane\":\"cc-execution\"},\"nextStep\":{\"key\":\"pull_request\",\"status\":\"pending\",\"lane\":\"cc-execution\"},\"nextSafeAction\":{\"action\":\"continue_implementation\",\"lane\":\"cc-execution\",\"reason\":\"durable_state:implementation\",\"automationAllowed\":false,\"ownerActionRequired\":false},\"acceptance\":{\"total\":1,\"verified\":0,\"pending\":1,\"percent\":0,\"satisfied\":false,\"verifiedIds\":[],\"pendingIds\":[\"proof-production\"]},\"stall\":{\"stalled\":false,\"reason\":\"within_deadline\",\"step\":\"implementation\",\"deadlineAt\":\"2026-09-22T04:05:37.528149+00:00\",\"recoveryAction\":null},\"blocker\":null,\"terminal\":false,\"branch\":\"ai/objective-first-repair-98ad3686b372\",\"prNumber\":null,\"sourceSha\":null,\"deploymentId\":null}"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-22T02:05:55.251377+00:00","proof_gate":"owner_progress_heartbeat","source_sha":null,"external_id":null,"receipt_type":"owner_progress_heartbeat","idempotency_key":"mission:98ad3686-b372-496d-93f0-0963f8369d85:owner-progress-heartbeat:119336183","mission_step_id":"91f38272-02dd-43a5-b69d-0a96573f44b9","command_center_event_id":"98ad3686-b372-496d-93f0-0963f8369d85"},{"id":"be4aee6c-4481-4764-b554-38094d87cd5c","source":"cc-execution","status":"waiting_for_gate","payload":{"ok":true,"jobId":null,"phase":"implementation","branch":"ai/objective-first-repair-adb318f5e09e","reason":"provider_verified_auto_progress_owns_gate_merge_release_outside_owner_response","status":"waiting_for_gate","metrics":{"receiptBytes":63383,"releaseCount":0,"toolCallCount":11,"repeatedCallCount":3,"executorlessWaitMs":324119,"firstUsefulResultAt":"2026-09-28T18:06:02.893Z","recoveryAttemptCount":3,"ownerInterruptionCount":0},"version":"1.58.306-paul-repo-health-routing","prNumber":4029,"terminal":false,"missionId":"adb318f5-e09e-428d-ac21-f6210f289f8c","operation":"execute_mission","proofGate":"repair_mission_pr_handed_off_to_supervisor","sourceSha":null,"timingsMs":{"gateMs":0,"proofMs":0,"handlerMs":4035,"releaseMs":0,"mutationMs":0,"repositoryMs":0,"prReadinessMs":0,"approvedPlanMs":1507,"missionSetupMs":690,"providerAuthMs":0,"shipAndProveMs":0,"ledgerPrepareMs":474,"ledgerReconcileMs":0,"lineageReconcileMs":216,"resolvePreflightMs":690,"repositoryMutationMs":2528,"repositoryProviderMs":2528,"authoritativeLedgerMs":0,"ledgerAsyncDispatchMs":0,"repositoryAtomicCommitMs":2263,"repositoryBranchCreateMs":0,"totalSynchronousLedgerMs":474,"asyncBookkeepingDispatchMs":0,"ledgerAuthoritativeCommitMs":0,"repositoryPullRequestCreateMs":265},"nextAction":"Canonical KnockLaunch Gate notifier and durable mission supervisor own Gate, merge, release, and proof progression from this exact PR head outside the owner response path.","receiptRef":{"mode":"full","missionId":"adb318f5-e09e-428d-ac21-f6210f289f8c"},"performance":null,"deploymentId":null,"releaseState":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","pendingProofKinds":["runtime"],"verificationState":null,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":3060,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true,"requestContractState":"pending"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-28T18:10:55.578834+00:00","proof_gate":"repair_mission_pr_handed_off_to_supervisor","source_sha":null,"external_id":"4029","receipt_type":"execute_mission","idempotency_key":"mission:adb318f5-e09e-428d-ac21-f6210f289f8c:execute_mission:repair_mission_pr_handed_off_to_supervisor:current-generation","mission_step_id":"ebd6f951-57ef-46ee-ad73-68ed18693040","command_center_event_id":"adb318f5-e09e-428d-ac21-f6210f289f8c"},{"id":"be4b967f-2396-4277-8e0b-a4a6242d2d95","source":"owner_authorized_backlog_reconciliation","status":"blocked","payload":{"disposition":"recoverable_blocked","auditPreserved":true,"releaseVerified":false},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-11T15:48:29.147163+00:00","proof_gate":"expired_mission_missing_implementation_evidence","source_sha":null,"external_id":null,"receipt_type":"historical_mission_triage","idempotency_key":"historical-triage-20261011:05b5aa1d-5c0a-4ea6-b372-45afd46d3f43","mission_step_id":null,"command_center_event_id":"05b5aa1d-5c0a-4ea6-b372-45afd46d3f43"},{"id":"be4c1666-d9ce-4a2a-a866-552f6237afe2","source":"durable-mission-ledger","status":"pending","payload":{"sourceSha":"313a9a03b2e61e197bc2871cbae42d6be50ba109","requestContractProof":{"legacy":false,"present":true,"outcomes":[{"id":"outcome-auth-stable","satisfied":false,"statement":"Normal authenticated KNOCKLAUNCH MCP requests no longer depend on Supabase /oauth/userinfo and therefore do not repeatedly fail or appear disconnected because of transient provider latency.","proofConditionIds":["proof-repository","proof-runtime"]},{"id":"outcome-security","satisfied":false,"statement":"OAuth remains fail-closed with RS256 signature, issuer, expiry, subject, client, canonical owner email, alg, and kid validation; invalid, expired, wrong-owner, wrong-issuer, unsupported-alg, and bad-signature tokens remain rejected.","proofConditionIds":["proof-repository"]},{"id":"outcome-release","satisfied":true,"statement":"The repaired ccExecution runtime is Gate-approved, squash merged, deployed, proven live, and the control plane remains protected after the scoped maintenance operation.","proofConditionIds":["proof-release","proof-runtime"]}],"satisfied":false,"constraints":[{"id":"constraint-owner","satisfied":false,"statement":"Canonical platform owner identity remains info@knocklaunch.app and the owner allowlist is not broadened.","proofConditionIds":["proof-repository"]},{"id":"constraint-no-secrets","satisfied":false,"statement":"Bearer tokens are never logged.","proofConditionIds":["proof-repository"]},{"id":"constraint-release-scope","satisfied":false,"statement":"Only ccExecution may be released for this repair; no GitHub dependency or fallback may be introduced.","proofConditionIds":["proof-repository","proof-release"]}],"contractHash":"e1daa16fa275dbb437acc02dd6e97018319b06a370026eb73952d7583c83efc7","releaseBound":true,"witnessBound":false,"visualRequested":false,"visualSatisfied":true,"conditionResults":[{"id":"proof-repository","kind":"repository","evidence":{"repositoryProofGate":null,"requestContractHash":"e1daa16fa275dbb437acc02dd6e97018319b06a370026eb73952d7583c83efc7","repositoryProofStatus":"required","repositoryProofSourceSha":null},"required":true,"satisfied":false},{"id":"proof-release","kind":"release","evidence":{"releaseState":"verified","activeReleaseTargets":["ccExecution"],"releaseRequestContractHash":"e1daa16fa275dbb437acc02dd6e97018319b06a370026eb73952d7583c83efc7"},"required":true,"satisfied":true},{"id":"proof-runtime","kind":"runtime","evidence":{"releaseState":"verified","activeReleaseTargets":["ccExecution"],"releaseRequestContractHash":"e1daa16fa275dbb437acc02dd6e97018319b06a370026eb73952d7583c83efc7"},"required":true,"satisfied":true}],"validationErrors":[],"pendingProofKinds":["repository"],"activeReleaseTargets":["ccExecution"]},"authoritativeMissionRefresh":true,"evaluatedRequestContractRevision":2},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-07T22:59:39.058503+00:00","proof_gate":"request_contract_pending","source_sha":"313a9a03b2e61e197bc2871cbae42d6be50ba109","external_id":null,"receipt_type":"request_contract_reconciliation","idempotency_key":"mission:9124b0cc-95c0-41ba-ab34-896c709e56cb:request-contract:e1daa16fa275dbb437acc02dd6e97018319b06a370026eb73952d7583c83efc7:313a9a03b2e61e197bc2871cbae42d6be50ba109:pending:repository","mission_step_id":"ff055b76-c3ac-44d3-984c-2ac9cb055927","command_center_event_id":"9124b0cc-95c0-41ba-ab34-896c709e56cb"},{"id":"be4cfec3-eac7-450c-8525-7efab35529d3","source":"forgejo-runtime","status":"pending","payload":{"failed":[],"states":{"forgejo-main/source":"success","forgejo-release/workflow":"pending","frontend-cloudflare/live":"pending"},"mainSha":"4800e8b69ee8f061896c5d704e410ed25ab2188f","missing":[],"pending":["forgejo-release/workflow","frontend-cloudflare/live"],"required":["forgejo-main/source","forgejo-release/workflow","frontend-cloudflare/live"],"sourceSha":"4800e8b69ee8f061896c5d704e410ed25ab2188f","releaseState":"pending","sourceInMain":true,"compareStatus":"protected_main_push_exact_source","releaseTargets":{"frontend":true,"migrations":false,"ccExecution":false,"supabaseEdge":false,"edgeFunctionSlugs":[]},"releaseTargetStates":{"frontend":"pending"},"requestContractHash":"ae02c267a3f9e725a3f859799a4e21b9e6073d14c7fd429ea30429beb87c52c5","forgejoWorkflowProof":{"runId":16084,"source":"signed_push_receipt","status":"running","results":{},"conclusion":"running","targetStates":{"frontend":"pending"},"targetJobCount":7,"observedTargetStates":{"frontend":"pending"}},"releaseSourceVerified":true,"ccExecutionRuntimeProof":null,"releaseTargetRecoveryProof":null,"exactReleaseVerifiedAfterMainAdvanced":false},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-05T23:07:57.994856+00:00","proof_gate":"canonical_release_pending","source_sha":"4800e8b69ee8f061896c5d704e410ed25ab2188f","external_id":"forgejo-main-4800e8b69ee8","receipt_type":"canonical_release_status","idempotency_key":"mission:9b239608-e0d7-4b46-a3f6-d4beed98a5b0:forgejo-release-status:4800e8b69ee8f061896c5d704e410ed25ab2188f:pending:forgejo-main/source=success|forgejo-release/workflow=pending|frontend-cloudflare/live=pending","mission_step_id":"f030acb7-bfb7-4777-aa57-b1d9a775d183","command_center_event_id":"9b239608-e0d7-4b46-a3f6-d4beed98a5b0"},{"id":"be4d30b9-dae0-4dba-931a-ad7d4135d560","source":"cc-execution","status":"authorized","payload":{"paths":["workers/cc-execution/src/index-mcp.js","workers/cc-execution/src/version.js","workers/cc-execution/test/mcp.test.js"],"reason":"Owner explicitly requested platform-wide infrastructure hardening after repeated recovered-chat failures; enforce bounded MCP responses at the canonical gateway.","baseSha":"aa938e44ee6180bfd5fc9497fc3ae894ccfa0ebc","issuedAt":1790849412936,"expiresAt":1790849592936,"missionId":"8ec9fc6c-e597-4933-b659-57b3fc06bb33","authorizationId":"8159043a-52fa-46d9-a211-2df9bccc6326","retryableWithinExactScope":true},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-01T10:10:13.243266+00:00","proof_gate":"control_plane_maintenance_scope_authorized","source_sha":"aa938e44ee6180bfd5fc9497fc3ae894ccfa0ebc","external_id":null,"receipt_type":"control_plane_maintenance_authorization","idempotency_key":"control-plane-maintenance-authorize:8159043a-52fa-46d9-a211-2df9bccc6326","mission_step_id":"299fdf3f-ab20-4e13-9b50-cc679629cca1","command_center_event_id":"8ec9fc6c-e597-4933-b659-57b3fc06bb33"},{"id":"be4db663-112b-4560-8161-9d9d86b39713","source":"forgejo-runtime","status":"pending","payload":{"failed":[],"states":{"forgejo-main/source":"success","forgejo-release/workflow":"pending","frontend-cloudflare/live":"pending"},"mainSha":"33966f962e72867a9c23ff6ad0118c351fadc7b8","missing":[],"pending":["forgejo-release/workflow","frontend-cloudflare/live"],"required":["forgejo-main/source","forgejo-release/workflow","frontend-cloudflare/live"],"sourceSha":"33966f962e72867a9c23ff6ad0118c351fadc7b8","releaseState":"pending","sourceInMain":true,"compareStatus":"identical","releaseTargets":{"frontend":true,"onrunner":false,"migrations":false,"ccExecution":false,"supabaseEdge":false,"edgeFunctionSlugs":[]},"releaseTargetStates":{"frontend":"pending"},"requestContractHash":"06c2c550d577ae07c0d1560a7672727b2f28ce4d3141642153c0a2c7f1500689","forgejoWorkflowProof":{"url":"https://git.knocklaunch.app/noel/KnockLaunchOS/actions/runs/6588","runId":6588,"status":"running","sourceSha":"33966f962e72867a9c23ff6ad0118c351fadc7b8","conclusion":null,"failedJobs":[],"diagnostics":null,"exactSource":true,"targetStates":{"frontend":"pending"},"targetJobCount":7,"observedTargetStates":{"frontend":"pending"}},"onrunnerRuntimeProof":null,"releaseSourceVerified":true,"ccExecutionRuntimeProof":null,"releaseTargetRecoveryProof":null,"exactReleaseVerifiedAfterMainAdvanced":false},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-09T13:22:42.73341+00:00","proof_gate":"canonical_release_pending","source_sha":"33966f962e72867a9c23ff6ad0118c351fadc7b8","external_id":"forgejo-main-33966f962e72","receipt_type":"canonical_release_status","idempotency_key":"mission:6b17c386-d73b-45fb-99f1-43962d15ef2e:forgejo-release-status:33966f962e72867a9c23ff6ad0118c351fadc7b8:pending:forgejo-main/source=success|forgejo-release/workflow=pending|frontend-cloudflare/live=pending","mission_step_id":"4422fc11-eb29-40a3-9a5f-6de5c1e29e51","command_center_event_id":"6b17c386-d73b-45fb-99f1-43962d15ef2e"},{"id":"be4ee62e-b200-4e90-b30b-c1620ae5f9ee","source":"cc-execution","status":"synthesis_required","payload":{"ok":true,"jobId":null,"phase":"pull_request","branch":"ai/add-forgejo-pr-close-20260828","reason":null,"status":"synthesis_required","metrics":{"receiptBytes":11106,"releaseCount":0,"toolCallCount":9,"repeatedCallCount":1,"ownerInterruptionCount":0},"version":"1.55.0-godmode-restore-points","prNumber":null,"terminal":false,"missionId":"a20c365d-749f-442b-9535-cbdd3dcf9fef","operation":"execute_mission","proofGate":"repair_mission_synthesis_ready","sourceSha":null,"timingsMs":{"handlerMs":189,"missionSetupMs":702},"nextAction":"Inspect the bounded repository paths, synthesize exact files or anchored_edits, and call /mission/execute again automatically with this same missionId without another owner prompt or workflow switch.","receiptRef":{"mode":"full","missionId":"a20c365d-749f-442b-9535-cbdd3dcf9fef"},"performance":null,"deploymentId":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":8651,"likelyAffectedFiles":[".forgejo/workflows/knocklaunch.yml","config/control-plane-capabilities.json","scripts/validate-command-center-contracts.mjs","src/__tests__/contracts/command-center-forgejo-transport-reliability.contract.test.ts","src/__tests__/contracts/command-center-mission-control.test.ts","src/__tests__/contracts/command-center-platform-mission-anchor.contract.test.ts","src/__tests__/contracts/command-center-release-reconciliation-budget.contract.test.ts","src/__tests__/commandCenter/deployDetection.test.ts"],"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-08-28T18:12:29.818423+00:00","proof_gate":"repair_mission_synthesis_ready","source_sha":null,"external_id":null,"receipt_type":"execute_mission","idempotency_key":"mission:a20c365d-749f-442b-9535-cbdd3dcf9fef:execute_mission:repair_mission_synthesis_ready:current-generation","mission_step_id":"af00b548-17b8-4500-afa7-a0cbd317c27c","command_center_event_id":"a20c365d-749f-442b-9535-cbdd3dcf9fef"},{"id":"be4f0739-b80f-432b-b810-a55bd226bb33","source":"owner_authorized_full_backlog_cleanup","status":"recorded","payload":{"category":"platform_reliability","disposition":"superseded_execution_attempt","previousStatus":"waiting","sourcePreserved":true,"noCompletionClaim":true,"recoveryPortfolioId":"95de7957-906c-e163-73d9-62948a04ac31"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-11T16:14:39.646808+00:00","proof_gate":"source_objective_preserved_in_existing_mission_ledger","source_sha":null,"external_id":null,"receipt_type":"owner_backlog_disposition","idempotency_key":"owner-full-backlog-cleanup-20261011:ec81d5a2-52c4-48f6-af7e-d4f6057ca130","mission_step_id":null,"command_center_event_id":"ec81d5a2-52c4-48f6-af7e-d4f6057ca130"},{"id":"be4f0fa9-75f0-4dea-a712-e16c7ede7e2d","source":"cc-execution","status":"retryable","payload":{"ok":false,"jobId":null,"phase":"pull_request","branch":"ai/cc-compact-release-continuation-20260820","reason":"The operation was aborted due to timeout","status":"retryable","metrics":{"receiptBytes":3712,"releaseCount":0,"toolCallCount":4,"repeatedCallCount":0,"ownerInterruptionCount":0},"version":"1.48.9-single-mutation-lane","prNumber":503,"terminal":false,"missionId":"916c0b88-6adc-42a5-ac85-d98e7f380ae8","operation":"execute_mission","proofGate":"canonical_release_transport_retryable","sourceSha":"1beed0f3a6162dd956d235d2ac107ca572b32698","timingsMs":null,"nextAction":"Reconcile this same mission and pull request automatically; do not create a replacement branch or PR.","receiptRef":{"mode":"full","missionId":"916c0b88-6adc-42a5-ac85-d98e7f380ae8"},"performance":null,"deploymentId":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":4998,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-08-20T19:21:08.431021+00:00","proof_gate":"canonical_release_transport_retryable","source_sha":null,"external_id":"503","receipt_type":"execute_mission","idempotency_key":"mission:916c0b88-6adc-42a5-ac85-d98e7f380ae8:execute_mission:canonical_release_transport_retryable","mission_step_id":"4a9af330-a550-4684-ad5b-f683a220862a","command_center_event_id":"916c0b88-6adc-42a5-ac85-d98e7f380ae8"},{"id":"be4f0fb7-ea1a-47c2-9b53-5c7ebeddfd98","source":"cc-execution","status":"complete","payload":{"ok":true,"jobId":null,"phase":"pull_request","branch":"ai/control-plane-hardening","reason":null,"status":"complete","metrics":{"receiptBytes":9060,"releaseCount":0,"toolCallCount":7,"repeatedCallCount":3,"ownerInterruptionCount":0},"version":"1.46.2-autonomous-forgejo-merge-supervisor","prNumber":111,"terminal":false,"missionId":"7fbd395c-489f-4b6a-9150-def76923c946","operation":"execute_mission","proofGate":"repair_mission_prepared","sourceSha":null,"timingsMs":null,"nextAction":"continue_batch_or_ship_and_prove","receiptRef":{"mode":"full","missionId":"7fbd395c-489f-4b6a-9150-def76923c946"},"performance":null,"deploymentId":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":1886,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true},"tenant_id":"a2929648-19db-46c8-9e93-07378ed1aa5f","created_at":"2026-08-15T12:28:57.769016+00:00","proof_gate":"repair_mission_prepared","source_sha":null,"external_id":"111","receipt_type":"execute_mission","idempotency_key":"mission:7fbd395c-489f-4b6a-9150-def76923c946:execute_mission:repair_mission_prepared","mission_step_id":"a426b4fd-fc9d-44c8-b864-0cd02759d02f","command_center_event_id":"7fbd395c-489f-4b6a-9150-def76923c946"},{"id":"be502953-2e54-42a5-a3ae-670e90dca8b9","source":"forgejo","status":"waiting","payload":{"branch":"ai/objective-first-repair-e020b5c6b3f8","prNumber":4253,"nextAction":"Follow the existing canonical release to terminal proof.","mergeCommitSha":"7a56cec08d887b2f883ee3f06634127d5e574b3c","branchDeletedAfterMerge":true,"correctiveGenerationCreated":false},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-30T18:29:30.747985+00:00","proof_gate":"forgejo_merged_pr_is_authoritative_source_lineage","source_sha":"7a56cec08d887b2f883ee3f06634127d5e574b3c","external_id":"4253","receipt_type":"source_lineage_merged_pr_authoritative","idempotency_key":"mission:e020b5c6-b3f8-4d93-9c5c-0d62cb75b237:merged-pr:4253:7a56cec08d887b2f883ee3f06634127d5e574b3c","mission_step_id":"bc09687b-6f9f-40e5-8501-b3c2e10bcc0d","command_center_event_id":"e020b5c6-b3f8-4d93-9c5c-0d62cb75b237"},{"id":"be50ff7c-d2ee-4866-ac1d-4ce044d2be88","source":"forgejo-runtime","status":"pending","payload":{"failed":[],"states":{"forgejo-main/source":"success","forgejo-release/workflow":"pending","frontend-cloudflare/live":"pending"},"mainSha":"a0388f961590a0cb6ea56065c479a3ec249e7b87","missing":[],"pending":["forgejo-release/workflow","frontend-cloudflare/live"],"required":["forgejo-main/source","forgejo-release/workflow","frontend-cloudflare/live"],"sourceSha":"a0388f961590a0cb6ea56065c479a3ec249e7b87","releaseState":"pending","sourceInMain":true,"compareStatus":"identical","releaseTargets":{"frontend":true,"onrunner":false,"migrations":false,"ccExecution":false,"supabaseEdge":false,"edgeFunctionSlugs":[]},"requestContractHash":"1d8d609a6d537be82847f6783476f7e783d9a6390e1387fb7ed522e8df3fcac0","forgejoWorkflowProof":{"url":"https://git.knocklaunch.app/noel/KnockLaunchOS/actions/runs/3544","runId":3544,"status":"running","sourceSha":"a0388f961590a0cb6ea56065c479a3ec249e7b87","conclusion":null,"failedJobs":[],"diagnostics":null,"exactSource":true},"onrunnerRuntimeProof":null,"releaseSourceVerified":true,"ccExecutionRuntimeProof":null,"releaseTargetRecoveryProof":null,"exactReleaseVerifiedAfterMainAdvanced":false},"tenant_id":"766cfaa7-ac42-46c8-bbef-69d13268a29d","created_at":"2026-08-30T13:18:02.881096+00:00","proof_gate":"canonical_release_pending","source_sha":"a0388f961590a0cb6ea56065c479a3ec249e7b87","external_id":"forgejo-main-a0388f961590","receipt_type":"canonical_release_status","idempotency_key":"mission:f834420f-da7c-4878-8f13-0c1d756363ae:forgejo-release-status:a0388f961590a0cb6ea56065c479a3ec249e7b87:pending:forgejo-main/source=success|forgejo-release/workflow=pending|frontend-cloudflare/live=pending","mission_step_id":"80e00ee1-09bf-4bb7-81c5-52545bc96acc","command_center_event_id":"f834420f-da7c-4878-8f13-0c1d756363ae"},{"id":"be5299af-517f-4f1b-82ec-9d4edbecdefb","source":"durable-mission-ledger","status":"verified","payload":{"sourceSha":"c3aad10471e2ddc46af9bf72899dc6f034d8168d","requestContractProof":{"legacy":false,"present":true,"outcomes":[{"id":"outcome-1","satisfied":true,"statement":"Replace the stuck PCG mobile-intake repair with one fresh current-main repair and ship it live. Make Anthony's primary mobile intake flow Photos-first and easy to understand; ensure customer selection/add-customer and Card Vault controls meet 44px touch targets; explain front/back batch pairing clearly; and make each pending card visibly pair-centric with side-by-side Front and Back thumbnails plus Ready/Missing and Pair complete/Needs side status before upload. Preserve the existing pairing algorithm, upload behavior, automatic analysis/grading, tenant isolation, and desktop behavior. Carry through Gate, squash merge, frontend release, and live mobile owner verification.","proofConditionIds":["proof-anthony-mobile-intake-final"]}],"satisfied":true,"constraints":[{"id":"pairing-safety","satisfied":true,"statement":"Do not change the actual front/back pairing algorithm, card persistence, or automatic grading contract.","proofConditionIds":["proof-anthony-mobile-intake-final"]},{"id":"tenant-safety","satisfied":true,"statement":"Preserve tenant isolation and existing PCG data ownership.","proofConditionIds":["proof-anthony-mobile-intake-final"]},{"id":"capability-completeness","satisfied":true,"statement":"Every dependency the implementation declares or relies on must be wired and proven across applicable frontend, backend/runtime, schema/data/storage, authentication/authorization, provider configuration, prerequisite/loading/empty/error states, release ownership, and live production behavior; owner-authorized unavailable dependencies must become explicit prerequisite states rather than runtime failures.","proofConditionIds":["proof-anthony-mobile-intake-final"]},{"id":"atomic-capability-lifecycle","satisfied":true,"statement":"Changed capabilities remain non-active until dependency readiness, N/N-1 compatibility, affected-target release, and claim-matched production canary proof are satisfied; missing optional dependencies become prerequisite_required, and runtime drift or health-contract violation quarantines only the affected capability instead of breaking unrelated working capability.","proofConditionIds":["proof-anthony-mobile-intake-final"]}],"contractHash":"921f4b6b6763b1b23bf1252f907d083cb3ddcb61aacc293c6377aa39c1d7c57a","releaseBound":true,"witnessBound":false,"visualRequested":false,"visualSatisfied":true,"conditionResults":[{"id":"proof-anthony-mobile-intake-final","kind":"runtime","evidence":{"reason":null,"satisfied":true,"releaseState":"verified","missingTargets":[],"disallowedTargets":[],"migrationRequired":false,"releaseTargetStates":{"frontend":"success"},"unsuccessfulTargets":[],"activeReleaseTargets":["frontend"],"allowedReleaseTargets":["frontend"],"requiredReleaseTargets":["frontend"],"migrationReleaseVerified":null,"releaseRequestContractHash":"921f4b6b6763b1b23bf1252f907d083cb3ddcb61aacc293c6377aa39c1d7c57a"},"required":true,"satisfied":true}],"validationErrors":[],"pendingProofKinds":[],"activeReleaseTargets":["frontend"]},"authoritativeMissionRefresh":true,"evaluatedRequestContractRevision":1},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-06T04:48:36.466367+00:00","proof_gate":"request_contract_terminal_verified","source_sha":"c3aad10471e2ddc46af9bf72899dc6f034d8168d","external_id":null,"receipt_type":"request_contract_reconciliation","idempotency_key":"mission:31acf39c-38b1-4709-a17e-6d57389e498f:request-contract:921f4b6b6763b1b23bf1252f907d083cb3ddcb61aacc293c6377aa39c1d7c57a:c3aad10471e2ddc46af9bf72899dc6f034d8168d:verified:","mission_step_id":"aeeac6b7-b527-4f87-bb6a-f128d2b4b1f7","command_center_event_id":"31acf39c-38b1-4709-a17e-6d57389e498f"},{"id":"be52a1f4-f351-431b-b392-4e86e3212b2d","source":"forgejo","status":"waiting","payload":{"branch":"ai/academy-member-policy-auth-hardening","prNumber":3109,"nextAction":"Follow the existing canonical release to terminal proof.","mergeCommitSha":"4e9635e09b1fc511c5131e6d4e6cfccdd9e9f37c","branchDeletedAfterMerge":true,"correctiveGenerationCreated":false},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-18T15:13:04.144008+00:00","proof_gate":"forgejo_merged_pr_is_authoritative_source_lineage","source_sha":"4e9635e09b1fc511c5131e6d4e6cfccdd9e9f37c","external_id":"3109","receipt_type":"source_lineage_merged_pr_authoritative","idempotency_key":"mission:a4211dd9-cca6-4ee6-9a45-12f9c8df53cf:merged-pr:3109:4e9635e09b1fc511c5131e6d4e6cfccdd9e9f37c","mission_step_id":"9e2186f2-99d8-4bbe-b8cc-cb7c8b86dc62","command_center_event_id":"a4211dd9-cca6-4ee6-9a45-12f9c8df53cf"},{"id":"be52bef9-2a54-49f4-a1b0-6fcb02861de4","source":"cc-execution","status":"synthesis_required","payload":{"ok":true,"jobId":null,"phase":"implementation","branch":"ai/objective-first-repair-7abe35078501","reason":null,"status":"synthesis_required","metrics":{"receiptBytes":0,"releaseCount":0,"toolCallCount":0,"repeatedCallCount":0,"ownerInterruptionCount":0},"version":"1.58.177-tenant-source-scope","prNumber":null,"terminal":false,"missionId":"7abe3507-8501-4e63-b673-7e79d5861a9e","operation":"execute_mission","proofGate":"repair_mission_synthesis_ready","sourceSha":null,"timingsMs":{"gateMs":0,"proofMs":0,"handlerMs":601,"releaseMs":0,"mutationMs":0,"repositoryMs":0,"missionSetupMs":908,"providerAuthMs":0,"ledgerPrepareMs":908,"ledgerReconcileMs":0,"lineageReconcileMs":0,"resolvePreflightMs":908,"authoritativeLedgerMs":0,"ledgerAsyncDispatchMs":0,"totalSynchronousLedgerMs":908,"asyncBookkeepingDispatchMs":0,"ledgerAuthoritativeCommitMs":0},"nextAction":"Inspect the bounded repository paths, synthesize exact files or anchored_edits, and call /mission/execute again automatically with this same missionId without another owner prompt or workflow switch.","receiptRef":{"mode":"full","missionId":"7abe3507-8501-4e63-b673-7e79d5861a9e"},"performance":null,"deploymentId":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":4429,"likelyAffectedFiles":["src/pages/proposals/UniversalProposalWorkspace.tsx","package/cup","package"],"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-17T14:16:22.87965+00:00","proof_gate":"repair_mission_synthesis_ready","source_sha":null,"external_id":null,"receipt_type":"execute_mission","idempotency_key":"mission:7abe3507-8501-4e63-b673-7e79d5861a9e:execute_mission:repair_mission_synthesis_ready:current-generation","mission_step_id":"458e6bb7-888d-4ba0-8a03-b80bd0ca59e9","command_center_event_id":"7abe3507-8501-4e63-b673-7e79d5861a9e"},{"id":"be562c32-e344-4eb2-b539-89e43b1578aa","source":"cc-execution","status":"retryable","payload":{"ok":false,"jobId":null,"phase":"implementation","branch":"ai/big-papis-fundraiser-best-20260822","reason":"The operation was aborted due to timeout","status":"retryable","metrics":{"receiptBytes":1715,"releaseCount":0,"toolCallCount":1,"repeatedCallCount":0,"ownerInterruptionCount":0},"version":"1.50.16-onrunner-release-ownership","prNumber":589,"terminal":false,"missionId":"c0d45f2d-8409-4af0-b497-ebca6d32c221","operation":"execute_mission","proofGate":"canonical_release_transport_retryable","sourceSha":null,"timingsMs":null,"nextAction":"Reconcile this same mission and pull request automatically; do not create a replacement branch or PR.","receiptRef":{"mode":"full","missionId":"c0d45f2d-8409-4af0-b497-ebca6d32c221"},"performance":null,"deploymentId":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":5079,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-08-22T16:11:12.241531+00:00","proof_gate":"canonical_release_transport_retryable","source_sha":null,"external_id":"589","receipt_type":"execute_mission","idempotency_key":"mission:c0d45f2d-8409-4af0-b497-ebca6d32c221:execute_mission:canonical_release_transport_retryable","mission_step_id":"ea72ba69-55fb-4bf0-8a4f-c0be263137b3","command_center_event_id":"c0d45f2d-8409-4af0-b497-ebca6d32c221"},{"id":"be5a987d-b5fb-40db-97c1-a88bd906c322","source":"owner_authorized_full_backlog_cleanup","status":"recorded","payload":{"category":"platform_reliability","disposition":"superseded_execution_attempt","previousStatus":"retryable","sourcePreserved":true,"noCompletionClaim":true,"recoveryPortfolioId":"96ea42b4-2d81-3020-09df-dfbab4b2b656"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-11T16:14:39.646808+00:00","proof_gate":"source_objective_preserved_in_existing_mission_ledger","source_sha":null,"external_id":null,"receipt_type":"owner_backlog_disposition","idempotency_key":"owner-full-backlog-cleanup-20261011:b99e7c23-e639-484d-8e4d-2a72507ad05e","mission_step_id":null,"command_center_event_id":"b99e7c23-e639-484d-8e4d-2a72507ad05e"},{"id":"be5a9f19-8b9d-4998-b93a-1bdceb0a2c5e","source":"forgejo","status":"waiting","payload":{"branch":"ai/big-papis-mail-reader-logo-layout","prNumber":1886,"nextAction":"Follow the existing canonical release to terminal proof.","mergeCommitSha":"b4e00efb5a74d258c64305cbb68854991facaccf","branchDeletedAfterMerge":true,"correctiveGenerationCreated":false},"tenant_id":"766cfaa7-ac42-46c8-bbef-69d13268a29d","created_at":"2026-09-05T23:32:12.629164+00:00","proof_gate":"forgejo_merged_pr_is_authoritative_source_lineage","source_sha":"b4e00efb5a74d258c64305cbb68854991facaccf","external_id":"1886","receipt_type":"source_lineage_merged_pr_authoritative","idempotency_key":"mission:5e54bf13-67e0-425f-abbd-4712ed4fe248:merged-pr:1886:b4e00efb5a74d258c64305cbb68854991facaccf","mission_step_id":"912c8a2c-1e88-49e1-a0ab-e8d53e41127e","command_center_event_id":"5e54bf13-67e0-425f-abbd-4712ed4fe248"},{"id":"be5e6fc5-4aa0-4345-a2db-4093bf4c38b5","source":"cc-execution","status":"waiting","payload":{"kind":"heartbeat","message":"Still active in implementation.","nextAction":{"lane":"cc-execution","action":"continue_implementation","reason":"durable_state:implementation","automationAllowed":false,"ownerActionRequired":false},"silenceBudgetMs":15000,"semanticCheckpointSignature":"{\"stateMachineVersion\":1,\"phase\":\"implementation\",\"ownerFacingState\":null,\"latest\":{\"kind\":\"receipt\",\"key\":\"execute_mission\",\"status\":\"synthesis_required\",\"proofGate\":\"repair_mission_synthesis_ready\"},\"activeStep\":{\"key\":\"implementation\",\"status\":\"ready\",\"lane\":\"cc-execution\"},\"nextStep\":{\"key\":\"pull_request\",\"status\":\"ready\",\"lane\":\"cc-execution\"},\"nextSafeAction\":{\"action\":\"continue_implementation\",\"lane\":\"cc-execution\",\"reason\":\"durable_state:implementation\",\"automationAllowed\":false,\"ownerActionRequired\":false},\"acceptance\":{\"total\":3,\"verified\":0,\"pending\":3,\"percent\":0,\"satisfied\":false,\"verifiedIds\":[],\"pendingIds\":[\"runtime-recovery\",\"queue-safety\",\"parser-safety\"]},\"stall\":{\"stalled\":false,\"reason\":\"within_deadline\",\"step\":\"release\",\"deadlineAt\":\"2026-09-22T19:18:33.426067+00:00\",\"recoveryAction\":null},\"blocker\":null,\"terminal\":false,\"branch\":\"ai/objective-first-repair-40640cbda14e\",\"prNumber\":null,\"sourceSha\":null,\"deploymentId\":null}"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-22T16:33:03.265343+00:00","proof_gate":"owner_progress_heartbeat","source_sha":null,"external_id":null,"receipt_type":"owner_progress_heartbeat","idempotency_key":"mission:40640cbd-a14e-4862-82a9-e99470a84d9f:owner-progress-heartbeat:119339652","mission_step_id":"b1bfb6ee-c4e0-44de-9000-749856d33613","command_center_event_id":"40640cbd-a14e-4862-82a9-e99470a84d9f"},{"id":"be6064f4-90bd-4d5f-8122-ced0422ece7e","source":"github-status","status":"pending","payload":{"failed":[],"states":{"canonical-production-release/verified":"pending"},"missing":[],"pending":["canonical-production-release/verified"],"required":["canonical-production-release/verified"],"sourceSha":"c157cee53cb5a4c1458352abff3e5ae4c6bc0b5b","releaseState":"pending","exactConductorRun":{"id":31672767850,"status":"in_progress","headSha":"c157cee53cb5a4c1458352abff3e5ae4c6bc0b5b","conclusion":null,"compareStatus":"identical","sourceMatches":true,"containsSourceSha":true,"reconciliationMode":null},"ccExecutionRuntimeProof":null},"tenant_id":"a2929648-19db-46c8-9e93-07378ed1aa5f","created_at":"2026-08-13T06:08:55.165493+00:00","proof_gate":"canonical_release_pending","source_sha":"c157cee53cb5a4c1458352abff3e5ae4c6bc0b5b","external_id":"canonical-release-c157cee53cb5","receipt_type":"canonical_release_status","idempotency_key":"mission:2b77df48-75b0-4b6a-8970-9ef995337f1d:release-status:c157cee53cb5a4c1458352abff3e5ae4c6bc0b5b:31672767850:pending:canonical-production-release/verified=pending","mission_step_id":"293aed3a-aa34-40c9-9836-3dd470fea858","command_center_event_id":"2b77df48-75b0-4b6a-8970-9ef995337f1d"},{"id":"be60d4e9-c995-4fc6-a5e9-bfccb6cdc4ae","source":"durable-mission-ledger","status":"verified","payload":{"sourceSha":"8b2a2e58732e4de2d6803e7e06a98292fd0beafb","requestContractProof":{"legacy":false,"present":true,"outcomes":[{"id":"outcome-1","satisfied":true,"statement":"Fix the Prestigious Card Grading MODES route family so /pcg/DASHBOARD?mode=received, grading, completed, and mailed use the tenant's configured workspace background asset only, never the hero asset. Production tenant truth currently has distinct media_branding.resolved_background_asset_id=8fa9f944-25b2-4d23-84b3-e0a87bb369e5 and hero_background_asset_id=f553e4ef-b8f3-408a-b610-a59782b8f384. PcgWorkspace currently ignores tenant media branding and hard-codes PCG_WORKSPACE_BACKGROUND. Replace that with resolveTenantMediaBranding(activeTenant).backgroundUrl, falling back only to the tenant's explicit background_image_url/backgroundImageUrl fields and otherwise a solid dark background; do not fall back to the hero. Keep hero usage confined to the dashboard hero card. Ship through one small ai/* PR, Gate, squash merge, frontend deploy, and verify live that the four mode routes resolve the workspace background rather than the hero.","proofConditionIds":["proof-production"]}],"satisfied":true,"constraints":[{"id":"capability-completeness","satisfied":true,"statement":"Every dependency the implementation declares or relies on must be wired and proven across applicable frontend, backend/runtime, schema/data/storage, authentication/authorization, provider configuration, prerequisite/loading/empty/error states, release ownership, and live production behavior; owner-authorized unavailable dependencies must become explicit prerequisite states rather than runtime failures.","proofConditionIds":["proof-production"]},{"id":"atomic-capability-lifecycle","satisfied":true,"statement":"Changed capabilities remain non-active until dependency readiness, N/N-1 compatibility, affected-target release, and claim-matched production canary proof are satisfied; missing optional dependencies become prerequisite_required, and runtime drift or health-contract violation quarantines only the affected capability instead of breaking unrelated working capability.","proofConditionIds":["proof-production"]}],"contractHash":"cd995ba9c8257dbb1d5de412f8d14d0250aa19b93093e4aabd84889aef3f408c","releaseBound":true,"witnessBound":false,"visualRequested":false,"visualSatisfied":true,"conditionResults":[{"id":"proof-production","kind":"runtime","evidence":{"reason":null,"satisfied":true,"releaseState":"verified","missingTargets":[],"disallowedTargets":[],"migrationRequired":false,"releaseTargetStates":{"frontend":"success"},"unsuccessfulTargets":[],"activeReleaseTargets":["frontend"],"allowedReleaseTargets":[],"requiredReleaseTargets":[],"migrationReleaseVerified":null,"releaseRequestContractHash":"cd995ba9c8257dbb1d5de412f8d14d0250aa19b93093e4aabd84889aef3f408c"},"required":true,"satisfied":true}],"validationErrors":[],"pendingProofKinds":[],"activeReleaseTargets":["frontend"]},"authoritativeMissionRefresh":true,"evaluatedRequestContractRevision":1},"tenant_id":"9602e177-0cbb-496c-bdf5-2fbc93f1b859","created_at":"2026-09-20T03:11:08.292137+00:00","proof_gate":"request_contract_terminal_verified","source_sha":"8b2a2e58732e4de2d6803e7e06a98292fd0beafb","external_id":null,"receipt_type":"request_contract_reconciliation","idempotency_key":"mission:6b51375d-7ee2-4d4c-9a58-f48030f4bb5e:request-contract:cd995ba9c8257dbb1d5de412f8d14d0250aa19b93093e4aabd84889aef3f408c:8b2a2e58732e4de2d6803e7e06a98292fd0beafb:verified:","mission_step_id":"f5952d63-505a-4235-a51f-72ce4d2fa3ed","command_center_event_id":"6b51375d-7ee2-4d4c-9a58-f48030f4bb5e"},{"id":"be618b4e-66ed-42c4-b038-9ae4b96b832b","source":"forgejo-exact-source","status":"verified","payload":{"sourceSha":"83226f0c666ed42eeca8c90477771fccde72af31","repository":"noel/KnockLaunchOS","repositoryProofs":[{"id":"repo","path":null,"proof":"forgejo_merged_pr_exact_head_gate","headSha":"fdb9b2d7101cda93e23cf8bb8d46dd68f67bd7ac","prNumber":2433,"gateContext":"KnockLaunch Gate / KnockLaunch Gate (pull_request)","expectedText":null,"gateTargetUrl":"/noel/KnockLaunchOS/actions/runs/7212/jobs/1","mergeCommitSha":"83226f0c666ed42eeca8c90477771fccde72af31"},{"id":"gate","path":null,"proof":"forgejo_merged_pr_exact_head_gate","headSha":"fdb9b2d7101cda93e23cf8bb8d46dd68f67bd7ac","prNumber":2433,"gateContext":"KnockLaunch Gate / KnockLaunch Gate (pull_request)","expectedText":null,"gateTargetUrl":"/noel/KnockLaunchOS/actions/runs/7212/jobs/1","mergeCommitSha":"83226f0c666ed42eeca8c90477771fccde72af31"},{"id":"queue","path":null,"proof":"forgejo_merged_pr_exact_head_gate","headSha":"fdb9b2d7101cda93e23cf8bb8d46dd68f67bd7ac","prNumber":2433,"gateContext":"KnockLaunch Gate / KnockLaunch Gate (pull_request)","expectedText":null,"gateTargetUrl":"/noel/KnockLaunchOS/actions/runs/7212/jobs/1","mergeCommitSha":"83226f0c666ed42eeca8c90477771fccde72af31"}],"requestContractHash":"96f4625ea294de7a747054ce01a8ae45f5d2fdb8e48b8d260d5f61a99408e5d3"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-11T21:56:24.887027+00:00","proof_gate":"request_contract_repository_verified","source_sha":"83226f0c666ed42eeca8c90477771fccde72af31","external_id":null,"receipt_type":"request_contract_repository_status","idempotency_key":"mission:96df8399-ea05-4017-adf5-b8f5cbc1e960:request-contract-repository:96f4625ea294de7a747054ce01a8ae45f5d2fdb8e48b8d260d5f61a99408e5d3:83226f0c666ed42eeca8c90477771fccde72af31","mission_step_id":"93b90b4d-4b0d-4b61-841f-688cf59addf7","command_center_event_id":"96df8399-ea05-4017-adf5-b8f5cbc1e960"},{"id":"be6368d3-d373-41f8-ba76-22c5ecd06981","source":"cc-execution","status":"blocked","payload":{"reason":"anchored_edit_invalid","fingerprint":"cf5be6a2e373aa9292fb412ee923ebacc5cf87d5700e45df079b6f5904bc5a4d"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-04T09:49:51.509089+00:00","proof_gate":"repository_mutation_intent_deterministic_failure","source_sha":null,"external_id":null,"receipt_type":"repository_mutation_intent_blocked","idempotency_key":"mission:97a6bb3f-9a01-4a57-a53f-e8aa9d508fc6:repository-mutation-intent-blocked:cf5be6a2e373aa9292fb412ee923ebacc5cf87d5700e45df079b6f5904bc5a4d","mission_step_id":"82568f45-fec0-4318-ac08-ebbd4ec01b0a","command_center_event_id":"97a6bb3f-9a01-4a57-a53f-e8aa9d508fc6"},{"id":"be63e694-76d7-4dd9-808c-51353fd22f00","source":"forgejo-runtime","status":"pending","payload":{"failed":[],"states":{"forgejo-main/source":"success","forgejo-release/workflow":"pending","frontend-cloudflare/live":"pending","cc-execution/runtime-proof":"success"},"mainSha":"29788369be45a7b04d28a1dcfccd62d8dd834c14","missing":[],"pending":["forgejo-release/workflow","frontend-cloudflare/live"],"required":["forgejo-main/source","forgejo-release/workflow","cc-execution/runtime-proof","frontend-cloudflare/live"],"sourceSha":"29788369be45a7b04d28a1dcfccd62d8dd834c14","releaseState":"pending","sourceInMain":true,"compareStatus":"protected_main_push_exact_source","releaseTargets":{"frontend":true,"onrunner":false,"migrations":false,"ccExecution":true,"supabaseEdge":false,"edgeFunctionSlugs":[]},"releaseTargetStates":{"frontend":"pending","ccExecution":"success"},"requestContractHash":"945dc8d5af2a25a3077fad6bcd8d17db4d302aa229de2913eec92b5e352e88f0","forgejoWorkflowProof":{"url":"https://git.knocklaunch.app/noel/KnockLaunchOS/actions/runs/12217","runId":12217,"status":"running","sourceSha":"29788369be45a7b04d28a1dcfccd62d8dd834c14","conclusion":null,"failedJobs":[],"diagnostics":null,"exactSource":true,"targetStates":{"frontend":"pending","ccExecution":"success"},"targetJobCount":7,"observedTargetStates":{"frontend":"pending","ccExecution":"pending"}},"onrunnerRuntimeProof":null,"releaseSourceVerified":true,"ccExecutionRuntimeProof":{"liveSha":"29788369be45a7b04d28a1dcfccd62d8dd834c14","proofGate":"cc_execution_target_aware_runtime_identity_verified","deploymentId":"forgejo-main-29788369be45a7b04d28a1dcfccd62d8dd834c14","compareStatus":"target_job_success_runtime_verified","workflowRunId":12217,"identitySource":"canonical_release_target_job","runtimeVersion":"1.58.293-scheduler-v2","workflowFailed":false,"containsSourceSha":true},"releaseTargetRecoveryProof":null,"exactReleaseVerifiedAfterMainAdvanced":false},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-27T15:25:34.167028+00:00","proof_gate":"canonical_release_pending","source_sha":"29788369be45a7b04d28a1dcfccd62d8dd834c14","external_id":"forgejo-main-29788369be45","receipt_type":"canonical_release_status","idempotency_key":"mission:9d088d79-55f2-4991-b7db-999b3335bec5:forgejo-release-status:29788369be45a7b04d28a1dcfccd62d8dd834c14:pending:forgejo-main/source=success|forgejo-release/workflow=pending|cc-execution/runtime-proof=success|frontend-cloudflare/live=pending","mission_step_id":"d89214dd-d3a1-4519-ac21-2943b64709c7","command_center_event_id":"9d088d79-55f2-4991-b7db-999b3335bec5"},{"id":"be65ac47-e821-4075-89ed-0430a2a15968","source":"cc-execution","status":"authorized","payload":{"paths":["workers/cc-execution/src/index-mission-control.js","workers/cc-execution/src/version.js","workers/cc-execution/test/release-orchestration-invariants.test.js"],"reason":"Owner explicitly unfreezed the control plane for cancelled-release descendant recovery. This bounded corrective generation removes an unproven Forgejo dispatch extension, adds exact mutation read-back, and makes dispatch failures durably observable.","baseSha":"d8afce3a5c629d6ead06c1edb24bc7c2ecf61b12","issuedAt":1789592756987,"expiresAt":1789592936987,"missionId":"a790862f-7b32-4d51-90b1-4f9ecc811243","authorizationId":"9ffaf56b-caca-4b59-b373-b8fc87c843fc","retryableWithinExactScope":true},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-16T21:05:57.535973+00:00","proof_gate":"control_plane_maintenance_scope_authorized","source_sha":"d8afce3a5c629d6ead06c1edb24bc7c2ecf61b12","external_id":null,"receipt_type":"control_plane_maintenance_authorization","idempotency_key":"control-plane-maintenance-authorize:9ffaf56b-caca-4b59-b373-b8fc87c843fc","mission_step_id":"3f6127c5-0eb8-4e10-bb77-2208870880ef","command_center_event_id":"a790862f-7b32-4d51-90b1-4f9ecc811243"},{"id":"be664493-516a-44eb-ada6-f4f769481eac","source":"cc-execution","status":"retryable","payload":{"ok":false,"jobId":null,"phase":"pull_request","branch":"ai/objective-first-repair-e2ea0ccb3f6b","reason":"retryable_provider_transport:forgejo_provider_read_timeout","status":"retryable","metrics":{"receiptBytes":26898,"releaseCount":0,"toolCallCount":9,"repeatedCallCount":3,"executorlessWaitMs":79550,"firstUsefulResultAt":"2026-10-02T12:08:54.867Z","recoveryAttemptCount":3,"ownerInterruptionCount":0},"version":null,"prNumber":4456,"terminal":false,"missionId":"e2ea0ccb-3f6b-4597-a92c-a86b964d2b7c","operation":"automatic_mission_resume","proofGate":"repair_mission_pr_ready_retryable","sourceSha":null,"timingsMs":{"prReadinessMs":2187,"approvedPlanMs":0,"shipAndProveMs":0,"repositoryMutationMs":0,"repositoryProviderMs":0,"repositoryAtomicCommitMs":0,"repositoryBranchCreateMs":0,"repositoryPullRequestCreateMs":0},"nextAction":"Reconcile this same mission and pull request automatically; do not create a replacement branch or PR.","receiptRef":{"mode":"full","missionId":"e2ea0ccb-3f6b-4597-a92c-a86b964d2b7c"},"performance":null,"deploymentId":null,"releaseState":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","pendingProofKinds":["runtime"],"verificationState":null,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":819,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true,"requestContractState":"pending"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-02T12:10:05.590199+00:00","proof_gate":"repair_mission_pr_ready_retryable","source_sha":null,"external_id":"4456","receipt_type":"automatic_mission_resume","idempotency_key":"mission:e2ea0ccb-3f6b-4597-a92c-a86b964d2b7c:automatic-mission-resume:4456:repair_mission_pr_ready_retryable","mission_step_id":"b7606006-aa79-425c-a8de-37640a303bb5","command_center_event_id":"e2ea0ccb-3f6b-4597-a92c-a86b964d2b7c"},{"id":"be67c950-d87a-4ad5-aff6-19cbc270370d","source":"forgejo","status":"waiting","payload":{"branch":"ai/objective-first-repair-2ba528e0fe44","prNumber":4561,"nextAction":"Follow the existing canonical release to terminal proof.","mergeCommitSha":"f4a37491d8214614ebb421999bef094a15d876f4","branchDeletedAfterMerge":true,"correctiveGenerationCreated":false},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-02T23:20:32.773871+00:00","proof_gate":"forgejo_merged_pr_is_authoritative_source_lineage","source_sha":"f4a37491d8214614ebb421999bef094a15d876f4","external_id":"4561","receipt_type":"source_lineage_merged_pr_authoritative","idempotency_key":"mission:2ba528e0-fe44-404f-a383-f4ae3d37a699:merged-pr:4561:f4a37491d8214614ebb421999bef094a15d876f4","mission_step_id":"06da0524-8f9a-436a-a693-69753a359d48","command_center_event_id":"2ba528e0-fe44-404f-a383-f4ae3d37a699"},{"id":"be681523-e18e-47c1-bce8-c20bba43f58b","source":"forgejo","status":"waiting","payload":{"branch":"","prNumber":2370,"nextAction":"Follow the existing canonical release to terminal proof.","mergeCommitSha":"860e304746868270db17193132761fdca17ac98d","branchDeletedAfterMerge":true,"correctiveGenerationCreated":false},"tenant_id":"de8369b6-a78f-40bb-ae1f-28ffca62bc7e","created_at":"2026-09-11T04:57:35.341396+00:00","proof_gate":"forgejo_merged_pr_is_authoritative_source_lineage","source_sha":"860e304746868270db17193132761fdca17ac98d","external_id":"2370","receipt_type":"source_lineage_merged_pr_authoritative","idempotency_key":"mission:a59b31ca-5dca-4f91-bbbe-c59f177ab5f0:merged-pr:2370:860e304746868270db17193132761fdca17ac98d","mission_step_id":"e91e19e5-764d-4f82-aaa4-e7d48bbad95a","command_center_event_id":"a59b31ca-5dca-4f91-bbbe-c59f177ab5f0"},{"id":"be6815ce-8f5b-4c24-bcc4-d3c4fed74266","source":"forgejo-runtime","status":"pending","payload":{"mainSha":"78c897179420d7ef7228abc23b0f77e95c57b2a0","sourceSha":"4050f74e770da0b5183fc97fea47574068852c81","sourceInMain":false,"compareStatus":"main_history_page_inconclusive","ancestryProofResolved":false},"tenant_id":"a2929648-19db-46c8-9e93-07378ed1aa5f","created_at":"2026-10-04T13:28:29.136609+00:00","proof_gate":"canonical_release_ancestry_pending","source_sha":"4050f74e770da0b5183fc97fea47574068852c81","external_id":"canonical-release-4050f74e770d","receipt_type":"canonical_release_status","idempotency_key":"mission:92e5bbd2-7a15-4837-bf18-04c1ae762636:forgejo-release-ancestry:4050f74e770da0b5183fc97fea47574068852c81:78c897179420d7ef7228abc23b0f77e95c57b2a0:main_history_page_inconclusive","mission_step_id":"02920acf-82c3-4f40-a55c-984b804eff44","command_center_event_id":"92e5bbd2-7a15-4837-bf18-04c1ae762636"},{"id":"be688559-ca23-42a9-9292-c15769c90a43","source":"cc-execution","status":"deployment_dispatched","payload":{"ok":true,"jobId":null,"phase":"pull_request","branch":"ai/control-plane-gate-capacity-proof-20260904","reason":null,"status":"deployment_dispatched","metrics":{"receiptBytes":0,"releaseCount":0,"toolCallCount":0,"repeatedCallCount":0,"ownerInterruptionCount":0},"version":"1.58.49-control-plane-gate-capacity-refreeze","prNumber":1709,"terminal":false,"missionId":"f15718c8-e8a7-4f81-bb96-083fe4d341b8","operation":"execute_mission","proofGate":"canonical_release_dispatched","sourceSha":"76b610b64d4812287420b5ba10073806cb124f7f","timingsMs":{"gateMs":0,"proofMs":0,"handlerMs":5547,"releaseMs":0,"mutationMs":0,"repositoryMs":0,"prReadinessMs":700,"approvedPlanMs":0,"missionSetupMs":533,"providerAuthMs":0,"shipAndProveMs":4669,"ledgerPrepareMs":351,"ledgerReconcileMs":0,"lineageReconcileMs":182,"resolvePreflightMs":533,"repositoryMutationMs":0,"repositoryProviderMs":0,"authoritativeLedgerMs":0,"ledgerAsyncDispatchMs":0,"repositoryAtomicCommitMs":0,"repositoryBranchCreateMs":0,"totalSynchronousLedgerMs":351,"asyncBookkeepingDispatchMs":0,"ledgerAuthoritativeCommitMs":0,"repositoryPullRequestCreateMs":0},"nextAction":null,"receiptRef":{"mode":"full","missionId":"f15718c8-e8a7-4f81-bb96-083fe4d341b8"},"performance":null,"deploymentId":"forgejo-main-76b610b64d48","workflowRunId":null,"releaseTargets":{"frontend":false,"onrunner":false,"migrations":false,"ccExecution":false,"supabaseEdge":false,"edgeFunctionSlugs":[]},"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":2641,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-04T14:05:14.015082+00:00","proof_gate":"canonical_release_dispatched","source_sha":"76b610b64d4812287420b5ba10073806cb124f7f","external_id":"forgejo-main-76b610b64d48","receipt_type":"execute_mission","idempotency_key":"mission:f15718c8-e8a7-4f81-bb96-083fe4d341b8:execute_mission:canonical_release_dispatched:current-generation","mission_step_id":"fae206da-4555-4131-8af1-99cfa4e7e37f","command_center_event_id":"f15718c8-e8a7-4f81-bb96-083fe4d341b8"},{"id":"be693ae6-9d60-4cc8-aa16-f3216d2a5fd1","source":"cc-execution","status":"waiting_for_gate","payload":{"ok":true,"jobId":null,"phase":"implementation","branch":"ai/objective-first-repair-9372a5c933f9","reason":"provider_verified_auto_progress_owns_gate_merge_release_outside_owner_response","status":"waiting_for_gate","metrics":{"receiptBytes":0,"releaseCount":0,"toolCallCount":0,"repeatedCallCount":0,"ownerInterruptionCount":0},"version":"1.58.182-witness-render-cold-start-aware","prNumber":3080,"terminal":false,"missionId":"9372a5c9-33f9-4d86-a71b-263b956e2018","operation":"execute_mission","proofGate":"repair_mission_pr_handed_off_to_supervisor","sourceSha":null,"timingsMs":{"gateMs":0,"proofMs":0,"handlerMs":8165,"releaseMs":0,"mutationMs":0,"repositoryMs":0,"prReadinessMs":0,"approvedPlanMs":871,"missionSetupMs":212,"providerAuthMs":0,"shipAndProveMs":0,"ledgerPrepareMs":212,"ledgerReconcileMs":0,"lineageReconcileMs":0,"resolvePreflightMs":212,"repositoryMutationMs":7294,"repositoryProviderMs":7294,"authoritativeLedgerMs":0,"ledgerAsyncDispatchMs":0,"repositoryAtomicCommitMs":3693,"repositoryBranchCreateMs":0,"totalSynchronousLedgerMs":212,"asyncBookkeepingDispatchMs":0,"ledgerAuthoritativeCommitMs":0,"repositoryPullRequestCreateMs":3601},"nextAction":"Canonical KnockLaunch Gate notifier and durable mission supervisor own Gate, merge, release, and proof progression from this exact PR head outside the owner response path.","receiptRef":{"mode":"full","missionId":"9372a5c9-33f9-4d86-a71b-263b956e2018"},"performance":null,"deploymentId":null,"releaseState":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","pendingProofKinds":["runtime"],"verificationState":null,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":3120,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true,"requestContractState":"pending"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-18T04:21:19.75564+00:00","proof_gate":"repair_mission_pr_handed_off_to_supervisor","source_sha":null,"external_id":"3080","receipt_type":"execute_mission","idempotency_key":"mission:9372a5c9-33f9-4d86-a71b-263b956e2018:execute_mission:repair_mission_pr_handed_off_to_supervisor:current-generation","mission_step_id":"1277874d-d0b7-4b31-923b-670e22db31d3","command_center_event_id":"9372a5c9-33f9-4d86-a71b-263b956e2018"},{"id":"be69e321-d784-4b04-be37-510794439c16","source":"cc-execution","status":"deployment_dispatched","payload":{"ok":true,"jobId":null,"phase":"pull_request","branch":"ai/objective-first-repair-feaef390dbfc","reason":null,"status":"deployment_dispatched","metrics":{"receiptBytes":0,"releaseCount":0,"toolCallCount":0,"repeatedCallCount":0,"ownerInterruptionCount":0},"version":null,"prNumber":2874,"terminal":false,"missionId":"feaef390-dbfc-4504-aa99-3544f5dd0385","operation":"automatic_mission_resume","proofGate":"canonical_release_dispatched","sourceSha":"65ed5c24c4f92d0c15f44f3f7f4b663216ab0171","timingsMs":{"prReadinessMs":1311,"approvedPlanMs":0,"shipAndProveMs":9835,"repositoryMutationMs":0,"repositoryProviderMs":0,"repositoryAtomicCommitMs":0,"repositoryBranchCreateMs":0,"repositoryPullRequestCreateMs":0},"nextAction":null,"receiptRef":{"mode":"full","missionId":"feaef390-dbfc-4504-aa99-3544f5dd0385"},"performance":null,"deploymentId":"forgejo-main-65ed5c24c4f9","workflowRunId":null,"releaseTargets":{"frontend":false,"onrunner":false,"migrations":false,"ccExecution":false,"supabaseEdge":true,"edgeFunctionSlugs":[]},"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":1942,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-16T03:22:15.12946+00:00","proof_gate":"canonical_release_dispatched","source_sha":null,"external_id":"2874","receipt_type":"automatic_mission_resume","idempotency_key":"mission:feaef390-dbfc-4504-aa99-3544f5dd0385:automatic-mission-resume:2874:canonical_release_dispatched","mission_step_id":"85a35ca1-04fe-45ae-b472-b1b296eee504","command_center_event_id":"feaef390-dbfc-4504-aa99-3544f5dd0385"},{"id":"be6b126b-9e9d-4b65-8deb-a3c8a7e89e92","source":"cc-execution","status":"retryable","payload":{"ok":false,"jobId":null,"phase":"pull_request","branch":"ai/fix-closed-pr-mission-reconciliation-20260829","reason":"The operation was aborted due to timeout","status":"retryable","metrics":{"receiptBytes":7013,"releaseCount":0,"toolCallCount":6,"repeatedCallCount":0,"ownerInterruptionCount":0},"version":"1.55.8-readiness-resilience","prNumber":1003,"terminal":false,"missionId":"14f30325-5b3a-492a-87e2-092730ac29fb","operation":"execute_mission","proofGate":"canonical_release_transport_retryable","sourceSha":null,"timingsMs":{"handlerMs":19635,"prReadinessMs":1925,"approvedPlanMs":0,"missionSetupMs":1802,"shipAndProveMs":17704},"nextAction":"Reconcile this same mission and pull request automatically; do not create a replacement branch or PR.","receiptRef":{"mode":"full","missionId":"14f30325-5b3a-492a-87e2-092730ac29fb"},"performance":null,"deploymentId":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":5238,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-08-29T11:56:50.145492+00:00","proof_gate":"canonical_release_transport_retryable","source_sha":null,"external_id":"1003","receipt_type":"execute_mission","idempotency_key":"mission:14f30325-5b3a-492a-87e2-092730ac29fb:execute_mission:canonical_release_transport_retryable:current-generation","mission_step_id":"a2e142ef-f053-4c1e-b83d-01a51af13866","command_center_event_id":"14f30325-5b3a-492a-87e2-092730ac29fb"},{"id":"be6bd9af-5d1e-4afa-a0ab-920f1364f00d","source":"cc-execution","status":"recorded","payload":{"requestContract":{"valid":true,"intent":{"evidence":[],"confidence":null,"rawUtterance":"Unfreeze the control plane for the Forgejo Actions watchdog repair. Finalize PR #1981 by restoring the established Forgejo restart-budget policy wording without changing any restart limit, cooldown, or recovery primitive; retain the already-prepared split-vantage Actions brownout repair, then gate, merge, release, refresh the host agent, and prove live health.","wordingChanged":false,"canonicalIntent":"Unfreeze the control plane for the Forgejo Actions watchdog repair. Finalize PR #1981 by restoring the established Forgejo restart-budget policy wording without changing any restart limit, cooldown, or recovery primitive; retain the already-prepared split-vantage Actions brownout repair, then gate, merge, release, refresh the host agent, and prove live health.","resolutionStatus":"exact","uniqueResolution":true,"clarificationRequired":false},"source":"explicit","version":1,"outcomes":[{"id":"actions","statement":"Detect external Actions brownouts independently of host base health and use only the existing bounded recovery path.","proofConditionIds":["repo","cc","host","actions-live"]},{"id":"budget","statement":"Preserve the established Forgejo automatic, emergency, and operator restart-budget contract exactly.","proofConditionIds":["repo"]}],"objective":"Unfreeze the control plane for the Forgejo Actions watchdog repair. Finalize PR #1981 by restoring the established Forgejo restart-budget policy wording without changing any restart limit, cooldown, or recovery primitive; retain the already-prepared split-vantage Actions brownout repair, then gate, merge, release, refresh the host agent, and prove live health.","constraints":[{"id":"single-pr","statement":"Keep the repair on existing PR #1981 and do not add another restart primitive.","proofConditionIds":["repo"]}],"terminalPolicy":"all_required_proof_conditions_satisfied_after_live_release","proofConditions":[{"id":"repo","kind":"repository","claim":"Main contains split-vantage Actions brownout repair with the established restart-budget contract preserved.","route":null,"roleRef":null,"userRef":null,"required":true,"expectedText":null,"targetedActions":[],"allowedReleaseTargets":[],"requiredReleaseTargets":[]},{"id":"cc","kind":"runtime","claim":"Live cc-execution combined self-heal probe is healthy.","route":null,"roleRef":null,"userRef":null,"required":true,"expectedText":null,"targetedActions":[],"allowedReleaseTargets":[],"requiredReleaseTargets":[]},{"id":"host","kind":"runtime","claim":"Fresh signed host watchdog is timer-active and base-health passing.","route":null,"roleRef":null,"userRef":null,"required":true,"expectedText":null,"targetedActions":[],"allowedReleaseTargets":[],"requiredReleaseTargets":[]},{"id":"actions-live","kind":"runtime","claim":"Live authenticated Actions-runs read succeeds.","route":null,"roleRef":null,"userRef":null,"required":true,"expectedText":null,"targetedActions":[],"allowedReleaseTargets":[],"requiredReleaseTargets":[]}],"validationErrors":[]},"requestContractHash":"c44a6b13fa752d8c41cdf22a8336d8e712ee88b21824339285640256987887c6","requestContractRevision":9,"previousRequestContractHash":"be417ad2b86bcf088a6beec195b0d8c454a814f2c4549a6026469e566b010136"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-06T18:33:11.824509+00:00","proof_gate":"request_contract_revision_recorded","source_sha":null,"external_id":null,"receipt_type":"request_contract_revision","idempotency_key":"mission:eefb30a0-f136-4476-a59c-0e23c11e6147:request-contract:c44a6b13fa752d8c41cdf22a8336d8e712ee88b21824339285640256987887c6","mission_step_id":"6bf0ef62-3567-47c1-98e5-b545dc2a6f21","command_center_event_id":"eefb30a0-f136-4476-a59c-0e23c11e6147"},{"id":"be6cf421-333e-4395-bdb8-40bac237d98a","source":"cc-execution","status":"waiting","payload":{"body":{"ship":true,"files":[],"branch":"ai/objective-first-repair-a22f48e4411f","writes":[],"patches":[],"version":1,"approved":true,"missionId":"a22f48e4-411f-4e2c-a36b-06e9e05cec76","repository":"noel/KnockLaunchOS","ownerApproved":true,"releaseIntent":null,"sourceTargets":["scripts/visual-witness-hosted-runner/src/universal-witness.mjs"],"anchored_edits":[{"path":"scripts/visual-witness-hosted-runner/src/universal-witness.mjs","anchor":"    if (!shellReady) {\n      touch(job, 'route_shell_timeout_diagnostics', {\n        viewport,\n        currentViewport: viewport,\n        currentRoute: routePath,\n        shellTimeoutMs: effectiveShellTimeoutMs,\n        shellReadinessStrategy,\n        readinessActionId: explicitTargetReadinessAction?.id || null,\n        routesVisited: job.progress?.routesVisited || 0,\n        actionsUsed: job.progress?.actionsUsed || 0,\n      });\n      await persistJob(job);\n      const shellTimeoutSnapshot = await withIoTimeout(\n        captureRouteDiagnosticSnapshot(page, projection, 'application_shell_timeout'),\n        APPLICATION_SHELL_DIAGNOSTIC_TIMEOUT_MS,\n        'application_shell_timeout_snapshot',\n      ).catch((error) => ({\n        stage: 'application_shell_timeout',\n        observedAt: new Date().toISOString(),\n        url: sanitizeDiagnosticUrl(page.url(), APP_ORIGIN),\n        expected: {\n          authorityUserId: projection?.operator?.id || null,\n          tenantId: projection?.tenant?.id || null,\n          tenantSlug: projection?.tenant?.company_slug || null,\n          experienceUserId: projection?.actor?.user?.id || projection?.operator?.id || null,\n          experienceRole: projection?.actor?.experienceRole || null,\n        },\n        projectionInvariantsHeld: null,\n        projectionInvariantFailures: [],\n        projectionDiagnosticUnavailable: true,\n        diagnosticFailure: redact(error instanceof Error ? error.message : String(error)),\n      }));\n      stageDiagnostics.push(shellTimeoutSnapshot);\n      const observation = await withIoTimeout(\n        observePage(page, viewport),\n        APPLICATION_SHELL_DIAGNOSTIC_TIMEOUT_MS,\n        'application_shell_timeout_observation',\n      ).catch((error) => ({\n        title: '', bodyText: '', startup: {}, headings: [], controls: [],\n        issues: [{ code: 'witness_diagnostic_unavailable', severity: 'high', detail: redact(error instanceof Error ? error.message : String(error)) }],\n      }));","expectedSha":"540b27d2a3091dcc5115f9f7a5693fa182a2250c","replacement":"    if (!shellReady) {\n      const shellTimeoutDiagnosticProgress = {\n        viewport,\n        currentViewport: viewport,\n        currentRoute: routePath,\n        shellTimeoutMs: effectiveShellTimeoutMs,\n        shellReadinessStrategy,\n        readinessActionId: explicitTargetReadinessAction?.id || null,\n        routesVisited: job.progress?.routesVisited || 0,\n        actionsUsed: job.progress?.actionsUsed || 0,\n      };\n      touch(job, 'route_shell_timeout_diagnostics', shellTimeoutDiagnosticProgress);\n      await persistJob(job);\n      const shellTimeoutSnapshot = await withExecutionLeaseHeartbeat(\n        job,\n        'route_shell_timeout_diagnostics',\n        shellTimeoutDiagnosticProgress,\n        () => withIoTimeout(\n          captureRouteDiagnosticSnapshot(page, projection, 'application_shell_timeout'),\n          APPLICATION_SHELL_DIAGNOSTIC_TIMEOUT_MS,\n          'application_shell_timeout_snapshot',\n        ),\n      ).catch((error) => ({\n        stage: 'application_shell_timeout',\n        observedAt: new Date().toISOString(),\n        url: sanitizeDiagnosticUrl(page.url(), APP_ORIGIN),\n        expected: {\n          authorityUserId: projection?.operator?.id || null,\n          tenantId: projection?.tenant?.id || null,\n          tenantSlug: projection?.tenant?.company_slug || null,\n          experienceUserId: projection?.actor?.user?.id || projection?.operator?.id || null,\n          experienceRole: projection?.actor?.experienceRole || null,\n        },\n        projectionInvariantsHeld: null,\n        projectionInvariantFailures: [],\n        projectionDiagnosticUnavailable: true,\n        diagnosticFailure: redact(error instanceof Error ? error.message : String(error)),\n      }));\n      stageDiagnostics.push(shellTimeoutSnapshot);\n      const observation = await withExecutionLeaseHeartbeat(\n        job,\n        'route_shell_timeout_diagnostics',\n        shellTimeoutDiagnosticProgress,\n        () => withIoTimeout(\n          observePage(page, viewport),\n          APPLICATION_SHELL_DIAGNOSTIC_TIMEOUT_MS,\n          'application_shell_timeout_observation',\n        ),\n      ).catch((error) => ({\n        title: '', bodyText: '', startup: {}, headings: [], controls: [],\n        issues: [{ code: 'witness_diagnostic_unavailable', severity: 'high', detail: redact(error instanceof Error ? error.message : String(error)) }],\n      }));"}],"implementation":{"files":[],"writes":[]},"requestContract":null,"repairGeneration":null,"executionEnvelope":{"ship":true,"version":1,"approved":true,"missionId":"a22f48e4-411f-4e2c-a36b-06e9e05cec76","ownerApproved":true,"releaseIntent":null,"sourceTargets":["scripts/visual-witness-hosted-runner/src/universal-witness.mjs"],"requestContract":null,"repairGeneration":null,"proofRequirements":null,"controlPlaneUnfreeze":false,"controlPlaneMaintenance":false,"controlPlaneMaintenancePaths":[],"controlPlaneMaintenanceReason":null},"proofRequirements":null,"controlPlaneUnfreeze":false,"durableMutationResume":true,"controlPlaneMaintenance":false,"controlPlaneMaintenancePaths":[],"controlPlaneMaintenanceReason":null},"recovery":false,"fingerprint":"95b18b9498d63ebcb405047a366372afe5c5193796c6ba4a76bbfeed7644b1ef","replayCount":0,"serializedBytes":5665},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-25T10:32:13.281971+00:00","proof_gate":"repository_mutation_intent_persisted","source_sha":null,"external_id":null,"receipt_type":"repository_mutation_intent","idempotency_key":"mission:a22f48e4-411f-4e2c-a36b-06e9e05cec76:repository-mutation-intent:95b18b9498d63ebcb405047a366372afe5c5193796c6ba4a76bbfeed7644b1ef:0","mission_step_id":"a9cc5e0b-6cf9-42b7-8ac9-f1aba075f535","command_center_event_id":"a22f48e4-411f-4e2c-a36b-06e9e05cec76"},{"id":"be6dd000-1d0b-448e-a734-f3a2e803c7bc","source":"cc-execution","status":"authorized","payload":{"paths":[".forgejo/workflows/knocklaunch.yml"],"reason":"Owner-authorized bounded release recovery for the exact frontend sparse-checkout dependency.","baseSha":"2f45cf0c571e47075a2a5bff946cc368264c1dc4","issuedAt":1790853867637,"expiresAt":1790854047637,"missionId":"c712d2cc-4776-4e2c-bf18-e54875e8de04","authorizationId":"6b98e6d1-b719-4af5-82f2-0ecfb775c5c0","retryableWithinExactScope":true},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-01T11:24:27.922635+00:00","proof_gate":"control_plane_maintenance_scope_authorized","source_sha":"2f45cf0c571e47075a2a5bff946cc368264c1dc4","external_id":null,"receipt_type":"control_plane_maintenance_authorization","idempotency_key":"control-plane-maintenance-authorize:6b98e6d1-b719-4af5-82f2-0ecfb775c5c0","mission_step_id":"ad66a43a-ba00-47f7-9f2e-4ef1e00f28b9","command_center_event_id":"c712d2cc-4776-4e2c-bf18-e54875e8de04"},{"id":"be75bdf9-18ea-4407-9ec6-5198ea3ff313","source":"durable-mission-ledger","status":"verified","payload":{"sourceSha":"0273206831462bb487f4d04002b4dae0f9c4c5c7","requestContractProof":{"legacy":false,"present":true,"outcomes":[{"id":"popup-separation","satisfied":true,"statement":"Starting Big Papi Start Pop-Up creates a standalone popup_session calendar entry and does not create an event_booking or navigate to Event Day.","proofConditionIds":["production-release"]},{"id":"public-calendar","satisfied":true,"statement":"The Pop-Up calendar session is marked public_schedule=true and tenant-wide active-session detection prevents duplicate live Pop-Ups across operators.","proofConditionIds":["production-release"]},{"id":"flavor-loadout","satisfied":true,"statement":"Stock Check matches the Start Pop-Up visual system, starts with zero selected flavors, supports progressive add/remove dropdown rows from the full live flavor inventory, and prevents duplicate flavor choices.","proofConditionIds":["production-release"]},{"id":"remove-prepare","satisfied":true,"statement":"Prepare for Pop-Up controls are removed from the Pop-Up start flow and Pop-Up mode quick actions.","proofConditionIds":["production-release"]}],"satisfied":true,"constraints":[{"id":"booked-event-preservation","satisfied":true,"statement":"Booked Event remains separate and retains its existing Event Day routing and workflow.","proofConditionIds":["production-release"]},{"id":"capability-completeness","satisfied":true,"statement":"Every dependency the implementation declares or relies on must be wired and proven across applicable frontend, backend/runtime, schema/data/storage, authentication/authorization, provider configuration, prerequisite/loading/empty/error states, release ownership, and live production behavior; owner-authorized unavailable dependencies must become explicit prerequisite states rather than runtime failures.","proofConditionIds":["production-release"]},{"id":"atomic-capability-lifecycle","satisfied":true,"statement":"Changed capabilities remain non-active until dependency readiness, N/N-1 compatibility, affected-target release, and claim-matched production canary proof are satisfied; missing optional dependencies become prerequisite_required, and runtime drift or health-contract violation quarantines only the affected capability instead of breaking unrelated working capability.","proofConditionIds":["production-release"]}],"contractHash":"8253b4a9b232ea863609c44966dcd6aee54e650b79c98522e4df0f66105ddc05","releaseBound":true,"witnessBound":false,"visualRequested":false,"visualSatisfied":true,"conditionResults":[{"id":"production-release","kind":"release","evidence":{"reason":null,"satisfied":true,"releaseState":"verified","missingTargets":[],"disallowedTargets":[],"migrationRequired":false,"releaseTargetStates":{"frontend":"success"},"unsuccessfulTargets":[],"activeReleaseTargets":["frontend"],"allowedReleaseTargets":["frontend"],"requiredReleaseTargets":["frontend"],"migrationReleaseVerified":null,"releaseRequestContractHash":"8253b4a9b232ea863609c44966dcd6aee54e650b79c98522e4df0f66105ddc05"},"required":true,"satisfied":true}],"validationErrors":[],"pendingProofKinds":[],"activeReleaseTargets":["frontend"]},"authoritativeMissionRefresh":true,"evaluatedRequestContractRevision":2},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-14T06:35:30.745171+00:00","proof_gate":"request_contract_terminal_verified","source_sha":"0273206831462bb487f4d04002b4dae0f9c4c5c7","external_id":null,"receipt_type":"request_contract_reconciliation","idempotency_key":"mission:7ccfc533-244f-4e83-907f-c5e39a8df303:request-contract:8253b4a9b232ea863609c44966dcd6aee54e650b79c98522e4df0f66105ddc05:0273206831462bb487f4d04002b4dae0f9c4c5c7:verified:","mission_step_id":"8ce3fc3c-6d72-4c2d-8a7e-54bb46b096a0","command_center_event_id":"7ccfc533-244f-4e83-907f-c5e39a8df303"},{"id":"be75ed55-7781-4040-815a-3f1a159a756f","source":"cc-execution","status":"retryable","payload":{"ok":false,"jobId":null,"phase":"pull_request","branch":"ai/fix-release-queue-502-v2-20260825","reason":"pull_request_stale_refresh_required","status":"retryable","metrics":{"receiptBytes":3313,"releaseCount":0,"toolCallCount":3,"repeatedCallCount":0,"ownerInterruptionCount":0},"version":"1.50.35-defer-existing-pr-refresh","prNumber":732,"terminal":false,"missionId":"112e4806-b3c1-40da-8b80-ab73d47ea541","operation":"execute_mission","proofGate":"repair_mission_pr_ready_retryable","sourceSha":null,"timingsMs":null,"nextAction":"Reconcile this same mission and pull request automatically; do not create a replacement branch or PR.","receiptRef":{"mode":"full","missionId":"112e4806-b3c1-40da-8b80-ab73d47ea541"},"performance":null,"deploymentId":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":5168,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-08-25T06:15:44.83351+00:00","proof_gate":"repair_mission_pr_ready_retryable","source_sha":null,"external_id":"732","receipt_type":"execute_mission","idempotency_key":"mission:112e4806-b3c1-40da-8b80-ab73d47ea541:execute_mission:repair_mission_pr_ready_retryable","mission_step_id":"1fae8c27-5f71-4c5f-b221-1271d3490a6e","command_center_event_id":"112e4806-b3c1-40da-8b80-ab73d47ea541"},{"id":"be77a531-53a5-4eb3-b31e-631481c67ef0","source":"cc-execution","status":"retryable","payload":{"ok":false,"jobId":null,"phase":"pull_request","branch":"ai/objective-first-repair-a98e9ff911a2","reason":"retryable_provider_transport:forgejo_provider_read_timeout","status":"retryable","metrics":{"receiptBytes":15036,"releaseCount":0,"toolCallCount":6,"repeatedCallCount":2,"executorlessWaitMs":39651,"firstUsefulResultAt":"2026-10-03T01:43:24.021Z","recoveryAttemptCount":3,"ownerInterruptionCount":0},"version":null,"prNumber":4589,"terminal":false,"missionId":"a98e9ff9-11a2-4da2-a400-3513004f56c2","operation":"automatic_mission_resume","proofGate":"repair_mission_pr_ready_retryable","sourceSha":null,"timingsMs":{"prReadinessMs":2172,"approvedPlanMs":0,"shipAndProveMs":0,"repositoryMutationMs":0,"repositoryProviderMs":0,"repositoryAtomicCommitMs":0,"repositoryBranchCreateMs":0,"repositoryPullRequestCreateMs":0},"nextAction":"Reconcile this same mission and pull request automatically; do not create a replacement branch or PR.","receiptRef":{"mode":"full","missionId":"a98e9ff9-11a2-4da2-a400-3513004f56c2"},"performance":null,"deploymentId":null,"releaseState":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","pendingProofKinds":[],"verificationState":null,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":819,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true,"requestContractState":"pending"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-03T01:43:57.368071+00:00","proof_gate":"repair_mission_pr_ready_retryable","source_sha":null,"external_id":"4589","receipt_type":"automatic_mission_resume","idempotency_key":"mission:a98e9ff9-11a2-4da2-a400-3513004f56c2:automatic-mission-resume:4589:repair_mission_pr_ready_retryable","mission_step_id":"fe57149d-0ab2-4f50-bb3f-67eb3b47e91b","command_center_event_id":"a98e9ff9-11a2-4da2-a400-3513004f56c2"},{"id":"be780905-1aee-42ef-971b-6fc9778763d8","source":"cc-execution","status":"blocked","payload":{"ok":false,"jobId":null,"phase":"objective_received","branch":"ai/fix-stale-pr-zombie-recovery-20260829","reason":"control_plane_maintenance_request_contract_required","status":"blocked","metrics":{"receiptBytes":0,"releaseCount":0,"toolCallCount":0,"repeatedCallCount":0,"ownerInterruptionCount":0},"version":"1.56.2-queue-readiness-budget","prNumber":null,"terminal":false,"missionId":"3be3633b-b342-46e2-add9-8613e1b965a7","operation":"execute_mission","proofGate":"repair_mission_execution_blocked","sourceSha":null,"timingsMs":{"handlerMs":0,"prReadinessMs":0,"approvedPlanMs":0,"missionSetupMs":2691,"shipAndProveMs":0},"nextAction":null,"receiptRef":{"mode":"full","missionId":"3be3633b-b342-46e2-add9-8613e1b965a7"},"performance":null,"deploymentId":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":5633,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-08-29T19:06:23.804813+00:00","proof_gate":"repair_mission_execution_blocked","source_sha":null,"external_id":null,"receipt_type":"execute_mission","idempotency_key":"mission:3be3633b-b342-46e2-add9-8613e1b965a7:execute_mission:repair_mission_execution_blocked:current-generation","mission_step_id":"ae0a8fe6-6fca-4aa8-8e9f-76ac9206b323","command_center_event_id":"3be3633b-b342-46e2-add9-8613e1b965a7"},{"id":"be7be8d5-0fc1-4fd6-85ae-46d23c4015ee","source":"cc-execution","status":"retryable","payload":{"ok":false,"jobId":null,"phase":"implementation","branch":null,"reason":"retryable_provider_transport:forgejo_provider_read_timeout","status":"retryable","metrics":{"receiptBytes":6090,"releaseCount":0,"toolCallCount":4,"repeatedCallCount":2,"executorlessWaitMs":15675,"firstUsefulResultAt":"2026-10-06T04:33:14.606Z","recoveryAttemptCount":0,"ownerInterruptionCount":0},"version":"1.65.10-boundary-fix-release-retry","prNumber":5163,"terminal":false,"missionId":"6cd825d0-ddfe-4532-8e8e-5f72704f5be5","operation":"execute_mission","proofGate":"repair_mission_pr_ready_retryable","sourceSha":null,"timingsMs":{"gateMs":0,"proofMs":0,"handlerMs":6560,"releaseMs":0,"mutationMs":0,"repositoryMs":0,"prReadinessMs":2208,"approvedPlanMs":756,"missionSetupMs":836,"providerAuthMs":0,"shipAndProveMs":0,"ledgerPrepareMs":836,"ledgerReconcileMs":0,"lineageReconcileMs":0,"resolvePreflightMs":836,"repositoryMutationMs":3509,"repositoryProviderMs":3509,"authoritativeLedgerMs":0,"ledgerAsyncDispatchMs":0,"repositoryAtomicCommitMs":2234,"repositoryBranchCreateMs":0,"totalSynchronousLedgerMs":836,"asyncBookkeepingDispatchMs":0,"ledgerAuthoritativeCommitMs":0,"repositoryPullRequestCreateMs":1275},"nextAction":"Reconcile this same mission and pull request automatically; do not create a replacement branch or PR.","receiptRef":{"mode":"full","missionId":"6cd825d0-ddfe-4532-8e8e-5f72704f5be5"},"performance":null,"deploymentId":null,"releaseState":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","pendingProofKinds":["runtime"],"verificationState":null,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":1534,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true,"requestContractState":"pending"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-06T04:35:36.665689+00:00","proof_gate":"repair_mission_pr_ready_retryable","source_sha":null,"external_id":"5163","receipt_type":"execute_mission","idempotency_key":"mission:6cd825d0-ddfe-4532-8e8e-5f72704f5be5:execute_mission:repair_mission_pr_ready_retryable:current-generation","mission_step_id":"8f1c0a7d-df5b-4529-9b5e-b41c824b98db","command_center_event_id":"6cd825d0-ddfe-4532-8e8e-5f72704f5be5"},{"id":"be7ed21e-37b6-4d97-b13a-183ae6e52951","source":"durable-mission-ledger","status":"verified","payload":{"sourceSha":"d11804461f7c45c53c0065a54e16dec589d6c4e4","requestContractProof":{"legacy":false,"present":true,"outcomes":[{"id":"outcome-1","satisfied":true,"statement":"Replace the generic KNOCKLAUNCH tenant application visual treatment with a tenant-owned branded application surface primitive, and redesign the shared Calendar as the first full implementation. Generic tenant apps must preserve the active tenant background/media and palette instead of painting opaque black/dark shells. Calendar must become an immersive tenant-branded planner, preserve all behavior, and be visually proven on PCG desktop/mobile.","proofConditionIds":["proof-live","proof-desktop","proof-mobile"]}],"satisfied":true,"constraints":[{"id":"tenant-brand-authority","satisfied":true,"statement":"Tenant media background, palette, framing and logo-derived theme are visually authoritative inside tenant application routes; no generic opaque black shell.","proofConditionIds":["proof-live","proof-desktop","proof-mobile"]},{"id":"shared-primitive","satisfied":true,"statement":"Implement a shared tenant application surface primitive; Calendar is the first full adoption; no PCG-only hard-coded palette or layout.","proofConditionIds":["proof-live","proof-desktop"]},{"id":"visual-content-truth","satisfied":true,"statement":"Do not invent tenant imagery, colors, names, events, metrics, or customer content for proof.","proofConditionIds":["proof-desktop","proof-mobile"]},{"id":"viewport-authority","satisfied":true,"statement":"Desktop and mobile at normal scale are independently authoritative; browser zoom is not a layout solution.","proofConditionIds":["proof-desktop","proof-mobile"]},{"id":"capability-completeness","satisfied":true,"statement":"Every dependency the implementation declares or relies on must be wired and proven across applicable frontend, backend/runtime, schema/data/storage, authentication/authorization, provider configuration, prerequisite/loading/empty/error states, release ownership, and live production behavior; owner-authorized unavailable dependencies must become explicit prerequisite states rather than runtime failures.","proofConditionIds":["proof-live"]},{"id":"atomic-capability-lifecycle","satisfied":true,"statement":"Changed capabilities remain non-active until dependency readiness, N/N-1 compatibility, affected-target release, and claim-matched production canary proof are satisfied; missing optional dependencies become prerequisite_required, and runtime drift or health-contract violation quarantines only the affected capability instead of breaking unrelated working capability.","proofConditionIds":["proof-live"]}],"contractHash":"a0bf2398ed8fa4df3ed59c51d4c53eabc6c4bff905f8ad5ee2592eb9d4653039","releaseBound":true,"witnessBound":true,"visualRequested":true,"visualSatisfied":true,"conditionResults":[{"id":"proof-live","kind":"runtime","evidence":{"reason":null,"satisfied":true,"releaseState":"verified","missingTargets":[],"disallowedTargets":[],"migrationRequired":false,"releaseTargetStates":{"frontend":"success"},"unsuccessfulTargets":[],"activeReleaseTargets":["frontend"],"allowedReleaseTargets":["frontend"],"requiredReleaseTargets":["frontend"],"migrationReleaseVerified":null,"releaseRequestContractHash":"a0bf2398ed8fa4df3ed59c51d4c53eabc6c4bff905f8ad5ee2592eb9d4653039"},"required":true,"satisfied":true},{"id":"proof-desktop","kind":"visual","evidence":{"modeBound":true,"claimBound":true,"routeBound":true,"witnessMode":"observe","witnessRoute":"/pcg/calendar","currentSourceSha":"d11804461f7c45c53c0065a54e16dec589d6c4e4","witnessSourceSha":"d11804461f7c45c53c0065a54e16dec589d6c4e4","verificationState":"verified","witnessRequestContractHash":"a0bf2398ed8fa4df3ed59c51d4c53eabc6c4bff905f8ad5ee2592eb9d4653039"},"required":true,"satisfied":true},{"id":"proof-mobile","kind":"visual","evidence":{"modeBound":true,"claimBound":true,"routeBound":true,"witnessMode":"observe","witnessRoute":"/pcg/calendar","currentSourceSha":"d11804461f7c45c53c0065a54e16dec589d6c4e4","witnessSourceSha":"d11804461f7c45c53c0065a54e16dec589d6c4e4","verificationState":"verified","witnessRequestContractHash":"a0bf2398ed8fa4df3ed59c51d4c53eabc6c4bff905f8ad5ee2592eb9d4653039"},"required":true,"satisfied":true}],"validationErrors":[],"pendingProofKinds":[],"activeReleaseTargets":["frontend"]},"authoritativeMissionRefresh":true,"evaluatedRequestContractRevision":1},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-30T18:55:31.538542+00:00","proof_gate":"request_contract_terminal_verified","source_sha":"d11804461f7c45c53c0065a54e16dec589d6c4e4","external_id":null,"receipt_type":"request_contract_reconciliation","idempotency_key":"mission:adf48b9a-a0c5-4109-9096-52df3c7f7d64:request-contract:a0bf2398ed8fa4df3ed59c51d4c53eabc6c4bff905f8ad5ee2592eb9d4653039:d11804461f7c45c53c0065a54e16dec589d6c4e4:verified:","mission_step_id":"19a0cc56-2caf-41c1-8f47-4a1f1c700371","command_center_event_id":"adf48b9a-a0c5-4109-9096-52df3c7f7d64"},{"id":"be7f5612-fcd6-4ed8-8cbb-bd136adc8ed8","source":"cc-execution","status":"source_resolution_required","payload":{"ok":true,"jobId":null,"phase":"objective_received","branch":"ai/big-papis-loyalty-shortcuts-durable","reason":null,"status":"source_resolution_required","metrics":{"receiptBytes":0,"releaseCount":0,"toolCallCount":0,"repeatedCallCount":0,"ownerInterruptionCount":0},"version":"1.58.70-forgejo-source-discovery-retry-window","prNumber":null,"terminal":false,"missionId":"43d2a0dc-9b97-42ad-b127-fd41a59b5a9c","operation":"execute_mission","proofGate":"repair_mission_source_resolution_required","sourceSha":null,"timingsMs":{"gateMs":0,"proofMs":0,"handlerMs":119,"releaseMs":0,"mutationMs":0,"repositoryMs":0,"missionSetupMs":3152,"providerAuthMs":0,"ledgerPrepareMs":771,"ledgerReconcileMs":0,"lineageReconcileMs":0,"resolvePreflightMs":3152,"authoritativeLedgerMs":0,"ledgerAsyncDispatchMs":0,"totalSynchronousLedgerMs":771,"asyncBookkeepingDispatchMs":0,"ledgerAuthoritativeCommitMs":0},"nextAction":"Resolve bounded authoritative Forgejo source targets, then call /mission/execute again with this same missionId and exact files or anchored_edits. Do not switch workflows.","receiptRef":{"mode":"full","missionId":"43d2a0dc-9b97-42ad-b127-fd41a59b5a9c"},"performance":null,"deploymentId":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":4226,"likelyAffectedFiles":[],"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true},"tenant_id":"766cfaa7-ac42-46c8-bbef-69d13268a29d","created_at":"2026-09-07T01:05:04.118154+00:00","proof_gate":"repair_mission_source_resolution_required","source_sha":null,"external_id":null,"receipt_type":"execute_mission","idempotency_key":"mission:43d2a0dc-9b97-42ad-b127-fd41a59b5a9c:execute_mission:repair_mission_source_resolution_required:current-generation","mission_step_id":"26b1b51e-51d7-43fc-8bb0-1243eb206fe8","command_center_event_id":"43d2a0dc-9b97-42ad-b127-fd41a59b5a9c"},{"id":"be8060c8-0eb0-40af-89a7-6263ee22752b","source":"cc-execution","status":"authorized","payload":{"paths":[".forgejo/workflows/knocklaunch.yml","config/control-plane-capabilities.json"],"reason":"Owner explicitly directed control plane maintenance to eliminate excessive Forgejo/Gate latency while preserving canonical validation safety.","baseSha":"a0a038dc7f27365d85853bd15b5bd48a336ffc2e","issuedAt":1788028916498,"expiresAt":1788029096498,"missionId":"c50d8da7-6690-40f2-9cd1-2d815628cbd7","singleUse":true,"authorizationId":"c3b9ad30-cf6f-47d6-b5f8-4eea5fcb467c"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-08-29T18:41:57.437131+00:00","proof_gate":"control_plane_maintenance_scope_authorized","source_sha":"a0a038dc7f27365d85853bd15b5bd48a336ffc2e","external_id":null,"receipt_type":"control_plane_maintenance_authorization","idempotency_key":"control-plane-maintenance-authorize:c3b9ad30-cf6f-47d6-b5f8-4eea5fcb467c","mission_step_id":"75419b8e-697e-4101-a6a1-e530ce1f40f2","command_center_event_id":"c50d8da7-6690-40f2-9cd1-2d815628cbd7"},{"id":"be830557-98d9-4150-aedd-aaa2a471a7bd","source":"cc-execution","status":"authorized","payload":{"paths":["workers/cc-execution/src/entrypoint-owner-status.js","workers/cc-execution/test/queue-salvage-contract.test.js"],"baseSha":"21eceb0003a9518e5ff6fc2ed42b7fa530bde025","issuedAt":1791556714978,"expiresAt":1791556894978,"missionId":"aa13ad2e-ffb3-48bb-a39d-6da8bc63945c","autoRefreeze":true,"authorizationId":"458f90e6-c864-4a8c-91dd-0867f8496dab","authorizationSource":"explicit_owner_request_contract"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-09T14:38:35.481087+00:00","proof_gate":"control_plane_maintenance_exact_scope_authorized","source_sha":"21eceb0003a9518e5ff6fc2ed42b7fa530bde025","external_id":"458f90e6-c864-4a8c-91dd-0867f8496dab","receipt_type":"control_plane_maintenance_authorized","idempotency_key":"control-plane-maintenance:aa13ad2e-ffb3-48bb-a39d-6da8bc63945c:458f90e6-c864-4a8c-91dd-0867f8496dab","mission_step_id":null,"command_center_event_id":"aa13ad2e-ffb3-48bb-a39d-6da8bc63945c"},{"id":"be8360e0-c711-47df-9d3d-d1000bffcfbe","source":"cc-execution","status":"waiting_for_gate","payload":{"ok":true,"jobId":null,"phase":"implementation","branch":"ai/objective-first-repair-b5ad5b28af0a","reason":"provider_verified_auto_progress_owns_gate_merge_release_outside_owner_response","status":"waiting_for_gate","metrics":{"receiptBytes":77310,"releaseCount":0,"toolCallCount":11,"repeatedCallCount":3,"executorlessWaitMs":931200,"firstUsefulResultAt":"2026-09-28T23:14:21.034Z","recoveryAttemptCount":2,"ownerInterruptionCount":0},"version":"1.59.3-direct-commit-ancestry","prNumber":4055,"terminal":false,"missionId":"b5ad5b28-af0a-4ec1-a03a-c76c23cabe23","operation":"execute_mission","proofGate":"repair_mission_pr_handed_off_to_supervisor","sourceSha":null,"timingsMs":{"gateMs":0,"proofMs":0,"handlerMs":3956,"releaseMs":0,"mutationMs":0,"repositoryMs":0,"prReadinessMs":0,"approvedPlanMs":1632,"missionSetupMs":750,"providerAuthMs":0,"shipAndProveMs":0,"ledgerPrepareMs":630,"ledgerReconcileMs":0,"lineageReconcileMs":120,"resolvePreflightMs":750,"repositoryMutationMs":2324,"repositoryProviderMs":2324,"authoritativeLedgerMs":0,"ledgerAsyncDispatchMs":0,"repositoryAtomicCommitMs":2209,"repositoryBranchCreateMs":0,"totalSynchronousLedgerMs":630,"asyncBookkeepingDispatchMs":0,"ledgerAuthoritativeCommitMs":0,"repositoryPullRequestCreateMs":115},"nextAction":"Canonical KnockLaunch Gate notifier and durable mission supervisor own Gate, merge, release, and proof progression from this exact PR head outside the owner response path.","receiptRef":{"mode":"full","missionId":"b5ad5b28-af0a-4ec1-a03a-c76c23cabe23"},"performance":null,"deploymentId":null,"releaseState":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","pendingProofKinds":["runtime"],"verificationState":null,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":3396,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true,"requestContractState":"pending"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-28T23:29:37.505398+00:00","proof_gate":"repair_mission_pr_handed_off_to_supervisor","source_sha":null,"external_id":"4055","receipt_type":"execute_mission","idempotency_key":"mission:b5ad5b28-af0a-4ec1-a03a-c76c23cabe23:execute_mission:repair_mission_pr_handed_off_to_supervisor:current-generation","mission_step_id":"bb2b1c28-fdcb-4cc0-9bee-831218f0eb52","command_center_event_id":"b5ad5b28-af0a-4ec1-a03a-c76c23cabe23"},{"id":"be840923-6975-4e13-a19d-dba4bc1eddb4","source":"cc-execution","status":"retryable","payload":{"ok":false,"jobId":null,"phase":"pull_request","branch":"ai/objective-first-repair-3f38f89df562","reason":"retryable_provider_transport:forgejo_provider_read_timeout","status":"retryable","metrics":{"receiptBytes":29322,"releaseCount":0,"toolCallCount":4,"repeatedCallCount":0,"executorlessWaitMs":364756,"firstUsefulResultAt":"2026-09-29T18:27:16.029Z","recoveryAttemptCount":1,"ownerInterruptionCount":0},"version":null,"prNumber":4162,"terminal":false,"missionId":"3f38f89d-f562-44d5-80ee-ba4a718879b7","operation":"automatic_mission_resume","proofGate":"repair_mission_pr_ready_retryable","sourceSha":null,"timingsMs":{"prReadinessMs":2090,"approvedPlanMs":0,"shipAndProveMs":0,"repositoryMutationMs":0,"repositoryProviderMs":0,"repositoryAtomicCommitMs":0,"repositoryBranchCreateMs":0,"repositoryPullRequestCreateMs":0},"nextAction":"Reconcile this same mission and pull request automatically; do not create a replacement branch or PR.","receiptRef":{"mode":"full","missionId":"3f38f89d-f562-44d5-80ee-ba4a718879b7"},"performance":null,"deploymentId":null,"releaseState":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","pendingProofKinds":["runtime","visual"],"verificationState":null,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":819,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true,"requestContractState":"pending"},"tenant_id":"9602e177-0cbb-496c-bdf5-2fbc93f1b859","created_at":"2026-09-29T18:33:21.000917+00:00","proof_gate":"repair_mission_pr_ready_retryable","source_sha":null,"external_id":"4162","receipt_type":"automatic_mission_resume","idempotency_key":"mission:3f38f89d-f562-44d5-80ee-ba4a718879b7:automatic-mission-resume:4162:repair_mission_pr_ready_retryable","mission_step_id":"aa749bfe-8818-435e-8456-e8aae3a6d8bf","command_center_event_id":"3f38f89d-f562-44d5-80ee-ba4a718879b7"},{"id":"be84d2d3-65f5-45a8-a0d3-ca2a7e68c98e","source":"visual-sandbox","status":"completed_with_findings","payload":{"ok":true,"jobId":"124c66d7-d3b1-41f7-a0d0-a312c573748f","phase":"universal_visual_witness_status","branch":"ai/profile-media-live-20260929","reason":null,"status":"verification_pending","metrics":{"receiptBytes":42580,"releaseCount":0,"toolCallCount":27,"repeatedCallCount":15,"executorlessWaitMs":1356371,"firstUsefulResultAt":"2026-09-29T16:56:05.394Z","recoveryAttemptCount":2,"ownerInterruptionCount":0},"version":null,"prNumber":4148,"terminal":false,"missionId":"26d06067-1b8d-46aa-8b23-0dabcdadc27d","operation":"visual_proof_status","proofGate":"interactive_visual_witness_completed_with_findings","sourceSha":"79e66b347abab6959faf463fd7ebdae25e1465e6","timingsMs":{"queue":1593,"total":29678,"execution":28085},"nextAction":null,"receiptRef":{"mode":"full","missionId":"26d06067-1b8d-46aa-8b23-0dabcdadc27d"},"performance":null,"deploymentId":"forgejo-main-79e66b347aba","releaseState":"verified","visualWitness":{"role":"GodMode","jobId":"124c66d7-d3b1-41f7-a0d0-a312c573748f","tenant":"9602e177-0cbb-496c-bdf5-2fbc93f1b859","runnerUrl":"https://laptop-witness.knocklaunch.app","runnerLane":"laptop","attemptsUsed":1,"supervisorId":"124c66d7-d3b1-41f7-a0d0-a312c573748f","failureReason":null,"observedRoute":"/pcg/settings?section=profile","runnerVersion":"laptop-bb1e9c24fd5d","attemptLineage":[{"jobId":"a63b194f-5f92-4e90-a025-ca521cdc2166","attempt":1,"category":"completed_with_findings","sourceSha":"bb1e9c24fd5d6d6526aafb737dbeb2f9755ca0f4","startedAt":"2026-09-29T17:07:32.224Z","completedAt":"2026-09-29T17:08:01.742Z","runtimeLane":"cc-execution -> Local Laptop -> universal-witness.mjs","browserEngine":"chromium","failureReason":null,"retryRecovery":null,"runnerVersion":"laptop-bb1e9c24fd5d","browserLaunchReason":"display_unavailable_headless","checkpointAccounting":{"route":{"required":2,"completed":2,"missingIds":[]},"action":{"required":0,"completed":0,"missingIds":[]},"missing":0,"resumed":0,"complete":true,"evidence":{"required":2,"completed":2,"missingIds":[]},"completed":4,"remaining":0,"duplicates":0,"duplicateIds":[],"expectedTotal":4}}],"missionOutcome":"completed_with_findings","requestedRoute":"/pcg/settings?section=profile","runnerSourceSha":"bb1e9c24fd5d6d6526aafb737dbeb2f9755ca0f4","selectedViewports":["desktop","mobile"],"checkpointAccounting":{"route":{"required":2,"completed":2,"missingIds":[]},"action":{"required":0,"completed":0,"missingIds":[]},"missing":0,"resumed":0,"complete":true,"evidence":{"required":2,"completed":2,"missingIds":[]},"completed":4,"remaining":0,"duplicates":0,"duplicateIds":[],"expectedTotal":4},"correctiveGeneration":0,"restartReplayHistory":[]},"workflowRunId":13112,"releaseTargets":{"frontend":true,"migrations":false,"ccExecution":false,"supabaseEdge":true,"edgeFunctionSlugs":["tenant-media-library"]},"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","pendingProofKinds":[],"verificationState":"completed_with_findings","workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":32717,"ownerActionRequired":false,"ownerFacingTerminal":false,"requestContractHash":"4f325d32304847f1bfd37bcfa16225d13a937ba35a465fcc851b33eeb6a72e2b","continuationRequired":true,"requestContractState":"pending"},"tenant_id":"9602e177-0cbb-496c-bdf5-2fbc93f1b859","created_at":"2026-09-29T17:18:44.210342+00:00","proof_gate":"interactive_visual_witness_completed_with_findings","source_sha":"laptop-bb1e9c24fd5d","external_id":"124c66d7-d3b1-41f7-a0d0-a312c573748f","receipt_type":"visual_proof_status","idempotency_key":"mission:26d06067-1b8d-46aa-8b23-0dabcdadc27d:visual:124c66d7-d3b1-41f7-a0d0-a312c573748f:completed_with_findings","mission_step_id":"efab81c7-c31d-41c7-a150-0fe91bd5a08b","command_center_event_id":"26d06067-1b8d-46aa-8b23-0dabcdadc27d"},{"id":"be869cb0-48e6-402d-a131-d021d60d093f","source":"forgejo","status":"waiting","payload":{"branch":"ai/visual-witness-progress-stall-recovery-20260906","prNumber":1986,"nextAction":"Follow the existing canonical release to terminal proof.","mergeCommitSha":"857c6c05f7bc3e3dc590358f4a38b72dce39dbb7","branchDeletedAfterMerge":true,"correctiveGenerationCreated":false},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-06T19:25:34.818395+00:00","proof_gate":"forgejo_merged_pr_is_authoritative_source_lineage","source_sha":"857c6c05f7bc3e3dc590358f4a38b72dce39dbb7","external_id":"1986","receipt_type":"source_lineage_merged_pr_authoritative","idempotency_key":"mission:29aece99-1c29-4e65-9ff1-91ba71b173e0:merged-pr:1986:857c6c05f7bc3e3dc590358f4a38b72dce39dbb7","mission_step_id":"15bb8eea-247a-4dd3-919c-83b859628254","command_center_event_id":"29aece99-1c29-4e65-9ff1-91ba71b173e0"},{"id":"be89c942-79ab-41ce-b63f-4309acb612aa","source":"cc-execution","status":"synthesis_required","payload":{"ok":true,"jobId":null,"phase":"pull_request","branch":"ai/objective-first-repair-eddc318a07dc","reason":null,"status":"synthesis_required","metrics":{"receiptBytes":0,"releaseCount":0,"toolCallCount":0,"repeatedCallCount":0,"ownerInterruptionCount":0},"version":"1.58.115-release-speed-lock","prNumber":null,"terminal":false,"missionId":"eddc318a-07dc-4ee3-bc65-e01324c1e033","operation":"execute_mission","proofGate":"repair_mission_synthesis_ready","sourceSha":null,"timingsMs":{"gateMs":0,"proofMs":0,"handlerMs":17,"releaseMs":0,"mutationMs":0,"repositoryMs":0,"missionSetupMs":250,"providerAuthMs":0,"ledgerPrepareMs":250,"ledgerReconcileMs":0,"lineageReconcileMs":0,"resolvePreflightMs":250,"authoritativeLedgerMs":0,"ledgerAsyncDispatchMs":0,"totalSynchronousLedgerMs":250,"asyncBookkeepingDispatchMs":0,"ledgerAuthoritativeCommitMs":0},"nextAction":"Inspect the bounded repository paths, synthesize exact files or anchored_edits, and call /mission/execute again automatically with this same missionId without another owner prompt or workflow switch.","receiptRef":{"mode":"full","missionId":"eddc318a-07dc-4ee3-bc65-e01324c1e033"},"performance":null,"deploymentId":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":4110,"likelyAffectedFiles":["src/booking-route-viewport.css","src/OAuthConsentBridge.tsx","scripts/generate-platform-cohesion-auth-proof-requirements.mjs","scripts/visual-witness-hosted-runner/src/auth-state-refresh.mjs","scripts/visual-witness-hosted-runner/src/operator-session-broker.mjs"],"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-12T01:18:58.460668+00:00","proof_gate":"repair_mission_synthesis_ready","source_sha":null,"external_id":null,"receipt_type":"execute_mission","idempotency_key":"mission:eddc318a-07dc-4ee3-bc65-e01324c1e033:execute_mission:repair_mission_synthesis_ready:current-generation","mission_step_id":"ed33a551-b8d5-484f-8506-68d451baec2a","command_center_event_id":"eddc318a-07dc-4ee3-bc65-e01324c1e033"},{"id":"be8dcb7c-3f5f-466c-a76c-6c54a333211c","source":"forgejo-runtime","status":"verified","payload":{"failed":[],"states":{"forgejo-main/source":"success","forgejo-release/workflow":"success","frontend-cloudflare/live":"success"},"mainSha":"0a03771b89e057dfff3b68e9bf8d313524e661d4","missing":[],"pending":[],"required":["forgejo-main/source","forgejo-release/workflow","frontend-cloudflare/live"],"sourceSha":"35e5d05882313d60bba3ec5230690f67df250c6b","releaseState":"verified","sourceInMain":true,"compareStatus":"known_exact_protected_main_push_history","releaseTargets":{"frontend":true,"migrations":false,"ccExecution":false,"supabaseEdge":false,"edgeFunctionSlugs":[]},"releaseTargetStates":{"frontend":"success"},"requestContractHash":"0620ed52b08dd57a69e81ecebe26e9688bd9d49c4a8425215f38d56a9418b630","forgejoWorkflowProof":{"runId":15307,"source":"signed_push_receipt","status":"success","results":{},"conclusion":"success","targetStates":{"frontend":"success"},"targetJobCount":7,"observedTargetStates":{"frontend":"success"}},"releaseSourceVerified":true,"ccExecutionRuntimeProof":null,"releaseTargetRecoveryProof":null,"exactReleaseVerifiedAfterMainAdvanced":false},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-05T13:59:28.372344+00:00","proof_gate":"canonical_release_terminal_verified","source_sha":"35e5d05882313d60bba3ec5230690f67df250c6b","external_id":"forgejo-main-35e5d0588231","receipt_type":"canonical_release_status","idempotency_key":"mission:be8a69d0-997d-4e18-a1d4-635a092257c9:forgejo-release-status:35e5d05882313d60bba3ec5230690f67df250c6b:verified:forgejo-main/source=success|forgejo-release/workflow=success|frontend-cloudflare/live=success","mission_step_id":"ddb46ad6-ed5d-4069-aba1-5dd29ffd6987","command_center_event_id":"be8a69d0-997d-4e18-a1d4-635a092257c9"},{"id":"be8fb846-e4ce-4603-892e-10e3ac56bf3d","source":"forgejo-runtime","status":"verified","payload":{"failed":[],"states":{"forgejo-main/source":"success","forgejo-release/workflow":"success","frontend-cloudflare/live":"success"},"mainSha":"b2ae41397be7d85048a5d94d328f31556072c731","missing":[],"pending":[],"required":["forgejo-main/source","forgejo-release/workflow","frontend-cloudflare/live"],"sourceSha":"b2ae41397be7d85048a5d94d328f31556072c731","releaseState":"verified","sourceInMain":true,"compareStatus":"identical","releaseTargets":{"frontend":true,"onrunner":false,"migrations":false,"ccExecution":false,"supabaseEdge":false,"edgeFunctionSlugs":[]},"releaseTargetStates":{"frontend":"success"},"requestContractHash":"0c4a1d1b6e10b6fae090c36d6a78ecb51548a8e82adff41e6ad9f2d975896e90","forgejoWorkflowProof":{"url":"https://git.knocklaunch.app/noel/KnockLaunchOS/actions/runs/5850","runId":5850,"status":"success","sourceSha":"b2ae41397be7d85048a5d94d328f31556072c731","conclusion":null,"failedJobs":[],"diagnostics":null,"exactSource":true,"targetStates":{"frontend":"success"},"targetJobCount":7,"observedTargetStates":{"frontend":"success"}},"onrunnerRuntimeProof":null,"releaseSourceVerified":true,"ccExecutionRuntimeProof":null,"releaseTargetRecoveryProof":null,"exactReleaseVerifiedAfterMainAdvanced":false},"tenant_id":"90ed5bf4-8abd-4d3a-af7c-024664b5b99d","created_at":"2026-09-06T15:18:05.130801+00:00","proof_gate":"canonical_release_terminal_verified","source_sha":"b2ae41397be7d85048a5d94d328f31556072c731","external_id":"forgejo-main-b2ae41397be7","receipt_type":"canonical_release_status","idempotency_key":"mission:84923a89-929e-4712-9b72-6f1994e7a592:forgejo-release-status:b2ae41397be7d85048a5d94d328f31556072c731:verified:forgejo-main/source=success|forgejo-release/workflow=success|frontend-cloudflare/live=success","mission_step_id":"d672a1cc-e368-401b-bb57-3a3accc8f3c8","command_center_event_id":"84923a89-929e-4712-9b72-6f1994e7a592"},{"id":"be92e5a7-5a27-408e-b415-38622f70f93e","source":"cc-execution","status":"blocked","payload":{"reason":"forgejo_files_write_failed:403","fingerprint":"018a0b828fdbf32e5f9e5850212594629d336ba84a8ea16b85988323a4711de0"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-06T02:46:34.370874+00:00","proof_gate":"repository_mutation_intent_deterministic_failure","source_sha":null,"external_id":null,"receipt_type":"repository_mutation_intent_blocked","idempotency_key":"mission:1640998d-5d81-4ba8-b368-2c9f91cab6ee:repository-mutation-intent-blocked:018a0b828fdbf32e5f9e5850212594629d336ba84a8ea16b85988323a4711de0","mission_step_id":"9c9f3a20-dcf3-4f7b-b28b-cf818881a935","command_center_event_id":"1640998d-5d81-4ba8-b368-2c9f91cab6ee"},{"id":"be9451d3-c163-4219-8d84-258305542d15","source":"durable-mission-ledger","status":"pending","payload":{"sourceSha":"cd17b09fdb31a85433ce5c1c6f9cbbd563eced82","requestContractProof":{"legacy":false,"present":true,"outcomes":[{"id":"outcome-1","satisfied":false,"statement":"Repair the Universal Visual Witness false-positive acceptance for temporal visual objectives. Current bug: observe missions with an explicit route can set objectiveAcceptanceVerified/visualAcceptance true merely because the route loaded, projection verified, and screenshots were stored; screenshot content is not validated, so requests like 'verify visible motion/animation over time' can pass without proving any motion. Implement the smallest safe platform-wide temporal visual proof contract in the hosted witness. Requirements: (1) Detect objective intent narrowly for true temporal-visual requests: animation/animated/animate, motion, float/floating, pulse/pulsing, drift, sheen, visibly move/moving over time, transform over time, temporal visual. Do NOT trigger on ordinary layout requests such as 'move this button'. (2) For temporal-visual objectives, before final route acceptance sample visible candidate elements with active CSS/Web Animations at deliberately non-harmonic offsets (for example settle sample, ~350-450ms, then ~850-1100ms total; do not use a full-cycle-sized fixed delay). Prefer candidates with transform animation, animation-name, will-change:transform, or premium/anim","proofConditionIds":["proof-production","proof-visual"]}],"satisfied":false,"constraints":[{"id":"visual-artifact-scope","satisfied":false,"statement":"The requested visual artifact type is authoritative: dashboard only. Do not add unrelated or mixed visual surfaces unless the owner explicitly requested them.","proofConditionIds":["proof-production","proof-visual"]},{"id":"visual-content-truth","satisfied":false,"statement":"Do not present invented names, metrics, prices, dates, services, testimonials, credentials, customer records, or other unknown business facts as real. Omit unknowns or mark them clearly as placeholder/example content.","proofConditionIds":["proof-production","proof-visual"]},{"id":"reference-visual-fidelity","satisfied":false,"statement":"The approved reference owns the material visual composition: hierarchy, major geometry, typography scale, spacing rhythm, image placement/crop, color treatment, radii, shadows/glow, and overall density. Material deviation is a failed visual acceptance, not a stylistic reinterpretation.","proofConditionIds":["proof-visual"]},{"id":"responsive-visual-continuity","satisfied":false,"statement":"Responsive adaptation may reflow for the target viewport, but it must preserve information hierarchy, branding, functionality, and design language. It must not invent a second design.","proofConditionIds":["proof-visual"]},{"id":"reference-visual-authority","satisfied":false,"statement":"The supplied or approved reference visual is immutable acceptance evidence. Generating another mockup, image, or concept cannot satisfy this implementation request; completion requires source implementation, deployment, and reference-matched visual proof.","proofConditionIds":["proof-visual"]},{"id":"capability-completeness","satisfied":true,"statement":"Every dependency the implementation declares or relies on must be wired and proven across applicable frontend, backend/runtime, schema/data/storage, authentication/authorization, provider configuration, prerequisite/loading/empty/error states, release ownership, and live production behavior; owner-authorized unavailable dependencies must become explicit prerequisite states rather than runtime failures.","proofConditionIds":["proof-production"]},{"id":"atomic-capability-lifecycle","satisfied":true,"statement":"Changed capabilities remain non-active until dependency readiness, N/N-1 compatibility, affected-target release, and claim-matched production canary proof are satisfied; missing optional dependencies become prerequisite_required, and runtime drift or health-contract violation quarantines only the affected capability instead of breaking unrelated working capability.","proofConditionIds":["proof-production"]}],"contractHash":"2ed0a6c4e8867d9e880d0cdcc36842759306c51216b7a975df0406d49af77f05","releaseBound":true,"witnessBound":false,"visualRequested":true,"visualSatisfied":false,"conditionResults":[{"id":"proof-production","kind":"runtime","evidence":{"reason":null,"satisfied":true,"releaseState":"verified","missingTargets":[],"disallowedTargets":[],"migrationRequired":false,"releaseTargetStates":{"ccExecution":"success"},"unsuccessfulTargets":[],"activeReleaseTargets":["ccExecution"],"allowedReleaseTargets":[],"requiredReleaseTargets":[],"migrationReleaseVerified":null,"releaseRequestContractHash":"2ed0a6c4e8867d9e880d0cdcc36842759306c51216b7a975df0406d49af77f05"},"required":true,"satisfied":true},{"id":"proof-visual","kind":"visual","evidence":{"modeBound":true,"claimBound":true,"routeBound":true,"witnessMode":"observe","witnessRoute":"https://app.knocklaunch.app/dj/dashboard?mode=fanbase","currentSourceSha":"cd17b09fdb31a85433ce5c1c6f9cbbd563eced82","witnessSourceSha":"cd17b09fdb31a85433ce5c1c6f9cbbd563eced82","verificationState":null,"witnessRequestContractHash":"2ed0a6c4e8867d9e880d0cdcc36842759306c51216b7a975df0406d49af77f05"},"required":true,"satisfied":false}],"validationErrors":[],"pendingProofKinds":["visual"],"activeReleaseTargets":["ccExecution"]},"authoritativeMissionRefresh":true,"evaluatedRequestContractRevision":1},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-27T23:46:17.93815+00:00","proof_gate":"request_contract_pending","source_sha":"cd17b09fdb31a85433ce5c1c6f9cbbd563eced82","external_id":null,"receipt_type":"request_contract_reconciliation","idempotency_key":"mission:03b4c1fd-6065-4381-a277-88468a70c1de:request-contract:2ed0a6c4e8867d9e880d0cdcc36842759306c51216b7a975df0406d49af77f05:cd17b09fdb31a85433ce5c1c6f9cbbd563eced82:pending:visual","mission_step_id":"2c1543f6-ec79-4442-9372-9375024a5e4a","command_center_event_id":"03b4c1fd-6065-4381-a277-88468a70c1de"},{"id":"be94996a-e0bc-4712-b5d1-05519a771784","source":"forgejo","status":"waiting","payload":{"branch":"ai/objective-first-repair-8e38b328ee11","prNumber":3980,"nextAction":"Follow the existing canonical release to terminal proof.","mergeCommitSha":"2e737264d395ffa0263e40840ccf3ec2a41ed3b7","branchDeletedAfterMerge":true,"correctiveGenerationCreated":false},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-28T12:08:51.867388+00:00","proof_gate":"forgejo_merged_pr_is_authoritative_source_lineage","source_sha":"2e737264d395ffa0263e40840ccf3ec2a41ed3b7","external_id":"3980","receipt_type":"source_lineage_merged_pr_authoritative","idempotency_key":"mission:8e38b328-ee11-471e-af35-9565d4f6b360:merged-pr:3980:2e737264d395ffa0263e40840ccf3ec2a41ed3b7","mission_step_id":"d4e84de6-4b8c-48a4-96c4-e469249d4f0a","command_center_event_id":"8e38b328-ee11-471e-af35-9565d4f6b360"},{"id":"be9600ab-ef7b-4185-94bc-cda8c44505a9","source":"forgejo","status":"waiting","payload":{"branch":"ai/objective-first-repair-2eb50ca156b9","prNumber":3597,"nextAction":"Follow the existing canonical release to terminal proof.","mergeCommitSha":"4adb69a0ae8ce16346faceecf4459b75663e003d","branchDeletedAfterMerge":true,"correctiveGenerationCreated":false},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-24T05:43:38.151544+00:00","proof_gate":"forgejo_merged_pr_is_authoritative_source_lineage","source_sha":"4adb69a0ae8ce16346faceecf4459b75663e003d","external_id":"3597","receipt_type":"source_lineage_merged_pr_authoritative","idempotency_key":"mission:2eb50ca1-56b9-4fa2-bb02-5d1be9a71472:merged-pr:3597:4adb69a0ae8ce16346faceecf4459b75663e003d","mission_step_id":"abb048fa-10fb-4f95-af56-8bbcacd263e2","command_center_event_id":"2eb50ca1-56b9-4fa2-bb02-5d1be9a71472"},{"id":"be96262d-9866-407b-8e5d-c2bba7f36e4b","source":"onrunner","status":"failed","payload":{"ok":false,"jobId":"95b22e1b-6b2f-43f9-8dcf-c85934dab7ce","phase":"universal_visual_witness_poll_failed","branch":"ai/objective-first-repair-8c04bea84e20","reason":"unexpected_path:/knock-launch-os/portfolio","status":"blocked","metrics":{"receiptBytes":80750,"releaseCount":0,"toolCallCount":53,"repeatedCallCount":28,"executorlessWaitMs":2007024,"firstUsefulResultAt":"2026-09-28T13:17:30.172Z","recoveryAttemptCount":0,"ownerInterruptionCount":0},"version":null,"prNumber":3993,"terminal":true,"missionId":"8c04bea8-4e20-43c8-8b0e-56d79150cdd6","operation":"visual_proof_status","proofGate":"interactive_visual_witness_failed","sourceSha":"7d477d4a1e4117ce0180b206604417728935ac6a","timingsMs":{"queue":1562,"total":12963,"execution":11401},"nextAction":null,"receiptRef":{"mode":"full","missionId":"8c04bea8-4e20-43c8-8b0e-56d79150cdd6"},"performance":null,"deploymentId":"forgejo-main-7d477d4a1e41","releaseState":"verified","visualWitness":{"role":"GodMode","jobId":"95b22e1b-6b2f-43f9-8dcf-c85934dab7ce","tenant":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","runnerUrl":"https://laptop-witness.knocklaunch.app","runnerLane":"laptop","attemptsUsed":1,"supervisorId":"95b22e1b-6b2f-43f9-8dcf-c85934dab7ce","failureReason":"unexpected_path:/knock-launch-os/portfolio","observedRoute":"/redfish-roofing/roof-measurement","runnerVersion":"laptop-cd17b09fdb31","attemptLineage":[{"jobId":"2df3ef5e-0520-40fa-91ae-54480da4c640","attempt":1,"category":"application","sourceSha":"cd17b09fdb31a85433ce5c1c6f9cbbd563eced82","startedAt":"2026-09-28T13:50:32.630Z","completedAt":"2026-09-28T13:50:46.120Z","runtimeLane":"cc-execution -> Local Laptop -> universal-witness.mjs","browserEngine":"chromium","failureReason":"unexpected_path:/knock-launch-os/portfolio","retryRecovery":null,"runnerVersion":"laptop-cd17b09fdb31","browserLaunchReason":"display_unavailable_headless","checkpointAccounting":{"route":{"required":2,"completed":0,"missingIds":["desktop::/redfish-roofing/roof-measurement","mobile::/redfish-roofing/roof-measurement"]},"action":{"required":0,"completed":0,"missingIds":[]},"missing":4,"resumed":0,"complete":false,"evidence":{"required":2,"completed":0,"missingIds":["desktop::/redfish-roofing/roof-measurement::evidence::observe","mobile::/redfish-roofing/roof-measurement::evidence::observe"]},"completed":0,"remaining":4,"duplicates":0,"duplicateIds":[],"expectedTotal":4}}],"missionOutcome":"application","requestedRoute":"/redfish-roofing/roof-measurement","runnerSourceSha":"cd17b09fdb31a85433ce5c1c6f9cbbd563eced82","selectedViewports":["desktop","mobile"],"checkpointAccounting":{"route":{"required":2,"completed":0,"missingIds":["desktop::/redfish-roofing/roof-measurement","mobile::/redfish-roofing/roof-measurement"]},"action":{"required":0,"completed":0,"missingIds":[]},"missing":4,"resumed":0,"complete":false,"evidence":{"required":2,"completed":0,"missingIds":["desktop::/redfish-roofing/roof-measurement::evidence::observe","mobile::/redfish-roofing/roof-measurement::evidence::observe"]},"completed":0,"remaining":4,"duplicates":0,"duplicateIds":[],"expectedTotal":4},"correctiveGeneration":0,"restartReplayHistory":[]},"workflowRunId":null,"releaseTargets":{"frontend":true,"onrunner":false,"migrations":false,"ccExecution":false,"supabaseEdge":false,"edgeFunctionSlugs":[]},"detailsAvailable":true,"ownerFacingState":"ENDED","pendingProofKinds":[],"verificationState":"failed","workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":6060,"ownerActionRequired":false,"ownerFacingTerminal":true,"requestContractHash":"161f6865dc1d29df5a224d8450a8780c5e9e620b3773edb2420a152147044882","continuationRequired":false,"requestContractState":"pending"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-28T13:50:58.146666+00:00","proof_gate":"interactive_visual_witness_failed","source_sha":"laptop-cd17b09fdb31","external_id":"95b22e1b-6b2f-43f9-8dcf-c85934dab7ce","receipt_type":"visual_proof_status","idempotency_key":"mission:8c04bea8-4e20-43c8-8b0e-56d79150cdd6:visual:95b22e1b-6b2f-43f9-8dcf-c85934dab7ce:failed","mission_step_id":"d411668f-fe4a-4ab5-80d6-0d9bde8b75cc","command_center_event_id":"8c04bea8-4e20-43c8-8b0e-56d79150cdd6"},{"id":"be969d18-38b9-4845-90d8-55c89958dc6e","source":"cc-execution","status":"waiting","payload":{"body":{"ship":true,"files":[],"branch":"ai/objective-first-repair-d7d1f5aa0634","writes":[],"patches":[],"version":1,"approved":true,"missionId":"d7d1f5aa-0634-4cc5-b370-5203f7bd827f","objective":"PAUL adjacent-turn continuity authority repair based on a failed live acceptance test at 2026-09-30 21:36 EDT. Production operator-respond version 307 received the exact follow-up 'what could I do to make it run better?' immediately after PAUL answered 'what kind of machinery do we use to build and maintain knocklaunch?', yet replied that it needed to know what 'it' referred to. Live logs prove both turns reached operator-respond successfully (HTTP 200), so this is cognition behavior, not transport/fallback. Make referent resolution authoritative rather than advisory: when recentConversation resolves a referent with high confidence and no material ambiguity, use the resolved/interpreted message as the actual user message for the answer model and all bounded correction attempts. Add a deterministic immediate-context fallback for obvious KNOCKLAUNCH/PAUL referents when semantic JSON resolution fails, based on the most recent prior user/assistant topic. Broaden the evasion detector to catch referent-deferral phrases including 'I need to know what it refers to', 'what does it refer to', 'what are we looking at?', and requests to restate context. If a direct question has a high-confidence resolved referent, such clarification output must be rejected and corrected; if correction still evades, answer from the resolved interpretation rather than asking Noel to repeat context. Add non-user-facing response metadata for referent source/confidence/interpreted status to aid future debugging. Update the existing adjacent-turn regression to require authoritative resolved-message use. Add a deployed /health canary for the exact referent-deferral guard phrase. One focused PR, Gate, squash merge, deploy operator-respond, and prove the new worker boots and canary passes. No Visual Witness.","repository":"noel/KnockLaunchOS","ownerApproved":true,"releaseIntent":null,"sourceTargets":["supabase/functions/operator-respond/index.ts","config/paul-owner-profile.json"],"anchored_edits":[{"path":"supabase/functions/operator-respond/index.ts","edits":[{"new_content":"function isEvasivePaulClarification(value: unknown) {\n  const text = String(value ?? '').replace(/\\s+/g, ' ').trim();\n  if (!text) return false;\n  return /^(?:what outcome do you want|what would you like(?: me)? to do|what do you want(?: me)? to do|can you clarify|could you clarify|please clarify|which .* do you mean|tell me what you want|what are you trying to achieve|to give you (?:a )?specific answer,? i need to know what .* refers to|i need to know what .* refers to|what does [\"']?(?:it|that|this)[\"']? refer to|what are we looking at|give me (?:the )?context|point me to (?:the )?(?:repo|repository|route|process|mission|code))\\b/i.test(text);\n}","old_content":"function isEvasivePaulClarification(value: unknown) {\n  const text = String(value ?? '').replace(/\\s+/g, ' ').trim();\n  if (!text) return false;\n  return /^(?:what outcome do you want|what would you like(?: me)? to do|what do you want(?: me)? to do|can you clarify|could you clarify|please clarify|which .* do you mean|tell me what you want|what are you trying to achieve)\\b/i.test(text);\n}"},{"new_content":"function applyConversationReferent(message: string, referent: string) {\n  const text = String(message ?? '').trim();\n  const subject = String(referent ?? '').trim();\n  if (!text || !subject) return text;\n  if (/\\bit\\b/i.test(text)) return text.replace(/\\bit\\b/i, subject);\n  if (/\\b(?:that|this)(?:\\s+thing)?\\b/i.test(text)) return text.replace(/\\b(?:that|this)(?:\\s+thing)?\\b/i, subject);\n  if (/\\b(?:they|them|those)\\b/i.test(text)) return text.replace(/\\b(?:they|them|those)\\b/i, subject);\n  return `${text}\\nResolved subject: ${subject}`;\n}\n\nfunction deterministicRecentConversationReferent(message: string, sidekickContext: any): PaulConversationReferent | null {\n  const text = String(message ?? '').trim();\n  if (!needsConversationReferentResolution(text)) return null;\n  const recentConversation = Array.isArray(sidekickContext?.recentConversation) ? sidekickContext.recentConversation.slice(-6) : [];\n  if (!recentConversation.length) return null;\n  const recentText = recentConversation.slice(-4).map((turn: any) => String(turn?.content ?? '')).join(' ').toLowerCase();\n  if (/\\bknocklaunch\\b/.test(recentText)) {\n    const machinery = /\\b(?:machinery|infrastructure|architecture|stack|forgejo|supabase|cloudflare|runner|build|maintain|ci\\/cd|ci\\b|release)\\b/.test(recentText);\n    const referent = machinery ? 'KNOCKLAUNCH and its build-and-maintenance machinery' : 'KNOCKLAUNCH';\n    return { resolvedMessage: applyConversationReferent(text, referent), referent, confidence: 0.94, clarificationRequired: false, source: 'semantic' };\n  }\n  if (/\\bpaul\\b|\\bsidekick\\b/.test(recentText)) {\n    const referent = 'PAUL';\n    return { resolvedMessage: applyConversationReferent(text, referent), referent, confidence: 0.92, clarificationRequired: false, source: 'semantic' };\n  }\n  return null;\n}\n\nasync function resolvePaulConversationReferent(message: string, sidekickContext: any): Promise<PaulConversationReferent> {\n  const text = String(message ?? '').trim();\n  const recentConversation = Array.isArray(sidekickContext?.recentConversation) ? sidekickContext.recentConversation.slice(-6) : [];\n  if (!text || !needsConversationReferentResolution(text) || recentConversation.length === 0) {\n    return { resolvedMessage: text, referent: null, confidence: 1, clarificationRequired: false, source: 'none' };\n  }\n\n  const deterministic = deterministicRecentConversationReferent(text, sidekickContext);\n  if (deterministic) return deterministic;\n\n  try {","old_content":"async function resolvePaulConversationReferent(message: string, sidekickContext: any): Promise<PaulConversationReferent> {\n  const text = String(message ?? '').trim();\n  const recentConversation = Array.isArray(sidekickContext?.recentConversation) ? sidekickContext.recentConversation.slice(-6) : [];\n  if (!text || !needsConversationReferentResolution(text) || recentConversation.length === 0) {\n    return { resolvedMessage: text, referent: null, confidence: 1, clarificationRequired: false, source: 'none' };\n  }\n\n  try {"},{"new_content":"    const authoritativeUserMessage = conversationReferent.confidence >= 0.72 && !conversationReferent.clarificationRequired\n      ? interpretedMessage\n      : userMessage;\n    const systemPrompt = [","old_content":"    const systemPrompt = ["},{"new_content":"        answer = await callModel([{ role: 'system', content: systemPrompt }, { role: 'user', content: authoritativeUserMessage }], []);","old_content":"        answer = await callModel([{ role: 'system', content: systemPrompt }, { role: 'user', content: userMessage }], []);"},{"new_content":"          { role: 'user', content: authoritativeUserMessage },\n        ], []);\n        const correctedMessage = humanizePaulConsoleAnswer(corrected.message, authoritativeUserMessage);","old_content":"          { role: 'user', content: userMessage },\n        ], []);\n        const correctedMessage = humanizePaulConsoleAnswer(corrected.message, userMessage);"},{"new_content":"    if (semanticIntent.directQuestion && !semanticIntent.clarificationRequired && isEvasivePaulClarification(finalMessage)) {\n      if (conversationReferent.confidence >= 0.72 && !conversationReferent.clarificationRequired && conversationReferent.referent) {\n        finalMessage = `I’m taking “it” to mean ${conversationReferent.referent} from the immediately preceding conversation. I should answer under that interpretation instead of making you repeat it. The next response should use the grounded context for ${conversationReferent.referent}, and only ask you if a materially different interpretation is actually plausible.`;\n      } else {\n        finalMessage = 'I do not have enough grounded information to answer that completely yet, but I should not make you restate the question. I can answer the supported part and fetch the missing current fact when the authoritative source is available.';\n      }\n    }","old_content":"    if (semanticIntent.directQuestion && !semanticIntent.clarificationRequired && isEvasivePaulClarification(finalMessage)) {\n      finalMessage = 'I do not have enough grounded information to answer that completely yet, but I should not make you restate the question. I can answer the supported part and fetch the missing current fact when the authoritative source is available.';\n    }"},{"new_content":"      ownerContextPreloaded: Boolean(liveCapabilityGrounding || liveStateGrounding || historicalPlatformGrounding || stableOwnerGrounding),\n      conversationReferent: {\n        source: conversationReferent.source,\n        referent: conversationReferent.referent,\n        confidence: conversationReferent.confidence,\n        clarificationRequired: conversationReferent.clarificationRequired,\n        interpreted: authoritativeUserMessage !== userMessage,\n      },\n    });","old_content":"      ownerContextPreloaded: Boolean(liveCapabilityGrounding || liveStateGrounding || historicalPlatformGrounding || stableOwnerGrounding),\n    });"},{"new_content":"    godmode_console_evidence_answer: true,\n    canonical_mission_operator: true,\n    self_awareness_natural_language_canary: isPaulSelfAwarenessRequest('are you self aware yet?'),\n    evasive_clarification_guard_canary: isEvasivePaulClarification('What outcome do you want?'),\n    referent_clarification_guard_canary: isEvasivePaulClarification('To give you a specific answer, I need to know what \"it\" refers to.'),","old_content":"    godmode_console_evidence_answer: true,\n    canonical_mission_operator: true,\n    self_awareness_natural_language_canary: isPaulSelfAwarenessRequest('are you self aware yet?'),\n    evasive_clarification_guard_canary: isEvasivePaulClarification('What outcome do you want?'),"}]},{"path":"config/paul-owner-profile.json","edits":[{"new_content":"      \"expected\": \"Resolve 'it' from the immediately preceding topic to KNOCKLAUNCH / its build-and-maintenance machinery and make that resolved message authoritative for the answer model itself, not merely a prompt hint. Answer with concrete improvement priorities. Reject and correct any draft that asks what 'it' refers to, asks what we are looking at, or asks Noel to restate context unless recent context truly contains multiple materially different consequential referents.\"","old_content":"      \"expected\": \"Resolve 'it' from the immediately preceding topic to KNOCKLAUNCH / its build-and-maintenance machinery and answer with concrete improvement priorities. Do not ask Noel what 'it' refers to unless recent context truly contains multiple materially different consequential referents.\""}]}],"implementation":{"files":[],"writes":[]},"requestContract":null,"repairGeneration":null,"executionEnvelope":{"ship":true,"version":1,"approved":true,"missionId":null,"ownerApproved":true,"releaseIntent":null,"sourceTargets":["supabase/functions/operator-respond/index.ts","config/paul-owner-profile.json"],"requestContract":null,"repairGeneration":null,"proofRequirements":null,"controlPlaneUnfreeze":false,"controlPlaneMaintenance":false,"controlPlaneMaintenancePaths":[],"controlPlaneMaintenanceReason":null},"proofRequirements":null,"controlPlaneUnfreeze":false,"durableMutationResume":true,"controlPlaneMaintenance":false,"controlPlaneMaintenancePaths":[],"controlPlaneMaintenanceReason":null},"recovery":false,"fingerprint":"3625c54aa71dbb0a511b6d1953a6c009d091d1531525cc02cb320f110f3a02d4","replayCount":0,"serializedBytes":11699},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-01T01:41:15.415601+00:00","proof_gate":"repository_mutation_intent_persisted","source_sha":null,"external_id":null,"receipt_type":"repository_mutation_intent","idempotency_key":"mission:d7d1f5aa-0634-4cc5-b370-5203f7bd827f:repository-mutation-intent:3625c54aa71dbb0a511b6d1953a6c009d091d1531525cc02cb320f110f3a02d4:0","mission_step_id":"7456f532-c530-463d-b368-ce4b84c5527c","command_center_event_id":"d7d1f5aa-0634-4cc5-b370-5203f7bd827f"},{"id":"be992bbf-df59-4b4d-bde7-deea6b204d68","source":"cc-execution","status":"waiting","payload":{"body":{"ship":true,"files":[{"path":"src/pages/card-grading/PCGQualityControlPanel.tsx","content":"import React from 'react';\nimport {CheckCircle2,RotateCcw,ShieldAlert,TriangleAlert} from 'lucide-react';\nimport {toast} from '@/lib/notify';\nimport {supabase} from '@/integrations/supabase/client';\ntype CardRef={id:string;sequence_number:number;cert_number?:string|null};\ntype Review={card_id:string;outcome:'approved'|'regrade'|'rework'|'discrepancy';reviewed_at:string};\nexport default function PCGQualityControlPanel({tenantId,submissionId,cards,active,onChanged}:{tenantId:string;submissionId:string;cards:CardRef[];active:boolean;onChanged?:()=>void|Promise<void>}){\n const[reviews,setReviews]=React.useState<Review[]>([]);\n const[notes,setNotes]=React.useState<Record<string,string>>({});\n const[busy,setBusy]=React.useState<string|null>(null);\n const load=React.useCallback(async()=>{if(!active||!tenantId||!cards.length){setReviews([]);return}const{data,error}=await(supabase as any).from('card_grading_qc_reviews').select('card_id,outcome,reviewed_at').eq('tenant_id',tenantId).in('card_id',cards.map(card=>card.id)).order('reviewed_at',{ascending:false});if(error)toast.error(error.message);else setReviews((data||[]) as Review[])},[active,cards,tenantId]);\n React.useEffect(()=>{void load()},[load]);\n if(!active)return null;\n const latest=new Map<string,Review>();for(const review of reviews)if(!latest.has(review.card_id))latest.set(review.card_id,review);\n const approved=cards.filter(card=>latest.get(card.id)?.outcome==='approved').length;\n const save=async(card:CardRef,outcome:Review['outcome'])=>{setBusy(card.id+outcome);const{error}=await(supabase as any).rpc('record_card_grading_qc',{p_tenant_id:tenantId,p_card_id:card.id,p_outcome:outcome,p_notes:String(notes[card.id]||'').trim()||null});if(error)toast.error(error.message||'Unable to save QA review');else{toast.success(outcome==='approved'?'Card approved for finalization.':'QA decision saved.');await load();await onChanged?.()}setBusy(null)};\n return <section data-card-grading-qc-workbench=\"true\" data-submission-id={submissionId} className=\"mt-4 border border-white/[0.08] bg-[#09090a]/88 p-4\"><div className=\"flex flex-wrap items-end justify-between gap-3 border-b border-white/[0.08] pb-3\"><div><div className=\"text-[9px] font-black uppercase tracking-[.16em] text-[#d8bb78]\">Quality control</div><h3 className=\"mt-1 text-lg font-black\">QA review · {approved}/{cards.length} approved</h3></div><div className=\"text-[10px] font-bold text-white/35\">Ready stays locked until every card is approved.</div></div><div className=\"divide-y divide-white/[0.07]\">{cards.map(card=>{const state=latest.get(card.id)?.outcome||'pending';return <div key={card.id} className=\"py-4\"><div className=\"flex items-center gap-2\"><span className=\"text-sm font-black\">Card #{card.sequence_number}</span><span className={state==='approved'?'text-[10px] font-black uppercase text-emerald-300':'text-[10px] font-black uppercase text-amber-200'}>{state}</span>{card.cert_number?<span className=\"text-[10px] text-white/30\">Cert {card.cert_number}</span>:null}</div><input value={notes[card.id]||''} onChange={event=>setNotes({...notes,[card.id]:event.target.value})} placeholder=\"QA note or discrepancy reason\" className=\"mt-3 h-10 w-full border border-white/[0.09] bg-black/35 px-3 text-xs text-white outline-none placeholder:text-white/20\"/><div className=\"mt-2 grid grid-cols-2 gap-2 sm:grid-cols-4\"><button disabled={Boolean(busy)} onClick={()=>void save(card,'approved')} className=\"inline-flex items-center justify-center gap-1.5 bg-emerald-400/90 px-3 py-2 text-xs font-black text-black disabled:opacity-40\"><CheckCircle2 className=\"h-3.5 w-3.5\"/>Approve</button><button disabled={Boolean(busy)} onClick={()=>void save(card,'regrade')} className=\"inline-flex items-center justify-center gap-1.5 border border-white/10 px-3 py-2 text-xs font-black\"><RotateCcw className=\"h-3.5 w-3.5\"/>Regrade</button><button disabled={Boolean(busy)} onClick={()=>void save(card,'rework')} className=\"inline-flex items-center justify-center gap-1.5 border border-white/10 px-3 py-2 text-xs font-black\"><ShieldAlert className=\"h-3.5 w-3.5\"/>Rework</button><button disabled={Boolean(busy)} onClick={()=>void save(card,'discrepancy')} className=\"inline-flex items-center justify-center gap-1.5 border border-amber-300/20 px-3 py-2 text-xs font-black text-amber-200\"><TriangleAlert className=\"h-3.5 w-3.5\"/>Escalate</button></div></div>})}</div></section>;\n}"},{"path":"src/pages/card-grading/CardGradingPopulationReport.tsx","content":"import React from 'react';\nimport {Search,ShieldCheck} from 'lucide-react';\nimport {toast} from '@/lib/notify';\nimport {supabase} from '@/integrations/supabase/client';\ntype PopRow={year?:string|null;manufacturer?:string|null;set_name?:string|null;brand_set?:string|null;subset?:string|null;player_character?:string|null;card_number?:string|null;variation?:string|null;final_grade:number;grade_label?:string|null;pop_count:number|string};\nexport default function CardGradingPopulationReport({tenantId}:{tenantId:string}){\n const[rows,setRows]=React.useState<PopRow[]>([]);const[query,setQuery]=React.useState('');const[loading,setLoading]=React.useState(true);\n React.useEffect(()=>{let cancelled=false;void(async()=>{const{data,error}=await(supabase as any).from('card_grading_population_report').select('*').eq('tenant_id',tenantId).order('player_character').order('final_grade',{ascending:false});if(cancelled)return;if(error)toast.error(error.message);else setRows((data||[]) as PopRow[]);setLoading(false)})();return()=>{cancelled=true}},[tenantId]);\n const filtered=React.useMemo(()=>{const needle=query.trim().toLowerCase();return needle?rows.filter(row=>[row.player_character,row.year,row.manufacturer,row.set_name,row.brand_set,row.subset,row.card_number,row.variation,row.final_grade,row.grade_label].filter(Boolean).join(' ').toLowerCase().includes(needle)):rows},[query,rows]);\n const total=rows.reduce((sum,row)=>sum+Number(row.pop_count||0),0);\n return <section data-card-grading-pop-report=\"true\" className=\"mx-auto w-full max-w-[1500px] px-3 pb-10 pt-4 sm:px-5 lg:px-7\"><div className=\"flex flex-wrap items-end justify-between gap-4 border-b border-white/[0.08] pb-4\"><div><div className=\"text-[9px] font-black uppercase tracking-[.2em] text-[#d8bb78]\">KNOCKLAUNCH Card Grading</div><h1 className=\"mt-1 text-2xl font-black\">Population Report</h1><p className=\"mt-1 text-sm text-white/40\">Automatically derived from finalized PCG certificates.</p></div><div className=\"text-right\"><div className=\"text-2xl font-black\">{total.toLocaleString()}</div><div className=\"text-[9px] font-black uppercase text-white/30\">Published cards</div></div></div><div className=\"relative mt-4 max-w-2xl\"><Search className=\"absolute left-3 top-3 h-4 w-4 text-white/25\"/><input value={query} onChange={event=>setQuery(event.target.value)} placeholder=\"Search player, year, set, card #, variation, grade\" className=\"h-10 w-full border border-white/[0.09] bg-black/35 pl-10 pr-3 text-sm text-white outline-none\"/></div>{loading?<div className=\"py-10 text-white/35\">Loading population…</div>:<div className=\"mt-4 border-y border-white/[0.08]\">{filtered.map((row,index)=>{const grade=Number(row.final_grade);const identity=[row.year,row.manufacturer,row.set_name||row.brand_set,row.subset,row.card_number?'#'+row.card_number:null,row.variation].filter(Boolean).join(' · ');return <div key={index} className=\"grid grid-cols-[1fr_auto] items-center gap-4 border-b border-white/[0.07] px-2 py-3 last:border-0\"><div className=\"min-w-0\"><div className=\"truncate text-sm font-black\">{row.player_character||'Subject not specified'}</div><div className=\"mt-1 truncate text-[10px] text-white/35\">{identity}</div></div><div className=\"flex items-center gap-2\"><ShieldCheck className=\"h-4 w-4 text-[#d8bb78]/60\"/><div className=\"text-right\"><div className=\"font-black text-[#ead49d]\">{Number.isInteger(grade)?grade.toFixed(0):grade.toFixed(1)} <span className=\"text-white/30\">/</span> Pop {Number(row.pop_count).toLocaleString()}</div><div className=\"text-[9px] uppercase text-white/25\">{row.grade_label||'PCG grade'}</div></div></div></div>})}</div>}</section>;\n}"},{"path":"supabase/migrations/20260930015105_card_grading_application_v1.sql","content":"\nalter table public.card_grading_cards\n  add column if not exists manufacturer text,\n  add column if not exists set_name text,\n  add column if not exists subset text,\n  add column if not exists serial_number text,\n  add column if not exists relic_present boolean,\n  add column if not exists identified_at timestamptz,\n  add column if not exists identified_by uuid,\n  add column if not exists finalized_at timestamptz;\n\ncreate table if not exists public.card_grading_workflow_events (\n  id uuid primary key default gen_random_uuid(),\n  tenant_id uuid not null references public.tenants(id) on delete cascade,\n  submission_id uuid references public.card_grading_submissions(id) on delete cascade,\n  card_id uuid references public.card_grading_cards(id) on delete cascade,\n  event_type text not null,\n  from_status text,\n  to_status text,\n  reason text,\n  actor_user_id uuid,\n  metadata jsonb not null default '{}'::jsonb,\n  occurred_at timestamptz not null default now()\n);\ncreate index if not exists card_grading_workflow_events_tenant_time_idx\n  on public.card_grading_workflow_events(tenant_id, occurred_at desc);\ncreate index if not exists card_grading_workflow_events_submission_idx\n  on public.card_grading_workflow_events(submission_id, occurred_at desc);\ncreate index if not exists card_grading_workflow_events_card_idx\n  on public.card_grading_workflow_events(card_id, occurred_at desc);\n\ncreate table if not exists public.card_grading_media (\n  id uuid primary key default gen_random_uuid(),\n  tenant_id uuid not null references public.tenants(id) on delete cascade,\n  card_id uuid not null references public.card_grading_cards(id) on delete cascade,\n  kind text not null check (kind in ('front','back','detail','defect','label','final')),\n  provider text not null default 'knocklaunch',\n  provider_file_id text,\n  provider_revision_id text,\n  delivery_url text,\n  mime_type text,\n  width integer,\n  height integer,\n  bytes bigint,\n  checksum text,\n  is_current boolean not null default true,\n  is_public boolean not null default false,\n  created_by uuid,\n  created_at timestamptz not null default now(),\n  superseded_at timestamptz\n);\ncreate index if not exists card_grading_media_card_idx\n  on public.card_grading_media(card_id, kind, created_at desc);\ncreate unique index if not exists card_grading_media_one_current_kind_idx\n  on public.card_grading_media(card_id, kind)\n  where is_current;\n\ncreate table if not exists public.card_grading_grading_sessions (\n  id uuid primary key default gen_random_uuid(),\n  tenant_id uuid not null references public.tenants(id) on delete cascade,\n  card_id uuid not null references public.card_grading_cards(id) on delete cascade,\n  grader_user_id uuid,\n  status text not null default 'draft' check (status in ('draft','submitted','superseded')),\n  overall_grade numeric,\n  grade_label text,\n  notes text,\n  started_at timestamptz not null default now(),\n  submitted_at timestamptz,\n  created_at timestamptz not null default now(),\n  updated_at timestamptz not null default now()\n);\ncreate index if not exists card_grading_grading_sessions_card_idx\n  on public.card_grading_grading_sessions(card_id, created_at desc);\n\ncreate table if not exists public.card_grading_criterion_results (\n  id uuid primary key default gen_random_uuid(),\n  tenant_id uuid not null references public.tenants(id) on delete cascade,\n  session_id uuid not null references public.card_grading_grading_sessions(id) on delete cascade,\n  criterion_key text not null,\n  score numeric,\n  notes text,\n  created_at timestamptz not null default now(),\n  updated_at timestamptz not null default now(),\n  unique(session_id, criterion_key)\n);\n\ncreate table if not exists public.card_grading_qc_reviews (\n  id uuid primary key default gen_random_uuid(),\n  tenant_id uuid not null references public.tenants(id) on delete cascade,\n  card_id uuid not null references public.card_grading_cards(id) on delete cascade,\n  grading_session_id uuid references public.card_grading_grading_sessions(id) on delete set null,\n  reviewer_user_id uuid,\n  outcome text not null check (outcome in ('approved','regrade','rework','discrepancy')),\n  notes text,\n  reviewed_at timestamptz not null default now()\n);\ncreate index if not exists card_grading_qc_reviews_card_idx\n  on public.card_grading_qc_reviews(card_id, reviewed_at desc);\n\ncreate table if not exists public.card_grading_exceptions (\n  id uuid primary key default gen_random_uuid(),\n  tenant_id uuid not null references public.tenants(id) on delete cascade,\n  submission_id uuid references public.card_grading_submissions(id) on delete cascade,\n  card_id uuid references public.card_grading_cards(id) on delete cascade,\n  kind text not null check (kind in ('hold','rework','escalation')),\n  reason text not null,\n  status text not null default 'open' check (status in ('open','resolved')),\n  opened_by uuid,\n  opened_at timestamptz not null default now(),\n  resolved_by uuid,\n  resolved_at timestamptz,\n  resolution text\n);\ncreate index if not exists card_grading_exceptions_open_idx\n  on public.card_grading_exceptions(tenant_id, status, opened_at desc);\n\ncreate table if not exists public.card_grading_certificates (\n  id uuid primary key default gen_random_uuid(),\n  tenant_id uuid not null references public.tenants(id) on delete cascade,\n  card_id uuid not null references public.card_grading_cards(id) on delete cascade,\n  cert_number text not null,\n  category text,\n  year text,\n  manufacturer text,\n  set_name text,\n  brand_set text,\n  subset text,\n  player_character text,\n  card_number text,\n  variation text,\n  serial_number text,\n  autograph_present boolean,\n  relic_present boolean,\n  final_grade numeric not null,\n  grade_label text,\n  final_image_url text,\n  finalized_at timestamptz,\n  published_at timestamptz,\n  created_by uuid,\n  created_at timestamptz not null default now(),\n  updated_at timestamptz not null default now(),\n  unique(card_id),\n  unique(tenant_id, cert_number)\n);\ncreate index if not exists card_grading_certificates_lookup_idx\n  on public.card_grading_certificates(cert_number)\n  where published_at is not null;\n\nalter table public.card_grading_workflow_events enable row level security;\nalter table public.card_grading_media enable row level security;\nalter table public.card_grading_grading_sessions enable row level security;\nalter table public.card_grading_criterion_results enable row level security;\nalter table public.card_grading_qc_reviews enable row level security;\nalter table public.card_grading_exceptions enable row level security;\nalter table public.card_grading_certificates enable row level security;\n\nrevoke all on public.card_grading_workflow_events from anon;\nrevoke all on public.card_grading_media from anon;\nrevoke all on public.card_grading_grading_sessions from anon;\nrevoke all on public.card_grading_criterion_results from anon;\nrevoke all on public.card_grading_qc_reviews from anon;\nrevoke all on public.card_grading_exceptions from anon;\nrevoke all on public.card_grading_certificates from anon;\n\ngrant select, insert on public.card_grading_workflow_events to authenticated;\ngrant select, insert, update, delete on public.card_grading_media to authenticated;\ngrant select, insert, update, delete on public.card_grading_grading_sessions to authenticated;\ngrant select, insert, update, delete on public.card_grading_criterion_results to authenticated;\ngrant select, insert, update, delete on public.card_grading_qc_reviews to authenticated;\ngrant select, insert, update, delete on public.card_grading_exceptions to authenticated;\ngrant select, insert, update on public.card_grading_certificates to authenticated;\ngrant select on public.card_grading_certificates to anon;\n\ngrant all on public.card_grading_workflow_events to service_role;\ngrant all on public.card_grading_media to service_role;\ngrant all on public.card_grading_grading_sessions to service_role;\ngrant all on public.card_grading_criterion_results to service_role;\ngrant all on public.card_grading_qc_reviews to service_role;\ngrant all on public.card_grading_exceptions to service_role;\ngrant all on public.card_grading_certificates to service_role;\n\ndrop policy if exists card_grading_workflow_events_tenant_select on public.card_grading_workflow_events;\ncreate policy card_grading_workflow_events_tenant_select\non public.card_grading_workflow_events for select to authenticated\nusing (\n  public.is_system_admin(auth.uid())\n  or exists (\n    select 1 from public.security_active_user_tenant_memberships m\n    where m.user_id = auth.uid() and m.status = 'active' and m.tenant_id = card_grading_workflow_events.tenant_id\n  )\n);\ndrop policy if exists card_grading_workflow_events_tenant_insert on public.card_grading_workflow_events;\ncreate policy card_grading_workflow_events_tenant_insert\non public.card_grading_workflow_events for insert to authenticated\nwith check (\n  public.is_system_admin(auth.uid())\n  or exists (\n    select 1 from public.security_active_user_tenant_memberships m\n    where m.user_id = auth.uid() and m.status = 'active' and m.tenant_id = card_grading_workflow_events.tenant_id\n  )\n);\n\ndrop policy if exists card_grading_media_tenant_all on public.card_grading_media;\ncreate policy card_grading_media_tenant_all\non public.card_grading_media for all to authenticated\nusing (\n  public.is_system_admin(auth.uid())\n  or exists (\n    select 1 from public.security_active_user_tenant_memberships m\n    where m.user_id = auth.uid() and m.status = 'active' and m.tenant_id = card_grading_media.tenant_id\n  )\n)\nwith check (\n  public.is_system_admin(auth.uid())\n  or exists (\n    select 1 from public.security_active_user_tenant_memberships m\n    where m.user_id = auth.uid() and m.status = 'active' and m.tenant_id = card_grading_media.tenant_id\n  )\n);\n\ndrop policy if exists card_grading_grading_sessions_tenant_all on public.card_grading_grading_sessions;\ncreate policy card_grading_grading_sessions_tenant_all\non public.card_grading_grading_sessions for all to authenticated\nusing (\n  public.is_system_admin(auth.uid())\n  or exists (\n    select 1 from public.security_active_user_tenant_memberships m\n    where m.user_id = auth.uid() and m.status = 'active' and m.tenant_id = card_grading_grading_sessions.tenant_id\n  )\n)\nwith check (\n  public.is_system_admin(auth.uid())\n  or exists (\n    select 1 from public.security_active_user_tenant_memberships m\n    where m.user_id = auth.uid() and m.status = 'active' and m.tenant_id = card_grading_grading_sessions.tenant_id\n  )\n);\n\ndrop policy if exists card_grading_criterion_results_tenant_all on public.card_grading_criterion_results;\ncreate policy card_grading_criterion_results_tenant_all\non public.card_grading_criterion_results for all to authenticated\nusing (\n  public.is_system_admin(auth.uid())\n  or exists (\n    select 1 from public.security_active_user_tenant_memberships m\n    where m.user_id = auth.uid() and m.status = 'active' and m.tenant_id = card_grading_criterion_results.tenant_id\n  )\n)\nwith check (\n  public.is_system_admin(auth.uid())\n  or exists (\n    select 1 from public.security_active_user_tenant_memberships m\n    where m.user_id = auth.uid() and m.status = 'active' and m.tenant_id = card_grading_criterion_results.tenant_id\n  )\n);\n\ndrop policy if exists card_grading_qc_reviews_tenant_all on public.card_grading_qc_reviews;\ncreate policy card_grading_qc_reviews_tenant_all\non public.card_grading_qc_reviews for all to authenticated\nusing (\n  public.is_system_admin(auth.uid())\n  or exists (\n    select 1 from public.security_active_user_tenant_memberships m\n    where m.user_id = auth.uid() and m.status = 'active' and m.tenant_id = card_grading_qc_reviews.tenant_id\n  )\n)\nwith check (\n  public.is_system_admin(auth.uid())\n  or exists (\n    select 1 from public.security_active_user_tenant_memberships m\n    where m.user_id = auth.uid() and m.status = 'active' and m.tenant_id = card_grading_qc_reviews.tenant_id\n  )\n);\n\ndrop policy if exists card_grading_exceptions_tenant_all on public.card_grading_exceptions;\ncreate policy card_grading_exceptions_tenant_all\non public.card_grading_exceptions for all to authenticated\nusing (\n  public.is_system_admin(auth.uid())\n  or exists (\n    select 1 from public.security_active_user_tenant_memberships m\n    where m.user_id = auth.uid() and m.status = 'active' and m.tenant_id = card_grading_exceptions.tenant_id\n  )\n)\nwith check (\n  public.is_system_admin(auth.uid())\n  or exists (\n    select 1 from public.security_active_user_tenant_memberships m\n    where m.user_id = auth.uid() and m.status = 'active' and m.tenant_id = card_grading_exceptions.tenant_id\n  )\n);\n\ndrop policy if exists card_grading_certificates_staff_select on public.card_grading_certificates;\ncreate policy card_grading_certificates_staff_select\non public.card_grading_certificates for select to authenticated\nusing (\n  published_at is not null\n  or public.is_system_admin(auth.uid())\n  or exists (\n    select 1 from public.security_active_user_tenant_memberships m\n    where m.user_id = auth.uid() and m.status = 'active' and m.tenant_id = card_grading_certificates.tenant_id\n  )\n);\ndrop policy if exists card_grading_certificates_public_select on public.card_grading_certificates;\ncreate policy card_grading_certificates_public_select\non public.card_grading_certificates for select to anon\nusing (published_at is not null);\ndrop policy if exists card_grading_certificates_tenant_insert on public.card_grading_certificates;\ncreate policy card_grading_certificates_tenant_insert\non public.card_grading_certificates for insert to authenticated\nwith check (\n  public.is_system_admin(auth.uid())\n  or exists (\n    select 1 from public.security_active_user_tenant_memberships m\n    where m.user_id = auth.uid() and m.status = 'active' and m.tenant_id = card_grading_certificates.tenant_id\n  )\n);\ndrop policy if exists card_grading_certificates_tenant_update on public.card_grading_certificates;\ncreate policy card_grading_certificates_tenant_update\non public.card_grading_certificates for update to authenticated\nusing (\n  public.is_system_admin(auth.uid())\n  or exists (\n    select 1 from public.security_active_user_tenant_memberships m\n    where m.user_id = auth.uid() and m.status = 'active' and m.tenant_id = card_grading_certificates.tenant_id\n  )\n)\nwith check (\n  public.is_system_admin(auth.uid())\n  or exists (\n    select 1 from public.security_active_user_tenant_memberships m\n    where m.user_id = auth.uid() and m.status = 'active' and m.tenant_id = card_grading_certificates.tenant_id\n  )\n);\n\ncreate or replace function public.card_grading_audit_status_change()\nreturns trigger\nlanguage plpgsql\nset search_path = public, auth, pg_temp\nas $$\nbegin\n  if new.status is distinct from old.status then\n    insert into public.card_grading_workflow_events(\n      tenant_id, submission_id, card_id, event_type, from_status, to_status, actor_user_id\n    ) values (\n      new.tenant_id,\n      case when tg_table_name = 'card_grading_submissions' then new.id else new.submission_id end,\n      case when tg_table_name = 'card_grading_cards' then new.id else null end,\n      case when tg_table_name = 'card_grading_submissions' then 'submission_status_changed' else 'card_status_changed' end,\n      old.status, new.status, auth.uid()\n    );\n  end if;\n  return new;\nend;\n$$;\nrevoke all on function public.card_grading_audit_status_change() from public, anon, authenticated;\ngrant execute on function public.card_grading_audit_status_change() to service_role;\n\ndrop trigger if exists card_grading_submissions_status_audit on public.card_grading_submissions;\ncreate trigger card_grading_submissions_status_audit\nafter update of status on public.card_grading_submissions\nfor each row execute function public.card_grading_audit_status_change();\n\ndrop trigger if exists card_grading_cards_status_audit on public.card_grading_cards;\ncreate trigger card_grading_cards_status_audit\nafter update of status on public.card_grading_cards\nfor each row execute function public.card_grading_audit_status_change();\n\ncreate or replace function public.card_grading_protect_published_certificate()\nreturns trigger\nlanguage plpgsql\nset search_path = public, pg_temp\nas $$\nbegin\n  if old.published_at is not null\n     and current_setting('app.card_grading_cert_correction', true) <> 'allowed' then\n    raise exception 'Published PCG certificates are immutable; use the audited correction flow';\n  end if;\n  new.updated_at := now();\n  return new;\nend;\n$$;\nrevoke all on function public.card_grading_protect_published_certificate() from public, anon, authenticated;\ngrant execute on function public.card_grading_protect_published_certificate() to service_role;\n\ndrop trigger if exists card_grading_certificates_immutable on public.card_grading_certificates;\ncreate trigger card_grading_certificates_immutable\nbefore update on public.card_grading_certificates\nfor each row execute function public.card_grading_protect_published_certificate();\n\ncreate or replace function public.card_grading_protect_finalized_card()\nreturns trigger\nlanguage plpgsql\nset search_path = public, pg_temp\nas $$\nbegin\n  if current_setting('app.card_grading_cert_correction', true) = 'allowed' then\n    return new;\n  end if;\n  if exists (\n    select 1 from public.card_grading_certificates cc\n    where cc.card_id = old.id and cc.published_at is not null\n  ) and (\n    new.cert_number is distinct from old.cert_number\n    or new.grade is distinct from old.grade\n    or new.grade_label is distinct from old.grade_label\n    or new.category is distinct from old.category\n    or new.year is distinct from old.year\n    or new.manufacturer is distinct from old.manufacturer\n    or new.set_name is distinct from old.set_name\n    or new.brand_set is distinct from old.brand_set\n    or new.subset is distinct from old.subset\n    or new.player_character is distinct from old.player_character\n    or new.card_number is distinct from old.card_number\n    or new.variation is distinct from old.variation\n    or new.serial_number is distinct from old.serial_number\n    or new.autograph_present is distinct from old.autograph_present\n    or new.relic_present is distinct from old.relic_present\n  ) then\n    raise exception 'Finalized PCG card identity and grade are immutable; use the audited correction flow';\n  end if;\n  return new;\nend;\n$$;\nrevoke all on function public.card_grading_protect_finalized_card() from public, anon, authenticated;\ngrant execute on function public.card_grading_protect_finalized_card() to service_role;\n\ndrop trigger if exists card_grading_cards_finalized_immutable on public.card_grading_cards;\ncreate trigger card_grading_cards_finalized_immutable\nbefore update on public.card_grading_cards\nfor each row execute function public.card_grading_protect_finalized_card();\n\ncreate or replace function public.assign_card_grading_certificate(\n  p_tenant_id uuid,\n  p_card_id uuid,\n  p_cert_number text\n)\nreturns uuid\nlanguage plpgsql\nset search_path = public, auth, pg_temp\nas $$\ndeclare\n  v_card public.card_grading_cards%rowtype;\n  v_certificate_id uuid;\nbegin\n  if auth.uid() is null or not (\n    public.is_system_admin(auth.uid())\n    or exists (\n      select 1 from public.security_active_user_tenant_memberships m\n      where m.user_id = auth.uid() and m.status = 'active' and m.tenant_id = p_tenant_id\n    )\n  ) then\n    raise exception 'Card grading workspace access required' using errcode = '42501';\n  end if;\n  if nullif(btrim(coalesce(p_cert_number,'')),'') is null then\n    raise exception 'Cert Number is required';\n  end if;\n\n  select * into v_card\n  from public.card_grading_cards\n  where id = p_card_id and tenant_id = p_tenant_id;\n\n  if v_card.id is null then raise exception 'Card unavailable'; end if;\n  if v_card.grade is null then raise exception 'Save the card grade before assigning a Cert Number'; end if;\n\n  insert into public.card_grading_certificates(\n    tenant_id, card_id, cert_number, category, year, manufacturer, set_name, brand_set, subset,\n    player_character, card_number, variation, serial_number, autograph_present, relic_present,\n    final_grade, grade_label, final_image_url, finalized_at, created_by\n  ) values (\n    p_tenant_id, v_card.id, btrim(p_cert_number), v_card.category, v_card.year, v_card.manufacturer,\n    v_card.set_name, v_card.brand_set, v_card.subset, v_card.player_character, v_card.card_number,\n    v_card.variation, v_card.serial_number, v_card.autograph_present, v_card.relic_present,\n    v_card.grade, v_card.grade_label, nullif(btrim(coalesce(v_card.slab_image_url,'')),''),\n    null, auth.uid()\n  )\n  on conflict (card_id) do update set\n    cert_number = excluded.cert_number,\n    category = excluded.category,\n    year = excluded.year,\n    manufacturer = excluded.manufacturer,\n    set_name = excluded.set_name,\n    brand_set = excluded.brand_set,\n    subset = excluded.subset,\n    player_character = excluded.player_character,\n    card_number = excluded.card_number,\n    variation = excluded.variation,\n    serial_number = excluded.serial_number,\n    autograph_present = excluded.autograph_present,\n    relic_present = excluded.relic_present,\n    final_grade = excluded.final_grade,\n    grade_label = excluded.grade_label,\n    final_image_url = excluded.final_image_url,\n    updated_at = now()\n  returning id into v_certificate_id;\n\n  update public.card_grading_cards\n     set cert_number = btrim(p_cert_number), updated_at = now()\n   where id = p_card_id and tenant_id = p_tenant_id;\n\n  insert into public.card_grading_workflow_events(\n    tenant_id, submission_id, card_id, event_type, actor_user_id,\n    metadata\n  ) values (\n    p_tenant_id, v_card.submission_id, v_card.id, 'certificate_assigned', auth.uid(),\n    jsonb_build_object('cert_number', btrim(p_cert_number))\n  );\n\n  return v_certificate_id;\nend;\n$$;\nrevoke all on function public.assign_card_grading_certificate(uuid,uuid,text) from public, anon;\ngrant execute on function public.assign_card_grading_certificate(uuid,uuid,text) to authenticated, service_role;\n\ncreate or replace function public.record_card_grading_qc(\n  p_tenant_id uuid,\n  p_card_id uuid,\n  p_outcome text,\n  p_notes text default null\n)\nreturns uuid\nlanguage plpgsql\nset search_path = public, auth, pg_temp\nas $$\ndeclare\n  v_card public.card_grading_cards%rowtype;\n  v_review_id uuid;\n  v_session_id uuid;\nbegin\n  if auth.uid() is null or not (\n    public.is_system_admin(auth.uid())\n    or exists (\n      select 1 from public.security_active_user_tenant_memberships m\n      where m.user_id = auth.uid() and m.status = 'active' and m.tenant_id = p_tenant_id\n    )\n  ) then\n    raise exception 'Card grading workspace access required' using errcode = '42501';\n  end if;\n  if p_outcome not in ('approved','regrade','rework','discrepancy') then\n    raise exception 'Invalid QC outcome';\n  end if;\n\n  select * into v_card\n  from public.card_grading_cards\n  where id = p_card_id and tenant_id = p_tenant_id;\n  if v_card.id is null then raise exception 'Card unavailable'; end if;\n\n  if p_outcome = 'approved' and (\n    v_card.grade is null\n    or nullif(btrim(coalesce(v_card.cert_number,'')),'') is null\n    or nullif(btrim(coalesce(v_card.slab_image_url,'')),'') is null\n  ) then\n    raise exception 'QC approval requires a saved grade, Cert Number, and final image';\n  end if;\n\n  select id into v_session_id\n  from public.card_grading_grading_sessions\n  where tenant_id = p_tenant_id and card_id = p_card_id and status = 'submitted'\n  order by submitted_at desc nulls last, created_at desc\n  limit 1;\n\n  insert into public.card_grading_qc_reviews(\n    tenant_id, card_id, grading_session_id, reviewer_user_id, outcome, notes\n  ) values (\n    p_tenant_id, p_card_id, v_session_id, auth.uid(), p_outcome, nullif(btrim(coalesce(p_notes,'')),'')\n  ) returning id into v_review_id;\n\n  if p_outcome in ('regrade','rework','discrepancy') then\n    insert into public.card_grading_exceptions(\n      tenant_id, submission_id, card_id, kind, reason, opened_by\n    ) values (\n      p_tenant_id, v_card.submission_id, p_card_id,\n      case when p_outcome = 'discrepancy' then 'escalation' else 'rework' end,\n      coalesce(nullif(btrim(coalesce(p_notes,'')),''), 'QC requested additional review'),\n      auth.uid()\n    );\n  end if;\n\n  insert into public.card_grading_workflow_events(\n    tenant_id, submission_id, card_id, event_type, actor_user_id, reason,\n    metadata\n  ) values (\n    p_tenant_id, v_card.submission_id, p_card_id, 'qc_reviewed', auth.uid(),\n    nullif(btrim(coalesce(p_notes,'')),''),\n    jsonb_build_object('outcome', p_outcome, 'review_id', v_review_id)\n  );\n  return v_review_id;\nend;\n$$;\nrevoke all on function public.record_card_grading_qc(uuid,uuid,text,text) from public, anon;\ngrant execute on function public.record_card_grading_qc(uuid,uuid,text,text) to authenticated, service_role;\n\ncreate or replace function public.correct_card_grading_certificate(\n  p_tenant_id uuid,\n  p_cert_number text,\n  p_final_grade numeric,\n  p_grade_label text,\n  p_reason text\n)\nreturns void\nlanguage plpgsql\nset search_path = public, auth, pg_temp\nas $$\ndeclare\n  v_cert public.card_grading_certificates%rowtype;\nbegin\n  if auth.uid() is null or not (\n    public.is_system_admin(auth.uid())\n    or exists (\n      select 1 from public.security_active_user_tenant_memberships m\n      where m.user_id = auth.uid() and m.status = 'active' and m.tenant_id = p_tenant_id and m.is_owner = true\n    )\n  ) then\n    raise exception 'Owner or platform-admin authority required' using errcode = '42501';\n  end if;\n  if nullif(btrim(coalesce(p_reason,'')),'') is null then\n    raise exception 'Correction reason is required';\n  end if;\n\n  select * into v_cert\n  from public.card_grading_certificates\n  where tenant_id = p_tenant_id and cert_number = btrim(p_cert_number)\n  for update;\n  if v_cert.id is null then raise exception 'Certificate unavailable'; end if;\n\n  perform set_config('app.card_grading_cert_correction','allowed',true);\n\n  update public.card_grading_certificates\n     set final_grade = p_final_grade,\n         grade_label = p_grade_label,\n         updated_at = now()\n   where id = v_cert.id;\n\n  update public.card_grading_cards\n     set grade = p_final_grade,\n         grade_label = p_grade_label,\n         updated_at = now()\n   where id = v_cert.card_id and tenant_id = p_tenant_id;\n\n  insert into public.card_grading_workflow_events(\n    tenant_id, card_id, event_type, actor_user_id, reason, metadata\n  ) values (\n    p_tenant_id, v_cert.card_id, 'certificate_corrected', auth.uid(), btrim(p_reason),\n    jsonb_build_object(\n      'cert_number', v_cert.cert_number,\n      'previous_grade', v_cert.final_grade,\n      'previous_grade_label', v_cert.grade_label,\n      'new_grade', p_final_grade,\n      'new_grade_label', p_grade_label\n    )\n  );\nend;\n$$;\nrevoke all on function public.correct_card_grading_certificate(uuid,text,numeric,text,text) from public, anon;\ngrant execute on function public.correct_card_grading_certificate(uuid,text,numeric,text,text) to authenticated, service_role;\n\ncreate or replace function public.advance_pcg_grading_submission(\n  p_tenant_id uuid,\n  p_submission_id uuid,\n  p_status text\n)\nreturns void\nlanguage plpgsql\nset search_path = public, auth, pg_temp\nas $$\ndeclare\n  v_current_status text;\n  v_is_pcg boolean := false;\n  v_card_count integer := 0;\n  v_missing_count integer := 0;\n  v_tracking_out text;\n  v_allowed boolean := false;\nbegin\n  if current_user <> 'service_role' then\n    if auth.uid() is null or not public.is_tenant_member(p_tenant_id::text) then\n      raise exception 'PCG workspace access required' using errcode = '42501';\n    end if;\n  end if;\n\n  select coalesce(t.company_slug, '') = 'pcg'\n    into v_is_pcg\n  from public.tenants t\n  where t.id = p_tenant_id;\n  if not coalesce(v_is_pcg, false) then\n    raise exception 'PCG workspace required' using errcode = '42501';\n  end if;\n\n  select s.status, s.tracking_out\n    into v_current_status, v_tracking_out\n  from public.card_grading_submissions s\n  where s.id = p_submission_id and s.tenant_id = p_tenant_id;\n  if v_current_status is null then raise exception 'Submission unavailable'; end if;\n  if p_status = v_current_status then return; end if;\n  if p_status not in ('received','intake_imaging','authentication','grading','encapsulation','qa','ready','shipped','picked_up') then\n    raise exception 'Invalid grading status';\n  end if;\n\n  v_allowed := case v_current_status\n    when 'received' then p_status = 'intake_imaging'\n    when 'intake_imaging' then p_status = 'authentication'\n    when 'authentication' then p_status = 'grading'\n    when 'grading' then p_status = 'encapsulation'\n    when 'encapsulation' then p_status = 'qa'\n    when 'qa' then p_status = 'ready'\n    when 'ready' then p_status in ('shipped','picked_up')\n    else false\n  end;\n  if not v_allowed then raise exception 'PCG grading stages must advance in canonical order'; end if;\n\n  if exists (\n    select 1 from public.card_grading_exceptions e\n    where e.tenant_id = p_tenant_id\n      and e.status = 'open'\n      and e.kind in ('hold','escalation')\n      and (e.submission_id = p_submission_id or e.card_id in (\n        select c.id from public.card_grading_cards c\n        where c.tenant_id = p_tenant_id and c.submission_id = p_submission_id\n      ))\n  ) then\n    raise exception 'Resolve open hold or escalation before advancing this PCG order';\n  end if;\n\n  select count(*)::integer into v_card_count\n  from public.card_grading_cards c\n  where c.tenant_id = p_tenant_id and c.submission_id = p_submission_id;\n\n  if p_status in ('authentication','encapsulation','qa','ready') and v_card_count = 0 then\n    raise exception 'Add cards before advancing this PCG order';\n  end if;\n\n  if p_status = 'authentication' then\n    select count(*)::integer into v_missing_count\n    from public.card_grading_cards c\n    where c.tenant_id = p_tenant_id and c.submission_id = p_submission_id\n      and (nullif(btrim(coalesce(c.front_image_url,'')),'') is null\n        or nullif(btrim(coalesce(c.back_image_url,'')),'') is null);\n    if v_missing_count > 0 then\n      raise exception '% card(s) need saved front and back intake imagery before authentication', v_missing_count;\n    end if;\n  elsif p_status = 'encapsulation' then\n    select count(*)::integer into v_missing_count\n    from public.card_grading_cards c\n    where c.tenant_id = p_tenant_id and c.submission_id = p_submission_id and c.grade is null;\n    if v_missing_count > 0 then\n      raise exception '% card(s) need a saved grade before encapsulation', v_missing_count;\n    end if;\n  elsif p_status = 'qa' then\n    select count(*)::integer into v_missing_count\n    from public.card_grading_cards c\n    where c.tenant_id = p_tenant_id and c.submission_id = p_submission_id\n      and (c.grade is null or nullif(btrim(coalesce(c.cert_number,'')),'') is null);\n    if v_missing_count > 0 then\n      raise exception '% card(s) need a saved grade and Cert Number before QA', v_missing_count;\n    end if;\n  elsif p_status = 'ready' then\n    select count(*)::integer into v_missing_count\n    from public.card_grading_cards c\n    where c.tenant_id = p_tenant_id and c.submission_id = p_submission_id\n      and (\n        c.grade is null\n        or nullif(btrim(coalesce(c.cert_number,'')),'') is null\n        or nullif(btrim(coalesce(c.slab_image_url,'')),'') is null\n        or not exists (\n          select 1 from public.card_grading_qc_reviews q\n          where q.tenant_id = p_tenant_id and q.card_id = c.id and q.outcome = 'approved'\n            and q.reviewed_at = (\n              select max(q2.reviewed_at) from public.card_grading_qc_reviews q2\n              where q2.tenant_id = p_tenant_id and q2.card_id = c.id\n            )\n        )\n      );\n    if v_missing_count > 0 then\n      raise exception '% card(s) need saved grade, Cert Number, final image, and approved QA before Ready', v_missing_count;\n    end if;\n  elsif p_status = 'shipped' then\n    if nullif(btrim(coalesce(v_tracking_out,'')),'') is null then\n      raise exception 'Save outbound tracking before marking this PCG order shipped';\n    end if;\n  end if;\n\n  update public.card_grading_submissions\n     set status = p_status,\n         completed_at = case when p_status in ('shipped','picked_up') then now() else completed_at end,\n         updated_at = now()\n   where id = p_submission_id and tenant_id = p_tenant_id;\n  if not found then raise exception 'Submission unavailable'; end if;\n\n  update public.card_grading_cards\n     set status = p_status, updated_at = now()\n   where submission_id = p_submission_id and tenant_id = p_tenant_id;\n\n  if p_status = 'ready' then\n    insert into public.card_grading_certificates(\n      tenant_id, card_id, cert_number, category, year, manufacturer, set_name, brand_set, subset,\n      player_character, card_number, variation, serial_number, autograph_present, relic_present,\n      final_grade, grade_label, final_image_url, finalized_at, published_at, created_by\n    )\n    select\n      c.tenant_id, c.id, c.cert_number, c.category, c.year, c.manufacturer, c.set_name, c.brand_set, c.subset,\n      c.player_character, c.card_number, c.variation, c.serial_number, c.autograph_present, c.relic_present,\n      c.grade, c.grade_label, c.slab_image_url, now(), now(), auth.uid()\n    from public.card_grading_cards c\n    where c.tenant_id = p_tenant_id and c.submission_id = p_submission_id\n    on conflict (card_id) do update set\n      category = excluded.category,\n      year = excluded.year,\n      manufacturer = excluded.manufacturer,\n      set_name = excluded.set_name,\n      brand_set = excluded.brand_set,\n      subset = excluded.subset,\n      player_character = excluded.player_character,\n      card_number = excluded.card_number,\n      variation = excluded.variation,\n      serial_number = excluded.serial_number,\n      autograph_present = excluded.autograph_present,\n      relic_present = excluded.relic_present,\n      final_grade = excluded.final_grade,\n      grade_label = excluded.grade_label,\n      final_image_url = excluded.final_image_url,\n      finalized_at = coalesce(card_grading_certificates.finalized_at, now()),\n      published_at = coalesce(card_grading_certificates.published_at, now()),\n      updated_at = now();\n\n    update public.card_grading_cards\n       set finalized_at = coalesce(finalized_at, now()), updated_at = now()\n     where tenant_id = p_tenant_id and submission_id = p_submission_id;\n  end if;\nend;\n$$;\nrevoke all on function public.advance_pcg_grading_submission(uuid,uuid,text) from public, anon;\ngrant execute on function public.advance_pcg_grading_submission(uuid,uuid,text) to authenticated, service_role;\n\ncreate or replace view public.card_grading_public_certificates\nwith (security_invoker = true)\nas\nselect\n  tenant_id,\n  cert_number,\n  category,\n  year,\n  manufacturer,\n  set_name,\n  brand_set,\n  subset,\n  player_character,\n  card_number,\n  variation,\n  serial_number,\n  autograph_present,\n  relic_present,\n  final_grade,\n  grade_label,\n  final_image_url,\n  finalized_at,\n  published_at\nfrom public.card_grading_certificates\nwhere published_at is not null;\n\ncreate or replace view public.card_grading_population_report\nwith (security_invoker = true)\nas\nselect\n  tenant_id,\n  category,\n  year,\n  manufacturer,\n  set_name,\n  brand_set,\n  subset,\n  player_character,\n  card_number,\n  variation,\n  serial_number,\n  autograph_present,\n  relic_present,\n  final_grade,\n  grade_label,\n  count(*)::bigint as pop_count\nfrom public.card_grading_certificates\nwhere published_at is not null\ngroup by\n  tenant_id, category, year, manufacturer, set_name, brand_set, subset,\n  player_character, card_number, variation, serial_number,\n  autograph_present, relic_present, final_grade, grade_label;\n\nrevoke all on public.card_grading_public_certificates from public;\nrevoke all on public.card_grading_population_report from public;\ngrant select on public.card_grading_public_certificates to anon, authenticated, service_role;\ngrant select on public.card_grading_population_report to anon, authenticated, service_role;\n\ninsert into public.card_grading_media(\n  tenant_id, card_id, kind, provider, delivery_url, is_current, is_public, created_at\n)\nselect c.tenant_id, c.id, v.kind, 'legacy_url', v.url, true,\n       case when v.kind = 'final' and c.status in ('ready','shipped','picked_up') then true else false end,\n       c.updated_at\nfrom public.card_grading_cards c\ncross join lateral (\n  values\n    ('front'::text, nullif(btrim(coalesce(c.front_image_url,'')),'')),\n    ('back'::text, nullif(btrim(coalesce(c.back_image_url,'')),'')),\n    ('final'::text, nullif(btrim(coalesce(c.slab_image_url,'')),''))\n) as v(kind, url)\nwhere v.url is not null\n  and not exists (\n    select 1 from public.card_grading_media m\n    where m.card_id = c.id and m.kind = v.kind and m.is_current\n  );\n\ninsert into public.card_grading_certificates(\n  tenant_id, card_id, cert_number, category, year, manufacturer, set_name, brand_set, subset,\n  player_character, card_number, variation, serial_number, autograph_present, relic_present,\n  final_grade, grade_label, final_image_url, finalized_at, published_at, created_by\n)\nselect\n  c.tenant_id, c.id, btrim(c.cert_number), c.category, c.year, c.manufacturer, c.set_name, c.brand_set, c.subset,\n  c.player_character, c.card_number, c.variation, c.serial_number, c.autograph_present, c.relic_present,\n  c.grade, c.grade_label, nullif(btrim(coalesce(c.slab_image_url,'')),''),\n  case when c.status in ('ready','shipped','picked_up') then coalesce(c.updated_at,c.created_at) else null end,\n  case when c.status in ('ready','shipped','picked_up') then coalesce(c.updated_at,c.created_at) else null end,\n  null\nfrom public.card_grading_cards c\nwhere c.grade is not null\n  and nullif(btrim(coalesce(c.cert_number,'')),'') is not null\non conflict (card_id) do nothing;\n\ninsert into public.card_grading_qc_reviews(\n  tenant_id, card_id, reviewer_user_id, outcome, notes, reviewed_at\n)\nselect c.tenant_id, c.id, null, 'approved', 'Legacy completed card backfill', coalesce(c.updated_at,c.created_at)\nfrom public.card_grading_cards c\nwhere c.status in ('ready','shipped','picked_up')\n  and not exists (\n    select 1 from public.card_grading_qc_reviews q where q.card_id = c.id\n  );\n\ninsert into public.card_grading_workflow_events(\n  tenant_id, submission_id, event_type, to_status, metadata, occurred_at\n)\nselect s.tenant_id, s.id, 'migration_snapshot', s.status, jsonb_build_object('source','card_grading_application_v1'), s.updated_at\nfrom public.card_grading_submissions s\nwhere not exists (\n  select 1 from public.card_grading_workflow_events e\n  where e.submission_id = s.id and e.event_type = 'migration_snapshot'\n);\n\ninsert into public.card_grading_workflow_events(\n  tenant_id, submission_id, card_id, event_type, to_status, metadata, occurred_at\n)\nselect c.tenant_id, c.submission_id, c.id, 'migration_snapshot', c.status, jsonb_build_object('source','card_grading_application_v1'), c.updated_at\nfrom public.card_grading_cards c\nwhere not exists (\n  select 1 from public.card_grading_workflow_events e\n  where e.card_id = c.id and e.event_type = 'migration_snapshot'\n);\n\ninsert into public.application_catalog(\n  id, slug, label, audience, workspace_surface, bootstrap_mode, default_installed,\n  capabilities, data_owners, external_url, supported_tenant_types, standalone_path,\n  login_path, bootstrap_version, route_adapter, config_contract\n) values (\n  'card-grading',\n  'card-grading',\n  'Card Grading',\n  'tenant-user',\n  'card-grading',\n  'vertical',\n  false,\n  '[\"intake\",\"imaging\",\"identify\",\"grade\",\"qa\",\"encapsulate\",\"certify\",\"population-report\",\"fulfill\",\"audit\"]'::jsonb,\n  '[\"card_grading_submissions\",\"card_grading_cards\",\"card_grading_media\",\"card_grading_grading_sessions\",\"card_grading_criterion_results\",\"card_grading_qc_reviews\",\"card_grading_exceptions\",\"card_grading_certificates\",\"card_grading_workflow_events\"]'::jsonb,\n  null,\n  '[\"MISC\"]'::jsonb,\n  '/card-grading',\n  null,\n  1,\n  'tenant-workspace',\n  '{\"schema\":\"application-bootstrap.v1\",\"applicationId\":\"card-grading\",\"applicationSlug\":\"card-grading\",\"registry_contract\":\"application-registry.v2\",\"registry_authority\":\"source-product-catalog\",\"availability_policy\":\"assigned\",\"domain\":\"card-grading\"}'::jsonb\n)\non conflict (id) do update set\n  slug = excluded.slug,\n  label = excluded.label,\n  audience = excluded.audience,\n  workspace_surface = excluded.workspace_surface,\n  bootstrap_mode = excluded.bootstrap_mode,\n  default_installed = excluded.default_installed,\n  capabilities = excluded.capabilities,\n  data_owners = excluded.data_owners,\n  supported_tenant_types = excluded.supported_tenant_types,\n  standalone_path = excluded.standalone_path,\n  login_path = excluded.login_path,\n  bootstrap_version = excluded.bootstrap_version,\n  route_adapter = excluded.route_adapter,\n  config_contract = excluded.config_contract,\n  updated_at = now();\n\nupdate public.tenant_applications ta\nset enabled = true, bootstrap_version = greatest(ta.bootstrap_version,1), updated_at = now()\nfrom public.tenants t\nwhere t.company_slug = 'pcg'\n  and ta.tenant_id = t.id\n  and ta.application_id = 'card-grading';\n\ninsert into public.tenant_applications(tenant_id, application_id, enabled, settings, bootstrap_version)\nselect t.id, 'card-grading', true, '{\"canonical_path\":\"/pcg/card-grading\"}'::jsonb, 1\nfrom public.tenants t\nwhere t.company_slug = 'pcg'\n  and not exists (\n    select 1 from public.tenant_applications ta\n    where ta.tenant_id = t.id and ta.application_id = 'card-grading'\n  );\n"},{"path":"src/__tests__/contracts/card-grading-application.contract.test.ts","content":"import fs from 'node:fs';\nimport path from 'node:path';\nimport {describe,expect,it} from 'vitest';\nconst read=(file:string)=>fs.readFileSync(path.join(process.cwd(),file),'utf8');\ndescribe('Card Grading first-class application',()=>{\n it('is registered and tenant bounded',()=>{const registry=read('src/config/applicationCapabilityRegistry.ts'),shell=read('src/PrivateAppShell.tsx');expect(registry).toContain(\"'card-grading': workspaceContract(\");expect(registry).toContain(\"app('card-grading', 'Card Grading'\");expect(shell).toContain('FirstClassAppTenantBoundary appSlug=\"card-grading\"')});\n it('provides QA and population surfaces',()=>{expect(read('src/pages/crm/PcgWorkspace.tsx')).toContain('PCGQualityControlPanel');expect(read('src/pages/card-grading/PCGModesWorkspace.tsx')).toContain('CardGradingPopulationReport')});\n it('ships canonical migration source',()=>{const migration=read('supabase/migrations/20260930015105_card_grading_application_v1.sql');expect(migration).toContain('card_grading_certificates');expect(migration).toContain('card_grading_qc_reviews');expect(migration).toContain('card_grading_population_report');expect(migration).toContain('security_invoker')});\n it('keeps current public records behind published certificates',()=>{const fn=read('supabase/functions/pcg-customer-progress/index.ts');expect(fn).toContain(\"from('card_grading_public_certificates')\");expect(fn).toContain(\"from('card_grading_population_report')\")});\n});"}],"branch":"ai/objective-first-repair-92964f0c60ea","writes":[],"patches":[],"version":1,"approved":true,"missionId":"92964f0c-60ea-4903-a573-31d680fefd52","sourceSha":"90ff83d0d106658abcb32b33aa78b68af409e5d4","repository":"noel/KnockLaunchOS","ownerApproved":true,"releaseIntent":null,"sourceTargets":["src/PrivateAppShell.tsx","src/config/applicationCapabilityRegistry.ts","src/pages/card-grading/PCGModesWorkspace.tsx","src/pages/crm/PcgWorkspace.tsx","supabase/functions/pcg-customer-progress/index.ts"],"anchored_edits":[{"path":"src/config/applicationCapabilityRegistry.ts","new_content":"  'card-grading': workspaceContract('tenant-native', ['card-grading','grading','certificates','population','quality-control','intake'], ['panel','action','full-page'], ['intake','imaging','identify','grade','qa','encapsulate','certify','population-report','fulfill','audit'], ['storage']),\n  'operational-command': workspaceContract(","old_content":"  'operational-command': workspaceContract("},{"path":"src/config/applicationCapabilityRegistry.ts","new_content":"  withArchitecture(verticalWorkspace(app('card-grading', 'Card Grading', 'card-grading', ['intake','imaging','identify','grade','qa','encapsulate','certify','population-report','fulfill','audit'], ['card_grading_submissions','card_grading_cards','card_grading_media','card_grading_grading_sessions','card_grading_criterion_results','card_grading_qc_reviews','card_grading_exceptions','card_grading_certificates','card_grading_workflow_events'], 'vertical', false, 'tenant-user', null, ['MISC'], '/card-grading', 'tenant-workspace')), { maturity: 'production', availabilityPolicy: 'assigned', relationships: { owns: ['card-grading-lifecycle','certificate-publication','population-report'], provides: ['graded-card-record','published-certificate'], consumes: ['storage'], delegates: [] }, composition: { requires: [], optional: ['documents','mail'] } }),\n  orchestrator(app('operational-command'","old_content":"  orchestrator(app('operational-command'"},{"path":"src/config/applicationCapabilityRegistry.ts","new_content":"'inventory','card-grading','operations','claim-operations'","old_content":"'inventory','operations','claim-operations'"},{"path":"src/PrivateAppShell.tsx","new_content":"if(isPcgPrivateWorkspace)return <Suspense fallback={<RouteFallback/>}><FirstClassAppTenantBoundary appSlug=\"card-grading\"><PCGCanonicalWorkspaceRoute/></FirstClassAppTenantBoundary></Suspense>;","old_content":"if(isPcgPrivateWorkspace)return <Suspense fallback={<RouteFallback/>}><PCGCanonicalWorkspaceRoute/></Suspense>;"},{"path":"src/pages/crm/PcgWorkspace.tsx","new_content":"import {PCG_GRADING_SCALE,findPCGGrade,formatPCGGrade} from '@/pages/card-grading/pcgGradingScale';\nimport PCGQualityControlPanel from '@/pages/card-grading/PCGQualityControlPanel';","old_content":"import {PCG_GRADING_SCALE,findPCGGrade,formatPCGGrade} from '@/pages/card-grading/pcgGradingScale';"},{"path":"src/pages/crm/PcgWorkspace.tsx","new_content":"!card.front_image_url||!card.back_image_url","old_content":"!card.front_image_url&&!card.back_image_url&&!card.slab_image_url"},{"path":"src/pages/crm/PcgWorkspace.tsx","new_content":"!card.slab_image_url","old_content":"(!card.slab_image_url&&!card.front_image_url&&!card.back_image_url)"},{"path":"src/pages/crm/PcgWorkspace.tsx","new_content":"</div></section><PCGQualityControlPanel tenantId={tenantId||''} submissionId={selected.id} cards={selectedCards} active={selected.status==='qa'} onChanged={load}/><section className={`${panelClass} mt-4 p-4`}><div className=\"flex items-center justify-between\"><div className=\"text-[9px] font-black uppercase tracking-[.16em] text-[#d8bb78]\">Collector & payment</div>","old_content":"</div></section><section className={`${panelClass} mt-4 p-4`}><div className=\"flex items-center justify-between\"><div className=\"text-[9px] font-black uppercase tracking-[.16em] text-[#d8bb78]\">Collector & payment</div>"},{"path":"src/pages/card-grading/PCGModesWorkspace.tsx","new_content":"import {ArrowLeft,ArrowRight,BarChart3,Boxes,CheckCircle2,ClipboardCheck,Clock3,CreditCard,Database,Images,Settings,Truck,Users} from 'lucide-react';","old_content":"import {ArrowLeft,ArrowRight,Boxes,CheckCircle2,ClipboardCheck,Clock3,CreditCard,Database,Images,Settings,Truck,Users} from 'lucide-react';"},{"path":"src/pages/card-grading/PCGModesWorkspace.tsx","new_content":"import PCGCompletionCenter from '@/pages/card-grading/PCGCompletionCenter';\nimport CardGradingPopulationReport from '@/pages/card-grading/CardGradingPopulationReport';","old_content":"import PCGCompletionCenter from '@/pages/card-grading/PCGCompletionCenter';"},{"path":"src/pages/card-grading/PCGModesWorkspace.tsx","new_content":"type WorkspaceTab='today'|'vault'|'queue'|'submissions'|'certs'|'collectors'|'inventory'|'shipping'|'money'|'migration'|'readiness'|'population'|'settings';","old_content":"type WorkspaceTab='today'|'vault'|'queue'|'submissions'|'certs'|'collectors'|'inventory'|'shipping'|'money'|'migration'|'readiness'|'settings';"},{"path":"src/pages/card-grading/PCGModesWorkspace.tsx","new_content":"const ADMIN_TOOLS=[{id:'settings' as WorkspaceTab,label:'Settings',icon:Settings},{id:'money' as WorkspaceTab,label:'Payments',icon:CreditCard},{id:'readiness' as WorkspaceTab,label:'Readiness',icon:ClipboardCheck},{id:'migration' as WorkspaceTab,label:'Migration',icon:Database},{id:'population' as WorkspaceTab,label:'Pop Report',icon:BarChart3}] as const;","old_content":"const ADMIN_TOOLS=[{id:'settings' as WorkspaceTab,label:'Settings',icon:Settings},{id:'money' as WorkspaceTab,label:'Payments',icon:CreditCard},{id:'readiness' as WorkspaceTab,label:'Readiness',icon:ClipboardCheck},{id:'migration' as WorkspaceTab,label:'Migration',icon:Database}] as const;"},{"path":"src/pages/card-grading/PCGModesWorkspace.tsx","new_content":"readiness:'Readiness',population:'Pop Report',settings:'Settings'","old_content":"readiness:'Readiness',settings:'Settings'"},{"path":"src/pages/card-grading/PCGModesWorkspace.tsx","new_content":"'money','migration','readiness','population','settings'","old_content":"'money','migration','readiness','settings'"},{"path":"src/pages/card-grading/PCGModesWorkspace.tsx","new_content":"      {adminTool==='population'?<CardGradingPopulationReport tenantId={tenantId}/>:<PcgWorkspace initialTab={adminTool} embedded navigationScope={[adminTool]}/>}","old_content":"      <PcgWorkspace initialTab={adminTool} embedded navigationScope={[adminTool]}/>"},{"path":"supabase/functions/pcg-customer-progress/index.ts","new_content":"      const{data:currentCertificates,error:currentError}=await supabase.from('card_grading_public_certificates').select('cert_number,year,brand_set,player_character,card_number,variation,autograph_present,final_grade,grade_label,final_image_url').eq('tenant_id',tenant.id).order('published_at',{ascending:false}).limit(40);\n      const currentCards=(currentCertificates||[]).map((card:any)=>safeCard({id:card.cert_number,cert_number:card.cert_number,year:card.year,brand_set:card.brand_set,player_character:card.player_character,card_number:card.card_number,variation:card.variation,autograph_present:card.autograph_present,grade:card.final_grade,grade_label:card.grade_label,slab_image_url:card.final_image_url}));","old_content":"      const{data:currentCards,error:currentError}=await supabase.from('card_grading_cards').select('id,cert_number,year,brand_set,player_character,card_number,variation,card_description,autograph_present,grade,grade_label,front_image_url,back_image_url,slab_image_url,population_count').eq('tenant_id',tenant.id).limit(40);"},{"path":"supabase/functions/pcg-customer-progress/index.ts","new_content":"      const{data:publishedRows,error:currentError}=await supabase.from('card_grading_population_report').select('year,brand_set,player_character,card_number,variation,final_grade,grade_label,pop_count').eq('tenant_id',tenant.id).or(currentFilter).limit(1200);\n      const currentCards=(publishedRows||[]).flatMap((row:any)=>Array.from({length:Math.max(0,Number(row.pop_count||0))},()=>({year:row.year,brand_set:row.brand_set,player_character:row.player_character,card_number:row.card_number,variation:row.variation,grade:row.final_grade,grade_label:row.grade_label})));","old_content":"      const{data:currentCards,error:currentError}=await supabase.from('card_grading_cards').select('year,brand_set,player_character,card_number,variation,grade,grade_label').eq('tenant_id',tenant.id).or(currentFilter).limit(1200);"},{"path":"supabase/functions/pcg-customer-progress/index.ts","new_content":"      const{data:card,error}=await supabase.from('card_grading_public_certificates').select('cert_number,year,brand_set,player_character,card_number,variation,autograph_present,final_grade,grade_label,final_image_url').eq('tenant_id',tenant.id).ilike('cert_number',cert).maybeSingle();\n      if(error)throw error;\n      if(card?.cert_number)return json({ok:true,data:{card:safeCard({id:card.cert_number,cert_number:card.cert_number,year:card.year,brand_set:card.brand_set,player_character:card.player_character,card_number:card.card_number,variation:card.variation,autograph_present:card.autograph_present,grade:card.final_grade,grade_label:card.grade_label,slab_image_url:card.final_image_url})}});","old_content":"      const{data:card,error}=await supabase.from('card_grading_cards').select('id,cert_number,year,brand_set,player_character,card_number,variation,card_description,autograph_present,grade,grade_label,front_image_url,back_image_url,slab_image_url,population_count').eq('tenant_id',tenant.id).ilike('cert_number',cert).maybeSingle();\n      if(error)throw error;\n      if(card?.id)return json({ok:true,data:{card:safeCard(card)}});"}],"implementation":{"files":[],"writes":[]},"requestContract":null,"repairGeneration":null,"executionEnvelope":{"ship":true,"version":1,"approved":true,"missionId":"92964f0c-60ea-4903-a573-31d680fefd52","ownerApproved":true,"releaseIntent":null,"sourceTargets":["src/PrivateAppShell.tsx","src/config/applicationCapabilityRegistry.ts","src/pages/card-grading/PCGModesWorkspace.tsx","src/pages/crm/PcgWorkspace.tsx","supabase/functions/pcg-customer-progress/index.ts"],"requestContract":null,"repairGeneration":null,"proofRequirements":null,"controlPlaneUnfreeze":false,"controlPlaneMaintenance":false,"controlPlaneMaintenancePaths":[],"controlPlaneMaintenanceReason":null},"proofRequirements":null,"controlPlaneUnfreeze":false,"durableMutationResume":true,"controlPlaneMaintenance":false,"controlPlaneMaintenancePaths":[],"controlPlaneMaintenanceReason":null},"recovery":false,"fingerprint":"89f1512c0baafcb517ca577366c486c8a8495ba7c514b3c55cb4080e9af4db59","replayCount":0,"serializedBytes":63119},"tenant_id":"9602e177-0cbb-496c-bdf5-2fbc93f1b859","created_at":"2026-09-30T02:17:35.733966+00:00","proof_gate":"repository_mutation_intent_persisted","source_sha":null,"external_id":null,"receipt_type":"repository_mutation_intent","idempotency_key":"mission:92964f0c-60ea-4903-a573-31d680fefd52:repository-mutation-intent:89f1512c0baafcb517ca577366c486c8a8495ba7c514b3c55cb4080e9af4db59:0","mission_step_id":"025462da-4fb5-4dd6-839f-692c7c4c610a","command_center_event_id":"92964f0c-60ea-4903-a573-31d680fefd52"},{"id":"be99ae48-b1e4-42fc-93a4-2eb52adc13e9","source":"cc-execution","status":"source_resolution_required","payload":{"ok":true,"jobId":null,"phase":"reasoning_required","branch":null,"reason":"authoritative_source_resolution_failed","status":"source_resolution_required","metrics":{"receiptBytes":6849,"releaseCount":0,"toolCallCount":5,"repeatedCallCount":2,"executorlessWaitMs":63152,"firstUsefulResultAt":"2026-10-04T21:24:39.233Z","recoveryAttemptCount":0,"ownerInterruptionCount":0},"version":"1.64.94-terminal-completion-supervisor","prNumber":null,"terminal":false,"missionId":"08e50739-c61c-4e33-a186-13709dc8e364","operation":"execute_mission","proofGate":"repair_mission_source_resolution_required","sourceSha":null,"timingsMs":{"gateMs":0,"proofMs":0,"handlerMs":2066,"releaseMs":0,"mutationMs":0,"repositoryMs":0,"missionSetupMs":335,"providerAuthMs":0,"ledgerPrepareMs":335,"ledgerReconcileMs":0,"lineageReconcileMs":0,"resolvePreflightMs":335,"authoritativeLedgerMs":0,"ledgerAsyncDispatchMs":0,"totalSynchronousLedgerMs":335,"asyncBookkeepingDispatchMs":0,"ledgerAuthoritativeCommitMs":0},"nextAction":"Supply exact sourceTargets on the same mission; planner guesses cannot replace missing mission scope.","receiptRef":{"mode":"full","missionId":"08e50739-c61c-4e33-a186-13709dc8e364"},"performance":null,"deploymentId":null,"releaseState":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","pendingProofKinds":["runtime"],"verificationState":null,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":1638,"likelyAffectedFiles":[],"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true,"requestContractState":"pending"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-04T21:25:47.806988+00:00","proof_gate":"repair_mission_source_resolution_required","source_sha":null,"external_id":null,"receipt_type":"execute_mission","idempotency_key":"mission:08e50739-c61c-4e33-a186-13709dc8e364:execute_mission:repair_mission_source_resolution_required:current-generation","mission_step_id":"93df553e-5aff-4103-87f2-94d266b97231","command_center_event_id":"08e50739-c61c-4e33-a186-13709dc8e364"},{"id":"be9c675e-c140-4f08-9a72-0c91de70718e","source":"cc-execution","status":"waiting","payload":{"body":{"ship":true,"files":[],"branch":"ai/objective-first-repair-954b2d566a11","writes":[],"patches":[],"version":1,"approved":true,"missionId":"954b2d56-6a11-42f5-8965-6cf351a137bd","objective":"Improve Forgejo resilience queue diagnosis without changing scheduling. Add a pure queue-wait classifier used by forgejo_resilience_status so waiting work is classified as no_waiting_work, waiting_for_heavy_capacity, queue_starvation_with_idle_heavy_capacity, waiting_for_pull_request_scheduler_pickup, waiting_for_release_dependency_or_concurrency, or waiting_for_scheduler_or_dependency. Keep queue starvation threshold at 90 seconds, preserve the existing bounded operationalRecoveryDecision actions, and never create a duplicate scheduler. Expose the classification plus recovery action in live PRIME output. Add regression tests, Gate, squash merge, release cc-execution, and verify live.","repository":"noel/KnockLaunchOS","ownerApproved":true,"releaseIntent":null,"sourceTargets":["workers/cc-execution/src/index-mcp.js","workers/cc-execution/test/mcp.test.js","workers/cc-execution/src/version.js","config/control-plane-capabilities.json"],"anchored_edits":[{"path":"workers/cc-execution/src/index-mcp.js","edits":[{"new_content":"const FORGEJO_ACTIVE_RUN_STATES = new Set([\"queued\", \"waiting\", \"pending\", \"in_progress\", \"running\", \"requested\"]);\n\nexport function classifyForgejoQueueWait(waitingRuns = [], capacity = {}) {\n  if (!Array.isArray(waitingRuns) || waitingRuns.length === 0) return \"no_waiting_work\";\n  const availableHeavy = Math.max(0, Number(capacity?.availableHeavy || 0));\n  const waitingPullRequests = waitingRuns.filter((run) => run?.event === \"pull_request\");\n  const starvedPullRequests = waitingPullRequests.filter((run) => Number(run?.ageSeconds || 0) >= 90);\n  if (starvedPullRequests.length > 0 && availableHeavy > 0) return \"queue_starvation_with_idle_heavy_capacity\";\n  if (waitingPullRequests.length > 0 && availableHeavy <= 0) return \"waiting_for_heavy_capacity\";\n  if (waitingPullRequests.length > 0) return \"waiting_for_pull_request_scheduler_pickup\";\n  const releaseLike = waitingRuns.some((run) => /release|migration|supabase|deploy/i.test(String(run?.title || \"\")));\n  if (releaseLike) return \"waiting_for_release_dependency_or_concurrency\";\n  return \"waiting_for_scheduler_or_dependency\";\n}","old_content":"const FORGEJO_ACTIVE_RUN_STATES = new Set([\"queued\", \"waiting\", \"pending\", \"in_progress\", \"running\", \"requested\"]);"},{"new_content":"    const starvationCandidates = waitingRuns.filter((run) => run.event === \"pull_request\" && Number(run.ageSeconds || 0) >= 90 && inventory.capacity.availableHeavy > 0);\n    const oldestWaiting = waitingRuns.slice().sort((a, b) => Number(b.ageSeconds || 0) - Number(a.ageSeconds || 0))[0] || null;\n    const potentialStarvation = starvationCandidates.length > 0;\n    const waitReason = classifyForgejoQueueWait(waitingRuns, inventory.capacity);\n    const recoverySignal = waitReason === \"queue_starvation_with_idle_heavy_capacity\"\n      ? \"queue starvation waiting idle runner\"\n      : waitReason === \"waiting_for_heavy_capacity\"\n        ? \"runner capacity pressure\"\n        : inventory.degradedMode === \"heavy_degraded_single_runner\"\n          ? \"runner offline\"\n          : waitReason;\n    const recoveryDecision = operationalRecoveryDecision(recoverySignal, \"forgejo_resilience_status\", { hasHealthySibling: inventory.capacity.availableHeavy > 0 });","old_content":"    const starvationCandidates = waitingRuns.filter((run) => run.event === \"pull_request\" && Number(run.ageSeconds || 0) >= 90 && inventory.capacity.availableHeavy > 0);\n    const oldestWaiting = waitingRuns.slice().sort((a, b) => Number(b.ageSeconds || 0) - Number(a.ageSeconds || 0))[0] || null;\n    const potentialStarvation = starvationCandidates.length > 0;\n    const waitReason = waitingRuns.length === 0 ? \"no_waiting_work\" : potentialStarvation ? \"waiting_pull_request_has_idle_eligible_heavy_capacity\" : inventory.capacity.availableHeavy === 0 && waitingRuns.some((run) => run.event === \"pull_request\") ? \"waiting_for_heavy_capacity\" : \"waiting_for_scheduler_or_dependency\";\n    const recoveryDecision = operationalRecoveryDecision(potentialStarvation ? \"queue starvation waiting idle runner\" : inventory.degradedMode === \"heavy_degraded_single_runner\" ? \"runner offline\" : waitReason, \"forgejo_resilience_status\", { hasHealthySibling: inventory.capacity.availableHeavy > 0 });"}]},{"path":"workers/cc-execution/test/mcp.test.js","edits":[{"new_content":"import { classifyForgejoQueueWait, handleMcpRequest, summarizeForgejoRunnerPool } from \"../src/index-mcp.js\";","old_content":"import { handleMcpRequest, summarizeForgejoRunnerPool } from \"../src/index-mcp.js\";"},{"new_content":"test(\"queue wait classification distinguishes capacity, starvation, scheduler pickup, and release dependencies\", () => {\n  assert.equal(classifyForgejoQueueWait([], { availableHeavy: 3 }), \"no_waiting_work\");\n  assert.equal(classifyForgejoQueueWait([{ event: \"pull_request\", ageSeconds: 120 }], { availableHeavy: 2 }), \"queue_starvation_with_idle_heavy_capacity\");\n  assert.equal(classifyForgejoQueueWait([{ event: \"pull_request\", ageSeconds: 20 }], { availableHeavy: 0 }), \"waiting_for_heavy_capacity\");\n  assert.equal(classifyForgejoQueueWait([{ event: \"pull_request\", ageSeconds: 20 }], { availableHeavy: 2 }), \"waiting_for_pull_request_scheduler_pickup\");\n  assert.equal(classifyForgejoQueueWait([{ event: \"push\", title: \"Release Supabase Edge Functions\", ageSeconds: 20 }], { availableHeavy: 2 }), \"waiting_for_release_dependency_or_concurrency\");\n  assert.equal(classifyForgejoQueueWait([{ event: \"workflow_dispatch\", title: \"Maintenance\", ageSeconds: 20 }], { availableHeavy: 2 }), \"waiting_for_scheduler_or_dependency\");\n});\n\ntest(\"active multi-slot runner exposes bounded availability when Forgejo busy is false\", () => {","old_content":"test(\"active multi-slot runner exposes bounded availability when Forgejo busy is false\", () => {"}]},{"path":"workers/cc-execution/src/version.js","edits":[{"new_content":"export const CC_EXECUTION_VERSION = \"1.58.267-runner-queue-wait-classification\";","old_content":"export const CC_EXECUTION_VERSION = \"1.58.266-ledger-egress-degraded-source-scope\";"}]},{"path":"config/control-plane-capabilities.json","edits":[{"new_content":"    \"runnerPoolAwareAdmissionPolicy\": \"offline_runners_never_eligible_status_active_or_busy_true_means_at_least_one_slot_occupied_multi_slot_active_runner_occupancy_is_bounded_one_to_declared_capacity_available_capacity_reports_guaranteed_free_slots_and_possible_available_slots_separately_queue_admission_uses_guaranteed_free_slots_waiting_work_is_classified_into_capacity_pressure_queue_starvation_scheduler_pickup_release_dependency_or_generic_dependency_without_creating_a_duplicate_scheduler_live_healthy_sibling_remains_eligible_capacity_and_symmetry_drift_are_exposed_before_owner_escalation\",","old_content":"    \"runnerPoolAwareAdmissionPolicy\": \"offline_runners_never_eligible_status_active_or_busy_true_means_at_least_one_slot_occupied_multi_slot_active_runner_occupancy_is_bounded_one_to_declared_capacity_available_capacity_reports_guaranteed_free_slots_and_possible_available_slots_separately_queue_admission_uses_guaranteed_free_slots_live_healthy_sibling_remains_eligible_capacity_and_symmetry_drift_are_exposed_before_owner_escalation\","}]}],"implementation":{"files":[],"writes":[]},"requestContract":{"outcomes":[{"id":"queue-wait-classification","statement":"PRIME classifies waiting Forgejo work into actionable capacity, starvation, scheduler-pickup, release-dependency, or generic dependency states instead of one coarse wait reason.","proofConditionIds":["queue-runtime-proof"]}],"constraints":[{"id":"no-duplicate-scheduler","statement":"Do not create or enable any duplicate scheduler, rerouter, or queue owner; classification and recovery remain bounded around Forgejo native scheduling.","proofConditionIds":["queue-runtime-proof"]}],"proofConditions":[{"id":"queue-runtime-proof","kind":"runtime","claim":"Live forgejo_resilience_status exposes the new wait classification while preserving current 3-heavy-slot core capacity and bounded recovery policy.","required":true,"requiredReleaseTargets":["ccExecution"]}]},"repairGeneration":null,"executionEnvelope":{"ship":true,"version":1,"approved":true,"missionId":null,"ownerApproved":true,"releaseIntent":null,"sourceTargets":["workers/cc-execution/src/index-mcp.js","workers/cc-execution/test/mcp.test.js","workers/cc-execution/src/version.js","config/control-plane-capabilities.json"],"requestContract":{"outcomes":[{"id":"queue-wait-classification","statement":"PRIME classifies waiting Forgejo work into actionable capacity, starvation, scheduler-pickup, release-dependency, or generic dependency states instead of one coarse wait reason.","proofConditionIds":["queue-runtime-proof"]}],"constraints":[{"id":"no-duplicate-scheduler","statement":"Do not create or enable any duplicate scheduler, rerouter, or queue owner; classification and recovery remain bounded around Forgejo native scheduling.","proofConditionIds":["queue-runtime-proof"]}],"proofConditions":[{"id":"queue-runtime-proof","kind":"runtime","claim":"Live forgejo_resilience_status exposes the new wait classification while preserving current 3-heavy-slot core capacity and bounded recovery policy.","required":true,"requiredReleaseTargets":["ccExecution"]}]},"repairGeneration":null,"proofRequirements":null,"controlPlaneUnfreeze":true,"controlPlaneMaintenance":true,"controlPlaneMaintenancePaths":["workers/cc-execution/src/index-mcp.js","workers/cc-execution/test/mcp.test.js","workers/cc-execution/src/version.js","config/control-plane-capabilities.json"],"controlPlaneMaintenanceReason":"Improve runner-pool queue diagnosis and bounded recovery selection after host hardening."},"proofRequirements":null,"controlPlaneUnfreeze":true,"durableMutationResume":true,"controlPlaneMaintenance":true,"controlPlaneMaintenancePaths":["workers/cc-execution/src/index-mcp.js","workers/cc-execution/test/mcp.test.js","workers/cc-execution/src/version.js","config/control-plane-capabilities.json"],"controlPlaneMaintenanceReason":"Improve runner-pool queue diagnosis and bounded recovery selection after host hardening."},"recovery":false,"fingerprint":"5315ee5061602c55e19bc2951000a2e524820031438f05990be4df52033b9f00","replayCount":0,"serializedBytes":10435},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-25T00:03:15.773128+00:00","proof_gate":"repository_mutation_intent_persisted","source_sha":null,"external_id":null,"receipt_type":"repository_mutation_intent","idempotency_key":"mission:954b2d56-6a11-42f5-8965-6cf351a137bd:repository-mutation-intent:5315ee5061602c55e19bc2951000a2e524820031438f05990be4df52033b9f00:0","mission_step_id":"d5ce99e5-42d2-4b06-bdb9-993d750875ed","command_center_event_id":"954b2d56-6a11-42f5-8965-6cf351a137bd"},{"id":"be9d2ff7-4ea5-4c25-948a-e813b6de3ca8","source":"cc-execution","status":"blocked","payload":{"ok":false,"jobId":null,"phase":"runtime_proof","branch":"ai/book-me-directly-product-family-r2","reason":"retryable_provider_transport:The operation was aborted due to timeout","status":"blocked","metrics":{"receiptBytes":0,"releaseCount":1,"toolCallCount":0,"repeatedCallCount":0,"ownerInterruptionCount":0},"version":null,"prNumber":1910,"terminal":false,"missionId":"ffd6df49-9506-4054-87b8-3bbe65387db2","operation":"automatic_mission_resume","proofGate":"ship_and_prove_gate_blocked","sourceSha":"029b67da98b34a517740a38209c3718837eea336","timingsMs":{"prReadinessMs":2563,"approvedPlanMs":0,"shipAndProveMs":3007,"repositoryMutationMs":0,"repositoryProviderMs":0,"repositoryAtomicCommitMs":0,"repositoryBranchCreateMs":0,"repositoryPullRequestCreateMs":0},"nextAction":null,"receiptRef":{"mode":"full","missionId":"ffd6df49-9506-4054-87b8-3bbe65387db2"},"performance":null,"deploymentId":"forgejo-main-029b67da98b3","workflowRunId":5727,"releaseTargets":{"frontend":true,"onrunner":false,"migrations":true,"ccExecution":false,"supabaseEdge":false,"edgeFunctionSlugs":[]},"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":943,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-06T01:33:53.770041+00:00","proof_gate":"ship_and_prove_gate_blocked","source_sha":null,"external_id":"1910","receipt_type":"automatic_mission_resume","idempotency_key":"mission:ffd6df49-9506-4054-87b8-3bbe65387db2:automatic-mission-resume:1910:ship_and_prove_gate_blocked","mission_step_id":"cea1f730-a52a-40a9-9728-645ce3caa289","command_center_event_id":"ffd6df49-9506-4054-87b8-3bbe65387db2"},{"id":"be9de7f2-b179-460c-aeaa-2a98c9bad93a","source":"cc-execution","status":"waiting","payload":{"body":{"ship":true,"files":[{"path":"supabase/functions/pcg-commerce-publisher/index.ts","content":"import {serve} from \"https://deno.land/std@0.168.0/http/server.ts\";\nimport {createClient} from \"https://esm.sh/@supabase/supabase-js@2\";\n\nexport const FUNCTION_VERSION='1.2.0-pcg-explicit-commerce-intent';\nconst cors={'Access-Control-Allow-Origin':'*','Access-Control-Allow-Headers':'authorization, x-client-info, apikey, content-type'};\nconst json=(body:unknown,status=200)=>new Response(JSON.stringify(body),{status,headers:{...cors,'Content-Type':'application/json'}});\nconst clean=(v:unknown)=>String(v??'').trim(),env=(name:string)=>clean(Deno.env.get(name));\nconst titleFor=(card:any)=>[card.year,card.brand_set,card.player_character,card.card_number?('#'+card.card_number):'',card.variation,card.grade_label||card.grade,card.cert_number?('Cert '+card.cert_number):''].filter(Boolean).join(' ').replace(/\\s+/g,' ').trim();\nconst skuFor=(card:any)=>{const cert=clean(card.cert_number).replace(/[^A-Za-z0-9_-]/g,'').toUpperCase();return cert?('PCG-'+cert):('PCG-'+clean(card.id).replace(/-/g,'').slice(0,18).toUpperCase())};\nconst imagesFor=(card:any)=>[card.slab_image_url,card.front_image_url,card.back_image_url].map(clean).filter(Boolean);\nconst priceFor=(card:any)=>Number(card?.metadata?.sale_price??0);\nlet cachedEbayToken='',cachedEbayUntil=0;\n\nasync function authorize(req:Request,supabase:any,tenantId:string){\n  const token=clean(req.headers.get('authorization')).replace(/^Bearer\\s+/i,'');if(!token)return false;\n  const {data}=await supabase.auth.getUser(token);const userId=data?.user?.id;if(!userId)return false;\n  const {data:membership}=await supabase.from('user_tenant_access').select('tenant_id').eq('user_id',userId).eq('tenant_id',tenantId).maybeSingle();\n  return Boolean(membership);\n}\nasync function ebayToken(){\n  if(env('EBAY_ACCESS_TOKEN'))return env('EBAY_ACCESS_TOKEN');\n  if(cachedEbayToken&&Date.now()<cachedEbayUntil)return cachedEbayToken;\n  const clientId=env('EBAY_CLIENT_ID'),clientSecret=env('EBAY_CLIENT_SECRET'),refreshToken=env('EBAY_REFRESH_TOKEN');if(!clientId||!clientSecret||!refreshToken)return '';\n  const scope=env('EBAY_OAUTH_SCOPE')||'https://api.ebay.com/oauth/api_scope/sell.inventory https://api.ebay.com/oauth/api_scope/sell.account';\n  const res=await fetch('https://api.ebay.com/identity/v1/oauth2/token',{method:'POST',headers:{authorization:'Basic '+btoa(clientId+':'+clientSecret),'content-type':'application/x-www-form-urlencoded'},body:new URLSearchParams({grant_type:'refresh_token',refresh_token:refreshToken,scope})});\n  const data=await res.json().catch(()=>({}));if(!res.ok)return '';\n  cachedEbayToken=clean(data.access_token);cachedEbayUntil=Date.now()+Math.max(60000,(Number(data.expires_in||7200)-60)*1000);return cachedEbayToken;\n}\nasync function ebayRequest(path:string,method:string,body?:unknown){\n  const token=await ebayToken();if(!token)return {ok:false,status:0,data:{},prerequisite:true};\n  const res=await fetch('https://api.ebay.com'+path,{method,headers:{authorization:'Bearer '+token,'content-type':'application/json','content-language':'en-US','accept-language':'en-US'},body:body===undefined?undefined:JSON.stringify(body)});\n  const data=await res.json().catch(()=>({}));return {ok:res.ok,status:res.status,data};\n}\nasync function publishWebsite(item:any){\n  const endpoint=env('PCG_WEBSITE_PUBLISH_URL'),token=env('PCG_WEBSITE_PUBLISH_TOKEN');\n  if(!endpoint||!token)return {status:'prerequisite_required',reason:'Connect the PCG website publishing endpoint.'};\n  const res=await fetch(endpoint,{method:'POST',headers:{'content-type':'application/json',authorization:'Bearer '+token,'idempotency-key':item.sku},body:JSON.stringify(item)});\n  const body=await res.json().catch(()=>({}));if(!res.ok)return {status:'needs_attention',reason:'Website publishing could not complete.',provider:{status:res.status}};\n  return {status:'live',url:clean(body.url||body.product_url),provider:{id:body.id||body.product_id||null}};\n}\nasync function publishEbay(item:any,existing:any){\n  const locationKey=env('EBAY_INVENTORY_LOCATION_KEY'),fulfillmentPolicyId=env('EBAY_FULFILLMENT_POLICY_ID'),paymentPolicyId=env('EBAY_PAYMENT_POLICY_ID'),returnPolicyId=env('EBAY_RETURN_POLICY_ID'),categoryId=env('EBAY_CATEGORY_ID');\n  if(!(await ebayToken())||!locationKey||!fulfillmentPolicyId||!paymentPolicyId||!returnPolicyId||!categoryId)return {status:'prerequisite_required',reason:'Complete eBay connection, inventory location, category, payment, fulfillment, and return policies.'};\n  const ebayTitle=clean(item.title).slice(0,80);\n  const inventory={availability:{shipToLocationAvailability:{quantity:item.quantity}},condition:item.condition||'USED_EXCELLENT',product:{title:ebayTitle,description:item.description,imageUrls:item.images,aspects:item.aspects||{}}};\n  const inv=await ebayRequest('/sell/inventory/v1/inventory_item/'+encodeURIComponent(item.sku),'PUT',inventory);if(!inv.ok)return {status:'needs_attention',reason:'eBay rejected the inventory item.',provider:{status:inv.status}};\n  let offerId=clean(existing?.ebay_offer_id);\n  const offer={sku:item.sku,marketplaceId:'EBAY_US',format:'FIXED_PRICE',availableQuantity:item.quantity,categoryId,listingDescription:item.description,listingPolicies:{fulfillmentPolicyId,paymentPolicyId,returnPolicyId},merchantLocationKey:locationKey,pricingSummary:{price:{currency:'USD',value:Number(item.price).toFixed(2)}}};\n  if(!offerId){const created=await ebayRequest('/sell/inventory/v1/offer','POST',offer);offerId=clean(created.data?.offerId);if(!created.ok||!offerId)return {status:'needs_attention',reason:'eBay could not create the listing offer.',provider:{status:created.status}}}\n  else{const updated=await ebayRequest('/sell/inventory/v1/offer/'+encodeURIComponent(offerId),'PUT',offer);if(!updated.ok)return {status:'needs_attention',reason:'eBay could not update the existing offer.',provider:{status:updated.status}}}\n  const published=await ebayRequest('/sell/inventory/v1/offer/'+encodeURIComponent(offerId)+'/publish','POST');const listingId=clean(published.data?.listingId)||clean(existing?.ebay_listing_id);\n  if(!published.ok&&!listingId)return {status:'needs_attention',reason:'eBay could not publish the offer.',offerId,provider:{status:published.status}};\n  return {status:'live',offerId,listingId,url:listingId?('https://www.ebay.com/itm/'+listingId):null};\n}\nconst publicRow=(card:any,pub:any)=>({...pub,id:pub?.id||('card:'+card.id),card_id:card.id,sku:pub?.sku||skuFor(card),title:pub?.title||titleFor(card),price:Number(pub?.price??priceFor(card)??0),quantity:Number(pub?.quantity??1),website_status:pub?.website_status||'uploaded',ebay_status:pub?.ebay_status||'uploaded',card});\n\nserve(async(req)=>{\n  if(req.method==='OPTIONS')return new Response(null,{headers:cors});const url=new URL(req.url);if(req.method==='GET'&&url.pathname.endsWith('/health'))return json({ok:true,service:'pcg-commerce-publisher',version:FUNCTION_VERSION});if(req.method!=='POST')return json({ok:false,error:'Method not allowed'},405);\n  const supabase=createClient(env('SUPABASE_URL'),env('SUPABASE_SERVICE_ROLE_KEY'));\n  try{\n    const body=await req.json().catch(()=>({})),action=clean(body.action||'list'),tenantId=clean(body.tenant_id);if(!tenantId)return json({ok:false,error:'PCG workspace is not ready yet.'},200);if(!await authorize(req,supabase,tenantId))return json({ok:false,error:'Your PCG session does not have access to this workspace.'},403);\n    if(action==='list'){\n      const [{data:cards,error:cardError},{data:pubs,error:pubError}]=await Promise.all([supabase.from('card_grading_cards').select('*').eq('tenant_id',tenantId).in('status',['ready','completed']).order('updated_at',{ascending:false}).limit(250),supabase.from('pcg_commerce_publications').select('*').eq('tenant_id',tenantId).order('updated_at',{ascending:false}).limit(250)]);\n      if(cardError||pubError)return json({ok:false,error:'Publishing status is temporarily unavailable.'},200);\n      const byCard=new Map((pubs||[]).map((p:any)=>[p.card_id,p])),rows=(cards||[]).map((card:any)=>publicRow(card,byCard.get(card.id)));\n      for(const pub of pubs||[])if(!rows.some((r:any)=>r.card_id===pub.card_id)){const {data:card}=await supabase.from('card_grading_cards').select('*').eq('tenant_id',tenantId).eq('id',pub.card_id).maybeSingle();if(card)rows.push(publicRow(card,pub))}\n      return json({ok:true,items:rows});\n    }\n    if(action!=='publish_batch'&&action!=='retry')return json({ok:false,error:'Unsupported publishing action.'},200);\n    const cardIds=Array.from(new Set((Array.isArray(body.card_ids)?body.card_ids:[]).map(clean).filter(Boolean))).slice(0,250);if(!cardIds.length)return json({ok:false,error:'Choose at least one card to publish.'},200);\n    const priceByCard=(body.price_by_card||{}) as Record<string,unknown>,{data:cards,error:cardError}=await supabase.from('card_grading_cards').select('*').eq('tenant_id',tenantId).in('id',cardIds);if(cardError)return json({ok:false,error:'PCG cards could not be loaded.'},200);\n    const results:any[]=[];\n    for(const card of cards||[]){\n      const {data:existing}=await supabase.from('pcg_commerce_publications').select('*').eq('tenant_id',tenantId).eq('card_id',card.id).maybeSingle();\n      const ownerPrice=Number(priceByCard[card.id]??0),savedPrice=Number(existing?.price??0),metadataSalePrice=priceFor(card),price=ownerPrice>0?ownerPrice:savedPrice>0?savedPrice:metadataSalePrice;\n      const images=imagesFor(card),missing:string[]=[];if(!clean(card.cert_number))missing.push('certification number');if(!clean(card.player_character))missing.push('player or character');if(!images.length)missing.push('card image');if(!(price>0))missing.push('explicit sale price');\n      const sku=skuFor(card),base={tenant_id:tenantId,card_id:card.id,sku,price:price>0?price:0,quantity:1,title:titleFor(card),description:clean(card.card_description)||titleFor(card),images,updated_at:new Date().toISOString()};\n      if(missing.length){const row={...base,website_status:'needs_attention',ebay_status:'needs_attention',error_code:'missing_required_fields',error_message:'Add '+missing.join(', ')+'.',attempt_count:Number(existing?.attempt_count||0)+1};const {data:saved}=await supabase.from('pcg_commerce_publications').upsert(row,{onConflict:'tenant_id,card_id'}).select().single();results.push({...saved,status:'needs_attention'});continue}\n      const meta=card.metadata||{},item={sku,title:base.title,description:base.description,images,price,quantity:1,condition:clean(meta.ebay_condition)||'USED_EXCELLENT',cert_number:card.cert_number,grade:card.grade_label||card.grade,year:card.year,set:card.brand_set,subject:card.player_character,card_number:card.card_number,variation:card.variation,manufacturer:clean(meta.manufacturer),category:clean(card.category),population_count:card.population_count,autograph_present:card.autograph_present,aspects:{Year:[clean(card.year)].filter(Boolean),Set:[clean(card.brand_set)].filter(Boolean),Player:[clean(card.player_character)].filter(Boolean),Manufacturer:[clean(meta.manufacturer)].filter(Boolean),Grade:[clean(card.grade_label||card.grade)].filter(Boolean)}};\n      const [website,ebay]=await Promise.all([publishWebsite(item),publishEbay(item,existing)]),errorMessage=[website.status==='needs_attention'?website.reason:'',ebay.status==='needs_attention'?ebay.reason:''].filter(Boolean).join(' ');\n      const row={...base,website_status:website.status,website_url:website.url||existing?.website_url||null,ebay_status:ebay.status,ebay_offer_id:ebay.offerId||existing?.ebay_offer_id||null,ebay_listing_id:ebay.listingId||existing?.ebay_listing_id||null,ebay_url:ebay.url||existing?.ebay_url||null,error_code:errorMessage?'provider_publish_failed':null,error_message:errorMessage||null,attempt_count:Number(existing?.attempt_count||0)+1,provider_state:{website:website.provider||null,ebay:ebay.provider||null}};\n      const {data:saved,error:saveError}=await supabase.from('pcg_commerce_publications').upsert(row,{onConflict:'tenant_id,card_id'}).select().single();results.push(saveError?{card_id:card.id,sku,status:'needs_attention',error:'Publishing state could not be saved.'}:saved);\n    }\n    return json({ok:true,items:results});\n  }catch{return json({ok:false,error:'PCG publishing hit a temporary problem. Nothing was duplicated; retry the affected item.'},200)}\n});\n","expectedSha":"a4bf557c77070ace1f6b263776e017ab113b9fbe"},{"path":"src/pages/card-grading/PCGBatchPublishingCenter.tsx","content":"import React from 'react';\nimport {supabase} from '@/integrations/supabase/client';\n\ntype Row={id:string;card_id:string;sku:string;title:string;price:number;quantity:number;website_status:string;website_url?:string|null;ebay_status:string;ebay_url?:string|null;error_message?:string|null;card?:any};\nconst label=(v:string)=>v==='live'?'Live':v==='prerequisite_required'?'Setup required':v==='needs_attention'?'Needs attention':v==='sold'?'Sold':v==='uploaded'?'Not listed':v||'Not listed';\n\nexport default function PCGBatchPublishingCenter({tenantId}:{tenantId:string}){\n  const[rows,setRows]=React.useState<Row[]>([]);\n  const[prices,setPrices]=React.useState<Record<string,string>>({});\n  const[busy,setBusy]=React.useState<string[]>([]);\n  const[message,setMessage]=React.useState('');\n\n  const load=React.useCallback(async()=>{\n    if(!tenantId)return;\n    const {data}=await supabase.functions.invoke('pcg-commerce-publisher',{body:{action:'list',tenant_id:tenantId}});\n    if(data?.ok){\n      const items=Array.isArray(data.items)?data.items:[];\n      setRows(items);\n      setPrices(prev=>{\n        const next={...prev};\n        for(const row of items) if(!next[row.card_id]&&Number(row.price)>0) next[row.card_id]=String(row.price);\n        return next;\n      });\n    }\n  },[tenantId]);\n\n  const publish=React.useCallback(async(cardIds:string[])=>{\n    if(!cardIds.length)return;\n    setBusy(v=>Array.from(new Set([...v,...cardIds])));\n    const entries=cardIds.map(id=>[id,Number(prices[id]||0)] as const).filter(([,value])=>value>0);\n    const priceByCard=Object.fromEntries(entries);\n    const {data,error}=await supabase.functions.invoke('pcg-commerce-publisher',{body:{action:'publish_batch',tenant_id:tenantId,card_ids:cardIds,price_by_card:priceByCard}});\n    setBusy(v=>v.filter(id=>!cardIds.includes(id)));\n    if(error||!data?.ok)setMessage(data?.error||'Publishing could not start. Try again.');\n    else setMessage('Publishing pass complete. Any item that needs attention is isolated below.');\n    await load();\n  },[load,prices,tenantId]);\n\n  React.useEffect(()=>{void load()},[load]);\n  React.useEffect(()=>{\n    if(!tenantId)return;\n    const channel=supabase.channel('pcg-commerce-'+tenantId)\n      .on('postgres_changes',{event:'*',schema:'public',table:'card_grading_cards',filter:'tenant_id=eq.'+tenantId},()=>void load())\n      .subscribe();\n    const timer=window.setInterval(()=>void load(),10000);\n    return()=>{window.clearInterval(timer);void supabase.removeChannel(channel)};\n  },[load,tenantId]);\n\n  return <section data-pcg-batch-publishing=\"true\" className=\"relative z-10 mx-auto mb-5 w-full max-w-[1500px] px-3 sm:px-5 lg:px-7\">\n    <div className=\"rounded-3xl border border-white/10 bg-black/55 p-4 shadow-2xl backdrop-blur-xl sm:p-5\">\n      <div className=\"flex flex-wrap items-center gap-3\">\n        <div className=\"min-w-0 flex-1\"><div className=\"text-[10px] font-black uppercase tracking-[.2em] text-[#d8bb78]/70\">Publishing command center</div><h2 className=\"mt-1 text-xl font-black text-white\">Website + eBay</h2><p className=\"mt-1 text-sm text-white/55\">Completed cards are candidates only. Nothing is listed until you enter an explicit sale price and press Publish.</p><p className=\"mt-1 text-xs font-semibold text-amber-100/70\">A card’s declared or grading value is never treated as permission to sell it.</p></div>\n        <div className=\"rounded-full border border-[#d8bb78]/25 bg-[#d8bb78]/10 px-3 py-1.5 text-[11px] font-black uppercase tracking-[.12em] text-[#ead49d]\">Owner approval required</div>\n      </div>\n      {message?<div className=\"mt-3 rounded-xl border border-white/10 bg-white/[.05] px-3 py-2 text-sm text-white/70\">{message}</div>:null}\n      <div className=\"mt-4 grid gap-2\">\n        {!rows.length?<div className=\"rounded-2xl border border-white/8 bg-white/[.03] p-4 text-sm text-white/55\">Completed graded cards appear here as sale candidates. Set an explicit sale price and press Publish only for cards PCG is actually authorized to sell.</div>:rows.map(row=>{\n          const working=busy.includes(row.card_id);\n          const price=prices[row.card_id]??String(row.price||'');\n          return <article key={row.id||row.card_id} className=\"grid gap-3 rounded-2xl border border-white/8 bg-white/[.035] p-3 lg:grid-cols-[minmax(0,1fr)_140px_auto] lg:items-center\">\n            <div className=\"min-w-0\"><div className=\"truncate text-sm font-black text-white\">{row.title||row.sku}</div><div className=\"mt-1 flex flex-wrap gap-2 text-[11px] font-bold\"><span className=\"rounded-full bg-white/[.06] px-2 py-1 text-white/65\">{row.sku}</span><span className=\"rounded-full bg-white/[.06] px-2 py-1 text-white/65\">Website: {label(row.website_status)}</span><span className=\"rounded-full bg-white/[.06] px-2 py-1 text-white/65\">eBay: {label(row.ebay_status)}</span></div>{row.error_message?<div className=\"mt-2 text-xs font-semibold text-amber-200/90\">{row.error_message}</div>:null}</div>\n            <label className=\"grid gap-1 text-[10px] font-black uppercase tracking-[.12em] text-white/45\">Explicit sale price<input inputMode=\"decimal\" value={price} onChange={e=>setPrices(v=>({...v,[row.card_id]:e.target.value}))} className=\"h-10 min-w-0 rounded-xl border border-white/10 bg-black/40 px-3 text-sm font-bold text-white outline-none focus:border-[#d8bb78]/60\" placeholder=\"0.00\"/></label>\n            <div className=\"flex flex-wrap gap-2 lg:justify-end\">{row.website_url?<a className=\"rounded-lg border border-white/10 px-2.5 py-2 text-xs font-black text-white/75\" href={row.website_url} target=\"_blank\" rel=\"noreferrer\">Website</a>:null}{row.ebay_url?<a className=\"rounded-lg border border-white/10 px-2.5 py-2 text-xs font-black text-white/75\" href={row.ebay_url} target=\"_blank\" rel=\"noreferrer\">eBay</a>:null}<button type=\"button\" disabled={working||!(Number(price)>0)} onClick={()=>void publish([row.card_id])} className=\"rounded-lg border border-[#d8bb78]/30 bg-[#d8bb78]/10 px-2.5 py-2 text-xs font-black text-[#ead49d] disabled:opacity-40\">{working?'Publishing…':row.website_status==='live'||row.ebay_status==='live'?'Update listing':row.website_status==='uploaded'&&row.ebay_status==='uploaded'?'Publish website + eBay':'Retry'}</button></div>\n          </article>\n        })}\n      </div>\n    </div>\n  </section>;\n}\n","expectedSha":"34fd67306ff31612548c8221c8898c5be0c99d30"}],"branch":"ai/objective-first-repair-28af7fa0fd8a","writes":[],"patches":[],"version":1,"approved":true,"missionId":"28af7fa0-fd8a-4404-b45b-6081b520a294","repository":"noel/KnockLaunchOS","commitMessage":"PCG: require explicit commerce sale intent","ownerApproved":true,"releaseIntent":null,"sourceTargets":["supabase/functions/pcg-commerce-publisher/index.ts","src/pages/card-grading/PCGBatchPublishingCenter.tsx"],"implementation":{"files":[],"writes":[]},"requestContract":null,"repairGeneration":null,"executionEnvelope":{"ship":true,"version":1,"approved":true,"missionId":"28af7fa0-fd8a-4404-b45b-6081b520a294","ownerApproved":true,"releaseIntent":null,"sourceTargets":["supabase/functions/pcg-commerce-publisher/index.ts","src/pages/card-grading/PCGBatchPublishingCenter.tsx"],"requestContract":null,"repairGeneration":null,"proofRequirements":null,"controlPlaneUnfreeze":false,"controlPlaneMaintenance":false,"controlPlaneMaintenancePaths":[],"controlPlaneMaintenanceReason":null},"proofRequirements":null,"controlPlaneUnfreeze":false,"durableMutationResume":true,"controlPlaneMaintenance":false,"controlPlaneMaintenancePaths":[],"controlPlaneMaintenanceReason":null},"recovery":false,"fingerprint":"99faeb2d1ea9e751f61f2415e890e3a90ae62cdd98348fe5070a6d8458850d2c","replayCount":0,"serializedBytes":20285},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-29T01:19:27.179906+00:00","proof_gate":"repository_mutation_intent_persisted","source_sha":null,"external_id":null,"receipt_type":"repository_mutation_intent","idempotency_key":"mission:28af7fa0-fd8a-4404-b45b-6081b520a294:repository-mutation-intent:99faeb2d1ea9e751f61f2415e890e3a90ae62cdd98348fe5070a6d8458850d2c:0","mission_step_id":"f62643ab-a60a-44f6-b59c-f4190c317365","command_center_event_id":"28af7fa0-fd8a-4404-b45b-6081b520a294"},{"id":"be9eea41-3fca-437d-bd1c-b82a83981cab","source":"forgejo","status":"waiting","payload":{"branch":"ai/visual-witness-supabase-secret-20260905","prNumber":1831,"nextAction":"Follow the existing canonical release to terminal proof.","mergeCommitSha":"9b628e38c535087d9bc41a1140b5517e59465175","branchDeletedAfterMerge":true,"correctiveGenerationCreated":false},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-05T13:13:38.56849+00:00","proof_gate":"forgejo_merged_pr_is_authoritative_source_lineage","source_sha":"9b628e38c535087d9bc41a1140b5517e59465175","external_id":"1831","receipt_type":"source_lineage_merged_pr_authoritative","idempotency_key":"mission:cad4ef23-b4ab-4622-839a-0fa269b84533:merged-pr:1831:9b628e38c535087d9bc41a1140b5517e59465175","mission_step_id":"09c635fb-324f-4619-b104-37867bc91fbf","command_center_event_id":"cad4ef23-b4ab-4622-839a-0fa269b84533"},{"id":"bea36e7c-8a0e-4925-bf47-c02e59694d7a","source":"cc-execution","status":"synthesis_required","payload":{"ok":true,"jobId":null,"phase":"objective_received","branch":null,"reason":null,"status":"synthesis_required","metrics":{"receiptBytes":0,"releaseCount":0,"toolCallCount":0,"repeatedCallCount":0,"executorlessWaitMs":0,"firstUsefulResultAt":null,"recoveryAttemptCount":0,"ownerInterruptionCount":0},"version":"1.64.47-paul-owner-answer-quality","prNumber":null,"terminal":false,"missionId":"40912109-1e16-426f-8157-d8dec0fbf7f4","operation":"execute_mission","proofGate":"repair_mission_synthesis_ready","sourceSha":null,"timingsMs":{"gateMs":0,"proofMs":0,"handlerMs":1228,"releaseMs":0,"mutationMs":0,"repositoryMs":0,"missionSetupMs":527,"providerAuthMs":0,"ledgerPrepareMs":527,"ledgerReconcileMs":0,"lineageReconcileMs":0,"resolvePreflightMs":527,"authoritativeLedgerMs":0,"ledgerAsyncDispatchMs":0,"totalSynchronousLedgerMs":527,"asyncBookkeepingDispatchMs":0,"ledgerAuthoritativeCommitMs":0},"nextAction":"Synthesize exact mutation from the resolved authoritative source targets and continue this same mission.","receiptRef":{"mode":"full","missionId":"40912109-1e16-426f-8157-d8dec0fbf7f4"},"performance":null,"deploymentId":null,"releaseState":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","pendingProofKinds":[],"verificationState":null,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":3556,"likelyAffectedFiles":["src/PrivateAppShell.tsx","scripts/visual-witness-hosted-runner/src/auth-state-refresh.mjs","scripts/visual-witness-hosted-runner/src/observe-route-contract.mjs","scripts/visual-witness-hosted-runner/src/operator-session-broker.mjs"],"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true,"requestContractState":"pending"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-02T01:55:45.11414+00:00","proof_gate":"repair_mission_synthesis_ready","source_sha":null,"external_id":null,"receipt_type":"execute_mission","idempotency_key":"mission:40912109-1e16-426f-8157-d8dec0fbf7f4:execute_mission:repair_mission_synthesis_ready:current-generation","mission_step_id":"d1c5cd8d-8e22-4401-bf7a-36a69475786e","command_center_event_id":"40912109-1e16-426f-8157-d8dec0fbf7f4"},{"id":"bea3f0c7-24e4-4f6b-96e4-f94b93ea2e6e","source":"forgejo-runtime","status":"verified","payload":{"failed":[],"states":{"forgejo-main/source":"success","forgejo-release/workflow":"success","frontend-cloudflare/live":"success"},"mainSha":"2069b2ccc92e973179cab2ca246d846ff3ee4a25","missing":[],"pending":[],"required":["forgejo-main/source","forgejo-release/workflow","frontend-cloudflare/live"],"sourceSha":"f2818120cc58b59f7c4373aa57b7b3b85713f58b","releaseState":"verified","sourceInMain":true,"compareStatus":"known_exact_protected_main_push_history","releaseTargets":{"frontend":true,"migrations":false,"ccExecution":false,"supabaseEdge":false},"releaseTargetStates":{"frontend":"success"},"requestContractHash":null,"forgejoWorkflowProof":{"url":"https://git.knocklaunch.app/noel/KnockLaunchOS/actions/runs/12747","runId":12747,"status":"success","sourceSha":"f2818120cc58b59f7c4373aa57b7b3b85713f58b","conclusion":null,"failedJobs":[],"diagnostics":null,"exactSource":true,"targetStates":{"frontend":"success"},"targetJobCount":7,"observedTargetStates":{"frontend":"success"}},"releaseSourceVerified":true,"ccExecutionRuntimeProof":null,"releaseTargetRecoveryProof":{"exact":true,"source":"exact_source_parent_diff_shared_release_owner_mapping","parentSha":"5a6ad3890c76783baf485647363fbf1419377b4f","sourceSha":"f2818120cc58b59f7c4373aa57b7b3b85713f58b","changedPaths":["src/PrivateAppShell.tsx","src/__tests__/contracts/installed-app-navigation.contract.test.ts"],"changedPathCount":2,"independentOfCurrentMainCompare":true},"exactReleaseVerifiedAfterMainAdvanced":false},"tenant_id":"c55998b4-82a3-467e-8d35-177bb4785f6e","created_at":"2026-10-03T20:36:06.471664+00:00","proof_gate":"canonical_release_terminal_verified","source_sha":"f2818120cc58b59f7c4373aa57b7b3b85713f58b","external_id":null,"receipt_type":"canonical_release_status","idempotency_key":"mission:d0179f06-5a63-4f59-b60e-20eaa17e438f:forgejo-release-status:f2818120cc58b59f7c4373aa57b7b3b85713f58b:verified:forgejo-main/source=success|forgejo-release/workflow=success|frontend-cloudflare/live=success","mission_step_id":"ef86cbc4-12be-43f3-9393-ff723a49436d","command_center_event_id":"d0179f06-5a63-4f59-b60e-20eaa17e438f"},{"id":"bea3f57a-6cb9-4ba6-945c-9d606e316063","source":"cc-execution","status":"synthesis_required","payload":{"ok":true,"jobId":null,"phase":"implementation","branch":"ai/restore-points-human-language-20260910","reason":null,"status":"synthesis_required","metrics":{"receiptBytes":0,"releaseCount":0,"toolCallCount":0,"repeatedCallCount":0,"ownerInterruptionCount":0},"version":"1.58.90-mission-terminalization","prNumber":null,"terminal":false,"missionId":"dae7be12-c46c-4ad1-b68f-babda00d72ee","operation":"execute_mission","proofGate":"repair_mission_synthesis_ready","sourceSha":null,"timingsMs":{"gateMs":0,"proofMs":0,"handlerMs":1435,"releaseMs":0,"mutationMs":0,"repositoryMs":0,"missionSetupMs":679,"providerAuthMs":0,"ledgerPrepareMs":679,"ledgerReconcileMs":0,"lineageReconcileMs":0,"resolvePreflightMs":679,"authoritativeLedgerMs":0,"ledgerAsyncDispatchMs":0,"totalSynchronousLedgerMs":679,"asyncBookkeepingDispatchMs":0,"ledgerAuthoritativeCommitMs":0},"nextAction":"Inspect the bounded repository paths, synthesize exact files or anchored_edits, and call /mission/execute again automatically with this same missionId without another owner prompt or workflow switch.","receiptRef":{"mode":"full","missionId":"dae7be12-c46c-4ad1-b68f-babda00d72ee"},"performance":null,"deploymentId":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":4209,"likelyAffectedFiles":["src/pages/admin/GodModeRestorePoints.tsx"],"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-10T04:32:27.296928+00:00","proof_gate":"repair_mission_synthesis_ready","source_sha":null,"external_id":null,"receipt_type":"execute_mission","idempotency_key":"mission:dae7be12-c46c-4ad1-b68f-babda00d72ee:execute_mission:repair_mission_synthesis_ready:current-generation","mission_step_id":"0063fd70-a2cd-43c1-b42e-8fe9263fbba4","command_center_event_id":"dae7be12-c46c-4ad1-b68f-babda00d72ee"},{"id":"bea4a410-b97d-4b95-bb5f-7e50162b4838","source":"cc-execution","status":"deployment_dispatched","payload":{"ok":true,"jobId":null,"phase":"objective_received","branch":null,"reason":null,"status":"deployment_dispatched","metrics":{"receiptBytes":0,"releaseCount":0,"toolCallCount":0,"repeatedCallCount":0,"ownerInterruptionCount":0},"version":"1.47.2-release-lineage-compare","prNumber":358,"terminal":false,"missionId":"9c9c6758-5265-41c7-af1d-d0d9f49b8627","operation":"ship_and_prove","proofGate":"canonical_release_dispatched","sourceSha":"6d03897c79c3d979f0c4a96582f8ccfcda420931","timingsMs":null,"nextAction":null,"receiptRef":{"mode":"full","missionId":"9c9c6758-5265-41c7-af1d-d0d9f49b8627"},"performance":null,"deploymentId":"forgejo-main-6d03897c79c3","workflowRunId":1190,"releaseTargets":{"frontend":true,"onrunner":false,"migrations":false,"ccExecution":false,"supabaseEdge":false,"edgeFunctionSlugs":[]},"detailsAvailable":true,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":5796,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true},"tenant_id":"a2929648-19db-46c8-9e93-07378ed1aa5f","created_at":"2026-08-17T22:09:49.980497+00:00","proof_gate":"canonical_release_dispatched","source_sha":"6d03897c79c3d979f0c4a96582f8ccfcda420931","external_id":"forgejo-main-6d03897c79c3","receipt_type":"ship_and_prove","idempotency_key":"mission:9c9c6758-5265-41c7-af1d-d0d9f49b8627:ship_and_prove:canonical_release_dispatched:6d03897c79c3d979f0c4a96582f8ccfcda420931:1190","mission_step_id":"55918a86-0ee7-4ecd-8a7b-9866ef2a627d","command_center_event_id":"9c9c6758-5265-41c7-af1d-d0d9f49b8627"},{"id":"bea5737e-10e2-4142-9441-1cc8a3f9d618","source":"cc-execution","status":"retryable","payload":{"ok":false,"jobId":null,"phase":"pull_request","branch":"ai/restore-forgejo-pr-merge-budgets-20260821","reason":"retryable_provider_transport:pr_ready_timeout_budget_exhausted","status":"retryable","metrics":{"receiptBytes":4274,"releaseCount":0,"toolCallCount":4,"repeatedCallCount":1,"ownerInterruptionCount":0},"version":"1.50.11-bounded-provider-control-plane","prNumber":574,"terminal":false,"missionId":"3afd055f-21d6-4a7c-85ee-daf7de375e54","operation":"execute_mission","proofGate":"repair_mission_pr_ready_retryable","sourceSha":null,"timingsMs":null,"nextAction":"Reconcile this same mission and pull request automatically; do not create a replacement branch or PR.","receiptRef":{"mode":"full","missionId":"3afd055f-21d6-4a7c-85ee-daf7de375e54"},"performance":null,"deploymentId":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":4787,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-08-21T18:16:51.657401+00:00","proof_gate":"repair_mission_pr_ready_retryable","source_sha":null,"external_id":"574","receipt_type":"execute_mission","idempotency_key":"mission:3afd055f-21d6-4a7c-85ee-daf7de375e54:execute_mission:repair_mission_pr_ready_retryable","mission_step_id":"225eeaf9-ef36-4711-989f-524d54a82100","command_center_event_id":"3afd055f-21d6-4a7c-85ee-daf7de375e54"},{"id":"bea711d4-823a-4d38-8a9a-0f51e4d96106","source":"cc-execution","status":"recorded","payload":{"requestContract":{"valid":true,"intent":{"evidence":[],"confidence":null,"compilation":{"stages":["owner_intent","conversation_context","scope","live_state","mutation_authority","affected_systems","dependencies","risk_and_blast_radius","execution_tactics","required_proof","release_plan","recovery_plan"],"version":2,"explicit":true,"objective":"Build KNOCKLAUNCH GodMode Shadow Tenant Data v3 as a platform primitive.\n\nOwner outcome: when a GodMode operator enters any tenant without explicit real-user impersonation/support projection, the tenant must behave like a fully populated real workspace using synthetic data. Nothing data-bearing should fall short of the real tenant owner/user experience.\n\nRequired platform behavior:\n1. Upgrade the current GodMode tenant demo store from contacts/tasks/calendar/mail only to a versioned shadow tenant dataset with linked realistic records for at least:\n   - contacts/leads/customers and notes\n   - proposals/agreements/contracts/e-sign state\n   - invoices/estimates/payments/receivables\n   - documents/files/evidence\n   - jobs/work orders/bookings\n   - opportunities/pipeline state\n   - tasks/jots/notes\n   - calendar/appointments/events\n   - mail inbox/sent/drafts/threads\n   - team members/invitations/roles\n   - notifications/activity/history\n   - reports/analytics source facts derived from the above\n2. All seeded records must be internally marked synthetic and relationally linked (contact -> proposal/agreement -> invoice/payment -> document/job/appointment/activity) so detail views and cross-navigation work.\n3. Add one generic shadow-data repository API supporting list/get/create/update/delete, bulk update/delete/archive/restore/assign, merge/replace import, reseed/reset, and relationship-safe ID preservation.\n4. Add import/export:\n   - export entire shadow tenant as versioned JSON\n   - export any collection as CSV\n   - import versioned JSON with merge or replace\n   - import CSV into a selected collection with field/header normalization and deterministic IDs\n   - imports must validate tenant/demo schema, preserve links where possible, report accepted/rejected rows, and never mutate production/provider data\n5. The existing GodMode Demo Data badge becomes a compact shadow-data control drawer/modal (not a separate app) showing collection counts and controls for reset, JSON export/import, and per-collection CSV import/export.\n6. Actual tenant app workflows must use the shadow repository in demo mode, with no provider/database writes, for the current shared data owners:\n   - Contacts/UnifiedManagement including import and bulk actions\n   - UniversalProposalWorkspace/proposalEngine including draft/edit/send-for-signature/approve/decline and demo operating contracts/agreements\n   - Documents/agreements and signed/pending agreement views\n   - Invoices/Payments via InvoicesTab/documents API boundary\n   - Jobs/Work Orders via JobTracker\n   - Opportunity Radar\n   - Team members/invitations\n   - existing Tasks, Calendar, Mail adapters\n7. Explicit real-user impersonation/read_only_support_access and ordinary tenant users must retain real production paths. Demo mode must never call production write endpoints/providers for covered actions.\n8. Reports/analytics in demo mode must see populated synthetic source data or derived demo metrics rather than empty production queries.\n9. Add a demo coverage registry/contract for first-class data-bearing application IDs. If a new data-bearing first-class tenant app is added without a shadow-data adapter, Gate must fail. Non-data creative/config-only surfaces may be explicitly exempted.\n10. Preserve the real tenant UI, routes, branding, search/filter/sort/detail navigation. This is data substitution, not a parallel demo application.\n11. Preserve existing tenant isolation, protected route behavior, and legitimate explicit support access.\n\nAcceptance:\n- Canonical Gate passes.\n- Auto-merge and release affected frontend.\n- Prove live in Tennex normal GodMode tenant mode (NOT read_only_support_access): Contacts populated; Proposals has seeded proposal/agreement; Documents/Agreements has seeded pending/signed agreement or linked contract; Invoices has seeded invoice/payment; Tasks and Calendar remain populated; demo manager can export JSON and CSV and import a CSV contact row that appears in Contacts.\n- Prove explicit","proofKinds":["runtime"],"adaptiveDomains":["intent","tenant_route_role_viewport","urgency_deadline","dependency_scope","risk_blast_radius","runner_capacity","queue_active_work","provider_failure_circuits","qa_scope","retry_recovery","release_ownership","proof_depth"],"expansionPolicy":"later_stages_may_only_narrow_or_expand_with_machine_readable_dependency_evidence","dynamicStatePolicy":"live_state_may_change_execution_tactics_but_never_owner_outcome_or_explicit_constraints","dynamicRefreshStages":["preflight","gate","release","runtime_proof"],"adaptiveCompilerVersion":"paul-adaptive-objective-v1","inheritedContextBlockingAuthority":false},"rawUtterance":"Build KNOCKLAUNCH GodMode Shadow Tenant Data v3 as a platform primitive.\n\nOwner outcome: when a GodMode operator enters any tenant without explicit real-user impersonation/support projection, the tenant must behave like a fully populated real workspace using synthetic data. Nothing data-bearing should fall short of the real tenant owner/user experience.\n\nRequired platform behavior:\n1. Upgrade the current GodMode tenant demo store from contacts/tasks/calendar/mail only to a versioned shadow tenant dataset with linked realistic records for at least:\n   - contacts/leads/customers and notes\n   - proposals/agreements/contracts/e-sign state\n   - invoices/estimates/payments/receivables\n   - documents/files/evidence\n   - jobs/work orders/bookings\n   - opportunities/pipeline state\n   - tasks/jots/notes\n   - calendar/appointments/events\n   - mail inbox/sent/drafts/threads\n   - team members/invitations/roles\n   - notifications/activity/history\n   - reports/analytics source facts derived from the above\n2. All seeded records must be internally marked synthetic and relationally linked (contact -> proposal/agreement -> invoice/payment -> document/job/appointment/activity) so detail views and cross-navigation work.\n3. Add one generic shadow-data repository API supporting list/get/create/update/delete, bulk update/delete/archive/restore/assign, merge/replace import, reseed/reset, and relationship-safe ID preservation.\n4. Add import/export:\n   - export entire shadow tenant as versioned JSON\n   - export any collection as CSV\n   - import versioned JSON with merge or replace\n   - import CSV into a selected collection with field/header normalization and deterministic IDs\n   - imports must validate tenant/demo schema, preserve links where possible, report accepted/rejected rows, and never mutate production/provider data\n5. The existing GodMode Demo Data badge becomes a compact shadow-data control drawer/modal (not a separate app) showing collection counts and controls for reset, JSON export/import, and per-collection CSV import/export.\n6. Actual tenant app workflows must use the shadow repository in demo mode, with no provider/database writes, for the current shared data owners:\n   - Contacts/UnifiedManagement including import and bulk actions\n   - UniversalProposalWorkspace/proposalEngine including draft/edit/send-for-signature/approve/decline and demo operating contracts/agreements\n   - Documents/agreements and signed/pending agreement views\n   - Invoices/Payments via InvoicesTab/documents API boundary\n   - Jobs/Work Orders via JobTracker\n   - Opportunity Radar\n   - Team members/invitations\n   - existing Tasks, Calendar, Mail adapters\n7. Explicit real-user impersonation/read_only_support_access and ordinary tenant users must retain real production paths. Demo mode must never call production write endpoints/providers for covered actions.\n8. Reports/analytics in demo mode must see populated synthetic source data or derived demo metrics rather than empty production queries.\n9. Add a demo coverage registry/contract for first-class data-bearing application IDs. If a new data-bearing first-class tenant app is added without a shadow-data adapter, Gate must fail. Non-data creative/config-only surfaces may be explicitly exempted.\n10. Preserve the real tenant UI, routes, branding, search/filter/sort/detail navigation. This is data substitution, not a parallel demo application.\n11. Preserve existing tenant isolation, protected route behavior, and legitimate explicit support access.\n\nAcceptance:\n- Canonical Gate passes.\n- Auto-merge and release affected frontend.\n- Prove live in Tennex normal GodMode tenant mode (NOT read_only_support_access): Contacts populated; Proposals has seeded proposal/agreement; Documents/Agreements has seeded pending/signed agreement or linked contract; Invoices has seeded invoice/payment; Tasks and Calendar remain populated; demo manager can export JSON and CSV and import a CSV contact row that appears in Contacts.\n- Prove explicit","wordingChanged":false,"canonicalIntent":"Build KNOCKLAUNCH GodMode Shadow Tenant Data v3 as a platform primitive.\n\nOwner outcome: when a GodMode operator enters any tenant without explicit real-user impersonation/support projection, the tenant must behave like a fully populated real workspace using synthetic data. Nothing data-bearing should fall short of the real tenant owner/user experience.\n\nRequired platform behavior:\n1. Upgrade the current GodMode tenant demo store from contacts/tasks/calendar/mail only to a versioned shadow tenant dataset with linked realistic records for at least:\n   - contacts/leads/customers and notes\n   - proposals/agreements/contracts/e-sign state\n   - invoices/estimates/payments/receivables\n   - documents/files/evidence\n   - jobs/work orders/bookings\n   - opportunities/pipeline state\n   - tasks/jots/notes\n   - calendar/appointments/events\n   - mail inbox/sent/drafts/threads\n   - team members/invitations/roles\n   - notifications/activity/history\n   - reports/analytics source facts derived from the above\n2. All seeded records must be internally marked synthetic and relationally linked (contact -> proposal/agreement -> invoice/payment -> document/job/appointment/activity) so detail views and cross-navigation work.\n3. Add one generic shadow-data repository API supporting list/get/create/update/delete, bulk update/delete/archive/restore/assign, merge/replace import, reseed/reset, and relationship-safe ID preservation.\n4. Add import/export:\n   - export entire shadow tenant as versioned JSON\n   - export any collection as CSV\n   - import versioned JSON with merge or replace\n   - import CSV into a selected collection with field/header normalization and deterministic IDs\n   - imports must validate tenant/demo schema, preserve links where possible, report accepted/rejected rows, and never mutate production/provider data\n5. The existing GodMode Demo Data badge becomes a compact shadow-data control drawer/modal (not a separate app) showing collection counts and controls for reset, JSON export/import, and per-collection CSV import/export.\n6. Actual tenant app workflows must use the shadow repository in demo mode, with no provider/database writes, for the current shared data owners:\n   - Contacts/UnifiedManagement including import and bulk actions\n   - UniversalProposalWorkspace/proposalEngine including draft/edit/send-for-signature/approve/decline and demo operating contracts/agreements\n   - Documents/agreements and signed/pending agreement views\n   - Invoices/Payments via InvoicesTab/documents API boundary\n   - Jobs/Work Orders via JobTracker\n   - Opportunity Radar\n   - Team members/invitations\n   - existing Tasks, Calendar, Mail adapters\n7. Explicit real-user impersonation/read_only_support_access and ordinary tenant users must retain real production paths. Demo mode must never call production write endpoints/providers for covered actions.\n8. Reports/analytics in demo mode must see populated synthetic source data or derived demo metrics rather than empty production queries.\n9. Add a demo coverage registry/contract for first-class data-bearing application IDs. If a new data-bearing first-class tenant app is added without a shadow-data adapter, Gate must fail. Non-data creative/config-only surfaces may be explicitly exempted.\n10. Preserve the real tenant UI, routes, branding, search/filter/sort/detail navigation. This is data substitution, not a parallel demo application.\n11. Preserve existing tenant isolation, protected route behavior, and legitimate explicit support access.\n\nAcceptance:\n- Canonical Gate passes.\n- Auto-merge and release affected frontend.\n- Prove live in Tennex normal GodMode tenant mode (NOT read_only_support_access): Contacts populated; Proposals has seeded proposal/agreement; Documents/Agreements has seeded pending/signed agreement or linked contract; Invoices has seeded invoice/payment; Tasks and Calendar remain populated; demo manager can export JSON and CSV and import a CSV contact row that appears in Contacts.\n- Prove explicit","resolutionStatus":"exact","uniqueResolution":true,"clarificationRequired":false},"source":"explicit","version":1,"outcomes":[{"id":"shadow-tenant-v3","statement":"Build KNOCKLAUNCH GodMode Shadow Tenant Data v3 as a platform primitive.\n\nOwner outcome: when a GodMode operator enters any tenant without explicit real-user impersonation/support projection, the tenant must behave like a fully populated real workspace using synthetic data. Nothing data-bearing should fall short of the real tenant owner/user experience.\n\nRequired platform behavior:\n1. Upgrade the current GodMode tenant demo store from contacts/tasks/calendar/mail only to a versioned shadow tenant dataset with linked realistic records for at least:\n   - contacts/leads/customers and notes\n   - proposals/agreements/contracts/e-sign state\n   - invoices/estimates/payments/receivables\n   - documents/files/evidence\n   - jobs/work orders/bookings\n   - opportunities/pipeline state\n   - tasks/jots/notes\n   - calendar/appointments/events\n   - mail inbox/sent/drafts/threads\n   - team members/invitations/roles\n   - notifications/activity/history\n   - reports/analytics source facts derived from the above\n2. All seeded records must be internally marked synthetic and relationally linked (contact -> proposal/agreement -> invoice/payment -> document/job/appointment/activity) so detail views and cros","provenance":{"reason":null,"source":"current_explicit_owner_request","inherited":false,"blockingAuthority":true},"proofConditionIds":["contacts","proposal","agreement","invoice","import-export","support"]}],"objective":"Build KNOCKLAUNCH GodMode Shadow Tenant Data v3 as a platform primitive.\n\nOwner outcome: when a GodMode operator enters any tenant without explicit real-user impersonation/support projection, the tenant must behave like a fully populated real workspace using synthetic data. Nothing data-bearing should fall short of the real tenant owner/user experience.\n\nRequired platform behavior:\n1. Upgrade the current GodMode tenant demo store from contacts/tasks/calendar/mail only to a versioned shadow tenant dataset with linked realistic records for at least:\n   - contacts/leads/customers and notes\n   - proposals/agreements/contracts/e-sign state\n   - invoices/estimates/payments/receivables\n   - documents/files/evidence\n   - jobs/work orders/bookings\n   - opportunities/pipeline state\n   - tasks/jots/notes\n   - calendar/appointments/events\n   - mail inbox/sent/drafts/threads\n   - team members/invitations/roles\n   - notifications/activity/history\n   - reports/analytics source facts derived from the above\n2. All seeded records must be internally marked synthetic and relationally linked (contact -> proposal/agreement -> invoice/payment -> document/job/appointment/activity) so detail views and cross-navigation work.\n3. Add one generic shadow-data repository API supporting list/get/create/update/delete, bulk update/delete/archive/restore/assign, merge/replace import, reseed/reset, and relationship-safe ID preservation.\n4. Add import/export:\n   - export entire shadow tenant as versioned JSON\n   - export any collection as CSV\n   - import versioned JSON with merge or replace\n   - import CSV into a selected collection with field/header normalization and deterministic IDs\n   - imports must validate tenant/demo schema, preserve links where possible, report accepted/rejected rows, and never mutate production/provider data\n5. The existing GodMode Demo Data badge becomes a compact shadow-data control drawer/modal (not a separate app) showing collection counts and controls for reset, JSON export/import, and per-collection CSV import/export.\n6. Actual tenant app workflows must use the shadow repository in demo mode, with no provider/database writes, for the current shared data owners:\n   - Contacts/UnifiedManagement including import and bulk actions\n   - UniversalProposalWorkspace/proposalEngine including draft/edit/send-for-signature/approve/decline and demo operating contracts/agreements\n   - Documents/agreements and signed/pending agreement views\n   - Invoices/Payments via InvoicesTab/documents API boundary\n   - Jobs/Work Orders via JobTracker\n   - Opportunity Radar\n   - Team members/invitations\n   - existing Tasks, Calendar, Mail adapters\n7. Explicit real-user impersonation/read_only_support_access and ordinary tenant users must retain real production paths. Demo mode must never call production write endpoints/providers for covered actions.\n8. Reports/analytics in demo mode must see populated synthetic source data or derived demo metrics rather than empty production queries.\n9. Add a demo coverage registry/contract for first-class data-bearing application IDs. If a new data-bearing first-class tenant app is added without a shadow-data adapter, Gate must fail. Non-data creative/config-only surfaces may be explicitly exempted.\n10. Preserve the real tenant UI, routes, branding, search/filter/sort/detail navigation. This is data substitution, not a parallel demo application.\n11. Preserve existing tenant isolation, protected route behavior, and legitimate explicit support access.\n\nAcceptance:\n- Canonical Gate passes.\n- Auto-merge and release affected frontend.\n- Prove live in Tennex normal GodMode tenant mode (NOT read_only_support_access): Contacts populated; Proposals has seeded proposal/agreement; Documents/Agreements has seeded pending/signed agreement or linked contract; Invoices has seeded invoice/payment; Tasks and Calendar remain populated; demo manager can export JSON and CSV and import a CSV contact row that appears in Contacts.\n- Prove explicit","constraints":[{"id":"no-production-demo-writes","statement":"Shadow tenant operations must never write production tenant/provider data.","provenance":{"reason":null,"source":"hard_safety_invariant","inherited":false,"blockingAuthority":true},"proofConditionIds":["contacts","proposal","agreement","invoice","import-export","support"]},{"id":"real-user-projection","statement":"Explicit real-user impersonation/support projection and ordinary tenant users retain production data paths.","provenance":{"reason":null,"source":"hard_safety_invariant","inherited":false,"blockingAuthority":true},"proofConditionIds":["support"]},{"id":"same-ui","statement":"Use real tenant routes/UI; do not create a parallel demo app.","provenance":{"reason":null,"source":"current_explicit_owner_request","inherited":false,"blockingAuthority":true},"proofConditionIds":["contacts","proposal","agreement","invoice","import-export","support"]},{"id":"coverage-enforced","statement":"First-class data-bearing apps require declared shadow-data coverage or Gate fails.","provenance":{"reason":null,"source":"current_explicit_owner_request","inherited":false,"blockingAuthority":true},"proofConditionIds":["contacts","proposal","agreement","invoice","import-export","support"]},{"id":"atomic","statement":"Do not claim complete until Gate, merge, release, and claim-matched live proof pass.","provenance":{"reason":null,"source":"hard_safety_invariant","inherited":false,"blockingAuthority":true},"proofConditionIds":["contacts","proposal","agreement","invoice","import-export","support"]},{"id":"capability-completeness","statement":"Every dependency the implementation declares or relies on must be wired and proven across applicable frontend, backend/runtime, schema/data/storage, authentication/authorization, provider configuration, prerequisite/loading/empty/error states, release ownership, and live production behavior; owner-authorized unavailable dependencies must become explicit prerequisite states rather than runtime failures.","provenance":{"reason":null,"source":"hard_safety_invariant","inherited":false,"blockingAuthority":true},"proofConditionIds":["contacts","proposal","agreement","invoice","import-export","support"]},{"id":"atomic-capability-lifecycle","statement":"Changed capabilities remain non-active until dependency readiness, N/N-1 compatibility, affected-target release, and claim-matched production canary proof are satisfied; missing optional dependencies become prerequisite_required, and runtime drift or health-contract violation quarantines only the affected capability instead of breaking unrelated working capability.","provenance":{"reason":null,"source":"hard_safety_invariant","inherited":false,"blockingAuthority":true},"proofConditionIds":["contacts","proposal","agreement","invoice","import-export","support"]}],"adaptivePolicy":{"risk":{"tier":"high","blastRadius":"sensitive"},"proof":{"requiredKinds":["runtime"],"visualProofScope":"targeted","interactionRequired":true,"runtimeProofRequired":true},"scope":{"route":null,"roleRef":null,"tenantRef":null,"sourceTargets":[]},"dynamic":{"variables":["main_and_runtime_lineage","runner_capacity","queue_and_active_work","provider_health","failure_clusters_and_circuits","release_target_state","current_pr_and_gate_state"],"refreshStages":["preflight","gate","release","runtime_proof"],"refreshMayChange":["runner_selection","parallelism","retry_path","qa_depth","release_recovery","proof_timing"],"refreshMayNotChange":["owner_outcome","explicit_no_go_constraints","tenant_identity","credential_boundary","hard_safety_invariants"]},"urgency":{"priority":"normal","deadlineSignals":[],"deadlineExplicit":false},"version":"paul-adaptive-objective-v1","recovery":{"transient":"one_bounded_retry_then_alternate_eligible_pool_or_provider_path","deterministic":"repair_source_or_contract_do_not_blind_rerun","mutationDependencyFailure":"prerequisite_required_or_targeted_recovery_never_invent","readOnlyDependencyFailure":"degrade_to_available_grounded_context_and_keep_conversation_alive"},"unknowns":["tenant","route","source_targets_until_repository_resolution","release_targets_until_changed_paths","deadline"],"authority":{"outcome":"current_explicit_owner_request","tactics":"live_prime_truth","unknownPolicy":"preserve_unknown_never_invent","historicalContext":"advisory_unless_current_request_confirms"},"execution":{"mutation":true,"concurrency":"serialize_overlapping_mutations","scopePolicy":"start_bounded_expand_only_with_machine_readable_dependency_evidence","staleStatePolicy":"refresh_dynamic_state_before_irreversible_or_acceptance_stage","conversationIsolation":true,"ownerOutcomeMayBeChangedByAdaptation":false},"experience":{"visual":true,"viewports":["desktop","mobile"],"behavioral":true,"visualProofScope":"targeted"},"dependencies":{"requiredDomains":["frontend","backend_runtime","schema_data_storage","provider_configuration","release_ownership","live_production_proof"],"capabilityDomains":["frontend","backend_runtime","schema_data_storage","authentication_authorization","provider_configuration","prerequisite_loading_empty_error_states","release_ownership","live_production_proof"],"releaseTargetHints":[]},"inputSignals":{"rawUtterance":"Build KNOCKLAUNCH GodMode Shadow Tenant Data v3 as a platform primitive.\n\nOwner outcome: when a GodMode operator enters any tenant without explicit real-user impersonation/support projection, the tenant must behave like a fully populated real workspace using synthetic data. Nothing data-bearing should fall short of the real tenant owner/user experience.\n\nRequired platform behavior:\n1. Upgrade the current GodMode tenant demo store from contacts/tasks/calendar/mail only to a versioned shadow tenant dataset with linked realistic records for at least:\n   - contacts/leads/customers and notes\n   - proposals/agreements/contracts/e-sign state\n   - invoices/estimates/payments/receivables\n   - documents/files/evidence\n   - jobs/work orders/bookings\n   - opportunities/pipeline state\n   - tasks/jots/notes\n   - calendar/appointments/events\n   - mail inbox/sent/drafts/threads\n   - team members/invitations/roles\n   - notifications/activity/history\n   - reports/analytics source facts derived from the above\n2. All seeded records must be internally marked synthetic and relationally linked (contact -> proposal/agreement -> invoice/payment -> document/job/appointment/activity) so detail views and cross-navigation work.\n3. Add one generic shadow-data repository API supporting list/get/create/update/delete, bulk update/delete/archive/restore/assign, merge/replace import, reseed/reset, and relationship-safe ID preservation.\n4. Add import/export:\n   - export entire shadow tenant as versioned JSON\n   - export any collection as CSV\n   - import versioned JSON with merge or replace\n   - import CSV into a selected collection with field/header normalization and deterministic IDs\n   - imports must validate tenant/demo schema, preserve links where possible, report accepted/rejected rows, and never mutate production/provider data\n5. The existing GodMode Demo Data badge becomes a compact shadow-data control drawer/modal (not a separate app) showing collection counts and controls for reset, JSON export/import, and per-collection CSV import/export.\n6. Actual tenant app workflows must use the shadow repository in demo mode, with no provider/database writes, for the current shared data owners:\n   - Contacts/UnifiedManagement including import and bulk actions\n   - UniversalProposalWorkspace/proposalEngine including draft/edit/send-for-signature/approve/decline and demo operating contracts/agreements\n   - Documents/agreements and signed/pending agreement views\n   - Invoices/Payments via InvoicesTab/documents API boundary\n   - Jobs/Work Orders via JobTracker\n   - Opportunity Radar\n   - Team members/invitations\n   - existing Tasks, Calendar, Mail adapters\n7. Explicit real-user impersonation/read_only_support_access and ordinary tenant users must retain real production paths. Demo mode must never call production write endpoints/providers for covered actions.\n8. Reports/analytics in demo mode must see populated synthetic source data or derived demo metrics rather than empty production queries.\n9. Add a demo coverage registry/contract for first-class data-bearing application IDs. If a new data-bearing first-class tenant app is added without a shadow-data adapter, Gate must fail. Non-data creative/config-only surfaces may be explicitly exempted.\n10. Preserve the real tenant UI, routes, branding, search/filter/sort/detail navigation. This is data substitution, not a parallel demo application.\n11. Preserve existing tenant isolation, protected route behavior, and legitimate explicit support access.\n\nAcceptance:\n- Canonical Gate passes.\n- Auto-merge and release affected frontend.\n- Prove live in Tennex normal GodMode tenant mode (NOT read_only_support_access): Contacts populated; Proposals has seeded proposal/agreement; Documents/Agreements has seeded pending/signed agreement or linked contract; Invoices has seeded invoice/payment; Tasks and Calendar remain populated; demo manager can export JSON and CSV and import a CSV contact row that appears in Contacts.\n- Prove explicit","canonicalIntent":"Build KNOCKLAUNCH GodMode Shadow Tenant Data v3 as a platform primitive.\n\nOwner outcome: when a GodMode operator enters any tenant without explicit real-user impersonation/support projection, the tenant must behave like a fully populated real workspace using synthetic data. Nothing data-bearing should fall short of the real tenant owner/user experience.\n\nRequired platform behavior:\n1. Upgrade the current GodMode tenant demo store from contacts/tasks/calendar/mail only to a versioned shadow tenant dataset with linked realistic records for at least:\n   - contacts/leads/customers and notes\n   - proposals/agreements/contracts/e-sign state\n   - invoices/estimates/payments/receivables\n   - documents/files/evidence\n   - jobs/work orders/bookings\n   - opportunities/pipeline state\n   - tasks/jots/notes\n   - calendar/appointments/events\n   - mail inbox/sent/drafts/threads\n   - team members/invitations/roles\n   - notifications/activity/history\n   - reports/analytics source facts derived from the above\n2. All seeded records must be internally marked synthetic and relationally linked (contact -> proposal/agreement -> invoice/payment -> document/job/appointment/activity) so detail views and cross-navigation work.\n3. Add one generic shadow-data repository API supporting list/get/create/update/delete, bulk update/delete/archive/restore/assign, merge/replace import, reseed/reset, and relationship-safe ID preservation.\n4. Add import/export:\n   - export entire shadow tenant as versioned JSON\n   - export any collection as CSV\n   - import versioned JSON with merge or replace\n   - import CSV into a selected collection with field/header normalization and deterministic IDs\n   - imports must validate tenant/demo schema, preserve links where possible, report accepted/rejected rows, and never mutate production/provider data\n5. The existing GodMode Demo Data badge becomes a compact shadow-data control drawer/modal (not a separate app) showing collection counts and controls for reset, JSON export/import, and per-collection CSV import/export.\n6. Actual tenant app workflows must use the shadow repository in demo mode, with no provider/database writes, for the current shared data owners:\n   - Contacts/UnifiedManagement including import and bulk actions\n   - UniversalProposalWorkspace/proposalEngine including draft/edit/send-for-signature/approve/decline and demo operating contracts/agreements\n   - Documents/agreements and signed/pending agreement views\n   - Invoices/Payments via InvoicesTab/documents API boundary\n   - Jobs/Work Orders via JobTracker\n   - Opportunity Radar\n   - Team members/invitations\n   - existing Tasks, Calendar, Mail adapters\n7. Explicit real-user impersonation/read_only_support_access and ordinary tenant users must retain real production paths. Demo mode must never call production write endpoints/providers for covered actions.\n8. Reports/analytics in demo mode must see populated synthetic source data or derived demo metrics rather than empty production queries.\n9. Add a demo coverage registry/contract for first-class data-bearing application IDs. If a new data-bearing first-class tenant app is added without a shadow-data adapter, Gate must fail. Non-data creative/config-only surfaces may be explicitly exempted.\n10. Preserve the real tenant UI, routes, branding, search/filter/sort/detail navigation. This is data substitution, not a parallel demo application.\n11. Preserve existing tenant isolation, protected route behavior, and legitimate explicit support access.\n\nAcceptance:\n- Canonical Gate passes.\n- Auto-merge and release affected frontend.\n- Prove live in Tennex normal GodMode tenant mode (NOT read_only_support_access): Contacts populated; Proposals has seeded proposal/agreement; Documents/Agreements has seeded pending/signed agreement or linked contract; Invoices has seeded invoice/payment; Tasks and Calendar remain populated; demo manager can export JSON and CSV and import a CSV contact row that appears in Contacts.\n- Prove explicit","conversationContextPresent":false}},"terminalPolicy":"all_required_proof_conditions_satisfied_after_live_release","proofConditions":[{"id":"contacts","kind":"runtime","claim":"Tennex GodMode Contacts uses populated shadow records.","route":"/tennex-tax-solutions/contacts","roleRef":"GodMode","userRef":null,"required":true,"expectedText":"Jamie Rivera","targetedActions":[],"allowedReleaseTargets":["frontend"],"requiredReleaseTargets":["frontend"],"requireCapacityAdmissible":false,"expectedWatchdogPolicyVersion":null,"minConsecutiveHealthyHeartbeats":1,"requirePositiveMemoryAttribution":false,"requireMemoryAdmissionPressureFalse":false},{"id":"proposal","kind":"runtime","claim":"Tennex GodMode proposal workspace contains a seeded synthetic proposal and editable/send-for-signature actions remain synthetic.","route":null,"roleRef":"GodMode","userRef":null,"required":true,"expectedText":null,"targetedActions":[],"allowedReleaseTargets":["frontend"],"requiredReleaseTargets":["frontend"],"requireCapacityAdmissible":false,"expectedWatchdogPolicyVersion":null,"minConsecutiveHealthyHeartbeats":1,"requirePositiveMemoryAttribution":false,"requireMemoryAdmissionPressureFalse":false},{"id":"agreement","kind":"runtime","claim":"Tennex GodMode documents/agreements surface contains linked synthetic agreement/contract data.","route":null,"roleRef":"GodMode","userRef":null,"required":true,"expectedText":null,"targetedActions":[],"allowedReleaseTargets":["frontend"],"requiredReleaseTargets":["frontend"],"requireCapacityAdmissible":false,"expectedWatchdogPolicyVersion":null,"minConsecutiveHealthyHeartbeats":1,"requirePositiveMemoryAttribution":false,"requireMemoryAdmissionPressureFalse":false},{"id":"invoice","kind":"runtime","claim":"Tennex GodMode invoices/payments surface contains linked synthetic invoice/payment data.","route":null,"roleRef":"GodMode","userRef":null,"required":true,"expectedText":null,"targetedActions":[],"allowedReleaseTargets":["frontend"],"requiredReleaseTargets":["frontend"],"requireCapacityAdmissible":false,"expectedWatchdogPolicyVersion":null,"minConsecutiveHealthyHeartbeats":1,"requirePositiveMemoryAttribution":false,"requireMemoryAdmissionPressureFalse":false},{"id":"import-export","kind":"runtime","claim":"GodMode shadow-data manager exports JSON/CSV and imports a CSV contact row into the same tenant shadow dataset.","route":"/tennex-tax-solutions/contacts","roleRef":"GodMode","userRef":null,"required":true,"expectedText":null,"targetedActions":[],"allowedReleaseTargets":["frontend"],"requiredReleaseTargets":["frontend"],"requireCapacityAdmissible":false,"expectedWatchdogPolicyVersion":null,"minConsecutiveHealthyHeartbeats":1,"requirePositiveMemoryAttribution":false,"requireMemoryAdmissionPressureFalse":false},{"id":"support","kind":"runtime","claim":"Explicit real-user support projection disables shadow data and uses the real-data path.","route":null,"roleRef":"GodMode","userRef":null,"required":true,"expectedText":null,"targetedActions":[],"allowedReleaseTargets":["frontend"],"requiredReleaseTargets":["frontend"],"requireCapacityAdmissible":false,"expectedWatchdogPolicyVersion":null,"minConsecutiveHealthyHeartbeats":1,"requirePositiveMemoryAttribution":false,"requireMemoryAdmissionPressureFalse":false}],"validationErrors":[],"capabilityManifest":{"id":"Build-KNOCKLAUNCH-GodMode-Shadow-Tenant-Data-v3-as-a-platform-primitive.-Owner-outcome:-when-a-GodMo","driftPolicy":"exact_manifest_source_release_dependency_or_runtime_identity_mismatch_is_nonterminal","proofLedger":"command_center_mission_ledger_request_contract_hash_bound","schemaVersion":1,"releaseTargets":["frontend"],"lifecycleStates":["prepare","deploy","verify","activate"],"activationPolicy":"dependencies_and_claim_matched_live_proof_before_exposure","dependencyDomains":["frontend","backend_runtime","schema_data_storage","authentication_authorization","provider_configuration","prerequisite_loading_empty_error_states","release_ownership","live_production_proof"],"prerequisitePolicy":"expected_unavailable_dependencies_are_prerequisite_required_not_runtime_failures","compatibilityWindow":["N","N-1"],"failureIsolationPolicy":"quarantine_or_rollback_affected_capability_only_preserve_unrelated_working_capabilities","canaryProofConditionIds":["contacts","proposal","agreement","invoice","import-export","support"]},"capabilityCompleteness":{"domains":["frontend","backend_runtime","schema_data_storage","authentication_authorization","provider_configuration","prerequisite_loading_empty_error_states","release_ownership","live_production_proof"],"required":true,"prerequisitePolicy":"expected_unavailable_dependencies_are_prerequisite_states_not_runtime_failures"}},"requestContractHash":"24a20d309ffbb1376f0a3522394032dce7bf444af8d90855cee0a7baa2923e7a","requestContractRevision":2,"previousRequestContractHash":"f28b3e8ab8e065aa7ff43b208efabc890877b37f92cc28c6f7c450e08433aa01"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-02T02:33:01.419868+00:00","proof_gate":"request_contract_revision_recorded","source_sha":null,"external_id":null,"receipt_type":"request_contract_revision","idempotency_key":"mission:c43209cb-ca72-4870-9e03-5fc4e41d1eaa:request-contract:24a20d309ffbb1376f0a3522394032dce7bf444af8d90855cee0a7baa2923e7a","mission_step_id":"917ff471-4f14-4e7c-b9e6-c6d5e7bc5b10","command_center_event_id":"c43209cb-ca72-4870-9e03-5fc4e41d1eaa"},{"id":"bea780a3-8db7-4fe7-91e2-1f5b7b0bbf00","source":"cc-execution","status":"synthesis_required","payload":{"ok":true,"jobId":null,"phase":"objective_received","branch":"ai/objective-first-repair-a1789dfb1569","reason":null,"status":"synthesis_required","metrics":{"receiptBytes":3591,"releaseCount":0,"toolCallCount":2,"repeatedCallCount":0,"executorlessWaitMs":57918,"firstUsefulResultAt":"2026-10-03T17:54:48.685Z","recoveryAttemptCount":0,"ownerInterruptionCount":0},"version":"1.64.77-paul-heldout-repair","prNumber":null,"terminal":false,"missionId":"a1789dfb-1569-4cf6-8641-2064483c3a30","operation":"execute_mission","proofGate":"repair_mission_synthesis_ready","sourceSha":null,"timingsMs":{"gateMs":0,"proofMs":0,"handlerMs":1395,"releaseMs":0,"mutationMs":0,"repositoryMs":0,"missionSetupMs":280,"providerAuthMs":0,"ledgerPrepareMs":280,"ledgerReconcileMs":0,"lineageReconcileMs":0,"resolvePreflightMs":280,"authoritativeLedgerMs":0,"ledgerAsyncDispatchMs":0,"totalSynchronousLedgerMs":280,"asyncBookkeepingDispatchMs":0,"ledgerAuthoritativeCommitMs":0},"nextAction":"Inspect the bounded repository paths, synthesize exact files or anchored_edits, and call /mission/execute again automatically with this same missionId without another owner prompt or workflow switch.","receiptRef":{"mode":"full","missionId":"a1789dfb-1569-4cf6-8641-2064483c3a30"},"performance":null,"deploymentId":null,"releaseState":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","pendingProofKinds":["runtime"],"verificationState":null,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":3289,"likelyAffectedFiles":["src/PrivateAppShell.tsx"],"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true,"requestContractState":"pending"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-03T17:54:48.720996+00:00","proof_gate":"repair_mission_synthesis_ready","source_sha":null,"external_id":null,"receipt_type":"execute_mission","idempotency_key":"mission:a1789dfb-1569-4cf6-8641-2064483c3a30:execute_mission:repair_mission_synthesis_ready:current-generation","mission_step_id":"2834cc5b-f987-42a0-80e6-c0b7c220d3ba","command_center_event_id":"a1789dfb-1569-4cf6-8641-2064483c3a30"},{"id":"bea87863-1daf-4001-b2ba-569c61b0bdd6","source":"cc-execution","status":"waiting_for_gate","payload":{"ok":true,"jobId":null,"phase":"pull_request","branch":"ai/fix-owner-directive-control-plane-churn-20260828","reason":"pull_request_checks_pending","status":"waiting_for_gate","metrics":{"receiptBytes":8727,"releaseCount":0,"toolCallCount":5,"repeatedCallCount":0,"ownerInterruptionCount":0},"version":"1.55.0-godmode-restore-points","prNumber":901,"terminal":false,"missionId":"330fc4d0-0edb-4da7-92f5-85aa28587ef6","operation":"execute_mission","proofGate":"repair_mission_waiting_for_gate","sourceSha":null,"timingsMs":{"handlerMs":23234,"prReadinessMs":1248,"approvedPlanMs":21982,"missionSetupMs":1086,"shipAndProveMs":0},"nextAction":"Reconcile this same mission and pull request after the exact-head KnockLaunch Gate changes state.","receiptRef":{"mode":"full","missionId":"330fc4d0-0edb-4da7-92f5-85aa28587ef6"},"performance":null,"deploymentId":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":5807,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-08-28T02:13:31.613666+00:00","proof_gate":"repair_mission_waiting_for_gate","source_sha":null,"external_id":"901","receipt_type":"execute_mission","idempotency_key":"mission:330fc4d0-0edb-4da7-92f5-85aa28587ef6:execute_mission:repair_mission_waiting_for_gate:current-generation","mission_step_id":"d316bab8-a692-4b6c-848a-4abfbd931bf6","command_center_event_id":"330fc4d0-0edb-4da7-92f5-85aa28587ef6"},{"id":"beaa972c-a9d2-4f63-bb23-75b83f258c87","source":"cc-execution","status":"synthesis_required","payload":{"ok":true,"jobId":null,"phase":"objective_received","branch":"ai/objective-first-repair-ead13e6b624e","reason":null,"status":"synthesis_required","metrics":{"receiptBytes":0,"releaseCount":0,"toolCallCount":0,"repeatedCallCount":0,"executorlessWaitMs":0,"firstUsefulResultAt":null,"recoveryAttemptCount":0,"ownerInterruptionCount":0},"version":"1.64.60-paul-long-horizon-state","prNumber":null,"terminal":false,"missionId":"ead13e6b-624e-4093-ae21-ed1dbe024324","operation":"execute_mission","proofGate":"repair_mission_synthesis_ready","sourceSha":null,"timingsMs":{"gateMs":0,"proofMs":0,"handlerMs":1579,"releaseMs":0,"mutationMs":0,"repositoryMs":0,"missionSetupMs":681,"providerAuthMs":0,"ledgerPrepareMs":681,"ledgerReconcileMs":0,"lineageReconcileMs":0,"resolvePreflightMs":681,"authoritativeLedgerMs":0,"ledgerAsyncDispatchMs":0,"totalSynchronousLedgerMs":681,"asyncBookkeepingDispatchMs":0,"ledgerAuthoritativeCommitMs":0},"nextAction":"Inspect the bounded repository paths, synthesize exact files or anchored_edits, and call /mission/execute again automatically with this same missionId without another owner prompt or workflow switch.","receiptRef":{"mode":"full","missionId":"ead13e6b-624e-4093-ae21-ed1dbe024324"},"performance":null,"deploymentId":null,"releaseState":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","pendingProofKinds":[],"verificationState":null,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":4311,"likelyAffectedFiles":["workers/cc-execution/src/platform-sidekick-intelligence.js","workers/cc-execution/src/version.js"],"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true,"requestContractState":"pending"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-03T00:33:48.12369+00:00","proof_gate":"repair_mission_synthesis_ready","source_sha":null,"external_id":null,"receipt_type":"execute_mission","idempotency_key":"mission:ead13e6b-624e-4093-ae21-ed1dbe024324:execute_mission:repair_mission_synthesis_ready:current-generation","mission_step_id":"9e8c1bc0-0c57-4024-85e0-a93fa119dec2","command_center_event_id":"ead13e6b-624e-4093-ae21-ed1dbe024324"},{"id":"beaeae24-db1e-4330-b816-e5888737ec3a","source":"cc-execution","status":"recorded","payload":{"requestContract":{"valid":true,"intent":{"evidence":[],"confidence":null,"rawUtterance":"Continue the exact atomic-new-branch mission on PR #1679 now that the exact-head KnockLaunch Gate is green. Squash merge the same PR, release cc-execution 1.58.38-atomic-new-branch-refreeze on the exact merged SHA, verify live runtime, benchmark the first fresh mutation with repositoryBranchCreateMs=0, then refreeze.","wordingChanged":false,"canonicalIntent":"Continue the exact atomic-new-branch mission on PR #1679 now that the exact-head KnockLaunch Gate is green. Squash merge the same PR, release cc-execution 1.58.38-atomic-new-branch-refreeze on the exact merged SHA, verify live runtime, benchmark the first fresh mutation with repositoryBranchCreateMs=0, then refreeze.","resolutionStatus":"exact","uniqueResolution":true,"clarificationRequired":false},"source":"explicit","version":1,"outcomes":[{"id":"atomic-new-branch","statement":"Fresh repository mutations create the target branch from canonical main inside the atomic contents write, eliminating the separate branch-create provider round trip.","proofConditionIds":["repo","runtime"]},{"id":"existing-branch-safety","statement":"Existing branch writes remain unchanged and never send new_branch.","proofConditionIds":["repo"]},{"id":"collision-safety","statement":"Branch-exists races, source movement, and ambiguous writes fail closed or reconcile exact state without blind write retry.","proofConditionIds":["repo","runtime"]},{"id":"telemetry","statement":"Fresh mutation telemetry reports repositoryBranchCreateMs=0 and branchCreationMode=atomic_new_branch while combined branch+commit cost is attributed to atomic commit.","proofConditionIds":["repo","runtime"]},{"id":"refreeze","statement":"cc-execution 1.58.38-atomic-new-branch-refreeze is live on the exact merged SHA and control-plane maintenance is refrozen.","proofConditionIds":["runtime","refrozen"]}],"objective":"Continue the exact atomic-new-branch mission on PR #1679 now that the exact-head KnockLaunch Gate is green. Squash merge the same PR, release cc-execution 1.58.38-atomic-new-branch-refreeze on the exact merged SHA, verify live runtime, benchmark the first fresh mutation with repositoryBranchCreateMs=0, then refreeze.","constraints":[{"id":"hard-safety","statement":"Preserve exact-source freshness, branch isolation, anchored-edit validation, one branch/PR/Gate/squash merge/release, no blind write retries, and canonical release ownership.","proofConditionIds":["repo","runtime"]}],"terminalPolicy":"all_required_proof_conditions_satisfied_after_live_release","proofConditions":[{"id":"repo","kind":"repository","claim":"Source and regression coverage prove atomic new_branch semantics for fresh writes, unchanged existing-branch behavior, and fail-closed collisions/source movement.","route":null,"roleRef":null,"userRef":null,"required":true,"expectedText":null,"targetedActions":[],"allowedReleaseTargets":[],"requiredReleaseTargets":[]},{"id":"runtime","kind":"runtime","claim":"cc-execution 1.58.38 is live on the exact merged SHA and a representative fresh mutation reports zero separate branch-create latency.","route":null,"roleRef":null,"userRef":null,"required":true,"expectedText":null,"targetedActions":[],"allowedReleaseTargets":[],"requiredReleaseTargets":["ccExecution"]},{"id":"refrozen","kind":"runtime","claim":"Control-plane maintenance is refrozen after terminal proof.","route":null,"roleRef":null,"userRef":null,"required":true,"expectedText":null,"targetedActions":[],"allowedReleaseTargets":[],"requiredReleaseTargets":["ccExecution"]}],"validationErrors":[]},"requestContractHash":"65a2173eea3e3d80e9d9e28543d12d49912720233911d939732e1f04858009ec","requestContractRevision":10,"previousRequestContractHash":"07da5f4d6fbdc0c6a41a3884865e0eb3cceed1eda013a38bc4058a2748b66e2f"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-04T12:24:36.131211+00:00","proof_gate":"request_contract_revision_recorded","source_sha":null,"external_id":null,"receipt_type":"request_contract_revision","idempotency_key":"mission:445c8fa0-9216-46ef-b17b-b6e94a9c4e00:request-contract:65a2173eea3e3d80e9d9e28543d12d49912720233911d939732e1f04858009ec","mission_step_id":"a3d46cda-3ca8-4fb5-8092-d4154fa9ed3e","command_center_event_id":"445c8fa0-9216-46ef-b17b-b6e94a9c4e00"},{"id":"beb03476-1442-4c1d-95bb-d217eb2b8033","source":"forgejo","status":"waiting","payload":{"branch":"ai/premium-sce-route-redesign","prNumber":4052,"nextAction":null,"mergeCommitSha":"f2818120cc58b59f7c4373aa57b7b3b85713f58b","branchDeletedAfterMerge":true,"correctiveGenerationCreated":false},"tenant_id":"c55998b4-82a3-467e-8d35-177bb4785f6e","created_at":"2026-10-03T20:35:35.300316+00:00","proof_gate":"forgejo_merged_pr_is_authoritative_source_lineage","source_sha":"f2818120cc58b59f7c4373aa57b7b3b85713f58b","external_id":"4052","receipt_type":"source_lineage_merged_pr_authoritative","idempotency_key":"mission:d0179f06-5a63-4f59-b60e-20eaa17e438f:merged-pr:4052:f2818120cc58b59f7c4373aa57b7b3b85713f58b","mission_step_id":"c70f49ce-a501-4c1b-8e61-d7fa2f9cdcfd","command_center_event_id":"d0179f06-5a63-4f59-b60e-20eaa17e438f"},{"id":"beb136df-bede-4479-9dfa-413d76278d69","source":"forgejo","status":"waiting","payload":{"branch":"ai/objective-first-repair-d52471e5e1c1","prNumber":4953,"nextAction":"Follow the existing canonical release to terminal proof.","mergeCommitSha":"0030ca86c43987e8189c2fb8f1e8633a14e18dab","branchDeletedAfterMerge":true,"correctiveGenerationCreated":false},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-05T15:38:18.019361+00:00","proof_gate":"forgejo_merged_pr_is_authoritative_source_lineage","source_sha":"0030ca86c43987e8189c2fb8f1e8633a14e18dab","external_id":"4953","receipt_type":"source_lineage_merged_pr_authoritative","idempotency_key":"mission:d52471e5-e1c1-44ae-8faf-de1afc1ee69f:merged-pr:4953:0030ca86c43987e8189c2fb8f1e8633a14e18dab","mission_step_id":"06d9a003-f88a-4f47-9446-1d5463d1a6b0","command_center_event_id":"d52471e5-e1c1-44ae-8faf-de1afc1ee69f"},{"id":"beb289ac-a3da-4ffe-ab0a-5e53aeee344b","source":"cc-execution","status":"waiting_for_gate","payload":{"ok":true,"jobId":null,"phase":"pull_request","branch":"ai/objective-first-repair-c297ae724804","reason":"pull_request_checks_pending","status":"waiting_for_gate","metrics":{"receiptBytes":0,"releaseCount":0,"toolCallCount":0,"repeatedCallCount":0,"ownerInterruptionCount":0},"version":null,"prNumber":3445,"terminal":false,"missionId":"c297ae72-4804-43b4-adc5-a7816f848242","operation":"automatic_mission_resume","proofGate":"repair_mission_waiting_for_gate","sourceSha":null,"timingsMs":{"prReadinessMs":1386,"approvedPlanMs":0,"shipAndProveMs":0,"repositoryMutationMs":0,"repositoryProviderMs":0,"repositoryAtomicCommitMs":0,"repositoryBranchCreateMs":0,"repositoryPullRequestCreateMs":0},"nextAction":"Reconcile this same mission and pull request after the exact-head KnockLaunch Gate changes state.","receiptRef":{"mode":"full","missionId":"c297ae72-4804-43b4-adc5-a7816f848242"},"performance":null,"deploymentId":null,"releaseState":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","pendingProofKinds":[],"verificationState":null,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":1286,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true,"requestContractState":"pending"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-22T16:48:47.252106+00:00","proof_gate":"repair_mission_waiting_for_gate","source_sha":null,"external_id":"3445","receipt_type":"automatic_mission_resume","idempotency_key":"mission:c297ae72-4804-43b4-adc5-a7816f848242:automatic-mission-resume:3445:repair_mission_waiting_for_gate","mission_step_id":"5b272d69-817f-489b-9179-9d4123fdff16","command_center_event_id":"c297ae72-4804-43b4-adc5-a7816f848242"},{"id":"beb3357a-ad35-4691-ae6d-07893e57f67e","source":"cc-execution","status":"waiting_for_gate","payload":{"ok":true,"jobId":null,"phase":"implementation","branch":"ai/objective-first-repair-52ac1fafca13","reason":"provider_verified_auto_progress_owns_gate_merge_release_outside_owner_response","status":"waiting_for_gate","metrics":{"receiptBytes":10253,"releaseCount":0,"toolCallCount":2,"repeatedCallCount":0,"executorlessWaitMs":26663,"firstUsefulResultAt":"2026-09-26T10:21:35.612Z","recoveryAttemptCount":0,"ownerInterruptionCount":0},"version":"1.58.284-control-plane-source-fast-path","prNumber":3793,"terminal":false,"missionId":"52ac1faf-ca13-46ca-88eb-4c876681f35e","operation":"execute_mission","proofGate":"repair_mission_pr_handed_off_to_supervisor","sourceSha":null,"timingsMs":{"gateMs":0,"proofMs":0,"handlerMs":4328,"releaseMs":0,"mutationMs":0,"repositoryMs":0,"prReadinessMs":0,"approvedPlanMs":1604,"missionSetupMs":289,"providerAuthMs":0,"shipAndProveMs":0,"ledgerPrepareMs":289,"ledgerReconcileMs":0,"lineageReconcileMs":0,"resolvePreflightMs":289,"repositoryMutationMs":2724,"repositoryProviderMs":2724,"authoritativeLedgerMs":0,"ledgerAsyncDispatchMs":0,"repositoryAtomicCommitMs":1718,"repositoryBranchCreateMs":0,"totalSynchronousLedgerMs":289,"asyncBookkeepingDispatchMs":0,"ledgerAuthoritativeCommitMs":0,"repositoryPullRequestCreateMs":1006},"nextAction":"Canonical KnockLaunch Gate notifier and durable mission supervisor own Gate, merge, release, and proof progression from this exact PR head outside the owner response path.","receiptRef":{"mode":"full","missionId":"52ac1faf-ca13-46ca-88eb-4c876681f35e"},"performance":null,"deploymentId":null,"releaseState":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","pendingProofKinds":["runtime"],"verificationState":null,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":3826,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true,"requestContractState":"pending"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-26T10:22:07.405227+00:00","proof_gate":"repair_mission_pr_handed_off_to_supervisor","source_sha":null,"external_id":"3793","receipt_type":"execute_mission","idempotency_key":"mission:52ac1faf-ca13-46ca-88eb-4c876681f35e:execute_mission:repair_mission_pr_handed_off_to_supervisor:current-generation","mission_step_id":"7ca769e2-3a73-4aff-b02e-3c00c0ada815","command_center_event_id":"52ac1faf-ca13-46ca-88eb-4c876681f35e"},{"id":"beb4734a-9afe-4b77-aa64-4a40282e6b7d","source":"cc-execution","status":"source_resolution_required","payload":{"ok":true,"jobId":null,"phase":"objective_received","branch":null,"reason":null,"status":"source_resolution_required","metrics":{"receiptBytes":0,"releaseCount":0,"toolCallCount":0,"repeatedCallCount":0,"executorlessWaitMs":0,"firstUsefulResultAt":null,"recoveryAttemptCount":0,"ownerInterruptionCount":0},"version":"1.58.287-console-service-binding","prNumber":null,"terminal":false,"missionId":"6f358eaf-c680-402f-9eea-7d7c8cce9f03","operation":"execute_mission","proofGate":"repair_mission_source_resolution_required","sourceSha":null,"timingsMs":{"gateMs":0,"proofMs":0,"handlerMs":1201,"releaseMs":0,"mutationMs":0,"repositoryMs":0,"missionSetupMs":358,"providerAuthMs":0,"ledgerPrepareMs":358,"ledgerReconcileMs":0,"lineageReconcileMs":0,"resolvePreflightMs":358,"authoritativeLedgerMs":0,"ledgerAsyncDispatchMs":0,"totalSynchronousLedgerMs":358,"asyncBookkeepingDispatchMs":0,"ledgerAuthoritativeCommitMs":0},"nextAction":"Supply exact sourceTargets on the same mission; planner guesses cannot replace missing mission scope.","receiptRef":{"mode":"full","missionId":"6f358eaf-c680-402f-9eea-7d7c8cce9f03"},"performance":null,"deploymentId":null,"releaseState":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","pendingProofKinds":[],"verificationState":null,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":1177,"likelyAffectedFiles":[],"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true,"requestContractState":"pending"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-26T19:35:23.496555+00:00","proof_gate":"repair_mission_source_resolution_required","source_sha":null,"external_id":null,"receipt_type":"execute_mission","idempotency_key":"mission:6f358eaf-c680-402f-9eea-7d7c8cce9f03:execute_mission:repair_mission_source_resolution_required:current-generation","mission_step_id":"31e8a373-817f-40b2-848f-de3743dcd20c","command_center_event_id":"6f358eaf-c680-402f-9eea-7d7c8cce9f03"},{"id":"beb62bb6-b2a9-4f3a-bc6e-d2a27b7ee964","source":"cc-execution","status":"blocked","payload":{"reason":"control_plane_maintenance_request_contract_required","fingerprint":"eba4dcf36d950979d289cc53b6c83f4ec00f16580038aba27012804cc2861fed"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-24T20:45:57.380228+00:00","proof_gate":"repository_mutation_intent_deterministic_failure","source_sha":null,"external_id":null,"receipt_type":"repository_mutation_intent_blocked","idempotency_key":"mission:10086c0f-dc37-47cd-9d69-6bfc4878489a:repository-mutation-intent-blocked:eba4dcf36d950979d289cc53b6c83f4ec00f16580038aba27012804cc2861fed","mission_step_id":"a661a61b-03a7-4973-a7c7-e26fb9bbd751","command_center_event_id":"10086c0f-dc37-47cd-9d69-6bfc4878489a"},{"id":"beb71d7a-78d8-461a-9a73-38086c93e91e","source":"cc-execution","status":"source_resolution_required","payload":{"ok":true,"jobId":null,"phase":"objective_received","branch":"ai/objective-first-repair-3efcf1feb362","reason":null,"status":"source_resolution_required","metrics":{"receiptBytes":0,"releaseCount":0,"toolCallCount":0,"repeatedCallCount":0,"ownerInterruptionCount":0},"version":"1.58.177-tenant-source-scope","prNumber":null,"terminal":false,"missionId":"3efcf1fe-b362-419f-9cf6-ef15e1eda3fe","operation":"execute_mission","proofGate":"repair_mission_source_resolution_required","sourceSha":null,"timingsMs":{"gateMs":0,"proofMs":0,"handlerMs":538,"releaseMs":0,"mutationMs":0,"repositoryMs":0,"missionSetupMs":2196,"providerAuthMs":0,"ledgerPrepareMs":2196,"ledgerReconcileMs":0,"lineageReconcileMs":0,"resolvePreflightMs":2196,"authoritativeLedgerMs":0,"ledgerAsyncDispatchMs":0,"totalSynchronousLedgerMs":2196,"asyncBookkeepingDispatchMs":0,"ledgerAuthoritativeCommitMs":0},"nextAction":"Resolve bounded authoritative Forgejo source targets, then call /mission/execute again with this same missionId and exact files or anchored_edits. Do not switch workflows.","receiptRef":{"mode":"full","missionId":"3efcf1fe-b362-419f-9cf6-ef15e1eda3fe"},"performance":null,"deploymentId":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":4604,"likelyAffectedFiles":[],"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-17T14:31:27.951981+00:00","proof_gate":"repair_mission_source_resolution_required","source_sha":null,"external_id":null,"receipt_type":"execute_mission","idempotency_key":"mission:3efcf1fe-b362-419f-9cf6-ef15e1eda3fe:execute_mission:repair_mission_source_resolution_required:current-generation","mission_step_id":"e06b1fe9-8a31-457a-99bd-2cd44ac3c1d3","command_center_event_id":"3efcf1fe-b362-419f-9cf6-ef15e1eda3fe"},{"id":"beb9dbfd-7000-4bcc-8587-ebc6bc2edd73","source":"cc-execution","status":"retryable","payload":{"ok":false,"jobId":null,"phase":"pull_request","branch":"ai/objective-first-repair-5296af7648d5","reason":"retryable_provider_transport:POST:The operation was aborted due to timeout","status":"retryable","metrics":{"receiptBytes":0,"releaseCount":0,"toolCallCount":0,"repeatedCallCount":0,"ownerInterruptionCount":0},"version":"1.58.151-mission-create-single-rpc","prNumber":null,"terminal":false,"missionId":"5296af76-48d5-465a-ba28-f77eb9c78f5c","operation":"execute_mission","proofGate":"repair_mission_execution_retryable","sourceSha":null,"timingsMs":{"gateMs":0,"proofMs":0,"handlerMs":27415,"releaseMs":0,"mutationMs":0,"repositoryMs":0,"prReadinessMs":0,"approvedPlanMs":0,"missionSetupMs":2966,"providerAuthMs":0,"shipAndProveMs":0,"ledgerPrepareMs":2478,"ledgerReconcileMs":0,"lineageReconcileMs":488,"resolvePreflightMs":2966,"repositoryMutationMs":27415,"repositoryProviderMs":0,"authoritativeLedgerMs":0,"ledgerAsyncDispatchMs":0,"repositoryAtomicCommitMs":0,"repositoryBranchCreateMs":0,"totalSynchronousLedgerMs":2478,"asyncBookkeepingDispatchMs":0,"ledgerAuthoritativeCommitMs":0,"repositoryPullRequestCreateMs":0},"nextAction":null,"receiptRef":{"mode":"full","missionId":"5296af76-48d5-465a-ba28-f77eb9c78f5c"},"performance":null,"deploymentId":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":1560,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-15T15:58:28.081426+00:00","proof_gate":"repair_mission_execution_retryable","source_sha":null,"external_id":null,"receipt_type":"execute_mission","idempotency_key":"mission:5296af76-48d5-465a-ba28-f77eb9c78f5c:execute_mission:repair_mission_execution_retryable:current-generation","mission_step_id":"4b934784-272b-48ce-83f7-733610a07571","command_center_event_id":"5296af76-48d5-465a-ba28-f77eb9c78f5c"},{"id":"bebb6d83-6b21-4487-bd95-0418bc40fcdb","source":"cc-execution","status":"waiting","payload":{"body":{"ship":true,"files":[{"path":"workers/cc-execution/src/source-discovery-policy.js","content":"import { classifyObjectiveIntent } from \"./objective-intent.js\";\n\nconst NEGATED_SOURCE_CLAUSE = /\\b(?:do\\s+not|don't|dont|never|exclude|excluding|avoid|without)\\b[\\s\\S]*?(?=\\b(?:but|except|instead)\\b|[.;\\n]|$)/gi;\nconst SOURCE_PATH_TOKEN = /(?:^|[\\s`'\"([{])((?:src|workers|supabase|config|scripts|\\.forgejo)\\/[a-zA-Z0-9._/-]+)/g;\nconst CONTROL_PLANE_SOURCE_NOUN = /\\b(?:control[-\\s]?plane|command center|source discovery|repair plan|mission control|merge queue|forgejo\\s+(?:runner|workflow|gate|actions|queue)|runner setup|knocklaunch gate|release architecture)\\b/i;\n\nfunction normalizedSourceScope(value) {\n  const normalized = String(value || \"\").trim().toLowerCase().replace(/[- ]/g, \"_\");\n  return normalized === \"control_plane\" || normalized === \"general\" ? normalized : \"\";\n}\n\nexport function authoritativeSourceScope(request = {}) {\n  const contract = request.requestContract && typeof request.requestContract === \"object\"\n    ? request.requestContract\n    : request.request_contract && typeof request.request_contract === \"object\"\n      ? request.request_contract\n      : {};\n  return normalizedSourceScope(contract.sourceScope || contract.source_scope)\n    || normalizedSourceScope(request.sourceScope || request.source_scope);\n}\n\nexport function sourceDiscoveryScope(value, request = {}) {\n  const explicitScope = authoritativeSourceScope(request);\n  const contract = request.requestContract && typeof request.requestContract === \"object\"\n    ? request.requestContract\n    : request.request_contract && typeof request.request_contract === \"object\"\n      ? request.request_contract\n      : {};\n  const targets = [\n    request.sourceTargets,\n    request.source_targets,\n    request.readTargets,\n    request.read_targets,\n    contract.sourceTargets,\n    contract.source_targets,\n    contract.readTargets,\n    contract.read_targets,\n  ]\n    .flatMap((entries) => Array.isArray(entries) ? entries : [])\n    .map((entry) => typeof entry === \"string\" ? entry : String(entry?.path || \"\"));\n\n  if (explicitScope) return explicitScope;\n  if (request.controlPlaneMaintenance === true || request.control_plane_maintenance === true\n    || (targets.length > 0 && targets.every(isControlPlaneSourcePath))) return \"control_plane\";\n\n  const positiveIntent = positiveSourceIntent(value);\n  if (!CONTROL_PLANE_SOURCE_NOUN.test(positiveIntent)) return \"general\";\n  const intent = classifyObjectiveIntent({ ...request, objective: String(value || \"\") });\n  if (intent.kind === \"read_only\") return \"control_plane\";\n  const repairIntent = /\\b(?:fix|repair|improve|harden|refactor|change|update|modify|implement)\\b/i.test(positiveIntent);\n  const incidentalToolUse = /\\b(?:through|via|using|use)\\s+(?:the\\s+)?(?:command center|control[- ]plane)\\b/i.test(positiveIntent);\n  return repairIntent && !incidentalToolUse ? \"control_plane\" : \"general\";\n}\n\nexport function readOnlySourceDiscoveryRequest(body = {}, objective = \"\", repository, ref = \"main\") {\n  return {\n    repository,\n    system: \"KNOCKLAUNCH\",\n    issue: objective || \"Read-only repository inspection\",\n    objective,\n    ref,\n    readOnly: true,\n    sourceScope: sourceDiscoveryScope(objective, body),\n  };\n}\n\nexport function isControlPlaneSourcePath(path) {\n  const normalized = String(path || \"\").trim();\n  return normalized.startsWith(\"workers/cc-execution/\")\n    || normalized === \"config/control-plane-capabilities.json\"\n    || normalized === \"config/control-plane-restore-point.json\"\n    || normalized.startsWith(\".forgejo/workflows/\")\n    || normalized === \"scripts/protected-main-release-recovery.mjs\"\n    || normalized === \"scripts/validate-command-center-contracts.mjs\"\n    || normalized.startsWith(\"scripts/command-center-host-agent/\")\n    || normalized.startsWith(\"src/__tests__/contracts/command-center-\")\n    || normalized.startsWith(\"src/__tests__/contracts/control-plane-\")\n    || normalized.startsWith(\"src/__tests__/commandCenter/\");\n}\n\nfunction stripIncidentalControlPlaneSourceReferences(value) {\n  return String(value || \"\").replace(SOURCE_PATH_TOKEN, (match, path) => (\n    isControlPlaneSourcePath(path) ? match.replace(path, \" \") : match\n  ));\n}\n\nexport function positiveSourceIntent(value) {\n  const positive = String(value || \"\")\n    .replace(NEGATED_SOURCE_CLAUSE, \" \");\n  return stripIncidentalControlPlaneSourceReferences(positive)\n    .replace(/\\s+/g, \" \")\n    .trim();\n}\n\nexport function sourcePathAllowedForDiscoveredScope(path, scope) {\n  const controlPlaneSource = isControlPlaneSourcePath(path);\n  if (scope === \"control_plane_authorization_required\") return false;\n  return scope === \"control_plane\" ? controlPlaneSource : !controlPlaneSource;\n}\n"},{"path":"workers/cc-execution/test/source-discovery-policy.test.js","content":"import test from \"node:test\";\nimport assert from \"node:assert/strict\";\nimport {\n  authoritativeSourceScope,\n  readOnlySourceDiscoveryRequest,\n  sourceDiscoveryScope,\n} from \"../src/source-discovery-policy.js\";\n\ntest(\"canonical request contract sourceScope survives downstream handoff\", () => {\n  const request = { scope: \"platform\", requestContract: { sourceScope: \"control-plane\" } };\n  assert.equal(authoritativeSourceScope(request), \"control_plane\");\n  assert.equal(sourceDiscoveryScope(\"Repair execution reliability platform-wide\", request), \"control_plane\");\n});\n\ntest(\"canonical request contract sourceScope wins over conflicting duplicated handler field\", () => {\n  const request = { sourceScope: \"general\", requestContract: { sourceScope: \"control-plane\" } };\n  assert.equal(sourceDiscoveryScope(\"Repair the request contract\", request), \"control_plane\");\n});\n\ntest(\"generic platform scope is not treated as a source boundary\", () => {\n  assert.equal(sourceDiscoveryScope(\"Repair the customer calendar\", { scope: \"platform\" }), \"general\");\n});\n\ntest(\"read-only discovery preserves canonical control-plane scope\", () => {\n  const result = readOnlySourceDiscoveryRequest(\n    { requestContract: { sourceScope: \"control-plane\" } },\n    \"Analyze platform-wide execution ownership\",\n    \"noel/KnockLaunchOS\",\n    \"main\",\n  );\n  assert.equal(result.sourceScope, \"control_plane\");\n});\n"},{"path":"workers/cc-execution/src/version.js","content":"// Release marker: Forgejo is the canonical repository and self-hosted Actions control plane.\nexport const CC_EXECUTION_VERSION = \"1.58.225-execution-contract-continuity\";\n"}],"branch":"ai/objective-first-repair-c2b42e464a1d","writes":[],"patches":[],"approved":true,"missionId":"c2b42e46-4a1d-44b5-a4c5-503919a135ea","repository":"noel/KnockLaunchOS","sourceScope":"control-plane","autoProgress":true,"ownerApproved":true,"implementation":{"files":[],"writes":[]},"requestContract":{"valid":true,"intent":{"evidence":[],"confidence":null,"rawUtterance":"Repair the existing KNOCKLAUNCH control-plane execution pipeline so authoritative request scope survives end to end, execution ownership is truthful, non-visual control-plane work never acquires visual-route proof, recovery preserves mission identity, and completion requires claim-matched proof.","wordingChanged":false,"canonicalIntent":"Repair the existing KNOCKLAUNCH control-plane execution pipeline so authoritative request scope survives end to end, execution ownership is truthful, non-visual control-plane work never acquires visual-route proof, recovery preserves mission identity, and completion requires claim-matched proof.","resolutionStatus":"exact","uniqueResolution":true,"clarificationRequired":false},"source":"explicit","version":1,"outcomes":[{"id":"contract-continuity","statement":"Canonical request fields survive classification, mission creation, handlers, retries, reconnect, gate refresh, release, and proof.","proofConditionIds":["proof-production"]},{"id":"execution-ownership","statement":"Every nonterminal mission truthfully identifies executor ownership, next executable action, recovery owner, and whether work is actually advancing.","proofConditionIds":["proof-production"]},{"id":"proof-correctness","statement":"Completion remains nonterminal until request-matched proof against deployed source is satisfied.","proofConditionIds":["proof-production"]}],"objective":"Repair the existing KNOCKLAUNCH control-plane execution pipeline so authoritative request scope survives end to end, execution ownership is truthful, non-visual control-plane work never acquires visual-route proof, recovery preserves mission identity, and completion requires claim-matched proof.","constraints":[{"id":"single-governing-repair","statement":"Use the existing authoritative execution path only; do not create a parallel orchestration lane.","proofConditionIds":["proof-production"]},{"id":"preserve-request","statement":"Preserve original objective, sourceScope, constraints, authorization, acceptance, and proof requirements through every downstream handoff.","proofConditionIds":["proof-production"]}],"sourceScope":"control-plane","terminalPolicy":"all_required_proof_conditions_satisfied_after_live_release","proofConditions":[{"id":"proof-production","kind":"runtime","claim":"Production control-plane behavior satisfies the repaired request-preservation, execution-ownership, recovery, completion, and nonvisual-proof-inference contracts.","route":null,"required":true,"targetedActions":[],"allowedReleaseTargets":[],"requiredReleaseTargets":[],"requireCapacityAdmissible":false,"minConsecutiveHealthyHeartbeats":1,"requirePositiveMemoryAttribution":false,"requireMemoryAdmissionPressureFalse":false}]},"controlPlaneUnfreeze":true,"durableMutationResume":true,"controlPlaneMaintenance":true,"controlPlaneMaintenancePaths":["workers/cc-execution/src/source-discovery-policy.js","workers/cc-execution/src/version.js","workers/cc-execution/test/source-discovery-policy.test.js"],"controlPlaneMaintenanceReason":"Repair canonical request-contract scope preservation and prevent generic platform scope from overriding authoritative control-plane source boundaries."},"recovery":false,"fingerprint":"228934169912b6333e104c6bda7a60750825b00b0b2cf337691809d8338d6665","replayCount":0,"serializedBytes":10280},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-24T03:17:32.399272+00:00","proof_gate":"repository_mutation_intent_persisted","source_sha":null,"external_id":null,"receipt_type":"repository_mutation_intent","idempotency_key":"mission:c2b42e46-4a1d-44b5-a4c5-503919a135ea:repository-mutation-intent:228934169912b6333e104c6bda7a60750825b00b0b2cf337691809d8338d6665:0","mission_step_id":"dab34edc-2cc4-47c4-94be-566501c20553","command_center_event_id":"c2b42e46-4a1d-44b5-a4c5-503919a135ea"},{"id":"bebc0812-89b7-4bff-b788-ba28ee30d5b8","source":"cc-execution","status":"recorded","payload":{"objective":"Make the already-prepared mobile Mail refactor live now, using the existing PR #2065 and its existing branch/head. The owner explicitly requires production completion, not another diagnosis. Do not create another branch or PR. Use the current green exact-head gate result for commit 40ec9615f12a8f8e5e61fdc6a81f8eb27293e3f1, squash merge PR #2065 through protected main, deploy only the affected frontend, and prove the live Big Papi's Mail mobile experience works on a phone viewport: inbox can vertically scroll, opening a message shows a full-width reader, back returns to the inbox, the viewport is not trapped, and bottom navigation does not cover content. Preserve desktop behavior. Completion means live production proof, not merge or deploy dispatch.","tenantRef":"big-papis","receivedAt":"2026-09-07T14:20:39.704Z","fingerprint":"74306b1e660558eddef660f1377bd2685f3075fde1cd0801aa5556ce3b2342e1","workstreamRef":"bigpapis","conversationId":null,"canonicalBranch":"ai/mail-mobile-refactor-recovery","requestContract":{"valid":true,"intent":{"evidence":[],"confidence":null,"rawUtterance":"Make the already-prepared mobile Mail refactor live now, using the existing PR #2065 and its existing branch/head. The owner explicitly requires production completion, not another diagnosis. Do not create another branch or PR. Use the current green exact-head gate result for commit 40ec9615f12a8f8e5e61fdc6a81f8eb27293e3f1, squash merge PR #2065 through protected main, deploy only the affected frontend, and prove the live Big Papi's Mail mobile experience works on a phone viewport: inbox can vertically scroll, opening a message shows a full-width reader, back returns to the inbox, the viewport is not trapped, and bottom navigation does not cover content. Preserve desktop behavior. Completion means live production proof, not merge or deploy dispatch.","wordingChanged":false,"canonicalIntent":"Make the already-prepared mobile Mail refactor live now, using the existing PR #2065 and its existing branch/head. The owner explicitly requires production completion, not another diagnosis. Do not create another branch or PR. Use the current green exact-head gate result for commit 40ec9615f12a8f8e5e61fdc6a81f8eb27293e3f1, squash merge PR #2065 through protected main, deploy only the affected frontend, and prove the live Big Papi's Mail mobile experience works on a phone viewport: inbox can vertically scroll, opening a message shows a full-width reader, back returns to the inbox, the viewport is not trapped, and bottom navigation does not cover content. Preserve desktop behavior. Completion means live production proof, not merge or deploy dispatch.","resolutionStatus":"exact","uniqueResolution":true,"clarificationRequired":false},"source":"explicit","version":1,"outcomes":[{"id":"outcome-live-mail","statement":"PR #2065 is squash-merged, frontend deployed, and Big Papi's Mail is usable on mobile in production.","proofConditionIds":["proof-gate","proof-merge","proof-release","proof-mobile-interaction"]}],"objective":"Make the already-prepared mobile Mail refactor live now, using the existing PR #2065 and its existing branch/head. The owner explicitly requires production completion, not another diagnosis. Do not create another branch or PR. Use the current green exact-head gate result for commit 40ec9615f12a8f8e5e61fdc6a81f8eb27293e3f1, squash merge PR #2065 through protected main, deploy only the affected frontend, and prove the live Big Papi's Mail mobile experience works on a phone viewport: inbox can vertically scroll, opening a message shows a full-width reader, back returns to the inbox, the viewport is not trapped, and bottom navigation does not cover content. Preserve desktop behavior. Completion means live production proof, not merge or deploy dispatch.","constraints":[{"id":"constraint-existing-pr","statement":"Reuse existing PR #2065 and do not create another branch or PR.","proofConditionIds":["proof-gate","proof-merge","proof-release"]},{"id":"constraint-desktop","statement":"Preserve desktop Mail behavior.","proofConditionIds":["proof-gate","proof-merge","proof-release"]}],"terminalPolicy":"all_required_proof_conditions_satisfied_after_live_release","proofConditions":[{"id":"proof-gate","kind":"repository","claim":"Exact-head KnockLaunch Gate for commit 40ec9615f12a8f8e5e61fdc6a81f8eb27293e3f1 succeeded.","route":"/big-papis/email","roleRef":null,"userRef":null,"required":true,"expectedText":null,"targetedActions":[],"allowedReleaseTargets":[],"requiredReleaseTargets":[]},{"id":"proof-merge","kind":"repository","claim":"PR #2065 is squash merged to protected main.","route":"/big-papis/email","roleRef":null,"userRef":null,"required":true,"expectedText":null,"targetedActions":[],"allowedReleaseTargets":[],"requiredReleaseTargets":[]},{"id":"proof-release","kind":"runtime","claim":"Affected frontend release completed for the merge SHA.","route":"/big-papis/email","roleRef":null,"userRef":null,"required":true,"expectedText":null,"targetedActions":[],"allowedReleaseTargets":[],"requiredReleaseTargets":[]},{"id":"proof-mobile-interaction","kind":"interaction","claim":"On a phone viewport, Big Papi's Mail inbox scrolls vertically, opening a message shows a full-width reader, back returns to inbox, viewport is not trapped, and bottom nav does not overlap content.","route":"/big-papis/email","roleRef":null,"userRef":null,"required":true,"expectedText":null,"targetedActions":[{"action":"scroll","target":"inbox"},{"action":"click","target":"mail-message-row"},{"action":"assert","target":"full-width-reader"},{"action":"click","target":"back"},{"action":"assert","target":"inbox-restored"}],"allowedReleaseTargets":[],"requiredReleaseTargets":[]}],"validationErrors":[]},"requestedBranch":"ai/mail-mobile-refactor-recovery","conversationContext":"{\"requestContract\":{\"version\":1,\"source\":\"explicit_owner\",\"objective\":\"Make the mobile Mail refactor live now using existing PR #2065 only.\",\"intent\":{\"rawUtterance\":\"No, I need this live right now.\",\"canonicalIntent\":\"Ship the existing mobile Mail refactor on PR #2065 to production now and verify it live.\",\"wordingChanged\":true,\"resolutionStatus\":\"exact\",\"uniqueResolution\":true,\"clarificationRequired\":false},\"outcomes\":[{\"id\":\"outcome-live-mail\",\"statement\":\"PR #2065 is squash-merged, frontend deployed, and Big Papi's Mail is usable on mobile in production.\",\"proofConditionIds\":[\"proof-gate\",\"proof-merge\",\"proof-release\",\"proof-mobile-interaction\"]}],\"constraints\":[{\"id\":\"constraint-existing-pr\",\"statement\":\"Reuse existing PR #2065 and do not create another branch or PR.\"},{\"id\":\"constraint-desktop\",\"statement\":\"Preserve desktop Mail behavior.\"}],\"proofConditions\":[{\"id\":\"proof-gate\",\"kind\":\"repository\",\"claim\":\"Exact-head KnockLaunch Gate for commit 40ec9615f12a8f8e5e61fdc6a81f8eb27293e3f1 succeeded.\",\"required\":true},{\"id\":\"proof-merge\",\"kind\":\"repository\",\"claim\":\"PR #2065 is squash merged to protected main.\",\"required\":true},{\"id\":\"proof-release\",\"kind\":\"runtime\",\"claim\":\"Affected frontend release completed for the merge SHA.\",\"required\":true},{\"id\":\"proof-mobile-interaction\",\"kind\":\"interaction\",\"claim\":\"On a phone viewport, Big Papi's Mail inbox scrolls vertically, opening a message shows a full-width reader, back returns to inbox, viewport is not trapped, and bottom nav does not overlap content.\",\"required\":true,\"route\":\"/big-papis/email\",\"targetedActions\":[{\"action\":\"scroll\",\"target\":\"inbox\"},{\"action\":\"click\",\"target\":\"mail-message-row\"},{\"action\":\"assert\",\"target\":\"full-width-reader\"},{\"action\":\"click\",\"target\":\"back\"},{\"action\":\"assert\",\"target\":\"inbox-restored\"}]}],\"terminalPolicy\":\"all_required_proof_conditions_satisfied_after_live_release\",\"valid\":true,\"validationErrors\":[]}}","requestContractHash":"66cc19e5c3bd5503512079396dc84d71fa6c79d4629fc021983945db3e66e774","requestContractRevision":1},"tenant_id":"766cfaa7-ac42-46c8-bbef-69d13268a29d","created_at":"2026-09-07T14:20:40.186633+00:00","proof_gate":"tenant_workstream_contribution_recorded","source_sha":null,"external_id":null,"receipt_type":"tenant_workstream_contribution","idempotency_key":"mission:77eaa906-f338-434e-939e-9b4b2a00aaed:tenant-workstream-contribution:74306b1e660558eddef660f1377bd2685f3075fde1cd0801aa5556ce3b2342e1","mission_step_id":null,"command_center_event_id":"77eaa906-f338-434e-939e-9b4b2a00aaed"},{"id":"bebcb4d2-b7c6-4c91-8172-aa79bc08a487","source":"cc-execution","status":"recorded","payload":{"objective":"Continue existing PR #1469 only. Refresh it onto current protected main after the stale-main Gate rejection, preserve the exact three-file toast/recovery repair, re-gate, squash merge, release frontend plus roof-measurement-job and roof-ai-detection only, and prove the exact 334 San Filippo re-measure behavior live.","tenantRef":"redfishroofing","receivedAt":"2026-09-02T20:03:06.143Z","fingerprint":"63788faf14ffc1a3bc544b65a4b1e1f6cf8656814624d96e28ee40edb14d4138","workstreamRef":"redfishroofing","conversationId":null,"canonicalBranch":"ai/objective-first-repair-mtkhv08w","requestContract":{"valid":true,"intent":{"evidence":[],"confidence":null,"rawUtterance":"Continue existing PR #1469 only. Refresh it onto current protected main after the stale-main Gate rejection, preserve the exact three-file toast/recovery repair, re-gate, squash merge, release frontend plus roof-measurement-job and roof-ai-detection only, and prove the exact 334 San Filippo re-measure behavior live.","wordingChanged":false,"canonicalIntent":"Continue existing PR #1469 only. Refresh it onto current protected main after the stale-main Gate rejection, preserve the exact three-file toast/recovery repair, re-gate, squash merge, release frontend plus roof-measurement-job and roof-ai-detection only, and prove the exact 334 San Filippo re-measure behavior live.","resolutionStatus":"exact","uniqueResolution":true,"clarificationRequired":false},"source":"explicit","version":1,"outcomes":[{"id":"outcome-toast","statement":"A single roof measurement task owns exactly one progress notification identity; unchanged polling does not emit duplicate toasts, meaningful stage/progress changes update that notification in place, and retry replaces the prior terminal state rather than stacking notifications.","proofConditionIds":["proof-repo","proof-gate","proof-release","proof-interaction"]},{"id":"outcome-retry","statement":"The second automatic measurement attempt is materially different from attempt 1: it enters recovery analysis, uses wider imagery and recovery-specific subject-lock instructions, and only reaches terminal failure after recovery and available fallback are exhausted.","proofConditionIds":["proof-repo","proof-gate","proof-release","proof-interaction","proof-runtime-job"]}],"objective":"Continue existing PR #1469 only. Refresh it onto current protected main after the stale-main Gate rejection, preserve the exact three-file toast/recovery repair, re-gate, squash merge, release frontend plus roof-measurement-job and roof-ai-detection only, and prove the exact 334 San Filippo re-measure behavior live.","constraints":[{"id":"constraint-same-pr","statement":"Use existing PR #1469 and branch ai/objective-first-repair-mtkij2g4 only; do not create a replacement branch or PR.","proofConditionIds":["proof-repo"]},{"id":"constraint-scope","statement":"Preserve the exact three-file repair scope: src/lib/roofMeasurementTask.ts, supabase/functions/roof-measurement-job/index.ts, supabase/functions/roof-ai-detection/index.ts.","proofConditionIds":["proof-repo"]},{"id":"constraint-safety","statement":"Do not fabricate roof geometry when imagery cannot responsibly identify the centered subject; keep tenant authorization, locked property coordinates, and review-required semantics for recovery results.","proofConditionIds":["proof-repo","proof-runtime-job"]}],"terminalPolicy":"all_required_proof_conditions_satisfied_after_live_release","proofConditions":[{"id":"proof-repo","kind":"repository","claim":"PR #1469 is refreshed against current protected main with only the intended three estimator files and is squash merged.","route":"/redfish-roofing/homeowners/95fc090e-5761-4d32-b387-0308d074e524?section=roof-estimate","roleRef":null,"userRef":null,"required":true,"expectedText":null,"targetedActions":[],"allowedReleaseTargets":[],"requiredReleaseTargets":[]},{"id":"proof-gate","kind":"repository","claim":"The exact refreshed PR #1469 head passes KnockLaunch Gate.","route":"/redfish-roofing/homeowners/95fc090e-5761-4d32-b387-0308d074e524?section=roof-estimate","roleRef":null,"userRef":null,"required":true,"expectedText":null,"targetedActions":[],"allowedReleaseTargets":[],"requiredReleaseTargets":[]},{"id":"proof-release","kind":"runtime","claim":"The merged repair is live in the frontend and the roof-measurement-job and roof-ai-detection Supabase Edge Functions.","route":"/redfish-roofing/homeowners/95fc090e-5761-4d32-b387-0308d074e524?section=roof-estimate","roleRef":null,"userRef":null,"required":true,"expectedText":null,"targetedActions":[],"allowedReleaseTargets":["frontend","supabaseEdge"],"requiredReleaseTargets":["frontend","supabaseEdge"]},{"id":"proof-interaction","kind":"interaction","claim":"On the exact Redfish homeowner roof-estimate route, starting or retrying Auto Measure shows one progress notification identity without duplicate stacking through repeated polls, and the task remains usable through its progress stages.","route":"/redfish-roofing/homeowners/95fc090e-5761-4d32-b387-0308d074e524?section=roof-estimate","roleRef":"GodMode","userRef":null,"required":true,"expectedText":"Roof Measurement","targetedActions":[{"action":"open_route"},{"action":"start_or_retry_auto_measure"},{"action":"observe_repeated_status_polls_without_duplicate_toasts"},{"action":"wait_for_recovery_or_completion"}],"allowedReleaseTargets":[],"requiredReleaseTargets":[]},{"id":"proof-runtime-job","kind":"runtime","claim":"A representative 334 San Filippo measurement that requires a second attempt records attempt_count=2 and executes the recovery path rather than identical replay; a recovery success is review-required, while terminal failure occurs only after recovery/fallback exhaustion.","route":"/redfish-roofing/homeowners/95fc090e-5761-4d32-b387-0308d074e524?section=roof-estimate","roleRef":null,"userRef":null,"required":true,"expectedText":null,"targetedActions":[],"allowedReleaseTargets":[],"requiredReleaseTargets":[]}],"validationErrors":[]},"requestedBranch":"ai/objective-first-repair-mtkij2g4","conversationContext":null,"requestContractHash":"0066b697fd83fd4d759998272edefc719fa560bf4197185f9d6de9818fa0a0f7","requestContractRevision":2},"tenant_id":"de8369b6-a78f-40bb-ae1f-28ffca62bc7e","created_at":"2026-09-02T20:03:07.007767+00:00","proof_gate":"tenant_workstream_contribution_recorded","source_sha":null,"external_id":null,"receipt_type":"tenant_workstream_contribution","idempotency_key":"mission:1c75872a-a97f-4a1e-afa3-5c55a44fe46c:tenant-workstream-contribution:63788faf14ffc1a3bc544b65a4b1e1f6cf8656814624d96e28ee40edb14d4138","mission_step_id":"cd069367-8ca2-47fe-a94a-a831ba19de27","command_center_event_id":"1c75872a-a97f-4a1e-afa3-5c55a44fe46c"},{"id":"bebf49b2-ccf7-43ae-9f49-19e2cb74ed42","source":"durable-mission-ledger","status":"verified","payload":{"sourceSha":"c6959750dea98ef45daf00ba821dfa302f6f3909","requestContractProof":{"legacy":false,"present":true,"outcomes":[{"id":"redfish-specific-rebuttals","satisfied":true,"statement":"Production Redfish Roofing uses tenant-specific roofing rebuttals appropriate to a licensed roofer that can physically inspect roofs.","proofConditionIds":["proof-redfish-data"]},{"id":"sce-isolated","satisfied":true,"statement":"Space Coast Emergency Tarping retains its own tenant-specific drone/tarping rebuttals and is not modified by the Redfish repair.","proofConditionIds":["proof-sce-data"]},{"id":"canonical-release","satisfied":true,"statement":"PR #1399 passes KnockLaunch Gate, is squash merged, and the affected Supabase migration is released from protected main.","proofConditionIds":["proof-gate-merge-release"]}],"satisfied":true,"constraints":[{"id":"no-public-adjusting","satisfied":true,"statement":"Redfish/KnockLaunch must not be described as negotiating claims, interpreting coverage, or acting as a public adjuster.","proofConditionIds":["proof-redfish-data"]},{"id":"no-drone-only-redfish","satisfied":true,"statement":"Redfish rebuttals must not claim drone-only inspection or that nobody gets on the roof.","proofConditionIds":["proof-redfish-data"]},{"id":"no-sce-mutation","satisfied":true,"statement":"Do not modify SCE tenant-specific rows.","proofConditionIds":["proof-sce-data"]}],"contractHash":"e27385912f688ff0db7e7db93902ac3a721d68297af37d845c3be1a9f7f3f6c4","releaseBound":true,"witnessBound":false,"visualRequested":false,"visualSatisfied":true,"conditionResults":[{"id":"proof-redfish-data","kind":"runtime","evidence":{"releaseState":"verified","activeReleaseTargets":["migrations"],"releaseRequestContractHash":"e27385912f688ff0db7e7db93902ac3a721d68297af37d845c3be1a9f7f3f6c4"},"required":true,"satisfied":true},{"id":"proof-sce-data","kind":"runtime","evidence":{"releaseState":"verified","activeReleaseTargets":["migrations"],"releaseRequestContractHash":"e27385912f688ff0db7e7db93902ac3a721d68297af37d845c3be1a9f7f3f6c4"},"required":true,"satisfied":true},{"id":"proof-gate-merge-release","kind":"runtime","evidence":{"releaseState":"verified","activeReleaseTargets":["migrations"],"releaseRequestContractHash":"e27385912f688ff0db7e7db93902ac3a721d68297af37d845c3be1a9f7f3f6c4"},"required":true,"satisfied":true}],"validationErrors":[],"pendingProofKinds":[],"activeReleaseTargets":["migrations"]},"authoritativeMissionRefresh":true,"evaluatedRequestContractRevision":1},"tenant_id":"de8369b6-a78f-40bb-ae1f-28ffca62bc7e","created_at":"2026-09-02T05:29:04.059957+00:00","proof_gate":"request_contract_terminal_verified","source_sha":"c6959750dea98ef45daf00ba821dfa302f6f3909","external_id":null,"receipt_type":"request_contract_reconciliation","idempotency_key":"mission:16622df8-47f5-4674-8489-ff5d15b1e9fc:request-contract:e27385912f688ff0db7e7db93902ac3a721d68297af37d845c3be1a9f7f3f6c4:c6959750dea98ef45daf00ba821dfa302f6f3909:verified:","mission_step_id":"afdbbe6f-4002-45fc-ba12-331bcceef006","command_center_event_id":"16622df8-47f5-4674-8489-ff5d15b1e9fc"},{"id":"bec47a62-7ef4-47d6-8f1b-10469d3bfd9a","source":"cc-execution","status":"retryable","payload":{"ok":false,"jobId":null,"phase":"implementation","branch":"ai/objective-first-repair-cdc15e3a7afa","reason":"retryable_provider_transport:forgejo_provider_read_timeout","status":"retryable","metrics":{"receiptBytes":7576,"releaseCount":0,"toolCallCount":4,"repeatedCallCount":0,"executorlessWaitMs":1105858,"firstUsefulResultAt":"2026-09-27T23:44:32.192Z","recoveryAttemptCount":1,"ownerInterruptionCount":0},"version":"1.58.299-visible-intent","prNumber":3934,"terminal":false,"missionId":"cdc15e3a-7afa-4b4e-ba1f-dfb95d748dbb","operation":"execute_mission","proofGate":"repair_mission_pr_ready_retryable","sourceSha":null,"timingsMs":{"gateMs":0,"proofMs":0,"handlerMs":5645,"releaseMs":0,"mutationMs":0,"repositoryMs":0,"prReadinessMs":5507,"approvedPlanMs":0,"missionSetupMs":368,"providerAuthMs":0,"shipAndProveMs":0,"ledgerPrepareMs":243,"ledgerReconcileMs":0,"lineageReconcileMs":125,"resolvePreflightMs":368,"repositoryMutationMs":0,"repositoryProviderMs":0,"authoritativeLedgerMs":0,"ledgerAsyncDispatchMs":0,"repositoryAtomicCommitMs":0,"repositoryBranchCreateMs":0,"totalSynchronousLedgerMs":243,"asyncBookkeepingDispatchMs":0,"ledgerAuthoritativeCommitMs":0,"repositoryPullRequestCreateMs":0},"nextAction":"Reconcile this same mission and pull request automatically; do not create a replacement branch or PR.","receiptRef":{"mode":"full","missionId":"cdc15e3a-7afa-4b4e-ba1f-dfb95d748dbb"},"performance":null,"deploymentId":null,"releaseState":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","pendingProofKinds":["runtime"],"verificationState":null,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":1522,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true,"requestContractState":"pending"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-28T00:02:58.085478+00:00","proof_gate":"repair_mission_pr_ready_retryable","source_sha":null,"external_id":"3934","receipt_type":"execute_mission","idempotency_key":"mission:cdc15e3a-7afa-4b4e-ba1f-dfb95d748dbb:execute_mission:repair_mission_pr_ready_retryable:current-generation","mission_step_id":"a704fc6f-2c26-4bcd-ab16-aee9e7f19ae4","command_center_event_id":"cdc15e3a-7afa-4b4e-ba1f-dfb95d748dbb"},{"id":"bec5a682-deed-446c-b423-9529f5ccd95c","source":"cc-execution","status":"blocked","payload":{"reason":"file_write_content_or_explicit_delete_required","fingerprint":"09a9d77dbacd8d9bb0741002da82a65786096ff26af2fc110d282ff8e1073a5b"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-02T21:25:00.586999+00:00","proof_gate":"repository_mutation_intent_deterministic_failure","source_sha":null,"external_id":null,"receipt_type":"repository_mutation_intent_blocked","idempotency_key":"mission:2315c074-c80c-4d43-8fd7-d0eb32e08ec9:repository-mutation-intent-blocked:09a9d77dbacd8d9bb0741002da82a65786096ff26af2fc110d282ff8e1073a5b","mission_step_id":"8eab63bc-f56d-4c16-b85e-41eb8ffcf9cf","command_center_event_id":"2315c074-c80c-4d43-8fd7-d0eb32e08ec9"},{"id":"bec6e78c-00fc-4b30-8b4e-b88b77059f16","source":"cc-execution","status":"authorized","payload":{"paths":["config/control-plane-capabilities.json","workers/cc-execution/src/index-mission-control.js","workers/cc-execution/test/release-orchestration-invariants.test.js"],"reason":"Owner requested bulletproof release self-healing after PCG frontend release was repeatedly cancelled by routine protected-main advancement.","baseSha":"627c84e915144aafe840e9238a1e1bd60365a7b1","issuedAt":1789847073306,"expiresAt":1789847253306,"missionId":"0ebe67f8-f2f9-425d-bab2-1995e593c877","authorizationId":"10c083d4-ebaf-400c-840d-bed52faa7433","retryableWithinExactScope":true},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-19T19:44:33.575298+00:00","proof_gate":"control_plane_maintenance_scope_authorized","source_sha":"627c84e915144aafe840e9238a1e1bd60365a7b1","external_id":null,"receipt_type":"control_plane_maintenance_authorization","idempotency_key":"control-plane-maintenance-authorize:10c083d4-ebaf-400c-840d-bed52faa7433","mission_step_id":"d631e327-7c41-4fe7-b9f1-9d304dba3329","command_center_event_id":"0ebe67f8-f2f9-425d-bab2-1995e593c877"},{"id":"bec70979-28a4-4c29-b30d-897e4bc7b05d","source":"forgejo-runtime","status":"failed","payload":{"failed":["forgejo-release/workflow","frontend-cloudflare/live"],"states":{"forgejo-main/source":"success","forgejo-release/workflow":"failure","frontend-cloudflare/live":"failure"},"mainSha":"da0e8cd716a7fa8ec1255c178ebd3a03b0bee607","missing":[],"pending":[],"required":["forgejo-main/source","forgejo-release/workflow","frontend-cloudflare/live"],"sourceSha":"da0e8cd716a7fa8ec1255c178ebd3a03b0bee607","releaseState":"failed","sourceInMain":true,"compareStatus":"protected_main_push_exact_source","releaseTargets":{"frontend":true,"onrunner":false,"migrations":false,"ccExecution":false,"supabaseEdge":false,"edgeFunctionSlugs":[]},"releaseTargetStates":{"frontend":"failure"},"requestContractHash":"06453787d0044a54f21269ffcf5e1494a706a342a5c26031bf8a49344c2ff134","forgejoWorkflowProof":{"runId":7030,"source":"signed_push_receipt","status":"cancelled","results":{},"conclusion":"cancelled","targetStates":{"frontend":"failure"},"targetJobCount":7,"observedTargetStates":{"frontend":"failure"}},"onrunnerRuntimeProof":null,"releaseSourceVerified":true,"ccExecutionRuntimeProof":null,"releaseTargetRecoveryProof":null,"exactReleaseVerifiedAfterMainAdvanced":false},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-11T05:39:20.114144+00:00","proof_gate":"canonical_release_terminal_failed","source_sha":"da0e8cd716a7fa8ec1255c178ebd3a03b0bee607","external_id":"forgejo-main-da0e8cd716a7","receipt_type":"canonical_release_status","idempotency_key":"mission:5c09d113-6fc7-4cb0-b94d-77f30a315941:forgejo-release-status:da0e8cd716a7fa8ec1255c178ebd3a03b0bee607:failed:forgejo-main/source=success|forgejo-release/workflow=failure|frontend-cloudflare/live=failure","mission_step_id":"a7e1926f-adc6-4c4c-ba54-5a27385e8b54","command_center_event_id":"5c09d113-6fc7-4cb0-b94d-77f30a315941"},{"id":"bec74ff2-0cf0-4943-8298-0f4a828cd6fa","source":"cc-execution","status":"waiting","payload":{"body":{"ship":true,"files":[{"path":"supabase/migrations/20261005131500_pcg_legacy_media_migration_dispatcher.sql","content":"alter table public.pcg_legacy_media_migration_jobs\n  add column if not exists dispatch_token text;\n\ncreate or replace function public.pcg_dispatch_legacy_media_migration(\n  _job_id uuid,\n  _batch_size integer default 40\n) returns jsonb\nlanguage plpgsql\nsecurity definer\nset search_path = public, extensions\nas $$\ndeclare\n  _token text;\n  _response extensions.http_response;\n  _payload jsonb;\nbegin\n  select dispatch_token\n    into _token\n  from public.pcg_legacy_media_migration_jobs\n  where id = _job_id\n    and status in ('pending','running')\n    and expires_at > now();\n\n  if coalesce(_token,'') = '' then\n    raise exception 'pcg_migration_dispatch_token_required';\n  end if;\n\n  perform extensions.http_set_curlopt('CURLOPT_TIMEOUT_MS','120000');\n\n  _payload := jsonb_build_object(\n    'job_id', _job_id::text,\n    'token', _token,\n    'batch_size', least(75, greatest(1, coalesce(_batch_size,40)))\n  );\n\n  select *\n    into _response\n  from extensions.http_post(\n    'https://ymntrajfubicyxwwdxxa.supabase.co/functions/v1/pcg-r2-media/run-legacy-migration',\n    _payload::text,\n    'application/json'\n  );\n\n  if _response.status <> 200 then\n    raise exception 'pcg_migration_dispatch_failed:%:%', _response.status, left(coalesce(_response.content,''),500);\n  end if;\n\n  return coalesce(_response.content,'{}')::jsonb;\nend;\n$$;\n\nrevoke all on function public.pcg_dispatch_legacy_media_migration(uuid,integer) from public, anon, authenticated;\ngrant execute on function public.pcg_dispatch_legacy_media_migration(uuid,integer) to service_role;\n"}],"branch":"ai/objective-first-repair-f18f706d68f0","writes":[],"patches":[],"version":1,"approved":true,"missionId":"f18f706d-68f0-40b4-89cf-3ddbb5cff5fa","objective":"Add the least-privilege database dispatcher needed to finish the already-live PCG legacy media migration from this control plane without exposing migration secrets. Add a nullable dispatch_token to pcg_legacy_media_migration_jobs and a SECURITY DEFINER function callable only by service-role/postgres that synchronously invokes the existing pcg-r2-media /run-legacy-migration endpoint for one bounded batch using the stored dispatch token. Do not change user-facing behavior. Ship migration only through Gate, merge, release, and proof.","repository":"noel/KnockLaunchOS","ownerApproved":true,"releaseIntent":null,"sourceTargets":["supabase/migrations/20261005131500_pcg_legacy_media_migration_dispatcher.sql"],"implementation":{"files":[],"writes":[]},"requestContract":{"source":"owner_explicit","version":1,"outcomes":[{"id":"dispatcher","statement":"A service-only bounded migration dispatcher exists so the current migration job can be executed repeatedly without exposing its secret.","proofConditionIds":["proof-production"]}],"objective":"Finish the PCG legacy Squarespace-to-R2 migration safely from the control plane.","constraints":[{"id":"least-privilege","statement":"The dispatcher is not executable by anon or authenticated users.","proofConditionIds":["proof-production"]},{"id":"bounded","statement":"Each dispatch processes a caller-bounded batch and uses the existing expiring migration job.","proofConditionIds":["proof-production"]}],"terminalPolicy":"all_required_proof_conditions_satisfied_after_live_release","proofConditions":[{"id":"proof-production","kind":"runtime","claim":"The production database exposes the service-only PCG migration dispatcher.","required":true}]},"repairGeneration":null,"executionEnvelope":{"ship":true,"version":1,"approved":true,"missionId":null,"ownerApproved":true,"releaseIntent":null,"sourceTargets":["supabase/migrations/20261005131500_pcg_legacy_media_migration_dispatcher.sql"],"requestContract":{"source":"owner_explicit","version":1,"outcomes":[{"id":"dispatcher","statement":"A service-only bounded migration dispatcher exists so the current migration job can be executed repeatedly without exposing its secret.","proofConditionIds":["proof-production"]}],"objective":"Finish the PCG legacy Squarespace-to-R2 migration safely from the control plane.","constraints":[{"id":"least-privilege","statement":"The dispatcher is not executable by anon or authenticated users.","proofConditionIds":["proof-production"]},{"id":"bounded","statement":"Each dispatch processes a caller-bounded batch and uses the existing expiring migration job.","proofConditionIds":["proof-production"]}],"terminalPolicy":"all_required_proof_conditions_satisfied_after_live_release","proofConditions":[{"id":"proof-production","kind":"runtime","claim":"The production database exposes the service-only PCG migration dispatcher.","required":true}]},"repairGeneration":null,"proofRequirements":null,"controlPlaneUnfreeze":false,"controlPlaneMaintenance":false,"controlPlaneMaintenancePaths":[],"controlPlaneMaintenanceReason":null},"proofRequirements":null,"controlPlaneUnfreeze":false,"durableMutationResume":true,"controlPlaneMaintenance":false,"controlPlaneMaintenancePaths":[],"controlPlaneMaintenanceReason":null},"recovery":false,"fingerprint":"ea487a4b28b324a99cdf6b9de46a1adca26832c2b6585f5ce15de4c401265a03","replayCount":0,"serializedBytes":5144},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-05T13:23:41.723263+00:00","proof_gate":"repository_mutation_intent_persisted","source_sha":null,"external_id":null,"receipt_type":"repository_mutation_intent","idempotency_key":"mission:f18f706d-68f0-40b4-89cf-3ddbb5cff5fa:repository-mutation-intent:ea487a4b28b324a99cdf6b9de46a1adca26832c2b6585f5ce15de4c401265a03:0","mission_step_id":"2cc3f40e-afe2-4700-8ba0-baa9866bf86b","command_center_event_id":"f18f706d-68f0-40b4-89cf-3ddbb5cff5fa"},{"id":"becaa396-dcbc-4f83-80cb-eb1f29dacee3","source":"cc-execution","status":"waiting_for_gate","payload":{"ok":true,"jobId":null,"phase":"pull_request","branch":"ai/objective-first-repair-60339bf0a4dc","reason":"pull_request_checks_pending","status":"waiting_for_gate","metrics":{"receiptBytes":0,"releaseCount":0,"toolCallCount":0,"repeatedCallCount":0,"ownerInterruptionCount":0},"version":null,"prNumber":3465,"terminal":false,"missionId":"60339bf0-a4dc-42dc-a7d3-e3663f6387db","operation":"automatic_mission_resume","proofGate":"repair_mission_waiting_for_gate","sourceSha":null,"timingsMs":{"prReadinessMs":543,"approvedPlanMs":0,"shipAndProveMs":0,"repositoryMutationMs":0,"repositoryProviderMs":0,"repositoryAtomicCommitMs":0,"repositoryBranchCreateMs":0,"repositoryPullRequestCreateMs":0},"nextAction":"Reconcile this same mission and pull request after the exact-head KnockLaunch Gate changes state.","receiptRef":{"mode":"full","missionId":"60339bf0-a4dc-42dc-a7d3-e3663f6387db"},"performance":null,"deploymentId":null,"releaseState":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","pendingProofKinds":[],"verificationState":null,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":1285,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true,"requestContractState":"pending"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-23T00:33:22.800123+00:00","proof_gate":"repair_mission_waiting_for_gate","source_sha":null,"external_id":"3465","receipt_type":"automatic_mission_resume","idempotency_key":"mission:60339bf0-a4dc-42dc-a7d3-e3663f6387db:automatic-mission-resume:3465:repair_mission_waiting_for_gate","mission_step_id":"49980b9b-1214-436d-86cd-3082120529eb","command_center_event_id":"60339bf0-a4dc-42dc-a7d3-e3663f6387db"},{"id":"beccb295-8503-4499-9bf2-b076563c737b","source":"cc-execution","status":"waiting","payload":{"sourceTargets":[".forgejo/workflows/knocklaunch.yml"],"continuationObjective":"Continue this exact runner-selector repair through PR, canonical Gate, squash merge, affected release, and live proof. Do not stop at implementation."},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-05T15:28:58.135031+00:00","proof_gate":"mission_continuation_scope_persisted","source_sha":null,"external_id":null,"receipt_type":"mission_continuation_scope_updated","idempotency_key":"mission:a5febfb2-bf87-4057-b930-a2694ed6ff33:mission_continuation_scope_updated:mission_continuation_scope_persisted:waiting","mission_step_id":"422f8849-7a33-4f7b-b51b-fe05a7be99c9","command_center_event_id":"a5febfb2-bf87-4057-b930-a2694ed6ff33"},{"id":"bece79eb-fe38-4d99-90a5-ee5ea12d9526","source":"durable-mission-ledger","status":"pending","payload":{"sourceSha":"3c07f8f6fa8d5fc39c9ebd57afce35ca48a5f9d2","requestContractProof":{"legacy":false,"present":true,"outcomes":[{"id":"golden-restore-point","satisfied":false,"statement":"The canonical control plane restore-point metadata records f4009feeabd7dca56efd378939fdafbec709662e as the post-recovery golden restore target and preserves prior restore-point history.","proofConditionIds":["repository-proof","freeze-proof"]}],"satisfied":false,"constraints":[{"id":"metadata-only","satisfied":false,"statement":"Only config/control-plane-restore-point.json may change; no tenant/product source, database, migration, or runtime source changes.","proofConditionIds":["repository-proof"]},{"id":"refreeze","satisfied":false,"statement":"Freeze the control plane again after the golden restore-point update.","proofConditionIds":["freeze-proof"]}],"contractHash":"7558f6285885632f687fc82b941c22eba61819b793ff9bf36c7f74082796161b","releaseBound":true,"witnessBound":false,"visualRequested":false,"visualSatisfied":true,"conditionResults":[{"id":"repository-proof","kind":"repository","evidence":{"repositoryProofGate":null,"requestContractHash":"7558f6285885632f687fc82b941c22eba61819b793ff9bf36c7f74082796161b","repositoryProofStatus":"required","repositoryProofSourceSha":null},"required":true,"satisfied":false},{"id":"freeze-proof","kind":"repository","evidence":{"repositoryProofGate":null,"requestContractHash":"7558f6285885632f687fc82b941c22eba61819b793ff9bf36c7f74082796161b","repositoryProofStatus":"required","repositoryProofSourceSha":null},"required":true,"satisfied":false}],"validationErrors":[],"pendingProofKinds":["repository"],"activeReleaseTargets":[]},"authoritativeMissionRefresh":true,"evaluatedRequestContractRevision":5},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-10T04:09:52.8839+00:00","proof_gate":"request_contract_pending","source_sha":"3c07f8f6fa8d5fc39c9ebd57afce35ca48a5f9d2","external_id":null,"receipt_type":"request_contract_reconciliation","idempotency_key":"mission:4e4f39e7-aef5-40d4-ba05-4db4c43acb4d:request-contract:7558f6285885632f687fc82b941c22eba61819b793ff9bf36c7f74082796161b:3c07f8f6fa8d5fc39c9ebd57afce35ca48a5f9d2:pending:repository","mission_step_id":"ac755b06-0433-4d00-8c84-c97036349dc3","command_center_event_id":"4e4f39e7-aef5-40d4-ba05-4db4c43acb4d"},{"id":"bed2a859-470e-4207-b5c2-f68febf9f1dc","source":"cc-execution","status":"blocked","payload":{"ok":false,"jobId":null,"phase":"release","branch":"ai/objective-first-repair-47c98dd9c4fb","reason":"canonical_release_queue_busy:14628","status":"blocked","metrics":{"receiptBytes":39564,"releaseCount":0,"toolCallCount":22,"repeatedCallCount":12,"executorlessWaitMs":56646,"firstUsefulResultAt":"2026-10-03T00:41:09.548Z","recoveryAttemptCount":9,"ownerInterruptionCount":0},"version":"1.64.61-paul-readonly-contract","prNumber":4572,"terminal":false,"missionId":"47c98dd9-c4fb-4d0a-a080-42e0f6481bb6","operation":"execute_mission","proofGate":"canonical_release_blocked","sourceSha":"0ba9013a9e650cde5c166e078ae6734b163603a7","timingsMs":{"gateMs":0,"proofMs":0,"handlerMs":1096,"releaseMs":0,"mutationMs":0,"repositoryMs":0,"prReadinessMs":90,"approvedPlanMs":0,"missionSetupMs":294,"providerAuthMs":0,"shipAndProveMs":509,"ledgerPrepareMs":294,"ledgerReconcileMs":0,"lineageReconcileMs":0,"resolvePreflightMs":294,"repositoryMutationMs":0,"repositoryProviderMs":0,"authoritativeLedgerMs":0,"ledgerAsyncDispatchMs":0,"repositoryAtomicCommitMs":0,"repositoryBranchCreateMs":0,"totalSynchronousLedgerMs":294,"asyncBookkeepingDispatchMs":0,"ledgerAuthoritativeCommitMs":0,"repositoryPullRequestCreateMs":0},"nextAction":null,"receiptRef":{"mode":"full","missionId":"47c98dd9-c4fb-4d0a-a080-42e0f6481bb6"},"performance":null,"deploymentId":"forgejo-main-0ba9013a9e65","releaseState":"pending","workflowRunId":14628,"releaseTargets":{"frontend":false,"migrations":false,"ccExecution":true,"supabaseEdge":false,"edgeFunctionSlugs":[]},"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","pendingProofKinds":["runtime"],"verificationState":null,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":1403,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true,"requestContractState":"pending"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-03T00:42:09.662524+00:00","proof_gate":"canonical_release_blocked","source_sha":"0ba9013a9e650cde5c166e078ae6734b163603a7","external_id":"forgejo-main-0ba9013a9e65","receipt_type":"execute_mission","idempotency_key":"mission:47c98dd9-c4fb-4d0a-a080-42e0f6481bb6:execute_mission:canonical_release_blocked:current-generation","mission_step_id":"68656c86-1bac-401d-a3a6-4b33015107f1","command_center_event_id":"47c98dd9-c4fb-4d0a-a080-42e0f6481bb6"},{"id":"bed65cfc-c26f-45bb-97ff-935de1d2b1a0","source":"cc-execution","status":"waiting_for_gate","payload":{"ok":true,"jobId":null,"phase":"implementation","branch":"ai/objective-first-repair-6be8ddf1f617","reason":"provider_verified_auto_progress_owns_gate_merge_release_outside_owner_response","status":"waiting_for_gate","metrics":{"receiptBytes":7561,"releaseCount":0,"toolCallCount":1,"repeatedCallCount":0,"executorlessWaitMs":0,"firstUsefulResultAt":"2026-09-24T12:47:16.141Z","recoveryAttemptCount":0,"ownerInterruptionCount":0},"version":"1.58.249-semantic-conflict-generation","prNumber":3611,"terminal":false,"missionId":"6be8ddf1-f617-4fb3-8aec-adcd04536df5","operation":"execute_mission","proofGate":"repair_mission_pr_handed_off_to_supervisor","sourceSha":null,"timingsMs":{"gateMs":0,"proofMs":0,"handlerMs":5912,"releaseMs":0,"mutationMs":0,"repositoryMs":0,"prReadinessMs":0,"approvedPlanMs":1770,"missionSetupMs":199,"providerAuthMs":0,"shipAndProveMs":0,"ledgerPrepareMs":199,"ledgerReconcileMs":0,"lineageReconcileMs":0,"resolvePreflightMs":199,"repositoryMutationMs":4142,"repositoryProviderMs":4142,"authoritativeLedgerMs":0,"ledgerAsyncDispatchMs":0,"repositoryAtomicCommitMs":2248,"repositoryBranchCreateMs":0,"totalSynchronousLedgerMs":199,"asyncBookkeepingDispatchMs":0,"ledgerAuthoritativeCommitMs":0,"repositoryPullRequestCreateMs":1894},"nextAction":"Canonical KnockLaunch Gate notifier and durable mission supervisor own Gate, merge, release, and proof progression from this exact PR head outside the owner response path.","receiptRef":{"mode":"full","missionId":"6be8ddf1-f617-4fb3-8aec-adcd04536df5"},"performance":null,"deploymentId":null,"releaseState":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","pendingProofKinds":[],"verificationState":null,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":3596,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true,"requestContractState":"pending"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-24T12:47:23.168716+00:00","proof_gate":"repair_mission_pr_handed_off_to_supervisor","source_sha":null,"external_id":"3611","receipt_type":"execute_mission","idempotency_key":"mission:6be8ddf1-f617-4fb3-8aec-adcd04536df5:execute_mission:repair_mission_pr_handed_off_to_supervisor:current-generation","mission_step_id":"71d91df5-7220-4da1-be22-4caea34e76f5","command_center_event_id":"6be8ddf1-f617-4fb3-8aec-adcd04536df5"},{"id":"bed66f25-2b66-43f7-872d-2a9799d16625","source":"cc-execution","status":"blocked","payload":{"ok":false,"jobId":null,"phase":"implementation","branch":"ai/objective-first-repair-f5e2223b539e","reason":"anchored_edit_invalid","status":"blocked","metrics":{"receiptBytes":20026,"releaseCount":0,"toolCallCount":4,"repeatedCallCount":0,"executorlessWaitMs":171772,"firstUsefulResultAt":"2026-09-26T10:18:09.489Z","recoveryAttemptCount":0,"ownerInterruptionCount":0},"version":"1.58.284-control-plane-source-fast-path","prNumber":null,"terminal":false,"missionId":"f5e2223b-539e-455e-aa98-30fa5a140fba","operation":"execute_mission","proofGate":"repair_mission_execution_blocked","sourceSha":null,"timingsMs":{"gateMs":0,"proofMs":0,"handlerMs":1494,"releaseMs":0,"mutationMs":0,"repositoryMs":0,"prReadinessMs":0,"approvedPlanMs":1494,"missionSetupMs":216,"providerAuthMs":0,"shipAndProveMs":0,"ledgerPrepareMs":216,"ledgerReconcileMs":0,"lineageReconcileMs":0,"resolvePreflightMs":216,"repositoryMutationMs":0,"repositoryProviderMs":0,"authoritativeLedgerMs":0,"ledgerAsyncDispatchMs":0,"repositoryAtomicCommitMs":0,"repositoryBranchCreateMs":0,"totalSynchronousLedgerMs":216,"asyncBookkeepingDispatchMs":0,"ledgerAuthoritativeCommitMs":0,"repositoryPullRequestCreateMs":0},"nextAction":null,"receiptRef":{"mode":"full","missionId":"f5e2223b-539e-455e-aa98-30fa5a140fba"},"performance":null,"deploymentId":null,"releaseState":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","pendingProofKinds":["runtime"],"verificationState":null,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":1424,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true,"requestContractState":"pending"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-26T10:20:34.645159+00:00","proof_gate":"repair_mission_execution_blocked","source_sha":null,"external_id":null,"receipt_type":"execute_mission","idempotency_key":"mission:f5e2223b-539e-455e-aa98-30fa5a140fba:execute_mission:repair_mission_execution_blocked:current-generation","mission_step_id":"09ec20e1-1c19-4a82-9110-7e58eab4bbb2","command_center_event_id":"f5e2223b-539e-455e-aa98-30fa5a140fba"},{"id":"bedaaae0-8681-4013-8285-b62933c542aa","source":"cc-execution","status":"waiting","payload":{"kind":"heartbeat","message":"Still active in implementation.","nextAction":{"lane":"cc-execution","action":"reconcile_pull_request","reason":"durable_state:pull_request","automationAllowed":true,"ownerActionRequired":false},"silenceBudgetMs":15000,"semanticCheckpointSignature":"{\"stateMachineVersion\":1,\"phase\":\"implementation\",\"ownerFacingState\":null,\"latest\":{\"kind\":\"receipt\",\"key\":\"owner_progress_heartbeat\",\"status\":\"waiting\",\"proofGate\":\"owner_progress_heartbeat\"},\"activeStep\":{\"key\":\"pull_request\",\"status\":\"ready\",\"lane\":\"cc-execution\"},\"nextStep\":{\"key\":\"release\",\"status\":\"ready\",\"lane\":\"production-release-conductor\"},\"nextSafeAction\":{\"action\":\"reconcile_pull_request\",\"lane\":\"cc-execution\",\"reason\":\"durable_state:pull_request\",\"automationAllowed\":true,\"ownerActionRequired\":false},\"executionOwnership\":{\"active\":false,\"state\":\"waiting\",\"executor\":null,\"lane\":\"cc-execution\",\"nextAction\":\"reconcile_pull_request\",\"recoveryOwner\":\"cc-execution\"},\"acceptance\":{\"total\":1,\"verified\":0,\"pending\":1,\"percent\":0,\"satisfied\":false,\"verifiedIds\":[],\"pendingIds\":[\"proof-production\"]},\"stall\":{\"stalled\":false,\"reason\":\"within_deadline\",\"step\":\"runtime_proof\",\"deadlineAt\":\"2026-10-06T14:54:20.947247+00:00\",\"recoveryAction\":null},\"blocker\":null,\"terminal\":false,\"branch\":null,\"prNumber\":null,\"sourceSha\":null,\"deploymentId\":null}"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-06T12:24:20.281535+00:00","proof_gate":"owner_progress_heartbeat","source_sha":null,"external_id":null,"receipt_type":"owner_progress_heartbeat","idempotency_key":"mission:8461f374-86b0-422f-bb81-3fb39febaab9:owner-progress-heartbeat:119419297","mission_step_id":"a036e1a4-6bb7-4248-b530-a16b22bcaaa4","command_center_event_id":"8461f374-86b0-422f-bb81-3fb39febaab9"},{"id":"bee20317-dfab-4c4b-9b0d-fbb44cdfaed7","source":"cc-execution","status":"retryable","payload":{"ok":false,"jobId":null,"phase":"runtime_proof","branch":"ai/legacy-mission-id-terminalization-20260910","reason":"retryable_provider_transport:POST:The operation was aborted due to timeout","status":"retryable","metrics":{"receiptBytes":0,"releaseCount":1,"toolCallCount":0,"repeatedCallCount":0,"ownerInterruptionCount":0},"version":"1.58.90-mission-terminalization","prNumber":2281,"terminal":false,"missionId":"20aae700-7266-447e-844c-b0d60ddea665","operation":"execute_mission","proofGate":"repair_mission_execution_retryable","sourceSha":null,"timingsMs":{"gateMs":0,"proofMs":0,"handlerMs":8617,"releaseMs":0,"mutationMs":0,"repositoryMs":0,"prReadinessMs":0,"approvedPlanMs":0,"missionSetupMs":3526,"providerAuthMs":0,"shipAndProveMs":0,"ledgerPrepareMs":362,"ledgerReconcileMs":0,"lineageReconcileMs":3164,"resolvePreflightMs":3526,"repositoryMutationMs":8617,"repositoryProviderMs":0,"authoritativeLedgerMs":0,"ledgerAsyncDispatchMs":0,"repositoryAtomicCommitMs":0,"repositoryBranchCreateMs":0,"totalSynchronousLedgerMs":362,"asyncBookkeepingDispatchMs":0,"ledgerAuthoritativeCommitMs":0,"repositoryPullRequestCreateMs":0},"nextAction":null,"receiptRef":{"mode":"full","missionId":"20aae700-7266-447e-844c-b0d60ddea665"},"performance":null,"deploymentId":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":1556,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-10T06:35:42.193134+00:00","proof_gate":"repair_mission_execution_retryable","source_sha":null,"external_id":"2281","receipt_type":"execute_mission","idempotency_key":"mission:20aae700-7266-447e-844c-b0d60ddea665:execute_mission:repair_mission_execution_retryable:generation-3","mission_step_id":"fcc4502e-7930-43dc-91dc-49f9dc193586","command_center_event_id":"20aae700-7266-447e-844c-b0d60ddea665"},{"id":"bee41250-86e6-43da-93dc-29f40e2a548a","source":"forgejo-runtime","status":"pending","payload":{"failed":[],"states":{"forgejo-main/source":"success","forgejo-release/workflow":"pending","cc-execution/runtime-proof":"success"},"mainSha":"dca276b3be8f3bb90dcd6d0fdda3099348f7d304","missing":[],"pending":["forgejo-release/workflow"],"required":["forgejo-main/source","forgejo-release/workflow","cc-execution/runtime-proof"],"sourceSha":"dca276b3be8f3bb90dcd6d0fdda3099348f7d304","releaseState":"pending","sourceInMain":true,"compareStatus":"identical","forgejoWorkflowProof":{"url":"https://git.knocklaunch.app/noel/KnockLaunchOS/actions/runs/1773","runId":1773,"status":"running","conclusion":null,"failedJobs":[],"diagnostics":null},"onrunnerRuntimeProof":null,"releaseSourceVerified":true,"ccExecutionRuntimeProof":{"liveSha":"dca276b3be8f3bb90dcd6d0fdda3099348f7d304","deploymentId":"forgejo-main-dca276b3be8f3bb90dcd6d0fdda3099348f7d304","compareStatus":"identical","identitySource":"local_build_metadata","runtimeVersion":"1.48.9-single-mutation-lane","containsSourceSha":true},"exactReleaseVerifiedAfterMainAdvanced":false},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-08-20T16:58:05.830215+00:00","proof_gate":"canonical_release_pending","source_sha":"dca276b3be8f3bb90dcd6d0fdda3099348f7d304","external_id":"forgejo-main-dca276b3be8f","receipt_type":"canonical_release_status","idempotency_key":"mission:390d81ba-d9a3-4543-ba4c-5a9284676ed9:forgejo-release-status:dca276b3be8f3bb90dcd6d0fdda3099348f7d304:pending:forgejo-main/source=success|forgejo-release/workflow=pending|cc-execution/runtime-proof=success","mission_step_id":"1f402f6e-c9e6-4a51-9d6f-999e85561f71","command_center_event_id":"390d81ba-d9a3-4543-ba4c-5a9284676ed9"},{"id":"bee6c7f7-aafe-4579-a480-55f9d99e5962","source":"forgejo","status":"waiting","payload":{"branch":"ai/objective-first-repair-285944eff62b","prNumber":3472,"nextAction":null,"mergeCommitSha":"9a8d43ce9207634c79361312e96f140f091862a9","branchDeletedAfterMerge":true,"correctiveGenerationCreated":false},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-23T02:04:45.155196+00:00","proof_gate":"forgejo_merged_pr_is_authoritative_source_lineage","source_sha":"9a8d43ce9207634c79361312e96f140f091862a9","external_id":"3472","receipt_type":"source_lineage_merged_pr_authoritative","idempotency_key":"mission:229922aa-c0ec-48fd-9e28-94d154d04d7c:merged-pr:3472:9a8d43ce9207634c79361312e96f140f091862a9","mission_step_id":"5b6e3b0b-02f3-444b-ab90-be00bf76e8ac","command_center_event_id":"229922aa-c0ec-48fd-9e28-94d154d04d7c"},{"id":"bee7d93a-f734-43b4-816d-de80cad1b1c7","source":"cc-execution","status":"waiting_for_gate","payload":{"ok":true,"jobId":null,"phase":"objective_received","branch":"ai/system-stability-queue-runs-fallback-20260904","reason":"fresh_pr_provider_receipt_already_proves_auto_progress_gate_notifier_owns_next_state","status":"waiting_for_gate","metrics":{"receiptBytes":0,"releaseCount":0,"toolCallCount":0,"repeatedCallCount":0,"ownerInterruptionCount":0},"version":"1.58.60-queue-reconcile-dispatch","prNumber":1738,"terminal":false,"missionId":"181e14f7-f600-40f3-bf90-cc40046e6202","operation":"execute_mission","proofGate":"repair_mission_fresh_pr_handed_off_to_gate","sourceSha":null,"timingsMs":{"gateMs":0,"proofMs":0,"handlerMs":4874,"releaseMs":0,"mutationMs":0,"repositoryMs":0,"prReadinessMs":0,"approvedPlanMs":0,"missionSetupMs":732,"providerAuthMs":0,"shipAndProveMs":0,"ledgerPrepareMs":732,"ledgerReconcileMs":0,"lineageReconcileMs":0,"resolvePreflightMs":732,"repositoryMutationMs":4874,"repositoryProviderMs":3318,"authoritativeLedgerMs":0,"ledgerAsyncDispatchMs":0,"repositoryAtomicCommitMs":1983,"repositoryBranchCreateMs":0,"totalSynchronousLedgerMs":732,"asyncBookkeepingDispatchMs":0,"ledgerAuthoritativeCommitMs":0,"repositoryPullRequestCreateMs":1335},"nextAction":"Canonical KnockLaunch Gate notifier and mission supervisor own progression from this exact PR head; do not synchronously poll Forgejo from the owner request.","receiptRef":{"mode":"full","missionId":"181e14f7-f600-40f3-bf90-cc40046e6202"},"performance":null,"deploymentId":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":3850,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-04T18:35:42.226253+00:00","proof_gate":"repair_mission_fresh_pr_handed_off_to_gate","source_sha":null,"external_id":"1738","receipt_type":"execute_mission","idempotency_key":"mission:181e14f7-f600-40f3-bf90-cc40046e6202:execute_mission:repair_mission_fresh_pr_handed_off_to_gate:current-generation","mission_step_id":"298ec602-339a-4198-bfb7-98fc58bd29b3","command_center_event_id":"181e14f7-f600-40f3-bf90-cc40046e6202"},{"id":"beeaa44c-d7c8-464d-881f-9783f5bf251f","source":"cc-execution","status":"waiting","payload":{"body":{"ship":true,"files":[{"path":"src/shells/TenantModesShell.tsx","content":"import { type CSSProperties, type ReactNode, useEffect, useMemo, useRef, useState } from 'react';\nimport { Link, Navigate, useLocation } from 'react-router-dom';\nimport { ArrowUpRight, BadgeDollarSign, BarChart3, BriefcaseBusiness, Building2, CalendarDays, CircleAlert, ClipboardCheck, FileText, Home, Layers3, ListTodo, Mail, Radar, Users } from 'lucide-react';\nimport MiscAwareAccountMenu from '@/components/MiscAwareAccountMenu';\nimport TenantLogo from '@/components/branding/TenantLogo';\nimport { CanonicalWorkspaceSidebarTrigger, useWorkspaceSidebarRegistration } from '@/components/layout/TenantLayoutControl';\nimport { ApplicationFrame, ApplicationSurface } from '@/components/layout/ApplicationFrame';\nimport { resolveTenantWorkspaceTheme } from '@/lib/tenants/tenantWorkspaceTheme';\nimport TenantModeNavigation, { type TenantModeNavigationItem } from '@/components/tenant-modes/TenantModeNavigation';\nimport { useMultiTenant } from '@/contexts/MultiTenantContext';\nimport { OwnerEmbeddedPresentationContext, OwnerShellNestingContext } from '@/layouts/OwnerLayout';\nimport { resolveTenantBackgroundUrl } from '@/lib/tenantBackground';\nimport { resolveTenantMediaBranding } from '@/lib/tenants/tenantMediaBranding';\nimport { getTenantDashboardPathForTenant } from '@/lib/tenantUtils';\nimport { getTenantApplicationByReference } from '@/config/applicationCapabilityRegistry';\nimport { tenantMediaAssetUrl } from '@/lib/tenantMedia';\nimport { resolveTenantWorkspaceTargetPath } from '@/routes/tenantApplicationRouteResolver';\nimport { getTenantModeApplicationsForRole, getTenantModeCardsForRole, modeToken, modesCardOverlayBackground, type TenantModeApplicationConfig, type TenantModeCardConfig } from '@/shells/modesTenantShell';\nimport { LazyFenderBenderModeTitleArt, type FenderBenderModeTitleKey } from '@/shells/modesTitleArt';\nconst DEFAULT_ACCENTS = ['#67d7ff', '#68e0a8', '#f1bf72', '#b9a0ff'] as const;\nconst MODES_DESKTOP_MEDIA_QUERY = '(min-width: 1024px)';\nfunction useModesDesktopViewport() { const [isDesktop, setIsDesktop] = useState(() => typeof window === 'undefined' ? true : window.matchMedia(MODES_DESKTOP_MEDIA_QUERY).matches); useEffect(() => { const media = window.matchMedia(MODES_DESKTOP_MEDIA_QUERY); const sync = () => setIsDesktop(media.matches); sync(); media.addEventListener('change', sync); return () => media.removeEventListener('change', sync); }, []); return isDesktop; }\nfunction iconForMode(mode: TenantModeCardConfig) { const token = `${mode.key} ${mode.title} ${mode.subtitle || ''}`.toLowerCase(); if (/decision|exception|approval|risk|attention/.test(token)) return CircleAlert; if (/opportunit|lead|pipeline|growth|referral/.test(token)) return Radar; if (/business|portfolio|brokerage|company/.test(token)) return Building2; if (/operation|job|production|dispatch|service|work/.test(token)) return BriefcaseBusiness; if (/money|revenue|sales|invoice|finance|paid|commission/.test(token)) return BadgeDollarSign; if (/schedule|calendar|appointment|showing/.test(token)) return CalendarDays; if (/team|agent|crew|staff|customer|contact|client/.test(token)) return Users; if (/message|mail|inbox|communication/.test(token)) return Mail; if (/document|file|form|photo/.test(token)) return FileText; if (/task|follow|queue|next/.test(token)) return ListTodo; if (/report|performance|analytics|pulse/.test(token)) return BarChart3; if (/check|event/.test(token)) return ClipboardCheck; return Home; }\nfunction bigPapisTitleMode(tenant: any, card: TenantModeCardConfig): FenderBenderModeTitleKey | null { const tenantSlug = modeToken(tenant?.company_slug || tenant?.name); if (tenantSlug !== 'big-papis' && tenantSlug !== 'big-papis-coquito-iceys') return null; const key = modeToken(card.key || card.title); if (key === 'plan') return 'plan'; if (key === 'popup' || key === 'pop-up') return 'popup'; if (key === 'event' || key === 'booked-event') return 'event'; if (key === 'office' || key === 'back-office' || key === 'backoffice') return 'office'; return null; }\nfunction isBigPapisTenant(tenant: any): boolean { const candidates = [tenant?.company_slug, tenant?.company_dba_name, tenant?.company_legal_name, tenant?.name].map(modeToken); return candidates.some((value) => value === 'big-papis' || value === 'big-papis-coquito-iceys'); }\ntype CurriPortfolioBusiness = { key: string; name: string; route: string; role: string; summary: string };\nfunction curriControlCenterBusinesses(tenant: any): CurriPortfolioBusiness[] { const settings = tenant?.settings && typeof tenant.settings === 'object' && !Array.isArray(tenant.settings) ? tenant.settings as Record<string, any> : {}; if (modeToken(settings.workspace_variant) !== 'curri-control-center') return []; const profile = settings.control_center_profile && typeof settings.control_center_profile === 'object' && !Array.isArray(settings.control_center_profile) ? settings.control_center_profile as Record<string, any> : {}; const children = Array.isArray(profile.child_tenants) ? profile.child_tenants : []; return children.map((raw: any): CurriPortfolioBusiness | null => { const name = String(raw?.name || '').trim(); const route = String(raw?.route || '').trim(); const role = modeToken(raw?.role); if (!name || !route.startsWith('/') || route.startsWith('//') || /(^|\\/)\\.\\.?($|\\/)/.test(route.split(/[?#]/, 1)[0])) return null; const summary = role.includes('realtor') ? 'Run the brokerage: leads, clients, transactions, documents, and closing.' : role.includes('property') || role.includes('maintenance') ? 'Run property operations: dispatch, route, jobs, customers, and money.' : 'Open this operating business workspace.'; return { key: modeToken(raw?.slug || name), name, route, role, summary }; }).filter((entry: CurriPortfolioBusiness | null): entry is CurriPortfolioBusiness => Boolean(entry)); }\nfunction normalizePath(path: string): string { return String(path || '/').split('?')[0].split('#')[0].replace(/\\/+$/g, '') || '/'; }\nexport function isTenantModesLandingLocation(pathname: string, search: string, homePath: string): boolean { if (normalizePath(pathname) !== normalizePath(homePath)) return false; const params = new URLSearchParams(search); return !modeToken(params.get('mode')); }\nfunction safeTenantHome(tenant: any): string { try { return getTenantDashboardPathForTenant(tenant); } catch { const slug = modeToken(tenant?.company_slug || tenant?.name) || 'workspace'; return `/${slug}`; } }\nfunction tenantRootFromHome(homePath: string): string { const first = normalizePath(homePath).split('/').filter(Boolean)[0] || ''; return first ? `/${first}` : ''; }\nexport function tenantScopedModeRoute(route: string | undefined, homePath: string): string { const raw = String(route || '').trim(); if (!raw) return homePath; const tenantRoot = tenantRootFromHome(homePath); if (!tenantRoot || raw.startsWith('//') || /^[a-z][a-z0-9+.-]*:/i.test(raw) || /(^|\\/)\\.\\.?($|\\/)/.test(raw.split(/[?#]/, 1)[0])) return homePath; try { const source = raw.startsWith('?') || raw.startsWith('#') ? `${normalizePath(homePath)}${raw}` : raw.startsWith('/') ? raw : `/${raw.replace(/^\\/+/, '')}`; const parsed = new URL(source, 'https://knocklaunch.local'); const path = normalizePath(parsed.pathname); if (path === tenantRoot || path.startsWith(`${tenantRoot}/`)) return `${parsed.pathname}${parsed.search}${parsed.hash}`; const targetPath = resolveTenantWorkspaceTargetPath(path); if (!targetPath) return homePath; parsed.pathname = `${tenantRoot}/${targetPath.replace(/^\\/+/, '')}`; return `${parsed.pathname}${parsed.search}${parsed.hash}`; } catch { return homePath; } }\nfunction withMode(route: string | undefined, homePath: string, modeKey: string): string { const source = tenantScopedModeRoute(route, homePath); try { const parsed = new URL(source, 'https://knocklaunch.local'); parsed.searchParams.set('mode', modeKey); return `${parsed.pathname}${parsed.search}${parsed.hash}`; } catch { const separator = source.includes('?') ? '&' : '?'; return `${source}${separator}mode=${encodeURIComponent(modeKey)}`; } }\nexport function browserDisplayableMediaUrl(...values: Array<string | null | undefined>): string | null { for (const value of values) { const raw = String(value || '').trim(); if (raw) return raw; } return null; }\nfunction modeImage(mode: TenantModeCardConfig): string | null { return browserDisplayableMediaUrl(mode.image_asset_id ? tenantMediaAssetUrl(mode.image_asset_id) : null, mode.image_url, mode.fallback_image_url, mode.default_image_url); }\nfunction isPartyRentalTenant(tenant: any): boolean { const settings = tenant?.settings && typeof tenant.settings === 'object' && !Array.isArray(tenant.settings) ? tenant.settings as Record<string, any> : {}; const candidates = [settings.workspace_variant, settings.business_type, settings.declared_business_type, tenant?.tenant_type].map(modeToken); return candidates.some((value) => value === 'party-rentals' || value === 'event-rentals'); }\nfunction isPandaEventRentalTenant(tenant: any): boolean { const values = [tenant?.company_slug, tenant?.company_dba_name, tenant?.company_legal_name, tenant?.name].map(modeToken); return values.some((value) => value.includes('panda')); }\nfunction isEntertainmentModesTenant(tenant: any): boolean { const settings = tenant?.settings && typeof tenant.settings === 'object' && !Array.isArray(tenant.settings) ? tenant.settings as Record<string, any> : {}; const classification = settings.tenant_classification && typeof settings.tenant_classification === 'object' && !Array.isArray(settings.tenant_classification) ? settings.tenant_classification as Record<string, any> : {}; const manifest = settings.tenant_manifest && typeof settings.tenant_manifest === 'object' && !Array.isArray(settings.tenant_manifest) ? settings.tenant_manifest as Record<string, any> : {}; const blueprintSource = settings.business_operating_blueprint || manifest.businessOperatingBlueprint; const blueprint = blueprintSource && typeof blueprintSource === 'object' && !Array.isArray(blueprintSource) ? blueprintSource as Record<string, any> : {}; const primaryArchetype = modeToken(classification.primary_archetype); const businessType = modeToken(blueprint.businessTypeKey || blueprint.business_type_key || settings.declared_business_type || settings.business_type || tenant?.tenant_type); return primaryArchetype === 'entertainment' || ['entertainment', 'entertainment-dj', 'dj', 'disc-jockey', 'mobile-dj', 'wedding-dj'].includes(businessType); }\nfunction hrefIdentity(value: string): string { try { const parsed = new URL(value, 'https://knocklaunch.local'); const entries = [...parsed.searchParams.entries()].sort(([leftKey, leftValue], [rightKey, rightValue]) => leftKey.localeCompare(rightKey) || leftValue.localeCompare(rightValue)); const search = new URLSearchParams(entries).toString(); return `${normalizePath(parsed.pathname)}${search ? `?${search}` : ''}`; } catch { return value; } }\nexport function withModeApplication(route: string | undefined, homePath: string, modeKey: string, applicationKey: string): string { const source = withMode(route, homePath, modeKey); try { const parsed = new URL(source, 'https://knocklaunch.local'); const key = modeToken(applicationKey); if (key) parsed.searchParams.set('modeApp', key); return `${parsed.pathname}${parsed.search}${parsed.hash}`; } catch { return source; } }\nfunction workspaceTargetForHref(href: string, homePath: string): string | null { try { const parsed = new URL(href, 'https://knocklaunch.local'); const scoped = tenantScopedModeRoute(`${parsed.pathname}${parsed.search}${parsed.hash}`, homePath); return resolveTenantWorkspaceTargetPath(new URL(scoped, 'https://knocklaunch.local').pathname); } catch { return null; } }\nfunction applicationOwnsHref(application: TenantModeApplicationConfig, href: string, homePath: string): boolean { const current = workspaceTargetForHref(href, homePath); const target = workspaceTargetForHref(String(application.route || ''), homePath); return Boolean(current && target && (current === target || current.startsWith(`${target}/`))); }\nexport function canonicalModeWorkspaceHref(href: string, homePath: string, modeKey: string, applicationKey = ''): string { const source = tenantScopedModeRoute(href, homePath); try { const parsed = new URL(source, 'https://knocklaunch.local'); parsed.searchParams.set('mode', modeKey); const appKey = modeToken(applicationKey); if (appKey) parsed.searchParams.set('modeApp', appKey); else parsed.searchParams.delete('modeApp'); return `${parsed.pathname}${parsed.search}${parsed.hash}`; } catch { return source; } }\nexport function resolveModeApplicationForHref(applications: readonly TenantModeApplicationConfig[], href: string, homePath: string, _modeKey: string): TenantModeApplicationConfig | null { let requestedKey = ''; try { requestedKey = modeToken(new URL(href, 'https://knocklaunch.local').searchParams.get('modeApp')); } catch {} if (requestedKey) { const requested = applications.find((application) => application.key === requestedKey); if (requested && applicationOwnsHref(requested, href, homePath)) return requested; } return applications.find((application) => applicationOwnsHref(application, href, homePath)) || null; }\nfunction iconForApplication(application: TenantModeApplicationConfig) { return iconForMode({ key: application.key, title: application.title, subtitle: application.description }); }\nexport default function TenantModesShell({ children }: { children: ReactNode }) { return <TenantModesShellBase>{children}</TenantModesShellBase>; }\n"},{"path":"src/lib/tenants/tenantWorkspaceTheme.ts","content":"export type TenantWorkspaceTheme = {\n  contract: 'TENANT_WORKSPACE_THEME_V1';\n  scheme: string;\n  primary: string;\n  secondary: string;\n  accent: string;\n  background: string;\n  surface: string;\n  text: string;\n};\n\nconst HEX=/^#[0-9a-f]{6}$/i;\nconst pick=(value:unknown,fallback:string)=>typeof value==='string'&&HEX.test(value.trim())?value.trim():fallback;\n\nexport function resolveTenantWorkspaceTheme(tenant:any):TenantWorkspaceTheme {\n  const settings=tenant?.settings&&typeof tenant.settings==='object'&&!Array.isArray(tenant.settings)?tenant.settings:{};\n  const raw=settings.workspace_theme&&typeof settings.workspace_theme==='object'&&!Array.isArray(settings.workspace_theme)?settings.workspace_theme:{};\n  const isTax=String(tenant?.tenant_type||'').trim().toUpperCase().replace(/[\\s-]+/g,'_')==='TAX_SERVICES'||String(settings.workspace_variant||'').trim().toLowerCase()==='tax_office';\n  const defaults=isTax\n    ? {scheme:'tax-professional',primary:'#2563EB',secondary:'#0F766E',accent:'#B45309',background:'#071827',surface:'#0B2234',text:'#F8FAFC'}\n    : {scheme:'tenant-default',primary:'#3B82F6',secondary:'#0F766E',accent:'#7C3AED',background:'#05080D',surface:'#0B1220',text:'#F8FAFC'};\n  return {\n    contract:'TENANT_WORKSPACE_THEME_V1',\n    scheme:String(raw.scheme||defaults.scheme),\n    primary:pick(raw.primary,defaults.primary),\n    secondary:pick(raw.secondary,defaults.secondary),\n    accent:pick(raw.accent,defaults.accent),\n    background:pick(raw.background,defaults.background),\n    surface:pick(raw.surface,defaults.surface),\n    text:pick(raw.text,defaults.text),\n  };\n}\n"},{"path":"src/components/CRMUserMenu.tsx","content":"import { useEffect, useMemo, useState, useId, useCallback, useContext, type ComponentType, type ReactElement } from \"react\";\nimport { useLocation, useNavigate } from \"react-router-dom\";\nimport { useQuery } from \"@tanstack/react-query\";\nimport {\n  Bell,\n  Building2,\n  CheckCircle2,\n  ChevronDown,\n  ClipboardList,\n  FileText,\n  Home,\n  LayoutDashboard,\n  LogOut,\n  MessageSquare,\n  Phone,\n  PlugZap,\n  Settings,\n  Shield,\n  User,\n  Users,\n  Wrench,\n  WalletCards,\n} from \"lucide-react\";\nimport { Button } from \"@/components/ui/button\";\nimport { Badge } from \"@/components/ui/badge\";\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuLabel,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/components/ui/dropdown-menu\";\nimport { useAuth } from \"@/contexts/AuthContext\";\nimport { useMultiTenant } from \"@/contexts/MultiTenantContext\";\nimport { cn } from \"@/lib/utils\";\nimport TenantLogo from \"@/components/branding/TenantLogo\";\nimport { supabase } from \"@/integrations/supabase/client\";\nimport { getTenantApplicationByTenantScopedPath } from \"@/config/applicationCapabilityRegistry\";\nimport CurriPortfolioReturnMenuItem from '@/components/curri/CurriPortfolioReturnMenuItem';\nimport { isTenantAvatarMenuTargetAllowed, resolveTenantAvatarMenuContract } from \"@/lib/tenants/tenantAvatarMenuContract\";\nimport { TenantApplicationChromeContext } from \"@/contexts/TenantApplicationChromeContext\";\nimport { tenantExperienceFamily } from '@/shells/modesTenantShell';\nimport { resolveTenantMediaBranding } from '@/lib/tenants/tenantMediaBranding';\n\n// KNOCKLAUNCH_CHANGE_STAMP\n// changed_file: src/components/CRMUserMenu.tsx\n// changed_at_utc: 2026-07-15T13:30:00Z\n// branch: ai/experience-studio-clean-20260715\n// operator: Command Center Maximum Operator\n// purpose: Restore valid source after raw patch markers were committed.\nconst TENANT_SELECTOR_PATH = \"/select-tenant?manual=1\";\nconst BIG_PAPIS_APPROVED_LOGO_VIDEO = \"https://pub-dff1261603f24e1cb9f9c24801e4a94b.r2.dev/animate-this-exact-logo-subtly-for-a-cinematic-ope%20(1)_alpha.mp4\";\n// Legacy embedded artwork retained temporarily for source compatibility; live Big Papi avatars use the approved current logo video below.\nconst BIG_PAPIS_AVATAR_DATA_URI = \"data:image/webp;base64,UklGRrIvAABXRUJQVlA4IKYvAAAQjwCdASrAAMAAPm0qkEYkIqGhNjlusIANiWwAvGYs2H5Ffn/NPrj91/uf64/vvuf6munvK96P85n+f9SP6N/7fuDfrV+wXua/5P7He6v91/UT/Qv9P+2/vO/8H9qvdb/k/sz+Qj+3f7P//9hN6An7lenL+6vwo/2z/pfu97VP//9gD/7+2vzW8M3hp+L/KHzb/I/oH8v/df3I/xPxzfYOSPr91GvmX4Q/d/470Q/5fiT+ZfwX/A/xPsC/l39B/zH5oe8T9z3He8f6r9mPYO9ufsf/E/yv+J/Yf0/dXHxB/2PcC/XH/geWv4XnpXsBfo7/yf533c/7//7f7X0PfVn/r/1XwG/zb+6f9DshekkyIJ0cbpira7U5HdqvVEyNOmNrg97D0/X/kU5niU3WHWac9eWZo0zvFt7FeyDCeSiqojbyyDkH4z2sgQlQ033AOv5l+iP/ISJl+FNvSyREDrGqoJO/81htiH1y9iPFCTlQg97yeDLyxNlkKuXXxcCv6eDOU8UVOATgxF6+BAQMVczDZ//76n+sxerPUMbJkFs9Xy8gmNqVzpFRjm4URGRo2UAjISz1OIpugRYQdBrroJmI3yIu2JiT2sEJ1dsdquPQJYs1pTfBJWeSOpuIyd0f3Q+5TAajzalYY8nxUXT9NFmZdfez2bUrFIfTZTsdHUXKcSkAHeFNyGnPJst/3G2XudNVYKrwtTqzdQ/ADYgsUgzcrHp7935AJL74p+g8QRA6KMQ4S1qtvWq2DMQrJ3+9Ondo8dgSCc3S2UUnhQ7Tb/9jRAZYdfabhV12dF0AsJ9dhlnYkwawt7AUjdR474hpRPpwj3t1EaVOh9tqMVEanU0QzOcADlaMI8AzROFL9zzeM34VAZLi0rOEzPqy350bEEX04As1bONlDa8ihpwde53PsCa9RYx0/wKpF66zf7+jjr7XSwNXfCc/7wzVsGrOyYxh+I2xfTujqLb4Vbq4LqwHeioQRRVPZuYUOSv5aJIbXop4kq3PJSXp7062qYBnIum7TNkSRvC3xubMV3o6llIO9w2wK7DhMIfwcPRLds88ICxfMYSwdTuxa1n9xGMHJOSVYBrMIx46uZeZST2GIfa1GXgfwX9zCX6Z0KxbUktlSE/RaoTBgj6nASc9SXQBRdACOMXG6qUF7W8GreRik+ZyLy9hrpssO9iuAGnSI6Q+x4LEZJHoaVhKW6EOhc7dwR68KDidx7LeZ2pu1PWkUWnEV6CzXGLzQ7GaxUs/RUJ38OVwHI2JydoXZ2PTK81JqZ3vfVIJ4/6A6yKBy0B9zlkmrFBbVZgW9unM9wxWP5ggXU+wbtDPOTp5VRvKS4SXACYLdAn2CGUtOVsVEL6HkAA/0OLfJ6Nclz+n/5VeejUfsLwzhx5pbNq3gDn3RLKQT5zrsW//+bMl5eBywGmF/iWgFr+BNtuXJPWUftYUvBp1LfmssF+OLMLXCHW4HRpWQrV6MnJVc3qGPb+A/B+lPpfoiqAY1x4TJliq6z4DljXakWbzgEk9444/teRb1s22PZUAAP79FlqQqYEH3b4ZCqKuUaW52kHG7xAObv1G1yULUUNccmVgXODZ3Xj1edd+g4xin2vL1adO62j48rBebATdCSKlaSxujIjefvBuq7o0TY4UI6WpFuIGOBSnIRDKI+dXwy5TwQcDQKtowyeu4v9aNK30BoCwwbGMc02pCgIcbtDAwar5cDpcJtqXtFHQar/pXXW7uLwyx43RI0GEwgz8iUIHgO13x6PK08P+eewBylx1j/HrJJ4pwlYX/iw7P2gnbTCJhJJENgPQDW55ZgR8W9rAyNruQ6DI4YuMl/7WFnEXcLsNFGFJl7NOcAa3CfjjDSRQw8R6V8kg9V6pBDli8y1SsPtGRYJWEkaDHiONRF7DhQ7p7kFIf2USrOFD61f8SoJCYxxuSe6dpiA6X3wOjaMdYTCGyIiVt/wZTcmpilSw/vGJF9xyAaXagBvVhODhv9d5Y6zAM44X+w1QNlQWtm1lBhYKLVFWtE6oCF5IKh2GRl9y6f5ZkPo+q/qrFpHPtWvnjkPh6/k4jFWQGZhkzhWwfgTaiz7e0hMrNhZAhNL1bxg9hvvkWfWuLlIsn80TgwIVfLXv9vhYjdY8L44IkSY5wiD831xpGIvAnxOc7iDNCEPJ3r5TtPsGUozcf6RESqXcf5Cs/EoAcBZIfiO5M+/kXpQ49lztd8CWzpQBTmSpfheFp+xjqcatZ05AaQT0aCTAXSOS3FqjswpFu+Bmm5QeN5qAo9dBzo9AYHzDhuTbDohjz/tAzjUUdx10/3uSluoPULjI/RfMF8VUSsQ4lhER99xHQdVplGRr0htcBboWqH6VNpaj7cQD48NSLI+v6lCVjXYlJIVhcQDEX/zlpG2hJIUS8ckVPnR7/D77kTD6vFW96bLq6XXMTYdqMWKD9PPYAa2Fo1WGqV8m2lUL7jqPVuNa84fpqxqHXp4M5N9eSD5LNeR4gwdmfMDmst+gXORa1mEvjckOEgZ99CeJ5/nbjBI1TdtAF/ih7B6pCAUcQ6ikjTLuszGgh8nG7qer3cy0rZ/pg1mb4T1vmo3EIYAr3IJadVvoLNy9eps+YwcRkv1KQu5yGa3iodEVc3xixeQvdoFY6zzuDtjEs7AIdht83xjxPbU4UXct1h9fmid2lQ0OLSAfOurCuhnozopzf5Aez2IeLiKSfdKQlcC5rUJIN7F3KRz5U+DF7vbs8EivQgoxHSjYhO8o6By6AmE7XWYjjX2t5Ac/1S+QnCIDDG6vz3U9Juo7xryYgKodHhFhnxKC5FJYuCIT+YhrWYqZvbNYTOSOvKMJE0QLW1Ba2jFTOT0qvIzBhkC5ml8GC0X5q+QGzfLuiZh3LhZcXGUQKn55sNRyCLfxIVTCXI32MSu2lsHZl6X2kE2XjFpiPFL+241IQQkVEusumZUK9KphXHOkZWwKYvVdTCMPDp2BhV319npshcz80EGIhg6XwJ2Fk8fHoYRhdyUuo+ZtuwOsBsN9Iji53rHDtA84nk58r9+07S2oMnOV2NMmKkLb1Q7rlwfxmAiC867z49b/OyerWytqpCHTt+H+wDfE7p9nkz4Gdbd8FnBg1f8BEjdcCa3zlrxU301nREHdH0LAqogpE9JVyEDxHyGZx0TplIn2gcXbeP+xIIujPxPZw2HPiZSZTiBkX7BWGDNnDY58QHRCJgdj1gp9196l1xEdhY1MLZA1HI2lGWDqtbXmRG1qr0suWErNxR/+MW8AoE9VqvFk8k8vvLNY4pZwPSqcH9qduN38O53GZOnV0Bi7KZ2lds2Ba7ya1MFdF/0p/6fJ65rEdI1QLQB3AV9VUlPAaNtES4gLkumG0Ry14ddgIBgRa63N9658up3pvTujvxYFL4gU5NVaFakG45QMvM6jm8vcl//CIviOuoGb5Az1z3DylafSLbrfpGhWkt3qdsOguSDJnHveuOTt/cBmEUD62johXiAGcWWzWwaMkA2elsCnF5XPVG7pAlibKRDYah9VgDyvmrxOx1mSQiBa64vHZcK8HVgYbwBGkNTSUfN9lZT/M5K274EJ82/hI6xWCIkXSxY5pCFvpgrgPLjc1xgEuRzl98+W+YYo1uUSuPa3Fw83XZ+kmNHubZyQY85FDf+6z5XtePU+wBhCpNndnL152hhxZ3B1k51dfAwXfNeVlFerpNwAl5nMjrWHRCN4tZB3QtjGh6IloHzW6Rkvcum7vtidoajILb6boCaa05vxoT9mDu1aJehYo9NP/vySB8kzAPuZC2HNYS+k2ihd6jZ2vfbgQRMFrkQR4KvP/IBmGvfCzqfgWkPHxl5YDrS3jkJsSrpxcwbeBu4UfwJFZzyAylfNtncVCnCIr6+/PxmeNwJfUaLcYSv5Ud+1EBhMc586xgqdnTVducwqamF/ZUk+zGC/7w7KxXwPz/d9Feej8ivMSPjvYnS55YwkTF3E3y2sg82nSMrBdlXsSH+cJ4Y+VzqWQOz1ELljQBfzCC85zKl8uWQQZxjfzfxgQFSxF7Q9S3m1tQrDvTQM4efpNtDN+4uG+cz/RCAD45qMvmqhno3rSO12flT8f0iAbD3CAb0pRLDqWrIa9dektHjfVL+Pxy2SWZ8afdscrJ5fuqfeCiOwqAIQuca4+MjRjpCxa66jVMq2ueNkb/23bX/vuH03JXUgWveCV7pRPQc2BdFygkdFOXVydTY+5+R1vXrhFejxipkcavfSqMz2pZsM4S03lGU9XTwaUzZKUJzeFSnSzs3roMCkJuU5p6aI0txsGq9z0dxxi9Tx0haqzeM+VeowxCQRFg9R0jJTH627bkTmmxWJQiSRopd1a6ywHaCo+56gd1v2nthpJlQ6lY1cJVsr6luewLqxng9ZOPF5w5XGP5a52BiNYcnyIk5xC6CDPz/T7MhygqO90ZVc55nfOX1DKujNanv49C22pUH0nxn2S2fszSqFD1+C+P2KFcTx9T64BhiqyQtlK45owU+VCuOAlm0567FXl1LPZRZ/8Yq4L21M4Of7ep/DrnEbTXtcAJMNtjJxEa3oPyPgtgSHAH3ny67PcqbiD4sOTFQ5vdtZtsDngc/RYNyq61x3jbB5BBGNViIJLid9AGCpIGx+rg6issLJwUBzGX0EewQaYRqCmUoKXm+osySXpKek5iCWSO118U5ZfAWMrHI7DrZ8/Zs18kF9ZzM/64Ta9F+baPsotRtK74UNn8rv1jjZddEnxQTNf2kAHxuX/vRmRuZciSMjjAPuRc2YJ6hAbrAfOpiRF0RkSNOdmeGAf7fpxrim4GyHfrQGC1ysJv1WW6N3Y+2MSTzDr5tztWQPMy161uqqm+ClzJMLBaLqd9YqlkYhZuG3jS+5J+AvDTY4/u3AZQ2nVbvPydGviOESXxeXHEWbxVRE8PzF6R/ApP1P53VQ3+zh9Ke7bugFHQk80LnMstknZH6iQwVw+SPM90/GTgj38PpYIBrsDw5P3gUun2X/TjSXO0y+5+cT2750KxxHc1mOWZCWslPxsmWclPRaDu+z2vbo29mHQ2c9pE18+GTWrYKvRLLuYBpzDoREvJCPJ2NQxsx9H+OV44bghYIxV2fUgEZiYwH0pRFMoWcXex6r7srzpY9azOTeRa0OEqt/he8KUviQURdUmvkz8BTJeSJremSkODE/rW8OkbAtzzxQOqDR78Wwkbsd8YLFfBFwMV2FzRdr3thHaMbrnEfT64rlpISvDltn4GCdvmIZ+f/ZFwKG/icPh0aHYe3yqzbuErIS+22KnunqxWpjHAamnJdUp2eeGgVJ5IAsgo5SRISfV6YCuPMgXCONcSEGrZXc/zO3BFtBfU5xbHsnDJiAxvyXCFvSsSvYDqaJaFtN2HVZv28CObmORw/TZz86O58rGZ9S4sNODziu/NPuVEPE5DI3rfKEYjB7ATlVa9SxGGvuirhcRmW6OIEXSJoolbJ6A6v4Zg4E3N1ktfJ62KHrijgIT5mwhKchnX0NZ5aZONQ5K4Kaa4OoW5mMTYbBpDespscYVnucg1QCynZ2t9D8p55wVnPXNUVganiRNoYTlgGlUWyK3721ok6dm3fSoEM+Dx7LfFsSg2VJtxUOr/7QUoYL0nIF6Xrh8321wCea8HaO9Tl/o0jBPdeK1USR31D1mOkjtCD0VVXKno29ONF24H8M5gRjhUbtt+WhiwJym/RIACP3UIuoQEDRuecfQz9xwragrZAWRpSxVHTkwrx/+z0XGgrIMjDcVUHRahKIeJVjLYItmTDBGu1biYmayp3maMUk8MlkfwYCkPx8pYpBk5l0u6HI3d8+g8MuO21AhRq4PXRRUU3oJ7W30Q2JqiuUsvAsXEWu/mnfIkRxWzRWBlwRj2IHfXb2BgbUdgSuGHWlKevreXszOVZfXJxOD0U8D/AYkpUtrTeOrOhLul/+zTEagHdpbHwEcbTPr2aeyhMS845+VFyhecQrk6vhRbdiJCBpWBzkZutMSBay7+zD6AMcgcVpAM8pBpkOPk431uJyqQEDTohGan5dGmtJKMDcOUnaXiYrT1tlQ6LUDBSedS+XuUbUsy6XI6zOOGTVi0J+2fFJs+7AJWnXftbP5DWFS9Nuyic+wyy8LoMHJFkYMZZ5MEGCPnAUYZreA130jaiDlA/pvcxz6gD2a7ARx2Fb+63gEs1wfVgInmzws3QdmybD2o18xXKMUcSXLMWf8Z3++IWl4+hNKPa4xEXyRi0cNvioSD3v2b1z9PyFg4u9MeBtqltr/FKdAO9uCMq+HWQfQWpaZXlXn5Fv4lKwHFVixrgJ13eNv8JBFGgRQEbtjwTyhfXsAZVufg8s6AYxf2i7L16z0S19FgBzU2oaZTsA48iqT+ALLgw7SKFTiNbIg1I2U3501V7TPYjgJri11HWpvJgxfxbNx6+/KR7/WKse75DDMr5w/TdNfR4KgvLc75sIUk/TIsq2Fc2P0oqVYKsk7WNLO4nAaMPHuuOkjqIhfFxVsOdN9v+MUvgNaML1M3FDlzC62ocSkjR0SXXI2lMPFNMlx8dwWdgbol6gL+HW0yYiKnS22rHtTTc+gHBZo7lZcmQf98wZjewhUMX988cWB3vMc418GpSqnHNRbV1PNHGGP0uVUfvkmDps4xr6OVud1YfQbNRLdlCoINmD6Qeuyl7BSRUAQg8F/OpZfJQuXw/iM+avew8Nh3cRBpddWJnrCgOaPu1RAPhpdwfjO+AgD1KxYpLGu5Aml6/9TmuGPkP8b4xi7Wh01oUsfSsCf1Mp6f9BVSEwmeaBf43f6AL21mau5hAPZUxgakI6GeLXbFqZvlQZV+0v3RXROynf9qJ67qOMGDHvYCZyAYkLWBLgBOd+AI0a+J1eRHZvlu6DQKVpq0BMMglynW10nu830cY7ljXpJMxauTXQGOkWrJ//jeNsf/v9M+JomTx3sUvqXjcPUAqXPX6BsU6GqxN4mpdSPU8pLZ2YlH5gnT/wUPUL0D7L5T0CZeRqSAGQTjOjXyxcf7SQghCLfaierAp+f7LnN2ZRUsRsX8pZsQ3ezc210oNKCXKYkbMEoe5zjJaZwt5EeadeSyFmNxofXjL1PkoJhOHyooo2Vv2LcYBsbRgz+Mit5i0S5s5hQbMltXu+5fmB2auTjfIfEdnsqKzYe5kuhiACurTZxxhdDY3qtrQIbWled/IpXKEyo/1R/mbsFv/UhSd/8sf5p6g0WKnx9MwrfuQiD1nKOYNqqqjvvb5Iu4i8rl6kHYArs+Z4mm7QkuYUpQiQybp6cnZRCXZv2lOms9V6PpPI6ki2zo+WaEWOMl0ACLxfic/fmo1J0C4uYl7PTFGHeiFfe25YlylnISGw+KD9IVUysP4APsErNo+b3ev2qbN1ydaRKZ2xqv/U697VQD2o+4tJsWzpy8WIThISNLP/fco/HzbgdQFi8oIG+ePH5CU8O+l9sf0OP5+NpEhzn85zrJu3cA8bAboknt7404KrajhbRr/5TA/8M+yeXv3e2xV0SoX16K0tIgR/aQQX3nP7hhEeekrJF3H8i0/KhikdFHKu2RyYQfJAiA+vEXvtWuS1pw8lPDueOw03bdWCmb+EOTzp+mzvRr6P+xKlWUsW9q1NMNpMNLLqPeZn71htsA7mBYkcxQqmXuhISP0Civ3UvWTiim0FTVM9EqwcfSdHGPYrM9g7082msa7Mpwe1eTDo2oTTw6Kb6h3O+kPpGLbj/1d18YvX7OiVB/6aD8vGI5dNSfSkVtwYxvcWjZF+i0FmkCuXFSoVPHbfj6VbFD7qu8GFbB05S2BERgvPkO7ltO6PW+jgzUZF+WhH/J9ejOLxMonS8d3j2m40nulQMboBl+89uXfPJHSpKuT2iPHLBIZPgpFG6D7UjkCcOW1mPaOGWH0lmJhk8wZV2dqrtN1C1OqT+nb3QV9buUapqxEPylKP+9qhyUau4luBpwMN7v+54RO4MXEB/vQKGLjwvqutm65c9NrfJ1v45nER1uujp1rj5zvJM5ncv+J2aR8nVdJqNprZEfe/G10mpjom6phvnR0gCUkbtfyhugkckPNbXZCV96hmFkF8UstyIjMiqBS8VHThqxhPZ6VMthhhF/mu0x1OVVOWo8zxq9eAjB6axXS0jTgrA5UnFutECPUKJkoKks6NYvqzK5OTvyxvv0KJw+aOasXCFNX/zWTVrIdqV36g0Asua/nNe9xgZAVvJaaLNobzhpVBAqMabDdeiPgPkHyTHZjIYyFFO3rLz4ZQbjDwbcgaiMZFk4b+okbOTFXvnlUp/d7Mr+OvrE5nrjRNVLWF9G6klRczdBvci95RlUNHJFP34O+2Gpq+hAnNxaBgDFfWSgXFgk6LhXejU80ySQ6CzuEjwGPdu4BxT/2cEJjMsvgTLkpLuzXtqAUsOlC49m5AJtQyb31zhn6vGWLCAVN/UAHRQFwRLTgpnAivgI+gVzlPKnI1v7zU46KUzn+RmljO7ND0DO3g5i5i3ZKTiQ5oyyP+vz/aTpHgZFTf1TsyVRIn9wvNolwGZNxSOfbtXB6Bd7yv9Feg5zX2J+avjvTylZ6xkINeuXOclxxsvrcjZMV/4tKrOU9pncFdsMsT40GU497FoqdW6MYjDaw+XevrALvBqLbah0VU/6+j7zgX03qw/fn7wI5rrVqrzNIySERO3vFpihbkGGYAO8VquPMV2yFYLOYdACunVFI53XEJ4QP6lrZuQsmlxL9q9pXbeEGG+msM4a8a3Fz6hWB3FthrMNxKG7oXCq38A7+uWHDfpZRJXzlTLRSp1uoYXdhzY4pLjQldFyUobjQ4UoRg3h7cbAkQwcDcH2RlQD8cLZO8bAUUiwyQWNNS9+iLhF4Ojx/JlhF/17+jMG7q2OiaILGiAPgIeSUIBn6ecssUINPiH5684iHxPe4qL6K58yBQTDYgL57fWfotwDFzyHh9q4uMZB/KoQhiyAIeOu6c0sWkYUjW9B3k2OJu+BwyT2O3fLXyUB4opQD2QNivH0VzAGgOQj52BMUOF9HE1yJgTdUSNbPrlGvSv3rmVUWCTlSLH9hee1Gs4W919jcKcArLYN/mkqmHg1wdbup7UBVHLiOZhd8bFf+gA1EDC/bIiV2r+sJmS+6VaDmIlouA1ZmXa8NWTwepInznQIn5GU9cyDsMblX17GpNMK01I9gGdNXbG6KatlxWv30rRp26oXOxMYGqUSliScv4LGUqLaIKJt4j1l8v5rHKX+K6RFLg/0Ql+tqlSYgaSIqtwRhd54qa9h4ciF999MizyrOn+cYjofYBgM11kNYR4ZW65RPY5Cyrn6QhhxKDl2iPiamWXc+sbUevDfVbH4MXFgTeJSI3Yi5rqGbwfpGVBpCDEq6Mp0fLFFOWuIbhip92ORzw9Xh9wTNFYWQT1WDjD6KQ4q/87hFT7glkfsJTNLP0cLVxRv6TL9JfPIpMq1196jgkdDPq8JVTyhYonNy+PL5HkQV8t5Bp78d7KRrZcqDXFW6NdlHPcwapIkyb0Y83P09yCE55LbTiMiT2uKiFHU9JH5URsSpMIP8WSXnqRtMrLKPBkhtBDjZrjHu0idEaRuGUOYm7aLvXmdgHpDvyBbonAxfXrSorfwlRVLuQR13Of8rqsOkasTMG2t/7IduAO79BL/mPDt7K/+QruqKzWiNbm6iVvn5GLy1kz8TYfMnj3s8dykGwU+01Gr1Kcwu864VMt8dPbKON2AcgwG7D6sJQkUnL3Ms282pHu7U9IhVxL2fEyeDa+DQoCuyQO4h1T/0zov278eDiFSodX+Ll/sOeIyfQmB/qZOoefaBfj8qsIZUPQMd6CM/NkkTSMB9tkQx2E/iLODmUKqDimLAJkMPfv12RMEZBhICjCqXE2JT7QzLpcQbMmDWPYpjcLtU9lDtLe6aHQAhy39ptW3GQDNeKOlhnf/xZHpsMjKFrbxvhyiZE+qHvkI1o1Y133LWVHzJ6yrJxZqMH4wU7lBkAX8VMTuvEWzURrmKbLKF0Tp+DpxRPnPjH3y7Y0DEMz83bjH9l8C1agDuUrvi+rSH69LRRv8MZzZWTUnQyfUGv/KZ8qNqbu/lg85HAu0ljBpA688Drznt3o7lUE0DBqN6+9k1Utx7Tz4IkEgKRGfQ05RhfLcu+g2Xn4jTmpLoS/+adabaOqbEMoPqiKO+ScQNWRnzWKyEEvqhqJm6zRWF8yQSCNB9rkld6asDqsYwxshOXl3OAYlBGOLFVLbmdHxp5V3o3mE7bhWWjoPBHACnjUn0p/juv9zJyPJxwgJmyNRwsD9Ocvp0OPcHMhRpBISNvKQF+CaK5iF6h0/4Lx1s5xc3ejXIpQukeNhs8scyOw2dZQRUqy6T6lzbdbaVL/4PKmb2guBOl8sTNQF0oQou1K852bROAZOujsL47tOnlafD/EmBOrgr4msgjNprQxdDn4PbbGhbJ9eSbDEab3Pn8/9PKVeC6HmR8sAC1v7uXycyv71pGVFbwQKuL66nXwLBnjiNUXhd0+zclyeAi/8u5nP+AEPOVPOeNzVAJBFIkv816Zr//jyfdM2PUXZlyvHp0c6ZL7pxxyMRBOtqD8WMse8+s2ak6VKA4tygnaDyn+JcBpz6urzmqQfjyF2Kqj2/THBBXiaoSazjyBJGz/GV1xZ7RSYR6CG0xwU6wMgArp0usPl/Q0syvdLohVPz/dzR9ysedGf9F4nwFZTxI5YRQggfD380s90gYOvemgajtUL0+ifNkrxL6XGHB1Fq04KKT480xzUwdGevZJQ0RkL7D1ZY4LBSxlemohWm6ioc9WA7dR1x3TIJ/CfG1o3qe49K3LMzlF6kNWFxDOFvWWbdufS/b6pEezOClSHGzpxOEQPugYovI7Jys3KG6TxIbrD3YIa7tgUPJGMApb3qpP/dtR7tjzd32Gp0DBbdgAcWAsSciLInJyLqI4kvbYFNziF0vhfIASQIDfL+buBFwC9MXcgcKpC08vR83oqviKvHNiQb7j9QDiRM28B8MKYVioM/K7+gXZrrR6GfKQE1GpkcUeUviVEnoDEtcJGPgoAewjtmitxOvWzo1ewDz0aP2JMfGozHPU6GO9AHsbrgSy0Vegy7oLMUnyxaHNrpvrya097uWE1VcXFWgJhc+0rM+po81443A87XRhsH+vu2SDc/RnaZAjSAIdOD+RdT5We28l/DpODGz/PSbPgIEjhBVTqGqwj1S8dxbqttvUiMw/b3uPyXTelZ/HzM7qdIU/7OF2+Bt6V2Qy51hdOfr4oeYtsVyYiElilfpCxnk4PxkXggUE+nywqFVKFSx9aIX9vrclnHJKJv2npKiFj+/N7qskzOjAKXQtmdluIUa5+YHJYEu3qGwIo2Rb0Sf65fDLhgcfX3yyB2y0HqKs55WZo3c1eAd1mjK96OwEvMWRX82msoCIXIKNqUpicq9AAMZ+MiTwh0pahnoKaZHtEA1+cLqLE060U20dLsfVDw5HDZ82dPEmZQbU573bSXRdcnUnWUToxuDDA/OFkEuwvDBv9Whi8vkekQHY4h0HF4e08aA+dJyGz6ID8NnHvtZJYeMO7QyYp+fyQxNneCaQURqY0Pdjgn2dhzf6wmDukgG9fjBrj1Bv7xu/CkjGlAEJFI7PBWh9Yu9iqfW2cqhDAAcukWhC9ocvjuJGfQd6LSr8U7RYPY8whTxq6yc6Oh+n3pso93cvxPa3SBi32bb8PMapELGa1PKOFc1c1YyhVXXaF6s97L2YjcWEocmzYP/OZne2Cs/8Zvcp3xb/cxIFo4Cdd800HWS+c/7u0KAwxPmiFhAFJvDPeyUNIRAPZrpnFOYSGsOK2w+/pEdMZ+fYTfRopbjILXtihpuzIryin5HlpiiTEemniWdYX8LON/Zc/BzlsPKDbZb0ZgFepdpMLFeu/98CTYzrI2GZp4J9ASvuGXk4AqiLy6QN1L6TdUSU+Z7naRuwZXIRwFMK3CuJ70CrO7nRyCSSTf1Z104BmoZM0QtfCs3Fm5De0IL8ZjpnA8ymnTPkGuKsHsLeT4KHa9k0i1yCPcEQIWgSA6JQ8dBnBSL/vj0AbFVrQPgANvvRPPUrdEnsirbW9UrFJmz+OyuoVAn634Eixiow47Al+fBd2+SGg93Lok5WxaLSYGHs9B+VpgaG81wd9+6xItBSFKRjm1goGKnXMjbPLhOX1IfYPuIWeRCQdFH+DnwFTctXiznx5lZdZJkbzHVqQB5wbuafrF7h/zb+XXigPlCUSmK0A0qEa/pfQBPjyngL94C1ibNzYJGJz1tKIMQmEbFEiLkCqmnMkLj3Z2TfXtRQAydSg/Cmmg421EGX4hB12pL5lWARp8aGnUc1+uxXZbhOyS8ytdmmWfObljWt+H8TI4kbEiExwiPlKTjLfbyJLObE1QnAti7xyNBDcfUybKRjPb8vz6xH4F0bhP239V0JGAWI7pERFF7Ugzb0LoI/osfU4fBnVkjljhlFVhp46TAfcB1LxOtB1iZfbhuMuJGsaRRjVWbCUJ8ALVVxmZI2zluCL5YQZNAqAn+A0CObNrcJyf3MRTEjfxsvkm2cK8Q/I8cNazHtL4J6lXgu1Y3B4biwC8+7AKzl1P3JYl2KLFEsx+PQh2lvuV2hFIVCA56YW9Mn1qXffaVB9zxmrrnG5fQaeCR6nGvSZr8oPosgQMueWGl2jSSm77TcoIf/TgOXR/JYQ3wB0W9pHcwX2HoYCekPvmyMlRwki6koMGdk09J53uh03rB5O65p/rtTHenpyYsE3P/yJhISfsAHMtsi4rWg+dOm6QdjqgdLcVCkP02jfhggZvQ+/bdP6Sc5mGvA1g97jmtqgp/txhp0yJdu/OBf7Amb7KDoazX0ZeckuIRqQKAOBIuh+JIt18IKeVPB3mD5uQcr/l1b8XfNtbM2WpQ3GlfR1mAFJUJCmp4dYbY31o8Tw8BogbiPqM1Z6sy4JAUR1tbn4U3F0WVDgnscfukNrQkmicm1NYVN8vuUJSYd/WqwhIq/Qy5PpX1dc7peTDwgcvbTqIu9XnTBDmciDRdMdnnDcaUoXbMa10EjOpnzno/uSc7LOy0QDju5GPTkumlODfPh7DGUnWp8nPsvGTyMtu9D60yb6mxCPNfVQ1VLW58cpvC+DXpl906dyV2gYEDtIWTQpfwYEBGfPebzfo5i3koduEmee4c3rEuqxedeut1erInAM3T9SspAkU/k6uVBOmcoIQpuTYPBGbumxJL4+HovlPj5wehuzHus6FXvWNgTc0H1ql3jwWSdiuJizLfa33IRgChCN39ge1fccSaajUQ/8YSTzu4MmpiYPC3vHWBIMT14rHgyqCK31mYb4noaEwYWgKYbJfmj7vCr09XDJOd3LcnwsjbHwh7Se/9mIK7jQtmtPoEV4YUxP4ie4k3Ef6H3gPDeCuSJKc5u5+l+Z3q7NxQg0YBD22Xq6IgVZi63nniS0U3MNOtUVOcMOJ2O82IBjSRlZCvFagGXkHYGk4weLpihqkpb2QKXnrQJFKBfpScLDVEByGJCQb3GPl2n73Mlb4fcF5ns0pAIeEY1IlejrmPCBDdFkVuYOwKa5hkevaSXbqvPILjUeuvWkrhLsNYRpo7/GiTHFrh791HYu9pRSKfWD4OObIySMZHriYinNJuLhN/a5kx+VDd5S54MufhBF/sYevn5HQ/YiZTO6mz0rEXpjTo6nTcF2GhOipx4EFCqT8BQv0BzoKIw6pPNrTtdI1nIC4VlD9mfGZEVF9UzLvVDt0wcHrEFZ+/KG6s0KbogjpEhr5KxtozMHIRAjXEnBBSk8BGEhb50Rwzqdq90IxK/s9fTkZewme2D1Oz1Xdnxdw1SdeT93gWabOQ5NagUsX4l64jNRdgy0s5FkKPJT2MQM60gekIHo2DY0tMkckaYp1t3EZ0Lmar+zovQu54dFTJPgJkpVftqnrvivqZxI/YCzjgmDYteRVAcCUc6kqGWUQSa1hSj3qiGve1NFsjWwgIp7Zv5LCv6SPwNYqCsyxqT7WxogX2EVP3X8H7FuyYXaY2gD2sxc2WYBxExSshZOQJxBnnXS2J6vCUwcWRqxv3iiWlh5QrUPp7hsWLOcgOz+f4CitTXk/9MxZIBlcDhZLJd9AG9xXnoUDfZFnevvaBZoIGm8N1M1ZH/hoXWTIsAfVJXJcy0/4ya/+3LuqMoDJblUOIvX1cRixeXsbiLjhuY26nSduHXH0BjWEwdbbtiTtjFg3jZS2nJf2+buM84wD8EZoakwDk2WRgHYdf1P83jR/yHkuuULGmEMfOgQlXuIE08oDzHCpLYXLipMwq2DMOW+b/pt8iWBcAnnGY0sa3v38prfBAS5gXRgpGstc/SI2gJUk+9iRGUmmwseO7O0uFSr+y2qJIFZxVTUQWnyObds5iOupqY66X0i6vfkPB7K49m2y6FNsJnzN7vT9gW13giSLRVHlLsucDcDRYM+MBiq5VEeE3p5yYgjNpHgx3VK3t9lZxtows8nN3L0vcKV3cP/zvmPKaGxRbTygnvT6lbajLUka+73NS81Y5tlh9EmCeNJEF+WB3yWZyYInnV0uy4Kk05HLEzOAf9c/deAAo16l4fQIpydPF2gV6fKrB3haQTMgaRXsQ1HzAhGsGj7o1b0qJM/e3PebWR8lCY/hBdvP34yc1y6KXwJysWTvfaJZCYRzMlUHzuZvQ9ArtJBOpUPEzkgtkLgK1eytIYlBwC2LU/NayC2N3aiW/khrLPtljZzcfbra9wmOstsfs9dHKgGcKHP550Z+y9J2tG6kRMZ/fqI4+P2reXUZg4YzGITMj7L+KnfXE35TjJQiQ2dK3+S2MStf8NX8ccLhtB5dp7cuQbOQXjYNTLJlUEDkrrcyXEnalPyFEjSj1RJxATxJpGd0e5K8vuHnML+CCzELtBFAnYML+3dQPUGSDOz2w6baTs9mYRmV0ZddMrzq7RfDayJfpfiRjQ+weyWlFibs10qOtbgpsrOTv3L/ol/qK4HLThxJ3IIbwYx4yR79gAZkn4Nw3WDXBiSgCrNtbPbeNsYqRDxASXZJ5WRF6OOeGuxAjZ9jdSyud6dCqMc80k7La/NHbjUSYxIUaNcq8eqPPc6DaeJjjhCoT/zKb5IIxbQvzRSWmqphEWbNeeSnnd6cq7iyuxqlTgF3wsy4q8JsL/SRF4XG7GHXNOje2WL1InmckXYr+cR3BMacsvqvQOwwqCTIt8fMPli0T7EcWFv3wwU36IGAUrUDJB7lpY4+N4uL6zrWdtTZ1vzaJ5iBIucMrMT6dv4Uos20QnKP+sJ8G6DBlE0SdwOuIIaXrBzg2+dxqH83EBp1s0fYDY/xlv/ZUJclaZkzpEbTvkbsiO6TdxEVg9M1r/JRwHG7WXYF402udifux3EfuIW8t3fjMq6xhrztPx5XbnW5Qkf0803lVAp757CPDOz00zfus0H6UPgrAtJ/HqegNqP1I5K+ZJyHdWb3VUuhw+vTmqVbJj1xYHX+18HBYlHQDbhBrDWhVsghoJBQ7f7/oNAcjD89GRMAiNtv1v4DuPS2XjFPTPT34agdPdU0vCSTi+to/mj2Wpfe48OmH5R5HCzFvXSwi+2nKeitN/dGNI4sBoSJMsIT4BL7/mLqbRew+lzdll8e+r90w25//RU8z8RAwbgQ74mSbLFvdfjV3UVLG4FzetpuqxpcEOIVeg2dzYsQu12Pg9QYqa1sOs0oV6jMsdQRW6qwePTJv+/7oyAyymo/Fv65xH9BEzX5uMUHMjqHJl/cQ3yanOz6tUSUXKiwHmAxglbqOMSCcKJd+f4T6wf1/9Ui7z8sf5alpjClBfag2PF0AyAL76kDl+D5AZMBVttkJf712CO19u+IssL68vZ2PHD07XXasYNJZ3vRifi0mYz/kVaxEGfMpdTkT6FgiYx4gxN+djvYOYS1Utf/SZ2qZV/6HXyG36d/cDdh1/T/f6oIfyS6csYE140G6XxtzGY3yzG2FuY/mkMyOMFlYND+mHiw6vNrMjBYNlcWJpYaIWQyJsQdO/ZTTGIslASU0LZ0d5NFB+3C2TUn+Tr4IqPwQyDj9q3W7vkqOPZQYHRvbA28+y0obHIFtDp0vpb2Xk+i+LiNwnLohdJuJcjDesq4XP3g0SaxBcccDoq6n+/R+JBAOPEwykMnDV3nFbiYmjyg1p5b1PzRHkAJqkNUKGgA67asc4DAWcOseA4exYIYIj5q1HM9M3497HzL9gW9o4fL6mIqBvQyDmFsZ28JuRxRq0iam4/qOest7h4UyOUyWgjLOiCkNPiOjATNA5yhj1VIvxx6EOuW/4vpKIce2ortIAAA=\";\n\ntype CRMUserMenuProps = {\n  placement?: \"fixed\" | \"inline\";\n  className?: string;\n  singletonKey?: string;\n  singletonPriority?: number;\n  tenantShellOwner?: boolean;\n  fallback?: boolean;\n  avatarMode?: \"tenant\" | \"user\";\n  trigger?: ReactElement;\n};\n\ntype MenuAction = {\n  section: \"workspace\" | \"account\" | \"owner\" | \"admin\";\n  label: string;\n  current?: boolean;\n  icon: ComponentType<{ className?: string }>;\n  to?: string;\n  onClick?: () => void | Promise<void>;\n  show?: boolean;\n  tone?: \"default\" | \"destructive\";\n};\n\ntype MenuRegistration = {\n  placement: \"fixed\" | \"inline\";\n  fallback: boolean;\n  tenantType: string;\n  priority: number;\n  mountedAt: number;\n};\n\nconst menuRegistry = new Map<string, MenuRegistration>();\nconst registryListeners = new Set<() => void>();\nlet mountCounter = 0;\n\nconst LAWN_CARE_SECTION_LABELS: Record<string, string[]> = {\n  today: [\"today\", \"home\", \"owner command center\"],\n  route: [\"route\", \"routes\", \"route + weather\", \"route weather\", \"route map\"],\n  customers: [\"customers\", \"customer\", \"requests\", \"customer portal\", \"requests / customer portal\"],\n  invoices: [\"money\", \"invoice\", \"invoices\", \"billing\"],\n  gear: [\"gear\", \"equipment\", \"equipment service\"],\n  team: [\"crew\", \"team\", \"crew board\"],\n};\n\nfunction notifyRegistry() {\n  registryListeners.forEach((listener) => listener());\n}\n\nfunction normalizeRole(role?: string | null) {\n  return String(role || \"\").trim().toUpperCase().replace(/[\\s-]+/g, \"_\");\n}\n\nfunction normalizeTenantType(value?: string | null) {\n  return String(value || \"\").trim().toUpperCase().replace(/[\\s-]+/g, \"_\");\n}\n\nfunction formatRole(role?: string | null, tenantType?: string | null) {\n  const normalized = normalizeRole(role);\n  const normalizedTenant = normalizeTenantType(tenantType);\n  if (normalized === \"GODMODE\") return \"Platform Admin\";\n  if (normalizedTenant === \"LAWN_CARE\") {\n    if (normalized === \"TENANT_OWNER\") return \"Owner / Operator\";\n    if (normalized === \"MANAGER\") return \"Route Manager\";\n    if (normalized === \"OFFICE_STAFF\" || normalized === \"OFFICE_ADMIN\") return \"Office Coordinator\";\n    if (normalized === \"CREW\") return \"Crew Member\";\n    if (normalized === \"REP\") return \"Field Teammate\";\n    if (normalized === \"ADMIN\") return \"Platform Admin\";\n  }\n  if (normalized === \"TENANT_OWNER\") return \"Tenant Owner\";\n  if (normalized === \"OFFICE_ADMIN\") return \"Office Admin\";\n  if (normalized === \"PM\") return \"Project Manager\";\n  if (normalized === \"ADMIN\") return \"Tenant Admin\";\n  if (!normalized) return \"Team Member\";\n  return normalized\n    .toLowerCase()\n    .split(\"_\")\n    .map((part) => part.charAt(0).toUpperCase() + part.slice(1))\n    .join(\" \");\n}\n\nfunction formatTenantType(value?: string | null) {\n  const normalized = normalizeTenantType(value);\n  if (normalized === \"PUBLIC_ADJUSTER_FIRM\") return \"Public Adjuster\";\n  if (normalized === \"ROOFING_COMPANY\") return \"Roofing\";\n  if (normalized === \"LAWN_CARE\") return \"Lawn Care\";\n  if (normalized === \"PLATFORM_ADMIN\") return \"Platform\";\n  if (!normalized) return \"Workspace\";\n  return normalized\n    .toLowerCase()\n    .split(\"_\")\n    .map((part) => part.charAt(0).toUpperCase() + part.slice(1))\n    .join(\" \");\n}\n\nfunction slugify(value?: string | null) {\n  return String(value || \"default\")\n    .trim()\n    .toLowerCase()\n    .replace(/[^a-z0-9]+/g, \"-\")\n    .replace(/^-+|-+$/g, \"\") || \"default\";\n}\n\nfunction compact(value?: string | null) {\n  return String(value || \"\").trim().toLowerCase().replace(/[^a-z0-9]+/g, \"\");\n}\n\nfunction getTenantDisplayName(tenant?: { company_dba_name?: string | null; company_legal_name?: string | null; name?: string | null; company_slug?: string | null } | null) {\n  return tenant?.company_dba_name || tenant?.company_legal_name || tenant?.name || tenant?.company_slug || \"Workspace\";\n}\n\nfunction initialsFrom(value?: string | null) {\n  const source = String(value || \"Account\").trim();\n  const parts = source.includes(\"@\") ? source.split(\"@\")[0].split(/[._-]+/) : source.split(/\\s+/);\n  return parts.filter(Boolean).slice(0, 2).map((part) => part.charAt(0).toUpperCase()).join(\"\") || \"A\";\n}\n\nfunction getPreferredMenuId(currentTenantType?: string | null) {\n  const entries = Array.from(menuRegistry.entries());\n  if (!entries.length) return null;\n  const normalizedTenantType = normalizeTenantType(currentTenantType);\n  const sorted = entries.sort(([, a], [, b]) => {\n    if (a.tenantType !== b.tenantType) return a.tenantType === normalizedTenantType ? -1 : 1;\n    if (a.priority !== b.priority) return b.priority - a.priority;\n    if (a.fallback !== b.fallback) return a.fallback ? 1 : -1;\n    if (a.placement !== b.placement) {\n      return a.placement === \"fixed\" ? -1 : 1;\n    }\n    return a.mountedAt - b.mountedAt;\n  });\n  return sorted[0]?.[0] || null;\n}\n\nfunction useSingletonMenu(instanceId: string, placement: \"fixed\" | \"inline\", fallback: boolean, tenantType: string, priority: number) {\n  const [, forceRender] = useState(0);\n  useEffect(() => {\n    menuRegistry.set(instanceId, { placement, fallback, tenantType, priority, mountedAt: ++mountCounter });\n    const listener = () => forceRender((value) => value + 1);\n    registryListeners.add(listener);\n    notifyRegistry();\n    return () => {\n      registryListeners.delete(listener);\n      menuRegistry.delete(instanceId);\n      notifyRegistry();\n    };\n  }, [instanceId, placement, fallback, tenantType, priority]);\n  return getPreferredMenuId(tenantType) === instanceId;\n}\n\nfunction isSameTarget(currentPath: string, target?: string) {\n  if (!target) return false;\n  const pathOnly = target.split(\"?\")[0].split(\"#\")[0];\n  return currentPath === pathOnly;\n}\n\nfunction lawnCareSectionFromTarget(currentPath: string, target?: string) {\n  if (!target || !target.includes(\"#\")) return \"\";\n  const [pathOnly, rawHash] = target.split(\"#\");\n  if (currentPath !== pathOnly) return \"\";\n  const section = String(rawHash || \"\").trim().toLowerCase();\n  return [\"today\", \"route\", \"customers\", \"invoices\", \"gear\", \"team\"].includes(section) ? section : \"\";\n}\n\nfunction sectionFromHashTarget(target?: string) {\n  if (!target || !target.includes(\"#\")) return \"\";\n  const rawHash = target.split(\"#\")[1];\n  const section = String(rawHash || \"\").trim().toLowerCase();\n  return [\"today\", \"route\", \"customers\", \"invoices\", \"gear\", \"team\"].includes(section) ? section : \"\";\n}\n\nfunction candidateText(element: Element) {\n  return compact([\n    element.getAttribute(\"aria-label\"),\n    element.getAttribute(\"title\"),\n    element.getAttribute(\"data-lawn-nav\"),\n    element.getAttribute(\"data-lawn-section\"),\n    element.getAttribute(\"data-section\"),\n    element.getAttribute(\"data-tab\"),\n    element.getAttribute(\"data-value\"),\n    element.getAttribute(\"value\"),\n    element.textContent,\n  ].filter(Boolean).join(\" \"));\n}\n\nfunction clickLawnCareSection(section: string) {\n  const selectors = [\n    `[data-lawn-nav=\"${section}\"]`,\n    `[data-lawn-section=\"${section}\"]`,\n    `[data-section=\"${section}\"]`,\n    `[data-tab=\"${section}\"]`,\n    `[data-value=\"${section}\"]`,\n    `[aria-controls=\"${section}\"]`,\n    `[value=\"${section}\"]`,\n  ].join(\", \");\n  const bySelector = document.querySelector<HTMLButtonElement>(selectors);\n  if (bySelector && !(bySelector instanceof HTMLButtonElement && bySelector.disabled)) {\n    bySelector.click();    bySelector.setAttribute(\"data-lawn-nav-deeplinked\", \"avatar-menu\");\n    bySelector.scrollIntoView({ block: \"nearest\", inline: \"nearest\" });\n    return true;\n  }\n\n  const labels = (LAWN_CARE_SECTION_LABELS[section] || [section]).map(compact);\n  const candidates = Array.from(document.querySelectorAll<HTMLElement>('button, [role=\"button\"], [role=\"tab\"], a'));\n  const target = candidates.find((candidate) => {\n    if (candidate instanceof HTMLButtonElement && candidate.disabled) return false;\n    const text = candidateText(candidate);\n    return text && labels.some((label) => text === label || text.startsWith(label) || text.includes(label));\n  });\n  if (!target) return false;\n  target.click();\n  target.setAttribute(\"data-lawn-nav-deeplinked\", \"avatar-menu\");\n  target.scrollIntoView({ block: \"nearest\", inline: \"nearest\" });\n  return true;\n}\n\nfunction emitLawnCareSection(section: string) {\n  window.dispatchEvent(new CustomEvent(\"kl-lawn-care-select-section\", { detail: { section, source: \"avatar-menu\" } }));\n}\n\nfunction retryLawnCareSection(section: string) {\n  let attempts = 0;\n  const tryClick = () => {\n    attempts += 1;\n    emitLawnCareSection(section);\n    if (clickLawnCareSection(section)) return;\n    window.dispatchEvent(new Event(\"kl-lawn-care-locationchange\"));\n    if (attempts < 28) window.setTimeout(tryClick, attempts < 5 ? 60 : 150);\n  };\n  tryClick();\n}\n\nfunction switchLawnCareSectionInPlace(target: string, section: string) {\n  window.history.pushState({}, \"\", target);\n  window.dispatchEvent(new Event(\"hashchange\"));\n  window.dispatchEvent(new Event(\"kl-lawn-care-locationchange\"));\n  retryLawnCareSection(section);\n}\n\nexport default function CRMUserMenu({ placement = \"fixed\", className, singletonKey, singletonPriority = 0, tenantShellOwner = false, fallback = false, avatarMode = \"tenant\", trigger }: CRMUserMenuProps) {\n  const navigate = useNavigate();\n  const location = useLocation();\n  const applicationChromeMode = useContext(TenantApplicationChromeContext);\n  const isRedfishOwnerWorkspace = location.pathname === \"/redfish-roofing\" || location.pathname.startsWith(\"/redfish-roofing/\");\n  const { user, signOut } = useAuth();\n  const { activeTenant, effectiveRole, isTenantOwner, isAdminOrHigher, hasGodModeAnywhere, tenantViewMode, setTenantViewMode } = useMultiTenant();\n  const [isOpen, setIsOpen] = useState(false);\n  const [isSigningOut, setIsSigningOut] = useState(false);\n  const reactId = useId();\n\n  const tenantType = normalizeTenantType(activeTenant?.tenant_type);\n  const workspaceType = String((activeTenant?.settings as { workspace_type?: string } | null)?.workspace_type || '').trim().toLowerCase();\n  const tenantSlug = String(activeTenant?.company_slug || '').trim().toLowerCase();\n  const isBigPapisTenant = workspaceType === 'mobile_vendor' && (tenantSlug === 'big-papis' || tenantSlug === 'big-papis-coquito-iceys');\n  const isModesWorkspace = tenantExperienceFamily(activeTenant) === 'modes';\n  const isPublicAdjusterTenant = tenantType === \"PUBLIC_ADJUSTER_FIRM\";\n  const tenantTypeLabel = isBigPapisTenant ? 'Mobile Vendor' : formatTenantType(activeTenant?.tenant_type);\n  const tenantLabel = getTenantDisplayName(activeTenant);\n  const tenantScopeKey = activeTenant?.id || tenantType || \"no-tenant\";\n  const tenantMediaBranding = resolveTenantMediaBranding(activeTenant as any);\n  const tenantProfileVideoUrl = String(tenantMediaBranding.profileVideoUrl || \"\").trim();\n  const registryId = `${singletonKey || reactId}:${tenantScopeKey}`;\n  const effectiveSingletonPriority = tenantShellOwner ? Math.max(singletonPriority, 1000) : singletonPriority;\n  const shouldRender = useSingletonMenu(registryId, placement, fallback, tenantType, effectiveSingletonPriority);\n\n  const tenantRoutes = resolveTenantAvatarMenuContract(activeTenant as any);\n  const basePath = activeTenant?.id ? tenantRoutes.basePath : null;\n  const enabledApps = useQuery({\n    queryKey: ['avatar-menu-enabled-apps', activeTenant?.id],\n    enabled: Boolean(activeTenant?.id),\n    staleTime: 60_000,\n    queryFn: async () => {\n      const { data, error } = await (supabase as any).from('tenant_applications').select('application_id').eq('tenant_id', activeTenant.id).eq('enabled', true);\n      if (error) throw error;\n      return new Set<string>((data || []).map((row: { application_id: string }) => row.application_id));\n    },\n  });\n  const roleKey = normalizeRole(effectiveRole);\n  const roleLabel = formatRole(effectiveRole, activeTenant?.tenant_type);\n  const isLawnCareTenant = tenantType === \"LAWN_CARE\";\n  const isShortTermRentalTenant = tenantType === \"SHORT_TERM_RENTAL\";\n  const supportsTenantCommunications = !isLawnCareTenant;\n  const supportsClassicWorkspaceLinks = !isLawnCareTenant;\n  const displayName = user?.user_metadata?.full_name || user?.user_metadata?.name || user?.email?.split(\"@\")[0] || \"Account\";\n  const displayEmail = user?.email || \"\";\n  const userInitials = initialsFrom(displayName || displayEmail);\n  const userAvatarUrl = String(\n    user?.user_metadata?.avatar_url\n      || user?.user_metadata?.picture\n      || '',\n  ).trim();\n  const useUserAvatar = avatarMode === \"user\" || isPublicAdjusterTenant;\n  const avatarLabel = isBigPapisTenant\n    ? \"Big Papi's Coquito Iceys avatar\"\n    : useUserAvatar\n      ? `${displayName} avatar`\n      : `${tenantLabel} logo`;\n  const tenantAvatarVideoUrl = useUserAvatar\n    ? ''\n    : tenantProfileVideoUrl || (isBigPapisTenant ? BIG_PAPIS_APPROVED_LOGO_VIDEO : '');\n\n  const renderAvatar = (size: number) => tenantAvatarVideoUrl\n    ? <video src={tenantAvatarVideoUrl} aria-label={avatarLabel} className=\"h-full w-full object-contain p-1\" autoPlay loop muted playsInline preload=\"metadata\" />\n    : useUserAvatar\n      ? userAvatarUrl\n        ? <img src={userAvatarUrl} alt=\"\" className=\"h-full w-full object-cover\" referrerPolicy=\"no-referrer\" />\n        : userInitials\n      : <TenantLogo tenant={activeTenant as any} size={size} rounded=\"full\" fallbackVariant=\"initial\" className=\"border-0 bg-transparent\" />;\n\n  const isGodMode = hasGodModeAnywhere();\n  const isRealtorTenant = tenantType === \"REALTOR\";\n  const isCurriRealtorTenant = isRealtorTenant && tenantSlug === 'curri-properties';\n  const tenantModeLabel = isGodMode && isRealtorTenant\n    ? (tenantViewMode === 'realtor' ? 'Realtor Mode' : 'Owner Mode')\n    : roleLabel;\n  const isOwnerLike = isTenantOwner() || isAdminOrHigher() || [\"GODMODE\", \"ADMIN\", \"OWNER\", \"TENANT_OWNER\"].includes(roleKey);\n  const isManagerLike = isOwnerLike || [\"MANAGER\", \"PM\", \"OFFICE_ADMIN\"].includes(roleKey);\n  const isCrew = roleKey === \"CREW\";\n  const isFieldUser = [\"REP\", \"AGENT\", \"PM\", \"MANAGER\", \"OFFICE_ADMIN\", \"ADMIN\", \"OWNER\", \"TENANT_OWNER\", \"GODMODE\"].includes(roleKey);\n\n  const dashboardPath = basePath ? tenantRoutes.workspacePath : '';\n  const documentsPath = basePath ? tenantRoutes.path('documents') : '';\n  const profilePath = basePath ? tenantRoutes.profilePath : '';\n  const settingsPath = basePath ? tenantRoutes.settingsPath : '';\n  const notificationsPath = basePath ? tenantRoutes.notificationsPath : '';\n  const connectionsPath = basePath ? tenantRoutes.connectionsPath : '';\n  const outboundNumberPath = basePath ? tenantRoutes.path('settings/outbound-number') : '';\n  const communicationsPath = basePath ? tenantRoutes.path('communications') : '';\n  const contactsPath = basePath ? tenantRoutes.path('contacts') : '';\n  const workflowPath = basePath ? tenantRoutes.path('workflow') : '';\n  const jobsPath = basePath ? tenantRoutes.path('jobs') : '';\n  const lawnCarePath = basePath ? tenantRoutes.path('lawn-care') : '';\n  const lawnCareSettingsPath = isLawnCareTenant && basePath ? tenantRoutes.settingsPath : '';\n  const ownerDashboardPath = dashboardPath;\n  const ownerBrandingPath = basePath ? tenantRoutes.path('branding') : '';\n  const ownerCommunicationsPath = communicationsPath;\n  const ownerUsersPath = basePath ? tenantRoutes.path('users') : '';\n  const moneyPath = basePath ? tenantRoutes.path('billing') : '';\n  const containerClass = placement === \"fixed\"\n    ? cn(\"fixed z-50\", isPublicAdjusterTenant ? \"right-3 sm:right-4\" : \"right-4\")\n    : \"relative z-10 inline-flex\";\n  const containerStyle = placement === \"fixed\"\n    ? { top: isPublicAdjusterTenant ? \"calc(var(--comm-banner-h, 0px) + 0.125rem)\" : \"calc(var(--comm-banner-h, 0px) + 1rem)\" }\n    : undefined;\n\n  const handleNavigate = (path: string) => {\n    const lawnCareSection = lawnCareSectionFromTarget(location.pathname, path);\n    const hashSection = sectionFromHashTarget(path);\n    setIsOpen(false);\n    if (lawnCareSection) {\n      switchLawnCareSectionInPlace(path, lawnCareSection);\n      return;\n    }\n    navigate(path);\n    if (hashSection) {\n      window.setTimeout(() => retryLawnCareSection(hashSection), 80);\n    }\n  };\n\n  const handleOpenTenantSelector = useCallback(() => {\n    setIsOpen(false);\n    window.location.assign(TENANT_SELECTOR_PATH);\n  }, []);\n\n  const handleSignOut = async () => {\n    setIsSigningOut(true);\n    setIsOpen(false);\n    try {\n      await signOut();\n    } finally {\n      setIsSigningOut(false);\n    }\n  };\n\n  const bigPapisActions = useMemo<MenuAction[]>(() => [\n    { section: \"workspace\", label: \"Big Papi's home\", icon: LayoutDashboard, to: dashboardPath },\n    { section: \"workspace\", label: \"Company Documents\", icon: FileText, to: documentsPath },\n    { section: \"workspace\", label: \"Switch Tenant\", icon: Building2, onClick: handleOpenTenantSelector },\n    { section: \"owner\", label: \"Money & expenses\", icon: WalletCards, to: moneyPath, show: isOwnerLike },\n    { section: \"account\", label: \"Settings & Profile\", icon: Settings, to: settingsPath },\n    { section: \"account\", label: \"Connections\", icon: PlugZap, to: connectionsPath, show: isOwnerLike },\n    { section: \"account\", label: isSigningOut ? \"Signing out…\" : \"Sign out\", icon: LogOut, onClick: handleSignOut, tone: \"destructive\" },\n  ], [dashboardPath, documentsPath, moneyPath, settingsPath, connectionsPath, isOwnerLike, isSigningOut, handleOpenTenantSelector]);\n\n  const modesActions = useMemo<MenuAction[]>(() => [\n    { section: \"workspace\", label: \"MODES home\", icon: LayoutDashboard, to: dashboardPath },\n    { section: \"workspace\", label: \"Switch Tenant\", icon: Building2, onClick: handleOpenTenantSelector },\n    { section: \"account\", label: \"Profile\", icon: User, to: profilePath },\n    { section: \"account\", label: \"Settings\", icon: Settings, to: settingsPath },\n    { section: \"account\", label: \"Notifications\", icon: Bell, to: notificationsPath },\n    { section: \"account\", label: \"Connections\", icon: PlugZap, to: connectionsPath, show: isOwnerLike },\n    { section: \"account\", label: isSigningOut ? \"Signing out…\" : \"Sign out\", icon: LogOut, onClick: handleSignOut, tone: \"destructive\" },\n  ], [dashboardPath, profilePath, settingsPath, notificationsPath, connectionsPath, isOwnerLike, isSigningOut, handleOpenTenantSelector]);\n\n  const shortTermRentalActions = useMemo<MenuAction[]>(() => [\n    { section: \"workspace\", label: \"Workspace dashboard\", icon: LayoutDashboard, to: dashboardPath },\n    { section: \"workspace\", label: \"Company Documents\", icon: FileText, to: documentsPath },\n    { section: \"workspace\", label: \"Switch Tenant\", icon: Building2, onClick: handleOpenTenantSelector },\n    { section: \"account\", label: \"Settings & Profile\", icon: Settings, to: settingsPath },\n    { section: \"account\", label: \"Connections\", icon: PlugZap, to: connectionsPath, show: isOwnerLike },\n    { section: \"account\", label: isSigningOut ? \"Signing out…\" : \"Sign out\", icon: LogOut, onClick: handleSignOut, tone: \"destructive\" },\n  ], [dashboardPath, documentsPath, settingsPath, connectionsPath, isOwnerLike, isSigningOut, handleOpenTenantSelector]);\n\n  const curriActions = useMemo<MenuAction[]>(() => {\n    const curriBase = basePath || '/curri-properties';\n    return [\n      { section: \"workspace\", label: \"Curri home\", icon: Home, to: curriBase },\n      { section: \"workspace\", label: \"Properties\", icon: Building2, to: `${curriBase}?tab=properties` },\n      { section: \"workspace\", label: \"Pipeline\", icon: Users, to: `${curriBase}?tab=pipeline` },\n      { section: \"workspace\", label: \"Campaigns\", icon: MessageSquare, to: `${curriBase}?tab=campaigns` },\n      { section: \"workspace\", label: \"Listings\", icon: Building2, to: `${curriBase}/realtor-operations/listings` },\n      { section: \"workspace\", label: \"Showings\", icon: Home, to: `${curriBase}/realtor-operations/showings` },\n      { section: \"workspace\", label: \"Transactions\", icon: FileText, to: `${curriBase}/realtor-operations/transactions` },\n      { section: \"workspace\", label: \"Agent Success\", icon: Users, to: `${curriBase}?tab=agent-success` },\n      { section: \"workspace\", label: \"Reports\", icon: ClipboardList, to: `${curriBase}?tab=reports` },\n      { section: \"account\", label: \"Settings & Profile\", icon: Settings, to: settingsPath },\n      { section: \"account\", label: \"Connections\", icon: PlugZap, to: connectionsPath, show: isOwnerLike },\n      { section: \"account\", label: \"Brand & Compliance\", icon: Settings, to: `${curriBase}?tab=brand` },\n      { section: \"account\", label: \"Messaging Setup\", icon: MessageSquare, to: `${curriBase}?tab=messaging` },\n      { section: \"account\", label: \"Realtor Tools\", icon: Wrench, to: `${curriBase}/realtor/tools` },\n      { section: \"workspace\", label: \"Switch Tenant\", icon: Building2, onClick: handleOpenTenantSelector },\n      { section: \"admin\", label: \"Admin console\", icon: Shield, to: \"/admin\", show: isGodMode },\n      { section: \"admin\", label: \"Tenant access check\", icon: Shield, to: \"/admin/tenant-access-check\", show: isGodMode },\n      { section: \"admin\", label: \"Impersonate user\", icon: User, to: \"/admin/impersonate\", show: isGodMode },\n      { section: \"account\", label: isSigningOut ? \"Signing out…\" : \"Sign out\", icon: LogOut, onClick: handleSignOut, tone: \"destructive\" },\n    ];\n  }, [basePath, settingsPath, connectionsPath, isOwnerLike, handleOpenTenantSelector, isGodMode, isSigningOut]);\n\n  const actions = useMemo<MenuAction[]>(() => [\n    { section: \"workspace\", label: \"Owner Mode\", icon: Building2, onClick: () => { setTenantViewMode('owner'); handleNavigate(dashboardPath); }, current: isGodMode && isRealtorTenant && tenantViewMode === 'owner', show: isGodMode && isRealtorTenant },\n    { section: \"workspace\", label: \"Realtor Mode\", icon: Home, onClick: () => { setTenantViewMode('realtor'); handleNavigate(basePath ? `${basePath}/realtor-dashboard` : dashboardPath); }, current: isGodMode && isRealtorTenant && tenantViewMode === 'realtor', show: isGodMode && isRealtorTenant },\n    { section: \"workspace\", label: \"Workspace dashboard\", icon: LayoutDashboard, to: dashboardPath, show: supportsClassicWorkspaceLinks },\n    { section: \"workspace\", label: \"Company Documents\", icon: FileText, to: documentsPath, show: supportsClassicWorkspaceLinks },\n    { section: \"workspace\", label: \"Switch Tenant\", icon: Building2, onClick: handleOpenTenantSelector },\n    { section: \"workspace\", label: \"Contacts\", icon: Users, to: contactsPath, show: supportsClassicWorkspaceLinks && (isFieldUser || roleKey === \"VIEWER\") },\n    { section: \"workspace\", label: \"Workflow\", icon: ClipboardList, to: workflowPath, show: supportsClassicWorkspaceLinks && isFieldUser },\n    { section: \"workspace\", label: \"Jobs\", icon: ClipboardList, to: jobsPath, show: supportsClassicWorkspaceLinks && (isManagerLike || isCrew) },\n    { section: \"account\", label: \"Settings & Profile\", icon: Settings, to: lawnCareSettingsPath, show: isLawnCareTenant },\n    { section: \"workspace\", label: \"Realtor dashboard\", icon: Home, to: basePath ? `${basePath}/realtor-dashboard` : undefined, show: tenantType === \"REALTOR\" },\n    { section: \"workspace\", label: \"Roof tracer\", icon: Home, to: basePath ? `${basePath}/roof-tracer` : undefined, show: tenantType === \"ROOFING_COMPANY\" },\n    { section: \"account\", label: \"Settings & Profile\", icon: Settings, to: settingsPath, show: supportsClassicWorkspaceLinks },\n    { section: \"account\", label: \"Connections\", icon: PlugZap, to: connectionsPath, show: isOwnerLike },\n    { section: \"account\", label: \"My outbound number\", icon: Phone, to: outboundNumberPath, show: supportsTenantCommunications && (isFieldUser || isCrew) },\n    { section: \"account\", label: \"Communications inbox\", icon: MessageSquare, to: communicationsPath, show: supportsTenantCommunications && (isFieldUser || isManagerLike) },\n    { section: \"owner\", label: \"Owner dashboard\", icon: Building2, to: ownerDashboardPath, show: isOwnerLike && !isLawnCareTenant },\n    { section: \"owner\", label: \"Money & expenses\", icon: WalletCards, to: moneyPath, show: isOwnerLike },\n    { section: \"owner\", label: \"Company branding\", icon: Wrench, to: ownerBrandingPath, show: isOwnerLike && !isLawnCareTenant },\n    { section: \"owner\", label: \"Owner communications\", icon: MessageSquare, to: ownerCommunicationsPath, show: supportsTenantCommunications && isOwnerLike && !isLawnCareTenant },\n    { section: \"owner\", label: \"Team & Access\", icon: Users, to: isLawnCareTenant ? `${lawnCarePath}#team` : ownerUsersPath, show: isOwnerLike },\n    { section: \"admin\", label: \"Admin console\", icon: Shield, to: \"/admin\", show: isGodMode },\n    { section: \"admin\", label: \"Tenant access check\", icon: Shield, to: \"/admin/tenant-access-check\", show: isGodMode },    { section: \"admin\", label: \"Impersonate user\", icon: User, to: \"/admin/impersonate\", show: isGodMode },\n    { section: \"account\", label: isSigningOut ? \"Signing out…\" : \"Sign out\", icon: LogOut, onClick: handleSignOut, tone: \"destructive\" },\n  ], [dashboardPath, documentsPath, contactsPath, workflowPath, jobsPath, lawnCarePath, lawnCareSettingsPath, ownerDashboardPath, moneyPath, ownerBrandingPath, ownerCommunicationsPath, ownerUsersPath, tenantType, settingsPath, connectionsPath, outboundNumberPath, communicationsPath, supportsTenantCommunications, supportsClassicWorkspaceLinks, isLawnCareTenant, isFieldUser, roleKey, isManagerLike, isCrew, isOwnerLike, isGodMode, isRealtorTenant, tenantViewMode, basePath, setTenantViewMode, isSigningOut, handleOpenTenantSelector]);\n\n  if (fallback && (location.pathname === \"/\" || location.pathname.startsWith(\"/auth\") || location.pathname.startsWith(\"/login\"))) return null;\n  if (applicationChromeMode === \"tenant-integrated\" && !tenantShellOwner) return null;\n  // Adaptive MISC and portfolio control-center workspaces are owned by MiscAwareAccountMenu.\n  // The generic CRM menu must fail closed here or both identity controls render in the same header.\n  if ((isRedfishOwnerWorkspace && placement === \"fixed\" && !fallback) || tenantType === \"MISC\" || tenantType === \"MISCELLANEOUS\" || tenantType === \"PORTFOLIO_CONTROL_CENTER\" || !shouldRender) return null;\n\n  const visibleActions = (isModesWorkspace ? modesActions : isBigPapisTenant ? bigPapisActions : isShortTermRentalTenant ? shortTermRentalActions : isCurriRealtorTenant ? curriActions : actions).filter((action) => {\n    if (action.show === false || (!action.to && !action.onClick)) return false;\n    if (!action.to) return true;\n    const platformAdmin = action.section === 'admin';\n    if (!isTenantAvatarMenuTargetAllowed(activeTenant as any, action.to, platformAdmin)) return false;\n    const scopedApp = getTenantApplicationByTenantScopedPath(action.to);\n    if (!scopedApp) return true;\n    if (!enabledApps.data?.has(scopedApp.app.id)) return false;\n    const supported = scopedApp.app.supportedTenantTypes.map((value) => normalizeTenantType(value));\n    return supported.length === 0 || supported.includes(tenantType);\n  });\n  const signOutAction = visibleActions.find((action) => action.tone === \"destructive\");\n  const groupedActions = {\n    workspace: visibleActions.filter((action) => action.section === \"workspace\" && action !== signOutAction),\n    account: visibleActions.filter((action) => action.section === \"account\" && action !== signOutAction),\n    owner: visibleActions.filter((action) => action.section === \"owner\" && action !== signOutAction),\n    admin: visibleActions.filter((action) => action.section === \"admin\" && action !== signOutAction),\n  };\n\n  const renderAction = (action: MenuAction) => {\n    const Icon = action.icon;\n    return (\n      <DropdownMenuItem key={`${action.section}:${action.label}:${action.to || \"action\"}`} disabled={action.label === \"Signing out…\"} onClick={() => { if (action.to) handleNavigate(action.to); else void action.onClick?.(); }} className={cn(\"min-h-12 cursor-pointer px-3 py-2.5 text-base font-semibold\", action.tone === \"destructive\" && \"text-destructive focus:text-destructive\")}>\n        <Icon className=\"mr-3 h-5 w-5\" />\n        {action.label}\n        {(action.current || isSameTarget(location.pathname, action.to)) && <CheckCircle2 className=\"ml-auto h-3.5 w-3.5 text-primary\" />}\n      </DropdownMenuItem>\n    );\n  };\n\n  return (\n    <div className={cn(containerClass, className)} style={containerStyle} data-single-role-tenant-avatar=\"true\">\n      <DropdownMenu open={isOpen} onOpenChange={setIsOpen}>\n        <DropdownMenuTrigger asChild>\n          {trigger ?? (\n            <Button\n              type=\"button\"\n              variant=\"ghost\"\n              size=\"sm\"\n              className={cn(\n                \"min-h-[44px] max-w-[calc(100vw-1rem)] gap-2 rounded-full border border-border/60 bg-background/90 px-2 shadow-sm backdrop-blur hover:bg-background sm:max-w-[260px]\",\n                isPublicAdjusterTenant && \"border-white/10 bg-white/[0.03] px-2.5 shadow-none hover:bg-white/[0.06] sm:max-w-[220px]\",\n                isBigPapisTenant && \"border-[#72dbff]/25 bg-black/30 px-2.5 text-white shadow-none hover:bg-white/10 sm:max-w-[220px]\",\n              )}\n              aria-label={useUserAvatar ? `Open account menu for ${displayName}` : `Open ${tenantLabel} account menu`}\n              title={isPublicAdjusterTenant ? `${displayName} · ${tenantModeLabel}` : isLawnCareTenant ? `${tenantLabel} · ${tenantTypeLabel} · ${tenantModeLabel}` : `${tenantLabel} · ${tenantTypeLabel} · ${tenantModeLabel}`}\n            >\n              <span className={cn(\"flex h-7 w-7 shrink-0 items-center justify-center overflow-hidden rounded-full text-[11px] font-bold\", useUserAvatar && \"bg-primary/10 text-primary ring-1 ring-primary/20\")} aria-label={avatarLabel}>{renderAvatar(28)}</span>\n              <span className=\"hidden min-w-0 flex-col items-start leading-tight sm:flex\">\n                <span className=\"max-w-[150px] truncate text-xs font-semibold\">{isPublicAdjusterTenant ? displayName : tenantLabel}</span>\n                <span className=\"max-w-[150px] truncate text-[10px] text-muted-foreground\">{isPublicAdjusterTenant ? tenantModeLabel : `${tenantTypeLabel} · ${tenantModeLabel}`}</span>\n              </span>\n              <ChevronDown className=\"h-3.5 w-3.5 shrink-0 text-muted-foreground\" />\n            </Button>\n          )}\n        </DropdownMenuTrigger>\n        <DropdownMenuContent align=\"end\" className=\"w-80 max-h-[min(82vh,720px)] overflow-y-auto\" data-owner-account-menu=\"true\">\n          <div className=\"px-3 py-3\"><div className=\"flex items-start gap-3\"><span className=\"flex h-10 w-10 shrink-0 items-center justify-center overflow-hidden rounded-full text-sm font-bold\" aria-label={avatarLabel}>{renderAvatar(40)}</span><div className=\"min-w-0 flex-1\"><p className=\"truncate text-sm font-semibold\">{displayName}</p>{displayEmail && <p className=\"truncate text-xs text-muted-foreground\">{displayEmail}</p>}<p className=\"truncate text-xs text-muted-foreground\">{tenantLabel}</p><div className=\"mt-2 flex flex-wrap gap-1.5\"><Badge variant=\"secondary\" className=\"h-5 px-1.5 text-[10px]\">{tenantModeLabel}</Badge><Badge variant=\"outline\" className=\"h-5 px-1.5 text-[10px]\">{tenantTypeLabel}</Badge></div></div></div></div>\n          <DropdownMenuSeparator />\n          <DropdownMenuLabel className=\"text-[11px] uppercase tracking-wide text-muted-foreground\">Workspace</DropdownMenuLabel>\n          {groupedActions.workspace.map(renderAction)}\n          <CurriPortfolioReturnMenuItem onNavigate={() => setIsOpen(false)} />\n          {groupedActions.account.length > 0 && <><DropdownMenuSeparator /><DropdownMenuLabel className=\"text-[11px] uppercase tracking-wide text-muted-foreground\">{isLawnCareTenant ? 'Account & settings' : 'My account'}</DropdownMenuLabel>{groupedActions.account.map(renderAction)}</>}\n          {groupedActions.owner.length > 0 && <><DropdownMenuSeparator /><DropdownMenuLabel className=\"text-[11px] uppercase tracking-wide text-muted-foreground\">Owner</DropdownMenuLabel>{groupedActions.owner.map(renderAction)}</>}\n          {groupedActions.admin.length > 0 && <><DropdownMenuSeparator /><DropdownMenuLabel className=\"text-[11px] uppercase tracking-wide text-muted-foreground\">Platform admin</DropdownMenuLabel>{groupedActions.admin.map(renderAction)}</>}\n          {signOutAction && <><DropdownMenuSeparator />{renderAction(signOutAction)}</>}\n        </DropdownMenuContent>\n      </DropdownMenu>\n    </div>\n  );\n}\n"},{"path":"src/components/MiscAwareAccountMenu.tsx","content":"import { useContext, useMemo, useState, type ReactElement } from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport { Bell, Building2, ChevronDown, ClipboardList, LogOut, PlugZap, Settings, User } from 'lucide-react';\nimport { Button } from '@/components/ui/button';\nimport { Badge } from '@/components/ui/badge';\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuLabel,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from '@/components/ui/dropdown-menu';\nimport { useAuth } from '@/contexts/AuthContext';\nimport { useMultiTenant } from '@/contexts/MultiTenantContext';\nimport { useTenantRoles } from '@/contexts/tenantSelectors';\nimport { TenantApplicationChromeContext } from '@/contexts/TenantApplicationChromeContext';\nimport { cn } from '@/lib/utils';\nimport TenantLogo from '@/components/branding/TenantLogo';\nimport { normalizeBusinessOperatingBlueprint } from '@/lib/tenantBlueprints/businessOperatingBlueprint';\nimport { resolveAdaptiveBlueprintRoutePath } from '@/lib/applications/applicationFamilyRegistry';\nimport { isTenantAvatarMenuTargetAllowed, resolveTenantAvatarMenuContract } from '@/lib/tenants/tenantAvatarMenuContract';\nimport CRMUserMenu from './CRMUserMenu';\nimport CurriPortfolioReturnMenuItem from '@/components/curri/CurriPortfolioReturnMenuItem';\nimport { useIsMobile } from '@/hooks/use-mobile';\nimport { tenantExperienceFamily } from '@/shells/modesTenantShell';\n\ntype MiscAwareAccountMenuProps = {\n  placement?: 'fixed' | 'inline';\n  className?: string;\n  singletonKey?: string;\n  fallback?: boolean;\n  tenantShellOwner?: boolean;\n  avatarMode?: 'tenant' | 'user';\n  trigger?: ReactElement;\n};\n\ntype WorkspaceMenuAction = { label: string; path: string; icon: typeof ClipboardList };\n\nconst TENANT_SELECTOR_PATH = '/select-tenant?manual=1';\n\nfunction normalizeTenantType(value?: string | null) {\n  return String(value || '').trim().toUpperCase().replace(/[\\s-]+/g, '_');\n}\n\nfunction getTenantDisplayName(tenant?: { company_dba_name?: string | null; company_legal_name?: string | null; name?: string | null; company_slug?: string | null } | null) {\n  return tenant?.company_dba_name || tenant?.company_legal_name || tenant?.name || tenant?.company_slug || 'Workspace';\n}\n\nfunction miscWorkspacePresentation(activeTenant: any) {\n  if (tenantExperienceFamily(activeTenant) === 'modes') {\n    return { actionLabel: 'Open workspace', workspaceLabel: 'MODES' };\n  }\n  const tenantType = normalizeTenantType(activeTenant?.tenant_type);\n  const workspaceType = String(activeTenant?.settings?.workspace_type || '').trim().toLowerCase();\n  const workspaceVariant = String(activeTenant?.settings?.workspace_variant || '').trim().toLowerCase();\n  const vertical = String(activeTenant?.settings?.vertical || '').trim().toLowerCase();\n  if (tenantType === 'PORTFOLIO_CONTROL_CENTER' || workspaceType === 'executive_control_center' || workspaceVariant === 'curri_control_center') {\n    return { actionLabel: 'Open control center', workspaceLabel: 'Executive Oversight' };\n  }\n  if (workspaceType === 'state_photo_docs') {\n    return { actionLabel: 'Facility Photo Report', workspaceLabel: 'Photo Documentation' };\n  }\n  if (workspaceType === 'mobile_vendor') {\n    return { actionLabel: 'Open workspace', workspaceLabel: 'Mobile Vendor' };\n  }\n  if (vertical === 'food_beverage') {\n    return { actionLabel: 'Open workspace', workspaceLabel: 'Food & Beverage' };\n  }\n  const blueprint = normalizeBusinessOperatingBlueprint(activeTenant?.settings || {}, activeTenant);\n  return { actionLabel: 'Open workspace', workspaceLabel: blueprint.vocabulary.workspace || 'Business Operations' };\n}\n\nfunction formatRole(role?: string | null) {\n  const normalized = String(role || '').trim().toUpperCase().replace(/[\\s-]+/g, '_');\n  if (normalized === 'OWNER' || normalized === 'TENANT_OWNER') return 'Owner';\n  if (normalized === 'MANAGER') return 'Route Manager';\n  if (normalized === 'OFFICE_ADMIN' || normalized === 'OFFICE_STAFF') return 'Office Coordinator';\n  if (normalized === 'CREW') return 'Crew Member';\n  if (normalized === 'REP') return 'Field Teammate';\n  if (normalized === 'GODMODE') return 'Platform Admin';\n  return normalized ? normalized.toLowerCase().split('_').map((part) => part.charAt(0).toUpperCase()).join(' ') : 'Team Member';\n}\n\nexport default function MiscAwareAccountMenu(props: MiscAwareAccountMenuProps) {\n  const navigate = useNavigate();\n  const { user, signOut } = useAuth();\n  const { activeTenant } = useMultiTenant();\n  const { effectiveRole } = useTenantRoles();\n  const [isOpen, setIsOpen] = useState(false);\n  const [isSigningOut, setIsSigningOut] = useState(false);\n  const isMobile = useIsMobile();\n  const applicationChromeMode = useContext(TenantApplicationChromeContext);\n  const tenantShellOwner = props.tenantShellOwner === true || props.fallback === true;\n\n  const tenantType = normalizeTenantType(activeTenant?.tenant_type);\n  const tenantRoutes = resolveTenantAvatarMenuContract(activeTenant as any);\n  const isOwnerLike = ['GODMODE','ADMIN','OWNER','TENANT_OWNER'].includes(String(effectiveRole || '').trim().toUpperCase().replace(/[\\s-]+/g, '_'));\n  const placement = props.placement || 'inline';\n  const tenantLabel = getTenantDisplayName(activeTenant);\n  const displayName = user?.user_metadata?.full_name || user?.user_metadata?.name || user?.email?.split('@')[0] || 'Account';\n  const displayEmail = user?.email || '';\n  const avatarUrl = String(user?.user_metadata?.avatar_url || user?.user_metadata?.picture || '').trim();\n  const initials = useMemo(() => {\n    const parts = String(displayName).split(/[\\s._-]+/).filter(Boolean);\n    return parts.slice(0, 2).map((part) => part.charAt(0).toUpperCase()).join('') || 'A';\n  }, [displayName]);\n\n  if (applicationChromeMode === 'tenant-integrated' && !tenantShellOwner) return null;\n\n  const handleSignOut = async () => {\n    setIsSigningOut(true);\n    setIsOpen(false);\n    try {\n      await signOut();\n    } finally {\n      setIsSigningOut(false);\n    }\n  };\n\n  const handleTenantNavigate = (path: string) => {\n    if (!isTenantAvatarMenuTargetAllowed(activeTenant as any, path)) return;\n    setIsOpen(false);\n    navigate(path);\n  };\n\n  if (tenantType === 'LAWN_CARE') {\n    if (placement !== 'inline') return null;\n    const roleLabel = formatRole(effectiveRole);\n    const useTenantAvatar = props.avatarMode === 'tenant';\n    const lawnCareWorkspacePath = tenantRoutes.basePath;\n    const lawnCareGearPath = `${lawnCareWorkspacePath}#gear`;\n    const lawnCareTeamPath = `${lawnCareWorkspacePath}#team`;\n    const lawnCareMoneyPath = `${lawnCareWorkspacePath}#invoices`;\n    return (\n      <div className={cn('relative z-10 inline-flex', props.className)} data-single-role-tenant-avatar=\"true\" data-lawn-care-account-menu=\"canonical\">\n        <DropdownMenu open={isOpen} onOpenChange={setIsOpen}>\n          <DropdownMenuTrigger asChild>\n            {props.trigger ?? <Button type=\"button\" variant=\"ghost\" size=\"sm\" className=\"min-h-[44px] max-w-[240px] gap-2 rounded-full border border-white/15 bg-slate-950/88 px-2 text-white shadow-sm backdrop-blur hover:bg-slate-900\" aria-label={`Open account menu for ${displayName}`} title={`${tenantLabel} · ${roleLabel}`}>\n              <span className=\"flex h-7 w-7 shrink-0 items-center justify-center overflow-hidden rounded-full border border-white/10 bg-slate-800 text-[11px] font-bold text-white\">\n                {useTenantAvatar ? <TenantLogo tenant={activeTenant as any} size={28} rounded=\"full\" fallbackVariant=\"initial\" className=\"border-0 bg-transparent\" /> : avatarUrl ? <img src={avatarUrl} alt=\"\" className=\"h-full w-full object-cover\" referrerPolicy=\"no-referrer\" /> : initials}\n              </span>\n              <span className=\"hidden min-w-0 flex-col items-start leading-tight sm:flex\"><span className=\"max-w-[145px] truncate text-xs font-semibold\">{displayName}</span><span className=\"max-w-[145px] truncate text-[10px] text-slate-300\">{roleLabel}</span></span>\n              <ChevronDown className=\"h-3.5 w-3.5 shrink-0 text-slate-300\" />\n            </Button>}\n          </DropdownMenuTrigger>\n          <DropdownMenuContent align=\"end\" className=\"w-72 max-h-[min(82vh,720px)] overflow-y-auto\">\n            <div className=\"px-3 py-3\"><div className=\"flex items-start gap-3\"><span className=\"flex h-10 w-10 shrink-0 items-center justify-center overflow-hidden rounded-full bg-slate-900 text-sm font-bold text-white\">{useTenantAvatar ? <TenantLogo tenant={activeTenant as any} size={40} rounded=\"full\" fallbackVariant=\"initial\" className=\"border-0 bg-transparent\" /> : avatarUrl ? <img src={avatarUrl} alt=\"\" className=\"h-full w-full object-cover\" referrerPolicy=\"no-referrer\" /> : initials}</span><div className=\"min-w-0 flex-1\"><p className=\"truncate text-sm font-semibold\">{displayName}</p>{displayEmail && <p className=\"truncate text-xs text-muted-foreground\">{displayEmail}</p>}<p className=\"truncate text-xs text-muted-foreground\">{tenantLabel}</p><div className=\"mt-2 flex flex-wrap gap-1.5\"><Badge variant=\"secondary\" className=\"h-5 px-1.5 text-[10px]\">{roleLabel}</Badge><Badge variant=\"outline\" className=\"h-5 px-1.5 text-[10px]\">Lawn Care</Badge></div></div></div></div>\n            <DropdownMenuSeparator />\n            <DropdownMenuLabel className=\"text-[11px] uppercase tracking-wide text-muted-foreground\">Workspace</DropdownMenuLabel>\n            <DropdownMenuItem onClick={() => handleTenantNavigate(lawnCareGearPath)}><ClipboardList className=\"mr-2 h-4 w-4\" /> Gear</DropdownMenuItem>\n            <DropdownMenuItem onClick={() => handleTenantNavigate(lawnCareTeamPath)}><User className=\"mr-2 h-4 w-4\" /> Team</DropdownMenuItem>\n            <DropdownMenuItem onClick={() => handleTenantNavigate(lawnCareMoneyPath)}><ClipboardList className=\"mr-2 h-4 w-4\" /> Money</DropdownMenuItem>\n            <DropdownMenuSeparator />\n            <DropdownMenuLabel className=\"text-[11px] uppercase tracking-wide text-muted-foreground\">Account</DropdownMenuLabel>\n            <DropdownMenuItem onClick={() => handleTenantNavigate(tenantRoutes.settingsPath)}><Settings className=\"mr-2 h-4 w-4\" /> Settings & Profile</DropdownMenuItem>\n            <DropdownMenuItem onClick={() => handleTenantNavigate(tenantRoutes.notificationsPath)}><Bell className=\"mr-2 h-4 w-4\" /> Notification settings</DropdownMenuItem>\n            {isOwnerLike ? <DropdownMenuItem onClick={() => handleTenantNavigate(tenantRoutes.connectionsPath)}><PlugZap className=\"mr-2 h-4 w-4\" /> Connections</DropdownMenuItem> : null}\n            <DropdownMenuItem onClick={() => { setIsOpen(false); window.location.assign(TENANT_SELECTOR_PATH); }}><Building2 className=\"mr-2 h-4 w-4\" /> Switch workspace</DropdownMenuItem>\n            <DropdownMenuSeparator />\n            <DropdownMenuItem disabled={isSigningOut} onClick={() => void handleSignOut()} className=\"text-destructive focus:text-destructive\"><LogOut className=\"mr-2 h-4 w-4\" /> {isSigningOut ? 'Signing out…' : 'Sign out'}</DropdownMenuItem>\n          </DropdownMenuContent>\n        </DropdownMenu>\n      </div>\n    );\n  }\n\n  const usesNativeMiscMenu = ['MISC', 'MISCELLANEOUS', 'PORTFOLIO_CONTROL_CENTER'].includes(tenantType);\n  if (!usesNativeMiscMenu) return <CRMUserMenu {...props} placement={placement} tenantShellOwner={tenantShellOwner} />;\n\n  const settings = activeTenant?.settings && typeof activeTenant.settings === 'object' ? activeTenant.settings as Record<string, any> : {};\n  const workspaceType = String(settings.workspace_type || '').trim().toLowerCase();\n  const workspaceVariant = String(settings.workspace_variant || '').trim().toLowerCase();\n  const isModesWorkspace = tenantExperienceFamily(activeTenant) === 'modes';\n  const isExecutiveControlCenter = !isModesWorkspace && (tenantType === 'PORTFOLIO_CONTROL_CENTER' || workspaceType === 'executive_control_center' || workspaceVariant === 'curri_control_center');\n  const { actionLabel: workspaceActionLabel, workspaceLabel: legacyWorkspaceLabel } = miscWorkspacePresentation(activeTenant);\n  const workspaceLabel = isModesWorkspace ? 'MODES' : legacyWorkspaceLabel;\n  const blueprint = isExecutiveControlCenter || isModesWorkspace ? null : normalizeBusinessOperatingBlueprint(settings, activeTenant);\n  const blueprintActions = (blueprint?.modules ?? [])\n    .filter((module) => Boolean(module.path))\n    .map<WorkspaceMenuAction>((module) => ({\n      label: module.label,\n      path: activeTenant\n        ? (resolveAdaptiveBlueprintRoutePath(module.id, activeTenant as any, effectiveRole) || resolveAdaptiveBlueprintRoutePath(module.path, activeTenant as any, effectiveRole) || tenantRoutes.path(module.path))\n        : tenantRoutes.path(module.path),\n      icon: ClipboardList,\n    }))\n    .filter((action, index, actions) => isTenantAvatarMenuTargetAllowed(activeTenant as any, action.path) && actions.findIndex((candidate) => candidate.path === action.path) === index)\n    .slice(0, 7);\n  const workspaceActions: WorkspaceMenuAction[] = (isModesWorkspace\n    ? [{ label: 'MODES home', path: tenantRoutes.workspacePath, icon: ClipboardList }]\n    : isExecutiveControlCenter\n    ? [\n        { label: 'Command Mode', path: tenantRoutes.workspacePath, icon: ClipboardList },\n        { label: 'Portfolio Mode', path: `${tenantRoutes.workspacePath}?tab=businesses`, icon: Building2 },\n        { label: 'Opportunity Mode', path: `${tenantRoutes.workspacePath}?tab=opportunities`, icon: ClipboardList },\n        { label: 'Decision Mode', path: `${tenantRoutes.workspacePath}?tab=decisions`, icon: ClipboardList },\n        { label: 'Systems', path: `${tenantRoutes.workspacePath}?tab=more`, icon: Settings },\n      ]\n    : [\n        { label: workspaceActionLabel, path: tenantRoutes.workspacePath, icon: ClipboardList },\n        ...blueprintActions.filter((action) => action.path !== tenantRoutes.workspacePath),\n      ]).filter((action) => isTenantAvatarMenuTargetAllowed(activeTenant as any, action.path)).slice(0, 8);\n  const containerClass = placement === 'fixed' ? 'fixed right-4 z-50' : 'relative z-10 inline-flex';\n  const containerStyle = placement === 'fixed' ? { top: 'calc(var(--comm-banner-h, 0px) + 1rem)' } : undefined;\n\n  return (\n    <div className={cn(containerClass, props.className)} style={containerStyle} data-single-role-tenant-avatar=\"true\" data-misc-tenant-avatar=\"true\" data-tenant-native-avatar-menu=\"true\" data-tenant-avatar-slug={tenantRoutes.tenantSlug}>\n      <DropdownMenu open={isOpen} onOpenChange={setIsOpen}>\n        <DropdownMenuTrigger asChild>\n          {props.trigger ?? <Button type=\"button\" variant=\"ghost\" size=\"sm\" className={cn('min-h-[44px] rounded-full border border-border/50 bg-background/72 text-foreground shadow-sm transition hover:bg-muted/80', isMobile ? 'w-[44px] p-0' : 'max-w-[260px] gap-2 px-2')} aria-label={`Open ${tenantLabel} workspace menu`} title={tenantLabel} onPointerDown={isExecutiveControlCenter ? (event) => { event.preventDefault(); setIsOpen((open) => !open); } : undefined}>\n            <span className=\"flex h-7 w-7 shrink-0 items-center justify-center overflow-hidden rounded-full border border-border/60 bg-background\"><TenantLogo tenant={activeTenant as any} size={28} rounded=\"full\" fallbackVariant=\"initial\" className=\"border-0 bg-transparent\" /></span>\n            <span className=\"hidden min-w-0 flex-col items-start leading-tight sm:flex\"><span className=\"max-w-[150px] truncate text-xs font-semibold\">{tenantLabel}</span><span className=\"max-w-[150px] truncate text-[10px] text-muted-foreground\">{workspaceLabel}</span></span>\n            {!isMobile ? <ChevronDown className=\"h-3.5 w-3.5 shrink-0 text-muted-foreground\" /> : null}\n          </Button>}\n        </DropdownMenuTrigger>\n        <DropdownMenuContent align=\"end\" className=\"w-72 max-h-[min(82vh,720px)] overflow-y-auto\">\n          <div className=\"px-3 py-3\"><div className=\"flex items-start gap-3\"><span className=\"flex h-10 w-10 shrink-0 items-center justify-center overflow-hidden rounded-full border border-border/60 bg-background\"><TenantLogo tenant={activeTenant as any} size={40} rounded=\"full\" fallbackVariant=\"initial\" className=\"border-0 bg-transparent\" /></span><div className=\"min-w-0 flex-1\"><p className=\"truncate text-sm font-semibold\">{tenantLabel}</p><p className=\"truncate text-xs text-muted-foreground\">{displayName}</p>{displayEmail && <p className=\"truncate text-xs text-muted-foreground\">{displayEmail}</p>}<div className=\"mt-2 flex flex-wrap gap-1.5\"><Badge variant=\"secondary\" className=\"h-5 px-1.5 text-[10px]\">Workspace</Badge><Badge variant=\"outline\" className=\"h-5 px-1.5 text-[10px]\">{workspaceLabel}</Badge></div></div></div></div>\n          <DropdownMenuSeparator />\n          <DropdownMenuLabel className=\"text-[11px] uppercase tracking-wide text-muted-foreground\">Workspace</DropdownMenuLabel>\n          {workspaceActions.map(({ label, path, icon: Icon }) => <DropdownMenuItem key={`${label}:${path}`} onClick={() => handleTenantNavigate(path)}><Icon className=\"mr-2 h-4 w-4\" />{label}</DropdownMenuItem>)}\n          <CurriPortfolioReturnMenuItem onNavigate={() => setIsOpen(false)} />\n          <DropdownMenuItem onClick={() => { setIsOpen(false); navigate(TENANT_SELECTOR_PATH); }}><Building2 className=\"mr-2 h-4 w-4\" />Switch workspace</DropdownMenuItem>\n          <DropdownMenuSeparator />\n          <DropdownMenuLabel className=\"text-[11px] uppercase tracking-wide text-muted-foreground\">My account</DropdownMenuLabel>\n          <DropdownMenuItem onClick={() => handleTenantNavigate(tenantRoutes.settingsPath)}><Settings className=\"mr-2 h-4 w-4\" />Settings & Profile</DropdownMenuItem>\n          <DropdownMenuItem onClick={() => handleTenantNavigate(tenantRoutes.notificationsPath)}><Bell className=\"mr-2 h-4 w-4\" />Notification settings</DropdownMenuItem>\n          {isOwnerLike ? <DropdownMenuItem onClick={() => handleTenantNavigate(tenantRoutes.connectionsPath)}><PlugZap className=\"mr-2 h-4 w-4\" />Connections</DropdownMenuItem> : null}\n          <DropdownMenuItem disabled={isSigningOut} onClick={() => void handleSignOut()} className=\"text-destructive focus:text-destructive\"><LogOut className=\"mr-2 h-4 w-4\" />{isSigningOut ? 'Signing out…' : 'Sign out'}</DropdownMenuItem>\n        </DropdownMenuContent>\n      </DropdownMenu>\n    </div>\n  );\n}\n\nexport function TenantMobileAccountSlot({ className, triggerClassName, label = 'Account' }: { className?: string; triggerClassName?: string; label?: string }) {\n  const { user } = useAuth();\n  const displayName = user?.user_metadata?.full_name || user?.user_metadata?.name || user?.email?.split('@')[0] || 'Account';\n  const avatarUrl = String(user?.user_metadata?.avatar_url || user?.user_metadata?.picture || '').trim();\n  const initials = String(displayName).split(/[\\s._-]+/).filter(Boolean).slice(0,2).map((part)=>part.charAt(0).toUpperCase()).join('') || 'A';\n  return (\n    <MiscAwareAccountMenu\n      placement=\"inline\"\n      className={className}\n      avatarMode=\"user\"\n      tenantShellOwner\n      trigger={\n        <button\n          type=\"button\"\n          data-tenant-mobile-account-slot=\"true\"\n          aria-label={`Open account menu for ${displayName}`}\n          className={cn('flex min-h-[44px] w-full flex-col items-center justify-center gap-1 rounded-xl px-1 text-[10px] font-medium text-muted-foreground transition-colors hover:bg-accent hover:text-accent-foreground', triggerClassName)}\n        >\n          <span className=\"flex h-6 w-6 items-center justify-center overflow-hidden rounded-full border border-current/20 bg-background/70 text-[10px] font-black\">\n            {avatarUrl ? <img src={avatarUrl} alt=\"\" className=\"h-full w-full object-cover\" referrerPolicy=\"no-referrer\" /> : initials}\n          </span>\n          <span className=\"max-w-full truncate\">{label}</span>\n        </button>\n      }\n    />\n  );\n}\n"},{"path":"src/App.css","content":"html,\nbody,\n#root {\n  width: 100%;\n  max-width: none;\n  min-height: 100%;\n}\n\nhtml {\n  min-height: 100%;\n  overflow-x: hidden;\n  overflow-y: auto;\n}\n\nbody {\n  margin: 0;\n  min-height: 100dvh;\n  overflow-x: hidden;\n  overflow-y: auto;\n  -webkit-overflow-scrolling: touch;\n}\n\n#root {\n  min-height: 100dvh;\n  padding: 0;\n  text-align: left;\n}\n\n/*\n * Canonical platform scaling + constraint primitive.\n *\n * This system constrains space; it does not browser-zoom or transform-scale\n * application layouts. Shells inherit the tokens. Routes opt into bounded,\n * wide, full-bleed, scroll-region, and media-frame behavior explicitly.\n */\n:root {\n  --kl-viewport-height: 100vh;\n  --kl-content-max: 72rem;\n  --kl-content-wide-max: 90rem;\n  --kl-reading-max: 52rem;\n  --kl-page-gutter: clamp(0.875rem, 1.25vw + 0.5rem, 2rem);\n  --kl-section-gap: clamp(1rem, 0.9vw + 0.75rem, 1.75rem);\n  --kl-card-inset: clamp(0.875rem, 1vw + 0.625rem, 1.5rem);\n  --kl-control-min-height: 2.75rem;\n  --kl-sticky-offset: var(--comm-banner-h, 0px);\n  --kl-platform-mobile-nav-h: 0px;\n  --kl-tenant-mobile-nav-h: 0px;\n  --kl-mobile-bottom-stack-h: calc(\n    var(--kl-platform-mobile-nav-h, 0px) + var(--kl-tenant-mobile-nav-h, 0px)\n  );\n  --kl-shell-bottom-inset: calc(\n    var(--kl-mobile-bottom-stack-h, 0px) + env(safe-area-inset-bottom)\n  );\n  --kl-hero-min-height: clamp(14rem, 30vw, 24rem);\n  --kl-hero-max-height: min(70vh, 42rem);\n  --kl-media-focal-x: 50%;\n  --kl-media-focal-y: 50%;\n}\n\n@supports (height: 100dvh) {\n  :root {\n    --kl-viewport-height: 100dvh;\n    --kl-hero-max-height: min(70dvh, 42rem);\n  }\n}\n\n.kl-platform-surface {\n  box-sizing: border-box;\n  width: 100%;\n  min-width: 0;\n  max-width: 100%;\n  min-height: calc(var(--kl-viewport-height) - var(--comm-banner-h, 0px));\n  overflow-x: clip;\n}\n\n@supports not (overflow: clip) {\n  .kl-platform-surface {\n    overflow-x: hidden;\n  }\n}\n\n.kl-content-frame,\n.kl-content-frame-wide,\n.kl-content-frame-reading {\n  box-sizing: border-box;\n  width: 100%;\n  min-width: 0;\n  margin-inline: auto;\n  padding-inline: var(--kl-page-gutter);\n}\n\n.kl-content-frame {\n  max-width: var(--kl-content-max);\n}\n\n.kl-content-frame-wide {\n  max-width: var(--kl-content-wide-max);\n}\n\n.kl-content-frame-reading {\n  max-width: var(--kl-reading-max);\n}\n\n.kl-full-bleed {\n  box-sizing: border-box;\n  width: 100%;\n  min-width: 0;\n  max-width: none;\n  padding-inline: 0;\n}\n\n.kl-scroll-region {\n  min-width: 0;\n  min-height: 0;\n  overflow-x: hidden;\n  overflow-y: auto;\n  overscroll-behavior-y: contain;\n  -webkit-overflow-scrolling: touch;\n}\n\n.kl-sticky-context {\n  position: sticky;\n  top: var(--kl-sticky-offset);\n  z-index: 80;\n}\n\n.kl-media-frame {\n  position: relative;\n  width: 100%;\n  min-width: 0;\n  min-height: var(--kl-hero-min-height);\n  max-height: var(--kl-hero-max-height);\n  overflow: hidden;\n}\n\n.kl-media-frame > img,\n.kl-media-frame > video,\n.kl-media-frame > picture,\n.kl-media-frame > picture > img {\n  display: block;\n  width: 100%;\n  height: 100%;\n  max-width: 100%;\n}\n\n.kl-media-frame > img,\n.kl-media-frame > video,\n.kl-media-frame > picture > img {\n  object-fit: cover;\n  object-position: var(--kl-media-focal-x) var(--kl-media-focal-y);\n}\n\n.kl-media-frame.kl-media-frame-contain > img,\n.kl-media-frame.kl-media-frame-contain > video,\n.kl-media-frame.kl-media-frame-contain > picture > img {\n  object-fit: contain;\n}\n\n@media (max-width: 767px) {\n  :root {\n    --kl-page-gutter: clamp(0.75rem, 3.5vw, 1rem);\n    --kl-section-gap: clamp(0.875rem, 3vw, 1.25rem);\n    --kl-card-inset: clamp(0.75rem, 3vw, 1rem);\n  }\n\n  .kl-content-frame,\n  .kl-content-frame-wide,\n  .kl-content-frame-reading {\n    max-width: 100%;\n  }\n}\n\n.kl-responsive-app-root {\n  width: 100%;\n  max-width: 100%;\n  min-height: var(--kl-viewport-height);\n  height: auto;\n  overflow-x: hidden;\n  overflow-y: visible;\n}\n\n@media (max-width: 768px) {\n  html,\n  body,\n  #root,\n  .kl-responsive-app-root {\n    min-height: 100dvh;\n    height: auto;\n  }\n\n  .kl-responsive-app-root {\n    overflow-y: visible;\n  }\n}\n\n/* Platform workflow law: progress / step headers stay visible while long forms scroll. */\n[data-workflow-sticky-header=\"true\"] {\n  position: sticky !important;\n  top: 0 !important;\n  z-index: 80 !important;  margin-top: 0 !important;\n  background-color: color-mix(in srgb, var(--background, #071019) 94%, transparent) !important;\n  -webkit-backdrop-filter: blur(16px) saturate(140%);\n  backdrop-filter: blur(16px) saturate(140%);\n  box-shadow: 0 10px 24px rgba(0, 0, 0, 0.22);\n  isolation: isolate;\n}\n\n/* Keep anchored sections from disappearing underneath the pinned workflow header. */\n[data-workflow-step],\n[data-workflow-section] {\n  scroll-margin-top: calc(var(--kl-sticky-offset, 0px) + 76px);\n}\n\n@media (max-width: 768px) {\n  [data-workflow-sticky-header=\"true\"] {\n    top: 0 !important;\n    z-index: 90 !important;\n  }\n}\n\n\n/* Keep Ctrl/Cmd+K available without showing keyboard-hint pills in workspace search. */\n[data-canonical-workspace-search-trigger=\"auto\"] > span:last-of-type,\n[data-canonical-workspace-search=\"true\"] > div > div:first-child > span:nth-last-child(2) {\n  display: none !important;\n}\n\n.logo {\n  height: 6em;\n  padding: 1.5em;\n  will-change: filter;\n  transition: filter 300ms;\n}\n.logo:hover {\n  filter: drop-shadow(0 0 2em #646cffaa);\n}\n.logo.react:hover {\n  filter: drop-shadow(0 0 2em #61dafbaa);\n}\n\n@keyframes logo-spin {\n  from {\n    transform: rotate(0deg);\n  }\n  to {\n    transform: rotate(360deg);\n  }\n}\n\n@media (prefers-reduced-motion: no-preference) {  a:nth-of-type(2) .logo {\n    animation: logo-spin infinite 20s linear;\n  }\n}\n\n.card {\n  padding: 2em;\n}\n\n.read-the-docs {\n  color: #888;\n}\n\n/* Platform-wide premium framed media motion: the visible frame owns spatial movement. */\n@keyframes kl-premium-media-float {\n  0%, 100% { transform: translate3d(0, 0, 0) scale(1); }\n  24% { transform: translate3d(0.8px, -3px, 0) scale(1.012); }\n  52% { transform: translate3d(0, -6px, 0) scale(1.025); }\n  78% { transform: translate3d(-0.8px, -2px, 0) scale(1.014); }\n}\n\n@keyframes kl-premium-media-sheen {\n  0%, 68% { transform: translate3d(-165%, 0, 0) skewX(-18deg); opacity: 0; }\n  76% { opacity: 0.04; }\n  84% { opacity: 0.16; }\n  92% { opacity: 0.05; }\n  100% { transform: translate3d(185%, 0, 0) skewX(-18deg); opacity: 0; }\n}\n\n.kl-premium-media-frame {\n  position: relative;\n  isolation: isolate;\n  overflow: hidden;\n  transform-origin: center;\n  animation: kl-premium-media-float 4.9s cubic-bezier(.22, .61, .36, 1) infinite;\n  will-change: transform;\n  transition: transform 240ms cubic-bezier(.22, .61, .36, 1);\n}\n\n.kl-premium-media-frame::after {\n  content: \"\";\n  position: absolute;\n  inset: -18% -70%;\n  z-index: 3;\n  pointer-events: none;\n  background: linear-gradient(105deg, transparent 40%, rgba(255,255,255,.04) 46%, rgba(255,255,255,.18) 51%, rgba(255,255,255,.06) 56%, transparent 63%);\n  mix-blend-mode: screen;\n  animation: kl-premium-media-sheen 6.1s ease-in-out infinite;\n}\n\n.kl-premium-media-frame:hover {\n  animation: none;\n  transform: translate3d(0, -8px, 0) scale(1.03);\n}\n\n.kl-premium-media-frame .kl-premium-media-frame {\n  animation: none !important;\n  transform: none !important;\n}\n\n.kl-premium-media-frame .kl-premium-media-frame::after {\n  display: none;\n}\n\n.kl-premium-media-inner {\n  display: block;\n  max-width: 100%;\n  max-height: 100%;\n  animation: none !important;\n  transform: none !important;\n}\n\n@media (prefers-reduced-motion: reduce) {\n  .kl-premium-media-frame,\n  [data-tenant-mode-logo],\n  [data-tenant-modes-account-menu],\n  [data-tenant-modes-mobile-landing-avatar],\n  [data-tenant-mobile-avatar-slot] > .kl-mode-neon-card,\n  .kl-premium-media-frame::after,\n  [data-tenant-mode-logo]::after,\n  [data-tenant-modes-account-menu]::after,\n  [data-tenant-modes-mobile-landing-avatar]::after,\n  [data-tenant-mobile-avatar-slot] > .kl-mode-neon-card::after {\n    animation: none !important;\n    transform: none !important;\n  }\n\n  .kl-premium-media-frame::after,\n  [data-tenant-mode-logo]::after,\n  [data-tenant-modes-account-menu]::after,\n  [data-tenant-modes-mobile-landing-avatar]::after,\n  [data-tenant-mobile-avatar-slot] > .kl-mode-neon-card::after {\n    opacity: 0 !important;\n  }\n}\n\n@media (max-width: 767px) {\n  footer:has(.lucide-arrow-left):has(.lucide-home):has(.lucide-refresh-cw):has(.lucide-message-circle) {\n    bottom: env(safe-area-inset-bottom) !important;\n  }\n\n  .kl-responsive-tenant-runtime {\n    box-sizing: border-box;\n    scroll-padding-bottom: var(--kl-shell-bottom-inset);\n  }\n\n  /* Reserve the fixed mobile nav stack as real viewport space. */\n  .kl-responsive-tenant-runtime[data-route-scroll-owner=\"tenant\"] {\n    bottom: var(--kl-shell-bottom-inset) !important;\n    height: auto !important;\n    min-height: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .kl-responsive-tenant-runtime[data-route-scroll-owner=\"document\"] {\n    padding-bottom: var(--kl-shell-bottom-inset) !important;\n  }\n\n  .kl-responsive-tenant-runtime .kl-scroll-region {\n    scroll-padding-bottom: var(--kl-shell-bottom-inset);\n  }\n  [data-big-papis-mobile-nav=\"true\"],\n  [data-tenant-modes-mobile-nav=\"true\"],\n  [data-tenant-modes-mobile-landing-nav=\"true\"],\n  [data-mobile-bottom-nav=\"true\"],\n  [data-tenant-mobile-nav=\"true\"] {\n    bottom: calc(var(--kl-platform-mobile-nav-h, 0px) + env(safe-area-inset-bottom)) !important;\n  }\n\n  body.kl-big-papis-app-family,\n  body.kl-big-papis-app-family #root,\n  body.kl-big-papis-app-family .kl-responsive-app-root,\n  body.kl-big-papis-app-family .kl-responsive-tenant-runtime {\n    min-height: 100dvh !important;\n    height: auto !important;\n    overflow-y: visible !important;\n  }\n\n  body.kl-big-papis-app-family {\n    overflow-y: auto !important;\n    -webkit-overflow-scrolling: touch;\n  }\n}\n\n@media (max-width: 767px) {\n  [data-big-papis-mobile-nav=\"true\"],\n  [data-tenant-modes-mobile-nav=\"true\"],\n  [data-tenant-modes-mobile-landing-nav=\"true\"],\n  [data-mobile-bottom-nav=\"true\"],  [data-tenant-mobile-nav=\"true\"] {\n    bottom: calc(var(--kl-platform-mobile-nav-h, 0px) + env(safe-area-inset-bottom)) !important;\n  }\n\n  body.kl-big-papis-app-family,\n  body.kl-big-papis-app-family #root,\n  body.kl-big-papis-app-family .kl-responsive-app-root,\n  body.kl-big-papis-app-family .kl-responsive-tenant-runtime {\n    min-height: 100dvh !important;\n    height: auto !important;\n    overflow-y: visible !important;\n  }\n\n  body.kl-big-papis-app-family {\n    overflow-y: auto !important;\n    -webkit-overflow-scrolling: touch;\n  }\n}\n\n\n/* PCG calendar: tenant-native palette and centered event composer. */\n.pcg-calendar-theme { --primary: 40 42% 55%; --primary-foreground: 32 45% 8%; --ring: 40 42% 55%; --accent: 38 28% 18%; --accent-foreground: 42 55% 92%; }\n.pcg-calendar-theme [data-calendar-oversight=\"premium\"] { width: 100%; max-width: none; }\n.pcg-calendar-theme [data-calendar-workspace=\"true\"] { border-color: rgba(185,145,74,.28) !important; }\n.pcg-calendar-theme [data-calendar-event-row=\"true\"], .pcg-calendar-theme [data-calendar-day-selected=\"true\"] { border-color: rgba(185,145,74,.34) !important; }\n[data-pcg-calendar-composer=\"true\"] { top:50%!important; left:50%!important; right:auto!important; bottom:auto!important; width:min(920px,calc(100vw - 48px))!important; max-width:none!important; height:min(820px,calc(100dvh - 48px))!important; max-height:calc(100dvh - 48px)!important; transform:translate(-50%,-50%)!important; border-radius:26px!important; border:1px solid rgba(185,145,74,.38)!important; box-shadow:0 36px 120px rgba(0,0,0,.62)!important; }\n[data-pcg-calendar-composer=\"true\"] input:focus, [data-pcg-calendar-composer=\"true\"] textarea:focus, [data-pcg-calendar-composer=\"true\"] [role=\"combobox\"]:focus { border-color:rgba(202,166,95,.9)!important; box-shadow:0 0 0 2px rgba(185,145,74,.28)!important; outline:none!important; }\n@media (max-width:767px){ [data-pcg-calendar-composer=\"true\"]{ top:auto!important; left:0!important; right:0!important; bottom:0!important; width:100%!important; height:min(92dvh,860px)!important; max-height:92dvh!important; transform:none!important; border-radius:24px 24px 0 0!important; } }\n\n\n/* Professional fallback for tax-office MODES tenants while tenant-owned brand assets are still pending. */\n[data-tenant-modes-shell=\"true\"][data-tax-office-modes=\"true\"] {\n  background:\n    radial-gradient(circle at 84% 8%, color-mix(in srgb,var(--kl-tenant-primary) 22%,transparent), transparent 28%),\n    radial-gradient(circle at 12% 92%, color-mix(in srgb,var(--kl-tenant-secondary) 16%,transparent), transparent 30%),\n    linear-gradient(135deg, var(--kl-tenant-background,#071827) 0%, color-mix(in srgb,var(--kl-tenant-background,#071827) 76%,var(--kl-tenant-surface,#0b2234) 24%) 50%, var(--kl-tenant-surface,#0b2234) 100%) !important;\n  color: var(--kl-tenant-text,#f8fafc);\n}\n\n[data-tenant-modes-shell=\"true\"][data-tax-office-modes=\"true\"] [data-tenant-modes-header] {\n  background: color-mix(in srgb,var(--kl-tenant-background,#071827) 92%,transparent) !important;\n  border-color: rgba(148, 163, 184, 0.18) !important;\n  box-shadow: 0 14px 34px rgba(2, 8, 18, 0.28) !important;\n}\n\n[data-tenant-modes-shell=\"true\"][data-tax-office-modes=\"true\"] [data-tenant-modes-rail] {\n  background: color-mix(in srgb,var(--kl-tenant-background,#071827) 88%,transparent) !important;\n  border-color: rgba(148, 163, 184, 0.16) !important;\n}\n\n[data-tenant-modes-shell=\"true\"][data-tax-office-modes=\"true\"] .kl-mode-neon-card {\n  animation: none !important;\n  background: linear-gradient(145deg,color-mix(in srgb,var(--kl-tenant-surface,#0b2234) 94%,white 6%),color-mix(in srgb,var(--kl-tenant-background,#071827) 88%,black 12%)) !important;\n  border-color: color-mix(in srgb, var(--kl-mode-neon) 42%, rgba(148, 163, 184, 0.28)) !important;\n  box-shadow: 0 14px 36px rgba(2, 8, 18, 0.24) !important;\n}\n\n[data-tenant-modes-shell=\"true\"][data-tax-office-modes=\"true\"] [data-tenant-mode-logo]::after,\n[data-tenant-modes-shell=\"true\"][data-tax-office-modes=\"true\"] [data-tenant-modes-account-menu]::after,\n[data-tenant-modes-shell=\"true\"][data-tax-office-modes=\"true\"] [data-tenant-modes-mobile-landing-avatar]::after,\n[data-tenant-modes-shell=\"true\"][data-tax-office-modes=\"true\"] [data-tenant-mobile-avatar-slot] > .kl-mode-neon-card::after {\n  display: none !important;\n}\n\n[data-tenant-modes-shell=\"true\"][data-tax-office-modes=\"true\"] [data-tenant-mode-application-content] {\n  background: color-mix(in srgb,var(--kl-tenant-background,#071827) 52%,transparent) !important;\n  border-color: rgba(148, 163, 184, 0.16) !important;\n  box-shadow: 0 18px 46px rgba(2, 8, 18, 0.22) !important;\n}\n\n[data-tenant-modes-shell=\"true\"][data-tax-office-modes=\"true\"] [data-tenant-modes-mobile-nav],\n[data-tenant-modes-shell=\"true\"][data-tax-office-modes=\"true\"] [data-tenant-modes-mobile-landing-nav] {\n  background: color-mix(in srgb,var(--kl-tenant-background,#071827) 96%,transparent) !important;\n  border-color: rgba(148, 163, 184, 0.16) !important;\n}\n"},{"path":"supabase/migrations/20261001020500_tennex_full_bootstrap.sql","content":"-- Full Tennex Tax Solutions tenant bootstrap baseline.\n-- Persist the real workspace theme while preserving honest media prerequisites.\n\nupdate public.tenants\nset settings =\n  jsonb_set(\n    jsonb_set(\n      jsonb_set(\n        jsonb_set(coalesce(settings,'{}'::jsonb),'{experience_family}','\"modes\"'::jsonb,true),\n        '{shell_template}','\"MODES\"'::jsonb,true\n      ),\n      '{workspace_variant}','\"tax_office\"'::jsonb,true\n    ),\n    '{workspace_theme}',\n    '{\"contract\":\"TENANT_WORKSPACE_THEME_V1\",\"scheme\":\"tennex-tax-professional\",\"primary\":\"#2563EB\",\"secondary\":\"#0F766E\",\"accent\":\"#B45309\",\"background\":\"#071827\",\"surface\":\"#0B2234\",\"text\":\"#F8FAFC\"}'::jsonb,\n    true\n  ),\n  updated_at=now()\nwhere id='669daee1-57e8-4960-937c-ce397106f32e'\n  and company_slug='tennex-tax-solutions';\n\ndo $$\nbegin\n  if not exists (\n    select 1 from public.tenants\n    where id='669daee1-57e8-4960-937c-ce397106f32e'\n      and company_slug='tennex-tax-solutions'\n      and settings->>'experience_family'='modes'\n      and settings->>'workspace_variant'='tax_office'\n      and settings#>>'{workspace_theme,contract}'='TENANT_WORKSPACE_THEME_V1'\n      and settings#>>'{workspace_theme,primary}'='#2563EB'\n      and settings#>>'{workspace_theme,secondary}'='#0F766E'\n      and settings#>>'{workspace_theme,accent}'='#B45309'\n  ) then\n    raise exception 'tennex_full_bootstrap_theme_not_persisted';\n  end if;\nend $$;\n"},{"path":"src/__tests__/contracts/tennex-full-bootstrap.contract.test.ts","content":"import { readFileSync } from 'node:fs';\nimport { resolve } from 'node:path';\nimport { describe, expect, it } from 'vitest';\n\nconst read=(path:string)=>readFileSync(resolve(process.cwd(),path),'utf8');\n\ndescribe('Tennex full tenant bootstrap contract',()=>{\n  it('uses the canonical MODES shell instead of the legacy Tennex-only shell',()=>{\n    const shell=read('src/shells/TenantModesShell.tsx');\n    expect(shell).not.toContain('TennexWorkspaceShell');\n    expect(shell).not.toContain('isTennex');\n    expect(shell).toContain('return <TenantModesShellBase>{children}</TenantModesShellBase>');\n  });\n\n  it('uses a persisted tenant theme in the canonical shell',()=>{\n    const shell=read('src/shells/TenantModesShell.tsx');\n    const resolver=read('src/lib/tenants/tenantWorkspaceTheme.ts');\n    const css=read('src/App.css');\n    expect(shell).toContain('resolveTenantWorkspaceTheme');\n    expect(shell).toContain(\"'--kl-tenant-primary'\");\n    expect(resolver).toContain('TENANT_WORKSPACE_THEME_V1');\n    expect(resolver).toContain('tax-professional');\n    expect(css).toContain('var(--kl-tenant-background');\n    expect(css).toContain('var(--kl-tenant-primary)');\n  });\n\n  it('exposes Profile, Settings, Notifications, and Connections separately for MODES tenants',()=>{\n    const menu=read('src/components/CRMUserMenu.tsx');\n    expect(menu).toContain('{ section: \"account\", label: \"Profile\", icon: User, to: profilePath }');\n    expect(menu).toContain('{ section: \"account\", label: \"Settings\", icon: Settings, to: settingsPath }');\n    expect(menu).toContain('{ section: \"account\", label: \"Notifications\", icon: Bell, to: notificationsPath }');\n    expect(menu).toContain('{ section: \"account\", label: \"Connections\", icon: PlugZap, to: connectionsPath');\n  });\n\n  it('persists Tennex tax-office identity without fabricating logo or background assets',()=>{\n    const migration=read('supabase/migrations/20261001020500_tennex_full_bootstrap.sql');\n    expect(migration).toContain('669daee1-57e8-4960-937c-ce397106f32e');\n    expect(migration).toContain('tax_office');\n    expect(migration).toContain('TENANT_WORKSPACE_THEME_V1');\n    expect(migration).not.toContain('company_logo_url =');\n    expect(migration).not.toContain('background_path');\n  });\n});\n"},{"path":"src/__tests__/contracts/mobile-tenant-avatar-navigation.contract.test.ts","content":"import { readFileSync } from 'node:fs';\nimport { resolve } from 'node:path';\nimport { describe, expect, it } from 'vitest';\n\nconst read = (path: string) => readFileSync(resolve(process.cwd(), path), 'utf8');\n\ndescribe('mobile tenant avatar navigation contract', () => {\n  it('gives generic CRMShell workspaces a canonical mobile nav and removes the duplicate mobile header avatar', () => {\n    const shell = read('src/components/crm/CRMShell.tsx');\n    expect(shell).toContain(\"<CRMMobileNavigation/>\");\n    expect(shell).toContain(\"{!isMobile?<MiscAwareAccountMenu\");\n    expect(shell).toContain('data-pcg-mobile-navigation=\"true\"');\n    expect(shell).toContain('<TenantMobileAccountSlot');\n  });\n\n  it('builds generic mobile navigation from canonical mobile placement metadata and keeps account last', () => {\n    const mobile = read('src/components/crm/CRMMobileNavigation.tsx');\n    expect(mobile).toContain(\"navigationItemHasPlacement(item, 'mobile-more')\");\n    expect(mobile).toContain('resolveAdaptiveBlueprintRoutePath');\n    expect(mobile).toContain('data-generic-crm-mobile-navigation=\"true\"');\n    expect(mobile.lastIndexOf('<TenantMobileAccountSlot')).toBeGreaterThan(mobile.lastIndexOf('</DropdownMenu>'));\n  });\n\n  it('keeps specialized mobile navigation destinations and places the tenant account slot last', () => {\n    const sce = read('src/components/sce/SCENavigation.tsx');\n    const barbershop = read('src/components/barbershop/BarbershopNavigation.tsx');\n    expect(sce).toContain('const overflowItems=[...primaryItems.slice(4)');\n    expect(sce.lastIndexOf('<TenantMobileAccountSlot')).toBeGreaterThan(sce.lastIndexOf('</DropdownMenu>'));\n    expect(barbershop).toContain('grid-cols-6');\n    expect(barbershop.lastIndexOf('<TenantMobileAccountSlot')).toBeGreaterThan(barbershop.lastIndexOf('>More</button>'));\n    const bigPapis = read('src/pages/mobile-vendor/BigPapisOwnerShell.tsx');\n    expect(bigPapis).toContain('grid-cols-5');\n    expect(bigPapis).toContain('data-big-papis-mobile-nav-contract=\"crown-centered-v3\"');\n    expect(bigPapis).toContain('mobileShortcutItems.slice(2, 3)');\n    expect(bigPapis).toContain('data-big-papis-crown-slot=\"true\"');\n    expect(bigPapis).toContain('...modeNavigationItems.map((item) => ({ ...item, accent: modeAccent }))');\n    expect(bigPapis).not.toContain(\"label: activeMode === 'office' ? 'Back Office' : activeModeConfig.label\");\n    expect(bigPapis.lastIndexOf('data-big-papis-mobile-account-menu=\"true\"')).toBeGreaterThan(bigPapis.lastIndexOf('data-big-papis-crown-slot=\"true\"'));\n  });\n\n  it('declares one canonical mobile shell contract at the shared private tenant workspace root', () => {\n    const privateShell = read('src/PrivateAppShell.tsx');\n    expect(privateShell).toContain('data-tenant-mobile-shell-contract=\"canonical-v2\"');\n    expect(privateShell).toContain('[data-big-papis-mobile-nav=\"true\"]');\n    expect(privateShell).toContain('<TenantLayoutPreferenceBridge/>');\n    expect(privateShell).toContain('min-w-0 w-full max-w-full');\n    expect(privateShell).toContain(\"--kl-platform-mobile-nav-h\");\n    expect(privateShell).toContain(\"const canonicalTenantNavs=selectors.map((selector)=>document.querySelector<HTMLElement>(selector))\");\n    expect(privateShell).toContain(\"const ordered=[primary,...Array.from(new Set(canonicalTenantNavs.filter((candidate)=>candidate!==primary)))]\");\n    expect(privateShell).not.toContain(\"document.body.querySelectorAll<HTMLElement>('*')).filter((candidate)=>\");\n    expect(privateShell).toContain(\"footer.style.setProperty('bottom','0px','important')\");\n    const appCss = read('src/App.css');\n    expect(appCss).toContain('bottom: calc(var(--kl-platform-mobile-nav-h, 0px) + env(safe-area-inset-bottom)) !important;');\n    expect(appCss).toContain('.kl-responsive-tenant-runtime[data-route-scroll-owner=\"tenant\"]');\n    expect(appCss).toContain('bottom: var(--kl-shell-bottom-inset) !important;');\n    expect(appCss).toContain('.kl-responsive-tenant-runtime[data-route-scroll-owner=\"document\"]');\n    expect(appCss).toContain('scroll-padding-bottom: var(--kl-shell-bottom-inset);');\n    expect(appCss).toContain('body.kl-big-papis-app-family .kl-responsive-tenant-runtime');\n  });\n\n  it('keeps private lawn-care workspaces on the canonical tenant viewport owner', () => {\n    const app = read('src/App.tsx');\n    expect(app).toContain('const documentOwnsLawnCareViewport = isLawnCareRoute && (isPublicRoute || isSelfContainedBookingRoute);');\n    expect(app).toContain('classList.toggle(\"kl-lawn-care-mobile-route\", documentOwnsLawnCareViewport)');\n  });\n\n  it('never treats self-contained authenticated route families as an avatar exemption', () => {\n    const privateShell = read('src/PrivateAppShell.tsx');\n    expect(privateShell).toContain('const selfContainedRouteFamily=resolveTenantWorkspaceRuntimeProfile(activeTenant,location.pathname).isSelfContainedTenantWorkspace');\n    expect(privateShell).toContain('adaptiveShellOwnsAccountMenu&&!selfContainedRouteFamily');\n    expect(privateShell).toContain('<GlobalFallbackAccountMenu/>');\n    expect(privateShell).not.toContain('verifyShellOwnership={isSelfContainedTenantWorkspace}');\n  });\n\n  it('uses the authenticated user avatar for the mobile account slot and keeps tenant branding separate', () => {\n    const menu = read('src/components/MiscAwareAccountMenu.tsx');\n    expect(menu).toContain('trigger?: ReactElement');\n    expect(menu).toContain('data-tenant-mobile-account-slot=\"true\"');\n    expect(menu).toContain('avatarMode=\"user\"');\n    expect(menu).toContain('user?.user_metadata?.avatar_url');\n    expect(menu).not.toContain('<TenantLogo size={24}');\n  });\n});\n"}],"branch":"ai/objective-first-repair-35573b755b9e","writes":[],"patches":[],"version":1,"approved":true,"missionId":"35573b75-5b9e-4b96-a196-0933cd533a7d","objective":"Properly bootstrap Tennex Tax Solutions to the same authenticated tenant standard as other KNOCKLAUNCH MODES tenants. Remove the legacy Tennex-only hard-coded workspace shell entirely so Tennex uses the canonical shared TenantModesShellBase. Preserve the canonical user avatar/account control and tenant logo as separate concepts. Persist a professional Tennex tax-office workspace theme and make the shared MODES shell consume persisted tenant theme colors through CSS variables. Expose Profile, Settings, Notifications, and Connections as separate first-class account actions for MODES tenants. Correct the shared mobile tenant account slot so it uses the authenticated user's avatar/photo/initials rather than TenantLogo. Preserve Tennex applications, Google/Marketing work, MODES cards, tenant data, and honest media readiness: do not fabricate a Tennex logo/background. Run canonical Gate, squash merge, release frontend+migration only, and prove live Tennex workspace_theme + source deployment. Do not run Visual Witness; owner will confirm the production page.","sourceSha":"dc04fa11f621712b9c2b705705d6b58afcbff004","repository":"noel/KnockLaunchOS","visualProof":false,"ownerApproved":true,"releaseIntent":null,"sourceTargets":["src/shells/TenantModesShell.tsx","src/lib/tenants/tenantWorkspaceTheme.ts","src/components/CRMUserMenu.tsx","src/components/MiscAwareAccountMenu.tsx","src/App.css","supabase/migrations/20261001020500_tennex_full_bootstrap.sql","src/__tests__/contracts/tennex-full-bootstrap.contract.test.ts","src/__tests__/contracts/mobile-tenant-avatar-navigation.contract.test.ts"],"implementation":{"files":[],"writes":[]},"requestContract":{"outcomes":[{"id":"canonical-shell","statement":"Tennex no longer uses the legacy TennexWorkspaceShell and renders through the canonical shared MODES tenant shell.","proofConditionIds":["live"]},{"id":"avatar-account","statement":"Authenticated tenant account controls use the logged-in user avatar/photo/initials, with Profile, Settings, Notifications, and Connections available as distinct actions.","proofConditionIds":["live"]},{"id":"tennex-theme","statement":"Tennex has a persisted professional tax-office color scheme consumed by the shared tenant shell.","proofConditionIds":["live"]}],"constraints":[{"id":"preserve-data","statement":"Preserve all Tennex applications, customer/business data, Google/Marketing work, MODES cards, and tenant isolation.","proofConditionIds":["live"]},{"id":"no-fake-media","statement":"Do not invent or mark a Tennex logo/background as complete when no owner-provided brand media exists.","proofConditionIds":["live"]},{"id":"no-witness","statement":"Do not run Visual Witness; owner confirms the production page directly.","proofConditionIds":["live"]}],"proofConditions":[{"id":"live","kind":"runtime","claim":"Production frontend and migration are live at the merged source, Tennex workspace_theme is persisted, and the canonical shell/account bootstrap is on main.","required":true}]},"repairGeneration":null,"executionEnvelope":{"ship":true,"version":1,"approved":true,"missionId":null,"ownerApproved":true,"releaseIntent":null,"sourceTargets":["src/shells/TenantModesShell.tsx","src/lib/tenants/tenantWorkspaceTheme.ts","src/components/CRMUserMenu.tsx","src/components/MiscAwareAccountMenu.tsx","src/App.css","supabase/migrations/20261001020500_tennex_full_bootstrap.sql","src/__tests__/contracts/tennex-full-bootstrap.contract.test.ts","src/__tests__/contracts/mobile-tenant-avatar-navigation.contract.test.ts"],"requestContract":{"outcomes":[{"id":"canonical-shell","statement":"Tennex no longer uses the legacy TennexWorkspaceShell and renders through the canonical shared MODES tenant shell.","proofConditionIds":["live"]},{"id":"avatar-account","statement":"Authenticated tenant account controls use the logged-in user avatar/photo/initials, with Profile, Settings, Notifications, and Connections available as distinct actions.","proofConditionIds":["live"]},{"id":"tennex-theme","statement":"Tennex has a persisted professional tax-office color scheme consumed by the shared tenant shell.","proofConditionIds":["live"]}],"constraints":[{"id":"preserve-data","statement":"Preserve all Tennex applications, customer/business data, Google/Marketing work, MODES cards, and tenant isolation.","proofConditionIds":["live"]},{"id":"no-fake-media","statement":"Do not invent or mark a Tennex logo/background as complete when no owner-provided brand media exists.","proofConditionIds":["live"]},{"id":"no-witness","statement":"Do not run Visual Witness; owner confirms the production page directly.","proofConditionIds":["live"]}],"proofConditions":[{"id":"live","kind":"runtime","claim":"Production frontend and migration are live at the merged source, Tennex workspace_theme is persisted, and the canonical shell/account bootstrap is on main.","required":true}]},"repairGeneration":null,"proofRequirements":null,"controlPlaneUnfreeze":false,"controlPlaneMaintenance":false,"controlPlaneMaintenancePaths":[],"controlPlaneMaintenanceReason":null},"proofRequirements":null,"controlPlaneUnfreeze":false,"durableMutationResume":true,"controlPlaneMaintenance":false,"controlPlaneMaintenancePaths":[],"controlPlaneMaintenanceReason":null},"recovery":false,"fingerprint":"a0763f5b1069705bae54acc34b8ae09f2b970c9fdbf4870cec87ed362af7915c","replayCount":0,"serializedBytes":118788},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-01T01:57:27.832198+00:00","proof_gate":"repository_mutation_intent_persisted","source_sha":null,"external_id":null,"receipt_type":"repository_mutation_intent","idempotency_key":"mission:35573b75-5b9e-4b96-a196-0933cd533a7d:repository-mutation-intent:a0763f5b1069705bae54acc34b8ae09f2b970c9fdbf4870cec87ed362af7915c:0","mission_step_id":"59c9b59d-37b1-40f5-81df-437144869d97","command_center_event_id":"35573b75-5b9e-4b96-a196-0933cd533a7d"},{"id":"beeaa873-333a-472d-9f11-44d544a076f9","source":"cc-execution","status":"retryable","payload":{"ok":false,"jobId":null,"phase":"implementation","branch":"ai/objective-first-repair-6187898d22ed","reason":"retryable_provider_transport:GET:The operation was aborted due to timeout","status":"retryable","metrics":{"receiptBytes":15442,"releaseCount":0,"toolCallCount":11,"repeatedCallCount":6,"ownerInterruptionCount":0},"version":"1.48.9-single-mutation-lane","prNumber":null,"terminal":false,"missionId":"6187898d-22ed-43c5-8f14-55b523c91075","operation":"execute_mission","proofGate":"repair_mission_execution_retryable","sourceSha":null,"timingsMs":null,"nextAction":null,"receiptRef":{"mode":"full","missionId":"6187898d-22ed-43c5-8f14-55b523c91075"},"performance":null,"deploymentId":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":4873,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true},"tenant_id":"766cfaa7-ac42-46c8-bbef-69d13268a29d","created_at":"2026-08-20T19:56:33.583156+00:00","proof_gate":"repair_mission_execution_retryable","source_sha":null,"external_id":null,"receipt_type":"execute_mission","idempotency_key":"mission:6187898d-22ed-43c5-8f14-55b523c91075:execute_mission:repair_mission_execution_retryable","mission_step_id":"2058bdbf-398c-4af0-af10-220197354cab","command_center_event_id":"6187898d-22ed-43c5-8f14-55b523c91075"},{"id":"beeacc97-fdca-4c4d-84e4-bfafb38b0336","source":"forgejo-runtime","status":"pending","payload":{"mainSha":"1c85c52ff2a4def5744f5f3cd090fef56700597b","sourceSha":"baa31f8831534e18bb9a11c964a88fbe8db39042","sourceInMain":false,"compareStatus":"ancestry_read_retryable","ancestryProofResolved":false},"tenant_id":"a2929648-19db-46c8-9e93-07378ed1aa5f","created_at":"2026-09-20T22:11:14.616694+00:00","proof_gate":"canonical_release_ancestry_pending","source_sha":"baa31f8831534e18bb9a11c964a88fbe8db39042","external_id":"canonical-release-baa31f883153","receipt_type":"canonical_release_status","idempotency_key":"mission:b48ba4cf-4fa9-4095-b7a4-e15c4a5e4775:forgejo-release-ancestry:baa31f8831534e18bb9a11c964a88fbe8db39042:1c85c52ff2a4def5744f5f3cd090fef56700597b:ancestry_read_retryable","mission_step_id":"2a55b3ea-2b1d-4298-827b-24c1a10ad2f7","command_center_event_id":"b48ba4cf-4fa9-4095-b7a4-e15c4a5e4775"},{"id":"beeb59f8-a0c2-4f3b-b2f2-66eca6337e1c","source":"forgejo-runtime","status":"pending","payload":{"failed":[],"states":{"forgejo-main/source":"success","forgejo-release/workflow":"pending","frontend-cloudflare/live":"pending"},"mainSha":"5067604272ff7f9cd733dddd3b7b99d8edfe3d21","missing":[],"pending":["forgejo-release/workflow","frontend-cloudflare/live"],"required":["forgejo-main/source","forgejo-release/workflow","frontend-cloudflare/live"],"sourceSha":"5067604272ff7f9cd733dddd3b7b99d8edfe3d21","releaseState":"pending","sourceInMain":true,"compareStatus":"identical","releaseTargets":{"frontend":true,"onrunner":false,"migrations":false,"ccExecution":false,"supabaseEdge":false,"edgeFunctionSlugs":[]},"releaseTargetStates":{},"requestContractHash":"f3b38ceb3e75e7db29a9f52adb1383285faa9bf95633f22169246e2d8acbcf49","forgejoWorkflowProof":{"error":"forgejo_run_read_http_503","runId":7897},"onrunnerRuntimeProof":null,"releaseSourceVerified":true,"ccExecutionRuntimeProof":null,"releaseTargetRecoveryProof":null,"exactReleaseVerifiedAfterMainAdvanced":false},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-13T20:00:36.347299+00:00","proof_gate":"canonical_release_pending","source_sha":"5067604272ff7f9cd733dddd3b7b99d8edfe3d21","external_id":"forgejo-main-5067604272ff","receipt_type":"canonical_release_status","idempotency_key":"mission:67816ed7-0ead-4d40-a967-ab15be1b59a5:forgejo-release-status:5067604272ff7f9cd733dddd3b7b99d8edfe3d21:pending:forgejo-main/source=success|forgejo-release/workflow=pending|frontend-cloudflare/live=pending","mission_step_id":"6e1c1e2b-860a-4201-afb2-e48c274881f9","command_center_event_id":"67816ed7-0ead-4d40-a967-ab15be1b59a5"},{"id":"beed61b9-9c86-4423-916a-d4b6c9bfd316","source":"cc-execution","status":"waiting","payload":{"sourceTargets":["src/PrivateAppShell.tsx"],"continuationObjective":"Corrective phase 4 tenant-shell route-policy separation from current main, superseding failed PR #5003. Create src/routes/tenantPrivateRouteDecision.ts as the canonical pure route decision layer and refactor PrivateRoutes to render its discriminated result, preserving exact decision order and behavior. Include the TypeScript repair proven by Gate run 15872: settings decisions must narrow with `decision.valid === false` before accessing homeHref, tenantId, and referenceSeed. Preserve exact prior settings failure home behavior via getTenantDashboardPathForTenant(activeTenant). Keep all previous phase-4 goals: move KNOCKLAUNCH compatibility redirects, users alias, tenant-integrated app routing, BookMeDirectly, settings aliases/validation, auto-unlock, standalone apps, demo workspace, media library, call center, Roof Help Finder, SCE, Redfish homeowner/canvassing, roofing/measurement, owner-route families, MODES fallback, and contract-safe fallback out of PrivateAppShell. Remove the duplicate unreachable auto-unlock branch. Add focused contract coverage. Gate, squash merge, frontend release, production proof."},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-05T17:30:27.148064+00:00","proof_gate":"mission_continuation_scope_persisted","source_sha":null,"external_id":null,"receipt_type":"mission_continuation_scope_updated","idempotency_key":"mission:924d5509-0a8a-4d22-ad10-eda74e9305b4:mission_continuation_scope_updated:mission_continuation_scope_persisted:waiting","mission_step_id":"7529eb05-4445-41a2-b939-1cf4652f4703","command_center_event_id":"924d5509-0a8a-4d22-ad10-eda74e9305b4"},{"id":"bef5803d-361f-4231-a21d-49df945af435","source":"forgejo-runtime","status":"verified","payload":{"failed":[],"states":{"forgejo-main/source":"success","forgejo-release/workflow":"success","cc-execution/runtime-proof":"success"},"mainSha":"d5ee4067d525aad8088317e594b163b2d9f31186","missing":[],"pending":[],"required":["forgejo-main/source","forgejo-release/workflow","cc-execution/runtime-proof"],"sourceSha":"d5ee4067d525aad8088317e594b163b2d9f31186","releaseState":"verified","sourceInMain":true,"compareStatus":"protected_main_push_exact_source","releaseTargets":{"frontend":false,"onrunner":false,"migrations":false,"ccExecution":true,"supabaseEdge":false,"edgeFunctionSlugs":[]},"releaseTargetStates":{"ccExecution":"success"},"requestContractHash":"8780063943b8c0299a5850ce692ec92755b015e381368d375a3ffa3f85432871","forgejoWorkflowProof":{"url":"https://git.knocklaunch.app/noel/KnockLaunchOS/actions/runs/11654","runId":11654,"status":"success","sourceSha":"d5ee4067d525aad8088317e594b163b2d9f31186","conclusion":null,"failedJobs":[],"diagnostics":null,"exactSource":true,"targetStates":{"ccExecution":"success"},"targetJobCount":7,"observedTargetStates":{"ccExecution":"success"}},"onrunnerRuntimeProof":null,"releaseSourceVerified":true,"ccExecutionRuntimeProof":{"liveSha":"d5ee4067d525aad8088317e594b163b2d9f31186","proofGate":"cc_execution_target_aware_runtime_identity_verified","deploymentId":"forgejo-main-d5ee4067d525aad8088317e594b163b2d9f31186","compareStatus":"target_job_success_runtime_verified","workflowRunId":11654,"identitySource":"canonical_release_target_job","runtimeVersion":"1.58.266-ledger-egress-degraded-source-scope","workflowFailed":false,"containsSourceSha":true},"releaseTargetRecoveryProof":null,"exactReleaseVerifiedAfterMainAdvanced":false},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-24T23:14:18.847053+00:00","proof_gate":"canonical_release_terminal_verified","source_sha":"d5ee4067d525aad8088317e594b163b2d9f31186","external_id":"forgejo-main-d5ee4067d525","receipt_type":"canonical_release_status","idempotency_key":"mission:5a4662af-e846-4ab4-a647-e6828c342c54:forgejo-release-status:d5ee4067d525aad8088317e594b163b2d9f31186:verified:forgejo-main/source=success|forgejo-release/workflow=success|cc-execution/runtime-proof=success","mission_step_id":"96813253-349d-4533-b43f-e1d9c4d0d3af","command_center_event_id":"5a4662af-e846-4ab4-a647-e6828c342c54"},{"id":"bef5856f-7b27-44c3-a141-d633c72fbed5","source":"cc-execution","status":"authorized","payload":{"paths":["workers/cc-execution/src/index-scoped-repo-patch.js"],"reason":"Owner explicitly authorized: Unfreeze the control plane for the orphan-branch recovery repair.","baseSha":"5faf0c2fda90ebf18ef643bee0920026cdedb9d0","issuedAt":1788982138652,"expiresAt":1788982318652,"missionId":"98fa1b97-f156-427e-9e12-45259b028935","authorizationId":"76d470bd-3c12-41b8-ba69-9204c175e0ac","retryableWithinExactScope":true},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-09T19:28:59.029115+00:00","proof_gate":"control_plane_maintenance_scope_authorized","source_sha":"5faf0c2fda90ebf18ef643bee0920026cdedb9d0","external_id":null,"receipt_type":"control_plane_maintenance_authorization","idempotency_key":"control-plane-maintenance-authorize:76d470bd-3c12-41b8-ba69-9204c175e0ac","mission_step_id":"07b183c7-36fb-4d4b-a047-a46c4510c3b8","command_center_event_id":"98fa1b97-f156-427e-9e12-45259b028935"},{"id":"bef76847-68ab-48b7-87d4-d0ce40345f69","source":"cc-execution","status":"blocked","payload":{"reason":"anchored_edit_anchor_not_unique:workers/cc-execution/src/entrypoint-owner-status.js","fingerprint":"bd10b92e7fa5d374dea7bc59fa22d5f630f1937c9bfa9a7225579f309a4ea24c"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-04T16:16:57.927603+00:00","proof_gate":"repository_mutation_intent_deterministic_failure","source_sha":null,"external_id":null,"receipt_type":"repository_mutation_intent_blocked","idempotency_key":"mission:865a8ad2-e833-4713-91ed-a19f39bbcea8:repository-mutation-intent-blocked:bd10b92e7fa5d374dea7bc59fa22d5f630f1937c9bfa9a7225579f309a4ea24c","mission_step_id":"1989975c-0758-4424-9a45-d883e800f610","command_center_event_id":"865a8ad2-e833-4713-91ed-a19f39bbcea8"},{"id":"bef8b444-6f52-4822-9fcf-d2a101d295fb","source":"cc-execution","status":"verified","payload":{"paths":[".forgejo/workflows/knocklaunch.yml"],"baseSha":"42a379ed5f0b49f87571f0bc8c58ffc90ca8c5c6","consumedAt":1788494679427,"consumerToken":"2d7fcf46-245a-401f-bbb5-f9501a37f086","authorizationId":"1a07ad13-945d-4966-bf67-7910bcc18bce"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-04T04:04:40.343203+00:00","proof_gate":"control_plane_maintenance_single_use_consumed","source_sha":"42a379ed5f0b49f87571f0bc8c58ffc90ca8c5c6","external_id":null,"receipt_type":"control_plane_maintenance_consumed","idempotency_key":"control-plane-maintenance-consume:1a07ad13-945d-4966-bf67-7910bcc18bce","mission_step_id":"0997dafe-1560-4588-98fe-ffe4ab2c3b95","command_center_event_id":"b29a9bea-239c-4d95-804f-8d063c2de669"},{"id":"bef8f76a-3ae2-40cd-90bb-f223c13cd256","source":"cc-execution","status":"pending","payload":{"ok":true,"jobId":"4af41ea7-e961-4336-9d26-b951f2275bd2","phase":"universal_visual_witness_supervised","branch":"ai/objective-first-repair-mtkhv08w","reason":null,"status":"pending","metrics":{"receiptBytes":17716,"releaseCount":1,"toolCallCount":9,"repeatedCallCount":1,"ownerInterruptionCount":0},"version":null,"prNumber":1467,"terminal":false,"missionId":"1c75872a-a97f-4a1e-afa3-5c55a44fe46c","operation":"visual_proof_started","proofGate":"universal_visual_witness_pending","sourceSha":"5d0bc98900d03abf693cd7cba5e71b29f325b9c7","timingsMs":{"wake":215,"total":530,"submit":315,"wakeAttempts":1},"nextAction":"Poll inspect_route_status or cancel with inspect_route_cancel.","receiptRef":{"mode":"full","missionId":"1c75872a-a97f-4a1e-afa3-5c55a44fe46c"},"performance":null,"deploymentId":"forgejo-main-5d0bc98900d0","workflowRunId":4583,"releaseTargets":{"frontend":true,"onrunner":false,"migrations":false,"ccExecution":false,"supabaseEdge":true,"edgeFunctionSlugs":["roof-measurement-job"]},"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":715,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true},"tenant_id":"de8369b6-a78f-40bb-ae1f-28ffca62bc7e","created_at":"2026-09-02T19:47:35.592341+00:00","proof_gate":"post_release_visual_proof_started","source_sha":"5d0bc98900d03abf693cd7cba5e71b29f325b9c7","external_id":"4af41ea7-e961-4336-9d26-b951f2275bd2","receipt_type":"visual_proof_started","idempotency_key":"mission:1c75872a-a97f-4a1e-afa3-5c55a44fe46c:visual-start:4af41ea7-e961-4336-9d26-b951f2275bd2","mission_step_id":"cd069367-8ca2-47fe-a94a-a831ba19de27","command_center_event_id":"1c75872a-a97f-4a1e-afa3-5c55a44fe46c"},{"id":"befa6447-6ffd-4994-a5fa-6a95a98cb631","source":"cc-execution","status":"synthesis_required","payload":{"ok":true,"jobId":null,"phase":"objective_received","branch":"ai/objective-first-repair","reason":null,"status":"synthesis_required","metrics":{"receiptBytes":0,"releaseCount":0,"toolCallCount":0,"repeatedCallCount":0,"ownerInterruptionCount":0},"version":"1.46.2-autonomous-forgejo-merge-supervisor","prNumber":null,"terminal":false,"missionId":"4fb9a0e6-7309-439d-99a1-919866c189a7","operation":"execute_mission","proofGate":"repair_mission_synthesis_ready","sourceSha":null,"timingsMs":null,"nextAction":"Inspect the bounded repository paths, synthesize exact files or anchored_edits, and call /repair/continue-mission automatically with this missionId without another owner prompt.","receiptRef":{"mode":"full","missionId":"4fb9a0e6-7309-439d-99a1-919866c189a7"},"performance":null,"deploymentId":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":7257,"likelyAffectedFiles":[".forgejo/workflows/knocklaunch.yml","src/__tests__/contracts/command-palette-platform-authority.contract.test.ts","src/__tests__/commandCenter/deployDetection.test.ts","src/__tests__/contracts/command-center-mission-control.test.ts","src/__tests__/contracts/command-center-mission-preflight.test.ts","src/components/CallFlow/WorkflowCallCockpit.tsx","src/components/CallFlow/WorkflowLiveCoachingFocus.tsx","src/components/CallFlow/WorkflowTabs.tsx","src/components/PreWorkflowScreen.tsx","src/components/WorkflowRouter.tsx","src/__tests__/contracts/canonical-deploy-dispatchers.test.ts","scripts/resolve-production-workflow-run.mjs"],"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true},"tenant_id":"a2929648-19db-46c8-9e93-07378ed1aa5f","created_at":"2026-08-15T11:50:44.151808+00:00","proof_gate":"repair_mission_synthesis_ready","source_sha":null,"external_id":null,"receipt_type":"execute_mission","idempotency_key":"mission:4fb9a0e6-7309-439d-99a1-919866c189a7:execute_mission:repair_mission_synthesis_ready","mission_step_id":"cdf98fc6-de84-49be-b421-1eab313e3e14","command_center_event_id":"4fb9a0e6-7309-439d-99a1-919866c189a7"},{"id":"beff36fd-65e4-415e-adeb-ee70491bcd69","source":"cc-execution","status":"authorized","payload":{"paths":["workers/cc-execution/test/release-orchestration-invariants.test.js"],"reason":"Owner authorized the proven PR #3468 Gate repair; unfreeze only the exact invariant test and leave runtime source unchanged.","baseSha":"5ace728dbc0c8153ea7759091d77f8d0daedfc20","issuedAt":1790128172021,"expiresAt":1790128352021,"missionId":"5a1b518b-b8f4-4251-a820-8a7a1ca32e2a","authorizationId":"a86501c2-1f9b-4856-a7ba-b824a498278a","retryableWithinExactScope":true},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-23T01:49:32.765159+00:00","proof_gate":"control_plane_maintenance_scope_authorized","source_sha":"5ace728dbc0c8153ea7759091d77f8d0daedfc20","external_id":null,"receipt_type":"control_plane_maintenance_authorization","idempotency_key":"control-plane-maintenance-authorize:a86501c2-1f9b-4856-a7ba-b824a498278a","mission_step_id":"20c0fa38-f3ff-488e-93f0-e8efd6ff6e32","command_center_event_id":"5a1b518b-b8f4-4251-a820-8a7a1ca32e2a"},{"id":"bf023804-2034-4068-a153-23acea112ec0","source":"cc-execution","status":"synthesis_required","payload":{"ok":true,"jobId":null,"phase":"implementation","branch":"ai/zoho-mail360-hosted-sync","reason":null,"status":"synthesis_required","metrics":{"receiptBytes":1273,"releaseCount":0,"toolCallCount":1,"repeatedCallCount":0,"ownerInterruptionCount":0},"version":"1.47.6-live-release-idempotency","prNumber":null,"terminal":false,"missionId":"8853283d-7049-45d0-bca4-a2511ba8941b","operation":"execute_mission","proofGate":"repair_mission_synthesis_ready","sourceSha":null,"timingsMs":null,"nextAction":"Inspect the bounded repository paths, synthesize exact files or anchored_edits, and call /repair/continue-mission automatically with this missionId without another owner prompt.","receiptRef":{"mode":"full","missionId":"8853283d-7049-45d0-bca4-a2511ba8941b"},"performance":null,"deploymentId":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":9914,"likelyAffectedFiles":["scripts/supabase-migration-release.mjs","scripts/__tests__/supabase-migration-release.test.mjs","src/__tests__/contracts/supabase-edge-consumer-resolution.contract.test.ts","scripts/resolve-supabase-edge-consumers.mjs","scripts/validate-supabase-migration-integrity.mjs","src/__tests__/contracts/command-center-event-runtime.test.ts","src/__tests__/contracts/direct-pr-merge-release-ownership.contract.test.ts","scripts/visual-witness-hosted-runner/RELEASE_TRIGGER.md","scripts/visual-witness-hosted-runner/src/mission-gateway.mjs","src/__tests__/commandCenter/deployDetection.test.ts","src/__tests__/contracts/cc-execution-onrunner-deploy-lane.contract.test.ts","scripts/validate-edge-functions.mjs"],"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-08-19T07:10:39.934719+00:00","proof_gate":"repair_mission_synthesis_ready","source_sha":null,"external_id":null,"receipt_type":"execute_mission","idempotency_key":"mission:8853283d-7049-45d0-bca4-a2511ba8941b:execute_mission:repair_mission_synthesis_ready","mission_step_id":"0ebffafc-2a03-4a62-9acc-552c8deb3798","command_center_event_id":"8853283d-7049-45d0-bca4-a2511ba8941b"},{"id":"bf033bba-9d97-4d2d-a17c-39db036ea471","source":"cc-execution","status":"recorded","payload":{"requestContract":{"valid":true,"intent":{"evidence":[],"confidence":null,"rawUtterance":"Adopt the exact already-applied root-only simplification on this existing branch and finish PR, gate, squash merge, frontend-only release, and root proof. Do not change any other file.","wordingChanged":false,"canonicalIntent":"Adopt the exact already-applied root-only simplification on this existing branch and finish PR, gate, squash merge, frontend-only release, and root proof. Do not change any other file.","resolutionStatus":"exact","uniqueResolution":true,"clarificationRequired":false},"source":"explicit","version":1,"outcomes":[{"id":"simple-root","statement":"Root renders only logo, prominent video, headline, one CTA, and short intake form.","proofConditionIds":["source","live"]},{"id":"licensed-roofer-copy","statement":"Root says an appropriate licensed roofer can contact the homeowner after submission.","proofConditionIds":["source","live"]},{"id":"child-routes-preserved","statement":"Palm Bay and other city/service routes remain unchanged.","proofConditionIds":["source"]}],"objective":"Adopt the exact already-applied root-only simplification on this existing branch and finish PR, gate, squash merge, frontend-only release, and root proof. Do not change any other file.","constraints":[{"id":"frontend-only","statement":"Only src/pages/RoofHelpLandingPage.tsx changes.","proofConditionIds":["source"]},{"id":"brand-preserved","statement":"Existing forest/mint/off-white palette, R2 logo, and ElevenLabs MP4 remain unchanged.","proofConditionIds":["source","live"]},{"id":"backend-preserved","statement":"No backend, intake endpoint, attribution, IP capture, or SEO route-generation changes.","proofConditionIds":["source"]}],"terminalPolicy":"all_required_proof_conditions_satisfied_after_live_release","proofConditions":[{"id":"source","kind":"repository","claim":"Diff is limited to src/pages/RoofHelpLandingPage.tsx and root-only layout.","route":"/","required":true,"expectedText":null,"targetedActions":[],"allowedReleaseTargets":[],"requiredReleaseTargets":[]},{"id":"live","kind":"runtime","claim":"Production root `/` renders 'Need help with your roof?', video, one GET ROOF HELP CTA, and intake form.","route":"/","required":true,"expectedText":"Need help with your roof?","targetedActions":[],"allowedReleaseTargets":[],"requiredReleaseTargets":[]}],"validationErrors":[]},"requestContractHash":"559109a8e047b485c61f74ffd67efaf2b13c9342b12c2604d1e48860cf90a4cc","requestContractRevision":4,"previousRequestContractHash":"021758238e3ff61b14e7165ef1bd66e5f46a7373659ce35bfcafbb949c8f897e"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-08-28T14:39:37.327272+00:00","proof_gate":"request_contract_revision_recorded","source_sha":null,"external_id":null,"receipt_type":"request_contract_revision","idempotency_key":"mission:ee109335-9484-4554-bdc9-3921ac1fed30:request-contract-revision:4:559109a8e047b485c61f74ffd67efaf2b13c9342b12c2604d1e48860cf90a4cc","mission_step_id":"5f441f19-e59b-4e20-b9f6-42ca681b7c66","command_center_event_id":"ee109335-9484-4554-bdc9-3921ac1fed30"},{"id":"bf0369a2-396b-4bda-847e-9d1d4dd7c7fc","source":"cc-execution","status":"authorized","payload":{"paths":[".forgejo/workflows/knocklaunch.yml","workers/cc-execution/test/release-orchestration-invariants.test.js"],"reason":"Complete existing #1729 by removing the false coupling that makes control-plane/build-tooling-only changes run the full customer frontend bundle in constrained Gate CI.","baseSha":"23f5efbeb046692af244dcdd8e25891ac2a317c3","issuedAt":1788541629180,"expiresAt":1788541809180,"missionId":"f31eab5c-7299-4632-b006-2d89e51cc390","authorizationId":"ee76ff05-91cd-4c7b-afd6-62083c255b95","retryableWithinExactScope":true},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-04T17:07:09.783985+00:00","proof_gate":"control_plane_maintenance_scope_authorized","source_sha":"23f5efbeb046692af244dcdd8e25891ac2a317c3","external_id":null,"receipt_type":"control_plane_maintenance_authorization","idempotency_key":"control-plane-maintenance-authorize:ee76ff05-91cd-4c7b-afd6-62083c255b95","mission_step_id":"ee98cf1a-691b-41b4-9204-50c7a2934d38","command_center_event_id":"f31eab5c-7299-4632-b006-2d89e51cc390"},{"id":"bf039d95-9ba3-4846-a49a-2fbdf172d7f5","source":"cc-execution","status":"waiting_for_gate","payload":{"ok":true,"jobId":null,"phase":"pull_request","branch":"ai/objective-first-repair-c82cc7240d11","reason":"pull_request_checks_pending","status":"waiting_for_gate","metrics":{"receiptBytes":15462,"releaseCount":0,"toolCallCount":7,"repeatedCallCount":2,"executorlessWaitMs":89208,"firstUsefulResultAt":"2026-09-24T20:47:59.158Z","recoveryAttemptCount":1,"ownerInterruptionCount":0},"version":"1.58.261-nonvisual-proof-precedence","prNumber":3677,"terminal":false,"missionId":"c82cc724-0d11-401e-9b66-79c259aeb2ab","operation":"execute_mission","proofGate":"repair_mission_waiting_for_gate","sourceSha":null,"timingsMs":{"gateMs":0,"proofMs":0,"handlerMs":700,"releaseMs":0,"mutationMs":0,"repositoryMs":0,"prReadinessMs":523,"approvedPlanMs":0,"missionSetupMs":582,"providerAuthMs":0,"shipAndProveMs":0,"ledgerPrepareMs":429,"ledgerReconcileMs":0,"lineageReconcileMs":153,"resolvePreflightMs":582,"repositoryMutationMs":0,"repositoryProviderMs":0,"authoritativeLedgerMs":0,"ledgerAsyncDispatchMs":0,"repositoryAtomicCommitMs":0,"repositoryBranchCreateMs":0,"totalSynchronousLedgerMs":429,"asyncBookkeepingDispatchMs":0,"ledgerAuthoritativeCommitMs":0,"repositoryPullRequestCreateMs":0},"nextAction":"Reconcile this same mission and pull request after the exact-head KnockLaunch Gate changes state.","receiptRef":{"mode":"full","missionId":"c82cc724-0d11-401e-9b66-79c259aeb2ab"},"performance":null,"deploymentId":null,"releaseState":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","pendingProofKinds":["runtime","visual"],"verificationState":null,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":1970,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true,"requestContractState":"pending"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-24T20:49:51.666544+00:00","proof_gate":"repair_mission_waiting_for_gate","source_sha":null,"external_id":"3677","receipt_type":"execute_mission","idempotency_key":"mission:c82cc724-0d11-401e-9b66-79c259aeb2ab:execute_mission:repair_mission_waiting_for_gate:current-generation","mission_step_id":"511ba856-8c6d-4012-bfad-f9ab7d102f97","command_center_event_id":"c82cc724-0d11-401e-9b66-79c259aeb2ab"},{"id":"bf04f4bc-821f-4d9d-b335-88db3b8aa0b7","source":"cc-execution","status":"verified","payload":{"ownerWaitSloMs":{"merge_to_live_ms":null,"owner_action_to_pr_ms":null,"green_gate_to_merge_ms":null,"owner_action_to_useful_response_ms":null},"ownerWaitLiveAt":"2026-09-27T20:02:11.368Z"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-27T19:59:55.104807+00:00","proof_gate":"owner_wait_live_milestone_recorded","source_sha":null,"external_id":null,"receipt_type":"owner_wait_live_milestone","idempotency_key":"mission:aa1ae150-5687-45d8-a79a-e385379c6dfc:owner-wait-live","mission_step_id":"673bbbea-02f1-4a22-b126-2f36716d16c7","command_center_event_id":"aa1ae150-5687-45d8-a79a-e385379c6dfc"},{"id":"bf0531bf-3c05-4c35-8607-f464ad267f91","source":"cc-execution","status":"waiting","payload":{"kind":"heartbeat","message":"Still active in reasoning required.","nextAction":{"lane":"cc-execution","action":"continue_implementation","reason":"synthesis_required","handoff":null,"capability":"heavy-build-gate","automationAllowed":true,"ownerActionRequired":false,"resumeFromCheckpoint":"preflight"},"silenceBudgetMs":15000,"semanticCheckpointSignature":"{\"stateMachineVersion\":1,\"phase\":\"reasoning_required\",\"ownerFacingState\":null,\"latest\":{\"kind\":\"receipt\",\"key\":\"execute_mission\",\"status\":\"synthesis_required\",\"proofGate\":\"repair_mission_synthesis_ready\"},\"activeStep\":{\"key\":\"implementation\",\"status\":\"ready\",\"lane\":\"cc-execution\"},\"nextStep\":{\"key\":\"pull_request\",\"status\":\"ready\",\"lane\":\"cc-execution\"},\"nextSafeAction\":{\"action\":\"continue_implementation\",\"lane\":\"cc-execution\",\"reason\":\"synthesis_required\",\"automationAllowed\":true,\"ownerActionRequired\":false,\"capability\":\"heavy-build-gate\",\"resumeFromCheckpoint\":\"preflight\",\"handoff\":null},\"executionOwnership\":{\"active\":false,\"state\":\"waiting\",\"executor\":null,\"lane\":\"cc-execution\",\"nextAction\":\"continue_implementation\",\"recoveryOwner\":\"cc-execution\",\"capability\":\"heavy-build-gate\",\"resumeFromCheckpoint\":\"preflight\",\"handoff\":null},\"acceptance\":{\"total\":1,\"verified\":0,\"pending\":1,\"percent\":0,\"satisfied\":false,\"verifiedIds\":[],\"pendingIds\":[\"proof-production\"]},\"stall\":{\"stalled\":false,\"reason\":\"within_deadline\",\"step\":\"pull_request\",\"deadlineAt\":\"2026-10-06T18:44:46.954476+00:00\",\"recoveryAction\":null},\"blocker\":null,\"terminal\":false,\"branch\":\"ai/objective-first-repair-4410124fe556\",\"prNumber\":null,\"sourceSha\":null,\"deploymentId\":null}"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-06T16:16:02.917176+00:00","proof_gate":"owner_progress_heartbeat","source_sha":null,"external_id":null,"receipt_type":"owner_progress_heartbeat","idempotency_key":"mission:4410124f-e556-42fa-8429-4c9f3f2ae6f7:owner-progress-heartbeat:119420224","mission_step_id":"2deb702a-8ee7-4169-a32b-5a52430822cb","command_center_event_id":"4410124f-e556-42fa-8429-4c9f3f2ae6f7"},{"id":"bf0531fd-24bf-4387-9389-827ae57b2f35","source":"cc-execution","status":"authorized","payload":{"paths":[".forgejo/workflows/knocklaunch.yml","config/control-plane-capabilities.json","workers/cc-execution/src/version.js","workers/cc-execution/test/release-orchestration-invariants.test.js"],"reason":"Owner explicitly directed: Unfreeze the control plane, fix cross-PR TypeScript cache reuse, then refreeze the control plane.","baseSha":"0fa564c70eb08be8fc60f3de29625aae6dffc600","issuedAt":1788487402125,"expiresAt":1788487582125,"missionId":"7c885094-c866-4a15-a350-3d086988eb7a","singleUse":true,"authorizationId":"2b3dc014-03f0-4135-93b3-ebd292874826"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-04T02:03:23.842206+00:00","proof_gate":"control_plane_maintenance_scope_authorized","source_sha":"0fa564c70eb08be8fc60f3de29625aae6dffc600","external_id":null,"receipt_type":"control_plane_maintenance_authorization","idempotency_key":"control-plane-maintenance-authorize:2b3dc014-03f0-4135-93b3-ebd292874826","mission_step_id":"cf9f0c36-26da-4ab8-b32f-9640a37db808","command_center_event_id":"7c885094-c866-4a15-a350-3d086988eb7a"},{"id":"bf054b3f-c0f5-40c6-b413-a964b0bf76a5","source":"cc-execution","status":"waiting_for_gate","payload":{"ok":true,"jobId":null,"phase":"pull_request","branch":"ai/objective-first-repair-aa25bd3e314d","reason":"pull_request_checks_pending","status":"waiting_for_gate","metrics":{"receiptBytes":0,"releaseCount":0,"toolCallCount":0,"repeatedCallCount":0,"ownerInterruptionCount":0},"version":null,"prNumber":3454,"terminal":false,"missionId":"aa25bd3e-314d-4544-a480-394d46742451","operation":"automatic_mission_resume","proofGate":"repair_mission_waiting_for_gate","sourceSha":null,"timingsMs":{"prReadinessMs":949,"approvedPlanMs":0,"shipAndProveMs":0,"repositoryMutationMs":0,"repositoryProviderMs":0,"repositoryAtomicCommitMs":0,"repositoryBranchCreateMs":0,"repositoryPullRequestCreateMs":0},"nextAction":"Reconcile this same mission and pull request after the exact-head KnockLaunch Gate changes state.","receiptRef":{"mode":"full","missionId":"aa25bd3e-314d-4544-a480-394d46742451"},"performance":null,"deploymentId":null,"releaseState":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","pendingProofKinds":[],"verificationState":null,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":1285,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true,"requestContractState":"pending"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-22T19:03:37.826986+00:00","proof_gate":"repair_mission_waiting_for_gate","source_sha":null,"external_id":"3454","receipt_type":"automatic_mission_resume","idempotency_key":"mission:aa25bd3e-314d-4544-a480-394d46742451:automatic-mission-resume:3454:repair_mission_waiting_for_gate","mission_step_id":"8d476952-2b0e-4a0d-90e1-ee35b8bbde29","command_center_event_id":"aa25bd3e-314d-4544-a480-394d46742451"},{"id":"bf05fe0c-2240-46d4-b869-f451e9d35236","source":"forgejo-runtime","status":"verified","payload":{"failed":[],"states":{"forgejo-main/source":"success","forgejo-release/workflow":"success","frontend-cloudflare/live":"success"},"mainSha":"6d561f75bb3a86eba328b754a55610b5d5038d1a","missing":[],"pending":[],"required":["forgejo-main/source","forgejo-release/workflow","frontend-cloudflare/live"],"sourceSha":"6d561f75bb3a86eba328b754a55610b5d5038d1a","releaseState":"verified","sourceInMain":true,"compareStatus":"protected_main_push_exact_source","releaseTargets":{"frontend":true,"migrations":false,"ccExecution":false,"supabaseEdge":false,"edgeFunctionSlugs":[]},"releaseTargetStates":{"frontend":"success"},"requestContractHash":"69373a6a3ae7f95dffa5e295895df489448aac042ec51a41c21743eccd2e82f1","forgejoWorkflowProof":{"runId":14452,"source":"signed_push_receipt","status":"running","results":{},"conclusion":"running","targetStates":{"frontend":"success"},"targetJobCount":7,"observedTargetStates":{"frontend":"success"}},"releaseSourceVerified":true,"ccExecutionRuntimeProof":null,"releaseTargetRecoveryProof":null,"exactReleaseVerifiedAfterMainAdvanced":false},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-02T18:03:09.212048+00:00","proof_gate":"canonical_release_terminal_verified","source_sha":"6d561f75bb3a86eba328b754a55610b5d5038d1a","external_id":"forgejo-main-6d561f75bb3a","receipt_type":"canonical_release_status","idempotency_key":"mission:9c619be0-b3b4-4982-bb1d-5c218a155771:forgejo-release-status:6d561f75bb3a86eba328b754a55610b5d5038d1a:verified:forgejo-main/source=success|forgejo-release/workflow=success|frontend-cloudflare/live=success","mission_step_id":"307721b0-6459-4ad3-915f-5aa9bca98afb","command_center_event_id":"9c619be0-b3b4-4982-bb1d-5c218a155771"},{"id":"bf061d53-ab18-4ef3-9ec0-5cb77b11b45e","source":"cc-execution","status":"waiting_for_gate","payload":{"ok":true,"jobId":null,"phase":"pull_request","branch":"ai/isolated-auth-bootstrap-recovery","reason":"pull_request_checks_pending","status":"waiting_for_gate","metrics":{"receiptBytes":0,"releaseCount":0,"toolCallCount":0,"repeatedCallCount":0,"ownerInterruptionCount":0},"version":"1.58.182-witness-render-cold-start-aware","prNumber":3085,"terminal":false,"missionId":"b5e87299-34de-41b8-b8da-fb2747c62378","operation":"execute_mission","proofGate":"repair_mission_waiting_for_gate","sourceSha":null,"timingsMs":{"gateMs":0,"proofMs":0,"handlerMs":1710,"releaseMs":0,"mutationMs":0,"repositoryMs":0,"prReadinessMs":1200,"approvedPlanMs":0,"missionSetupMs":1130,"providerAuthMs":0,"shipAndProveMs":0,"ledgerPrepareMs":412,"ledgerReconcileMs":0,"lineageReconcileMs":718,"resolvePreflightMs":1130,"repositoryMutationMs":0,"repositoryProviderMs":0,"authoritativeLedgerMs":0,"ledgerAsyncDispatchMs":0,"repositoryAtomicCommitMs":0,"repositoryBranchCreateMs":0,"totalSynchronousLedgerMs":412,"asyncBookkeepingDispatchMs":0,"ledgerAuthoritativeCommitMs":0,"repositoryPullRequestCreateMs":0},"nextAction":"Reconcile this same mission and pull request after the exact-head KnockLaunch Gate changes state.","receiptRef":{"mode":"full","missionId":"b5e87299-34de-41b8-b8da-fb2747c62378"},"performance":null,"deploymentId":null,"releaseState":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","pendingProofKinds":["repository","runtime"],"verificationState":null,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":1970,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true,"requestContractState":"pending"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-18T04:33:04.221808+00:00","proof_gate":"repair_mission_waiting_for_gate","source_sha":null,"external_id":"3085","receipt_type":"execute_mission","idempotency_key":"mission:b5e87299-34de-41b8-b8da-fb2747c62378:execute_mission:repair_mission_waiting_for_gate:current-generation","mission_step_id":"b222b0c1-3176-43ae-856c-137ab34686a3","command_center_event_id":"b5e87299-34de-41b8-b8da-fb2747c62378"},{"id":"bf07be5c-0714-495b-be09-b4ecfde96664","source":"forgejo-runtime","status":"verified","payload":{"failed":[],"states":{"forgejo-main/source":"success","forgejo-release/workflow":"success","cc-execution/runtime-proof":"success"},"mainSha":"771ce55039181339f27b41cacb43aad3c4c4be1b","missing":[],"pending":[],"required":["forgejo-main/source","forgejo-release/workflow","cc-execution/runtime-proof"],"sourceSha":"771ce55039181339f27b41cacb43aad3c4c4be1b","releaseState":"verified","sourceInMain":true,"compareStatus":"protected_main_push_exact_source","releaseTargets":{"frontend":false,"migrations":false,"ccExecution":true,"supabaseEdge":false,"edgeFunctionSlugs":[]},"releaseTargetStates":{"ccExecution":"success"},"requestContractHash":"cfe9102d7f228bf5727f3844c793700de69cd81fbce7229b0c768093aa865eff","forgejoWorkflowProof":{"runId":13427,"source":"signed_push_receipt","status":"success","results":{},"conclusion":"success","targetStates":{"ccExecution":"success"},"targetJobCount":6,"observedTargetStates":{"ccExecution":"success"}},"releaseSourceVerified":true,"ccExecutionRuntimeProof":{"liveSha":"771ce55039181339f27b41cacb43aad3c4c4be1b","proofGate":"cc_execution_target_aware_runtime_identity_verified","deploymentId":"forgejo-main-771ce55039181339f27b41cacb43aad3c4c4be1b","compareStatus":"target_job_success_runtime_verified","workflowRunId":13427,"identitySource":"canonical_release_target_job","runtimeVersion":"1.64.20-paul-owner-babysitting-guard","workflowFailed":false,"containsSourceSha":true},"releaseTargetRecoveryProof":null,"exactReleaseVerifiedAfterMainAdvanced":false},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-30T18:34:45.507115+00:00","proof_gate":"canonical_release_terminal_verified","source_sha":"771ce55039181339f27b41cacb43aad3c4c4be1b","external_id":"forgejo-main-771ce5503918","receipt_type":"canonical_release_status","idempotency_key":"mission:99b9c01b-27de-4675-901b-008b50a8d6b9:forgejo-release-status:771ce55039181339f27b41cacb43aad3c4c4be1b:verified:forgejo-main/source=success|forgejo-release/workflow=success|cc-execution/runtime-proof=success","mission_step_id":"af3142f7-ba2e-4f3b-a3ee-a53f5e2602f2","command_center_event_id":"99b9c01b-27de-4675-901b-008b50a8d6b9"},{"id":"bf0a50c3-0cd6-47e8-87cf-f975117d020e","source":"cc-execution","status":"waiting_for_gate","payload":{"ok":true,"jobId":null,"phase":"implementation","branch":"ai/objective-first-repair-ce1aaef96cbf","reason":"provider_verified_auto_progress_owns_gate_merge_release_outside_owner_response","status":"waiting_for_gate","metrics":{"receiptBytes":27205,"releaseCount":0,"toolCallCount":13,"repeatedCallCount":5,"executorlessWaitMs":306572,"firstUsefulResultAt":"2026-09-24T04:40:56.386Z","recoveryAttemptCount":0,"ownerInterruptionCount":0},"version":"1.58.237-tree-backed-source-anchor","prNumber":3583,"terminal":false,"missionId":"ce1aaef9-6cbf-4567-8214-5633d1676cb8","operation":"execute_mission","proofGate":"repair_mission_pr_handed_off_to_supervisor","sourceSha":null,"timingsMs":{"gateMs":0,"proofMs":0,"handlerMs":4762,"releaseMs":0,"mutationMs":0,"repositoryMs":0,"prReadinessMs":0,"approvedPlanMs":1920,"missionSetupMs":823,"providerAuthMs":0,"shipAndProveMs":0,"ledgerPrepareMs":660,"ledgerReconcileMs":0,"lineageReconcileMs":163,"resolvePreflightMs":823,"repositoryMutationMs":2842,"repositoryProviderMs":2842,"authoritativeLedgerMs":0,"ledgerAsyncDispatchMs":0,"repositoryAtomicCommitMs":2640,"repositoryBranchCreateMs":0,"totalSynchronousLedgerMs":660,"asyncBookkeepingDispatchMs":0,"ledgerAuthoritativeCommitMs":0,"repositoryPullRequestCreateMs":202},"nextAction":"Canonical KnockLaunch Gate notifier and durable mission supervisor own Gate, merge, release, and proof progression from this exact PR head outside the owner response path.","receiptRef":{"mode":"full","missionId":"ce1aaef9-6cbf-4567-8214-5633d1676cb8"},"performance":null,"deploymentId":null,"releaseState":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","pendingProofKinds":["runtime"],"verificationState":null,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":3639,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true,"requestContractState":"pending"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-24T04:41:58.094083+00:00","proof_gate":"repair_mission_pr_handed_off_to_supervisor","source_sha":null,"external_id":"3583","receipt_type":"execute_mission","idempotency_key":"mission:ce1aaef9-6cbf-4567-8214-5633d1676cb8:execute_mission:repair_mission_pr_handed_off_to_supervisor:current-generation","mission_step_id":"c80aec17-de0e-4961-8936-4c32ff3a52ba","command_center_event_id":"ce1aaef9-6cbf-4567-8214-5633d1676cb8"},{"id":"bf0afbcc-29a4-4a14-b10c-cccb2583c610","source":"cc-execution","status":"blocked","payload":{"ok":false,"jobId":null,"phase":"implementation","branch":"ai/objective-first-repair-cbfd2034ff01","reason":"anchored_edit_invalid","status":"blocked","metrics":{"receiptBytes":7021,"releaseCount":0,"toolCallCount":4,"repeatedCallCount":1,"executorlessWaitMs":287312,"firstUsefulResultAt":"2026-10-01T02:28:34.589Z","recoveryAttemptCount":0,"ownerInterruptionCount":0},"version":"1.64.31-paul-deterministic-correction-recovery","prNumber":null,"terminal":false,"missionId":"cbfd2034-ff01-46c4-8a96-24f5a38ae5db","operation":"execute_mission","proofGate":"repair_mission_execution_blocked","sourceSha":null,"timingsMs":{"gateMs":0,"proofMs":0,"handlerMs":581,"releaseMs":0,"mutationMs":0,"repositoryMs":0,"prReadinessMs":0,"approvedPlanMs":581,"missionSetupMs":284,"providerAuthMs":0,"shipAndProveMs":0,"ledgerPrepareMs":284,"ledgerReconcileMs":0,"lineageReconcileMs":0,"resolvePreflightMs":284,"repositoryMutationMs":0,"repositoryProviderMs":0,"authoritativeLedgerMs":0,"ledgerAsyncDispatchMs":0,"repositoryAtomicCommitMs":0,"repositoryBranchCreateMs":0,"totalSynchronousLedgerMs":284,"asyncBookkeepingDispatchMs":0,"ledgerAuthoritativeCommitMs":0,"repositoryPullRequestCreateMs":0},"nextAction":null,"receiptRef":{"mode":"full","missionId":"cbfd2034-ff01-46c4-8a96-24f5a38ae5db"},"performance":null,"deploymentId":null,"releaseState":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","pendingProofKinds":["runtime"],"verificationState":null,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":1422,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true,"requestContractState":"pending"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-01T02:33:23.469893+00:00","proof_gate":"repair_mission_execution_blocked","source_sha":null,"external_id":null,"receipt_type":"execute_mission","idempotency_key":"mission:cbfd2034-ff01-46c4-8a96-24f5a38ae5db:execute_mission:repair_mission_execution_blocked:current-generation","mission_step_id":"fefa02cc-6a5f-4c4d-bcd4-f5bc235d6a7f","command_center_event_id":"cbfd2034-ff01-46c4-8a96-24f5a38ae5db"},{"id":"bf0bbd2b-5ecd-433c-9618-b7ff918ef567","source":"durable-mission-ledger","status":"pending","payload":{"sourceSha":"86e7f4cd81835941d9958a881ffacf4a118b0124","requestContractProof":{"legacy":false,"present":true,"outcomes":[{"id":"outcome-1","satisfied":false,"statement":"Fix exactly one PCG backend contract defect in supabase/functions/pcg-google-drive-media/index.ts on current protected main. PCG card imagery is now canonically stored in Cloudflare R2 and card_grading_cards.front_image_url/back_image_url are signed https://<project>.supabase.co/functions/v1/pcg-r2-media/media?... URLs, but imageDataUrl still permits only the legacy pcg-google-drive-media/media endpoint and therefore rejects valid canonical R2 images before AI grading. Update the managed-image allowlist so AI grading accepts the canonical signed pcg-r2-media/media endpoint as managed PCG imagery while retaining support for the legacy managed endpoint during migration. Keep the same project-origin restriction and reject arbitrary external URLs. Do not weaken tenant isolation, signature validation, or the complete-front/back requirement. Gate, squash merge, deploy only the affected PCG edge function(s), and verify live against the existing failed card fbe3d939-3c4b-4200-8671-2871d37a0639 or equivalent production evidence.","proofConditionIds":["proof-production"]}],"satisfied":false,"constraints":[{"id":"capability-completeness","satisfied":false,"statement":"Every dependency the implementation declares or relies on must be wired and proven across applicable frontend, backend/runtime, schema/data/storage, authentication/authorization, provider configuration, prerequisite/loading/empty/error states, release ownership, and live production behavior; owner-authorized unavailable dependencies must become explicit prerequisite states rather than runtime failures.","proofConditionIds":["proof-production"]},{"id":"atomic-capability-lifecycle","satisfied":false,"statement":"Changed capabilities remain non-active until dependency readiness, N/N-1 compatibility, affected-target release, and claim-matched production canary proof are satisfied; missing optional dependencies become prerequisite_required, and runtime drift or health-contract violation quarantines only the affected capability instead of breaking unrelated working capability.","proofConditionIds":["proof-production"]}],"contractHash":"6f02494f6c23e7f8c356727f84ae866b79d219c051f08a9f39d330ba8b593a86","releaseBound":false,"witnessBound":false,"visualRequested":false,"visualSatisfied":true,"conditionResults":[{"id":"proof-production","kind":"runtime","evidence":{"reason":null,"satisfied":true,"releaseState":null,"missingTargets":[],"disallowedTargets":[],"migrationRequired":false,"releaseTargetStates":{"supabaseEdge":"success"},"unsuccessfulTargets":[],"activeReleaseTargets":["supabaseEdge"],"allowedReleaseTargets":[],"requiredReleaseTargets":[],"migrationReleaseVerified":null,"releaseRequestContractHash":null},"required":true,"satisfied":false}],"validationErrors":[],"pendingProofKinds":["runtime"],"activeReleaseTargets":["supabaseEdge"]},"authoritativeMissionRefresh":true,"evaluatedRequestContractRevision":2},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-06T03:58:20.679187+00:00","proof_gate":"request_contract_pending","source_sha":"86e7f4cd81835941d9958a881ffacf4a118b0124","external_id":null,"receipt_type":"request_contract_reconciliation","idempotency_key":"mission:d924f5e0-daba-4784-bcdf-20da1378c752:request-contract:6f02494f6c23e7f8c356727f84ae866b79d219c051f08a9f39d330ba8b593a86:86e7f4cd81835941d9958a881ffacf4a118b0124:pending:runtime","mission_step_id":"b758af7b-acf8-4205-8bef-641deba9cb74","command_center_event_id":"d924f5e0-daba-4784-bcdf-20da1378c752"},{"id":"bf0d3cec-ab28-40d0-956a-bbae8422d522","source":"forgejo-runtime","status":"verified","payload":{"failed":[],"states":{"forgejo-main/source":"success","forgejo-release/workflow":"success","cc-execution/runtime-proof":"success"},"mainSha":"7c4b401ca60d5e34e50b370700ed38a01aa5e389","missing":[],"pending":[],"required":["forgejo-main/source","forgejo-release/workflow","cc-execution/runtime-proof"],"sourceSha":"7c4b401ca60d5e34e50b370700ed38a01aa5e389","releaseState":"verified","sourceInMain":true,"compareStatus":"protected_main_push_exact_source","releaseTargets":{"frontend":false,"migrations":false,"ccExecution":true,"supabaseEdge":false,"edgeFunctionSlugs":[]},"releaseTargetStates":{"ccExecution":"success"},"requestContractHash":"2a13a1bc9837cccf85c2f72d38809c53c43f8c46ad17fa94d9eedbf6470c87b7","forgejoWorkflowProof":{"runId":14513,"source":"signed_push_receipt","status":"success","results":{},"conclusion":"success","targetStates":{"ccExecution":"success"},"targetJobCount":7,"observedTargetStates":{"ccExecution":"success"}},"releaseSourceVerified":true,"ccExecutionRuntimeProof":{"liveSha":"7c4b401ca60d5e34e50b370700ed38a01aa5e389","proofGate":"cc_execution_target_aware_runtime_identity_verified","deploymentId":"forgejo-main-7c4b401ca60d5e34e50b370700ed38a01aa5e389","compareStatus":"target_job_success_runtime_verified","workflowRunId":14513,"identitySource":"canonical_release_target_job","runtimeVersion":"1.64.52-paul-deep-critic","workflowFailed":false,"containsSourceSha":true},"releaseTargetRecoveryProof":null,"exactReleaseVerifiedAfterMainAdvanced":false},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-02T21:14:07.816627+00:00","proof_gate":"canonical_release_terminal_verified","source_sha":"7c4b401ca60d5e34e50b370700ed38a01aa5e389","external_id":"forgejo-main-7c4b401ca60d","receipt_type":"canonical_release_status","idempotency_key":"mission:f571210e-0ba0-43e1-b58e-5b0698be6d20:forgejo-release-status:7c4b401ca60d5e34e50b370700ed38a01aa5e389:verified:forgejo-main/source=success|forgejo-release/workflow=success|cc-execution/runtime-proof=success","mission_step_id":"9578f9a8-2f9b-457f-9528-80298282e492","command_center_event_id":"f571210e-0ba0-43e1-b58e-5b0698be6d20"},{"id":"bf0deea7-6572-4268-b300-8d8f9a790178","source":"forgejo-runtime","status":"pending","payload":{"mainSha":"28a7a6e239a148ce05c79a581a861bf322dfa27f","sourceSha":"39544617a591f0f4189ffe114fcbc54bcd597236","sourceInMain":false,"compareStatus":"main_history_page_inconclusive","ancestryProofResolved":false},"tenant_id":"fe5cc9d9-c2fe-4062-84c7-a334663cd63c","created_at":"2026-10-04T08:50:19.92393+00:00","proof_gate":"canonical_release_ancestry_pending","source_sha":"39544617a591f0f4189ffe114fcbc54bcd597236","external_id":"canonical-release-39544617a591","receipt_type":"canonical_release_status","idempotency_key":"mission:c03583e2-5344-4a5b-978b-617ed539c176:forgejo-release-ancestry:39544617a591f0f4189ffe114fcbc54bcd597236:28a7a6e239a148ce05c79a581a861bf322dfa27f:main_history_page_inconclusive","mission_step_id":"485b2657-5f10-47a6-82de-6a5f6325a47d","command_center_event_id":"c03583e2-5344-4a5b-978b-617ed539c176"},{"id":"bf11eee2-9fc7-47ac-8b9b-c65b39e20366","source":"github-status","status":"failed","payload":{"failed":["canonical-production-release/verified"],"states":{"canonical-production-release/verified":"failure"},"missing":[],"pending":[],"required":["canonical-production-release/verified"],"sourceSha":"938892cd7e70fe4b0a57319fb95f9d7f58e317a3","releaseState":"failed","exactConductorRun":{"id":31406178443,"status":"completed","headSha":"938892cd7e70fe4b0a57319fb95f9d7f58e317a3","conclusion":"failure","compareStatus":"identical","sourceMatches":true,"containsSourceSha":true,"reconciliationMode":null},"ccExecutionRuntimeProof":null},"tenant_id":"a2929648-19db-46c8-9e93-07378ed1aa5f","created_at":"2026-08-10T15:59:38.539419+00:00","proof_gate":"canonical_release_terminal_failed","source_sha":"938892cd7e70fe4b0a57319fb95f9d7f58e317a3","external_id":"canonical-release-938892cd7e70","receipt_type":"canonical_release_status","idempotency_key":"mission:bf0a809e-9a74-49fd-9d3e-30967b30ce29:release-status:938892cd7e70fe4b0a57319fb95f9d7f58e317a3:31406178443:failed:canonical-production-release/verified=failure","mission_step_id":"4c0b79aa-9892-46f6-a1b4-ca392b817fa3","command_center_event_id":"bf0a809e-9a74-49fd-9d3e-30967b30ce29"},{"id":"bf12d903-5ae0-492c-8149-441aa5b6bd36","source":"cc-execution","status":"release_reconciliation_pending","payload":{"ok":true,"jobId":null,"phase":"pull_request","branch":"ai/objective-first-repair-43dfce3389d3","reason":null,"status":"release_reconciliation_pending","metrics":{"receiptBytes":47977,"releaseCount":0,"toolCallCount":5,"repeatedCallCount":1,"executorlessWaitMs":124454,"firstUsefulResultAt":"2026-10-04T15:41:25.221Z","recoveryAttemptCount":0,"ownerInterruptionCount":0},"version":null,"prNumber":4816,"terminal":false,"missionId":"43dfce33-89d3-4cc4-8e33-8f5a6873ce78","operation":"automatic_mission_resume","proofGate":"canonical_release_reconciliation_pending","sourceSha":"d06cb2bba77251f07830df979819294ac80954a2","timingsMs":{"prReadinessMs":700,"approvedPlanMs":0,"shipAndProveMs":931,"repositoryMutationMs":0,"repositoryProviderMs":0,"repositoryAtomicCommitMs":0,"repositoryBranchCreateMs":0,"repositoryPullRequestCreateMs":0},"nextAction":"reconcile_release","receiptRef":{"mode":"full","missionId":"43dfce33-89d3-4cc4-8e33-8f5a6873ce78"},"performance":null,"deploymentId":"forgejo-main-d06cb2bba772","releaseState":null,"workflowRunId":null,"releaseTargets":{"frontend":true,"migrations":false,"ccExecution":false,"supabaseEdge":false,"edgeFunctionSlugs":[]},"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","pendingProofKinds":[],"verificationState":null,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":1848,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true,"requestContractState":"pending"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-04T15:43:35.347436+00:00","proof_gate":"canonical_release_reconciliation_pending","source_sha":null,"external_id":"4816","receipt_type":"automatic_mission_resume","idempotency_key":"mission:43dfce33-89d3-4cc4-8e33-8f5a6873ce78:automatic-mission-resume:4816:canonical_release_reconciliation_pending","mission_step_id":"7253997d-f646-4cab-ac6f-d96ebbd8ec01","command_center_event_id":"43dfce33-89d3-4cc4-8e33-8f5a6873ce78"},{"id":"bf1479d0-f636-4a03-bcee-69b048b8cf01","source":"forgejo","status":"waiting","payload":{"branch":"ai/objective-first-repair-8c04bea84e20","prNumber":3999,"nextAction":"Follow the existing canonical release to terminal proof.","mergeCommitSha":"1daa96721e72fb1dcdc879da46c2b30c6f025708","branchDeletedAfterMerge":true,"correctiveGenerationCreated":false},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-28T15:10:03.320057+00:00","proof_gate":"forgejo_merged_pr_is_authoritative_source_lineage","source_sha":"1daa96721e72fb1dcdc879da46c2b30c6f025708","external_id":"3999","receipt_type":"source_lineage_merged_pr_authoritative","idempotency_key":"mission:8c04bea8-4e20-43c8-8b0e-56d79150cdd6:merged-pr:3999:1daa96721e72fb1dcdc879da46c2b30c6f025708","mission_step_id":"c0e094a3-36a0-4c0f-a4a9-9a5fd808a29a","command_center_event_id":"8c04bea8-4e20-43c8-8b0e-56d79150cdd6"},{"id":"bf150fdf-6c94-49b3-8adf-0167eaad3164","source":"cc-execution","status":"waiting_for_gate","payload":{"ok":true,"jobId":null,"phase":"objective_received","branch":"ai/objective-first-repair-mu2raer9","reason":"pull_request_gate_missing","status":"waiting_for_gate","metrics":{"receiptBytes":0,"releaseCount":0,"toolCallCount":0,"repeatedCallCount":0,"ownerInterruptionCount":0},"version":"1.58.151-mission-create-single-rpc","prNumber":2822,"terminal":false,"missionId":"996e7b99-0ac3-40fb-b346-fa1f14b360a1","operation":"execute_mission","proofGate":"repair_mission_waiting_for_gate","sourceSha":null,"timingsMs":{"gateMs":0,"proofMs":0,"handlerMs":11621,"releaseMs":0,"mutationMs":0,"repositoryMs":0,"prReadinessMs":4195,"approvedPlanMs":0,"missionSetupMs":4164,"providerAuthMs":0,"shipAndProveMs":0,"ledgerPrepareMs":4164,"ledgerReconcileMs":0,"lineageReconcileMs":0,"resolvePreflightMs":4164,"repositoryMutationMs":7417,"repositoryProviderMs":4988,"authoritativeLedgerMs":0,"ledgerAsyncDispatchMs":0,"repositoryAtomicCommitMs":4247,"repositoryBranchCreateMs":0,"totalSynchronousLedgerMs":4164,"asyncBookkeepingDispatchMs":0,"ledgerAuthoritativeCommitMs":0,"repositoryPullRequestCreateMs":741},"nextAction":"Reconcile this same mission and pull request after the exact-head KnockLaunch Gate changes state.","receiptRef":{"mode":"full","missionId":"996e7b99-0ac3-40fb-b346-fa1f14b360a1"},"performance":null,"deploymentId":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":1516,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-15T14:27:06.474421+00:00","proof_gate":"repair_mission_waiting_for_gate","source_sha":null,"external_id":"2822","receipt_type":"execute_mission","idempotency_key":"mission:996e7b99-0ac3-40fb-b346-fa1f14b360a1:execute_mission:repair_mission_waiting_for_gate:current-generation","mission_step_id":"01c18033-e871-44e3-8203-ee72b7f63158","command_center_event_id":"996e7b99-0ac3-40fb-b346-fa1f14b360a1"},{"id":"bf151f0b-5d2f-4b57-a2bc-9f0da479d284","source":"cc-execution","status":"retryable","payload":{"ok":false,"jobId":null,"phase":"implementation","branch":"ai/tenant-loader-canonical-media-20260902","reason":"auto_progress_pr_read_failed:The operation was aborted due to timeout","status":"retryable","metrics":{"receiptBytes":46604,"releaseCount":1,"toolCallCount":22,"repeatedCallCount":4,"ownerInterruptionCount":0},"version":"1.58.4-refresh-fastpath","prNumber":1395,"terminal":false,"missionId":"b3bb18c3-e46e-40cb-a76d-c2f34e726e9b","operation":"execute_mission","proofGate":"repair_mission_auto_progress_authorization_retryable","sourceSha":"d8946244dc83d3009e2ccd3f072db822e99f2063","timingsMs":{"handlerMs":4001,"prReadinessMs":0,"approvedPlanMs":0,"missionSetupMs":9079,"shipAndProveMs":0},"nextAction":"Reconcile this same mission and pull request automatically; do not create a replacement branch or PR.","receiptRef":{"mode":"full","missionId":"b3bb18c3-e46e-40cb-a76d-c2f34e726e9b"},"performance":null,"deploymentId":"forgejo-main-d8946244dc83","workflowRunId":null,"releaseTargets":{"frontend":true,"onrunner":false,"migrations":false,"ccExecution":false,"supabaseEdge":false,"edgeFunctionSlugs":[]},"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":1020,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-02T05:16:11.452809+00:00","proof_gate":"repair_mission_auto_progress_authorization_retryable","source_sha":"d8946244dc83d3009e2ccd3f072db822e99f2063","external_id":"forgejo-main-d8946244dc83","receipt_type":"execute_mission","idempotency_key":"mission:b3bb18c3-e46e-40cb-a76d-c2f34e726e9b:execute_mission:repair_mission_auto_progress_authorization_retryable:current-generation","mission_step_id":"e3f75933-0178-448f-a28b-9142775667cf","command_center_event_id":"b3bb18c3-e46e-40cb-a76d-c2f34e726e9b"},{"id":"bf1599bf-3ad5-4134-a003-33eb90fccd60","source":"forgejo","status":"waiting","payload":{"branch":"ai/fix-vista-r2-token-20260828","prNumber":885,"nextAction":null,"mergeCommitSha":"9db2c25ff6f360da9eb9a95292d8bc2e1d6c17c0","branchDeletedAfterMerge":false,"correctiveGenerationCreated":false},"tenant_id":"71b397ba-b9ad-496b-914c-985d97dbb12e","created_at":"2026-08-28T00:23:27.224119+00:00","proof_gate":"forgejo_merged_pr_is_authoritative_source_lineage","source_sha":"9db2c25ff6f360da9eb9a95292d8bc2e1d6c17c0","external_id":"885","receipt_type":"source_lineage_merged_pr_authoritative","idempotency_key":"mission:e6e3072d-804e-4308-aeeb-32a5fe3f3263:merged-pr:885:9db2c25ff6f360da9eb9a95292d8bc2e1d6c17c0","mission_step_id":"2cb2a591-a779-4cbc-a2e5-1f0950457fb3","command_center_event_id":"e6e3072d-804e-4308-aeeb-32a5fe3f3263"},{"id":"bf1612d8-0eab-451d-8a2d-a61f3964ab56","source":"cc-execution","status":"waiting","payload":{"body":{"ship":true,"files":[{"path":"public/console/operator.mjs","content":"let host, options, sending=false, draft='', timer=null, activeView='desktop', latest=null, compareMode=false, commentaryOpen=sessionStorage.getItem('kl-console-commentary-open')==='1';\nconst messages=[];\nlet context={route:'',tenantRef:'',roleRef:'',viewports:['desktop','mobile']};\ntry { const saved=JSON.parse(sessionStorage.getItem('kl-operator-context')||'null');if(saved)context={...context,route:String(saved.route||''),tenantRef:String(saved.tenantRef||''),roleRef:String(saved.roleRef||''),viewports:Array.isArray(saved.viewports)&&saved.viewports.length?saved.viewports:['desktop','mobile']}; } catch {}\nconst esc=v=>String(v??'').replace(/[&<>\"']/g,c=>({'&':'&amp;','<':'&lt;','>':'&gt;','\"':'&quot;',\"'\":'&#39;'}[c]));\nfunction save(){try{sessionStorage.setItem('kl-operator-context',JSON.stringify({route:context.route||'',tenantRef:context.tenantRef||'',roleRef:context.roleRef||'',viewports:Array.isArray(context.viewports)&&context.viewports.length?context.viewports:['desktop','mobile']}));}catch{}}\nfunction liveActivity(){return options?.witnessActivity?.()||{active:null,runs:[]};}\nfunction liveRun(){return liveActivity()?.active||null;}\nfunction recentRuns(){const runs=liveActivity()?.runs;return Array.isArray(runs)?runs:[];}\nfunction focusRun(){return liveRun()||recentRuns()[0]||null;}\nfunction runsForRoute(route){return recentRuns().filter(run=>String(run?.currentRoute||'')===String(route||''));}\nfunction proofForRun(run,viewport=activeView){const candidates=(run?.artifactReceipts||[]).filter(a=>(!a.viewport||a.viewport===viewport)&&String(a.phase||'').toLowerCase()!=='preflight').sort((a,b)=>{const rank={after:3,observe:2,before:1};return (rank[String(b.phase||'').toLowerCase()]||0)-(rank[String(a.phase||'').toLowerCase()]||0)||String(b.capturedAt||'').localeCompare(String(a.capturedAt||''));});return candidates.find(a=>imageUrl(a?.signedUrl))||null;}\nfunction previousRoute(current){for(const run of recentRuns()){const route=String(run?.currentRoute||'');if(route&&route!==current)return route;}return '';}\nasync function witnessRoute(route){if(!route||sending)return;await options.bridge('witness-route',{route,viewport:activeView,tenantRef:context.tenantRef||''});}\nfunction compareMarkup(route){if(!compareMode)return '';const proofs=[];for(const run of runsForRoute(route)){const proof=proofForRun(run);if(proof)proofs.push({run,proof});if(proofs.length===2)break;}if(proofs.length<2)return '<div class=\"witness-compare-empty\">Two accepted frames are needed before this route can be compared.</div>';return '<div class=\"witness-compare-grid\">'+proofs.map((item,index)=>'<figure><figcaption>'+(index===0?'Latest':'Previous')+' · '+esc(new Date(item.proof.capturedAt||item.run.completedAt||Date.now()).toLocaleString())+'</figcaption><img src=\"'+esc(imageUrl(item.proof.signedUrl))+'\" alt=\"'+(index===0?'Latest':'Previous')+' witness frame\"></figure>').join('')+'</div>';}\nfunction witnessActivityMarkup(){const active=liveRun(),seen=new Set(),runs=[];for(const run of [active,...recentRuns()]){if(!run?.id||seen.has(run.id))continue;seen.add(run.id);runs.push(run);if(runs.length>=6)break;}if(!runs.length)return '<div class=\"witness-standby-state\"><b>Laptop witness standing by.</b><span>The next witness run will appear here automatically.</span></div>';return `<div class=\"witness-activity-list\">${runs.map(run=>`<article class=\"witness-activity-item ${run.terminal?'complete':'live-run'}\"><div><span class=\"live-kicker\">${run.terminal?'COMPLETE':'LIVE'}</span><b>${esc(run.currentRoute||'Witness run')}</b><span>${esc(run.currentViewport||'viewport pending')} · ${esc(String(run.phase||run.status||'working').replaceAll('_',' '))}</span></div><time>${esc(new Date(run.lastProgressAt||run.completedAt||run.startedAt||run.createdAt||Date.now()).toLocaleTimeString())}</time>${run.ownerComments?.length?`<small>${run.ownerComments.length} owner comment${run.ownerComments.length===1?'':'s'}</small>`:''}</article>`).join('')}</div>`;}\nfunction evidence(){const run=focusRun(),route=run?.currentRoute||'',artifacts=[...(run?.artifactReceipts||[])];return artifacts.filter(a=>(!a.viewport||a.viewport===activeView)&&(!a.route||!route||a.route===route)&&String(a.phase||'').toLowerCase()!=='preflight').sort((a,b)=>{const rank={after:3,observe:2,before:1};const phaseRank=(rank[String(b.phase||'').toLowerCase()]||0)-(rank[String(a.phase||'').toLowerCase()]||0);return phaseRank||String(b.capturedAt||'').localeCompare(String(a.capturedAt||''));});}\nfunction imageUrl(value){try{const u=new URL(value);return u.protocol==='https:'&&u.hostname==='laptop-witness.knocklaunch.app'&&u.pathname.startsWith('/__witness/evidence/')?u.href:'';}catch{return '';}}\nfunction render(){\n if(!host?.isConnected)return;\n const live=liveRun(),focus=focusRun(),livePending=Boolean(live&&!live.terminal);if(livePending&&['desktop','mobile'].includes(live.currentViewport))activeView=live.currentViewport;const displayRoute=focus?.currentRoute||'',candidate=evidence()[0]||focus?.latestProof,proof=String(candidate?.phase||'').toLowerCase()==='preflight'?null:candidate,url=imageUrl(proof?.signedUrl),pending=livePending,localConnected=options.localConnected?.()===true,hostedOnline=options.hostedOnline?.()!==false,system=options.systemStatus?.()||{},desktop=system.desktop||{},laptop=system.laptop||{},services=system.services||{},renderVerified=Boolean(focus?.terminal&&url),proofIncomplete=Boolean(focus?.terminal&&!url);\n host.innerHTML=`<header class=\"console-header overview-header\"><div><div class=\"eyebrow\">KNOCKLAUNCH CONSOLE</div><h1>Overview</h1><p>Everything you need to run and inspect KNOCKLAUNCH.</p></div><div class=\"connection-strip\"><span class=\"${desktop.online?'live':'failed'}\"><i></i>Desktop ${desktop.online?(desktop.busy?'busy':'online'):'offline'}</span><span class=\"${laptop.online?'live':'failed'}\"><i></i>Laptop ${laptop.witnessActive?'witnessing':laptop.online?'ready':'offline'}</span><span class=\"${services.online===services.total?'live':'waiting'}\"><i></i>Services ${services.online??0}/${services.total??3}</span><span class=\"pill ${livePending?'running':laptop.online?'live':'failed'}\">${livePending?'Witness live':laptop.online?'Witness ready':'Witness offline'}</span></div></header><div class=\"layout\"><nav class=\"console-nav\" aria-label=\"Console navigation\">${options.stages.map(s=>`<button data-stage=\"${s.id}\" aria-current=\"${s.id==='overview'?'page':'false'}\">${esc(s.name)}</button>`).join('')}</nav><main class=\"operator-main\">${!localConnected&&options.connectLocal?`<section class=\"panel operator-pairing\"><div class=\"provider-head\"><div><h3>Connect your MSI</h3><p class=\"muted\">Paste the pairing code from the MSI Console once. Hosted chat and provider views stay available either way.</p></div><div class=\"connect\"><input id=\"operator-pair\" type=\"password\" autocomplete=\"off\" placeholder=\"MSI pairing code\" aria-label=\"MSI pairing code\"><button id=\"operator-connect\">Pair MSI</button></div></div></section>`:''}<div class=\"operator-grid ${(!commentaryOpen&&!livePending)?'commentary-collapsed':''}\"><section class=\"panel operator-chat\"><div class=\"provider-head\"><div><div class=\"eyebrow\">${livePending?'LIVE COMMENTARY':'INSPECT'}</div><h2>${livePending?'Comment on live witness':'What should the witness check?'}</h2></div><div class=\"operator-chat-head-actions\"><button id=\"operator-commentary-toggle\" aria-pressed=\"${commentaryOpen||livePending}\">${commentaryOpen||livePending?'Collapse':'Commentary'}</button><button id=\"operator-clear\" ${sending||pending?'disabled':''}>New chat</button></div></div><div class=\"operator-messages\" role=\"log\" aria-live=\"polite\">${messages.length?messages.map(m=>`<div class=\"operator-message ${m.role}\"><strong>${m.role==='user'?'You':'KNOCKLAUNCH'}</strong><p>${esc(m.text)}</p></div>`).join(''):'<p class=\"muted\">Your Laptop witness is connected and standing by. Ask for any KNOCKLAUNCH page and the live run will appear beside you automatically.</p><div class=\"actions\"><button data-prompt=\"Show /admin/console on both\">Show Console</button><button data-prompt=\"Show Big Papi inventory on mobile\">Big Papi inventory</button></div>'}</div>${live?.ownerComments?.length?`<div class=\"live-commentary-feed\"><div class=\"eyebrow\">OWNER NOTES ON THIS RUN</div>${live.ownerComments.slice(-5).map(note=>`<div class=\"live-comment\"><time>${esc(new Date(note.at||Date.now()).toLocaleTimeString())}</time><span>${esc(note.text)}</span></div>`).join('')}</div>`:''}<form id=\"operator-form\"><label class=\"sr-only\" for=\"operator-message\">Message KNOCKLAUNCH</label><textarea id=\"operator-message\" rows=\"3\" maxlength=\"2000\" placeholder=\"${livePending?'Comment on live witness…':'Show /admin/console on mobile…'}\" ${sending?'disabled':''}>${esc(draft)}</textarea><div class=\"operator-compose-actions\"><span class=\"muted small\">${livePending?'Your comment is attached to this live witness run':'Enter to send · Shift+Enter for a new line'}</span><button type=\"submit\" ${sending?'disabled':''}>${sending?'Sending…':'Send'}</button></div></form><details><summary>Inspection context</summary><div class=\"operator-context\"><label>Route<input id=\"operator-route\" value=\"${esc(context.route)}\" placeholder=\"/tenant/owner/page\"></label><label>Tenant<input id=\"operator-tenant\" value=\"${esc(context.tenantRef)}\" placeholder=\"Tenant slug or ID\"></label><label>Role<input id=\"operator-role\" value=\"${esc(context.roleRef)}\" placeholder=\"Default experience\"></label></div><button id=\"operator-context-save\">Use this context</button></details></section><section class=\"panel operator-witness ${livePending?'is-live':'is-standby'}\"><div class=\"provider-head\"><div><div class=\"eyebrow witness-live-label\">${livePending?'● LIVE':focus?.terminal?'LAST RUN':'STANDBY'}</div><h2>Live Witness</h2></div><div class=\"actions\">${['desktop','mobile'].map(v=>`<button data-view=\"${v}\" aria-pressed=\"${activeView===v}\">${v==='desktop'?'Desktop':'Mobile'}</button>`).join('')}</div></div><div class=\"witness-control-strip\"><div class=\"witness-control-left\"><button type=\"button\" data-witness-control=\"back\" ${previousRoute(displayRoute)?'':'disabled'}>← Back</button><button type=\"button\" data-witness-control=\"refresh\" ${displayRoute?'':'disabled'}>↻ Refresh</button><a class=\"button-like ${displayRoute?'':'disabled'}\" ${displayRoute?'href=\"'+esc(displayRoute)+'\" target=\"_blank\" rel=\"noopener\"':''}>Open</a><button type=\"button\" data-witness-control=\"compare\" ${displayRoute?'':'disabled'} aria-pressed=\"${compareMode}\">Compare</button></div><div class=\"witness-control-status\"><span>${livePending?'LIVE':'READY'}</span><small>${esc(activeView)}</small></div></div><div class=\"operator-route muted\">${focus?esc(displayRoute||'Witness run'):'Laptop witness standing by'}${focus?.currentViewport?' · '+esc(focus.currentViewport):''}</div><p class=\"small muted\" role=\"status\">${focus?esc(String(focus.phase||focus.status||'ready').replaceAll('_',' ')):'New Laptop witness runs appear here automatically.'}</p><div class=\"operator-image ${activeView} ${focus?'':'standby'}\">${url?`<a href=\"${esc(url)}\" target=\"_blank\" rel=\"noopener noreferrer\"><img src=\"${esc(url)}\" alt=\"${esc(activeView+' witness of '+context.route)}\" referrerpolicy=\"no-referrer\"></a><p class=\"small muted\">Rendered proof · ${esc(proof.phase||'final')} · Captured ${esc(new Date(proof.capturedAt||Date.now()).toLocaleTimeString())}</p>`:`<p class=\"muted\">${livePending?'Witness is working. The newest rendered frame will appear here automatically.':focus&&proofIncomplete?'The last run finished without accepted rendered proof. It remains in Recent witness activity, but it does not block the Laptop.':focus?'No rendered image is available for this viewport.':'Laptop witness is connected and standing by. New runs appear here automatically.'}</p>`}</div>${compareMarkup(displayRoute)}<section class=\"operator-live-activity\"><div class=\"provider-head\"><div><div class=\"eyebrow\">WITNESS ACTIVITY</div><h3>Recent runs</h3></div><span class=\"muted small\">Auto-refreshing</span></div>${witnessActivityMarkup()}</section>${latest?.failureReason?`<p class=\"error\">${esc(latest.failureReason)}</p>`:''}<details class=\"operator-run-details\"><summary>Run details</summary><pre class=\"logs\">${esc(JSON.stringify({route:context.route,tenant:context.tenantRef||null,role:context.roleRef||'default',viewports:context.viewports,lane:latest?.runnerLane||'laptop',status:latest?.status||'not started',proofPhase:proof?.phase||candidate?.phase||null,renderProofAccepted:Boolean(url),job:context.jobId||context.missionId||null},null,2))}</pre></details></section></div></main></div>`;\n host.querySelectorAll('[data-stage]').forEach(b=>b.onclick=()=>{clearTimeout(timer);const go=options.onStage;host=null;go(b.dataset.stage);});\n const pairButton=host.querySelector('#operator-connect');if(pairButton)pairButton.onclick=async()=>{const code=host.querySelector('#operator-pair')?.value.trim()||'';if(!code){messages.push({role:'assistant',text:'Paste the MSI pairing code first.'});render();return;}pairButton.disabled=true;try{await options.connectLocal(code);messages.push({role:'assistant',text:'MSI paired. Local machine commands are now available from this Console.'});}catch(error){messages.push({role:'assistant',text:error instanceof Error?error.message:'MSI pairing failed.'});}finally{render();}};\n host.querySelectorAll('[data-view]').forEach(b=>b.onclick=()=>{draft=host.querySelector('textarea').value;activeView=b.dataset.view;render();});\n host.querySelectorAll('[data-prompt]').forEach(b=>b.onclick=()=>send(b.dataset.prompt));\n const commentaryToggle=host.querySelector('#operator-commentary-toggle');if(commentaryToggle)commentaryToggle.onclick=()=>{commentaryOpen=!commentaryOpen;sessionStorage.setItem('kl-console-commentary-open',commentaryOpen?'1':'0');render();};\n host.querySelectorAll('[data-witness-control]').forEach(button=>button.onclick=async()=>{const action=button.dataset.witnessControl;if(action==='compare'){compareMode=!compareMode;render();return;}if(action==='refresh'&&displayRoute){await witnessRoute(displayRoute);return;}if(action==='back'){const route=previousRoute(displayRoute);if(route)await witnessRoute(route);}});\n const input=host.querySelector('textarea');input.oninput=()=>{draft=input.value;};input.onkeydown=e=>{if(e.key==='Enter'&&!e.shiftKey){e.preventDefault();send(input.value);}};\n host.querySelector('form').onsubmit=e=>{e.preventDefault();send(input.value);};\n host.querySelector('#operator-clear').onclick=()=>{clearTimeout(timer);context={route:'',tenantRef:'',roleRef:'',viewports:['desktop','mobile']};latest=null;messages.length=0;draft='';save();render();};\n host.querySelector('#operator-context-save').onclick=()=>{const route=host.querySelector('#operator-route').value.trim();if(route&&!/^\\/(?!\\/)/.test(route)){messages.push({role:'assistant',text:'Use a route starting with one slash.'});render();return;}context={route,tenantRef:host.querySelector('#operator-tenant').value.trim(),roleRef:host.querySelector('#operator-role').value.trim(),viewports:context.viewports};latest=null;save();render();};\n const image=host.querySelector('.operator-image img');if(image)image.onerror=()=>{image.parentElement.replaceWith(Object.assign(document.createElement('p'),{textContent:'This frame expired. The next live witness frame will replace it automatically.',className:'muted'}));};\n const log=host.querySelector('.operator-messages');log.scrollTop=log.scrollHeight;\n}\nasync function send(message,{poll=false}={}){\n if(sending||!message.trim())return;\n const live=liveRun(),control=/^(status|poll|progress|cancel|stop)$/i.test(message.trim());\n if(live&&!live.terminal&&!control&&!poll){clearTimeout(timer);sending=true;messages.push({role:'user',text:message});draft='';render();try{const result=await options.commentWitness?.({runId:live.id,comment:message});if(result?.ok===false||result?.error)throw new Error(result.error||'Comment could not be attached');messages.push({role:'assistant',text:'Comment attached to the live witness.'});await options.refreshWitnessActivity?.();}catch(e){messages.push({role:'assistant',text:e instanceof Error?e.message:'Comment could not be attached'});}finally{sending=false;render();}return;}\n if(context.jobId&&latest&&!latest.terminal&&!control){messages.push({role:'assistant',text:'The current witness is still running. Wait for its result or cancel it before starting another capture.'});render();return;}\n clearTimeout(timer);sending=true;\n if(!poll){messages.push({role:'user',text:message});draft='';}\n render();\n try{\n  const result=await options.bridge('operator',{message,context});\n  if(result.ok===false||result.error)throw new Error(result.error||'Operator unavailable');\n  context=result.context||context;save();if(result.receipt)latest=result.receipt;\n  if(!poll||latest?.terminal)messages.push({role:'assistant',text:result.message});\n  if(context.viewports.length===1)activeView=context.viewports[0];\n  if(result.kind!=='help'&&context.jobId&&!latest?.terminal)timer=setTimeout(()=>send('status',{poll:true}),4000);\n }catch(e){messages.push({role:'assistant',text:e.message+' The Console will keep following the witness automatically.'});}\n finally{sending=false;render();}\n}\nexport function mountOperator(element,config){options=config;host=element;if(element.querySelector('.operator-main')){render();return;}render();}\n"},{"path":"public/console/console.js","content":"import { mountOperator } from './operator.mjs?v=preview-restore-1';\nimport { stages, actions } from './catalog.mjs?v=preview-restore-1';\nconst app=document.querySelector('#app');\nconst embedded=window.parent!==window;\nconst local=location.hostname==='127.0.0.1'||location.hostname==='localhost';\nconst localSessionKey='kl-console-session';\nlet token=localStorage.getItem(localSessionKey)||'';\n// The launcher supplies the machine-local session in the fragment once, never a query or provider secret.\nif(local&&location.hash.startsWith('#session=')){token=decodeURIComponent(location.hash.slice(9));localStorage.setItem(localSessionKey,token);history.replaceState(null,'',location.pathname);}\nlet selected='overview', connected=false, hostedOnline=embedded, busy=false, witnessActivityBusy=false, state={jobs:[],steps:{},providers:{},witness:null,witnessActivity:{ok:false,status:'connecting',active:null,runs:[]}}, notice='', lastRefresh=0;\nconst pending=new Map();\nconst escape=value=>String(value??'').replace(/[&<>\"']/g,c=>({'&':'&amp;','<':'&lt;','>':'&gt;','\"':'&quot;',\"'\":'&#39;'}[c]));\nwindow.addEventListener('message',event=>{if(event.source!==parent||event.origin!==location.origin||event.data?.type!=='kl-console-result')return;const entry=pending.get(event.data.id);if(!entry)return;pending.delete(event.data.id);clearTimeout(entry.timer);event.data.error?entry.reject(new Error(event.data.error)):entry.resolve(event.data.data);});\nfunction bridge(action,payload={}){return new Promise((resolve,reject)=>{const id=crypto.randomUUID(),timer=setTimeout(()=>{pending.delete(id);reject(new Error('Provider request timed out. Retry.'));},30000);pending.set(id,{resolve,reject,timer});parent.postMessage({type:'kl-console-request',id,action,payload},location.origin);});}\nasync function api(path,body){const response=await fetch((local?'':'http://127.0.0.1:47831')+path,{method:body?'POST':'GET',headers:{Authorization:'Bearer '+token,...(body?{'Content-Type':'application/json'}:{})},...(body?{body:JSON.stringify(body)}:{}),signal:AbortSignal.timeout(15000)});const data=await response.json();if(!response.ok)throw new Error(data.error||'Console request failed');return data;}\nasync function fetchWitnessHealth(){try{return await bridge('witness');}catch(error){return {ok:false,status:'unavailable',witnessHealthy:false,witnessActive:false,activeJobs:0,error:error instanceof Error?error.message:'Witness health unavailable'};}}\nasync function fetchWitnessActivity(){try{return await bridge('witness-activity');}catch(error){return {ok:false,status:'unavailable',active:null,runs:[],error:error instanceof Error?error.message:'Witness activity unavailable'};}}\nfunction witnessActivityMarkup(){const feed=state.witnessActivity||{},runs=Array.isArray(feed.runs)?feed.runs:[];if(!runs.length)return `<div class=\"empty-state\"><b>Witness is ${escape(feed.status||'ready')}.</b><span>New Laptop witness runs will appear here automatically.</span></div>`;return `<div class=\"witness-activity-list\">${runs.map(run=>`<article class=\"witness-activity-item ${run.terminal?'complete':'live-run'}\"><div><span class=\"live-kicker\">${run.terminal?'COMPLETE':'LIVE'}</span><b>${escape(run.currentRoute||'Witness run')}</b><span>${escape(run.currentViewport||'viewport pending')} · ${escape((run.phase||run.status||'working').replaceAll('_',' '))}</span></div><time>${escape(new Date(run.lastProgressAt||run.completedAt||run.startedAt||run.createdAt||Date.now()).toLocaleTimeString())}</time>${run.ownerComments?.length?`<small>${run.ownerComments.length} owner comment${run.ownerComments.length===1?'':'s'}</small>`:''}</article>`).join('')}</div>`;}\nasync function refreshWitnessActivity(){if(!embedded||witnessActivityBusy)return;witnessActivityBusy=true;try{const data=await fetchWitnessActivity();state.witnessActivity=data;if(data?.ok){state.witness={...(state.witness||{}),ok:true,status:data.status||state.witness?.status||'ready',activeJobs:Number(data.activeJobs||0),witnessActive:Boolean(data.active)}}const tag=document.activeElement?.tagName;if(!['INPUT','TEXTAREA','SELECT'].includes(tag))render();}catch{}finally{witnessActivityBusy=false;}}\nfunction forgejoRunners(){return state.providers.forgejo?.sections?.Runners?.data?.runners||state.providers.forgejo?.runners||[];}\nfunction namedRunner(name){return forgejoRunners().find(item=>item?.name===name)||null;}\nfunction runnerOnline(item){return Boolean(item&&String(item.status||'').toLowerCase()!=='offline');}\nfunction providerOnline(name){const item=state.providers[name];if(!item)return false;return !['failed','error','unavailable','offline'].includes(String(item.status||'').toLowerCase());}\nfunction systemStatus(){const desktop=namedRunner('msi-local'),laptopRunner=namedRunner('laptop-local'),witness=state.witness||{};const laptopOnline=witness.ok===true||runnerOnline(laptopRunner);return {desktop:{online:runnerOnline(desktop),busy:Boolean(desktop?.busy),status:desktop?.status||'connecting',slots:desktop?.executionSlots||desktop?.guaranteedAvailableSlots||null},laptop:{online:laptopOnline,witnessReady:witness.ok===true&&['ready','live'].includes(String(witness.status||'').toLowerCase()),witnessActive:Boolean(witness.activeJobs||witness.witnessActive),status:witness.status||laptopRunner?.status||'connecting',runnerOnline:runnerOnline(laptopRunner)},services:{online:['cloudflare','supabase','forgejo'].filter(providerOnline).length,total:3},lastRefresh};}\nfunction statusClass(ok){return ok?'live':'failed';}\nfunction technicalDetails(title,data){return `<details class=\"technical-details\"><summary>${escape(title)}</summary><pre class=\"logs\">${escape(JSON.stringify(data??null,null,2))}</pre></details>`;}\nfunction serviceCard(name,label){const data=state.providers[name],online=providerOnline(name);return `<section class=\"panel service-card\"><div class=\"provider-head\"><div><div class=\"eyebrow\">${escape(label)}</div><h3>${online?'Connected':'Checking connection'}</h3></div><span class=\"status-dot-wrap\"><span class=\"status-dot ${online?'on':'off'}\"></span>${online?'Live':'Degraded'}</span></div><p class=\"muted\">${data?.summary?Object.entries(data.summary).slice(0,2).map(([k,v])=>`${escape(k)}: ${escape(v??'—')}`).join(' · '):'KNOCKLAUNCH is reading this service through your signed-in owner session.'}</p>${technicalDetails('Technical details',data)}</section>`;}\nfunction machineCards(){const desktop=namedRunner('msi-local'),laptopRunner=namedRunner('laptop-local'),sys=systemStatus(),witness=state.witness||{},others=forgejoRunners().filter(item=>!['msi-local','laptop-local'].includes(item?.name));return `<div class=\"machine-grid\"><section class=\"machine-card primary\"><div class=\"machine-card-head\"><div><div class=\"eyebrow\">DESKTOP</div><h2>Primary Build Runner</h2></div><span class=\"status-dot-wrap\"><span class=\"status-dot ${sys.desktop.online?'on':'off'}\"></span>${sys.desktop.online?(sys.desktop.busy?'Busy':'Online'):'Offline'}</span></div><p class=\"machine-purpose\">Builds, Gate work and CI jobs belong here.</p><div class=\"mini-metrics\"><div><span>Runner</span><b>msi-local</b></div><div><span>State</span><b>${escape(desktop?.status||'Connecting')}</b></div><div><span>Slots</span><b>${escape(desktop?.executionSlots??desktop?.guaranteedAvailableSlots??'—')}</b></div></div></section><section class=\"machine-card witness\"><div class=\"machine-card-head\"><div><div class=\"eyebrow\">LAPTOP</div><h2>Interactive Witness</h2></div><span class=\"status-dot-wrap\"><span class=\"status-dot ${sys.laptop.online?'on':'off'}\"></span>${sys.laptop.witnessActive?'Witnessing':sys.laptop.online?'Ready':'Offline'}</span></div><p class=\"machine-purpose\">Authenticated visual inspection and interactive page proof.</p><div class=\"mini-metrics\"><div><span>Witness</span><b>${escape(witness.status||'Connecting')}</b></div><div><span>Health</span><b>${witness.witnessHealthy===false?'Attention':witness.ok===true?'Healthy':sys.laptop.runnerOnline?'Runner online':'Checking'}</b></div><div><span>Runner</span><b>${escape(laptopRunner?.status||'Secondary')}</b></div></div></section></div>${others.length?`<details class=\"panel infrastructure\"><summary>Fallback infrastructure · ${others.length} available</summary><div class=\"runner-list\">${others.map(r=>`<div><b>${escape(r.name)}</b><span class=\"pill ${runnerOnline(r)?'live':'failed'}\">${escape(r.status||'unknown')}</span></div>`).join('')}</div></details>`:''}`;}\nfunction renderHosted(){const stage=stages.find(item=>item.id===selected)||stages[0],sys=systemStatus(),updated=lastRefresh?new Date(lastRefresh).toLocaleTimeString():'Connecting';let body='';if(selected==='machines')body=`${machineCards()}<div class=\"quick-row\"><button data-run=\"forgejo\">Refresh machines</button><button data-run=\"runner-proof\">Run Desktop proof</button></div>`;else if(selected==='release')body=`<section class=\"panel release-hero\"><div><div class=\"eyebrow\">CANONICAL RELEASE</div><h2>One path from code to live.</h2><p class=\"muted\">The Console shows the pipeline. Gate and release machinery do the technical work underneath.</p></div><div class=\"release-flow\"><div><b>1</b><span>Code</span></div><i>→</i><div><b>2</b><span>Gate</span></div><i>→</i><div><b>3</b><span>Candidate</span></div><i>→</i><div><b>4</b><span>Live</span></div></div></section><div class=\"service-grid\">${serviceCard('forgejo','BUILD & GATE')}${serviceCard('cloudflare','LIVE RELEASE')}</div>`;else if(selected==='services')body=`<div class=\"service-grid three\">${serviceCard('cloudflare','CLOUDFLARE')}${serviceCard('supabase','SUPABASE')}${serviceCard('forgejo','FORGEJO')}</div>`;else if(selected==='activity')body=`<section class=\"panel activity-panel\"><div class=\"provider-head\"><div><div class=\"eyebrow\">LIVE WITNESS + RECENT WORK</div><h2>Activity</h2></div><span class=\"muted small\">Updated ${escape(updated)}</span></div>${witnessActivityMarkup()}${technicalDetails('Forgejo activity details',state.providers.forgejo)}</section>`;else body=machineCards();app.innerHTML=`<div class=\"console-frame\"><header class=\"console-header\"><div><div class=\"eyebrow\">KNOCKLAUNCH CONSOLE</div><h1>${escape(stage.name)}</h1><p>${escape(stage.description)}</p></div><div class=\"connection-strip\"><span class=\"${statusClass(sys.desktop.online)}\"><i></i>Desktop ${sys.desktop.online?'online':'offline'}</span><span class=\"${statusClass(sys.laptop.online)}\"><i></i>Laptop ${sys.laptop.witnessActive?'witnessing':sys.laptop.online?'ready':'offline'}</span><span class=\"${sys.services.online===sys.services.total?'live':'waiting'}\"><i></i>Services ${sys.services.online}/${sys.services.total}</span><button id=\"refresh\">Refresh</button></div></header><nav class=\"console-nav\" aria-label=\"Console navigation\">${stages.map(item=>`<button data-stage=\"${item.id}\" aria-current=\"${selected===item.id?'page':'false'}\">${escape(item.name)}</button>`).join('')}</nav><main class=\"console-main\">${notice?`<div class=\"notice\">${escape(notice)}</div>`:''}${body}</main></div>`;app.querySelectorAll('[data-stage]').forEach(button=>button.onclick=()=>{selected=button.dataset.stage;render();});app.querySelectorAll('[data-run]').forEach(button=>button.onclick=()=>run(button.dataset.run));const refreshButton=app.querySelector('#refresh');if(refreshButton)refreshButton.onclick=()=>refresh({deep:true});}\nasync function refresh(options={}){if(busy)return;busy=true;const deep=options.deep!==false;try{if(embedded){hostedOnline=true;const tasks=[['forgejo',bridge('forgejo')],['witness',fetchWitnessHealth()],['witnessActivity',fetchWitnessActivity()]];if(deep||!state.providers.cloudflare)tasks.push(['cloudflare',bridge('cloudflare')]);if(deep||!state.providers.supabase)tasks.push(['supabase',bridge('supabase')]);const settled=await Promise.all(tasks.map(async([key,promise])=>[key,await promise]));for(const [key,data] of settled){if(key==='witness')state.witness=data;else if(key==='witnessActivity')state.witnessActivity=data;else state.providers[key]=data;}if(!state.witness?.ok){const fallback=namedRunner('laptop-local');if(fallback)state.witness={ok:fallback.status!=='offline',status:fallback.status==='offline'?'unavailable':'runner-online',fallback:true,witnessHealthy:null,activeJobs:0};}lastRefresh=Date.now();notice='';return;}const data=await api('/api/state');state={...data,providers:{...state.providers,...data.providers}};connected=true;lastRefresh=Date.now();notice='';}catch(error){if(!embedded)connected=false;notice=error instanceof Error?error.message:'Some live systems could not refresh.';}finally{busy=false;if(document.activeElement?.tagName!=='INPUT')render();}}\nasync function run(id){notice='';try{if(['cloudflare','supabase','forgejo','runner-proof'].includes(id)&&!connected&&embedded){state.steps[id]={status:'running',startedAt:new Date().toISOString()};render();const data=await bridge(id);state.providers[id]=data;state.steps[id]={status:data.status==='unavailable'?'failed':'passed',endedAt:new Date().toISOString()};render();return;}\n if(!connected)throw new Error('Connect the MSI Console to run local steps.');\n let confirmation,registrationToken;\n if(id==='runner-register'){registrationToken=app.querySelector('#runner-registration-token')?.value.trim()||'';if(!registrationToken)throw new Error('Paste the repository runner registration token first.');}\n if(['candidate','promote','runner-stop','runner-restart','git-pull'].includes(id)){const source=state.release?.sourceSha||state.sourceSha||'current working copy';if(!confirm(actions[id].name+'\\n\\nTarget: '+source+'\\n\\nContinue?'))return;confirmation=state.release?.confirmation||source;}\n await api('/api/run',{action:id,confirmation,stage:selected,...(registrationToken?{registrationToken}:{})});if(registrationToken){const input=app.querySelector('#runner-registration-token');if(input)input.value='';registrationToken='';}await refresh();\n }catch(error){notice=error.message;if(state.steps[id]?.status==='running')state.steps[id]={status:'failed',error:error.message};render();}}\nfunction providerCard(name){const data=state.providers[name];if(!data)return `<section class=\"panel\"><h3>${escape(name)}</h3><p class=\"muted\">No provider observation yet.</p><button data-run=\"${name}\">Load live state</button></section>`;const stale=Date.now()-Date.parse(data.observedAt)>90000;const status=stale?'stale':data.status;return `<section class=\"panel\"><div class=\"provider-head\"><h3>${escape(name)}</h3><span class=\"pill ${escape(status)}\">${escape(status)}</span></div><p class=\"muted small\">Observed ${escape(new Date(data.observedAt).toLocaleString())}</p>${data.error?`<p class=\"error\">${escape(data.error)}</p>`:''}<div class=\"metrics\">${Object.entries(data.summary||{}).map(([key,value])=>`<div class=\"metric\"><span class=\"muted\">${escape(key)}</span><b>${escape(value??'Unknown')}</b></div>`).join('')}</div>${Object.entries(data.sections||{}).map(([key,section])=>`<details><summary>${escape(key)} · ${escape(section.status)}</summary>${section.error?`<p class=\"error\">${escape(section.error)}</p>`:''}<pre class=\"logs\">${escape(JSON.stringify(section.data??null,null,2))}</pre></details>`).join('')}</section>`;}\nfunction runnerCard(){const localRunner=state.runner||{},runners=state.providers.forgejo?.sections?.Runners?.data?.runners||[],remote=runners.find(item=>item?.name==='msi-local'),remoteReady=remote?remote.status!=='offline':null,primaryReady=embedded?remoteReady:localRunner.serviceActive;const item=(label,ok,text)=>`<div class=\"metric\"><span class=\"muted\">${escape(label)}</span><b>${escape(text)}</b><span class=\"pill ${ok===true?'live':ok===false?'failed':'waiting'}\">${ok===true?'ready':ok===false?'attention':'unknown'}</span></div>`;return `<section class=\"panel\"><div class=\"provider-head\"><h3>MSI runner status</h3><span class=\"pill ${primaryReady?'live':'failed'}\">${primaryReady?'online':'offline'}</span></div><div class=\"metrics\">${item('Local service',localRunner.serviceActive,localRunner.serviceActive?'Running':'Stopped')}${item('Autostart',localRunner.autostartEnabled,localRunner.autostartEnabled?'Enabled':'Disabled')}${item('Windows keepalive',localRunner.keepalivePresent?localRunner.keepaliveRunning&&localRunner.keepaliveEnabled:false,localRunner.keepalivePresent?(localRunner.keepaliveRunning?'Running':'Stopped'):'Missing')}${item('Forgejo msi-local',remoteReady,remote?`${remote.status}${remote.busy?' · busy':''}`:'Load Forgejo state')}</div><p class=\"muted small\">${localRunner.observedAt?'Local state checked '+escape(new Date(localRunner.observedAt).toLocaleTimeString()):'Waiting for MSI state.'}</p>${remote?'<button data-run=\"forgejo\">Refresh Forgejo</button>':'<button data-run=\"forgejo\">Load Forgejo state</button>'}</section>`;}\nfunction render(){if(selected==='overview'){mountOperator(app,{bridge:embedded?bridge:async()=>{throw new Error('Open the signed-in Console at app.knocklaunch.app/admin/console to chat.');},hostedOnline:()=>hostedOnline,localConnected:()=>embedded||connected,systemStatus,witnessActivity:()=>state.witnessActivity,commentWitness:payload=>bridge('witness-comment',payload),refreshWitnessActivity,connectLocal:local?async code=>{const next=String(code||'').trim();if(!next)throw new Error('Local Console session unavailable.');token=next;localStorage.setItem(localSessionKey,token);await refresh();return true;}:null,stages,onStage:id=>{selected=id;render();}});return;}if(embedded){renderHosted();return;}const stage=stages.find(x=>x.id===selected),running=state.jobs.find(x=>x.status==='running');app.innerHTML=`<header><div class=\"top\"><div><div class=\"eyebrow\">MISSION FREEDOM</div><h1>KNOCKLAUNCH CONSOLE</h1></div><div class=\"row\">${embedded?`<span class=\"pill ${hostedOnline?'live':'unavailable'}\">Hosted ${hostedOnline?'online':'unavailable'}</span>`:''}<span class=\"pill ${connected?'live':'waiting'}\">MSI ${connected?'paired':embedded?'not paired':'disconnected'}</span><button id=\"refresh\">Refresh</button></div></div></header><div class=\"layout\"><nav aria-label=\"Console stages\">${stages.map((item,i)=>`<button data-stage=\"${item.id}\" aria-current=\"${selected===item.id?'step':'false'}\"><b>${i+1}</b>${item.name}</button>`).join('')}</nav><main><div class=\"headline\"><div class=\"eyebrow\">STAGE ${stages.indexOf(stage)+1} OF ${stages.length}</div><h2>${stage.name}</h2><div class=\"muted\">${stage.description}</div></div>${notice?`<p role=\"alert\" class=\"notice error\">${escape(notice)}</p>`:''}${connected?`<details class=\"panel\"><summary>Connection settings</summary><p class=\"muted\">Saved only on this computer. Leave a field empty to keep its existing value.</p><form id=\"settings\"><div class=\"metrics\">${[\"CLOUDFLARE_API_TOKEN\",\"CLOUDFLARE_ACCOUNT_ID\",\"SUPABASE_ACCESS_TOKEN\",\"SUPABASE_PROJECT_REF\",\"FORGEJO_TOKEN\",\"RUNNER_SERVICE\"].map(key=>`<label class=\"muted\">${key.replaceAll(\"_\",\" \")}<input name=\"${key}\" type=\"${/TOKEN/.test(key)?\"password\":\"text\"}\" autocomplete=\"off\" placeholder=\"${state.settings?.[key]?\"Configured\":\"Not configured\"}\" style=\"width:100%;margin-top:6px\"></label>`).join(\"\")}</div><div class=\"actions\"><button type=\"submit\">Save settings</button></div></form></details>`:\"\"}${!connected?`<section class=\"panel\"><h3>Connect your MSI</h3><p class=\"muted\">Open “KNOCKLAUNCH Console” on the MSI. Copy its pairing code below. Local commands run on that computer; provider views remain available in GodMode.</p><div class=\"connect\"><input id=\"pair\" type=\"password\" autocomplete=\"off\" placeholder=\"Local Console pairing code\" aria-label=\"Local Console pairing code\"><button id=\"connect\">Connect</button></div><p class=\"muted\">This browser stays paired to this MSI. Re-pair only if browser storage is cleared or the machine pairing is reset.${local?'':' Your browser may ask to allow access to devices on your local network.'}</p></section>`:''}<div class=\"panels\"><section class=\"panel\"><div class=\"provider-head\"><h3>Steps</h3><span class=\"muted\">${running?'Running: '+escape(actions[running.action]?.name||running.action):'Choose the next step'}</span></div>${stage.steps.map(([id,name,description],index)=>{const step=state.steps[id]||{},status=step.status||'waiting';const allowed=connected||embedded&&['cloudflare','supabase','forgejo','runner-proof'].includes(id);return `<div class=\"step\"><span class=\"number\">${index+1}</span><div><strong>${name}</strong><p class=\"muted\">${description}</p><span class=\"pill ${escape(status)}\">${escape(status)}</span>${step.startedAt?` <span class=\"muted small\">${escape(new Date(step.startedAt).toLocaleTimeString())}${step.durationMs!=null?' · '+Math.round(step.durationMs/1000)+'s':''}</span>`:''}${step.error?`<p class=\"error\">${escape(step.error)}</p>`:''}${id==='runner-register'&&connected?`<input id=\"runner-registration-token\" type=\"password\" autocomplete=\"off\" spellcheck=\"false\" aria-label=\"Repository runner registration token\" placeholder=\"Paste repository runner token\" style=\"width:100%;margin-top:8px\">`:''}</div><button data-run=\"${id}\" ${!allowed||running?'disabled':''}>${id==='runner-register'?'Register':status==='failed'?'Retry':'Run'}</button></div>`}).join('')}</section><aside>${selected==='runner'?runnerCard():['cloudflare','supabase','health'].includes(selected)?providerCard(selected==='health'?'cloudflare':selected):`<section class=\"panel\"><h3>Current release</h3><p class=\"muted\">Source</p><code>${escape(state.release?.sourceSha||state.sourceSha||'Not prepared')}</code><p class=\"muted\">Candidate</p><code>${escape(state.release?.candidateVersionId||'Not created')}</code><p class=\"muted\">${escape(state.release?.state||'Prepare a release to begin.')}</p></section>${providerCard('cloudflare')}`}${selected==='health'?providerCard('supabase'):''}</aside><section class=\"panel full\"><div class=\"provider-head\"><h3>Command output</h3><span class=\"muted small\">${lastRefresh?'Updated '+escape(new Date(lastRefresh).toLocaleTimeString()):'Awaiting connection'}</span></div>${state.jobs.length?state.jobs.slice(0,8).map((job,index)=>`<details ${index===0?'open':''}><summary>${escape(actions[job.action]?.name||job.action)} · ${escape(job.status)} · ${escape(new Date(job.startedAt).toLocaleTimeString())}</summary><pre class=\"logs\">${escape(job.output||job.error||'Waiting for output…')}</pre></details>`).join(''):'<p class=\"muted\">Run a step to see its output here.</p>'}</section></div></main></div>`;\napp.querySelectorAll('[data-stage]').forEach(button=>button.onclick=()=>{selected=button.dataset.stage;render();});app.querySelectorAll('[data-run]').forEach(button=>button.onclick=()=>run(button.dataset.run));const settings=app.querySelector('#settings');if(settings)settings.onsubmit=async event=>{event.preventDefault();try{await api('/api/settings',Object.fromEntries(new FormData(settings)));notice='Settings saved.';settings.reset();await refresh();}catch(error){notice=error.message;render();}};app.querySelector('#refresh').onclick=refresh;const connect=app.querySelector('#connect');if(connect)connect.onclick=()=>{token=app.querySelector('#pair').value.trim();localStorage.setItem(localSessionKey,token);refresh();};}\nrender();if(embedded||local||token)refresh({deep:true});setInterval(()=>{if(!document.hidden&&(embedded||connected||local))refresh({deep:false});},30000);setInterval(()=>{if(!document.hidden&&embedded)refreshWitnessActivity();},3000);\n"},{"path":"public/console/console.css","content":":root{color-scheme:dark;font-family:Inter,Segoe UI,system-ui,sans-serif;background:#06100d;color:#e8f5ef;font-size:15px}*{box-sizing:border-box}body{margin:0}button,input{font:inherit}button{cursor:pointer;border:1px solid #315a49;background:#122c22;color:#e4fff1;padding:.65rem .9rem;border-radius:9px;font-weight:600}button:hover{background:#204734}button:disabled{opacity:.45;cursor:not-allowed}input{background:#071a12;border:1px solid #315a49;padding:.7rem;color:white;border-radius:8px;min-width:0}a{color:#79e5af}header{position:sticky;top:0;z-index:5;background:#081610;border-bottom:1px solid #284637;padding:16px 22px}h1{font-size:21px;letter-spacing:.035em;margin:4px 0}h2{font-size:23px;margin:0 0 8px}h3{font-size:16px;margin:0 0 12px}p{line-height:1.5}.eyebrow{color:#74d8a9;font-size:10px;letter-spacing:.18em;font-weight:700}.muted{color:#9cb7a9;font-size:13px}.top,.row{display:flex;align-items:center;gap:12px;justify-content:space-between}.top{flex-wrap:wrap}.layout{display:grid;grid-template-columns:210px minmax(0,1fr);min-height:calc(100vh - 85px)}nav{padding:16px;border-right:1px solid #243f32}nav button{display:flex;align-items:center;gap:12px;width:100%;text-align:left;margin-bottom:6px;border-color:transparent;background:transparent;font-size:14px}nav button[aria-current=step]{background:#163b29;border-color:#428968}nav b{display:grid;place-items:center;width:25px;height:25px;border:1px solid #426a55;border-radius:7px}main{padding:22px;min-width:0;max-width:1500px;width:100%;margin:0 auto}.panels{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(280px,1fr);gap:16px}.panel{background:#0b1b14;border:1px solid #254a37;border-radius:12px;padding:17px;margin-bottom:16px}.step{display:grid;grid-template-columns:30px minmax(0,1fr) auto;gap:10px;align-items:center;padding:13px 0;border-bottom:1px solid #203e2e}.step:last-child{border:0}.step p{margin:4px 0}.step .number{color:#72daa7;font-weight:700}.pill{font-size:10px;font-weight:700;text-transform:uppercase;padding:5px 8px;border-radius:6px;background:#263a30;white-space:nowrap}.passed,.live{background:#154a30;color:#89f0b8}.failed,.blocked,.unavailable{background:#4b391b;color:#ffd591}.running{background:#16453c;color:#9ff6de}.waiting,.stale{color:#a5b9af}.error{color:#ffd591;overflow-wrap:anywhere;font-size:13px}.logs{white-space:pre-wrap;overflow-wrap:anywhere;max-height:260px;overflow:auto;background:#030a06;padding:14px;font:12px/1.65 Consolas,monospace;border-radius:8px}.metrics{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.metric{padding:12px;background:#10271a;border:1px solid #254d35;border-radius:8px;overflow-wrap:anywhere}.metric b{display:block;font-size:20px;margin-top:5px}details{margin-top:12px}summary{cursor:pointer;color:#a4dabb;font-size:13px}table{width:100%;border-collapse:collapse;font-size:12px}td,th{text-align:left;padding:8px;border-bottom:1px solid #284436;overflow-wrap:anywhere}.scroll{overflow:auto;max-height:300px}.connect{display:flex;gap:8px;flex-wrap:wrap}.connect input{flex:1}.actions{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0}.notice{border-left:3px solid #65c18d;padding:10px 14px;background:#142d20}.headline{margin-bottom:18px}.full{grid-column:1/-1}.small{font-size:11px}.provider-head{display:flex;gap:8px;align-items:center;justify-content:space-between;margin-bottom:12px}@media(max-width:900px){.panels{grid-template-columns:1fr}.layout{grid-template-columns:1fr}nav{display:flex;overflow:auto;position:sticky;top:83px;z-index:4;background:#091a12;padding:8px;border-bottom:1px solid #243f32}nav button{width:auto;white-space:nowrap;margin:0;padding:8px}nav b{width:20px;height:20px}main{padding:12px}.panel{padding:13px}header{padding:12px}.step{grid-template-columns:24px minmax(0,1fr) auto}.top .muted{display:none}}\n\n.operator-grid{display:grid;grid-template-columns:minmax(300px,.85fr) minmax(0,1.4fr);gap:16px;align-items:start}.operator-chat{display:flex;flex-direction:column;min-height:560px}.operator-messages{flex:1;min-height:200px;max-height:48vh;overflow:auto}.operator-message{padding:12px;margin:8px 0;border-radius:10px;background:#102a1e;overflow-wrap:anywhere}.operator-message.user{background:#194333;margin-left:24px}.operator-message strong{font-size:11px;color:#8ce1b4}.operator-message p{white-space:pre-wrap;margin:5px 0}.operator-chat textarea{width:100%;resize:vertical;min-height:80px;border:1px solid #438563;border-radius:10px;background:#06140c;color:#effff5;padding:12px;font:inherit}.operator-compose-actions{display:flex;justify-content:space-between;gap:8px;align-items:center;margin-top:8px}.operator-context{display:grid;gap:8px;margin:12px 0}.operator-context label{display:grid;gap:5px;font-size:12px}.operator-image{background:#030905;min-height:220px;border-radius:9px;text-align:center;padding:10px;overflow:auto;max-height:65vh}.operator-image img{max-width:100%;height:auto;display:block;margin:auto}.operator-image.mobile img{max-width:min(100%,390px)}.operator-route{overflow-wrap:anywhere}.operator-witness h2,.operator-chat h2{font-size:18px}.operator-witness .actions{margin:0;gap:4px}.operator-witness [aria-pressed=true]{background:#286346;border-color:#79e5af}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}@media(max-width:1050px){.operator-grid{grid-template-columns:1fr}.operator-chat{min-height:0}.operator-messages{max-height:32vh;min-height:100px}.operator-image{max-height:60vh}.operator-main{padding:10px}.operator-witness .provider-head{flex-wrap:wrap}.operator-chat .provider-head{align-items:start}.operator-chat h2{font-size:17px}}\n\n/* Live Witness Control Room */\n.witness-live-label{color:#9ff0c5;letter-spacing:.12em}.live-commentary-feed{display:grid;gap:7px;margin:10px 0;padding:10px;border:1px solid rgba(120,230,173,.14);border-radius:12px;background:rgba(4,19,11,.72)}.live-comment{display:grid;grid-template-columns:auto 1fr;gap:9px;align-items:start;font-size:12px}.live-comment time{color:var(--kl-muted);font-variant-numeric:tabular-nums}.live-comment span{overflow-wrap:anywhere}.witness-activity-list{display:grid;gap:8px}.witness-activity-item{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:12px;align-items:center;padding:12px;border:1px solid var(--kl-line);border-radius:13px;background:rgba(255,255,255,.02)}.witness-activity-item>div{display:grid;gap:2px}.witness-activity-item>div>span:not(.live-kicker){font-size:11px;color:var(--kl-muted)}.witness-activity-item time,.witness-activity-item small{font-size:11px;color:var(--kl-muted);white-space:nowrap}.live-kicker{font-size:10px;font-weight:800;letter-spacing:.13em;color:#9ff0c5}.witness-activity-item.live-run{border-color:rgba(120,230,173,.34);box-shadow:0 0 24px rgba(69,199,128,.08)}@media(max-width:700px){.witness-activity-item{grid-template-columns:1fr auto}.witness-activity-item small{grid-column:1/-1}.live-commentary-feed{padding:8px}.live-comment{grid-template-columns:1fr;gap:2px}}\n\n/* Operator witness-first layout */\n.layout:has(.operator-main){grid-template-columns:1fr}\n.layout:has(.operator-main)>nav{display:flex;gap:6px;overflow-x:auto;position:sticky;top:76px;z-index:4;background:#081610;border-right:0;border-bottom:1px solid #243f32;padding:8px 14px}\n.layout:has(.operator-main)>nav button{width:auto;white-space:nowrap;margin:0;padding:.45rem .65rem;font-size:12px;flex:0 0 auto}\n.layout:has(.operator-main)>nav b{width:20px;height:20px;border-radius:6px;font-size:11px}\n.operator-main{max-width:1800px;padding:14px 16px 20px}\n.operator-pairing{padding:10px 12px;margin-bottom:10px}\n.operator-pairing .provider-head{margin:0;gap:14px}\n.operator-pairing h3{margin:0 0 2px}\n.operator-pairing p{margin:0;line-height:1.35}\n.operator-pairing .connect{min-width:min(100%,390px);flex-wrap:nowrap}\n.operator-pairing .connect input{min-width:180px}\n.operator-grid{grid-template-columns:minmax(290px,.55fr) minmax(620px,1.8fr);gap:12px;align-items:stretch}\n.operator-chat{min-height:calc(100dvh - 225px);margin-bottom:0}\n.operator-messages{max-height:36vh}\n.operator-witness{min-height:calc(100dvh - 225px);margin-bottom:0;display:flex;flex-direction:column}\n.operator-witness>.provider-head{margin-bottom:8px}\n.operator-image{flex:1;min-height:500px;max-height:calc(100dvh - 365px);display:flex;flex-direction:column;align-items:center;justify-content:flex-start;padding:14px}\n.operator-image>a{display:flex;width:100%;justify-content:center}\n.operator-image img{max-height:calc(100dvh - 420px);object-fit:contain}\n.operator-image.mobile img{max-width:min(100%,430px);width:auto}\n.operator-witness>details{margin-top:8px}\n@media(max-width:1050px){.operator-grid{grid-template-columns:1fr}.operator-witness{order:1;min-height:0}.operator-chat{order:2;min-height:0}.operator-image{min-height:420px;max-height:none}.operator-image img{max-height:none}.operator-pairing .provider-head{align-items:flex-start;flex-wrap:wrap}.operator-pairing .connect{width:100%}}\n@media(max-width:700px){.layout:has(.operator-main)>nav{top:70px;padding:6px 8px}.operator-main{padding:8px}.operator-image{min-height:360px;padding:8px}.operator-pairing .connect{flex-wrap:wrap}.operator-pairing .connect button{width:100%}}\n\n/* Console owner experience v3 */\n:root{--kl-line:rgba(111,231,171,.16);--kl-muted:#94ad9f;--kl-green:#78e6ad;--kl-warn:#f2c66f;background:radial-gradient(circle at 72% -10%,rgba(53,185,117,.15),transparent 34%),linear-gradient(180deg,#06110c 0%,#040906 100%)}body{min-height:100vh;background:transparent}.console-header{position:sticky;top:0;z-index:8;display:flex;align-items:center;justify-content:space-between;gap:20px;padding:18px 22px;background:rgba(5,13,9,.9);backdrop-filter:blur(18px);border-bottom:1px solid var(--kl-line)}.console-header p{margin:0;color:var(--kl-muted);font-size:13px}.connection-strip{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}.connection-strip>span{display:inline-flex;align-items:center;gap:7px;padding:7px 10px;border:1px solid var(--kl-line);border-radius:999px;background:rgba(255,255,255,.025);font-size:11px;font-weight:700;color:var(--kl-muted)}.connection-strip>span.live{color:#a8f4c9}.connection-strip i,.status-dot{width:7px;height:7px;border-radius:50%;background:#6b7f74}.connection-strip .live i,.status-dot.on{background:var(--kl-green);box-shadow:0 0 14px rgba(120,230,173,.5)}.status-dot.off{background:var(--kl-warn)}.console-nav,.layout:has(.operator-main)>.console-nav{position:sticky;top:83px;z-index:7;display:flex;gap:5px;overflow-x:auto;padding:8px 18px;background:rgba(7,18,12,.94);backdrop-filter:blur(14px);border:0;border-bottom:1px solid var(--kl-line)}.console-nav button,.layout:has(.operator-main)>.console-nav button{flex:0 0 auto;width:auto;margin:0;padding:8px 13px;border-radius:999px;border:1px solid transparent;background:transparent;color:var(--kl-muted);font-size:12px}.console-nav button[aria-current=page],.layout:has(.operator-main)>.console-nav button[aria-current=page]{color:#eafff3;background:rgba(71,190,126,.2);border-color:rgba(120,230,173,.26)}.console-main,.operator-main{max-width:1720px;margin:0 auto;padding:16px 18px 28px}.panel,.machine-card{background:linear-gradient(160deg,rgba(17,39,28,.92),rgba(8,20,14,.9));border:1px solid var(--kl-line);border-radius:18px;box-shadow:0 18px 50px rgba(0,0,0,.2)}.machine-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-bottom:14px}.machine-card{padding:20px}.machine-card-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.machine-card h2{font-size:22px;margin:5px 0}.machine-purpose{color:var(--kl-muted)}.status-dot-wrap{display:inline-flex;align-items:center;gap:8px;font-size:11px;font-weight:700}.mini-metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:20px}.mini-metrics>div{padding:11px;border:1px solid rgba(120,230,173,.12);border-radius:12px;background:rgba(0,0,0,.12)}.mini-metrics span{display:block;color:var(--kl-muted);font-size:10px;text-transform:uppercase}.mini-metrics b{display:block;margin-top:5px;font-size:14px}.service-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.service-grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.technical-details{margin-top:16px;border-top:1px solid var(--kl-line);padding-top:12px}.release-hero{display:grid;grid-template-columns:minmax(260px,.8fr) minmax(520px,1.4fr);gap:26px;align-items:center;padding:24px;margin-bottom:14px}.release-flow{display:grid;grid-template-columns:repeat(7,auto);align-items:center;justify-content:center;gap:12px}.release-flow>div{display:grid;place-items:center;gap:7px}.release-flow b{display:grid;place-items:center;width:42px;height:42px;border-radius:14px;background:rgba(69,199,128,.22);border:1px solid rgba(120,230,173,.32)}.runner-list>div{display:flex;align-items:center;justify-content:space-between;padding:9px 0;border-bottom:1px solid var(--kl-line)}.quick-row{display:flex;gap:8px;flex-wrap:wrap}.operator-grid{grid-template-columns:minmax(330px,.62fr) minmax(680px,1.65fr);gap:14px}.operator-chat,.operator-witness{border-radius:18px}.operator-image{background:linear-gradient(180deg,rgba(1,7,4,.94),rgba(4,13,8,.96));border:1px solid rgba(120,230,173,.11);border-radius:14px}@media(max-width:1100px){.machine-grid,.service-grid,.service-grid.three{grid-template-columns:1fr}.release-hero{grid-template-columns:1fr}.operator-grid{grid-template-columns:1fr}.operator-witness{order:1}.operator-chat{order:2}}@media(max-width:700px){.console-header{padding:12px;align-items:flex-start}.console-header p{display:none}.connection-strip{gap:5px}.connection-strip>span{padding:6px 8px;font-size:10px}.console-header #refresh{display:none}.console-nav,.layout:has(.operator-main)>.console-nav{top:68px;padding:6px 8px}.console-main,.operator-main{padding:8px}.machine-card{padding:15px}.mini-metrics{grid-template-columns:repeat(3,minmax(85px,1fr));overflow-x:auto}.operator-image{min-height:350px}}\n\n/* Live Witness Overview v3.4 */\n.layout:has(.operator-main)>.console-nav{position:relative!important;top:auto!important}\n.operator-main{padding-top:18px!important}\n.operator-witness.is-standby .operator-image{flex:0 0 300px;min-height:300px;max-height:300px;justify-content:center}\n.operator-witness.is-live{border-color:rgba(120,230,173,.34);box-shadow:0 18px 54px rgba(0,0,0,.24),0 0 32px rgba(72,210,137,.07)}\n.operator-live-activity{margin-top:14px;padding-top:12px;border-top:1px solid var(--kl-line)}\n.operator-live-activity>.provider-head{margin-bottom:9px}\n.operator-live-activity h3{margin:2px 0 0}\n.operator-live-activity .witness-activity-list{max-height:220px;overflow:auto;padding-right:2px}\n.witness-standby-state{display:grid;gap:4px;padding:14px;border:1px dashed rgba(120,230,173,.18);border-radius:13px;background:rgba(255,255,255,.018);color:var(--kl-muted)}\n.witness-standby-state b{color:#d9f7e6}\n.operator-image.standby{color:var(--kl-muted)}\n@media(max-width:1050px){.operator-witness.is-standby .operator-image{max-height:none;min-height:240px;flex:0 0 240px}}\n@media(max-width:700px){.operator-main{padding-top:10px!important}.operator-witness.is-standby .operator-image{min-height:210px;flex-basis:210px}.operator-live-activity .witness-activity-list{max-height:260px}}\n\n/* KNOCKLAUNCH Runtime Observatory v1 */\n.operator-grid{grid-template-columns:minmax(250px,320px) minmax(0,1fr);gap:10px;transition:grid-template-columns .18s ease}\n.operator-grid.commentary-collapsed{grid-template-columns:58px minmax(0,1fr)}\n.operator-grid.commentary-collapsed .operator-chat{min-width:58px;padding:10px 7px;overflow:hidden}\n.operator-grid.commentary-collapsed .operator-chat .provider-head{display:flex;justify-content:center}\n.operator-grid.commentary-collapsed .operator-chat .provider-head>div,.operator-grid.commentary-collapsed #operator-clear,.operator-grid.commentary-collapsed .operator-messages,.operator-grid.commentary-collapsed .live-commentary-feed,.operator-grid.commentary-collapsed #operator-form,.operator-grid.commentary-collapsed .operator-context,.operator-grid.commentary-collapsed .operator-chat details{display:none}\n.operator-grid.commentary-collapsed .operator-chat-head-actions{display:flex}\n.operator-grid.commentary-collapsed #operator-commentary-toggle{writing-mode:vertical-rl;transform:rotate(180deg);height:132px;padding:10px 7px;border-radius:999px}\n.operator-chat-head-actions{display:flex;align-items:center;gap:6px}\n.operator-witness{min-width:0}\n.witness-control-strip{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:7px 8px;margin:9px 0;border:1px solid rgba(120,230,173,.13);border-radius:12px;background:rgba(0,0,0,.16)}\n.witness-control-left{display:flex;align-items:center;gap:5px;flex-wrap:wrap}\n.witness-control-strip button,.witness-control-strip .button-like{display:inline-flex;align-items:center;justify-content:center;min-height:31px;padding:0 9px;border-radius:8px;border:1px solid rgba(120,230,173,.16);background:rgba(255,255,255,.025);color:#bfd8c9;font-size:10px;font-weight:800;text-decoration:none}\n.witness-control-strip [aria-pressed=true]{background:rgba(61,175,112,.18);border-color:rgba(120,230,173,.4);color:#dffff0}\n.witness-control-strip .disabled{opacity:.4;pointer-events:none}\n.witness-control-status{display:flex;align-items:center;gap:7px;font-size:9px}.witness-control-status span{font-weight:900;letter-spacing:.1em;color:#9ff0c5}.witness-control-status small{color:var(--kl-muted);text-transform:uppercase}\n.witness-compare-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:8px 0 12px}.witness-compare-grid figure{margin:0;min-width:0;border:1px solid var(--kl-line);border-radius:12px;background:#020704;overflow:hidden}.witness-compare-grid figcaption{padding:7px 9px;font-size:9px;color:var(--kl-muted);border-bottom:1px solid var(--kl-line)}.witness-compare-grid img{display:block;width:100%;height:auto;max-height:44vh;object-fit:contain;background:#000}.witness-compare-empty{padding:14px;margin:8px 0;border:1px dashed rgba(120,230,173,.18);border-radius:12px;color:var(--kl-muted);font-size:11px}\n.operator-image{min-height:560px;max-height:calc(100dvh - 355px)}\n.operator-image img{max-height:calc(100dvh - 410px)}\n@media(min-width:1300px){.operator-main{max-width:none;padding-left:12px;padding-right:12px}.operator-grid{grid-template-columns:minmax(280px,19vw) minmax(0,1fr)}.operator-grid.commentary-collapsed{grid-template-columns:58px minmax(0,1fr)}}\n@media(max-width:1050px){.operator-grid,.operator-grid.commentary-collapsed{grid-template-columns:1fr}.operator-grid.commentary-collapsed .operator-chat{min-width:0;padding:10px}.operator-grid.commentary-collapsed .operator-chat .provider-head>div{display:block}.operator-grid.commentary-collapsed #operator-commentary-toggle{writing-mode:horizontal-tb;transform:none;height:auto}.operator-grid.commentary-collapsed #operator-clear{display:inline-flex}.operator-witness{order:1}.operator-chat{order:2}.operator-image{min-height:430px;max-height:none}.operator-image img{max-height:none}}\n@media(max-width:700px){.witness-control-strip{align-items:stretch;flex-direction:column}.witness-control-left{display:grid;grid-template-columns:repeat(4,1fr)}.witness-control-status{justify-content:flex-end}.witness-compare-grid{grid-template-columns:1fr}.operator-image{min-height:360px}}\n"},{"path":"public/console/index-v3-7.html","content":"<!doctype html>\n<html lang=\"en\"><head><meta charset=\"utf-8\"><meta name=\"viewport\" content=\"width=device-width,initial-scale=1\"><meta name=\"robots\" content=\"noindex,nofollow\"><meta name=\"referrer\" content=\"no-referrer\"><title>KNOCKLAUNCH Console</title><link rel=\"stylesheet\" href=\"./console.css?v=preview-restore-1\">\n<style>\n#kl-witness-route-nav{position:relative;z-index:30;background:rgba(4,13,9,.97);border-bottom:1px solid rgba(120,230,173,.15);font-family:Inter,ui-sans-serif,system-ui,sans-serif;color:#eefaf3}\n#kl-witness-route-nav details{margin:0}\n#kl-witness-route-nav summary{list-style:none}\n#kl-witness-route-nav summary::-webkit-details-marker{display:none}\n.kl-route-summary{display:flex;align-items:center;gap:10px;min-height:42px;padding:7px 18px;cursor:pointer;user-select:none}\n.kl-route-summary:hover{background:rgba(120,230,173,.04)}\n.kl-route-kicker{font-size:9px;font-weight:900;letter-spacing:.16em;color:#72dfa8}\n.kl-route-summary strong{font-size:12px}\n.kl-route-count,.kl-route-tenant{font-size:10px;color:#91aa9c}\n.kl-route-tenant{margin-left:auto}\n.kl-route-panel{padding:10px 14px 14px;background:linear-gradient(180deg,rgba(10,27,19,.98),rgba(5,15,10,.99));border-top:1px solid rgba(120,230,173,.12);box-shadow:0 18px 48px rgba(0,0,0,.28)}\n.kl-route-toolbar{display:flex;align-items:center;gap:8px;margin-bottom:10px}\n.kl-route-search{min-width:180px;flex:1;height:34px;border-radius:10px;border:1px solid rgba(120,230,173,.18);background:rgba(0,0,0,.22);color:#eefaf3;padding:0 11px;font-size:12px;outline:none}\n.kl-route-search:focus{border-color:rgba(120,230,173,.45);box-shadow:0 0 0 3px rgba(120,230,173,.06)}\n.kl-route-viewports{display:flex;gap:5px}\n.kl-route-viewports button{height:34px;border-radius:9px;border:1px solid rgba(120,230,173,.16);background:rgba(255,255,255,.025);color:#94ad9f;padding:0 10px;font-size:10px;font-weight:800;cursor:pointer}\n.kl-route-viewports button[aria-pressed=\"true\"]{color:#c9f7dc;border-color:rgba(120,230,173,.4);background:rgba(52,168,104,.14)}\n.kl-route-status{min-height:16px;margin:0 0 8px;font-size:10px;color:#9db5a6}\n.kl-route-groups{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;align-items:start}\n.kl-route-group{position:relative;border:1px solid rgba(120,230,173,.11);border-radius:12px;background:rgba(0,0,0,.1);overflow:hidden}\n.kl-route-group>summary{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:9px 10px;cursor:pointer;font-size:11px;font-weight:850;color:#d8f5e5}\n.kl-route-group>summary span{font-size:9px;color:#829d8d}\n.kl-route-list{display:grid;gap:5px;max-height:250px;overflow:auto;padding:0 7px 8px}\n.kl-route-item{display:grid;width:100%;gap:2px;text-align:left;border:1px solid rgba(120,230,173,.1);border-radius:9px;background:rgba(255,255,255,.018);color:#e9f8ef;padding:8px 9px;cursor:pointer}\n.kl-route-item:hover{border-color:rgba(120,230,173,.34);background:rgba(74,188,125,.08)}\n.kl-route-item-head{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}.kl-route-item b{font-size:10px;line-height:1.25;overflow-wrap:anywhere}.kl-route-health{flex:0 0 auto;font-size:7px;font-weight:900;letter-spacing:.08em;border:1px solid rgba(148,173,159,.18);border-radius:999px;padding:2px 5px;color:#799286}.kl-route-health.live{color:#b9f8d4;border-color:rgba(120,230,173,.42);box-shadow:0 0 12px rgba(120,230,173,.14)}.kl-route-health.verified{color:#91dcb1}.kl-route-health.failed{color:#efc36e;border-color:rgba(239,195,110,.34)}\n.kl-route-item small{font-size:9px;line-height:1.3;color:#8ea799}\n.kl-route-item em{font-style:normal;font-size:8px;letter-spacing:.08em;color:#d4b96b}\n.kl-route-item[disabled]{opacity:.55;cursor:wait}\n@media(max-width:1000px){.kl-route-groups{grid-template-columns:repeat(2,minmax(0,1fr))}}\n@media(max-width:700px){.kl-route-summary{padding:7px 9px}.kl-route-tenant{display:none}.kl-route-panel{padding:8px}.kl-route-toolbar{align-items:stretch;flex-direction:column}.kl-route-viewports button{flex:1}.kl-route-groups{grid-template-columns:1fr}.kl-route-list{max-height:220px}}\n</style></head>\n<body>\n<div id=\"kl-witness-route-nav\"><div class=\"kl-route-summary\"><span class=\"kl-route-kicker\">ROUTES</span><strong>Witness routes</strong><span class=\"kl-route-count\">Loading canonical registry…</span></div></div>\n<div id=\"app\"><p>Opening KNOCKLAUNCH Console…</p></div>\n<script>\n(()=>{\n  const nativeFetch=window.fetch.bind(window);\n  const pending=new Map();\n  let seq=0;\n  window.addEventListener('message',event=>{\n    if(event.source!==parent||event.origin!==location.origin||event.data?.type!=='kl-console-result')return;\n    const slot=pending.get(event.data.id);if(!slot)return;\n    pending.delete(event.data.id);clearTimeout(slot.timer);\n    if(event.data.error)slot.resolve(new Response(JSON.stringify({ok:false,status:'unavailable',witnessHealthy:false,witnessActive:false,activeJobs:0,error:event.data.error}),{status:503,headers:{'content-type':'application/json'}}));\n    else slot.resolve(new Response(JSON.stringify(event.data.data||{}),{status:200,headers:{'content-type':'application/json'}}));\n  });\n  function witnessHealth(){\n    return new Promise(resolve=>{\n      const id='console-witness-'+Date.now()+'-'+(++seq);\n      const timer=setTimeout(()=>{pending.delete(id);resolve(new Response(JSON.stringify({ok:false,status:'unavailable',witnessHealthy:false,witnessActive:false,activeJobs:0,error:'Witness health timed out'}),{status:503,headers:{'content-type':'application/json'}}));},12000);\n      pending.set(id,{resolve,timer});\n      parent.postMessage({type:'kl-console-request',id,action:'witness',payload:{}},location.origin);\n    });\n  }\n  window.fetch=(input,init)=>{\n    const url=typeof input==='string'?input:String(input?.url||'');\n    if(url.startsWith('https://laptop-witness.knocklaunch.app/health'))return witnessHealth();\n    return nativeFetch(input,init);\n  };\n})();\n</script>\n<script>\n(()=>{\n const root=document.getElementById('kl-witness-route-nav');\n const waiting=new Map();\n let seq=0,selectedViewport=sessionStorage.getItem('kl-witness-route-viewport')==='mobile'?'mobile':'desktop',catalog=null,activity={active:null,runs:[]},busy=false;\n const esc=value=>String(value==null?'':value).replace(/[&<>\"']/g,ch=>({'&':'&amp;','<':'&lt;','>':'&gt;','\"':'&quot;',\"'\":'&#39;'}[ch]));\n function request(action,payload){\n  return new Promise((resolve,reject)=>{\n   const id='route-nav-'+Date.now()+'-'+(++seq);\n   const timer=setTimeout(()=>{waiting.delete(id);reject(new Error('Console bridge timed out'));},15000);\n   waiting.set(id,{resolve,reject,timer});\n   parent.postMessage({type:'kl-console-request',id,action,payload:payload||{}},location.origin);\n  });\n }\n window.addEventListener('message',event=>{\n  if(event.source!==parent||event.origin!==location.origin||event.data?.type!=='kl-console-result')return;\n  const slot=waiting.get(event.data.id);if(!slot)return;\n  waiting.delete(event.data.id);clearTimeout(slot.timer);\n  if(event.data.error)slot.reject(new Error(event.data.error));else slot.resolve(event.data.data||{});\n });\n function domainId(value){return String(value||'misc').toLowerCase().replace(/[^a-z0-9]+/g,'-').replace(/^-|-$/g,'')||'misc';}\n function runForRoute(path){\n  const all=[activity?.active,...(Array.isArray(activity?.runs)?activity.runs:[])].filter(Boolean);\n  return all.find(run=>String(run.currentRoute||'')===String(path||''))||null;\n }\n function routeHealth(path){\n  const run=runForRoute(path);\n  if(!run)return {label:'NEVER',tone:'never',time:''};\n  if(!run.terminal)return {label:'LIVE',tone:'live',time:''};\n  const raw=String(run.status||run.phase||'').toLowerCase();\n  const failed=/fail|error|cancel|timeout/.test(raw);\n  return {label:failed?'FAILED':'VERIFIED',tone:failed?'failed':'verified',time:new Date(run.lastProgressAt||run.completedAt||run.startedAt||Date.now()).toLocaleTimeString([],{hour:'numeric',minute:'2-digit'})};\n }\n function updateRouteHealth(){\n  root.querySelectorAll('[data-route-item]').forEach(button=>{\n   const health=routeHealth(button.dataset.routePath||'');\n   const badge=button.querySelector('[data-route-health]');\n   if(badge){badge.className='kl-route-health '+health.tone;badge.textContent=health.time?health.label+' · '+health.time:health.label;}\n  });\n  const routes=Array.isArray(catalog?.routes)?catalog.routes:[];\n  const checked=routes.filter(route=>routeHealth(route.path).tone!=='never').length;\n  const live=routes.filter(route=>routeHealth(route.path).tone==='live').length;\n  const meter=root.querySelector('[data-route-health-meter]');\n  if(meter)meter.textContent=live?live+' live · '+checked+' checked':checked+' checked';\n }\n async function refreshRouteHealth(){\n  try{activity=await request('witness-activity',{});updateRouteHealth();}catch{}\n }\n function setViewport(value){\n  selectedViewport=value==='mobile'?'mobile':'desktop';\n  sessionStorage.setItem('kl-witness-route-viewport',selectedViewport);\n  root.querySelectorAll('[data-route-viewport]').forEach(button=>button.setAttribute('aria-pressed',String(button.dataset.routeViewport===selectedViewport)));\n  const witnessButton=document.querySelector('[data-view=\"'+selectedViewport+'\"]');\n  if(witnessButton&&witnessButton.getAttribute('aria-pressed')!=='true')witnessButton.click();\n }\n function applyFilter(value){\n  const q=String(value||'').trim().toLowerCase();\n  root.querySelectorAll('[data-route-item]').forEach(button=>{\n    const visible=!q||String(button.dataset.routeSearch||'').includes(q);\n    button.hidden=!visible;\n  });\n  root.querySelectorAll('[data-route-group]').forEach(group=>{\n    group.hidden=!group.querySelector('[data-route-item]:not([hidden])');\n  });\n }\n function render(){\n  const routes=Array.isArray(catalog&&catalog.routes)?catalog.routes:[];\n  const groups=new Map();\n  routes.forEach(route=>{const key=String(route.domain||'misc');if(!groups.has(key))groups.set(key,[]);groups.get(key).push(route);});\n  const grouped=[...groups.entries()].sort((a,b)=>a[0].localeCompare(b[0]));\n  const groupHtml=grouped.map(pair=>{\n   const domain=pair[0],items=pair[1].slice().sort((a,b)=>String(a.path).localeCompare(String(b.path))),did=domainId(domain);\n   const buttons=items.map(route=>{\n    const unresolved=Array.isArray(route.unresolved)&&route.unresolved.length;\n    const testid=route.template==='/admin'?' data-testid=\"witness-route-smoke\"':'';\n    const search=(route.path+' '+route.template+' '+route.description+' '+route.role+' '+route.domain).toLowerCase();\n    return '<button class=\"kl-route-item\" type=\"button\" data-route-item data-route-path=\"'+esc(route.path)+'\" data-route-search=\"'+esc(search)+'\"'+testid+'><span class=\"kl-route-item-head\"><b>'+esc(route.path)+'</b><span class=\"kl-route-health never\" data-route-health>NEVER</span></span><small>'+esc(route.description||route.template)+'</small>'+(unresolved?'<em>TEMPLATE · '+esc(route.unresolved.join(', '))+'</em>':'')+'</button>';\n   }).join('');\n   return '<details class=\"kl-route-group\" data-route-group><summary data-testid=\"witness-route-domain-'+esc(did)+'\"><span>'+esc(domain.replace(/-/g,' '))+'</span><span>'+items.length+'</span></summary><div class=\"kl-route-list\">'+buttons+'</div></details>';\n  }).join('');\n  root.innerHTML='<details class=\"kl-route-browser\"><summary class=\"kl-route-summary\" data-testid=\"witness-route-toggle\"><span class=\"kl-route-kicker\">ROUTES</span><strong>Witness routes</strong><span class=\"kl-route-count\">'+routes.length+' actual routes · <span data-route-health-meter>0 checked</span></span><span class=\"kl-route-tenant\">'+esc(catalog&&catalog.tenant&&catalog.tenant.label||'Platform')+'</span></summary><div class=\"kl-route-panel\"><div class=\"kl-route-toolbar\"><input class=\"kl-route-search\" type=\"search\" placeholder=\"Filter routes, roles, domains…\" aria-label=\"Filter witness routes\"><div class=\"kl-route-viewports\"><button type=\"button\" data-route-viewport=\"desktop\">Desktop</button><button type=\"button\" data-route-viewport=\"mobile\">Mobile</button></div></div><p class=\"kl-route-status\">Click a route and the Laptop witness will open it automatically.</p><div class=\"kl-route-groups\">'+groupHtml+'</div></div></details>';\n  setViewport(selectedViewport);updateRouteHealth();\n  root.querySelector('.kl-route-search')?.addEventListener('input',event=>applyFilter(event.target.value));\n  root.querySelectorAll('[data-route-viewport]').forEach(button=>button.addEventListener('click',()=>setViewport(button.dataset.routeViewport)));\n  root.querySelectorAll('[data-route-item]').forEach(button=>button.addEventListener('click',async()=>{\n    if(busy)return;busy=true;\n    const path=String(button.dataset.routePath||'');\n    const status=root.querySelector('.kl-route-status');\n    root.querySelectorAll('[data-route-item]').forEach(item=>item.disabled=true);\n    if(status)status.textContent='Opening '+path+' on '+selectedViewport+'…';\n    try{\n      const result=await request('witness-route',{route:path,viewport:selectedViewport});\n      if(result&&result.ok===false)throw new Error(result.error||'Witness route failed');\n      if(status)status.textContent='Witness opening '+path+'. Live activity will update automatically.';\n      root.querySelector('.kl-route-browser')?.removeAttribute('open');\n    }catch(error){\n      if(status)status.textContent=error instanceof Error?error.message:'Could not start witness route';\n    }finally{\n      busy=false;root.querySelectorAll('[data-route-item]').forEach(item=>item.disabled=false);\n    }\n  }));\n }\n document.addEventListener('click',event=>{\n  const button=event.target&&event.target.closest?event.target.closest('[data-view]'):null;\n  if(button&&['desktop','mobile'].includes(button.dataset.view))setViewport(button.dataset.view);\n });\n request('routes',{}).then(data=>{catalog=data;render();refreshRouteHealth();setInterval(()=>{if(!document.hidden)refreshRouteHealth();},3000);}).catch(error=>{\n  root.innerHTML='<div class=\"kl-route-summary\"><span class=\"kl-route-kicker\">ROUTES</span><strong>Witness routes unavailable</strong><span class=\"kl-route-count\">'+esc(error.message)+'</span></div>';\n });\n})();\n</script>\n<script type=\"module\" src=\"./console.js?v=preview-restore-1\"></script></body></html>\n"}],"route":"/admin/console","branch":"ai/objective-first-repair-cb226a3b0871","writes":[],"patches":[],"version":1,"approved":true,"missionId":"cb226a3b-0871-4ad9-b125-44767b357891","objective":"URGENT repair: restore the /admin/console Live Witness preview. The current production public/console/operator.mjs contains a literal '[executed on device: MSI (...)]' Remote Desktop execution marker at the end of the JavaScript module. This causes a browser parse error ('Unexpected identifier on') and prevents the Witness preview/operator UI from mounting. Remove every execution-marker contamination line from the Console runtime assets, preserve the current Observatory/Route Navigator behavior, bump the Console entrypoint to v3.7 and nested JS/CSS/module cache version preview-restore-1, Gate, merge, deploy, and verify the preview is mounted again with zero console parse errors. Do not redesign anything else in this repair.","repository":"noel/KnockLaunchOS","ownerApproved":true,"releaseIntent":null,"sourceTargets":["public/console/index-v3-7.html","public/console/operator.mjs","public/console/console.js","public/console/console.css","src/pages/admin/GodModeCommandConsole.tsx"],"anchored_edits":[{"path":"src/pages/admin/GodModeCommandConsole.tsx","edits":[{"new_content":"src=\"/console/index-v3-7.html\"","old_content":"src=\"/console/index-v3-6.html\""}]}],"implementation":{"files":[],"writes":[]},"requestContract":null,"repairGeneration":null,"visualProofRoute":"/admin/console","executionEnvelope":{"ship":true,"version":1,"approved":true,"missionId":null,"ownerApproved":true,"releaseIntent":null,"sourceTargets":["public/console/index-v3-7.html","public/console/operator.mjs","public/console/console.js","public/console/console.css","src/pages/admin/GodModeCommandConsole.tsx"],"requestContract":null,"repairGeneration":null,"proofRequirements":null,"controlPlaneUnfreeze":false,"controlPlaneMaintenance":false,"controlPlaneMaintenancePaths":[],"controlPlaneMaintenanceReason":null},"proofRequirements":null,"controlPlaneUnfreeze":false,"durableMutationResume":true,"controlPlaneMaintenance":false,"controlPlaneMaintenancePaths":[],"controlPlaneMaintenanceReason":null},"recovery":false,"fingerprint":"9cb464983b7ae4b105839c68a9f07342f0066ae3acfc006f5cd549305ed9eca1","replayCount":0,"serializedBytes":77640},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-27T05:00:27.446361+00:00","proof_gate":"repository_mutation_intent_persisted","source_sha":null,"external_id":null,"receipt_type":"repository_mutation_intent","idempotency_key":"mission:cb226a3b-0871-4ad9-b125-44767b357891:repository-mutation-intent:9cb464983b7ae4b105839c68a9f07342f0066ae3acfc006f5cd549305ed9eca1:0","mission_step_id":"38aceefd-8106-4d04-a6d0-33812fb55ccd","command_center_event_id":"cb226a3b-0871-4ad9-b125-44767b357891"},{"id":"bf166cbe-181c-4640-9341-9d7cbb8d625e","source":"forgejo-runtime","status":"superseded","payload":{"reason":"forgejo_release_source_not_contained_in_current_main","mainSha":"646bca65df5bab4628b401883e63280f130425f5","sourceSha":"9b5a1f81520bd6462b0bb10440b744d22d44103b","deploymentId":"forgejo-main-9b5a1f81520b","releaseState":"superseded","sourceInMain":false,"compareStatus":null,"workflowRunId":5595},"tenant_id":"766cfaa7-ac42-46c8-bbef-69d13268a29d","created_at":"2026-09-05T18:07:56.735911+00:00","proof_gate":"canonical_release_source_superseded_by_current_main","source_sha":"9b5a1f81520bd6462b0bb10440b744d22d44103b","external_id":"forgejo-main-9b5a1f81520b","receipt_type":"canonical_release_status","idempotency_key":"mission:ff13073a-6eb2-431a-8b4c-78bdd25907a6:forgejo-release-status:9b5a1f81520bd6462b0bb10440b744d22d44103b:superseded:646bca65df5bab4628b401883e63280f130425f5","mission_step_id":"7841a385-5535-43fc-927c-30f5b17c0ae0","command_center_event_id":"ff13073a-6eb2-431a-8b4c-78bdd25907a6"},{"id":"bf17248a-6be6-4ed9-8d3d-b28b934445ff","source":"cc-execution","status":"blocked","payload":{"reason":"forgejo_validation_failed:POST:422","fingerprint":"76e4f31300f5ef923cdecf0d0d116dce2fbfa6b0cf741c42de22c007a37d5427"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-29T01:31:06.007849+00:00","proof_gate":"repository_mutation_intent_deterministic_failure","source_sha":null,"external_id":null,"receipt_type":"repository_mutation_intent_blocked","idempotency_key":"mission:e3478acf-a504-4781-94c6-eb60583afa11:repository-mutation-intent-blocked:76e4f31300f5ef923cdecf0d0d116dce2fbfa6b0cf741c42de22c007a37d5427","mission_step_id":"9dc32e9b-5e15-4d57-b5df-b1586ca5757e","command_center_event_id":"e3478acf-a504-4781-94c6-eb60583afa11"},{"id":"bf1a9782-aaa6-44ae-b319-4434d8002420","source":"cc-execution","status":"recorded","payload":{"requestContract":{"valid":true,"intent":{"evidence":[],"confidence":null,"rawUtterance":"Continue PR #1579 on its exact current head. Reconcile the current KnockLaunch Gate state; if green, squash merge, release only frontend plus owner-video-studio Supabase Edge Function, and prove live /admin/video-studio plus backend provider configuration. If the gate failed because of this exact change, repair only that failure on the same branch and PR. Do not mutate control-plane files.","wordingChanged":false,"canonicalIntent":"Continue PR #1579 on its exact current head. Reconcile the current KnockLaunch Gate state; if green, squash merge, release only frontend plus owner-video-studio Supabase Edge Function, and prove live /admin/video-studio plus backend provider configuration. If the gate failed because of this exact change, repair only that failure on the same branch and PR. Do not mutate control-plane files.","resolutionStatus":"exact","uniqueResolution":true,"clarificationRequired":false},"source":"explicit","version":1,"outcomes":[{"id":"outcome-1","statement":"Continue the existing owner-video-studio cloud delivery on PR #1579 from its exact current head. Reconcile KnockLaunch Gate, fix only failures caused by this change if any, preserve the same PR and branch, squash merge when green, deploy only the frontend and owner-video-studio Supabase Edge Function, then prove the live /admin/video-studio route and backend provider configuration state. Do not mutate control-plane files.","proofConditionIds":["proof-production"]}],"objective":"Continue PR #1579 on its exact current head. Reconcile the current KnockLaunch Gate state; if green, squash merge, release only frontend plus owner-video-studio Supabase Edge Function, and prove live /admin/video-studio plus backend provider configuration. If the gate failed because of this exact change, repair only that failure on the same branch and PR. Do not mutate control-plane files.","constraints":[],"terminalPolicy":"all_required_proof_conditions_satisfied_after_live_release","proofConditions":[{"id":"proof-production","kind":"runtime","claim":"Continue the existing owner-video-studio cloud delivery on PR #1579 from its exact current head. Reconcile KnockLaunch Gate, fix only failures caused by this change if any, preserve the same PR and branch, squash merge when green, deploy only the frontend and owner-video-studio Supabase Edge Function, then prove the live /admin/video-studio route and backend provider configuration state. Do not mutate control-plane files.","route":"/admin/video-studio","roleRef":null,"userRef":null,"required":true,"expectedText":null,"targetedActions":[],"allowedReleaseTargets":[],"requiredReleaseTargets":[]}],"validationErrors":[]},"requestContractHash":"2fb5e9574d49b470c1aa6a1d4a5eea905a3026196511f361b7b631de5d730239","requestContractRevision":2,"previousRequestContractHash":"17c5609d4e55ed09f7056effbb80985d00e1513af15d7b44275cfdf6cbf0dcb4"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-03T17:04:40.632751+00:00","proof_gate":"request_contract_revision_recorded","source_sha":null,"external_id":null,"receipt_type":"request_contract_revision","idempotency_key":"mission:4b6d960e-8edc-4398-8e9c-37a583d1626a:request-contract-revision:2:2fb5e9574d49b470c1aa6a1d4a5eea905a3026196511f361b7b631de5d730239","mission_step_id":"224cbd3e-aebe-42b6-b610-1e8ef32e561e","command_center_event_id":"4b6d960e-8edc-4398-8e9c-37a583d1626a"},{"id":"bf1af3a1-d02e-4f18-94f8-4b8a92ac80fb","source":"cc-execution","status":"release_verification_pending","payload":{"ok":true,"jobId":null,"phase":"objective_received","branch":null,"reason":null,"status":"release_verification_pending","metrics":{"receiptBytes":0,"releaseCount":0,"toolCallCount":0,"repeatedCallCount":0,"ownerInterruptionCount":0},"version":"1.30.2-deferred-visual-proof","prNumber":3900,"terminal":false,"missionId":"c9566ade-a980-461c-b88a-036b7ce12faa","operation":"ship_and_prove","proofGate":"ship_and_prove_release_pending","sourceSha":"8d98dd238edafc14bfd378d372f754dd51d089d7","timingsMs":null,"nextAction":null,"receiptRef":{"mode":"full","missionId":"c9566ade-a980-461c-b88a-036b7ce12faa"},"performance":null,"deploymentId":"canonical-release-8d98dd238eda","workflowRunId":null,"releaseTargets":{"frontend":true,"onrunner":false,"ccExecution":false,"supabaseEdge":false},"detailsAvailable":true,"sourceReceiptBytes":916,"ownerActionRequired":false},"tenant_id":"c55998b4-82a3-467e-8d35-177bb4785f6e","created_at":"2026-08-03T18:58:07.608385+00:00","proof_gate":"ship_and_prove_release_pending","source_sha":"8d98dd238edafc14bfd378d372f754dd51d089d7","external_id":"canonical-release-8d98dd238eda","receipt_type":"ship_and_prove","idempotency_key":"mission:c9566ade-a980-461c-b88a-036b7ce12faa:ship_and_prove:ship_and_prove_release_pending","mission_step_id":"443c28bf-d559-4377-a582-00f60557d4b9","command_center_event_id":"c9566ade-a980-461c-b88a-036b7ce12faa"},{"id":"bf1af529-ef61-4e57-a602-ade718dd3d3a","source":"cc-execution","status":"waiting_for_gate","payload":{"ok":true,"jobId":null,"phase":"pull_request","branch":"ai/objective-first-repair-911bc3a670f0","reason":"pull_request_checks_pending","status":"waiting_for_gate","metrics":{"receiptBytes":52286,"releaseCount":0,"toolCallCount":31,"repeatedCallCount":24,"executorlessWaitMs":1775775,"firstUsefulResultAt":"2026-10-05T14:44:45.567Z","recoveryAttemptCount":21,"ownerInterruptionCount":0},"version":null,"prNumber":4927,"terminal":false,"missionId":"911bc3a6-70f0-4ab3-b463-bb05311024bc","operation":"automatic_mission_resume","proofGate":"repair_mission_waiting_for_gate","sourceSha":null,"timingsMs":{"prReadinessMs":4000,"approvedPlanMs":0,"shipAndProveMs":0,"repositoryMutationMs":0,"repositoryProviderMs":0,"repositoryAtomicCommitMs":0,"repositoryBranchCreateMs":0,"repositoryPullRequestCreateMs":0},"nextAction":"Reconcile this same mission and pull request after the exact-head KnockLaunch Gate changes state.","receiptRef":{"mode":"full","missionId":"911bc3a6-70f0-4ab3-b463-bb05311024bc"},"performance":null,"deploymentId":null,"releaseState":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","pendingProofKinds":[],"verificationState":null,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":1006,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true,"requestContractState":"pending"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-05T14:53:09.070639+00:00","proof_gate":"repair_mission_waiting_for_gate","source_sha":null,"external_id":"4927","receipt_type":"automatic_mission_resume","idempotency_key":"mission:911bc3a6-70f0-4ab3-b463-bb05311024bc:automatic-mission-resume:4927:repair_mission_waiting_for_gate","mission_step_id":"db51fc78-229d-4243-a241-6b1283e12f19","command_center_event_id":"911bc3a6-70f0-4ab3-b463-bb05311024bc"},{"id":"bf1b6941-4154-4e87-84f3-13e3fced2574","source":"forgejo-runtime","status":"verified","payload":{"failed":[],"states":{"forgejo-main/source":"success","forgejo-release/workflow":"success","frontend-cloudflare/live":"success"},"mainSha":"9290e4837b4660c078b614f46084d567b597d462","missing":[],"pending":[],"required":["forgejo-main/source","forgejo-release/workflow","frontend-cloudflare/live"],"sourceSha":"9290e4837b4660c078b614f46084d567b597d462","releaseState":"verified","sourceInMain":true,"compareStatus":"protected_main_push_exact_source","releaseTargets":{"frontend":true,"onrunner":false,"migrations":false,"ccExecution":false,"supabaseEdge":false,"edgeFunctionSlugs":[]},"releaseTargetStates":{"frontend":"success"},"requestContractHash":"ac50b398dce9147004eb889a2525a36ac6a629de927ebd76fe687a7ad50e7ac9","forgejoWorkflowProof":{"runId":12532,"source":"signed_push_receipt","status":"success","results":{},"conclusion":"success","targetStates":{"frontend":"success"},"targetJobCount":7,"observedTargetStates":{"frontend":"success"}},"onrunnerRuntimeProof":null,"releaseSourceVerified":true,"ccExecutionRuntimeProof":null,"releaseTargetRecoveryProof":null,"exactReleaseVerifiedAfterMainAdvanced":false},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-28T12:52:31.476856+00:00","proof_gate":"canonical_release_terminal_verified","source_sha":"9290e4837b4660c078b614f46084d567b597d462","external_id":"forgejo-main-9290e4837b46","receipt_type":"canonical_release_status","idempotency_key":"mission:8bbe3d62-99fe-4c67-b279-9d6e2d76e65c:forgejo-release-status:9290e4837b4660c078b614f46084d567b597d462:verified:forgejo-main/source=success|forgejo-release/workflow=success|frontend-cloudflare/live=success","mission_step_id":"f69fb8b6-b1ed-40a7-8497-ed0f8347fbb7","command_center_event_id":"8bbe3d62-99fe-4c67-b279-9d6e2d76e65c"},{"id":"bf1cde22-0920-4d3a-a4c3-1280c4a8ba00","source":"cc-execution","status":"waiting_for_gate","payload":{"ok":true,"jobId":null,"phase":"implementation","branch":"ai/objective-first-repair-9a728ef74a1f","reason":"provider_verified_auto_progress_owns_gate_merge_release_outside_owner_response","status":"waiting_for_gate","metrics":{"receiptBytes":7178,"releaseCount":0,"toolCallCount":2,"repeatedCallCount":0,"executorlessWaitMs":12003,"firstUsefulResultAt":"2026-10-02T22:18:19.302Z","recoveryAttemptCount":0,"ownerInterruptionCount":0},"version":"1.64.56-paul-eval-diagnostics","prNumber":4540,"terminal":false,"missionId":"9a728ef7-4a1f-4650-b487-ef86d6174703","operation":"execute_mission","proofGate":"repair_mission_pr_handed_off_to_supervisor","sourceSha":null,"timingsMs":{"gateMs":0,"proofMs":0,"handlerMs":4418,"releaseMs":0,"mutationMs":0,"repositoryMs":0,"prReadinessMs":0,"approvedPlanMs":588,"missionSetupMs":285,"providerAuthMs":0,"shipAndProveMs":0,"ledgerPrepareMs":285,"ledgerReconcileMs":0,"lineageReconcileMs":0,"resolvePreflightMs":285,"repositoryMutationMs":3830,"repositoryProviderMs":3830,"authoritativeLedgerMs":0,"ledgerAsyncDispatchMs":0,"repositoryAtomicCommitMs":2239,"repositoryBranchCreateMs":0,"totalSynchronousLedgerMs":285,"asyncBookkeepingDispatchMs":0,"ledgerAuthoritativeCommitMs":0,"repositoryPullRequestCreateMs":1591},"nextAction":"Canonical KnockLaunch Gate notifier and durable mission supervisor own Gate, merge, release, and proof progression from this exact PR head outside the owner response path.","receiptRef":{"mode":"full","missionId":"9a728ef7-4a1f-4650-b487-ef86d6174703"},"performance":null,"deploymentId":null,"releaseState":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","pendingProofKinds":["runtime"],"verificationState":null,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":3897,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true,"requestContractState":"pending"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-02T22:18:36.67394+00:00","proof_gate":"repair_mission_pr_handed_off_to_supervisor","source_sha":null,"external_id":"4540","receipt_type":"execute_mission","idempotency_key":"mission:9a728ef7-4a1f-4650-b487-ef86d6174703:execute_mission:repair_mission_pr_handed_off_to_supervisor:current-generation","mission_step_id":"7dd9cf46-4b9c-4348-afc4-275ede7e134a","command_center_event_id":"9a728ef7-4a1f-4650-b487-ef86d6174703"},{"id":"bf1da47b-2219-4ef7-8010-5234119b6fde","source":"cc-execution","status":"retryable","payload":{"ok":false,"jobId":null,"phase":"implementation","branch":"ai/objective-first-repair-3023f7ffedac","reason":"retryable_provider_transport:GET:The operation was aborted due to timeout","status":"retryable","metrics":{"receiptBytes":0,"releaseCount":0,"toolCallCount":0,"repeatedCallCount":0,"ownerInterruptionCount":0},"version":"1.58.115-release-speed-lock","prNumber":null,"terminal":false,"missionId":"3023f7ff-edac-4e99-9e5a-7ac9be0a3383","operation":"execute_mission","proofGate":"repair_mission_execution_retryable","sourceSha":null,"timingsMs":{"gateMs":0,"proofMs":0,"handlerMs":26946,"releaseMs":0,"mutationMs":0,"repositoryMs":0,"prReadinessMs":0,"approvedPlanMs":0,"missionSetupMs":287,"providerAuthMs":0,"shipAndProveMs":0,"ledgerPrepareMs":287,"ledgerReconcileMs":0,"lineageReconcileMs":0,"resolvePreflightMs":287,"repositoryMutationMs":26946,"repositoryProviderMs":0,"authoritativeLedgerMs":0,"ledgerAsyncDispatchMs":0,"repositoryAtomicCommitMs":0,"repositoryBranchCreateMs":0,"totalSynchronousLedgerMs":287,"asyncBookkeepingDispatchMs":0,"ledgerAuthoritativeCommitMs":0,"repositoryPullRequestCreateMs":0},"nextAction":null,"receiptRef":{"mode":"full","missionId":"3023f7ff-edac-4e99-9e5a-7ac9be0a3383"},"performance":null,"deploymentId":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":1560,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-12T01:14:37.273554+00:00","proof_gate":"repair_mission_execution_retryable","source_sha":null,"external_id":null,"receipt_type":"execute_mission","idempotency_key":"mission:3023f7ff-edac-4e99-9e5a-7ac9be0a3383:execute_mission:repair_mission_execution_retryable:current-generation","mission_step_id":"7a86c23a-4fa7-48ee-a9ab-c7863991d2c4","command_center_event_id":"3023f7ff-edac-4e99-9e5a-7ac9be0a3383"},{"id":"bf1ef21c-44dd-43ee-a92b-a47a2d89417f","source":"cc-execution","status":"release_verification_pending","payload":{"ok":true,"jobId":null,"phase":"objective_received","branch":null,"reason":null,"status":"release_verification_pending","metrics":{"receiptBytes":0,"releaseCount":0,"toolCallCount":0,"repeatedCallCount":0,"ownerInterruptionCount":0},"version":"1.35.2-release-dedupe-proof","prNumber":4659,"terminal":false,"missionId":"c7252e35-f74b-4fab-8283-0912de75070c","operation":"ship_and_prove","proofGate":"ship_and_prove_release_pending","sourceSha":"01f18ed77e564fcbe0382585cc51bb48b190dfe7","timingsMs":null,"nextAction":null,"receiptRef":{"mode":"full","missionId":"c7252e35-f74b-4fab-8283-0912de75070c"},"performance":null,"deploymentId":"canonical-release-01f18ed77e56","workflowRunId":31550679930,"releaseTargets":{"frontend":true,"onrunner":false,"migrations":false,"ccExecution":false,"supabaseEdge":true,"edgeFunctionSlugs":["mobile-vendor-event-request"]},"detailsAvailable":true,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":1458,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true},"tenant_id":"a2929648-19db-46c8-9e93-07378ed1aa5f","created_at":"2026-08-12T00:35:16.533902+00:00","proof_gate":"ship_and_prove_release_pending","source_sha":"01f18ed77e564fcbe0382585cc51bb48b190dfe7","external_id":"canonical-release-01f18ed77e56","receipt_type":"ship_and_prove","idempotency_key":"mission:c7252e35-f74b-4fab-8283-0912de75070c:ship_and_prove:ship_and_prove_release_pending:01f18ed77e564fcbe0382585cc51bb48b190dfe7:31550679930","mission_step_id":"3a5f3746-0bf2-40d1-ab93-cedc0576c694","command_center_event_id":"c7252e35-f74b-4fab-8283-0912de75070c"},{"id":"bf2088dc-4861-4250-b06c-f8aae508a19c","source":"cc-execution","status":"pending","payload":{"ok":true,"jobId":"8a8b3bdb-6322-49bb-b7da-801afb96e9f3","phase":"universal_visual_witness_supervised","branch":"ai/objective-first-repair-8fab9106a8de","reason":null,"status":"pending","metrics":{"receiptBytes":114022,"releaseCount":0,"toolCallCount":35,"repeatedCallCount":18,"executorlessWaitMs":3045656,"firstUsefulResultAt":"2026-09-28T14:21:48.654Z","recoveryAttemptCount":4,"ownerInterruptionCount":0},"version":null,"prNumber":4000,"terminal":false,"missionId":"8fab9106-a8de-4203-a8a4-2e3f007112f9","operation":"visual_proof_started","proofGate":"universal_visual_witness_pending","sourceSha":"fdc49a10d7da2685ce4e81af6a421017ab5bcba7","timingsMs":{"queue":231,"total":364,"execution":133},"nextAction":"Execution is pending; poll inspect_route_status only when fresh progress is expected, or cancel with inspect_route_cancel.","receiptRef":{"mode":"full","missionId":"8fab9106-a8de-4203-a8a4-2e3f007112f9"},"performance":null,"deploymentId":"forgejo-main-fdc49a10d7da","releaseState":"verified","visualWitness":{"role":"GodMode","jobId":"8a8b3bdb-6322-49bb-b7da-801afb96e9f3","tenant":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","runnerUrl":"https://laptop-witness.knocklaunch.app","runnerLane":"laptop","attemptsUsed":0,"supervisorId":"8a8b3bdb-6322-49bb-b7da-801afb96e9f3","failureReason":null,"observedRoute":null,"runnerVersion":null,"attemptLineage":[],"missionOutcome":null,"requestedRoute":"/admin/console","runnerSourceSha":null,"selectedViewports":["desktop","mobile"],"checkpointAccounting":null,"correctiveGeneration":1,"restartReplayHistory":[]},"workflowRunId":12566,"releaseTargets":{"frontend":true,"onrunner":false,"migrations":false,"ccExecution":false,"supabaseEdge":false,"edgeFunctionSlugs":[]},"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","pendingProofKinds":["interaction","visual"],"verificationState":"failed","workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":1799,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true,"requestContractState":"pending"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-28T15:13:08.980649+00:00","proof_gate":"post_release_visual_proof_started","source_sha":"fdc49a10d7da2685ce4e81af6a421017ab5bcba7","external_id":"8a8b3bdb-6322-49bb-b7da-801afb96e9f3","receipt_type":"visual_proof_started","idempotency_key":"mission:8fab9106-a8de-4203-a8a4-2e3f007112f9:visual-start:8a8b3bdb-6322-49bb-b7da-801afb96e9f3","mission_step_id":"4d57a31f-26df-4e47-a53b-88feff962d61","command_center_event_id":"8fab9106-a8de-4203-a8a4-2e3f007112f9"},{"id":"bf212c38-65d1-4520-beef-29c949d4a73b","source":"cc-execution","status":"deployment_dispatched","payload":{"ok":true,"jobId":null,"phase":"pull_request","branch":"ai/forgejo-timeout-hardening","reason":null,"status":"deployment_dispatched","metrics":{"receiptBytes":0,"releaseCount":0,"toolCallCount":0,"repeatedCallCount":0,"ownerInterruptionCount":0},"version":null,"prNumber":2219,"terminal":false,"missionId":"366e8a41-b11b-446f-8147-da071bd5769c","operation":"automatic_mission_resume","proofGate":"canonical_release_dispatched","sourceSha":"25509717c3a1331d21ff574b07fc85a4d250a263","timingsMs":{"prReadinessMs":1689,"approvedPlanMs":0,"shipAndProveMs":9777,"repositoryMutationMs":0,"repositoryProviderMs":0,"repositoryAtomicCommitMs":0,"repositoryBranchCreateMs":0,"repositoryPullRequestCreateMs":0},"nextAction":null,"receiptRef":{"mode":"full","missionId":"366e8a41-b11b-446f-8147-da071bd5769c"},"performance":null,"deploymentId":"forgejo-main-25509717c3a1","workflowRunId":null,"releaseTargets":{"frontend":false,"onrunner":false,"migrations":false,"ccExecution":true,"supabaseEdge":false,"edgeFunctionSlugs":[]},"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":2193,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-09T03:45:54.102199+00:00","proof_gate":"canonical_release_dispatched","source_sha":null,"external_id":"2219","receipt_type":"automatic_mission_resume","idempotency_key":"mission:366e8a41-b11b-446f-8147-da071bd5769c:automatic-mission-resume:2219:canonical_release_dispatched","mission_step_id":"c6ea57ab-badb-43f0-b49d-0c06c39687d3","command_center_event_id":"366e8a41-b11b-446f-8147-da071bd5769c"},{"id":"bf2160f6-ad6c-41a3-a307-a15f712f33f4","source":"forgejo-runtime","status":"verified","payload":{"failed":[],"states":{"forgejo-main/source":"success","forgejo-release/workflow":"success","frontend-cloudflare/live":"success"},"mainSha":"23347e586cb7ae0ff25223a76f28269338b82cd3","missing":[],"pending":[],"required":["forgejo-main/source","forgejo-release/workflow","frontend-cloudflare/live"],"sourceSha":"23347e586cb7ae0ff25223a76f28269338b82cd3","releaseState":"verified","sourceInMain":true,"compareStatus":"protected_main_push_exact_source","releaseTargets":{"frontend":true,"migrations":false,"ccExecution":false,"supabaseEdge":false,"edgeFunctionSlugs":[]},"releaseTargetStates":{"frontend":"success"},"requestContractHash":"be7f03f9a57b29242035ef34f8f5b83ee8e44dc4ebc2ad341f51178431fd81a5","forgejoWorkflowProof":{"runId":13168,"source":"signed_push_receipt","status":"success","results":{},"conclusion":"success","targetStates":{"frontend":"success"},"targetJobCount":6,"observedTargetStates":{"frontend":"success"}},"releaseSourceVerified":true,"ccExecutionRuntimeProof":null,"releaseTargetRecoveryProof":null,"exactReleaseVerifiedAfterMainAdvanced":false},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-29T19:28:38.068163+00:00","proof_gate":"canonical_release_terminal_verified","source_sha":"23347e586cb7ae0ff25223a76f28269338b82cd3","external_id":"forgejo-main-23347e586cb7","receipt_type":"canonical_release_status","idempotency_key":"mission:f2fee72c-5de9-49db-9562-8404efc431e6:forgejo-release-status:23347e586cb7ae0ff25223a76f28269338b82cd3:verified:forgejo-main/source=success|forgejo-release/workflow=success|frontend-cloudflare/live=success","mission_step_id":"9a696e68-c222-4ea5-960b-15315d3e6df1","command_center_event_id":"f2fee72c-5de9-49db-9562-8404efc431e6"},{"id":"bf216f31-f656-4e47-b9cd-75daf0c23e8e","source":"forgejo","status":"waiting","payload":{"branch":"ai/objective-first-repair-99972102bba3","prNumber":5043,"nextAction":"Follow the existing canonical release to terminal proof.","mergeCommitSha":"078f66159033fd55b4fae93205530175d815bae4","branchDeletedAfterMerge":true,"correctiveGenerationCreated":false},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-10-05T19:55:53.418505+00:00","proof_gate":"forgejo_merged_pr_is_authoritative_source_lineage","source_sha":"078f66159033fd55b4fae93205530175d815bae4","external_id":"5043","receipt_type":"source_lineage_merged_pr_authoritative","idempotency_key":"mission:99972102-bba3-4f83-96be-bf96f09744f8:merged-pr:5043:078f66159033fd55b4fae93205530175d815bae4","mission_step_id":"7b4d2262-fc6b-483d-b354-506a82376d88","command_center_event_id":"99972102-bba3-4f83-96be-bf96f09744f8"},{"id":"bf25ca84-8653-4c88-8c54-1c1433b7b996","source":"cc-execution","status":"authorized","payload":{"paths":["workers/cc-execution/test/release-orchestration-invariants.test.js"],"reason":"Gate run 5455 proved the Buildx release invariant passes; the only failure is a stale exact-value assertion that still expects the pre-Buildx ccExecutionReleaseToolingPolicy string.","baseSha":"21a38fda3b7c4dbf8222eebc4ced030995a49997","issuedAt":1788608046359,"expiresAt":1788608226359,"missionId":"53ff7441-ff8f-4fd3-90ef-5b7e5b43ebd7","authorizationId":"d0361f92-d7b7-44e1-9716-dc422fe2cf75","retryableWithinExactScope":true},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-05T11:34:06.823266+00:00","proof_gate":"control_plane_maintenance_scope_authorized","source_sha":"21a38fda3b7c4dbf8222eebc4ced030995a49997","external_id":null,"receipt_type":"control_plane_maintenance_authorization","idempotency_key":"control-plane-maintenance-authorize:d0361f92-d7b7-44e1-9716-dc422fe2cf75","mission_step_id":"1440eaf8-77e9-4e84-8882-429a25dca89d","command_center_event_id":"53ff7441-ff8f-4fd3-90ef-5b7e5b43ebd7"},{"id":"bf25da87-1696-4668-836e-55784db813c8","source":"forgejo-runtime","status":"verified","payload":{"failed":[],"states":{"forgejo-main/source":"success","forgejo-release/workflow":"success","frontend-cloudflare/live":"success"},"mainSha":"8e20337394cc175d0331bf13fa0db258e2719abb","missing":[],"pending":[],"required":["forgejo-main/source","forgejo-release/workflow","frontend-cloudflare/live"],"sourceSha":"8e20337394cc175d0331bf13fa0db258e2719abb","releaseState":"verified","sourceInMain":true,"compareStatus":"identical","forgejoWorkflowProof":{"url":"https://git.knocklaunch.app/noel/KnockLaunchOS/actions/runs/1141","runId":1141,"status":"success","conclusion":null,"failedJobs":[],"diagnostics":null},"onrunnerRuntimeProof":null,"releaseSourceVerified":true,"ccExecutionRuntimeProof":null,"exactReleaseVerifiedAfterMainAdvanced":false},"tenant_id":"69c86c8d-c737-439a-8f30-3246af0b3ad1","created_at":"2026-08-17T18:36:16.702908+00:00","proof_gate":"canonical_release_terminal_verified","source_sha":"8e20337394cc175d0331bf13fa0db258e2719abb","external_id":"forgejo-main-8e20337394cc","receipt_type":"canonical_release_status","idempotency_key":"mission:ee214628-968e-4015-9b13-a6e164706412:forgejo-release-status:8e20337394cc175d0331bf13fa0db258e2719abb:verified:forgejo-main/source=success|forgejo-release/workflow=success|frontend-cloudflare/live=success","mission_step_id":"04da13dc-d8d2-4005-b494-b4d87aa2e019","command_center_event_id":"ee214628-968e-4015-9b13-a6e164706412"},{"id":"bf27dae6-8b5c-4db8-bd79-bb2dbc2f4a9f","source":"cc-execution","status":"recorded","payload":{"requestContract":{"valid":true,"intent":{"evidence":[],"confidence":null,"rawUtterance":"Continue PR #1708 as the bootstrap generation for the control-plane Gate capacity repair. The currently live 1.58.48 runtime created #1708 before marker issuance existed, so accept its successful canonical Gate as bootstrap proof only; squash merge it, release cc-execution only, verify 1.58.49 live, and refreeze. Do not claim paul-light routing proven by #1708. A separate post-deploy test-only proof mission will verify that live 1.58.49 automatically marks a control-plane maintenance PR and its canonical Gate runs on paul-light with zero runtime/product release.","wordingChanged":false,"canonicalIntent":"Continue PR #1708 as the bootstrap generation for the control-plane Gate capacity repair. The currently live 1.58.48 runtime created #1708 before marker issuance existed, so accept its successful canonical Gate as bootstrap proof only; squash merge it, release cc-execution only, verify 1.58.49 live, and refreeze. Do not claim paul-light routing proven by #1708. A separate post-deploy test-only proof mission will verify that live 1.58.49 automatically marks a control-plane maintenance PR and its canonical Gate runs on paul-light with zero runtime/product release.","resolutionStatus":"exact","uniqueResolution":true,"clarificationRequired":false},"source":"explicit","version":1,"outcomes":[{"id":"bootstrap","statement":"PR #1708 passes canonical Gate, squash merges, releases cc-execution only, and live runtime becomes 1.58.49.","proofConditionIds":["gate","release","runtime"]},{"id":"safety","statement":"One canonical Gate remains; frontend/default routing remains docker and marker routing source is present without duplicated QA logic.","proofConditionIds":["repo","safety"]},{"id":"refreeze","statement":"Control plane is refrozen after bootstrap runtime proof.","proofConditionIds":["refrozen"]}],"objective":"Continue PR #1708 as the bootstrap generation for the control-plane Gate capacity repair. The currently live 1.58.48 runtime created #1708 before marker issuance existed, so accept its successful canonical Gate as bootstrap proof only; squash merge it, release cc-execution only, verify 1.58.49 live, and refreeze. Do not claim paul-light routing proven by #1708. A separate post-deploy test-only proof mission will verify that live 1.58.49 automatically marks a control-plane maintenance PR and its canonical Gate runs on paul-light with zero runtime/product release.","constraints":[{"id":"no-false-proof","statement":"Do not claim #1708 ran on paul-light because it was created before marker issuance was live.","proofConditionIds":["repo"]},{"id":"no-collision","statement":"Do not modify or duplicate PR #1705 exact-green provider-read tail work.","proofConditionIds":["repo"]}],"terminalPolicy":"all_required_proof_conditions_satisfied_after_live_release","proofConditions":[{"id":"repo","kind":"repository","claim":"Source implements marker-driven runner selection and leaves default/frontend Gate on docker.","route":null,"roleRef":null,"userRef":null,"required":true,"expectedText":null,"targetedActions":[],"allowedReleaseTargets":[],"requiredReleaseTargets":[]},{"id":"gate","kind":"release","claim":"PR #1708 passes the canonical Gate.","route":null,"roleRef":null,"userRef":null,"required":true,"expectedText":null,"targetedActions":[],"allowedReleaseTargets":[],"requiredReleaseTargets":[]},{"id":"safety","kind":"repository","claim":"No second Gate or duplicated QA logic was introduced.","route":null,"roleRef":null,"userRef":null,"required":true,"expectedText":null,"targetedActions":[],"allowedReleaseTargets":[],"requiredReleaseTargets":[]},{"id":"release","kind":"release","claim":"Canonical release targets cc-execution only.","route":null,"roleRef":null,"userRef":null,"required":true,"expectedText":null,"targetedActions":[],"allowedReleaseTargets":[],"requiredReleaseTargets":[]},{"id":"runtime","kind":"runtime","claim":"Live cc-execution runtime is 1.58.49 on the merged SHA.","route":null,"roleRef":null,"userRef":null,"required":true,"expectedText":null,"targetedActions":[],"allowedReleaseTargets":[],"requiredReleaseTargets":[]},{"id":"refrozen","kind":"runtime","claim":"Control plane is refrozen.","route":null,"roleRef":null,"userRef":null,"required":true,"expectedText":null,"targetedActions":[],"allowedReleaseTargets":[],"requiredReleaseTargets":[]}],"validationErrors":[]},"requestContractHash":"edd5df227d7c0ee3a977c9508a6c2bb211588e208d98334b4abef0117758b72c","requestContractRevision":5,"previousRequestContractHash":"9454ee8d0ad923da130021b0d45327c89bcd0e969d1fb770070f13ae96c572f4"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-04T13:59:01.007931+00:00","proof_gate":"request_contract_revision_recorded","source_sha":null,"external_id":null,"receipt_type":"request_contract_revision","idempotency_key":"mission:f23035ef-ed79-47cb-a55a-df2b60d99779:request-contract:edd5df227d7c0ee3a977c9508a6c2bb211588e208d98334b4abef0117758b72c","mission_step_id":"ba79ec98-cb72-4b4d-9cea-b6cc416a6cf7","command_center_event_id":"f23035ef-ed79-47cb-a55a-df2b60d99779"},{"id":"bf283f70-3a69-4fbf-a3a7-e4e6393cbe5f","source":"cc-execution","status":"deployment_dispatched","payload":{"ok":true,"jobId":null,"phase":"pull_request","branch":"ai/fix-synthesis-loop-control-plane","reason":null,"status":"deployment_dispatched","metrics":{"receiptBytes":8640,"releaseCount":0,"toolCallCount":8,"repeatedCallCount":3,"ownerInterruptionCount":0},"version":"1.48.12-forgejo-read-resilience","prNumber":526,"terminal":false,"missionId":"c914f26d-007a-4e1d-a58e-0dd5ef44b74f","operation":"execute_mission","proofGate":"canonical_release_dispatched","sourceSha":"5457f7ba127bdd28fada452e282790cb2c66fcb3","timingsMs":null,"nextAction":null,"receiptRef":{"mode":"full","missionId":"c914f26d-007a-4e1d-a58e-0dd5ef44b74f"},"performance":null,"deploymentId":"forgejo-main-5457f7ba127b","workflowRunId":null,"releaseTargets":{"frontend":false,"onrunner":false,"migrations":false,"ccExecution":true,"supabaseEdge":false,"edgeFunctionSlugs":[]},"detailsAvailable":true,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":6516,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-08-21T00:42:44.314339+00:00","proof_gate":"canonical_release_dispatched","source_sha":"5457f7ba127bdd28fada452e282790cb2c66fcb3","external_id":"forgejo-main-5457f7ba127b","receipt_type":"execute_mission","idempotency_key":"mission:c914f26d-007a-4e1d-a58e-0dd5ef44b74f:execute_mission:canonical_release_dispatched","mission_step_id":"c829f262-3926-4a7d-b6ff-24aeb209036b","command_center_event_id":"c914f26d-007a-4e1d-a58e-0dd5ef44b74f"},{"id":"bf2abf1f-5172-44c9-afcb-6f5bdf7fc482","source":"cc-execution","status":"release_verification_pending","payload":{"ok":true,"jobId":null,"phase":"objective_received","branch":"ai/bound-current-editor-proof-deadline-r202608040057","reason":null,"status":"release_verification_pending","metrics":{"receiptBytes":0,"releaseCount":0,"toolCallCount":0,"repeatedCallCount":0,"ownerInterruptionCount":0},"version":"1.30.5-truthful-release-correlation","prNumber":3931,"terminal":false,"missionId":"42f83993-13f9-4297-a1cd-beff15e4b339","operation":"execute_mission","proofGate":"ship_and_prove_release_pending","sourceSha":"a614fde23772a883d3919a875bb5eb46dfa708fc","timingsMs":null,"nextAction":null,"receiptRef":{"mode":"full","missionId":"42f83993-13f9-4297-a1cd-beff15e4b339"},"performance":null,"deploymentId":"canonical-release-a614fde23772","workflowRunId":30867231352,"releaseTargets":{"frontend":false,"onrunner":true,"ccExecution":false,"supabaseEdge":false},"detailsAvailable":true,"sourceReceiptBytes":1856,"ownerActionRequired":false},"tenant_id":"c55998b4-82a3-467e-8d35-177bb4785f6e","created_at":"2026-08-04T00:57:52.866099+00:00","proof_gate":"ship_and_prove_release_pending","source_sha":"a614fde23772a883d3919a875bb5eb46dfa708fc","external_id":"canonical-release-a614fde23772","receipt_type":"execute_mission","idempotency_key":"mission:42f83993-13f9-4297-a1cd-beff15e4b339:execute_mission:ship_and_prove_release_pending","mission_step_id":"e59facea-6b17-47de-9529-3d70fe1cea5e","command_center_event_id":"42f83993-13f9-4297-a1cd-beff15e4b339"},{"id":"bf2ee838-20a0-465b-93fb-c28ab6dd31dc","source":"cc-execution","status":"retryable","payload":{"ok":false,"jobId":null,"phase":"implementation","branch":"ai/fix-big-papis-alpha-logo-20260823","reason":"The operation was aborted due to timeout","status":"retryable","metrics":{"receiptBytes":4662,"releaseCount":0,"toolCallCount":3,"repeatedCallCount":1,"ownerInterruptionCount":0},"version":"1.50.16-onrunner-release-ownership","prNumber":647,"terminal":false,"missionId":"90ab851e-66a2-46b9-92e2-e2615f9217f7","operation":"execute_mission","proofGate":"canonical_release_transport_retryable","sourceSha":null,"timingsMs":null,"nextAction":"Reconcile this same mission and pull request automatically; do not create a replacement branch or PR.","receiptRef":{"mode":"full","missionId":"90ab851e-66a2-46b9-92e2-e2615f9217f7"},"performance":null,"deploymentId":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":5012,"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-08-24T01:03:14.695972+00:00","proof_gate":"canonical_release_transport_retryable","source_sha":null,"external_id":"647","receipt_type":"execute_mission","idempotency_key":"mission:90ab851e-66a2-46b9-92e2-e2615f9217f7:execute_mission:canonical_release_transport_retryable","mission_step_id":"ee41252f-de0f-422f-b252-5b4bb581e6fc","command_center_event_id":"90ab851e-66a2-46b9-92e2-e2615f9217f7"},{"id":"bf322bc7-f5f1-4025-bac2-463884292cf2","source":"forgejo-runtime","status":"verified","payload":{"failed":[],"states":{"forgejo-main/source":"success","forgejo-release/workflow":"success","frontend-cloudflare/live":"success"},"mainSha":"2126ecfae1452652184abc7d5e7dbd2a0e885071","missing":[],"pending":[],"required":["forgejo-main/source","forgejo-release/workflow","frontend-cloudflare/live"],"sourceSha":"2126ecfae1452652184abc7d5e7dbd2a0e885071","releaseState":"verified","sourceInMain":true,"compareStatus":"protected_main_push_exact_source","releaseTargets":{"frontend":true,"migrations":false,"ccExecution":false,"supabaseEdge":false,"edgeFunctionSlugs":[]},"releaseTargetStates":{"frontend":"success"},"requestContractHash":"3aa6b8d41ce822d5ad63b289cf23bfd8be99c9ab5b4b1a6b8c7afd5462c4a296","forgejoWorkflowProof":{"url":"https://git.knocklaunch.app/noel/KnockLaunchOS/actions/runs/13041","runId":13041,"status":"success","sourceSha":"2126ecfae1452652184abc7d5e7dbd2a0e885071","conclusion":null,"failedJobs":[],"diagnostics":null,"exactSource":true,"targetStates":{"frontend":"success"},"targetJobCount":6,"observedTargetStates":{"frontend":"success"}},"releaseSourceVerified":true,"ccExecutionRuntimeProof":null,"releaseTargetRecoveryProof":null,"exactReleaseVerifiedAfterMainAdvanced":false},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-29T14:28:31.99541+00:00","proof_gate":"canonical_release_terminal_verified","source_sha":"2126ecfae1452652184abc7d5e7dbd2a0e885071","external_id":"forgejo-main-2126ecfae145","receipt_type":"canonical_release_status","idempotency_key":"mission:841a01ac-fc83-41c5-8be1-1b50df4c9f7f:forgejo-release-status:2126ecfae1452652184abc7d5e7dbd2a0e885071:verified:forgejo-main/source=success|forgejo-release/workflow=success|frontend-cloudflare/live=success","mission_step_id":"3e6e2aee-4604-4985-95c2-4f7095c8978e","command_center_event_id":"841a01ac-fc83-41c5-8be1-1b50df4c9f7f"},{"id":"bf344443-1adf-4151-85a9-f04092c1db93","source":"cc-execution","status":"source_resolution_required","payload":{"ok":true,"jobId":null,"phase":"implementation","branch":"ai/objective-first-repair-0c9214aed67b","reason":null,"status":"source_resolution_required","metrics":{"receiptBytes":6119,"releaseCount":0,"toolCallCount":3,"repeatedCallCount":1,"executorlessWaitMs":48001,"firstUsefulResultAt":"2026-09-29T02:20:23.532Z","recoveryAttemptCount":0,"ownerInterruptionCount":0},"version":"1.62.0-mission-freedom-cloudflare-primary","prNumber":null,"terminal":false,"missionId":"0c9214ae-d67b-4116-b34f-105594135791","operation":"execute_mission","proofGate":"repair_mission_source_resolution_required","sourceSha":null,"timingsMs":{"gateMs":0,"proofMs":0,"handlerMs":1222,"releaseMs":0,"mutationMs":0,"repositoryMs":0,"missionSetupMs":326,"providerAuthMs":0,"ledgerPrepareMs":326,"ledgerReconcileMs":0,"lineageReconcileMs":0,"resolvePreflightMs":326,"authoritativeLedgerMs":0,"ledgerAsyncDispatchMs":0,"totalSynchronousLedgerMs":326,"asyncBookkeepingDispatchMs":0,"ledgerAuthoritativeCommitMs":0},"nextAction":"Supply exact sourceTargets on the same mission; planner guesses cannot replace missing mission scope.","receiptRef":{"mode":"full","missionId":"0c9214ae-d67b-4116-b34f-105594135791"},"performance":null,"deploymentId":null,"releaseState":null,"workflowRunId":null,"releaseTargets":null,"detailsAvailable":true,"ownerFacingState":"IN_PROGRESS","pendingProofKinds":["runtime","visual"],"verificationState":null,"workflowInvariant":{"oneBranch":true,"oneMission":true,"oneRelease":true,"invariantScope":"repair_generation","onePullRequest":true,"terminalProofRequired":true,"correctiveGenerationsAllowed":true},"sourceReceiptBytes":1176,"likelyAffectedFiles":[],"ownerActionRequired":false,"ownerFacingTerminal":false,"continuationRequired":true,"requestContractState":"pending"},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-29T02:20:23.550905+00:00","proof_gate":"repair_mission_source_resolution_required","source_sha":null,"external_id":null,"receipt_type":"execute_mission","idempotency_key":"mission:0c9214ae-d67b-4116-b34f-105594135791:execute_mission:repair_mission_source_resolution_required:current-generation","mission_step_id":"162b58af-8e87-4a7f-b741-4212ab04212a","command_center_event_id":"0c9214ae-d67b-4116-b34f-105594135791"},{"id":"bf35a56f-f112-47e2-b04c-867bc0e2b034","source":"forgejo-runtime","status":"pending","payload":{"failed":[],"states":{"forgejo-main/source":"success","forgejo-release/workflow":"pending","frontend-cloudflare/live":"pending"},"mainSha":"8698b71867162915b662db8e7adbf4cd108bf443","missing":[],"pending":["forgejo-release/workflow","frontend-cloudflare/live"],"required":["forgejo-main/source","forgejo-release/workflow","frontend-cloudflare/live"],"sourceSha":"8698b71867162915b662db8e7adbf4cd108bf443","releaseState":"pending","sourceInMain":true,"compareStatus":"protected_main_push_exact_source","releaseTargets":{"frontend":true,"onrunner":false,"migrations":false,"ccExecution":false,"supabaseEdge":false,"edgeFunctionSlugs":[]},"releaseTargetStates":{"frontend":"pending"},"requestContractHash":"d92d4333e36e1e1b3148dc2622f220b394b47ae0180ba719cdddc9a54a5b80f9","forgejoWorkflowProof":{"runId":11358,"source":"signed_push_receipt","status":"running","results":{},"conclusion":"running","targetStates":{"frontend":"pending"},"targetJobCount":7,"observedTargetStates":{"frontend":"pending"}},"onrunnerRuntimeProof":null,"releaseSourceVerified":true,"ccExecutionRuntimeProof":null,"releaseTargetRecoveryProof":null,"exactReleaseVerifiedAfterMainAdvanced":false},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-24T04:30:31.428017+00:00","proof_gate":"canonical_release_pending","source_sha":"8698b71867162915b662db8e7adbf4cd108bf443","external_id":"forgejo-main-8698b7186716","receipt_type":"canonical_release_status","idempotency_key":"mission:1b5bf6e2-b3e1-4999-a394-fb9eeb818009:forgejo-release-status:8698b71867162915b662db8e7adbf4cd108bf443:pending:forgejo-main/source=success|forgejo-release/workflow=pending|frontend-cloudflare/live=pending","mission_step_id":"c641e06c-2c48-41d0-a0d4-2aa5347637d1","command_center_event_id":"1b5bf6e2-b3e1-4999-a394-fb9eeb818009"},{"id":"bf363d35-e22c-41f0-8798-1422bc04fe09","source":"durable-mission-ledger","status":"pending","payload":{"sourceSha":"73e6e462c7a9cba64327b0c32c4926a3176a30da","requestContractProof":{"legacy":false,"present":true,"outcomes":[{"id":"outcome-1","satisfied":false,"statement":"Refactor the Big Papi owner desktop route family into a dedicated tenant-first MODES presentation shell. Remove visible generic CRM/PrivateAppShell presentation from the Big Papi experience while preserving shared platform infrastructure underneath. Enforce canonical MODEs Plan the Week, Pop-Up, Event, Back Office; compact desktop density with readable text; fixed contextual workflow headers directly below the tenant header; Big Papi-owned navigation/theme/search/avatar/settings/utility placement; no ghost mobile nav, generic CRM leakage, duplicated generic controls, or tenant-selection/loading flash. Keep Calendar and Pop-Up as the design baseline for the other Big Papi applications. Add focused frontend contracts. Ship through one ai branch, one PR, canonical gate, squash merge, production deploy, and live verification.","proofConditionIds":["proof-production","proof-visual"]}],"satisfied":false,"constraints":[{"id":"visual-content-truth","satisfied":false,"statement":"Do not present invented names, metrics, prices, dates, services, testimonials, credentials, customer records, or other unknown business facts as real. Omit unknowns or mark them clearly as placeholder/example content.","proofConditionIds":["proof-production","proof-visual"]},{"id":"tenant-visual-isolation","satisfied":false,"statement":"Visual work is isolated to requested tenant. Do not import another tenant's logo, colors, imagery, copy, shell, customer data, business facts, or visual identity unless explicitly requested.","proofConditionIds":["proof-production","proof-visual"]},{"id":"visual-viewport-authority","satisfied":false,"statement":"The requested desktop viewport/form factor is authoritative. Do not create a mixed-device composite or add another viewport unless explicitly requested.","proofConditionIds":["proof-production","proof-visual"]},{"id":"capability-completeness","satisfied":true,"statement":"Every dependency the implementation declares or relies on must be wired and proven across applicable frontend, backend/runtime, schema/data/storage, authentication/authorization, provider configuration, prerequisite/loading/empty/error states, release ownership, and live production behavior; owner-authorized unavailable dependencies must become explicit prerequisite states rather than runtime failures.","proofConditionIds":["proof-production"]},{"id":"atomic-capability-lifecycle","satisfied":true,"statement":"Changed capabilities remain non-active until dependency readiness, N/N-1 compatibility, affected-target release, and claim-matched production canary proof are satisfied; missing optional dependencies become prerequisite_required, and runtime drift or health-contract violation quarantines only the affected capability instead of breaking unrelated working capability.","proofConditionIds":["proof-production"]}],"contractHash":"767ffeda39cbbd7026179b97e8fe00a8855624f34e7d1bf6a63a1b782c7860ac","releaseBound":true,"witnessBound":false,"visualRequested":true,"visualSatisfied":false,"conditionResults":[{"id":"proof-production","kind":"runtime","evidence":{"reason":null,"satisfied":true,"releaseState":"verified","missingTargets":[],"disallowedTargets":[],"migrationRequired":false,"releaseTargetStates":{"frontend":"success"},"unsuccessfulTargets":[],"activeReleaseTargets":["frontend"],"allowedReleaseTargets":[],"requiredReleaseTargets":[],"migrationReleaseVerified":null,"releaseRequestContractHash":"767ffeda39cbbd7026179b97e8fe00a8855624f34e7d1bf6a63a1b782c7860ac"},"required":true,"satisfied":true},{"id":"proof-visual","kind":"visual","evidence":{"modeBound":true,"claimBound":true,"routeBound":true,"witnessMode":"observe","witnessRoute":"/big-papis/owner","currentSourceSha":"73e6e462c7a9cba64327b0c32c4926a3176a30da","witnessSourceSha":"73e6e462c7a9cba64327b0c32c4926a3176a30da","verificationState":"failed","witnessRequestContractHash":"767ffeda39cbbd7026179b97e8fe00a8855624f34e7d1bf6a63a1b782c7860ac"},"required":true,"satisfied":false}],"validationErrors":[],"pendingProofKinds":["visual"],"activeReleaseTargets":["frontend"]},"authoritativeMissionRefresh":true,"evaluatedRequestContractRevision":1},"tenant_id":"a3ffa31f-0c88-4fdd-b872-051db013ca3e","created_at":"2026-09-24T05:47:27.905723+00:00","proof_gate":"request_contract_pending","source_sha":"73e6e462c7a9cba64327b0c32c4926a3176a30da","external_id":null,"receipt_type":"request_contract_reconciliation","idempotency_key":"mission:0a680ea0-28cd-4751-b264-c7ac0f65951b:request-contract:767ffeda39cbbd7026179b97e8fe00a8855624f34e7d1bf6a63a1b782c7860ac:73e6e462c7a9cba64327b0c32c4926a3176a30da:pending:visual","mission_step_id":"17b53691-1b97-40a2-8810-29374aae5548","command_center_event_id":"0a680ea0-28cd-4751-b264-c7ac0f65951b"}],"rows":400,"limit":400,"table":"command_center_receipts","format":"knocklaunch-table-chunk-v1","offset":32800,"schema":"public","order_key":"id"}