GitNexus/gitnexus/test/unit/group
Gergo Magyar fd21d2de7b fix(group): reject malformed and retired group_sync parameters (U1)
`GroupService.groupSync` read `exactOnly` off an untyped MCP payload with
`Boolean(params.exactOnly)`. While the flag was inert that coercion was
harmless; now that it gates the wildcard matching stage, the string "false" --
a routine shape for an LLM caller emitting JSON -- is truthy, so a caller that
asked to KEEP wildcard matching got it suppressed and a registry with fewer
cross-links persisted to disk. The opposite of the request, written down.

Validate instead of coercing, at the service boundary: the MCP SDK does not
enforce a tool's advertised inputSchema and `callTool` is reachable directly,
so this method is the real gate. The validator mirrors `validateImpactMode`'s
`{ value } | { error }` shape -- the established idiom for this boundary, and
the one groupSync's other guards already return through.

Also refuse `skipEmbeddings` and `allowStale` by name. The CLI rejects them
outright because commander errors on an unknown option; the MCP path accepted
and silently dropped them, so an agent working from a cached tool schema was
never told. Removing them took away discoverability, not acceptance.

Both guards run before the group is read off disk, so a rejected call performs
no work. Every test asserts the sync did NOT run -- an error string alone
cannot distinguish "refused" from "refused but synced anyway".

The tool description gains the validation note AFTER the registryOutcome
paragraph: `tools.test.ts` slices that description by ordinal position of the
'preserved' / 'superseded' / 'no-prior-registry' literals, so appending past
all three leaves those slices intact (verified, 44/44).

