diff --git a/docs/work-items/ORCH-046/15-staging-log.md b/docs/work-items/ORCH-046/15-staging-log.md new file mode 100644 index 0000000..d9a2b74 --- /dev/null +++ b/docs/work-items/ORCH-046/15-staging-log.md @@ -0,0 +1,90 @@ +--- +staging_status: FAILED +timestamp: 2026-06-06T04:47:45Z +base_url: http://localhost:8501 +mode: stub +result: 9/10 checks PASS +failed_checks: [B6] +--- + +# Staging Gate Log — ORCH-046 + +Staging test suite **FAILED**. Exit code 1 (9/10 checks passed). + +## Verdict + +The staging gate is **red**: one check failed (`B6`). Per pipeline policy a +non-zero staging suite is `staging_status: FAILED` → rollback to `development`. + +## Failed check + +``` +✗ FAIL B6 Registry: sandbox present, prod ET/ORCH absent + [sandbox=NO, prod-ET=YES(BAD!), prod-ORCH=YES(BAD!)] +``` + +**What it means.** The staging container's project registry is **not isolated**: +it sees the production projects `enduro-trails` (ET) and `orchestrator` (ORCH), +and the `orchestrator-sandbox` (SANDBOX) project is **absent**. This violates the +hard isolation invariant for staging (`docs/operations/INFRA.md`: «Staging видит +ТОЛЬКО `orchestrator-sandbox` (SANDBOX) — изоляция»). The staging gate exists +precisely to catch this class of safety breach before any prod deploy of the +self-hosting orchestrator. + +**Triage note (for humans).** This is a **staging environment / configuration** +issue — the staging container's `ORCH_PROJECTS_JSON` is pointing at the prod +registry instead of the sandbox-only registry. It is **not** a code regression +introduced by the ORCH-046 changeset (which only touches `src/review_parse.py` +and rollback `task_desc` enrichment). However, the gate is authoritative and red, +so the work item cannot pass to `deploy`. Fix the staging `.env.staging` / +`ORCH_PROJECTS_JSON` to expose only SANDBOX, re-run the staging suite, and the +gate will go green. + +> ⚠️ Safety note: the first run aborted at `A3` because `ORCH_STAGING` was not +> set in the runner env (the script's guard against accidentally hitting prod). +> Re-run with `ORCH_STAGING=true` against the staging URL (8501) executed the +> full suite. Prod (8500) was never touched. + +## Full suite output + +``` +============================================================ + ORCH-33 Staging Check Suite + base_url : http://localhost:8501 + mode : stub + utc_time : 2026-06-06T04:47:27.628664+00:00 +============================================================ + +[Block A] SMOKE + ✓ PASS A1 GET /health → 200 status=ok [HTTP 200, body={'status': 'ok', 'service': 'orchestrator'}] + ✓ PASS A2 GET /queue → 200 with counts/max_concurrency/resilience [HTTP 200, keys=['counts', 'max_concurrency', 'poll_interval', 'resilience', 'recent']] + ✓ PASS A3 ORCH_STAGING=true (not prod) [ORCH_STAGING=true] + +[Block B] ACCESS + ✓ PASS B4 Plane: sandbox project accessible [HTTP 200, found 5 project(s), sandbox=YES] + ✓ PASS B5 Gitea: orchestrator-sandbox accessible, push=true [HTTP 200, permissions={'admin': True, 'push': True, 'pull': True}] + ✗ FAIL B6 Registry: sandbox present, prod ET/ORCH absent [sandbox=NO, prod-ET=YES(BAD!), prod-ORCH=YES(BAD!)] + +[Block C] E2E (mode=stub) + · C7: Creating issue in SANDBOX project... + ✓ PASS C7 Create issue in Plane SANDBOX [HTTP 201, issue_id=2fcbcb0c-1b29-4b76-8ba8-a8fe42cebdb4] + · C8: Triggering pipeline via POST /webhook/plane ... + · Using HMAC signature (secret len=40) + ✓ PASS C8 Trigger pipeline via /webhook/plane [HTTP 200, resp={'status': 'accepted'}] + · C9a: Polling for branch in orchestrator-sandbox (up to 60s)... + ✓ PASS C9a Branch appears in orchestrator-sandbox [branch=feature/SANDBOX-011-staging-check-e2e-20260606t044] + · C9b: Checking staging job queue for analyst job (up to 30s)... + · (Plane comment check skipped: bot-tokens not added to SANDBOX project) + ✓ PASS C9b Analyst job enqueued in staging queue [job_id=7, status=queued, agent=analyst] + +[CLEANUP] + ✓ PASS CLEANUP: deleted branch 'feature/SANDBOX-011-staging-check-e2e-20260606t044' (HTTP 204) + ✓ PASS CLEANUP: deleted Plane issue 2fcbcb0c-1b29-4b76-8ba8-a8fe42cebdb4 (HTTP 204) + · CLEANUP DB: no task row found for plane_id=2fcbcb0c-1b29-4b76-8ba8-a8fe42cebdb4 + · CLEANUP DB dedup: no such table: events_dedup + +============================================================ + RESULT: 9/10 checks PASS +============================================================ +EXIT_CODE=1 +```