From ffb36aced94128c08c4b3b66e5c1878f8196396f Mon Sep 17 00:00:00 2001 From: Dmitry Teryaev Date: Sat, 16 May 2026 17:40:41 +0300 Subject: [PATCH 1/2] update completed propose and plan docs to shipped status Align status lines in propose/completed/ and plans/completed/ with landed work; note PR-E2 strategy-ladder consolidation as deferred. Co-authored-by: Cursor --- plans/completed/CURSOR-PROMPTS-CLI-SCENARIOS.md | 2 +- .../CURSOR-PROMPTS-LOSSLESS-PERMISSIVE-NODEFILTER.md | 2 +- .../PLAN-BROWNFIELD-ROLE-OVERRIDES-design-fixes.md | 2 +- plans/completed/PLAN-BROWNFIELD-ROLE-OVERRIDES.md | 2 +- plans/completed/PLAN-CALL-GRAPH.md | 2 +- plans/completed/PLAN-CAPABILITIES-MODEL.md | 2 +- plans/completed/PLAN-CLIENT-ROLE-RENAME.md | 2 +- plans/completed/PLAN-COCOINDEX-SYMLINK-FIX.md | 6 ++++-- plans/completed/PLAN-CROSS-SERVICE-RESOLUTION-FLAG.md | 2 +- plans/completed/PLAN-DESCRIBE-MEMBER-EDGE-ROLLUP.md | 2 +- plans/completed/PLAN-ENUM-ANNOTATION-FIXES.md | 2 +- plans/completed/PLAN-FEIGN-NOT-AN-EXPOSER.md | 2 +- plans/completed/PLAN-HINTS.md | 4 ++-- plans/completed/PLAN-HTTP-ROUTE-METHOD-ENUM.md | 2 +- plans/completed/PLAN-POST-TIER1B-FOLLOWUPS.md | 4 ++-- plans/completed/PLAN-REMOTE-PROJECT-INDEXING.md | 2 ++ propose/completed/AGENT-GUIDE-SURGICAL-PATCHES-PROPOSE.md | 2 +- .../BROWNFIELD-ANNOTATIONS-V2-ADDENDUM-HTTP-METHOD-ENUM.md | 2 ++ propose/completed/BROWNFIELD-ANNOTATIONS-V2-PROPOSE.md | 3 +-- propose/completed/CALL-GRAPH-PROPOSE.md | 4 ++-- propose/completed/CLIENT-ROLE-RENAME-PROPOSE.md | 2 +- propose/completed/CROSS-SERVICE-RESOLUTION-FLAG-PROPOSE.md | 2 +- propose/completed/EXPLORATION-SKILL-PROPOSE.md | 2 +- propose/completed/FEIGN-NOT-AN-EXPOSER-PROPOSE.md | 2 +- propose/completed/HTTP-ROUTE-METHOD-ENUM-PROPOSE.md | 2 +- propose/completed/YAML-PATH-EXPANSION-PROPOSE.md | 2 +- 26 files changed, 34 insertions(+), 29 deletions(-) diff --git a/plans/completed/CURSOR-PROMPTS-CLI-SCENARIOS.md b/plans/completed/CURSOR-PROMPTS-CLI-SCENARIOS.md index a347886..69cd153 100644 --- a/plans/completed/CURSOR-PROMPTS-CLI-SCENARIOS.md +++ b/plans/completed/CURSOR-PROMPTS-CLI-SCENARIOS.md @@ -1,6 +1,6 @@ # Cursor task prompts — CLI scenarios (PR-CLI-1 → PR-CLI-3) -Status: **active**. Implements +Status: **completed** (reference). Implements [`plans/completed/PLAN-CLI-SCENARIOS.md`](./PLAN-CLI-SCENARIOS.md) and [`propose/completed/CLI-SCENARIOS-PROPOSE.md`](../propose/completed/CLI-SCENARIOS-PROPOSE.md). diff --git a/plans/completed/CURSOR-PROMPTS-LOSSLESS-PERMISSIVE-NODEFILTER.md b/plans/completed/CURSOR-PROMPTS-LOSSLESS-PERMISSIVE-NODEFILTER.md index 7bc690c..e76a0b9 100644 --- a/plans/completed/CURSOR-PROMPTS-LOSSLESS-PERMISSIVE-NODEFILTER.md +++ b/plans/completed/CURSOR-PROMPTS-LOSSLESS-PERMISSIVE-NODEFILTER.md @@ -1,6 +1,6 @@ # Cursor task prompts — Lossless-permissive `NodeFilter` (PR-N1) -Status: **active**. Implements +Status: **completed** (reference). Implements [`plans/PLAN-LOSSLESS-PERMISSIVE-NODEFILTER.md`](./PLAN-LOSSLESS-PERMISSIVE-NODEFILTER.md) and [`propose/LOSSLESS-PERMISSIVE-NODEFILTER-PROPOSE.md`](../propose/LOSSLESS-PERMISSIVE-NODEFILTER-PROPOSE.md). diff --git a/plans/completed/PLAN-BROWNFIELD-ROLE-OVERRIDES-design-fixes.md b/plans/completed/PLAN-BROWNFIELD-ROLE-OVERRIDES-design-fixes.md index f40a300..13ec61f 100644 --- a/plans/completed/PLAN-BROWNFIELD-ROLE-OVERRIDES-design-fixes.md +++ b/plans/completed/PLAN-BROWNFIELD-ROLE-OVERRIDES-design-fixes.md @@ -1,6 +1,6 @@ # Plan: brownfield role/capability overrides — design-fix changelog -Status: **applied**. Companion document to +Status: **completed** — applied. Companion document to `PLAN-BROWNFIELD-ROLE-OVERRIDES.md`. ## Why this file exists diff --git a/plans/completed/PLAN-BROWNFIELD-ROLE-OVERRIDES.md b/plans/completed/PLAN-BROWNFIELD-ROLE-OVERRIDES.md index 536d32c..b6ef32f 100644 --- a/plans/completed/PLAN-BROWNFIELD-ROLE-OVERRIDES.md +++ b/plans/completed/PLAN-BROWNFIELD-ROLE-OVERRIDES.md @@ -1,6 +1,6 @@ # Plan: brownfield role / capability overrides -Status: **agreed, ready to implement**. Self-contained: an agent picking +Status: **completed** — shipped (`BrownfieldOverrides` role/capability layers on `master`). Self-contained: an agent picking this up should be able to land it without re-deriving the design. ## Goal diff --git a/plans/completed/PLAN-CALL-GRAPH.md b/plans/completed/PLAN-CALL-GRAPH.md index c012046..bcde568 100644 --- a/plans/completed/PLAN-CALL-GRAPH.md +++ b/plans/completed/PLAN-CALL-GRAPH.md @@ -1,6 +1,6 @@ # Plan: call-graph layer (static intra-JVM `CALLS` + `DECLARES`) -Status: **ready to implement**. Self-contained: an agent picking this up +Status: **completed** — shipped (static intra-JVM `CALLS` + `DECLARES` on `master`). Self-contained: an agent picking this up should be able to land it without re-deriving the design. Pairs with `propose/completed/CALL-GRAPH-PROPOSE.md` (scope, rationale, schema). diff --git a/plans/completed/PLAN-CAPABILITIES-MODEL.md b/plans/completed/PLAN-CAPABILITIES-MODEL.md index d9404a9..7c8d9e6 100644 --- a/plans/completed/PLAN-CAPABILITIES-MODEL.md +++ b/plans/completed/PLAN-CAPABILITIES-MODEL.md @@ -1,6 +1,6 @@ # Plan: capabilities model (multi-tag annotations on Java types) -Status: **agreed, ready to implement**. Self-contained: an agent picking +Status: **completed** — shipped (`capabilities` on Symbol nodes + brownfield overrides on `master`). Self-contained: an agent picking this up should be able to land it without re-deriving the design. ## Goal diff --git a/plans/completed/PLAN-CLIENT-ROLE-RENAME.md b/plans/completed/PLAN-CLIENT-ROLE-RENAME.md index ee6ef56..bf2f200 100644 --- a/plans/completed/PLAN-CLIENT-ROLE-RENAME.md +++ b/plans/completed/PLAN-CLIENT-ROLE-RENAME.md @@ -1,6 +1,6 @@ # Plan: `FEIGN_CLIENT` role → `CLIENT` + `HTTP_CLIENT` capability -Status: **active** — propose merged in [#28](https://github.com/HumanBean17/java-codebase-rag/pull/28). +Status: **completed** — shipped (propose merged in [#28](https://github.com/HumanBean17/java-codebase-rag/pull/28)). Source: `propose/CLIENT-ROLE-RENAME-PROPOSE.md` on master. Sequence: ships **after** PR-F1 (#31, merged) and PR-G1 (#30, merged). Master baseline at this plan's start: `aed732b`, `ONTOLOGY_VERSION = 8`, **281 passed, 4 skipped**. diff --git a/plans/completed/PLAN-COCOINDEX-SYMLINK-FIX.md b/plans/completed/PLAN-COCOINDEX-SYMLINK-FIX.md index aa4d1bf..68a0ca8 100644 --- a/plans/completed/PLAN-COCOINDEX-SYMLINK-FIX.md +++ b/plans/completed/PLAN-COCOINDEX-SYMLINK-FIX.md @@ -1,5 +1,7 @@ # Plan: Fix cocoindex Binary Path Resolution in Venv +Status: **completed** — shipped (`Path(sys.executable).parent / "cocoindex"` without `.resolve()` in `server.py`). + ## Goal Fix `refresh_code_index` failing to find `cocoindex` binary when Python venv uses symlinks. @@ -119,5 +121,5 @@ Then run: ## Status - [x] Step 1: Fix cocoindex binary path resolution -- [ ] Step 2: Verify no similar path resolution issues exist -- [ ] Step 3: Verify fix works in venv environment +- [x] Step 2: Verify no similar path resolution issues exist (no other `cocoindex` path uses `.resolve()` on `sys.executable`) +- [x] Step 3: Verify fix works in venv environment (`tests/test_mcp_tools.py::test_cocoindex_subprocess_env_sets_project_root`) diff --git a/plans/completed/PLAN-CROSS-SERVICE-RESOLUTION-FLAG.md b/plans/completed/PLAN-CROSS-SERVICE-RESOLUTION-FLAG.md index 53fecf5..e303108 100644 --- a/plans/completed/PLAN-CROSS-SERVICE-RESOLUTION-FLAG.md +++ b/plans/completed/PLAN-CROSS-SERVICE-RESOLUTION-FLAG.md @@ -1,6 +1,6 @@ # Plan: `cross_service_resolution` config flag -Status: **active** — propose merged in [#26](https://github.com/HumanBean17/java-codebase-rag/pull/26). +Status: **completed** — shipped (PR-G1; propose merged in [#26](https://github.com/HumanBean17/java-codebase-rag/pull/26)). Source: `propose/CROSS-SERVICE-RESOLUTION-FLAG-PROPOSE.md` on master. Companion plan: `plans/PLAN-FEIGN-NOT-AN-EXPOSER.md` (orthogonal — different pass; either order works, but combined testing on `cross_service_smoke` is cleaner). diff --git a/plans/completed/PLAN-DESCRIBE-MEMBER-EDGE-ROLLUP.md b/plans/completed/PLAN-DESCRIBE-MEMBER-EDGE-ROLLUP.md index 8cc0248..989ef77 100644 --- a/plans/completed/PLAN-DESCRIBE-MEMBER-EDGE-ROLLUP.md +++ b/plans/completed/PLAN-DESCRIBE-MEMBER-EDGE-ROLLUP.md @@ -1,6 +1,6 @@ # Plan: describe member edge rollup (`edge_summary` composed keys) -Status: **complete** (PR-1 landed). Source propose: +Status: **completed** (PR-1 landed). Source propose: [`propose/completed/DESCRIBE-MEMBER-EDGE-ROLLUP-PROPOSE.md`](../../propose/completed/DESCRIBE-MEMBER-EDGE-ROLLUP-PROPOSE.md). Depends on: **none** for graph or indexer work (read-path only). diff --git a/plans/completed/PLAN-ENUM-ANNOTATION-FIXES.md b/plans/completed/PLAN-ENUM-ANNOTATION-FIXES.md index 2c7c5f5..c3e9f15 100644 --- a/plans/completed/PLAN-ENUM-ANNOTATION-FIXES.md +++ b/plans/completed/PLAN-ENUM-ANNOTATION-FIXES.md @@ -1,6 +1,6 @@ # Plan: Enum annotation migration fixes -Status: **pending** +Status: **completed** — shipped (`strict=True` in `graph_enrich.py`; README enum stubs without invalid `@Target` on enums). Companion fixes for commit `01ff39e1` ("from string to enums for java annotations"). diff --git a/plans/completed/PLAN-FEIGN-NOT-AN-EXPOSER.md b/plans/completed/PLAN-FEIGN-NOT-AN-EXPOSER.md index 2bb6888..af376bc 100644 --- a/plans/completed/PLAN-FEIGN-NOT-AN-EXPOSER.md +++ b/plans/completed/PLAN-FEIGN-NOT-AN-EXPOSER.md @@ -1,6 +1,6 @@ # Plan: @FeignClient is a caller, not an exposer -Status: **active** — propose merged in [#25](https://github.com/HumanBean17/java-codebase-rag/pull/25). +Status: **completed** — shipped (PR-F1; propose merged in [#25](https://github.com/HumanBean17/java-codebase-rag/pull/25)). Source: `propose/FEIGN-NOT-AN-EXPOSER-PROPOSE.md` on master. Companion plan: `plans/PLAN-CROSS-SERVICE-RESOLUTION-FLAG.md` (orthogonal — different pass; can ship in either order). diff --git a/plans/completed/PLAN-HINTS.md b/plans/completed/PLAN-HINTS.md index b8d3f50..7ac8c9a 100644 --- a/plans/completed/PLAN-HINTS.md +++ b/plans/completed/PLAN-HINTS.md @@ -214,8 +214,8 @@ Use **verbatim** names below (adjust only if pytest collection would collide; if ## Tracking -- `PR-A`: _pending_ -- `PR-B`: _pending_ +- `PR-A`: **merged** +- `PR-B`: **merged** ## Cursor handoff diff --git a/plans/completed/PLAN-HTTP-ROUTE-METHOD-ENUM.md b/plans/completed/PLAN-HTTP-ROUTE-METHOD-ENUM.md index 50f36fd..fa80a85 100644 --- a/plans/completed/PLAN-HTTP-ROUTE-METHOD-ENUM.md +++ b/plans/completed/PLAN-HTTP-ROUTE-METHOD-ENUM.md @@ -1,6 +1,6 @@ # Plan: HTTP brownfield enum method, `@CodebaseHttpClient` rename, inbound exclusivity -Status: **complete**. This plan implements +Status: **completed**. This plan implements [`propose/HTTP-ROUTE-METHOD-ENUM-PROPOSE.md`](../../propose/HTTP-ROUTE-METHOD-ENUM-PROPOSE.md). PR-1 and PR-2 landed earlier on `master`; PR-3 adds agent docs and the v2 addendum [`propose/completed/BROWNFIELD-ANNOTATIONS-V2-ADDENDUM-HTTP-METHOD-ENUM.md`](../../propose/completed/BROWNFIELD-ANNOTATIONS-V2-ADDENDUM-HTTP-METHOD-ENUM.md). diff --git a/plans/completed/PLAN-POST-TIER1B-FOLLOWUPS.md b/plans/completed/PLAN-POST-TIER1B-FOLLOWUPS.md index fc79217..374dce5 100644 --- a/plans/completed/PLAN-POST-TIER1B-FOLLOWUPS.md +++ b/plans/completed/PLAN-POST-TIER1B-FOLLOWUPS.md @@ -1,6 +1,6 @@ # Post-Tier-1B follow-ups — small cleanup PR plan -Status: **active** — PR-E1 (items 1–6) shipped in [#19](https://github.com/HumanBean17/java-codebase-rag/pull/19); PR-E2 (item 7) and PR-E3 (item 8) outstanding. +Status: **completed** — PR-E1 (items 1–6) shipped in [#19](https://github.com/HumanBean17/java-codebase-rag/pull/19); PR-E3 (item 8) shipped in [#22](https://github.com/HumanBean17/java-codebase-rag/pull/22). Item 7 (PR-E2 strategy-ladder consolidation) remains deferred tech debt. Source: catches collected from PR-D1, PR-D2, PR-D3 reviews + the PR-E1 review reply. None are blockers; all are either contract-tightening, naming, doc gaps, or invariant guards. @@ -18,7 +18,7 @@ Links go to the review comment so the original context survives. | 4 | [PR-D3 #15](https://github.com/HumanBean17/java-codebase-rag/pull/15#issuecomment-4379649557) obs 5 | Empty-feign-name short-circuit in `_match_call_edge` — add reader comment | low (doc) | | 5 | [PR-D2 #13](https://github.com/HumanBean17/java-codebase-rag/pull/13#issuecomment-4378995637) post-D3 follow-up 1 | README: document `anchor`-fills-from-builtin behaviour for partial brownfield overrides | low (doc) | | 6 | [PR-D2 #13](https://github.com/HumanBean17/java-codebase-rag/pull/13#issuecomment-4378995637) post-D3 follow-up 2 | Proposal §6: add `channel` field to the `OutgoingCallDecl` schema sketch as durable | low (doc) | -| 7 | [PR-D1 #12](https://github.com/HumanBean17/java-codebase-rag/pull/12#issuecomment-4378723605) obs 2 | Second copy of strategy ladder still in `graph_enrich.py:720-724` (annotation/spel/constant_ref) — known consolidation candidate | medium (tech debt) | +| 7 | [PR-D1 #12](https://github.com/HumanBean17/java-codebase-rag/pull/12#issuecomment-4378723605) obs 2 | Second copy of strategy ladder still in `graph_enrich.py:720-724` (annotation/spel/constant_ref) — known consolidation candidate; **deferred** (PR-E2 not shipped; `_route_path_atom` is the canonical ladder today) | medium (tech debt) | | 8 | [PR-E1 #19 review reply](https://github.com/HumanBean17/java-codebase-rag/pull/19#issuecomment-4380659734) | `pass3_calls` doesn't enforce the intra-JVM invariant for `CALLS` edges. Today no cross-microservice CALLS edge is emitted on any fixture (verified on `cross_service_smoke`: 9 CALLS edges, 0 cross), but the cleanliness is incidental — no `caller.microservice == callee.microservice` guard exists. FQN collisions across services or brownfield supertype overrides could in principle break the invariant silently. **✅ shipped in PR-E3** | low-to-medium (invariant) | ## Recommended PR boundaries diff --git a/plans/completed/PLAN-REMOTE-PROJECT-INDEXING.md b/plans/completed/PLAN-REMOTE-PROJECT-INDEXING.md index 5892d87..3ed4180 100644 --- a/plans/completed/PLAN-REMOTE-PROJECT-INDEXING.md +++ b/plans/completed/PLAN-REMOTE-PROJECT-INDEXING.md @@ -1,5 +1,7 @@ # Plan: Remote Project Indexing via MCP Configuration +Status: **completed** — shipped (`PROJECT_ROOT` via `_cocoindex_subprocess_env`; see §Status checklist below). + ## Goal Enable users to run `refresh_code_index` from any Java project root without copying Python scripts. Users should only need to provide a valid MCP configuration pointing to their project. diff --git a/propose/completed/AGENT-GUIDE-SURGICAL-PATCHES-PROPOSE.md b/propose/completed/AGENT-GUIDE-SURGICAL-PATCHES-PROPOSE.md index c92bd50..1a5f4eb 100644 --- a/propose/completed/AGENT-GUIDE-SURGICAL-PATCHES-PROPOSE.md +++ b/propose/completed/AGENT-GUIDE-SURGICAL-PATCHES-PROPOSE.md @@ -1,6 +1,6 @@ # AGENT-GUIDE-SURGICAL-PATCHES — three small additions to docs/AGENT-GUIDE.md -**Status**: approved — locked insertion spec for PR-AGP-2 (cite §3 + Appendix A verbatim). +**Status**: completed — shipped (PR-AGP-1 → PR-AGP-2; patches A–C in `docs/AGENT-GUIDE.md`). **Author**: Dmitriy Teriaev + Perplexity Computer **Date**: 2026-05-11 diff --git a/propose/completed/BROWNFIELD-ANNOTATIONS-V2-ADDENDUM-HTTP-METHOD-ENUM.md b/propose/completed/BROWNFIELD-ANNOTATIONS-V2-ADDENDUM-HTTP-METHOD-ENUM.md index ea8f05f..7c3ff71 100644 --- a/propose/completed/BROWNFIELD-ANNOTATIONS-V2-ADDENDUM-HTTP-METHOD-ENUM.md +++ b/propose/completed/BROWNFIELD-ANNOTATIONS-V2-ADDENDUM-HTTP-METHOD-ENUM.md @@ -1,5 +1,7 @@ # Addendum: HTTP brownfield enum method, `@CodebaseHttpClient` rename, inbound exclusivity +**Status**: completed — shipped (ontology 12; see §What landed below). + This file extends **[`BROWNFIELD-ANNOTATIONS-V2-PROPOSE.md`](./BROWNFIELD-ANNOTATIONS-V2-PROPOSE.md)** without editing that document’s body (immutable parent). ## References diff --git a/propose/completed/BROWNFIELD-ANNOTATIONS-V2-PROPOSE.md b/propose/completed/BROWNFIELD-ANNOTATIONS-V2-PROPOSE.md index 7c80ef1..50c6f10 100644 --- a/propose/completed/BROWNFIELD-ANNOTATIONS-V2-PROPOSE.md +++ b/propose/completed/BROWNFIELD-ANNOTATIONS-V2-PROPOSE.md @@ -2,8 +2,7 @@ ## Status -Proposal — not yet planned. Breaking change, no migration required (no -production users yet, per project policy). +**Completed** — shipped (brownfield v2 annotations: `@CodebaseHttpRoute`, `@CodebaseAsyncRoute`, `@CodebaseHttpClient`, `@CodebaseProducer`; HTTP method enum addendum landed separately). Breaking change, no migration required (no production users yet, per project policy). > **Revision note.** An earlier draft of this propose split `@CodebaseRoute` > into `@CodebaseHttpRoute` + `@CodebaseAsyncRoute` while *keeping* the diff --git a/propose/completed/CALL-GRAPH-PROPOSE.md b/propose/completed/CALL-GRAPH-PROPOSE.md index abab16a..9f2a602 100644 --- a/propose/completed/CALL-GRAPH-PROPOSE.md +++ b/propose/completed/CALL-GRAPH-PROPOSE.md @@ -1,6 +1,6 @@ -# Call-graph layer — active proposal +# Call-graph layer — completed proposal -Status: **active — ready for planning**. Pairs with +Status: **completed** — shipped (static intra-JVM `CALLS` + `DECLARES`; plan: [`plans/completed/PLAN-CALL-GRAPH.md`](../../plans/completed/PLAN-CALL-GRAPH.md)). Pairs with [`plans/completed/PLAN-CALL-GRAPH.md`](../../plans/completed/PLAN-CALL-GRAPH.md) for the step-by-step implementation. diff --git a/propose/completed/CLIENT-ROLE-RENAME-PROPOSE.md b/propose/completed/CLIENT-ROLE-RENAME-PROPOSE.md index 05f5954..67ef8d3 100644 --- a/propose/completed/CLIENT-ROLE-RENAME-PROPOSE.md +++ b/propose/completed/CLIENT-ROLE-RENAME-PROPOSE.md @@ -1,6 +1,6 @@ # Propose: `FEIGN_CLIENT` role → `CLIENT` role + `HTTP_CLIENT` capability -**Status:** Draft (2026-05-06) +**Status:** completed — shipped (PR #28; `FEIGN_CLIENT` → `CLIENT` + `HTTP_CLIENT` capability; see `tests/test_client_role_rename.py`) **Author:** Dmitry (with Computer) **Companion docs:** - `propose/FEIGN-NOT-AN-EXPOSER-PROPOSE.md` (PR #25, merged) — orthogonal diff --git a/propose/completed/CROSS-SERVICE-RESOLUTION-FLAG-PROPOSE.md b/propose/completed/CROSS-SERVICE-RESOLUTION-FLAG-PROPOSE.md index bb11842..94db8c4 100644 --- a/propose/completed/CROSS-SERVICE-RESOLUTION-FLAG-PROPOSE.md +++ b/propose/completed/CROSS-SERVICE-RESOLUTION-FLAG-PROPOSE.md @@ -1,6 +1,6 @@ # Propose: `cross_service_resolution` config flag -**Status:** Draft (2026-05-05) +**Status:** completed — shipped (PR-G1 / [#26](https://github.com/HumanBean17/java-codebase-rag/pull/26); see `tests/test_cross_service_resolution_flag.py`) **Author:** Dmitry (with Computer) **Companion docs:** - `propose/FEIGN-NOT-AN-EXPOSER-PROPOSE.md` (PR #25) — fixes a wrong-direction edge in the auto path; **must ship before this** diff --git a/propose/completed/EXPLORATION-SKILL-PROPOSE.md b/propose/completed/EXPLORATION-SKILL-PROPOSE.md index ea03cd6..7254a7a 100644 --- a/propose/completed/EXPLORATION-SKILL-PROPOSE.md +++ b/propose/completed/EXPLORATION-SKILL-PROPOSE.md @@ -1,6 +1,6 @@ # EXPLORATION-SKILL — a standalone agent skill for exploring Java microservice estates -**Status**: approved — locked design for PR-EXPLORE-2 (§3–§7 authoritative). +**Status**: completed — shipped (PR-EXPLORE-1 → PR-EXPLORE-2; skill: `docs/skills/java-codebase-explore.md`). **Author**: Dmitriy Teriaev + Perplexity Computer **Date**: 2026-05-11 diff --git a/propose/completed/FEIGN-NOT-AN-EXPOSER-PROPOSE.md b/propose/completed/FEIGN-NOT-AN-EXPOSER-PROPOSE.md index 137a253..186c55c 100644 --- a/propose/completed/FEIGN-NOT-AN-EXPOSER-PROPOSE.md +++ b/propose/completed/FEIGN-NOT-AN-EXPOSER-PROPOSE.md @@ -1,6 +1,6 @@ # `@FeignClient` is a caller, not an exposer -Status: **draft — open for review**. +Status: **completed** — shipped (PR-F1; `exposes_suppressed_feign` + cross-service matcher; see `tests/test_feign_not_exposer.py`). This is a **proposal**, not an implementable plan. After review and the §9 [TBD] decisions, an implementable plan will be derived under diff --git a/propose/completed/HTTP-ROUTE-METHOD-ENUM-PROPOSE.md b/propose/completed/HTTP-ROUTE-METHOD-ENUM-PROPOSE.md index 8b21677..9306ba9 100644 --- a/propose/completed/HTTP-ROUTE-METHOD-ENUM-PROPOSE.md +++ b/propose/completed/HTTP-ROUTE-METHOD-ENUM-PROPOSE.md @@ -1,6 +1,6 @@ # Brownfield HTTP annotations: rename `@CodebaseClient` → `@CodebaseHttpClient`, type `method` as a shared `CodebaseHttpMethod` enum on both sides, lock brownfield-exclusivity -**Status**: implemented — see [`plans/completed/PLAN-HTTP-ROUTE-METHOD-ENUM.md`](../plans/completed/PLAN-HTTP-ROUTE-METHOD-ENUM.md). +**Status**: completed — shipped (see [`plans/completed/PLAN-HTTP-ROUTE-METHOD-ENUM.md`](../plans/completed/PLAN-HTTP-ROUTE-METHOD-ENUM.md)). **Author**: Dmitriy Teriaev + Perplexity Computer **Date**: 2026-05-12 (v4 doc alignment) diff --git a/propose/completed/YAML-PATH-EXPANSION-PROPOSE.md b/propose/completed/YAML-PATH-EXPANSION-PROPOSE.md index e8d147b..c468573 100644 --- a/propose/completed/YAML-PATH-EXPANSION-PROPOSE.md +++ b/propose/completed/YAML-PATH-EXPANSION-PROPOSE.md @@ -1,6 +1,6 @@ # YAML-PATH-EXPANSION — Apply `~` and `$VAR` expansion to `embedding.model` in project YAML -**Status**: under review +**Status**: completed — shipped (`maybe_expand_embedding_model_path` in `java_codebase_rag/config.py`; tests on `master`). **Author**: Dmitriy Teriaev + Perplexity Computer **Date**: 2026-05-12 (v2) From ddcad9bdfd465713adaaf363ffbb268b57ecede7 Mon Sep 17 00:00:00 2001 From: Dmitry Teryaev Date: Sat, 16 May 2026 17:41:14 +0300 Subject: [PATCH 2/2] =?UTF-8?q?fix=20post-tier1b=20plan=20status=20?= =?UTF-8?q?=E2=80=94=20PR-E2=20shipped=20in=20#20?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Correct earlier housekeeping note; strategy-ladder consolidation landed with _route_path_atom and sentinel test. Mark all three follow-up PRs shipped in the boundaries section. Co-authored-by: Cursor --- plans/completed/PLAN-POST-TIER1B-FOLLOWUPS.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/plans/completed/PLAN-POST-TIER1B-FOLLOWUPS.md b/plans/completed/PLAN-POST-TIER1B-FOLLOWUPS.md index 374dce5..129b066 100644 --- a/plans/completed/PLAN-POST-TIER1B-FOLLOWUPS.md +++ b/plans/completed/PLAN-POST-TIER1B-FOLLOWUPS.md @@ -1,6 +1,6 @@ # Post-Tier-1B follow-ups — small cleanup PR plan -Status: **completed** — PR-E1 (items 1–6) shipped in [#19](https://github.com/HumanBean17/java-codebase-rag/pull/19); PR-E3 (item 8) shipped in [#22](https://github.com/HumanBean17/java-codebase-rag/pull/22). Item 7 (PR-E2 strategy-ladder consolidation) remains deferred tech debt. +Status: **completed** — PR-E1 (items 1–6) shipped in [#19](https://github.com/HumanBean17/java-codebase-rag/pull/19); PR-E2 (item 7) shipped in [#20](https://github.com/HumanBean17/java-codebase-rag/pull/20); PR-E3 (item 8) shipped in [#22](https://github.com/HumanBean17/java-codebase-rag/pull/22). Source: catches collected from PR-D1, PR-D2, PR-D3 reviews + the PR-E1 review reply. None are blockers; all are either contract-tightening, naming, doc gaps, or invariant guards. @@ -18,14 +18,14 @@ Links go to the review comment so the original context survives. | 4 | [PR-D3 #15](https://github.com/HumanBean17/java-codebase-rag/pull/15#issuecomment-4379649557) obs 5 | Empty-feign-name short-circuit in `_match_call_edge` — add reader comment | low (doc) | | 5 | [PR-D2 #13](https://github.com/HumanBean17/java-codebase-rag/pull/13#issuecomment-4378995637) post-D3 follow-up 1 | README: document `anchor`-fills-from-builtin behaviour for partial brownfield overrides | low (doc) | | 6 | [PR-D2 #13](https://github.com/HumanBean17/java-codebase-rag/pull/13#issuecomment-4378995637) post-D3 follow-up 2 | Proposal §6: add `channel` field to the `OutgoingCallDecl` schema sketch as durable | low (doc) | -| 7 | [PR-D1 #12](https://github.com/HumanBean17/java-codebase-rag/pull/12#issuecomment-4378723605) obs 2 | Second copy of strategy ladder still in `graph_enrich.py:720-724` (annotation/spel/constant_ref) — known consolidation candidate; **deferred** (PR-E2 not shipped; `_route_path_atom` is the canonical ladder today) | medium (tech debt) | +| 7 | [PR-D1 #12](https://github.com/HumanBean17/java-codebase-rag/pull/12#issuecomment-4378723605) obs 2 | Second copy of strategy ladder in `graph_enrich.py` — **✅ shipped in PR-E2** ([#20](https://github.com/HumanBean17/java-codebase-rag/pull/20); `_route_path_atom` + sentinel test) | medium (tech debt) | | 8 | [PR-E1 #19 review reply](https://github.com/HumanBean17/java-codebase-rag/pull/19#issuecomment-4380659734) | `pass3_calls` doesn't enforce the intra-JVM invariant for `CALLS` edges. Today no cross-microservice CALLS edge is emitted on any fixture (verified on `cross_service_smoke`: 9 CALLS edges, 0 cross), but the cleanliness is incidental — no `caller.microservice == callee.microservice` guard exists. FQN collisions across services or brownfield supertype overrides could in principle break the invariant silently. **✅ shipped in PR-E3** | low-to-medium (invariant) | ## Recommended PR boundaries - **PR-E1** (✅ shipped in [#19](https://github.com/HumanBean17/java-codebase-rag/pull/19)) — items 1–6 in one PR (risk-score normalisation + the four small renames/comments + two doc fixes). -- **PR-E2** — item 7 (refactor of the second strategy ladder — needs its own per-PR Cursor task prompt with sentinel greps). -- **PR-E3** — item 8 (intra-JVM CALLS invariant guard). Tiny PR, ~10 lines + one fixture test. Safe to ship before or after PR-E2. +- **PR-E2** (✅ shipped in [#20](https://github.com/HumanBean17/java-codebase-rag/pull/20)) — item 7 (`_route_path_atom` + sentinel test in `tests/test_call_edge_matching.py`). +- **PR-E3** (✅ shipped in [#22](https://github.com/HumanBean17/java-codebase-rag/pull/22)) — item 8 (intra-JVM CALLS invariant guard). This document covers all three. Implementation guidance below.