MAS-WP-0009 T01: independent JS implementation (impl/js), differential test, SCP-9
impl/js (Node, zero deps, written from the specs): parser, v0.2 statute-aware rules, signing, outside master. Passes addresses.json, statute-aware.json and auth.json unchanged; its master passes the 11 slave-setup mode flows against the Python email side (ExternalMaster). Differential testing vs mas_core found two unstated stand-in rules, now SCP-9 in the v0.2 draft with fixtures si-011..013, dt-109; ABNF comments no longer say v0.1. Runner: external masters, step errors fail the flow. 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
This commit is contained in:
parent
ecb1ba47f6
commit
a841ceec73
23 changed files with 938 additions and 49 deletions
|
|
@ -4,7 +4,7 @@ type: workplan
|
|||
title: "Declare MAS v0.2 final"
|
||||
domain: communication
|
||||
repo: mail-address-semantics
|
||||
status: backlog
|
||||
status: active
|
||||
owner: claude
|
||||
topic_slug: coulomb-social
|
||||
created: "2026-10-19"
|
||||
|
|
@ -23,7 +23,7 @@ until a second implementation or deployment exists.
|
|||
|
||||
```task
|
||||
id: MAS-WP-0009-T01
|
||||
status: wait
|
||||
status: done
|
||||
priority: low
|
||||
state_hub_task_id: "65fe7a3f-4142-5834-bca8-3de6b8839986"
|
||||
```
|
||||
|
|
@ -43,7 +43,7 @@ read in a way `mas_core` does not.
|
|||
|
||||
```task
|
||||
id: MAS-WP-0009-T02
|
||||
status: wait
|
||||
status: progress
|
||||
priority: low
|
||||
state_hub_task_id: "a30c1b69-4b41-5636-865a-82341175668b"
|
||||
```
|
||||
|
|
@ -51,3 +51,32 @@ state_hub_task_id: "a30c1b69-4b41-5636-865a-82341175668b"
|
|||
Fold in the findings from T01, then remove "draft" from the bundle
|
||||
(README, SPECIFICATION, CONFORMANCE, CHANGELOG) and date the v0.2 release
|
||||
in the changelog.
|
||||
|
||||
## Outcome of T01 (2026-10-19)
|
||||
|
||||
- **Founder interview.** TypeScript on Node, with no dependencies, in
|
||||
`impl/js/`. Scope: parser, statute-aware rules and an outside master.
|
||||
Findings are reported before any decision to declare v0.2 final.
|
||||
- **`impl/js/`.** Written from the spec texts and fixtures only. It passes,
|
||||
unchanged and read in place: `addresses.json` (35), `statute-aware.json`
|
||||
(33 after SCP-9) and `auth.json` (14). Its outside master passes all 11
|
||||
slave-setup flows of `mas-modes-v0.1-spec` against the Python email side:
|
||||
11 of 11 with the right key, 0 of 11 with a wrong key.
|
||||
- **Differential test** (`tests/test_differential.py`): 1500 generated
|
||||
local-parts × parse (P1 and P2), interpretation under 4 statutes, and
|
||||
destination transforms.
|
||||
- **Findings.**
|
||||
1. §6.3 did not say that the interaction stand-in is read only without
|
||||
`!` (`q!---callback`).
|
||||
2. §6.3 did not say that the resource stand-in excludes an id beginning
|
||||
with `-` (`ticket---`, `ticket---chat`).
|
||||
|
||||
Both were `mas_core` behavior not written in the spec. They are now
|
||||
SCP-9 in the v0.2 draft, with fixtures si-011 to si-013 and dt-109.
|
||||
The ABNF comments still said "v0.1"; fixed. Also noted, not changed: the
|
||||
spec defines no concrete equivalence-key format. Conformance compares
|
||||
only equality, which both implementations agree on. The spec does not
|
||||
say whether a *parser* must reject more than 64 octets: `mas_core` does
|
||||
and the JS parser does not. No fixture covers it.
|
||||
- **Not independently validated:** the email side of the mode contract.
|
||||
It exists only in Python; the JS work covers the master side.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue