Submission v4: arthurmichel00 — 129.14 official train / 130.57 holdout (supersedes #68) - #83
Open
arthurmichel00 wants to merge 3 commits into
Open
Conversation
9 tasks
…t Apache-2.0 (matches THIRD_PARTY_NOTICES.md); 15MB artifact is included in the 0.36 GiB, not additive; drop channel-cost split that misrounded against the 0.06 total; page-level variant cost stated per-page (0.371 s) instead of ambiguous shorthand; 'never read' scoped to runtime; two ported modules not one; milestone claim made count-free (record shows 12, memo said 10 - understated). No numbers, predictions, or claims changed otherwise.
…et raise (record: LEDGER census fix commit), not deskew alone
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.
MIB Doc Challenge Submission (v4 — supersedes #68)
Per the organizers' guidance that updated submissions are filed as a new PR: this replaces #68 (same author), which replaced #58, which replaced #51. Delta vs #68: three new reading mechanisms, all flag-gated, all baked into the image's
ENVand measured as one arm on the full official train set. (1) A generator-inversion reader for the four closed-menu fields — every legal candidate is rendered through a degradation kernel recovered from the damaged row itself and picked by pixel correlation against a census-calibrated margin — which reads rows where no decoder gets usable frames; it is a port of another entrant's MIT-licensed module, corrected and re-gated, and labelled as a port inATTRIBUTION.md. (2) Cross-view likelihood fusion, in-house: each candidate's log-likelihood is averaged across preprocessing views and across pages so the channel decides once on the fused evidence instead of once per view, with no new inference. (3) A strip-scoped fine-tuned Tesseract LSTM (third-party MIT artifact, credited with its sha inTHIRD_PARTY_NOTICES.md) at the escalation tier only; the page-level variant measured 10× over the time budget and was rejected in design, and this pass's individual yield is unproven — it was measured inside the shipped flag-set, never alone, and we say so rather than claim it.Measured out in the same sprint and documented at the same resolution: a per-field candidate margin floor was rejected on measurement in composition (its synthetic census forecast a cost of 0.6 correct fills; the corpus charged 8 — in-container flag toggles isolated it, and dropping it is what took the arm from 129.11 to 129.14 train and 9 wrong fields to 3); a cross-channel veto was killed on evidence at 0 fires across the real 31-slot fill population; fee-row geometry turned out to have a reachable population of zero (the generator prints the value away); candidate scoring for arrival dates decodes the year below chance (42% against 50%) and is CFA-negative even if perfect; and two-rail band registration ships dormant with a hand-verified 2/2 detector because the shipped need-filter fires 0/255. Kill receipts for all five are in
LEVERS.mdandAPPENDIX.md.Field-level audit vs #68: 19 right, 3 wrong, 3 neutral, and 0 adjudication flips — classification and calibration are unchanged, so no verdict moved in either direction. The 3 losses are itemized rather than left for a reviewer to find: two are previously-correct fills the new acceptance layers no longer accept (the field falls back to its corpus-mode default), one is a new value landing where the default happened to match gold. Two of the gains are cases a human review round had marked as unreadable walls. Runtime moved from 5.81 to 5.87 s/PDF against the 6.0 budget — the two new reading channels cost ~0.06 s/PDF between them — and that cost is disclosed alongside the points.
Links
Dockerfile): https://github.com/arthurmichel00/mib-doc-solutionSummary
Official Docker-contract train score: 129.14 / 150 · fixed 200-case holdout: 130.57 (holdout ≥ train at all 10 measured milestones) · exactly 1 catastrophic false approval (the documented designed trap) · 0 fallback rows · 5.87 s/PDF vs 6.0 budget · 0.36 GiB image.
predictions.jsonlgenerated by the frozen image over all 5,000 validation PDFs under the offline contract, with every shipped lever baked intoENVso the documenteddocker runreproduces the submission with no-eoverrides; passesvalidate_submission.py(5,000 valid, 0 missing). Approved-side consistency enforced structurally at emission and separately re-audited: 0 violations. No answer-key ingestion — the planted key is adversarial and never read as evidence. Built by AI agents in gated autonomous loops (40+ levers A/B-measured, 17 shipped; receipts in the repo's LEVERS.md and APPENDIX.md, including the full flip audit, the arm-by-arm A/B table, and the timing ladder for this build).Checklist
submissions/arthurmichel00/predictions.jsonl,MEMO.md, andSUBMISSION.mdpredictions.jsonlpassesscripts/validate_submission.pyagainstdata/validation_manifest.csvDockerfile--network none) and accepts<input_pdf_dir> <output_predictions_path>DOCKER_SUBMISSION.md🤖 Generated with Claude Code