Skip to content

Submission: bmdhodl - #85

Open
bmdhodl wants to merge 4 commits into
8090-inc:mainfrom
bmdhodl:submission/bmdhodl
Open

bmdhodl wants to merge 4 commits into
8090-inc:mainfrom
bmdhodl:submission/bmdhodl

Conversation

@bmdhodl

@bmdhodl bmdhodl commented Aug 4, 2026

Copy link
Copy Markdown

Adds submissions/bmdhodl/ with validation predictions, technical memo, and a link to the public solution repository. No file outside that folder is touched.

Solution

Public repository: https://github.com/bmdhodl/mib-doc-solution (MIT)

Item Value
Solution commit that generated these predictions 1846faa62473a2a5691db314ccefe6df82f15268
Docker image digest sha256:0b1d33bb47b79b07d113ea890e546637fc094f1b1624e174ae189a7c850d4c06
Image size (docker image inspect) 233,851,416 bytes, against the 4 GiB cap
Largest model artifact 21,234,383 bytes, against the 250 MiB cap
Total model artifacts 46,499,342 bytes, against the 1 GiB cap
Prediction rows 5000
Prediction bytes 1,607,204, against the 25 MiB cap
Prediction SHA-256 3fb2ff70e4f7937b2db1f78f424177311debdd10e7c199197472fb5a5371fe94

Commits after 1846faa on main change documentation only. Every runtime file
inside the image was verified byte-identical to the published tree: 24 Python
files, the five calibration artifacts under mib_pipeline/artifacts/, and
run.sh. Rebuilding that commit reproduces these predictions.

Validator output

scripts/validate_submission.py against data/validation_manifest.csv, run
with --require-complete:

Valid submission records: 5000
Missing expected case ids: 0

The three figures above and this validator run describe the file at the head of
this branch. An earlier push in this PR carried 3,500 rows; commit 6275bc4
completed all 5,000, and this description had continued to describe the
superseded push.

Public training score

Scored with the organizer's scripts/evaluate.py against data/train_labels.csv:

Deterministic score: 137.23 / 150
Catastrophic false approvals: 0
Missing-case penalty: -0.00 / 10
Mean confidence Brier: 0.0545

1,000 of 1,000 cases answered, zero missing, extra, duplicate, or invalid rows.
This is public-training evidence, not a private-test score or ranking claim.

Approach

A render-first pipeline: pypdfium2 rasterizes pages, RapidOCR performs primary
OCR, and bounded Tesseract passes recover difficult regions. Cross-page linking
and precedence rules resolve fields before a conservative adjudication engine and
a calibrated output layer. Raster OCR and visible geometry are the primary
evidence path; decision-changing cues taken from selectable text require
independent raster corroboration.

The solution is derivative and MIT-licensed. ATTRIBUTION.md pins every upstream
commit and names each author. The inherited part is the document-extraction
engine; the added part is the decision and scoring layer above it, which moved the
independently reproduced upstream baseline of 129.8470 to 137.2284.

Disclosures

  • Parts of the terminal scoring layer were selected against public training
    labels and may overfit. MEMO.md and PACKAGING_AUDIT.json enumerate every
    such surface. A grouped nested transfer ablation did not show a reliable
    positive mean lift, so the public gain is not an unbiased estimate of private
    performance. Every one of these surfaces is demotion-only and never creates
    APPROVED.
  • No hardcoded answers: exact_case_id_literals: 0,
    tracked_validation_prediction_files: 0, runtime_case_specific_lookup_artifacts: 0
    in PACKAGING_AUDIT.json. No other participant's validation predictions were
    copied.
  • solution.py partitions input into bounded 1,000-case chunks run in fresh
    interpreters with no cross-chunk state. These predictions were produced by
    running the submitted image once per disjoint 1,000-case subset of the sorted
    validation set and concatenating; the subsets are exactly the chunk boundaries
    a single 5,000-case invocation would choose. Rows are emitted by the canonical
    writer, sorted by case_id, with duplicates rejected.
  • Measured throughput is 3.2 seconds per PDF on 4 vCPU, against the 6-second
    budget.

