Skip to content

zone/v0: successor revision for place-names - #119

Merged
MJohnson459 merged 6 commits into
mainfrom
zone-spec-place-names
Sep 29, 2026
Merged

MJohnson459 merged 6 commits into
mainfrom
zone-spec-place-names

Conversation

@MJohnson459

Copy link
Copy Markdown
Contributor

zone/v0's successor revision: a zone is a place-name. Mote's conformance test now runs against it instead of skipping.

This is two branches in two repositories, and neither has been pushed.

augereai-spec, branch zone-place-names (77c1ebc, worktree ~/Projects/augereai-spec-616)

  • The vocabulary term is now name, note and navigable. kind, display_name, aliases, parent, tags and description are retired. A producer must not write them and a consumer must accept them. Two are still read: description is read as note, and kind: keepout/slow sets navigable: false. A retired constraint kind beside navigable: true is invalid, and the schema enforces this.
  • The name rule is ^(?!\s)[^\x00-\x1f\x7f]+(?<!\s)$ with maxLength 64, the same in zone-ref, zone-vocabulary, zone-binding and zone-resolution. capability/v0's registry already $refs zone-ref, so goto/fetch accept place-names with no registry change.
  • Resolvers match names only: exactly first, then case-folded with whitespace normalised. They never match the note.
  • The resolution payload no longer has kind.
  • The README's vocabulary section is rewritten (Names, Matching, Navigability, Reading an older vocabulary). The conformance list and the Mote mapping table are updated.
  • Examples: place-names throughout, plus a new vocabulary.legacy-terms.json that shows the read rule. The uppercase-name negative example is replaced by two new ones: a padded name and a navigable keepout.
  • v0 is changed in place, not copied to v1. CONTRIBUTING forbids this; the operator decided on it in session. The commit message says so.

mote, branch zone-spec-place-names (8ad3850, based on fix/dispatch-form-and-zone-names, which holds b422b70)

  • jsonschema is added to the dev feature. The default (robot) environment gains nothing, and the lock changes only for dev.
  • test_spec_conformance.py: the strict xfail is removed. New checks against the spec: the read rule for retired fields, ZONE_NAME_RE and the spec's zone-ref accepting and refusing the same names, and a goto input schema taking Living Room.
  • CLAUDE.md: the outstanding-revision notes are replaced. The acceptance command is AUGEREAI_SPEC=<checkout> pixi run -e dev test. The default environment still skips, because it has no jsonschema.

Verification

  • Spec suite: 135 passed (133 before). Both negative examples fail for the intended reason.
  • The pattern gives the same answers under node's ECMA-262 RegExp and Python re.
  • test_spec_conformance.py against the new spec: 12 passed, 0 skipped. Against the old spec: 4 failed (vocabulary, binding, name rule, Living Room).
  • These ran with the main dev env's Python and jsonschema 4.26.0 from a temporary directory, not through pixi run -e dev test in the worktree, to avoid installing a second env.
  • pre-commit passes on the changed files.

Outstanding

  • #629 (the one-frame-per-platform premise) is untouched.

MJohnson459 and others added 4 commits September 21, 2026 14:48
Every retained message re-renders the detail pane, a pose once a second
among them, and renderDispatch rebuilt the capability select and every
input on each one. An open zone dropdown closed under the pointer and a
chosen value was blanked a second later.

Each half of the form is now rebuilt only when what it is generated from
changes: the selected robot, the capability set, the chosen capability's
schema, or the floor's zone names.

browser_check.mjs holds a half-filled field through 3 s of fake-robot
telemetry and asserts it is the same element with the same value. It
fails without the fix ({"same":false,"value":""}).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q8uMDhVVVBFFcUJDBkJCjq
Zones became place-names in #110 (`Living Room`, `Café`), but the
inlined zone-ref schema kept the slug pattern ^[a-z][a-z0-9_]*$. The
dashboard offered the floor's names and task_server refused them:

  goto — invalid_input: input.target 'Living Room' does not match ...

The pattern now comes from zone.ZONE_NAME_RE, the zone record's own
rule, so the two cannot drift. test_spec_capability.py asserted that
"The Kitchen" was refused; it now accepts human names and refuses what
the zone record refuses.

zone/v0's own zone-ref.schema.json still carries the slug pattern.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q8uMDhVVVBFFcUJDBkJCjq
fleetctl imports mote_bringup.spec but never put the mote_bringup source
directory on sys.path. fleet_server gets it from bundle_store; the
default environment gets it from the colcon install. `pixi run -e fleet
fleetctl`, the form the docs give, failed with ModuleNotFoundError since
#104.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q8uMDhVVVBFFcUJDBkJCjq
The spec's successor revision (augereai-spec, zone-place-names) states the
place-name record and takes Mote's zone name pattern for the zone
reference, so the vocabulary test's strict xfail comes off.

jsonschema joins the dev environment. Without it all twelve tests in
test_spec_conformance.py skipped even with a spec checkout present, so
a divergence from the spec was found by a robot refusing 'Living Room'.
The robot env gains nothing.

The test now also checks, against the spec: the read rule for retired
fields (description -> note, kind keepout -> navigable false), that
ZONE_NAME_RE and the spec's zone-ref pattern accept and refuse the same
names, and that a goto's input schema takes 'Living Room'.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@claude

claude Bot commented Sep 29, 2026

Copy link
Copy Markdown

Code review

No issues found. Checked for bugs and CLAUDE.md compliance.

MJohnson459 and others added 2 commits September 29, 2026 18:35
test_fake_robots expected {"target": "Nowhere"} to be refused as
invalid_input, which held only under the slug pattern. Since b422b70 the
zone reference takes any place-name, so "Nowhere" is valid input that
no zone answers to: unresolved_zone. The invalid_input case now uses
"Nowhere ", the one kind of name the rule still refuses, and "Nowhere"
moves to the unresolved_zone case.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
#118 replaced CLAUDE.md with a rules-and-pointers file. This branch's two
edits to the old file become bullets in the new one: the conformance test
needs jsonschema (dev env) and no longer carries a strict xfail, and #616
is settled, leaving #629 as the one open disagreement with zone/v0.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011Ly1jZnCmZq3aaa2iKM9Zz
@MJohnson459
MJohnson459 merged commit cb15d55 into main Sep 29, 2026
6 checks passed
@MJohnson459
MJohnson459 deleted the zone-spec-place-names branch September 29, 2026 21:19
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.

2 participants