proposal: a retired target stops blocking its source - #46
Open
delchev wants to merge 1 commit into
Open
Conversation
An event-driven create-from's at-most-once guard asks existence only, so a voided target satisfies it forever and "void and reissue" is inexpressible. Proposes reading the target's `stage:` classification - the one a report's `scope:` already resolves through - rather than adding a second vocabulary for "this row no longer counts".
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Proposal
0024-supersede-a-retired-target.md.An event-driven create-from is at-most-once, and the guard asks a question about existence — "is there a target for this source?" A voided document answers yes forever: it keeps existing and keeps back-referencing its source, so the source's one shot is spent at the first creation and nothing that later happens to the target gives it back. "Void and reissue" — a document retired while keeping its number, a fresh one raised — is inexpressible, and the failure is silent.
The proposal adds nothing to the create-from. Which statuses retire a document is already declared where the nomenclature is seeded — the
stage:classification a report'sscope:resolves through — and the guard reads it: a target classifiedcancelledorvoidno longer satisfies the guard;draftandlivestill do, so redelivery idempotence is unchanged. The retired row is kept, never edited or re-pointed.A second key on the rule (
supersedeWhen:) was the obvious alternative and is rejected in the text: two vocabularies for "this row no longer counts" could only drift. An append cardinality is also not the answer — it removes the guard entirely, so it would mint a document on every later qualifying event.Edge rules cover the unclassified nomenclature (existence-only plus a warning — the case where the guard reads as state-aware and is not), a target with no lifecycle, a cross-model target whose seeds live in its owner model, and why
draftdoes not retire.Implementation proving it out: eclipse-dirigible/dirigible#6850 (issue eclipse-dirigible/dirigible#6814).