130 lines
7.9 KiB
Markdown
130 lines
7.9 KiB
Markdown
# Process and FunctionalChain group removal
|
|
|
|
This policy refines the local Process part of the [multiple-selection
|
|
contract](multiselect-contract-20260923.md) and the focused-removal semantics in
|
|
[language section 8.1](../docs/language.rst). It is an implementation decision,
|
|
not runtime, native, integrated or release acceptance.
|
|
|
|
## Exact admission and one transaction
|
|
|
|
Remove the complete captured group of local contribution occurrences and
|
|
maintained links. An occurrence must be a unique listed direct child of the
|
|
active Process or FunctionalChain, with the matching layer and an Action,
|
|
Exchange, Control or SequenceReference body. A SequenceLink must connect listed
|
|
local contributions of that same owner. A ContextualLink is local when its
|
|
explicit owner matches, even if both endpoint addresses are qualified. Its
|
|
Precedence, Exchange and CommonWork purposes retain their distinct meanings.
|
|
|
|
A qualified ProcessOccurrence or ProcessPreviewLink is not an editable local
|
|
object. Refuse the whole mixed selection; never strip its reference path, edit
|
|
the reused definition, select an outer reference implicitly, or fall back to
|
|
the primary. Open the defining sequence to edit its contents. Legacy ordered
|
|
arrows have no maintained relation identity and cannot be deleted as links.
|
|
|
|
Admit every original typed target before normalizing execution. Selected local
|
|
occurrences are independent deletion roots. Compute their existing core
|
|
deletion-impact union, and omit a selected relation command only when that
|
|
relation is already covered by this union. It remains a selected removal in the
|
|
review. Blindly deleting both an occurrence and its incident selected link would
|
|
fail because the first cascade already removed the second identity.
|
|
|
|
Evaluate one Batch with the core command engine and final structural validation.
|
|
Derive deleted identities and changed surviving records from the actual final
|
|
candidate, including embedded diagram placements. All selected identities must
|
|
be removed and no identity may be created. Preserve referenced work, exchanges,
|
|
sequence definitions, other uses and opposite-layer counterparts. Global
|
|
dependent ContextualLinks, attachments and traces follow existing core cascade
|
|
rules; never shorten their paths or silently retarget them.
|
|
|
|
## Order and caller consequences
|
|
|
|
Deletion can change meaning without creating any new stored record. Given
|
|
`[Action A, Exchange E1, Control C, Exchange E2]` and no maintained links,
|
|
removing A and C leaves implicit E1-to-E2 order. Removing the last authored
|
|
SequenceLink on an exchange-only list likewise restores implicit order, which
|
|
may retain a visible connection that the user expected to remove. Removing E2
|
|
from legacy `[E1, E2, E3]` creates the implicit E1-to-E3 adjacency. A remainder
|
|
with zero or one exchange changes interpretation without adding an edge.
|
|
|
|
The review therefore compares before/after interpretation for every surviving
|
|
Process and FunctionalChain, independently of whether its stored record changed:
|
|
|
|
- Local implicit order follows the existing desktop listed-step/SequenceLink
|
|
predicate. Explicit mode is distinct from an empty implicit sequence.
|
|
- Reused-definition implicit order follows the core contextual expansion
|
|
predicate: indexed contributions (including owned but unlisted contributions)
|
|
must all be exchanges and the definition must have no maintained SequenceLink
|
|
or ContextualLink. This is a definition-level order fact, not a claim that the
|
|
entire expanded graph was analyzed or is connected.
|
|
- Contextual analysis follows the core index's transitive contextual-link
|
|
presence. Losing the last such link is reported separately from either order
|
|
predicate; it does not necessarily mean a local explicit-to-implicit switch.
|
|
|
|
For each changed interpretation, identify surviving direct and transitive
|
|
callers through the union of before/after SequenceReference dependencies. Such
|
|
callers can be affected while their stored records remain unchanged. Keep these
|
|
effects separate from removed/updated record counts and make the full affected
|
|
set searchable and pageable, with full names and aliases.
|
|
|
|
Also seed caller impact from definitions whose contributions or maintained links
|
|
are removed or changed, even when all three interpretation fields stay the same.
|
|
For example, removing A from explicit A-to-B-to-C changes every use of that
|
|
definition while the remaining B-to-C link keeps its mode explicit. Label the
|
|
caller effect as using a changed definition; do not imply that complete expanded
|
|
connectivity or boundary analysis was performed. Interpretation-only detection
|
|
would miss this ordinary case and is rejected.
|
|
|
|
Explain that reused topology, entry/exit connections and diagnostics may change.
|
|
Deleting A-to-B while B-to-C remains can make B a new intrinsic entry and thus
|
|
add an effective reference-boundary connection in callers. No new stored
|
|
identity does not mean no new effective connection.
|
|
|
|
Caller rows identify definitions, not individual SequenceReference instances;
|
|
two references to P in Q still yield one Q row. Never present that count as the
|
|
number of uses. An empty expanded-order classification supplies no edges and
|
|
does not establish a valid flow or boundary: core expansion of an empty sequence
|
|
is incomplete. Say that no contributions/ordered pairs remain, preserving the
|
|
ordinary completeness diagnostics.
|
|
|
|
Incomplete models may have owned but unlisted contributions. Selected unlisted
|
|
cards are ineligible, but other such contributions must not be ignored in impact
|
|
computation. The local and expanded predicates can differ; report their actual
|
|
results separately rather than falsely treating them as one execution mode.
|
|
This operation does not resolve that broader semantic inconsistency or suppress
|
|
existing diagnostics.
|
|
|
|
Alternatives considered: rejecting all interpretation changes prevents normal
|
|
editing of valid incomplete models; silently accepting them hides an engineering
|
|
consequence; inventing sentinel controls or replacement links manufactures model
|
|
objects; a new persisted topology-mode field requires an independent language,
|
|
migration and API decision. Explicitly reviewing the existing source-derived
|
|
consequences preserves graphical/textual parity without introducing new objects.
|
|
|
|
## Capture, review and verification
|
|
|
|
The App captures document, revision, owner, canvas epoch, exact selection
|
|
generation, membership and primary, and verifies actual rendered visibility.
|
|
Pending source/property/behavior edits, gestures, other modals and non-selection
|
|
tools refuse admission. Header, context menu, focused Delete and Shift+Delete
|
|
must all capture the complete group before ordinary singleton handlers can act.
|
|
Invoking a menu over an unselected object does not replace the existing group.
|
|
|
|
Only explicit confirmation of the current token commits one Document
|
|
transaction. Recheck complete admission before applying it. Search, page,
|
|
Cancel and Confirm packets belong to their review token. Enter in search does
|
|
not implicitly confirm deletion. Cancel, stale/refused events and source-write
|
|
failure preserve the accepted model/source/history, selection and camera.
|
|
Success returns inspection to the owner and retires removed transient selection;
|
|
one model Undo/Redo restores the exact complete source and model.
|
|
|
|
Required discriminators include OA and SA mixed occurrence/link groups;
|
|
cascade-covered selected links in different click/UUID orders; repeated reuse
|
|
and globally dependent links; all ContextualLink purposes; local plus qualified
|
|
whole-set refusal; explicit-to-implicit and legacy adjacency changes; zero/one
|
|
remainders; contextual-analysis-only changes; surviving transitive callers;
|
|
owned-unlisted contributions; stale secondary selection and tokens; pending
|
|
drafts; exact cancel/failure/Undo/Redo/save/reopen behavior. Tests must compare
|
|
literal expected identities and models, not only counts or the planner's own
|
|
output. Native acceptance must inspect meaningful review wording, full impact
|
|
reachability, focus, compact layout, cancellation and persistence.
|