tsc clean; 1039/1039 group unit tests pass.
2026-08-27 14:31:55 +00:00
..
bridge-db-edge.test.ts fix(deps): upgrade @ladybugdb/core to 0.16.0 to resolve native segfaults (#1235) 2026-04-30 17:40:39 +01:00
bridge-db.test.ts fix(group): stop reporting what could not be measured as a measurement of zero (#3012) 2026-08-26 09:37:16 +01:00
bridge-meta-swap-window.test.ts fix(group): stop reporting what could not be measured as a measurement of zero (#3012) 2026-08-26 09:37:16 +01:00
bridge-pairing-precedes-open.test.ts fix(group): stop reporting what could not be measured as a measurement of zero (#3012) 2026-08-26 09:37:16 +01:00
bridge-storage-tempfile.test.ts fix(security): close URL/regex/tag-filter sanitization cluster (U7) (#1330) 2026-05-08 07:11:29 +01:00
config-parser.test.ts fix(group)!: honour --exact-only, drop inert --allow-stale, report every matching stage 2026-08-27 12:52:17 +00:00
cross-impact-fanout-cap.test.ts fix(group): stop reporting what could not be measured as a measurement of zero (#3012) 2026-08-26 09:37:16 +01:00
cross-impact-incomplete-bridge.test.ts fix(group): stop reporting what could not be measured as a measurement of zero (#3012) 2026-08-26 09:37:16 +01:00
cross-impact-phase2-timeout.test.ts fix(ingestion): close ReDoS in cobol-preprocessor + rust-workspace + resource-exhaustion in cross-impact (U8) (#1331) 2026-05-08 09:10:07 +01:00
cross-impact.test.ts fix(mcp): make impact/context reproducible — deterministic ordering on every capped query (#2787) (#2796) 2026-08-02 17:03:15 +00:00
cross-trace-incomplete-bridge.test.ts fix(group): stop reporting what could not be measured as a measurement of zero (#3012) 2026-08-26 09:37:16 +01:00
cross-trace.test.ts feat(group): resolve inline HTTP provider handlers via call-site line (#2276) (#2282) 2026-06-23 17:51:11 +01:00
data-route-table.test.ts feat(routes): support JS data route tables (#2972) 2026-08-18 04:39:45 +01:00
elixir-workspace-extractor.test.ts feat(group): workspace extractors for Node, Python, Go, Java, Elixir (#1260) 2026-05-04 09:43:21 +01:00
fastapi-composed-provider.test.ts fix: resolve imported/composed FastAPI route path constants (#2391) (#2393) 2026-07-07 13:23:05 +01:00
fixtures.ts fix(mcp): make impact/context reproducible — deterministic ordering on every capped query (#2787) (#2796) 2026-08-02 17:03:15 +00:00
go-workspace-extractor.test.ts feat(group): workspace extractors for Node, Python, Go, Java, Elixir (#1260) 2026-05-04 09:43:21 +01:00
group-path-utils.test.ts feat: cross-repo impact analysis (#794) — @repo MCP routing + group resources (#984) 2026-04-20 11:55:07 +01:00
group-service-group-mode.test.ts feat: cross-repo impact analysis (#794) — @repo MCP routing + group resources (#984) 2026-04-20 11:55:07 +01:00
group-tools.test.ts fix(group)!: honour --exact-only, drop inert --allow-stale, report every matching stage 2026-08-27 12:52:17 +00:00
grpc-extractor.test.ts fix(group): stop Node gRPC loadPackageDefinition gate from matching every member call (#1916) 2026-05-30 09:31:36 +01:00
http-consumer-signals.test.ts perf(group/http): skip source parse for graph-covered route files (#2138 Part 2) (#2265) 2026-06-23 07:22:43 +01:00
http-route-extractor.test.ts feat(routes): support JS data route tables (#2972) 2026-08-18 04:39:45 +01:00
http-route-graph-method.test.ts feat(group): cross-repo call trace using PDG (#2269) 2026-06-23 07:54:13 +01:00
http-route-multi-verb.test.ts feat(group): cross-repo call trace using PDG (#2269) 2026-06-23 07:54:13 +01:00
impact-by-uid.test.ts feat(group): add sync pipeline, CLI, MCP tools, and monorepo fixture 2026-04-02 00:40:31 +03:00
include-extractor.test.ts fix(storage): stop the Windows \\?\ long-path prefix from breaking repo path matching (#2667) (#2700) 2026-07-26 09:07:55 +01:00
insecure-tempfile.test.ts fix(storage): give every registry write its own tmp path (#2888) (#2920) 2026-08-10 21:16:42 +01:00
java-const-route-parity.test.ts feat(group+ingestion): resolve Java constant-based route paths (@PostMapping(ApiPathConstants.X)) (#2980) 2026-08-25 09:41:57 +01:00
java-workspace-extractor.test.ts feat(group): workspace extractors for Node, Python, Go, Java, Elixir (#1260) 2026-05-04 09:43:21 +01:00
js-http-consumer-resolution.test.ts fix(group): resolve HTTP consumers through configured clients and constant route tables (#3008) 2026-08-25 11:34:23 +01:00
manifest-extractor.test.ts fix(group): replace LadybugDB-incompatible multi-label Cypher (#2325) (#2327) 2026-06-30 15:08:43 +01:00
manifest-label-drift.test.ts fix(lbug/mcp): exact symbol content + 0-based line storage with 1-based MCP display (#2377, #2379) (#2380) 2026-07-06 16:16:45 +01:00
manifest-synthetic-impact.test.ts fix(group): stop reporting what could not be measured as a measurement of zero (#3012) 2026-08-26 09:37:16 +01:00
matching.test.ts fix(group)!: honour --exact-only, drop inert --allow-stale, report every matching stage 2026-08-27 12:52:17 +00:00
nest-route-parity.test.ts fix(ingestion): index NestJS decorator routes so api_impact and route_map stop reporting live endpoints as non-existent (#3017) 2026-08-27 08:35:36 +01:00
node-workspace-extractor.test.ts feat(group): workspace extractors for Node, Python, Go, Java, Elixir (#1260) 2026-05-04 09:43:21 +01:00
python-workspace-extractor.test.ts fix(ingestion): discover nested source directories (#3043) 2026-08-26 12:24:39 +00:00
registry-unreadable-repos.test.ts fix(group): stop reporting what could not be measured as a measurement of zero (#3012) 2026-08-26 09:37:16 +01:00
resolve-bridge-neighbors.test.ts feat(group): cross-repo call trace using PDG (#2269) 2026-06-23 07:54:13 +01:00
rust-workspace-extractor.test.ts feat(core): adopt pino structured logger (#1336) 2026-05-07 20:56:25 +01:00
service-boundary-detector.test.ts fix(group): address 4 HIGH-priority issues from PR #626 review 2026-04-02 12:55:33 +03:00
service-group-sync-payload.test.ts fix(group): reject malformed and retired group_sync parameters (U1) 2026-08-27 14:31:55 +00:00
service.test.ts feat: cross-repo impact analysis (#794) — @repo MCP routing + group resources (#984) 2026-04-20 11:55:07 +01:00
spring-route-parity.test.ts fix(spring): extract method-level RequestMapping routes (#2857) 2026-08-07 11:43:19 +01:00
storage.test.ts fix(group): address 4 HIGH-priority issues from PR #626 review 2026-04-02 12:55:33 +03:00
sync-exact-only.test.ts fix(group)!: honour --exact-only, drop inert --allow-stale, report every matching stage 2026-08-27 12:52:17 +00:00
sync-partial-extraction.test.ts fix(group)!: honour --exact-only, drop inert --allow-stale, report every matching stage 2026-08-27 12:52:17 +00:00
sync-unreadable-repos.test.ts fix(group)!: honour --exact-only, drop inert --allow-stale, report every matching stage 2026-08-27 12:52:17 +00:00
sync-windowed-resolution.test.ts fix(group)!: honour --exact-only, drop inert --allow-stale, report every matching stage 2026-08-27 12:52:17 +00:00
sync.test.ts fix(group)!: honour --exact-only, drop inert --allow-stale, report every matching stage 2026-08-27 12:52:17 +00:00
thrift-extractor.test.ts fix(windows): 32767-char tree-sitter crash + VECTOR extension SIGSEGV (#1433) 2026-05-10 16:00:36 +01:00
topic-extractor.test.ts fix(group): contract extractors honour .gitnexusignore via shared IgnoreService (#1185) (#1247) 2026-05-01 16:42:21 +01:00
types.test.ts fix(group)!: honour --exact-only, drop inert --allow-stale, report every matching stage 2026-08-27 12:52:17 +00:00