Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Assistant: claude-code Assistant-Model: opus Assistant-Process: 5787@bnt-lap001 Assistant-Session: 5db26b82-138b-40cc-9856-4d5eb0f752fd
2.4 KiB
| id | type | title | domain | repo | status | owner | topic_slug | created | updated | origin | origin_ref | state_hub_workstream_id |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| MAS-WP-0006 | workplan | MAS address composer | communication | mail-address-semantics | finished | claude | coulomb-social | 2026-10-18 | 2026-10-19 | residual | MAS-WP-0003 | 0934280a-f85a-55f1-a17c-61c5255b5e3b |
MAS address composer
Decision-gate outcome of MAS-WP-0002 (founder, 2026-10-18). Pulled
forward because provider configuration forms do not preserve MAS syntax:
the IONOS forwarding form refuses = and forces lower case, and Google
Groups lower-cases members (MAS-WP-0003 T04). Depends on the SCP-6/SCP-7
outcome in MAS-WP-0005.
Scope and interface
id: MAS-WP-0006-T01
status: done
priority: medium
state_hub_task_id: "13071dfc-fbaa-503e-bd0d-ddd6c2377758"
Define what the composer does: from a statute and an intent (resource,
facet, interaction), emit the canonical address and, when the statute
declares one, the forwarder-safe form (lower case, -- separator). Warn
about the 64-octet budget and facet/interaction exclusivity. Decide
whether it is a new CLI command (the CLI has no generate command yet), a web page,
or both. The library side exists: mas_core.generator.for_destination (MAS-WP-0005 T09).
Implement and test
id: MAS-WP-0006-T02
status: done
priority: medium
state_hub_task_id: "69cb22fe-9995-55c3-91de-63eab5c09282"
Build it on mas_core.generator, with fixtures for the forms seen in
MAS-WP-0003.
Outcome
- Interface (T01): a CLI command only,
mas compose DOMAIN TARGET [--facet F] [--interaction MODE] [--for DESTINATION] [--statute FILE | --no-discover]. There is no web page: it would need a second parser in JS, and nothing asks for one yet. TARGET isTYPE=IDor a registry name. - Output: the canonical address with its octet count. If the statute
declares stand-ins, also the forwarder-safe form (stand-ins, then lower
case).
--foradds the named destination profiles. The composer warns when fewer than 16 of the 64 octets are left, and when the statute would not handle the address. It refuses facet + interaction (exit 1). A form the namespace would misread is reported as "cannot express". - Tests (T02):
tests/test_compose.py, using the MAS-WP-0003 forms (IONOSticket--gs-85qj8wc09p+comments, Google Groups lower case,ticket---callback,ticket=RE=2026-4711not expressible).