Tracking the consumer-side adoption of engine v7's paren-based wrapped-state naming in @post-machine-js/machine. Gated on turing-machine-js#168 merging and shipping in engine v7.
Why
PostMachine's Path format embeds > as the engine's wrapper separator — see paths like 'foo>10~30' in the README's naming-convention section. Engine v7 changes the wrapper format from flat bare>override to nested bare(override). Once engine v7 publishes, PostMachine paths need to adopt the new format to stay consistent with what state.name / MachineState.arrivalPath carry.
Scope
Code (parser + formatter):
Path parser/formatter — whichever module owns parsePath(s) / formatPath(p). Adopt (...) for wrapper composition. The ~ continuation separator and :: subroutine scope separator are unaffected.
- Anywhere PostMachine builds paths internally using the wrapper convention — audit
MachineState extension code.
Docs:
packages/machine/README.md — naming-convention section's > separator description, all example paths.
CLAUDE.md — engine-naming-convention references.
Tests:
- Any path-format assertion using
> for wrappers (e.g., 'rightToBlank>1~2' shape) — flip to 'rightToBlank(1~2)'.
states.md / Mermaid samples in test fixtures.
Out of scope (frozen historical record)
packages/machine/CHANGELOG.md — v6.x entries documented the old format; leave as-is.
docs/superpowers/specs/, docs/superpowers/plans/ — frozen planning artifacts; existing notes about wrapper naming stay correct in their historical context.
Coordination
Migration for consumers (when v7 ships)
Any code that pattern-matches state.name or MachineState.arrivalPath for wrapper composites needs to switch from >-split to paren-aware parsing. Most users don't introspect paths beyond top-level scope/index — impact is concentrated in tooling and tests, not application code.
Tracking the consumer-side adoption of engine v7's paren-based wrapped-state naming in
@post-machine-js/machine. Gated on turing-machine-js#168 merging and shipping in engine v7.Why
PostMachine's
Pathformat embeds>as the engine's wrapper separator — see paths like'foo>10~30'in the README's naming-convention section. Engine v7 changes the wrapper format from flatbare>overrideto nestedbare(override). Once engine v7 publishes, PostMachine paths need to adopt the new format to stay consistent with whatstate.name/MachineState.arrivalPathcarry.Scope
Code (parser + formatter):
Pathparser/formatter — whichever module ownsparsePath(s)/formatPath(p). Adopt(...)for wrapper composition. The~continuation separator and::subroutine scope separator are unaffected.MachineStateextension code.Docs:
packages/machine/README.md— naming-convention section's>separator description, all example paths.CLAUDE.md— engine-naming-convention references.Tests:
>for wrappers (e.g.,'rightToBlank>1~2'shape) — flip to'rightToBlank(1~2)'.states.md/ Mermaid samples in test fixtures.Out of scope (frozen historical record)
packages/machine/CHANGELOG.md— v6.x entries documented the old format; leave as-is.docs/superpowers/specs/,docs/superpowers/plans/— frozen planning artifacts; existing notes about wrapper naming stay correct in their historical context.Coordination
v7integration branch.withOverrodeHaltState→withOverriddenHaltStateconsumer-side #82 + this issue can ship in a single PR (both are mechanical format adoptions across the same file set). Extend defineProperty lockdown to intermediate engine-graph states (continuations, hoppers, group wrappers) #72 is structural and warrants its own PR.Migration for consumers (when v7 ships)
Any code that pattern-matches
state.nameorMachineState.arrivalPathfor wrapper composites needs to switch from>-split to paren-aware parsing. Most users don't introspect paths beyond top-level scope/index — impact is concentrated in tooling and tests, not application code.