@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.
- package/ROADMAP.md +102 -74
- 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-
|
|
15
|
+
## Where we are now (2026-07-09)
|
|
16
16
|
|
|
17
|
-
`npm test` green (**
|
|
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.11 → 1.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
|
-
- **
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
-
|
|
59
|
-
|
|
60
|
-
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
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
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
2
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
"
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
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.
|
|
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.",
|