Allow first review of equal constructor discriminators

This commit is contained in:
2026-09-06 06:01:48 +03:00
parent d130013155
commit 6bb2583b4a
5 changed files with 808 additions and 22 deletions
+16 -6
View File
@@ -1155,6 +1155,15 @@ Persisted constructors are discriminator words only:
* EventConstructor: Signal, Time, Change.
* MessageConstructor: Asynchronous, Call, Reply, Create, Delete, Timer.
When a discriminator has no prior fact after explicit resets, both current sides
are applicable and equal, and the proposed target discriminator is unchanged,
KeepTarget, TakeSource or Candidate acknowledges only that discriminator.
It MUST NOT copy a constructor payload, acknowledge unselected descendants or
retire branch history. Descendant facets may be independently selected in the
same review; their decisions retain their own scopes and final-value audits.
Candidate records still MUST NOT change an unselected facet. Missing applicability
on either side does not qualify as an equal discriminator acknowledgement.
A grouped constructor resolution uses a transient typed target record, then
records the discriminator and each acknowledged descendant as separate facts.
It MUST NOT persist a second whole constructor payload overlapping those leaves.
@@ -1166,9 +1175,9 @@ MessageKind includes its discriminator and dependent TimerExpression. State.Kind
is its own structural facet even though it changes the element's derived kind.
Other dependent changes caused by preparation remain explicit impacts.
A constructor Keep requires an actual discriminator proposal or a discriminator
change since its prior review. Repeating Keep on an already reviewed unequal pair
MUST NOT acknowledge unrelated bound/default drift. A real target switch may
A grouped constructor Keep requires an actual discriminator proposal or a
discriminator change since its prior review. Repeating Keep on an already reviewed
unequal pair MUST NOT acknowledge unrelated bound/default drift. A real target switch may
reconsider a previously kept difference. When the target already has the proposed
constructor, reconciliation MUST preserve target-only members rather than replace
its whole list. Removed branch facts participate in agreement as NotApplicable;
@@ -1240,9 +1249,10 @@ not arbitrary architectural neighborhoods, and does not copy them into every
referrer's baseline. Its limits are 4096 objects per side and 32768 edges; exhaustion
is a diagnostic. Successful review remains one undoable transaction. Replanning
unchanged, already acknowledged leaf facts is a no-op only while their requests
remain applicable. A completed constructor switch MUST be removed from subsequent
requests; repeating it when no switch remains is rejected. After an artifact moves
to another owner, metadata review through the old owner's trace is no longer
remain applicable. A completed constructor switch or first acknowledgement of an
equal discriminator MUST be removed from subsequent requests; repeating it when
no switch remains is rejected. After an artifact moves to another owner,
metadata review through the old owner's trace is no longer
applicable and is rejected. An old plan becomes stale after an actual committed
change.