Copilot AI review requested due to automatic review settings August 4, 2026 06:19
@chatgpt-codex-connector

Copy link
Copy Markdown

💡 Codex Review

https://github.com/8090-inc/mib-doc-challenge/blob/0df63947c98eb2c1b0e7fd2ed426c225e0e5c7ed/submissions/bmdhodl/predictions.jsonl#L2501
P1 Badge Restore the omitted validation predictions

The sequence jumps from MIB-102500 to MIB-103001; repo-wide validation with python3 scripts/validate_submission.py --submission submissions/bmdhodl/predictions.jsonl --manifest data/validation_manifest.csv --require-complete confirms that 1,500 of the 5,000 expected cases are absent (MIB-102501..103000, MIB-103501..104000, and MIB-104501..105000). These missing rows receive no extraction or classification credit and also incur the missing-case penalty, so the submitted file discards 30% of the validation predictions despite the memo saying all slices were generated.

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a new submissions/bmdhodl/ submission package containing the author’s validation predictions plus accompanying submission metadata and a technical memo, aligning with the repository’s pattern of storing self-contained submission artifacts.

Changes:

  • Added predictions.jsonl validation predictions output.
  • Added SUBMISSION.md with build/runtime contract details and generation receipt.
  • Added MEMO.md technical memo describing the approach, results, and validation run details.

Reviewed changes

Copilot reviewed 2 out of 3 changed files in this pull request and generated 3 comments.

File Description
submissions/bmdhodl/predictions.jsonl Adds the validation prediction rows produced by the submission image.
submissions/bmdhodl/SUBMISSION.md Documents the linked public solution repo, image/commit provenance, and how predictions were generated/validated.
submissions/bmdhodl/MEMO.md Provides a detailed technical write-up of the pipeline, selection disclosures, and validation notes.
Suppressed comments (2)

submissions/bmdhodl/SUBMISSION.md:76

  • This claims the merged file was checked with --require-complete, but the validator output later in the document shows missing 1500 expected case ids, which would fail --require-complete. Please adjust this wording to match the shown validator result (or remove --require-complete here).
slices), `103001..104000`, and `104001..105000`. Rows are emitted by the
canonical writer, sorted by `case_id`, with duplicates rejected, and the merged
file was checked against `data/validation_manifest.csv` with
`scripts/validate_submission.py --require-complete`.

submissions/bmdhodl/MEMO.md:136

  • This header labels the output as a “5,000-packet receipt”, but the bullet list immediately below reports only 3,500 rows and a validator message about 1,500 missing case IDs. Consider renaming this section to reflect that the output is partial/incomplete.
Final 5,000-packet receipt:

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread submissions/bmdhodl/SUBMISSION.md Outdated
Comment thread submissions/bmdhodl/MEMO.md Outdated
Comment thread submissions/bmdhodl/predictions.jsonl
@bmdhodl

bmdhodl commented Aug 6, 2026

Copy link
Copy Markdown
Author

Restore the omitted validation predictions — 1,500 of the 5,000 expected cases are absent

Fixed within the submission window: 6275bc4 completed all 5,000 rows and the head b56251d landed 2026-08-04 06:53 UTC (11:53 p.m. PT, before the August 3 11:59 p.m. PT close). This review examined the initial partial push (0df6394).

Against the current head: 5,000 rows, 5,000 unique case IDs, validate_submission.py --require-complete reports 0 missing (output in the PR description), and the file's SHA-256 3fb2ff70e4f7937b2db1f78f424177311debdd10e7c199197472fb5a5371fe94 matches the one pinned above.

@bmdhodl bmdhodl closed this Aug 6, 2026
@bmdhodl bmdhodl reopened this Aug 6, 2026
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