add plan and cursor prompts for schema v2#152
Conversation
Implements the SCHEMA-V2 propose merge gate with a four-PR rollout (EDGE_SCHEMA, HTTP/ASYNC endpoint flips, Producer node, hints v3) and per-PR execution contracts. Co-authored-by: Cursor <cursoragent@cursor.com>
HumanBean17
left a comment
There was a problem hiding this comment.
Review summary
Verdict: Approve — satisfies Decision 29 (plan + prompts before PR-A code). Docs are well structured, aligned with propose/SCHEMA-V2-PROPOSE.md, and match the repo’s PLAN-* / CURSOR-PROMPTS-* pattern. CI green; scope is appropriately docs-only.
Below are items to resolve before or during PR-A implementation (not blockers for merging this PR).
Critical (before PR-A code)
1. Decision 30 vs plan wording
The propose says HINTS-V3-PROPOSE.md must exist before PR-A merges. The plan softens this to “tracked plan to land PR-D.” propose/HINTS-V3-PROPOSE.md does not exist yet. Merging PR-A code without HINTS-V3 scheduled leaves UC3 (neighbors(method, out, HTTP_CALLS) → [] with no actionable hint). Recommend either opening the HINTS-V3 propose in the same stack before PR-A code, or tightening the plan to match the propose.
2. ONTOLOGY_VERSION bump in PR-A breaks v13 indexes immediately
kuzu_queries.KuzuGraph.get() rejects graphs where meta.ontology_version < ONTOLOGY_VERSION. Bumping to 14 in PR-A (with unchanged graph shape) will refuse all v13 indexes as soon as PR-A lands — not only after PR-B/C as the propose/README imply (“rebuild after B+C”).
Pick one and document explicitly in PR-A README:
- A: Defer version bump to PR-B (first shape change), or
- B: Keep bump in PR-A but state “full re-index required after PR-A” (version-only break).
3. PR-A manual evidence uses bare python -c
CURSOR-PROMPTS common rules require .venv/bin/python; the PR-A manual block should use .venv/bin/python -c for consistency with repo rules.
Medium (during implementation)
p:vsproducer:— Decision locksp:(parallelc:). Plan PR-C mentionsproducer:prefix; mirror Client’s dual acceptance (c:/client:) in the plan.BROWNFIELD_RESOLVER_STRATEGY_SET— enumerate members explicitly or add a test that fails on unknown emitted strategies (avoid drift into PR-D).- PR-B half-migration — async trace/pr_analysis may stay one-hop until PR-C; ensure PR-C adds explicit async
pr_analysiscoverage (UC9 async arm). - Doc generator CI — pick one enforcement path (pytest subprocess
--checkis enough); avoid “optional workflow” with no pytest hook. - CURSOR-PROMPTS PR-D — add
test_hints_neighbors_client_edge_summary_nonzero_out(in plan, missing from prompt). - PR body “32 decisions reviewed” — plan table doesn’t enumerate all 32; optional decision→PR mapping appendix would help code PR reviewers.
Nits
- PR-A must ship 10 pre-flip
EDGE_SCHEMAentries — do not paste propose Appendix A (11 post-flip entries) into PR-A. - Propose Decision 17 (“hints gated on PR-A”) wording conflicts with Decision 30; plan PR-D blocking is the operative rule.
Happy to merge this planning PR as-is; the above is for the implementation chain (A→B→C→D).
Summary
plans/PLAN-SCHEMA-V2.md— four-PR execution plan implementingpropose/SCHEMA-V2-PROPOSE.md(EDGE_SCHEMA infra, HTTP_CALLS Client→Route flip, Producer node + ASYNC_CALLS flip, hints v3 gated on HINTS-V3-PROPOSE).plans/CURSOR-PROMPTS-SCHEMA-V2.md— per-PR Cursor handoffs with sentinels, named tests, and manual evidence commands.Satisfies Decision 29 merge gate: plan + prompts must land before PR-A code.
Test plan
Made with Cursor