Mechanical rename produced by scripts/msd-rename.cjs: gsd/Gsd/GSD -> msd/Msd/MSD across contents and paths, upstream package/repo coordinates -> @golem15/msd-core and golem15com/msd-core. Deep links into upstream history, sibling upstream packages, the GSD-2 import feature, CHANGELOG.md and .changeset/ are kept as-is. Hand edits on top: MSD block-letter banner and logos, LICENSE copyright line, package/plugin identity, regenerated lockfile, install-tree fixtures, derived registries and benchmark baseline; migration checksum baseline re-locked (MSD keeps its own install state, so no install had applied the old sums); sort-order and regex-escaped expectations in tests adjusted.
3.0 KiB
id, title, group
| id | title | group |
|---|---|---|
| 4836 | Graphify CLI Preferred for Planner and Researcher Graph Queries | v1.7.0 Features |
Purpose: msd-planner gets one knowledge-graph query per phase and
msd-phase-researcher gets two or three. That single shot decides which modules
the plan treats as related, and therefore how tasks are ordered into waves. It
was spent on the built-in reader, which seeds by case-insensitive substring
match over a node's label and description and then expands a hardcoded two hops
— so the phase "User Authentication" seeds on author, authoring, and
unauthorized with exactly the same weight as authenticate, and when the
inflated result exceeds --budget the trimmer drops edges by confidence tier.
The graphify CLI, already a hard dependency of /msd-graphify build, ranks
seeds (IDF weighting, trigram fuzzy matching) and applies context filters before
traversal.
Both prompts now prefer the CLI and fall back to the built-in reader. The
branch is command -v graphify, the same degradation shape the repo already
uses for Context7 → ctx7 in references/research-documentation-lookup.md. No
new config key: a graph.json can only exist if graphify update . ran, which
requires the binary, so binary presence is a self-satisfying gate. The fallback
covers edge cases — a CI checkout with a committed graph, a binary since removed
— not the common path. No new tool grant either: both agents already have
Bash.
The planner additionally runs graphify affected. The reference states its
own goal as "which subsystems may be affected by changes in this phase", which is
literally reverse traversal by relation. The built-in reader only approximates it
with undirected two-hop expansion, and has no equivalent verb, so affected is
skipped on the fallback path.
msd-tools graphify status now returns graph_path. The CLI takes the graph
location as --graph, and the prompts must not re-derive
.planning/graphs/graph.json for it — that would point the CLI at a
non-existent local mirror in exactly the umbrella multi-repo setup
graphify.graph_path (#1825) exists to serve. status already resolves the
override, so it now reports the absolute path it resolved, on both the
graph-present and the graph-missing branch. For the same reason the presence gate
in both prompts is now the status call itself rather than a bare ls of the
default location.
Known limits:
- The two paths return different shapes.
graphify queryemits prose and has no--jsonflag;msd-tools graphify queryemits JSON with per-edge confidence tiers andbudget_met/budget_estimate. Both are consumed by a model, and nothing machine-parses this block, but the prompts now say so explicitly instead of implying a stable shape. --budgetmeans different things on the two paths — rendered output on the CLI, estimated payload bytes in the built-in reader (#2738). Same flag name, different unit.- With
graphifyabsent fromPATHthe fallback runs and the injected graph context is byte-identical to before.