Write prescription links, and confirm a scanner accepts them - #14
Merged
Conversation
The library could read a copy reference and not create one: duplicate_step wrote empty RelationsFrom and RelationsTo entries, which is right for a fresh scan and leaves an imported copy of a linked one silently unslaved. link_steps writes the relation on the source and mirrors it onto the target as a $ref back-pointer to the same object rather than a second copy, which is how the console spells it. The group is checked against the menu the corpus established, because a name outside it would put a payload in the archive that no dialog can have produced. The payload is an XML element whose attribute order was a guess, so the test compares the stored string rather than decoded fields. copyparametertest slaves eleven scans to a twelfth across all ten groups and both flags, so stripping its links and rewriting them is an answer key rather than a sample: all twelve come back byte for byte, Data included. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
54 scans in and 54 out. Every one of the 25 Special-card sequences kept its edit, the six Special-card edits included, and all ten copy references came back with the same source, target, group and constraint while their eleven copies stayed byte-identical. So link_steps writes a link the console accepts, which is the one thing about it nothing could establish offline. The more interesting result is what happened to the scans that did change. Nine differed only in the derived scan times Manifest.stale already names. rslh_ep3d_vaso differed in three more, and they are exactly linear in the TR we moved -- alTI[0] = 24*TR + 10320, alTI[1] = 72*TR + 10320, alTR[1] = 96*TR + 20640, exact at both the old and the new value. The console recomputed a coupled set we had left stale rather than refusing the protocol. That is a second outcome beside the greyed-out scan, and worth writing down because it is easy to mistake for success. Where the sequence can derive the rest, it does, and the protocol returns consistent and changed in more places than were written. Which outcome a given incomplete write gets is still only knowable on a scanner -- Include Nav. = Off is the same shape and was refused -- so the rule is unchanged; what is new is that "rejected" and "silently repaired" are both live, and only a diff of what came back separates them. Co-Authored-By: Claude Opus 5 <noreply@anthropic.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.
The library could read a copy reference and not create one:
duplicate_stepwrote empty
RelationsFromandRelationsToentries, which is right for afresh scan and leaves an imported copy of a linked one silently unslaved.
link_stepsIt writes the relation on the source and mirrors it onto the target as a
$refback-pointer to the same object rather than a second copy, which is howthe console spells it. The group is checked against the menu the corpus
established, because a name outside it would put a payload in the archive that
no dialog can have produced.
The payload is an XML element whose attribute order was a guess, so the test
compares the stored string rather than decoded fields.
copyparametertestslaves eleven scans to a twelfth across all ten groups and both flags, so
stripping its links and rewriting them is an answer key rather than a sample:
all twelve come back byte for byte,
Dataincluded.A scanner has now loaded them
An archive exercising the whole write surface at once — 54 scans: 25 sequences
that print a Special card drawn from five different exports, each carrying
one edit; and ten copy references from one source, one per menu group, on
eleven deliberately identical scans.
54 in, 54 out. Every edit survived, the six Special-card ones included.
All ten links returned with the same source, target, group and constraint, and
the eleven copies were still byte-identical. That is the one thing about
link_stepsnothing could establish offline.The console repairs a coupled set, as well as refusing one
Fifteen of the 25 came back byte-identical in ASCCONV. Nine differed only in
lScanTimeSec/lTotalScanTimeSec, the derived timesManifest.stalealreadynames — that is what the
eja_*spectroscopy scans showing greyed duringimport turned out to be, and nothing in them was damaged.
rslh_ep3d_vasodiffered in three more, and they are exactly linear in the TRthat moved:
exact at both the old and the new value. The console recomputed a coupled set
left stale rather than refusing the protocol.
That is a second outcome beside the greyed-out scan, and it is easy to mistake
for plain success: where the sequence can derive the rest it does, and the
protocol returns consistent and changed in more places than were written.
The rule is unchanged — which outcome a given incomplete write gets is still
only knowable on a scanner, and
Include Nav. = Offis the same shape and wasrefused — but "rejected" and "silently repaired" are both live, and only a
diff of what came back separates them.
Testing
2349 passed, 17 skipped. Two new tests: the byte-for-byte relink againstcopyparametertest, and a refusal for a group outside the console's menu.🤖 Generated with Claude Code