octopus-typed-slots
The groupant beside tools/octopus/src/slots.rs in the Mova repository: what the code computes, what it never does, how to go back from its outputs, its invariants, cost and checks.
Facts
Implementation material. A Mova code model describes this code at one source revision: partial models, finite checks and their stated scope. It is not a reviewed general exposition, and its labels are shown as written, never raised.
Components
| component | label | where |
|---|---|---|
| approximant | partial | Forward approximant |
| ast | partial | syntax.json |
| composition | partial | Composition |
| cost | partial | Cost |
| descriptant | present | Descriptant |
| invariant | partial | Invariant |
| tests | finite evidence | tests |
Obernants
The typed relations around the forward model: the behaviour complement (what the code never does), the reverse reconstruction (every input compatible with an output) and specialised views.
| id | type | label | where |
|---|---|---|---|
behavior_complement | behavior_complement | partial source derived model | behavior_complement |
reverse_reconstruction | reverse_reconstruction | partial source derived model | reverse_reconstruction |
Model text
model
octopus-typed-slots
Descriptant
Typed prompt arguments (URL, host) for configured deputy capabilities: strict validation, placeholder masking before parsing and binding through the native parse. Source: tools/octopus/src/slots.rs.
Forward approximant
mask(prompt): split on whitespace, trim punctuation (a closing parenthesis stays while balanced); a word with '://' must validate as http/https URL without user information, valid host, port 1..65535, printable ASCII; a dotted host shape or IPv4 literal is a host; host/path without scheme is refused; reserved zurl*/zhost* words refused; non-public hosts (loopback, private, link-local, CGNAT, reserved names localhost/.local/.internal/.lan/.home.arpa/.test/.invalid) refused unless policy allows; each argument k becomes placeholder Zurl<k>/Zhost<k>. bound_head(w,node,heads): walk up while the node's relation base is obj/iobj/obl/nmod/appos/conj/compound/flat/list/dep/nsubj and no dependent is an exclusion marker; return the first request head reached.
Invariant
No argument value enters a plan unless its placeholder node reaches a request head through argument relations; every masked value passed validation; text without URL/host shapes is unchanged by mask.
Cost
O(prompt bytes) masking; bound_head O(n^2) for n native words (n<=160).
Composition
Parent: native-octopus-deputy. Slot rules bounded (<=4 per capability, disjoint kinds, max<=16); arguments validated before parsing; binding only through argument relations to a request head.
behavior_complement
Not done: IPv6 literals, schemeless URLs, internationalised domain names in Unicode form, DNS resolution (non-public addresses behind public names are left to the fetcher), coreference ('fetch it'), quoted or negated scopes (refused by the resolver). Counterexample: 'Fetch A because B has a copy.' leaves B under an adverbial clause, so the prompt is refused (red when binding ignores the parse). Evidence status: source-derived model with finite checks, not a proof.
reverse_reconstruction
From a plan's arguments one recovers the validated values (scheme and host lowercased, '/' added to an empty path) and their native nodes; the original spelling (case, trailing punctuation) is recoverable only from the stored prompt. Many prompts map to one argument list; no unique inverse. No unique inverse is claimed.
Dolphin pod (2026-11-04)
Slot kind text: quoted spans in «», “” or "" are masked first and whole as Ztext placeholders; their words never reach the parser; reserved placeholder words outside spans, unclosed or nested quotes, empty or over-6000-byte spans and control characters refuse with argument_invalid.
Epoch 2026-11-04 (Whales in English)
Epoch 2026-11-04: SlotKind::Id (catalog slug: >=3 hyphen-joined lowercase alphanumeric parts with a letter and a digit, <=128 bytes), placeholder Zslug*, reserved prefix zslug; mask_with(prompt, policy, ids) masks ids only when enabled; mask() keeps its behaviour.
tests
Checks
Command: cargo test --manifest-path tools/octopus/Cargo.toml --offline --locked with MOVA_OCTOPUS_TEST_MODEL (16 tests including the unchanged native controls; two identical runs on 2026-11-04).
Negative controls 2026-11-04: binding arguments to the first action instead of through the parse, allowing every robots decision, and ordering jobs by arrival only each turn the English tests red; restored afterwards. These are finite fixtures and one live smoke against the project's own site (2026-11-04); not a proof.
2026-11-04: cargo test --manifest-path tools/whale/Cargo.toml --offline --locked with MOVA_OCTOPUS_TEST_MODEL=$MOVA_DATA/download/0/0.4/en.bin (unit tests incl. 5 service tests, 2 realizer tests, 3 length-gate tests; 2 English tests: 18 prompts, 10 refusals, a served end-to-end run with the real mova-whale child and a fake Codex executable; two identical runs on 2026-11-04)
This page in Markdown → https://md.groupants.elamur.ai/free/en/mova/tools/octopus/src/slots.rs.groupant/