feat(schema): add EDGE_SCHEMA to java_ontology, generate docs/EDGE-NAVIGATION.md, bump ontology to v14#157
Conversation
Introduce canonical edge navigation schema, generated docs with CI check, DDL consistency tests, and BROWNFIELD_RESOLVER_STRATEGY_SET without flipping HTTP/ASYNC endpoints yet. Co-authored-by: Cursor <cursoragent@cursor.com>
GitHub Actions installs into the runner Python, not .venv/bin/python. Co-authored-by: Cursor <cursoragent@cursor.com>
HumanBean17
left a comment
There was a problem hiding this comment.
Review (SCHEMA-V2 PR-A)
Solid, plan-faithful infrastructure PR: canonical EDGE_SCHEMA, generated docs + CI --check, endpoint-level DDL tests, and the v13→v14 ontology gate. Scope looks clean (no endpoint flips, no hints/builder leakage). Assuming CI is green, this is close to merge with a few items below.
Should fix before merge
1. EDGE-NAVIGATION.md describes post-flip traversals while edges are still pre-flip
For HTTP_CALLS / ASYNC_CALLS, typical_traversals steer agents through DECLARES_CLIENT / DECLARES_PRODUCER then out on the call edge from Client/Producer. Current DDL is still Symbol → Route. Today, neighbors(method_id, 'out', ['HTTP_CALLS']) works; the documented chain does not (until PR-B/C).
The plan allows forward-looking traversal text, but this doc is agent-facing at v14 and linked from README/AGENT-GUIDE — empty neighbors will look like a bug when the doc pointed the wrong way.
Suggestion: add pre-flip traversal keys (e.g. member_subject_current) and render both until PR-B/C flip endpoints, or make member_subject accurate for current endpoints and keep post-flip guidance in alien_subject / a dedicated note field.
2. README version drift
Re-index section is bumped to 14, but other README spots still say 13 (graph overview, AGENT-GUIDE blurb). Please grep ontology/graph references and align, or state once at the top of the graph section that current = 14 and treat v13 as historical only.
3. docs/AGENT-GUIDE.md header vs body
Intro says v14; ### Ontology glossary (version 13) was not updated. Worth bumping that section (and a quick skim for v13-only claims) in this PR since AGENT-GUIDE is in scope.
Non-blockers (follow-up OK)
BROWNFIELD_RESOLVER_STRATEGY_SETis exported but not enforced — no test that emittedstrategy=literals ⊆ set; set can rot without a small grep-backed test (plan decision 28).- DDL↔schema tests are endpoint-only —
EDGE_SCHEMA.attrscan drift from_SCHEMA_*column lists; fine for PR-A per plan, but worth a comment in the test file or a follow-up for column parity. - v14 re-index with no graph semantic change in PR-A — intentional per plan; consider one sentence in README that PR-A alone does not flip HTTP/ASYNC endpoints (re-index once after B+C or when you need the v14 gate).
- Stale v13 elsewhere (
AGENTS.md, cursor rules, skills) — out of PR-A file list; tiny docs-sync follow-up would help. - Overlapping refusal tests — explicit v13 test and
ONTOLOGY_VERSION - 1test now both hit 13; harmless duplication.
Verdict
Approve with nits if we accept forward-looking traversals in the committed doc; request changes on traversals + README/AGENT-GUIDE version consistency if agents will read EDGE-NAVIGATION.md before PR-B/C land.
Add member_subject_current/type_subject_current for HTTP/ASYNC while keeping post-flip member_subject for hints PR-D; align README/AGENT-GUIDE/AGENTS to v14; enforce emitter strategy literals ⊆ BROWNFIELD_RESOLVER_STRATEGY_SET. Co-authored-by: Cursor <cursoragent@cursor.com>
Summary
Implements PR-SCHEMA-V2-A (
plans/PLAN-SCHEMA-V2.md§ PR-A; locked shapes inpropose/SCHEMA-V2-PROPOSE.md).EdgeAttr/EdgeSpec/EDGE_SCHEMA(10 edges, pre-flipHTTP_CALLS/ASYNC_CALLSasSymbol → Route) plusBROWNFIELD_RESOLVER_STRATEGY_SETinjava_ontology.py.scripts/generate_edge_navigation.pyand committeddocs/EDGE-NAVIGATION.mdwith CI--check.ONTOLOGY_VERSION13 → 14; documents re-index in README + AGENT-GUIDE (PR-B/C consequences one sentence each).Re-index required (v14). No HTTP/ASYNC endpoint flips in this PR.
BROWNFIELD_RESOLVER_STRATEGY_SETmembers (33)annotation,chained_receiver,codebase_client,codebase_producer,codebase_route,constant_ref,constructor,feign_method,implicit_super,import_map,jms_template,kafka_send,kafka_template,layer_a_meta,layer_b_ann,layer_b_fqn,layer_c_source,method_reference,overload_ambiguous,phantom,rabbit_template,rest_template,same_module,spel,static_import,static_import_wildcard,stream_bridge,stream_bridge_send,suffix,this_super,unique_type_name,unresolved,web_client(Union of
FUZZY_STRATEGY_SET, brownfield layer literals, codebase stubs, call-graph receiver tiers, and HTTP/async dispatch strategy literals.)Test plan
Made with Cursor