From 258eb7ef2fed29ec32c628ddd6f9b93c5e3b68e9 Mon Sep 17 00:00:00 2001 From: Claude Code Date: Thu, 6 Aug 2026 14:31:43 +0900 Subject: [PATCH] PHASE-1-SHADOW-RUN: define concrete execution evidence plan --- .../CURRENT/CATALOGS/WBS_PROGRESS_TRACKER.csv | 2 +- .../PHASE-1_EXECUTION_EVIDENCE_PLAN.md | 116 ++++++++++++++++++ 2 files changed, 117 insertions(+), 1 deletion(-) create mode 100644 docs/CURRENT/PHASE-1_EXECUTION_EVIDENCE_PLAN.md diff --git a/docs/CURRENT/CATALOGS/WBS_PROGRESS_TRACKER.csv b/docs/CURRENT/CATALOGS/WBS_PROGRESS_TRACKER.csv index 1d431650..c9e0eac5 100644 --- a/docs/CURRENT/CATALOGS/WBS_PROGRESS_TRACKER.csv +++ b/docs/CURRENT/CATALOGS/WBS_PROGRESS_TRACKER.csv @@ -24,4 +24,4 @@ AEG-X-011,S4,Cross,Golden vector 고도화,BLOCKED,TBD,"AGENTS.md: Algorithm cha AEG-VS-09-01,S4,VS-09,BuildEvidenceSnapshot,BLOCKED,TBD,"CLAUDE.md: Evidence requires Phase 1 results",PM/Architect,"Gate 2 prerequisite. Blocked by Phase 1." AEG-VS-10-01,S4,VS-10,GenerateSellDecision,BLOCKED,TBD,"CLAUDE.md: Model must pass PBO/DSR validation",PM/Architect,"Gate 3 prerequisite. Blocked by Phase 1." AEG-VS-19-01,S5,VS-19,RunFrozenBacktest,BLOCKED,TBD,"CLAUDE.md: Requires evidence from Phase 1-4",PM/Architect,"Gate 3 prerequisite. Blocked by Phase 1." -PHASE-1-SHADOW-RUN,S0-S5,Cross,252+ Trading Day Shadow Run,BLOCKED,TBD,"docs/CURRENT/PHASE-1_SHADOW_RUN_STATUS_CORRECTION.md; docs/CURRENT/AEG-X-004_DBUP_EVIDENCE.md; docs/CURRENT/PHASE-1_REQUEUE_READINESS.md; db/migrations/0032_shadow_run_queued_status_contract.sql; logs/phase-1-execution.log; logs/host-startup-20260804-173000.log",김재현/BE/SRE,"Owner 김재현; due 2026-08-06 KST. Status-contract correction and approved test-db rehearsal are complete. Legacy EXECUTE_PHASE_1_NOW.ps1 is explicitly disallowed. Remains BLOCKED until the owner attaches approved production VersionSet, fresh Run/Job IDs, and production migration/DBA evidence." +PHASE-1-SHADOW-RUN,S0-S5,Cross,252+ Trading Day Shadow Run,BLOCKED,TBD,"docs/CURRENT/PHASE-1_SHADOW_RUN_STATUS_CORRECTION.md; docs/CURRENT/AEG-X-004_DBUP_EVIDENCE.md; docs/CURRENT/PHASE-1_REQUEUE_READINESS.md; docs/CURRENT/PHASE-1_EXECUTION_EVIDENCE_PLAN.md; db/migrations/0032_shadow_run_queued_status_contract.sql; logs/phase-1-execution.log; logs/host-startup-20260804-173000.log",김재현/BE/SRE,"Owner 김재현; due 2026-08-06 KST. Concrete evidence plan prepared: server VersionSet, DBA receipt, new IDs, 202 enqueue response, and observation artifacts. Legacy EXECUTE_PHASE_1_NOW.ps1 is disallowed. Status changes only after actual artifacts are preserved." diff --git a/docs/CURRENT/PHASE-1_EXECUTION_EVIDENCE_PLAN.md b/docs/CURRENT/PHASE-1_EXECUTION_EVIDENCE_PLAN.md new file mode 100644 index 00000000..386b0bd5 --- /dev/null +++ b/docs/CURRENT/PHASE-1_EXECUTION_EVIDENCE_PLAN.md @@ -0,0 +1,116 @@ +# Phase 1 Execution Evidence Plan + +## Objective + +Create the evidence required to move `PHASE-1-SHADOW-RUN` from `BLOCKED` to `RUNNING`, using shadow-only / `EVALUATION_ONLY` execution. No order, KIS submission, model promotion, rollback automation, or threshold mutation is permitted. + +## Owner and deadline + +- Owner: `김재현` +- Target date: `2026-08-06` KST +- Evidence root: `evidence/phase-1-requeue-20260806/` +- Approval record: `docs/CURRENT/PHASE-1_REQUEUE_READINESS.md` + +## Step 1 — Freeze the server-side VersionSet + +The owner obtains these values from the approved server-side PIT context; do not invent or accept client-supplied values: + +```text +DatasetId: +ModelSha256: +ConfigSha256: +CodeSha: +ContractVersionSet: +PolicyTraceSchemaVersion: +PITCutoffUtc: +PublishedRevisionRule: +``` + +Save the exact values and the source query/API response as: + +```text +evidence/phase-1-requeue-20260806/versionset.json +evidence/phase-1-requeue-20260806/versionset-command.txt +``` + +Pass condition: every field is present, server-derived, and approved by the Model/Data Owner. A missing field stops the procedure. + +## Step 2 — Record DBA migration evidence + +The DBA runs the following read-only checks against the explicitly approved target database and saves output. The database name must be checked before execution. + +```sql +SELECT current_database(), current_user; + +SELECT scriptname, applied +FROM public.__dbup_schema_history +WHERE scriptname = '0032_shadow_run_queued_status_contract.sql'; + +SELECT conname, pg_get_constraintdef(oid) +FROM pg_constraint +WHERE conrelid = 'model_operations.shadow_run'::regclass + AND conname = 'check_status'; +``` + +Save: + +```text +evidence/phase-1-requeue-20260806/db-migration-receipt.txt +evidence/phase-1-requeue-20260806/db-migration-receipt.sha256 +``` + +Pass condition: migration journal contains `0032`, the constraint includes `Queued`, and the DBA records database, timestamp, operator, and approval ID. + +## Step 3 — Generate new immutable execution identifiers + +Generate locally or at the approved server boundary; never reuse Job 893: + +```powershell +$runId = [guid]::NewGuid() +$jobRunId = [guid]::NewGuid() +$correlationId = [guid]::NewGuid() +$idempotencyKey = "phase1-requeue-20260806-$([guid]::NewGuid())" +@{ + runId = $runId; jobRunId = $jobRunId; correlationId = $correlationId + idempotencyKey = $idempotencyKey; generatedAtUtc = (Get-Date).ToUniversalTime().ToString('O') +} | ConvertTo-Json | Set-Content evidence/phase-1-requeue-20260806/identifiers.json +``` + +Record the generated values in the approval form before enqueue. Do not log credentials or tokens. + +## Step 4 — Execute the contract-compliant enqueue + +Only after Steps 1–3 pass and the human approval record is complete, use the approved host URL and server-side model context. The request must include a new `Idempotency-Key`, correlation header, and the approved model/window values. + +```powershell +$headers = @{ + 'Idempotency-Key' = $idempotencyKey + 'X-Correlation-Id' = $correlationId + 'X-KArtSell-User' = '김재현' + 'X-KArtSell-Role' = 'Researcher' +} +$body = @{ + model_id = '' + window_start = '' + window_end = '' + phase_filter = 'All' +} | ConvertTo-Json + +Invoke-WebRequest -Uri '/api/shadow-runs' -Method Post ` + -Headers $headers -ContentType 'application/json' -Body $body ` + -OutFile evidence/phase-1-requeue-20260806/enqueue-response.json +``` + +Pass condition: HTTP 202, a new `run_id`, a new `job_id`, and `status=Queued`. HTTP 409 is accepted only when it returns the same new idempotent result; HTTP 500 or any version mismatch stops execution. + +## Step 5 — Preserve observation evidence + +Poll only the returned new `run_id`. Save raw responses and timestamps under the evidence root. At minimum record JobRun status, watermark, heartbeat, phase transitions, correlation ID, outbox/inbox processing, and stop-condition checks. Do not claim completion until the actual artifacts exist. + +## Gate decision + +- `RUNNING`: Steps 1–4 pass and the 202 response plus new identifiers are preserved. +- `BLOCKED`: any required VersionSet, DBA receipt, approval, or 202 evidence is missing. +- `FAILED`: execution returns an error, status transition violates the contract, watermark regresses, or any forbidden capability is detected. Preserve evidence and stop; do not mutate historical records. + +This plan is an execution aid, not evidence itself. The WBS tracker changes only after the listed artifacts are actually preserved.