Uh oh!
There was an error while loading. Please reload this page.
chore(schema): bump data-ingestors pin to 8f89aec — adopt di#365, audit di#358 (cli#286) - #305
Conversation
Adopts the 6 upstream commits since the 7b4ecac (di#359) pin: - di#358 — require-and-enforce semseg mask_id validator (backend#816) - di#365 — min_size values validated as positive ints at construction (#348) - di#369 — orphan-row reconcile before retry ingest (write path only) - di#366 — content-comparison e2e (tests only) - di#368 — ingest correlation id (write path only) - the 0.7.0 version bump Both sync scripts re-run against the new pin: - scripts/sync-schema.sh: ingest.v1.json + layout.v1.json byte-identical (no upstream schema change in the range) — no diff. - scripts/sync-validator-goldens.sh: regenerated against the REAL validators at 8f89aec — byte-identical goldens, so no verdict or value-level drift for the existing corpus. di#358 only adds the semseg MaskIdColumnValidator (no semseg parity cases yet) and di#365 only changes verdicts for malformed min_size values the corpus never emits. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…vs merged di#358 (cli#286)
di#365 adoption (ValidateImages/spec): the upstream ImageResolutionValidator
now validates min_size VALUES at construction — each side must be a positive
integer (integer-valued floats coerced; strings/bool/None/non-integral floats
rejected as a config error instead of surfacing as a phantom corrupt-image
error). No CLI code change is needed: ParseMinSize's WxH grammar (Atoi + >0)
is the equivalent gate at flag-parse time, so spec.file_options.min_size can
only ever carry the positive ints upstream accepts. Documented on
SpecArgs.MinSize + ValidateImages, and TestParseMinSize now pins the float
boundary ('16.5x32', '32.0x32' both rejected).
di#358 audit (CheckMaskIdColumn vs the merged MaskIdColumnValidator at
8f89aec) — semantics verified point for point, no divergence found:
- exact-lowercase 'mask_id' required after whitespace strip (ReadCSVHeader
trims like CSVIngestor's columns.str.strip())
- case/whitespace variant → rename hint (matchColumnIndex ≙ _match_column)
- empty scan tests the RAW untrimmed cell against NA_SENTINELS (naSentinels
is byte-identical, 12 tokens) + whitespace-only/missing — not trimmed-then-
matched (the #239/#240 padded-sentinel null-set trap)
- mid-read error fails closed on both sides
- duplicate stripped-equal headers: both sides inspect the FIRST exact match
- schema-declaration half satisfied by construction (buildImage always
declares mask_id VARCHAR(255)); csv_options dialect threading N/A (CLI
stages comma-separated UTF-8)
Recorded as a doc block on CheckMaskIdColumn.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>LukasWodka
commented
Jul 14, 2026
👋 Heads-up — Code review queue is at 42 / 30 Above the WIP limit. The team convention is to review existing PRs before opening new work. Open PRs currently in Code review (oldest first):
Pull from review before opening new work. (This is a nudge from the kanban WIP check, not a block.) |
LukasWodka
commented
Jul 14, 2026
@BugBot run |
There was a problem hiding this comment.
✅ Bugbot reviewed your changes and found no new issues!
Comment @cursor review or bugbot run to trigger another review on this PR
Reviewed by Cursor Bugbot for commit bc0a902. Configure here.
saadqbal
left a comment
There was a problem hiding this comment.
👍 Careful pin bump — Schema drift check is green (confirms the 'no schema/verdict changes' claim across 7b4ecac→8f89aec), the CLI already satisfies the new di#358/di#365 value contracts (ParseMinSize rejects the floats, and the two new cases pin it), and the CheckMaskIdColumn parity audit matches what I'd independently confirmed against di#358. Good audit trail in the ref file.
Fixes#286. Part of epic tracebloc/backend#1106 (WS-C.1).
What
Bumps
scripts/.data-ingestors-reffrom7b4ecac(the di#359 merge) to data-ingestors develop HEAD8f89aec(the di#368 merge), adopting the 6 intervening commits:mask_idvalidator (backend#816)CheckMaskIdColumnalready mirrors it exactly (see below)min_sizevalues validated as positive ints at construction (#348)Sync scripts re-run (pin-bump doctrine, backend#1009)
scripts/sync-schema.sh—ingest.v1.json+layout.v1.jsonbyte-identical at the new pin (no upstream schema change in the range), so no diff.scripts/sync-validator-goldens.sh— regenerated against the REAL validators at8f89aec(local data-ingestors checkout at that SHA, its venv: pandas 3.0.3 + Pillow 12.2.0). Goldens byte-identical — no verdict or value-level drift for the existing corpus: di#358 only adds the semseg validator (no semseg parity cases yet — those land with the WS-C corpus ticket), and di#365 only changes verdicts for malformedmin_sizeshapes the corpus never emits.--checkmode passes for both scripts.di#365 adoption (
ValidateImages/spec)Upstream now rejects a
min_sizewhose sides aren't positive integers at validator construction (config error) instead of mislabeling it a corrupt image mid-scan. The CLI can't emit those shapes:ParseMinSize(WxH grammar,Atoi, both sides > 0) is the equivalent gate at flag-parse time, andSpecArgs.MinSizeis[]intby type. Adopted as doc blocks onSpecArgs.MinSize+ValidateImages, plus two newTestParseMinSizecases pinning the float boundary (16.5x32,32.0x32→ rejected). Note the CLI is deliberately stricter than upstream on integer-valued floats (32.0): upstream coerces, the flag grammar rejects — safe direction (the user just types32).di#358 audit (
CheckMaskIdColumnvs mergedMaskIdColumnValidator)Read the full upstream validator at
8f89aecand compared point for point (the #239/#240 padded-NA null-set bug being the cautionary precedent). No divergence found:mask_idrequired after whitespace strip (ReadCSVHeadertrims like CSVIngestor'scolumns.str.strip())matchColumnIndex≙BaseValidator._match_column)NA_SENTINELS(naSentinelsverified byte-identical, 12 tokens) plus whitespace-only/missing — a padded" NULL "counts as populated on both sidesbuildImagealways declares{"mask_id": "VARCHAR(255)"}); itscsv_optionsdialect threading is N/A (the CLI stages comma-separated UTF-8 manifests, no custom dialect)Audit recorded as a doc block on
CheckMaskIdColumn.Verification (what actually ran locally)
bash scripts/sync-schema.sh+--check— no driftbash scripts/sync-validator-goldens.sh+--checkagainst a checkout at8f89aec— regenerated, byte-identical, check greengofmt -l internal/push/clean;go build ./...greengo test ./internal/push/green (3.5s)One reality note: cli#286 / the epic describe data-ingestors as private; it is currently public (
gh repo view→ PUBLIC) — which is also why the unauthenticatedraw.githubusercontent.comcurl insync-schema.shworks.🤖 Generated with Claude Code
Note
Low Risk
Pin bump plus comments and two test cases; existing
ParseMinSize/CheckMaskIdColumnbehavior is unchanged, with sync scripts reported clean.Overview
Bumps the pinned data-ingestors commit in
scripts/.data-ingestors-reffrom7b4ecacto8f89aec, adopting upstream changes including semsegmask_idenforcement (di#358),min_sizepositive-integer validation at construction (di#365), orphan-row reconcile, correlation id, and the 0.7.0 version bump—without regenerating schema or validator goldens (reported byte-identical at the new pin).di#365 is documented on
SpecArgs.MinSize,ValidateImages, and enforced in tests:TestParseMinSizenow rejects float forms (16.5x32,32.0x32), noting the CLI flag grammar is stricter than upstream on integer-valued floats.di#358 parity for
CheckMaskIdColumnis recorded in a comment block onCheckMaskIdColumninpreflight.go(no logic changes in this diff).Reviewed by Cursor Bugbot for commit bc0a902. Bugbot is set up for automated code reviews on this repo. Configure here.