Repository navigation
Hand-on step writes V2's superclass list; three emitters build complete documents - #372
Merged
Merged
Conversation
Decided by Jess Haley, 2026-11-02 [handed-on classes carried at the end] (2) (did-schema docs/plans/did_v2_go_forward_class_audit.md; docs/V2_PLAN.md G98 (a)). did2.convert.handOnSuperclasses writes did2.build.superclasses for syncrule, epochfiles_ingested, stimulus_response_scalar, stimulus_response_scalar_parameters_basic and openminds when their migrator hands them on unchanged, and drops an empty v1 block for a parent V2 hosts no block for. Counted in summary.hand_on_superclasses. ensureClassBlocks still runs after it, so summary.class_blocks_padding measures what is left before the padding is deleted. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FxKLA8Tbf9cpvDe7fuVeKf
Measured on claude/W-padding-probe (the hand-on step plus a probe printing
every body ensureClassBlocks changed, by class and caller, on every path):
in the corpora it changed nothing; on the unit fixtures three emitters still
relied on it. Each now emits its document complete ([early migration pieces
fixed] (2), Jess Haley, 2026-10-26: "the builder produces a complete
document"):
- jDemoFold (demo_ndi, demo_ndi_mock) writes did2.build.superclasses('demo');
- daqreader_epochdata_ingested and daqreader_image_epochdata_ingested write
their class's superclass list on the document kept beside its clock
references, and take the hand-on step ([handed-on classes carried at the
end] (2)) when they hand the document on unchanged (no corpus holds one);
- resolveValidIntervals writes an empty time_reference block when the source
clock stated no tolerance.
ensureClassBlocks is NOT deleted here: NDI-matlab's second pass still builds
documents the padding completes (an NDI end-to-end against a deleting branch
quarantined 15212 Dab documents: relative_time_reference without its
time_reference block, manipulation without interaction, chemical and
formulation without data).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FxKLA8Tbf9cpvDe7fuVeKf
jesshaley
force-pushed
the
claude/hand-on-superclasses
branch
from
November 2, 2026 06:46
d214cf3 to
45057b6
Compare
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FxKLA8Tbf9cpvDe7fuVeKf
jesshaley
force-pushed
the
claude/hand-on-superclasses
branch
from
November 2, 2026 07:57
9610955 to
fa88b76
Compare
jesshaley
marked this pull request as ready for review
November 2, 2026 09:29
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.
Builds the first half of part (2) of [handed-on classes carried at the end] (Decided by Jess Haley, 2026-11-02, did-schema
docs/plans/did_v2_go_forward_class_audit.md;docs/V2_PLAN.mdG98 (a)): "a small named step on the hand-on path writes V2's superclass list for the five classes pass 1 hands on unchanged (syncrule, epochfiles_ingested, stimulus_response_scalar, stimulus_response_scalar_parameters_basic, openminds), andensureClassBlocksis deleted."ensureClassBlocksis NOT deleted here (see "Why the padding stays" below).Commit 1: the hand-on step
did2.convert.handOnSuperclasseswritesdid2.build.superclasses(<class>)on a document whose migrator hands it on unchanged, and drops an EMPTY v1 block of a parent V2 hosts no block for (a non-empty one is left for validation).v1_to_v2calls it forHAND_ON_CLASSES; counted insummary.hand_on_superclasses(bodies_written,by_class).Measured (scratch probe, branch
claude/W-padding-probe, not for merge)Commit 1 plus a probe in
ensureClassBlocksprinting every body it changed, with class and callers, on every path. Full Test code run 41396033849 against the V2 base run 41394449293 (c2749f8):Probe lines in the corpus jobs: 0 (the padding changed nothing on any DID path). In the unit-test job: 19, from three emitters no corpus exercises:
demo,daqreader_epochdata_ingested,daqreader_image_epochdata_ingested(superclass list only).Commit 2: those emitters build complete documents
jDemoFoldwritesdid2.build.superclasses('demo').daqreader_epochdata_ingested,daqreader_image_epochdata_ingested: the document kept beside its clock references gets its class's superclass list; handed on unchanged (no epoch document), they take the hand-on step (added toHAND_ON_CLASSES: the decision named the five the corpora hold; these two are handed on toepochMintthe same way, and no corpus holds one).resolveValidIntervals: writes an emptytime_referenceblock when the source clock stated no tolerance (found by reading, not by the probe).Why the padding stays
A deleting version of this branch (kept as
W-delete-attemptlocally) was run through NDI's end-to-end with NDI-matlab#1149: NDI run 41399719227 (Dab) quarantined 15212 documents (1605 on V2), 41399705406 (fixture e2e) failed the same way. NDI's second pass builds documents by hand (ndi.migrate.internal.etaShapeand the assemblers) and relies on the padding insidev1_to_v2's re-validation for empty blocks: first five quarantined wererelative_time_referencewithout itstime_referenceblock,manipulationwithoutinteraction,chemicalandformulationwithoutdata. The DID corpus harness runs no NDI second pass, soclass_blocks_paddingreading 0 there does not show this. DeletingensureClassBlockstherefore waits on NDI's second pass emitting complete documents (siblings first).https://claude.ai/code/session_01FxKLA8Tbf9cpvDe7fuVeKf
Generated by Claude Code