Skip to content

Hand-on step writes V2's superclass list; three emitters build complete documents - #372

Merged
jesshaley merged 3 commits into
V2from
claude/hand-on-superclasses
Nov 2, 2026
Merged

jesshaley merged 3 commits into
V2from
claude/hand-on-superclasses

Conversation

@jesshaley

@jesshaley jesshaley commented Nov 2, 2026 •

Copy link
Copy Markdown
Collaborator

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.md G98 (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), and ensureClassBlocks is deleted."

ensureClassBlocks is NOT deleted here (see "Why the padding stays" below).

Commit 1: the hand-on step

did2.convert.handOnSuperclasses writes did2.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_v2 calls it for HAND_ON_CLASSES; counted in summary.hand_on_superclasses (bodies_written, by_class).

Measured (scratch probe, branch claude/W-padding-probe, not for merge)

Commit 1 plus a probe in ensureClassBlocks printing every body it changed, with class and callers, on every path. Full Test code run 41396033849 against the V2 base run 41394449293 (c2749f8):

corpus padded / changed, base padded / changed, probe final documents quarantined carried notes
20211116 4453 / 547 4453 / 0 5036 -> 5036 0 -> 0 24 -> 24
B 7355 / 2497 7355 / 0 33427 -> 33427 0 -> 0 7583 -> 7583
Dab 14543 / 4101 14543 / 0 67942 -> 67942 0 -> 0 (1605 in pass 1, all resolved, as base) 17786 -> 17786
JH 22368 / 8 22368 / 0 82845 -> 82845 0 -> 0 72050 -> 72050
PRED 28 / 0 28 / 0 42 -> 42 0 -> 0 0 -> 0

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

  • jDemoFold writes did2.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 to HAND_ON_CLASSES: the decision named the five the corpora hold; these two are handed on to epochMint the same way, and no corpus holds one).
  • resolveValidIntervals: writes an empty time_reference block 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-attempt locally) 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.etaShape and the assemblers) and relies on the padding inside v1_to_v2's re-validation for empty blocks: first five quarantined were relative_time_reference without its time_reference block, manipulation without interaction, chemical and formulation without data. The DID corpus harness runs no NDI second pass, so class_blocks_padding reading 0 there does not show this. Deleting ensureClassBlocks therefore waits on NDI's second pass emitting complete documents (siblings first).

https://claude.ai/code/session_01FxKLA8Tbf9cpvDe7fuVeKf


Generated by Claude Code

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
jesshaley force-pushed the claude/hand-on-superclasses branch from d214cf3 to 45057b6 Compare November 2, 2026 06:46
@jesshaley jesshaley changed the title Hand-on step writes V2's superclass list; ensureClassBlocks deleted Hand-on step writes V2's superclass list; three emitters build complete documents Nov 2, 2026
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FxKLA8Tbf9cpvDe7fuVeKf
@jesshaley
jesshaley force-pushed the claude/hand-on-superclasses branch from 9610955 to fa88b76 Compare November 2, 2026 07:57
@jesshaley
jesshaley marked this pull request as ready for review November 2, 2026 09:29
@jesshaley
jesshaley merged commit 5339621 into V2 Nov 2, 2026
16 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants