Skip to content

intent: with sourceStatus:, a voided target frees the one-shot slot but nothing can re-fire the event-driven create-from #6868

Description

@delchev

#6814 / #6850 made the event-driven create-from's at-most-once guard state-aware: a target retired to a cancelled/void stage is stepped over, so "void and reissue" became expressible - the next qualifying event (or a click) mints the replacement.

With sourceStatus: the "next qualifying event" cannot exist. The first generation's completion hook flips the source to its post-generation status (Generate.java.template:150-165, updateProperty(sourceId, "<statusProperty>", <value>)) - deliberately, so the guard-claimed source stops matching. But the trigger is event: { onTransition: <Source>, when: "Status == <pre-generation status>" }, and the flipped source will not transition through that status again (the usual lifecycle graph declares no edge back). So after voiding the target:

For the sourceStatus: combination #6850 half-delivers: the door is unlocked and nobody can knock.

Directions worth weighing:

  • the target's retiring transition re-delivers the source's qualifying event (the void is the business moment that reopens the slot - but it crosses from the target's lifecycle into the source's topic);
  • a declared reopen: voiding the target flips the source BACK (the completion hook's inverse), so the ordinary re-transition path re-fires - explicit in the model, uses only existing vocabulary;
  • or document that sourceStatus: + event-only requires button: true for reissue, and have the parser warn on the silent combination (event-only + sourceStatus + a classified nomenclature), the same posture fix(intent): a voided target no longer blocks its replacement (#6814) #6850 took for the unclassified one.

Follow-up to #6850; composes with #6859's guard-ownership rule (one rule owns the slot either way).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions