Commit c8f79fb64c42e7a656b2983695ab35013e53ca2a

Authored by graphlemon
1 parent 9ac57025

graphlemon: auto-commit uncommitted changes for prd-consistency-66b042ac920e

.claude/agent-memory/planner/MEMORY.md
@@ -6,3 +6,4 @@ @@ -6,3 +6,4 @@
6 - [org-strip click-through bug: 3 render sites, not 1](project_org_strip_click_through_bug.md) — renderOrgStrip (dashboard), v_task_detail's inline org-strip, and #/graph's renderOrgGraphTopology all share the same no-click gap; DAG/log/artifact display mechanisms already exist and must be reused, not rebuilt; no new backend endpoint needed 6 - [org-strip click-through bug: 3 render sites, not 1](project_org_strip_click_through_bug.md) — renderOrgStrip (dashboard), v_task_detail's inline org-strip, and #/graph's renderOrgGraphTopology all share the same no-click gap; DAG/log/artifact display mechanisms already exist and must be reused, not rebuilt; no new backend endpoint needed
7 - [run-history click → missing run detail page](project_run_history_click_missing_detail_page.md) — gc_runs_list click only switches task selector, no #/runs/:run_id route exists (documented trade-off, not a bug regression); DAG-panel+log-viewer funcs are run-object-generic and reusable verbatim; backend needs one new by-run_id query since _work_nodes_for_run already exists keyed by run_id 7 - [run-history click → missing run detail page](project_run_history_click_missing_detail_page.md) — gc_runs_list click only switches task selector, no #/runs/:run_id route exists (documented trade-off, not a bug regression); DAG-panel+log-viewer funcs are run-object-generic and reusable verbatim; backend needs one new by-run_id query since _work_nodes_for_run already exists keyed by run_id
8 - [nav current-project-context PRD: consistent](project_nav_current_project_context_prd.md) — reviewed 2026-08-06, no contradictions; FR-5's "query-string parsing fix" is actually an add (render() has no query-string parsing today, only hash-path regex) — flag as accuracy issue at SDD stage, not a PRD contradiction 8 - [nav current-project-context PRD: consistent](project_nav_current_project_context_prd.md) — reviewed 2026-08-06, no contradictions; FR-5's "query-string parsing fix" is actually an add (render() has no query-string parsing today, only hash-path regex) — flag as accuracy issue at SDD stage, not a PRD contradiction
  9 +- [deploy_stage.py ConcurrentDeploymentError PRD: consistent](project_deploy_stage_concurrent_conflict_prd.md) — reviewed 2026-08-07, no contradictions; all facts (staged→candidate_starting transition, ux_deployment_active terminal set) verified against code
.claude/agent-memory/planner/project_deploy_stage_concurrent_conflict_prd.md 0 → 100644
  1 +---
  2 +name: deploy-stage-concurrent-conflict-prd
  3 +description: PRD for supervisor/deploy_stage.py ConcurrentDeploymentError (G1/G2) reviewed 2026-08-07 -- consistent, no contradictions found
  4 +metadata:
  5 + type: project
  6 +---
  7 +
  8 +Reviewed the PRD "supervisor/deploy_stage.py 并发部署冲突的诊断化处理" (adds a named
  9 +`ConcurrentDeploymentError` with `git_commit_hash`/`blocking_deployment_id`/`blocking_status`
  10 +attributes, replacing the raw `sqlite3.IntegrityError` that currently escapes when
  11 +`ux_deployment_active` rejects a concurrent `INSERT`; also backfills regression tests for the
  12 +`rolled_back`/`blocked_pending_human` terminal-state release paths that
  13 +`test_only_one_non_terminal_deployment_allowed` doesn't cover).
  14 +
  15 +**Why:** verified against the real code (`supervisor/deploy_stage.py:143-201`,
  16 +`src/schema.py:305-306,332-333`, `supervisor/test_deploy_stage.py:171-180`) -- every factual claim
  17 +in the PRD's background/已知事实 section matches current code exactly, including the
  18 +staged→candidate_starting status transition sequencing and the exact set of terminal states
  19 +excluded by `ux_deployment_active` (`finalized`/`rolled_back`/`blocked_pending_human`, with
  20 +`health_check_failed`/`rollback_failed` explicitly and correctly called out as still non-terminal).
  21 +No self-contradiction found between Non-Goals (no return-value/CheckoutFailedError changes, no
  22 +app-level locking) and the FRs/ACs.
  23 +
  24 +**How to apply:** if this PRD or a follow-up SDD/task references G1/G2/G3 again, treat the facts as
  25 +re-verified as of 2026-08-07; re-check `stage_deployment()`'s try/except structure before trusting
  26 +this if it has been edited since. See also [[project_deploy_health_check_startup_timeout_comment_missing]]
  27 +and [[project_deploy_health_check_http_timeout_comment_missing]] for other Deploy Supervisor PRD
  28 +review history in this same area of the codebase.