@polycode-projects/the-mechanical-code-talker 1.0.7 → 1.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/ROADMAP.md +102 -74
  2. package/package.json +1 -1
package/ROADMAP.md CHANGED
@@ -12,87 +12,103 @@ mapped into them (item numbers retained for traceability); the seven sketches
12
12
  formerly held in `code-talker-ideas.txt` are folded into items 8–11 below and
13
13
  the file has been deleted.
14
14
 
15
- ## Where we are now (2026-07-08)
15
+ ## Where we are now (2026-07-09)
16
16
 
17
- `npm test` green (**1055**). **v0.9.6, pushed** (0.8.2 → 0.9.6 across this session — see
18
- `HANDOVER.md` for the exact release chain).
19
-
20
- ### Doing right now (5 background clusters, all worktree-isolated, merged sequentially as each lands)
21
-
22
- - **Cluster A** — Bug 6 (scoped-listing false-empty) + Bug 7 (modal-in-fuzzy-cascade) + the
23
- chat-feel residual pair (items 1-2 of the trio's siblings) + `edgesOfKind` memoization +
24
- ontology numeric-vocabulary declaration.
25
- - **Cluster B** — Bug 8 (goal-reasoner confident-wrong on off-domain requests) + refreshing
26
- `PLAN_CAPABILITY_ROUTER.md`'s stale stage-5 status text.
27
- - **Cluster C** — `PLAN_CHAT_FEEL.md` item 6, the pronoun/temporal/discourse-count trio
28
- (measured red sets from an earlier advisor tick; re-measured against the current graded pool
29
- before any fix).
30
- - ~~**Cluster D** — `PLAN_CODE.md` Track 1~~ **shipped** (see "Now" below). Tracks 2-4 remain
31
- unsigned-off and untouched.
32
- - **Cluster E** — `PLAN_INFERENCE_TESTING.md` Stage 1 (`cax-sco` rule) + Stage 2 (proof-chain
33
- receipts) in `src/syllogise.mjs`, targeting the measured chat-A2 50% ceiling.
34
-
35
- Also in flight: playtest sprint rounds 4-8 (3/3 rounds so far shipped a real fix), the strategy
36
- advisor (restarted, 5-min re-arm).
17
+ `npm test` green (**1245**). **v1.0.7, pushed** (0.9.111.0.0 → 1.0.7 across this session —
18
+ see `HANDOVER.md` for the exact release chain and file:line detail).
37
19
 
38
20
  ### Now: shipped this session
39
21
 
40
- - **5 bugs fixed.** Recall half-match replay + staple-onto-wall; 4 wall-kindness gaps (orientation
41
- blurb repeat, "thanks, `<clause>`" walls, a reexports vocabulary leak, `/describe` not surfacing
42
- taught facts); grain-aware entity resolution (fixes the fuzzy-entity false-empty and a
43
- function/module coverage contradiction); module-grain overview gap. Full list in `HANDOVER.md`.
44
- - **A new feature: predicate-based "find" queries.** "find me the payment class" now works:
45
- type-filtered, fuzzy property-surface matching, with a narrow-then-broaden inheritance-aware
46
- cascade and a boolean-fold generalization for compositional predicate queries. Design:
47
- `archive/PLAN_PREDICATE_QUERIES.md`.
48
- - **Two research tracks landed as code.** The ontology plan's two inert synonym resources
49
- (ConceptNet synonym/similar-to rows, phrasebook synonym families) are now wired into query-time
50
- matching, and the disjointness premise set plus numeric vocabulary grew
51
- (`PLAN_ontology-hierarchies.md`). The advanced-grammar plan's closed-frame subordination and
52
- conditional support, plus presupposition honest-nudges, landed (`PLAN_ADVANCED_GRAMMAR.md`); the
53
- graded pool grew 925 to 1075 cases across 6 new construction families (`chatbench/GRADED.md`).
54
- - **A new benchmark: infbench.** A 6-band classical-logic ladder (INF-A1..C2), mechanically
55
- generated, first baseline in `INFBENCH_0.8.2.md`. Kernel A1/A2 clean; chat A1 100%, A2 exactly
56
- 50% (the cax-sco gap, now measured). The ladder gates at B1 (33%) because the disjointness proof
57
- rule doesn't exist yet.
58
- - **A new demo** (`demo/agentic-loop-demo.mjs`) shows the zero-LLM deduce-plan-execute-compose loop
59
- end to end, and surfaced a real goal-reasoner honesty gap (Bug 8, below).
60
- - **A session-loop fix.** A throwing turn no longer aborts a piped/non-interactive session.
61
- - **4 new plan docs.** `PLAN_ontology-hierarchies.md`, `PLAN_INFERENCE_TESTING.md` (revised so
62
- infbench generation is mechanical, not hand-authored), `archive/PLAN_PREDICATE_QUERIES.md`, and
63
- `PLAN_CODE.md` (new, program synthesis over tmct's closed DSLs, gated on explicit operator
64
- sign-off per track Track 1 signed off, see "Doing" above).
65
- - **`PLAN_TMCT_ECOSYSTEM_INTEGRATION.md`**, landed a code-grounded tmct/bedrock-meter/marginalia
66
- integration plan. Corrects a standing wrong assumption (the `/v1/messages` shim was believed
67
- unmerged; it's been on `main` since 0.8.0) and confirms seonix has already fully migrated onto
68
- tmct as a real dependency.
69
- - **A `/narrate` debug mode.** Opt-in (`/narrate on`, `--narrate`, `TMCT_NARRATE=1`) per-turn
70
- decision narrative which lane/pattern matched, results + sources, a deterministic goal
71
- deduction built for playtest-sprint debugging; zero cost when off (byte-identical regression
72
- guard).
22
+ - **1.0.0 the first-run chat experience, rewritten.** The original trigger: a brand-new
23
+ `npm install` + bare `tmct chat` led with a "no code graph loaded" apology for *any* input,
24
+ including plain greetings and identity questions, even though the seeded ontology/lexicon
25
+ could already answer them. Root-caused to a 0.6.0-era design that over-applied its own honest
26
+ empty-graph orientation. Fixed: identity/capability-led responses (`I'm tmct ...` before any
27
+ caveat), a real self-description + a distinct "no LLM involved" answer for the identity/AI-ID
28
+ family, provably-correct "try this" examples (a `vocabExampleHint` that only ever offers a term
29
+ confirmed to resolve in the session's actual seed state — the prior hint could silently lie
30
+ under `TMCT_NO_SEED=1`), and substantially broadened conversational recognition (dialect,
31
+ register, slang, elongation, a bounded-fuzzy-match typo layer) all via curated closed-set
32
+ additions, not a generalized grammar rule, per the project's standing preference.
33
+ - **The `SKILL_CHAT_PLAYTEST.md` dialogue-flow loop, run for real across 5 tiers.** Tier 0
34
+ (bootstrap/identity), Tier 1 (single touch + one drill-down), Tier 2 (drill-down chains with
35
+ anaphora), and Tier 4 (compositional & comparative) each closed in one pass; **Tier 3
36
+ (cross-concept & relation touches) took 7 passes** cycles 3-9 progressively found and fixed a
37
+ recurring `resolveObject` substring-match weakness (a missing minimum-length floor let short
38
+ staccato connectives like "and"/"it" silently hijack the conversation's focus, producing
39
+ confidently WRONG answers on a *later* turn while looking honest) — patched three times
40
+ point-by-point before cycle 9 found and fixed the actual root cause in one place. Tier 5/6 not
41
+ yet started. The skill doc itself gained two new rules from real incidents this run: always
42
+ `mktemp -d` + exact-path cleanup for scratch fixtures (a wildcard `rm -rf /tmp/pt-*` cleanup
43
+ step got flagged by the harness's own safety policy — no damage, but a real cross-agent risk),
44
+ and never `chat --repo` the committed example fixture directly (dirties a checked-in file).
45
+ - **A live, client-side chat demo on the GitLab Pages homepage.** Not a scripted/pre-recorded
46
+ fake the real `src/ask.mjs` query engine runs in the visitor's browser (wink-nlp loaded from
47
+ `esm.sh`, an import-map shim working around 3 leaf files' Node-only static imports, zero
48
+ changes needed to the engine itself since it was already browser-clean pure JS). Boots with a
49
+ banner, replays a few real pre-verified Q&A turns as "history", asks one randomized (or
50
+ `?q=`-primed) question live, and — as of this session's last addition — has a genuine
51
+ interactive input box so a visitor can type their own questions and get real computed answers.
52
+ `?compact=1` for a minimal primed-link view; `window.tmctAnswer`/`tmctAsk`/`tmctParseEntities`
53
+ exposed for headless/Playwright consumers (curl/jq can never see it no backend on GitLab
54
+ Pages, JS never executes for a plain HTTP client — documented plainly, not oversold).
55
+ - **Operator-found bugs, fixed as they were found by hand-testing the shipped CLI**: relation-
56
+ specific vocabulary filtering ("what is a tree used for" was dumping every known relation
57
+ instead of filtering to UsedFor); a teach-lane "did you mean" suggestion that could echo back
58
+ the user's own input byte-identical (a missing a/an agreement check); out-of-domain small talk
59
+ ("what time is it") hitting the raw grammar wall instead of an honest nudge; a pronoun-subject
60
+ teach-lane gap that could silently store a bogus fact ("he is a module"); a closed-set
61
+ existence-question recognizer ("is there a class called X anywhere" was silently mis-answering
62
+ a *different* question — a relationship check — as if it were a verified existence negative);
63
+ "what else is X" repeating the primary definition verbatim instead of surfacing more; bare
64
+ "what is X" (no article) having no fact-lookup route at all, including for a fact the user had
65
+ *just* taught; and general verb-to-predicate teaching ("remember margo eats ribs" mints its own
66
+ predicate now, not just the closed is/has/are set — "has a" interoperates with the existing
67
+ ConceptNet-sourced `mgx:hasA` data).
68
+ - **New-term teaching + quantifiers.** "redis is a cache" (a genuinely new term, not previously
69
+ in the closed ACE lexicon) is now teachable via a write-side-only fix — the read path already
70
+ worked generically over any subject string, including the existing 2-hop transitive `IsA` proof
71
+ chase. Plus four new phrasings ("some/a few Xs are Ys", "your X is a Y", bare "X is Y" as a
72
+ property assertion) and a stored-quantifier recall ("how many Xs are Ys" → "A few.").
73
+ - **An always-on, short "Goal (inferred): ..." line** on every real structural/vocabulary answer
74
+ — distinct from the pre-existing opt-in `/narrate` full-trace mode, which stays as the deeper
75
+ debug tool. Two correctness bugs in the goal-deduction hook itself got fixed along the way
76
+ (a confidently wrong goal shown on failed teach attempts; a missing goal on relation-force
77
+ answers that resolve via a different path than the normal parse).
78
+ - **Seonix's 17-round dogfooding backlog, triaged and Batch 1 shipped.** A sibling project
79
+ (seonix, consuming tmct as a real dependency) ran extensive dogfooding against both a synthetic
80
+ self-index and a real 27,929-module production estate, relaying findings via the inter-session
81
+ inbox. Triaged into 5 priority batches (4 items were already fixed by intervening work); Batch 1
82
+ (existence-query correctness) shipped. Batches 2-5 queued — see "Next" below.
83
+ - **The version-bump policy, set then revised.** Tried "bump immediately after every push, hold
84
+ locally until the next batch" (to keep the published npm version always matching the last
85
+ pushed commit); reverted after it produced confusing "referencing a version that doesn't exist
86
+ yet" noise mid-session. Current policy: bump only at the moment of actually pushing, as part of
87
+ that same push. Recorded in `CLAUDE.md`.
73
88
 
74
89
  ### Next: the open follow-ups
75
90
 
76
- In priority order (full detail and measured targets in `HANDOVER.md`):
77
-
78
- 1. **Bug 8 FIXED.** A global-mode domain gate now requires the request itself (not just the
79
- caller's declared toolset) to parse as a query about the deduced goal's domain, reusing
80
- `ask.mjs`'s own grammar. Zero-hallucination baseline unchanged; independently re-verified.
81
- 2. **Bug 6.** Scoped listing false-empty: "list modules in `<pkg>`" returns empty though the
82
- unscoped lister shows matches. Found dogfooding a 191k-entity monorepo graph.
83
- 3. **Bug 7.** A modal auxiliary ("should") survives the fuzzy-correction cascade and misreads as
84
- "hold". The diagnosed fix is adding modals to `STOPWORDS`.
85
- 4. ~~`PLAN_TMCT_ECOSYSTEM_INTEGRATION.md`~~ **shipped**see "Now" above.
86
- 5. ~~`PLAN_CODE.md` Track 1 sign-off~~ **signed off and shipped** see "Now" above.
87
- 6. **Still open**: the function-grain forward-shape gap (Bug C+D's grain resolution doesn't
88
- cover the "forward" traversal shape), 8 remaining temporal red ids (each a distinct small
89
- grammar gap), the un-flagged `C1:presupposition`/`C2:garden-path` regression, the
90
- `edgesOfKind` by-subject/by-object endpoint indices (memoization itself is done). Full
91
- detail in `HANDOVER.md`.
92
- 7. **`SKILL_PLAYTEST_SPRINT.md`, in progress.** A capped, delegated, chained playtest loop (each
93
- round a background chat session against `examples/mini-webapp`, appraised and fixed+shipped
94
- live). Rounds 1-3 shipped 3 real fixes (0.9.3-0.9.5); cap raised from 3 to 8 rounds mid-run;
95
- continuing.
91
+ 1. **Tier 5 (teach + recall + reasoning in dialogue) and Tier 6 (the messy real user)** — the
92
+ remaining two rungs of the dialogue-flow ladder, not yet run. Tier 5's territory substantially
93
+ overlaps functionality shipped this session (new-term teaching, quantifier recall) but hasn't
94
+ been run through the playtest loop's own dead-end-hunting discipline yet.
95
+ 2. **Seonix Batches 2-5** (full detail relayed via the inbox, triage summary in this session's
96
+ history): Batch 2 "what is X" vs "what is a X" grammar-level minimal pair (the chat-layer
97
+ fact-lookup side is now fixed; the underlying `grammar.mjs` T5 template still requires the
98
+ article, left alone deliberately pending a closer look at why), a missing reverse-direction
99
+ "is X a superclass of Y" verb entry, "what is a `<noun phrase>`" swallowing the whole phrase
100
+ instead of extracting the head noun. Batch 3 recurring wall patterns (purpose/identity
101
+ "whats X for/about", temporal qualifiers on Commit queries, onboarding/closing questions read
102
+ as literal search strings). Batch 4/5 lower-priority, including a cross-graph disambiguation-
103
+ candidate-ranking weakness seonix evidenced 5 times independently but that doesn't reproduce on
104
+ tmct's own small fixture graph (needs a larger graph to chase).
105
+ 3. **General verb-to-predicate teaching's natural follow-up**: dedicated direct-question
106
+ recognition ("does margo eat ribs", "what does margo eat") — this session's work covers
107
+ teaching + generic retrieval, not verb-specific query phrasings.
108
+ 4. **The Tier-4 "of X" membership gap**: "public methods of TaskController" returns a genuine,
109
+ receipted empty because the class declares no methods of its own (they're inherited)
110
+ extending membership queries to walk inheritance is a bigger structural change than a routing
111
+ fix, deliberately deferred.
96
112
 
97
113
  ### Later: deferred by design, staged inside each plan
98
114
 
@@ -112,6 +128,18 @@ their tables.
112
128
 
113
129
  ### History — what shipped in earlier releases
114
130
 
131
+ **v0.9.12 → v1.0.7** (this session — the first-run UX rewrite + the 5-tier playtest sweep +
132
+ the live browser demo): see "Where we are now" above for the full narrative; short form —
133
+ 1.0.0 shipped the identity/capability-led onboarding rewrite; 1.0.1-1.0.7 shipped, in order, the
134
+ redis/new-term teaching + quantifier phrasings, the always-on Goal-inference line, a teach-lane
135
+ pronoun-subject guard, three operator-found bugs (used-for filtering, teach-suggestion echo,
136
+ out-of-domain small talk), Tier-0/1/2 playtest passes, Tier-3's 7-pass convergence (ending in a
137
+ root-cause fix for the recurring substring-match focus-corruption bug), the diagnosed Tier-4
138
+ compositional-fold fix, the live in-browser chat demo, Seonix Batch 1 (existence-query
139
+ correctness), Tier 4's own playtest pass, and a final bundle ("what else is X", bare "what is X",
140
+ general verb-to-predicate teaching). `npm test` 1055 → 1245 across the session, every commit
141
+ green. Full commit-level detail in `HANDOVER.md`.
142
+
115
143
  **v0.8.2** (the chat-feel wave + rule-general C2): tier-1 CHATBENCH 334/334 (draw A) + 285/285
116
144
  (draw B), zero regressions; the cycle-1 hard-fail `gq-functions-call-fnalpha` flipped green.
117
145
  Landed recall hygiene, preamble/politeness frames, calls∪callsSymbol + grain/meta fallbacks, the
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@polycode-projects/the-mechanical-code-talker",
3
- "version": "1.0.7",
3
+ "version": "1.0.8",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "description": "The Mechanical Code Talker (tmct) — a tolerant, offline, $0 chat surface that guides you toward precision queries about a software repository. ELIZA/PARRY-style but domain-obsessed with code. No model calls; no codebase index of its own.",