You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit c6acd1e
Browse filesBrowse the repository at this point in the historyBrowse files
fix(daemon): print ambiguity candidates only when they can be issued (ADR 0014)
The review's P1: updateSessionSnapshot deliberately skips storing a
sparse-quality capture, so candidates minted from that tree were issued
against the PREVIOUS stored tree's generation -- the same wrong-node
bind the issuance rule exists to prevent, arriving through the sparse
path. issueSettleRefs already carries the opposite ruling beside the
same primitive: what was not stored issues nothing. The second
implementation of the rule had dropped that guard.
Printing and issuing become one decision at the rule, keyed on the
typed fact the surfaces already read: the candidate bodies may only be
authorized when the capture the failing request consumed IS the tree
the session stores under the generation being frozen (node identity --
the command layer stores an annotation copy of the same array). A
sparse/unstored capture, a retired or sessionless ref, or a session
with no generation now degrades to the count-only refusal: truthful
matches count, no candidate refs, and a hint that cannot advertise an
affordance the frame could not honor. An advertised-but-unusable ref is
worse than no list.
Both consumer seams hand the rule the capture their request consumed:
the selector routes pass the capture runtime's consumedSnapshot slot
through toDaemonResponse's issuance parameter, and the touch runtime
owns a per-dispatch consumedCapture slot filled where its own captures
land. Runner-native refusals (direct iOS) carry no candidate shape and
pass through untouched.
The unit door previously over-claimed a sessionless assertion it never
made; it now pins retired-ref, sessionless, no-generation, and
unstored-capture refusals separately, and the reviewer's end-to-end
sequence gains its sparse twin. commands.md scopes the predicate claim
to the uniqueness rows (exists/absent never resolve one element) and
documents the count-only form.
0 commit comments