Skip to content

concept-drift: promote to a verb (CLI + MCP); type-check test.mjs too - #45

Merged
bdelanghe merged 1 commit into
mainfrom
concept-drift-verb
Jun 23, 2026
Merged

concept-drift: promote to a verb (CLI + MCP); type-check test.mjs too#45
bdelanghe merged 1 commit into
mainfrom
concept-drift-verb

Conversation

@bdelanghe

Copy link
Copy Markdown
Contributor

What — two finishers (Tasks 2 + 3)

1. concept-drift → a real verb (CLI + MCP)

Promoted from spikes/concept-drift.mjs to a verb in verbs.mjsregistry → CLI bin
(concept-drift.mjs / string-audit-concept-drift) + MCP
, the same way scan was.
Per-message coverage vs the canonical brand registry, string-level (i18n /
translation-style). Tiered matching, best-available + graceful fallback:
embeddings (opt-in EMBED_API_KEY, OpenAI-compatible) → token overlap, stemmed
(optional stemmer) → exact (zero-dep). A signal, not a gate.

registry = { audit, extract, scan, concept-drift }
$ node concept-drift.mjs   →  100% of 4 canon messages represented · token overlap (stemmed)

2. Type-check test.mjs too

Dropped the tsconfig exclude — tsc --checkJs now covers every root .mjs, test
included. The few real issues it surfaced, fixed (not suppressed):

  • input_schema.required accessed as unknown → cast.
  • extractVerb.run not awaited → await (the same sync/async-union fix as the bins).

Test

  • test.mjs: a concept-drift case (per-message coverage, the active tier) + the toolset
    assertion now expects all four tools.
  • ci.yml: the concept-drift smokes repoint from the deleted spike to the bin (core
    exact-fallback + stemmed after the optional install); concept-drift added to the MCP grep.
  • Verified locally: tsc 0 errors, test.mjs green, both smokes pass, MCP lists 4 tools.
  • No new deps (stemmer/acorn already optional). README/Surfaces gains Concept-drift.

🤖 Generated with Claude Code

Two finishers on the verb/typecheck story:

1. concept-drift — promoted from spikes/concept-drift.mjs to a real verb (verbs.mjs) →
   registry → CLI bin (concept-drift.mjs / string-audit-concept-drift) + MCP, the same way
   scan was. Per-message coverage vs the canonical brand registry, string-level (i18n /
   translation-style); tiered matching, best-available + graceful fallback: embeddings
   (opt-in EMBED_API_KEY, OpenAI-compatible) -> token overlap (stemmed) -> exact (zero-dep).
   A signal, not a gate. registry = { audit, extract, scan, concept-drift }. CI smokes
   repointed from the spike to the bin; concept-drift added to the MCP toolset assertion.

2. test.mjs is now type-checked too — dropped the tsconfig exclude and fixed the few real
   issues it surfaced (input_schema.required accessed as unknown -> cast; extractVerb.run
   not awaited -> await, same sync/async-union fix as the bins). tsc --checkJs now covers
   every root .mjs, test included.

No new deps (stemmer/acorn already optional). README/Surfaces gains Concept-drift;
spikes/README drops the promoted row.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@bdelanghe
bdelanghe merged commit 72ca171 into main Jun 23, 2026
1 check passed
@bdelanghe
bdelanghe deleted the concept-drift-verb branch June 23, 2026 20:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant