Commit 919828a385c69f9f706723b9cd83111ada8611e3
graphlemon: merge prd-consistency-66b042ac920e
Showing
2 changed files
with
29 additions
and
0 deletions
.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. |