Skip to content

chat: the platform verbs reach chat, and the vocabularies are mapped (plan 5.4, 3.9) - #90

Merged
radicalkjax merged 2 commits into
mainfrom
phase/surfaces-and-claims
Sep 6, 2026
Merged

chat: the platform verbs reach chat, and the vocabularies are mapped (plan 5.4, 3.9)#90
radicalkjax merged 2 commits into
mainfrom
phase/surfaces-and-claims

Conversation

@radicalkjax

Copy link
Copy Markdown
Member

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.

  • Five built-in handlers, each going through an existing runtime operation: formation, approvals, memory, safety and model configuration. Names resolve exactly, then by case-insensitive prefix, and ambiguity is an error rather than a guess.
  • The drum rule holds. Twenty verbs, none of which assigns work to a named member, enforced by tests that mirror the command-line suite: no assign verb exists, and the formation verbs stay inside composition, intent, constraints, intervention and inspection.
  • Language understanding learns the same verbs. Each verb gets an intent document phrased from the existing synonym source, and the formation slot is filled from the live formation list read when the catalogue is built, not from a hard-coded list. A winning platform intent routes to the built-in handler rather than starting a recipe.
  • Sentence templates live in per-locale files. English is real and covers all twenty verbs; the other seven locales are stubs that fall back to English, with the loader and layout wired and tested.

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 warnings clean across bot, daemon and runtime; 359 tests green; frontend typecheck, lint and build pass.

🤖 Generated with Claude Code

https://claude.ai/code/session_018M415coMKAv5V2xJQsaSf8

radicalkjax and others added 2 commits September 6, 2026 11:31
…(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
@radicalkjax
radicalkjax merged commit 1f4da72 into main Sep 6, 2026
29 checks passed
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