You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
**Depends on (implementation):**[`HINTS-MCP-JSON-IDS-PROPOSE.md`](./HINTS-MCP-JSON-IDS-PROPOSE.md) — tier A–H emissions use JSON `neighbors` fragments and **40-char hex**`id` in char-cap tests, not `neighbors(['{id}'],…)` / `sym:…`.
16
+
15
17
## TL;DR
16
18
17
19
- Extend the **`describe` success-path** hint catalog in `mcp_hints.py` with **10 hint rows** (tiers 1–2; **7** new `TPL_DESCRIBE_*` constants, reuse find v4 strings for **I/J**).
@@ -55,12 +57,12 @@ All tier-1 rows require:
55
57
56
58
### Tier 1 — type wiring (P0)
57
59
58
-
| ID | Trigger | Template constant | Emission (≤120 chars with realistic `sym:…` id) |
|**A**|`decl_kind == "interface"` and `IMPLEMENTS.in > 0`|`TPL_DESCRIBE_TYPE_IMPLEMENTORS`|`{"ids":"{id}","direction":"in","edge_types":["IMPLEMENTS"]}`|
63
+
|**B**|`decl_kind == "class"` and `IMPLEMENTS.out > 0`|`TPL_DESCRIBE_TYPE_IMPLEMENTS`|`{"ids":"{id}","direction":"out","edge_types":["IMPLEMENTS"]}`|
64
+
|**C**|`decl_kind == "class"` and `role == "SERVICE"` and `INJECTS.out > 0`|`TPL_DESCRIBE_TYPE_DEPENDENCIES`|`{"ids":"{id}","direction":"out","edge_types":["INJECTS"]}`|
65
+
|**D**|`decl_kind in {interface, class}` and `INJECTS.in > 0`|`TPL_DESCRIBE_TYPE_INJECTORS`|`{"ids":"{id}","direction":"in","edge_types":["INJECTS"]}`|
64
66
65
67
**Notes:**
66
68
@@ -73,9 +75,9 @@ All tier-1 rows require:
73
75
74
76
| ID | Trigger | Template | Emission |
75
77
|----|---------|----------|----------|
76
-
|**E**| method/constructor; `1 <= CALLS.out <= 9`; no tier-1 rollup on parent (N/A here); **gate:**`role != "OTHER"` OR `CALLS.out >= 3`|`TPL_DESCRIBE_METHOD_OUTBOUND_CALLS`|`outbound calls: neighbors(['{id}'],'out',['CALLS'])`|
77
-
|**G**| method; `OVERRIDES.out > 0`; **`not _override_axis_would_emit(edge_summary)`** — true when any key `k` with `k == "OVERRIDDEN_BY"` or `k.startswith("OVERRIDDEN_BY.")` has `out > 0` (same keys as override rollups today) |`TPL_DESCRIBE_METHOD_SUPER_DECL`|`super declaration: neighbors(['{id}'],'out',['OVERRIDES'])`|
78
-
|**H**| method; `int(record.data.unresolved_call_sites_total or 0) > 0`|`TPL_DESCRIBE_METHOD_UNRESOLVED`|`unresolved: neighbors(['{id}'],'out',['CALLS'],include_unresolved=True)`|
78
+
|**E**| method/constructor; `1 <= CALLS.out <= 9`; no tier-1 rollup on parent (N/A here); **gate:**`role != "OTHER"` OR `CALLS.out >= 3`|`TPL_DESCRIBE_METHOD_OUTBOUND_CALLS`|`{"ids":"{id}","direction":"out","edge_types":["CALLS"]}`|
79
+
|**G**| method; `OVERRIDES.out > 0`; **`not _override_axis_would_emit(edge_summary)`** — true when any key `k` with `k == "OVERRIDDEN_BY"` or `k.startswith("OVERRIDDEN_BY.")` has `out > 0` (same keys as override rollups today) |`TPL_DESCRIBE_METHOD_SUPER_DECL`|`{"ids":"{id}","direction":"out","edge_types":["OVERRIDES"]}`|
80
+
|**H**| method; `int(record.data.unresolved_call_sites_total or 0) > 0`|`TPL_DESCRIBE_METHOD_UNRESOLVED`|`{"ids":"{id}","direction":"out","edge_types":["CALLS"],"include_unresolved":true}`|
79
81
|**I**|`kind == "client"` and `HTTP_CALLS.out > 0`|`TPL_FIND_SUCCESS_HTTP_TARGETS` (existing) | same as find v4 |
80
82
|**J**|`kind == "producer"` and `ASYNC_CALLS.out > 0`|`TPL_FIND_SUCCESS_ASYNC_TARGETS` (existing) | same as find v4 |
0 commit comments