Skip to content

Preserve newline filenames in explicit research head pins - #3635

Merged
Mister-Meeseeks merged 2 commits into
CrocSwap:mainfrom
roger-sato:fix/research-head-pin-newlines
Oct 20, 2026
Merged

Mister-Meeseeks merged 2 commits into
CrocSwap:mainfrom
roger-sato:fix/research-head-pin-newlines

Conversation

@roger-sato

@roger-sato roger-sato commented Oct 18, 2026 •

Copy link
Copy Markdown
Contributor

Summary

A canonical Git filename containing LF works with base_commit:<path> but is rejected by the documented head:<40-hex sha>:<path> form. The parser's .+ excludes LF, even though the Git readers support newline filenames. An actual temporary Git publication reproduces PASS_RESEARCH_COMMIT_BYTES for the base form and exit 1 for the head form with identical source bytes and commit.

Match LF as part of the exact path while retaining the lowercase 40-hex head, nonempty path and exact row-path equality requirements. Actual metadata and publication CLI regressions cover LF, CRLF, trailing LF and a later source commit, plus malformed-pin, wrong-blob, wrong-hash and working-drift controls. The documentation explains JSON escaping.

The registered research/isolated-descendant-bytecode consumer is also repaired: its helper row in SOURCES.json now says provenance, matching verify.py's existing use of the authenticated historical Git blob. The original base, blob and SHA256 are retained. VERIFY.json, TASK.json, verify.py, RESULT.json and all three registered commands are unchanged. The current helper remains a declared replay input and the unchanged third command exercises its bytecode isolation. The README records the correction and preserves Arham Tahir's source credit; no validator exception or regenerated historical evidence is introduced.

Six source-role regressions cover the old failure versus corrected success, unchanged historical identities/evidence, corrupted blob/hash rejection, unrelated live-pin rejection, planner/publication coverage and deliberate live-isolation breakage rejected by the registered command. The same correction is included in both #3615 and #3635 so either can integrate first.

This is source declaration compatibility, separate from #3615's original-object binding, #3629's export containment and #3628's CI glob matching. No mathematical result or selected frontier changes. Credit Aaron Wang's head-pin support in #2737, Douglas Colkitt's package runner, and Arham Tahir's newline-preserving Git reader work in #1595.

Validation

Local macOS arm64, CPython 3.12.14. Final tested commit: cff9aac252b4bd9968a39c7cd0d12fce19fefab2.

  • The three-method head-pin suite produces four failures against the base, covering three multiline names and a later head. Malformed-pin controls pass before and after.
  • 54 focused test methods pass on the final head: head-pin paths (3), source-role compatibility (6), diagnostics (16), source history (12), Git batch (7) and Git compatibility (10).
  • Full affected registered consumer: unchanged 16-case historical differential, 11 isolated-runner tests and eight current-helper tests; PASS_REGISTERED_RESEARCH_PACKAGE.
  • Committed publication-byte/source-history preflight: 13 files; original source base 6f100d4bb5083f8c35d96fd95a539811c62f245c retained.
  • Combined Bind research source reads to original Git objects #3615 and Preserve newline filenames in explicit research head pins #3635 production changes: all 15 new regression methods and the full affected registered replay pass.
  • git diff --check.
  • Hosted CI and native Windows/Linux execution. The real newline filename fixtures run on POSIX and skip Windows; no full repository-wide historical/theorem replay is claimed.
python3.12 -W error -B -m unittest discover -s tests -p 'test_research_head_pin_paths.py' -v
python3.12 -W error -B -m unittest discover -s tests -p 'test_research_descendant_source_roles.py' -v
python3.12 -W error -B -m unittest discover -s tests -p 'test_research_package_diagnostics.py' -v
python3.12 -W error -B -m unittest discover -s tests -p 'test_research_source_history.py' -v
python3.12 -W error -B -m unittest discover -s tests -p 'test_research_git_batch.py' -v
python3.12 -W error -B -m unittest discover -s tests -p 'test_research_git_compatibility.py' -v
python3.12 -B scripts/research_package.py --package research/isolated-descendant-bytecode
python3.12 -B scripts/check_research_commit.py --package research/isolated-descendant-bytecode --check-source-history
git diff --check

Canonical main was rechecked unchanged at 20ecf2891d80b5acf18d980b2164fb44ea7faa90, priority revision 6. The refreshed overlap inventory includes 344 open PRs, 2,964 closed PRs and 2,453 Discussion records, with complete pagination and no warnings. Predecessors and disjoint pending fixes were retained as context; no equivalent parser correction was identified. This is not an exhaustive novelty claim.

Prepared for roger-sato with substantial OpenAI Codex assistance. Apache-2.0. Same-session agent review is not independent human acceptance.

@roger-sato
roger-sato marked this pull request as ready for review October 18, 2026 12:02
@Mister-Meeseeks
Mister-Meeseeks merged commit eae5700 into CrocSwap:main Oct 20, 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