docs: R1.6 is closed — say how it is held, not that it is broken - #122
Merged
Conversation
The "Known open defect — R1.6 persist-before-ack" section described work that has since landed in both repos, and prescribed a fix that is already done. Left as-is it tells a reader the wallet can silently lose a `task-consent/request` — i.e. that a gated action can skip its human check — which is no longer true and is the worst kind of stale doc to leave in a security-relevant path. Both halves are in place: - `@openvtc/vti-didcomm-js` 0.6.2 (`77dd700`) awaits `_deliver` — which awaits `onMessage` — and only then acks. - `onInboundMessage` awaits `putPendingInbound` as its first action, with the boot drain in `offscreen.ts` and `background.ts`, and `tests/inbound.ack-ordering.mjs` pinning the ordering. Replaced with a section on **how the property is held**, because that is what the next person needs. It names the two halves, states that the `^0.6.2` floor is a correctness constraint rather than a version preference (an older transport acks first and silently reintroduces the defect), and lists what breaks it — dropping the `await`, moving the persist behind a branch, adding a message path that skips it, or relaxing the dependency floor. The rule in the binding-rules list is updated to match: "satisfied — and easy to break again" rather than "currently violated". Signed-off-by: Glenn Gore <glenn.g@affinidi.com>
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.
What
CLAUDE.md's "Known open defect — R1.6 persist-before-ack" section describeswork that has since landed in both repos, and prescribes a fix that is already
done.
Left as-is it tells a reader the wallet can silently lose a
task-consent/request— that a gated action can skip its human check. That isno longer true, and it is the worst kind of stale doc to leave sitting in a
security-relevant path: it invites someone to "fix" something that works, or to
distrust a guarantee they actually have.
Both halves are in place
@openvtc/vti-didcomm-js0.6.2 (commit77dd700, "hand off inboundmessages before acking") —
_dispatchFrameawaits_deliver, which awaitsonMessage, and only then acks.onInboundMessageinsrc/offscreen.tsawaitsputPendingInboundas its first action, with theboot drain in
offscreen.tsandbackground.ts, andtests/inbound.ack-ordering.mjspinning the ordering.The installed and declared dependency is
^0.6.2, so the fixed contract isactually in use rather than merely available.
What replaced it
A section on how the property is held, which is what the next person
actually needs. It names both halves, and makes two things explicit that are
not visible from the code that depends on them:
^0.6.2floor is a correctness constraint, not a version preference.An older transport acks first and silently reintroduces the defect.
await, moving the persist behind a branch,adding a message path that skips it, or relaxing the dependency floor.
It also records why
pending.tsis separate fromdedup.ts— dedup answers"have I already prompted for this?", pending answers "is this still
outstanding?", a message can be both, and that is why the drain path bypasses
the dedup check.
The binding-rules entry is updated to match: "satisfied — and easy to break
again" rather than "currently violated".
Test
Documentation only; no code changes.