chat: the platform verbs reach chat, and the vocabularies are mapped (plan 5.4, 3.9) - #90
Merged
Merged
Conversation
…(plan 5.4, 3.9)
Plan 5.4 — chat ran a subset of the platform: nothing in it could see or
steer a formation, answer an approval by name, audit memory, or change
safety or model configuration, while the README and colony-canvas §9.1
promised "the same command router".
- `springtale_runtime::operations::platform` is the one verb registry:
name, description, group, read_only, argument schema. Twenty verbs
across formation, approvals, memory, safety and AI configuration.
- `HandlerContext` and `Bot` carry an optional `RuntimeState` (the daemon
injects it; headless and test bots say so rather than pretending), and
five builtin handlers go through existing runtime operations only.
Formation names resolve exact, then case-insensitive prefix, and an
ambiguous prefix is an error rather than a guess.
- The drum rule holds: the registry has no assign verb, inspection is
exactly the read-only set, and a test asserts both the way the CLI
suite asserts it over its clap tree.
- The NLU learns the same verbs: one `IntentDoc` per platform verb,
phrased from the sentence templates, with the `{formation}` slot's
gazetteer built from the live roster read at match time. A recognised
verb runs through the same builtin handler the slash command hits.
- Sentence templates move to per-locale files, hassil-style. `en` is the
existing English catalogue; ar, es, fr, ja, pt, th and tl are stubs
that fall back to English until translated.
Plan 3.9 — the three vocabularies stay, but the table was missing.
GLOSSARY.md gains the canvas/formation-verb/runtime mapping, and the
interface fields that said swarm and meant formation are renamed on both
sides: `DataProvider.formations()` returning `FormationInfo[]`, and
`selectedFormationId`. The formation verbs are untouched — they are the
mechanics.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018M415coMKAv5V2xJQsaSf8
The swarm-to-formation rename left the canvas model module declaring a FormationInfo alongside the canonical wire type in the dashboard types module, which the same file also imported. The canonical one stays; the canvas mapper, the dashboard context and the package index now take it from there. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018M415coMKAv5V2xJQsaSf8
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Two plan items in one branch.
Chat controls the platform, under the drum rule (5.4, finding 91). The README and the canvas guide promise that chat runs the same command router as the rest of the platform. It ran a subset: nothing in chat could see or steer a formation, answer an approval by name, audit memory, or change safety or model configuration.
Three deviations. The runtime on the handler context is optional, because headless, command-line and test bots have no runtime, which follows how the capability bridge is already injected. Handlers use the real handler signature rather than the sketch in the plan. The verb registry lives in its own operations module rather than the existing commands module, which is the command-card grid and would have broken the module rule.
Vocabulary, mapped not collapsed (3.9, finding 70). The glossary gains the three-column table mapping canvas words to formation verbs to runtime names, with a note on which surface speaks which column. Interface fields that said swarm and meant formation are renamed on both sides. The formation verbs keep their game names, because they are the mechanics.
Left for the contract item: the model tool-loop half of 5.4, which depends on the generated contract. The schema hook it needs is in place.
Verification: builds and clippy
-D warningsclean across bot, daemon and runtime; 359 tests green; frontend typecheck, lint and build pass.🤖 Generated with Claude Code
https://claude.ai/code/session_018M415coMKAv5V2xJQsaSf8