Skip to content

feat(xsd): stop_project ActionType, the authored end of an unattended show (0.1.0rc17) - #19

Merged
ibiltari merged 1 commit into
mainfrom
feat/stop-project-actiontype
Oct 15, 2026
Merged

ibiltari merged 1 commit into
mainfrom
feat/stop-project-actiontype

Conversation

@ibiltari

Copy link
Copy Markdown
Member

Adds stop_project to script.xsd ActionType: the first project-scope action, used by the cuems-engine stop_project ActionCue to end an unattended show (ClickUp 869fhjdq5). Version 0.1.0rc17.

  • stop_project takes no target. action_target is written empty (<action_target />), which TargetType already allowed. It parses back as None, because the parser maps '' to None and assigns without going through the setter. The ActionCue constructor and setter still refuse an explicit None.
  • No behaviour change in this package; the engine implements the action.
  • Skew: every box of a cluster needs rc17 or later before a project carrying the cue is saved. An older utils rejects such a project at validation. Rollback: downgrading utils on a box that holds such a project strands it until the cue is removed from cue_script.xml by hand. Both are documented in CHANGELOG.md and CLAUDE.md.

Tests: tests/test_action_cue_stop_project.py covers:

  • the writer → XSD → reader round trip;
  • the parsed target being falsy;
  • the editor's JSON null path;
  • unknown action types still rejected;
  • the model still refusing None.

The suite passes on the .111 test box: 570 passed.

Verified on test2 with the engine and frontend PRs: an rc16 editor refuses the project, while rc17 saves, re-opens and loads it. Design: cuems-RELATIONS/Plans/2026-10-15-engine-stop-project-actioncue.md.

…attended show (869fhjdq5)

script.xsd ActionType gains stop_project, the first project-scope action.
It needs no target: action_target is written empty (<action_target />),
which TargetType already allowed, and parses to None because str_to_value
maps the empty string to None and the parsers assign without the setter.
The ActionCue constructor and setter still refuse an explicit None.

The behaviour lives in cuems-engine (every node reveals the cue and the
controller runs its STOP path); this package only carries the vocabulary.
Version 0.1.0rc17. Skew and rollback rules in CHANGELOG.md and CLAUDE.md:
every box of a cluster needs >= rc17 before such a project is saved, and
a downgrade strands the project until the cue is removed by hand.

Tests: tests/test_action_cue_stop_project.py (writer -> XSD -> reader
round trip, parsed target falsy, editor JSON null target, unknown action
types still rejected, model still refuses None). Suite: 570 passed on .111.
@codecov

codecov Bot commented Oct 15, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 98.71795% with 1 line in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
tests/test_action_cue_stop_project.py 98.70% 1 Missing ⚠️

📢 Thoughts on this report? Let us know!

@ibiltari
ibiltari merged commit 23e4752 into main Oct 15, 2026
3 checks passed
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.

1 participant