H0 v0.5.1 implementation batch (AXW-003A/003C/007A/009B/011A/012A/012B) - #71
Merged
Conversation
GatePlan emits semantic gate IDs (py-primary, static, lint, ...), not GitHub job names. The aggregator previously ran 'require test' against the job name, which GatePlan never emits, letting a required py-primary suite failure pass ci-verdict as green. Gate on the semantic IDs now: py-primary carries the OS/KB/integration test result, static and lint both arrive via the lint job. Not-required-but-failed coverage now includes test, py-compat and lint, and the windows-runtime-smoke job name is corrected.
Detect Python, Node, Rust, PowerShell, Chinese and space-containing paths, port availability, console encoding and writable project-local directories. Emits sanitized structured JSON only (no absolute private paths, secrets or personal body text). Covered by six focused tests.
Persist original bytes immutably (SHA-256 content-addressed) before any conversion. A failed converter retains the original plus a durable failure record. Failure-injection tests prove no original is lost across value/OS/ store/interrupt/generic failures. Default root is the project's ignored .hermes/task-runtime/raw-assets.
requirements.txt was an unknown path that forced full-qualification; it now maps to python-compat and triggers wheel-smoke + py-compat. Format parsers (pdf.py, multi_format.py) now trigger wheel-smoke so parser changes rebuild and smoke the installed wheel. Covered by two new path-mutation regression tests.
The product wheel and ci-adapters group declared bare markitdown>=0.1, so the installed runtime had no pdfminer/pdfplumber backend and real PDF conversion failed with MissingDependencyException. Declare markitdown[pdf]>=0.1 and sync requirements.txt and uv.lock (adds pdfminer-six, pdfplumber, pypdfium2). A real-binary PDF extraction test replaces the old text-disguised-as-PDF check and passes through the product convert path under ci-adapters.
…009B) AXW-012B changed uv.lock (added pdfminer-six, pdfplumber, pypdfium2). The release-manifest dependency_lock.digest must match the locked tree for a unified version identity. Bump digest to 9916e6db... and revision to 5.
AXW-012B changed ci-adapters to markitdown[pdf]>=0.1; the runtime-policy gate asserted the stale markitdown>=0.1. Update the expected requirement.
…otices (AXW-010B/006C) AXW-010B: assert status endpoint projects unimplemented capabilities (asr/postgresql/qdrant/public_installer) as not_implemented, image_ocr as dependency_required, and never claims a capability the runtime lacks. AXW-006C: list markitdown[pdf] (pdfminer-six/pdfplumber/pypdfium2) in THIRD_PARTY_NOTICES so bundled PDF dependencies are auditable.
DTALEX66
added a commit
that referenced
this pull request
Aug 9, 2026
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.
Scope
H0 (v0.5.1) implementation batch from the frozen execution baseline (
AXW-FROZEN-v1). Each change is a separate checkpoint with its own RED→GREEN evidence. Base isorigin/main(492fac5).Included (6 commits)
8cdfb21AXW-003A — ci-verdict gates on GatePlan semantic IDs, not job names (py-primary/static/lint/…). Fixes: a requiredpy-primarysuite failure could pass as green. Reverse-regression tests added.275bd90AXW-007A — Windows/PowerShell 7 doctor (scripts/doctor_windows.ps1) with sanitized JSON output (no absolute private paths); 6 tests.7b7df25AXW-012A — RawAsset-first immutable store (app/ingestion/raw_asset.py): original bytes persisted content-addressed before conversion; failure injection proves no original loss.9ff5ba6AXW-003C — dependency/format-parser path classification:requirements.txtno longer forces full-qualification; parser changes trigger wheel-smoke.d7acc8bAXW-012B — enablemarkitdown[pdf]for installed PDF extraction (product + ci-adapters + requirements + uv.lock add pdfminer/pdfplumber/pypdfium2); real-binary PDF test replaces text-disguised-as-PDF.b35aae0AXW-009B — sync release-manifest dependency-lock digest after lock change (revision 5).Explicitly excluded
tests/fixtures/readability_article.html(CRLF-only working-copy difference; not staged/committed).main, tag, release, or public publish — not authorized in this scope.codex/frozen-roadmap-deepseek-v1branch).Verification
36 passed(ci gates),38 passed(classifier),30 passed(release identity),87 passed(adapter contract incl. new PDF),6 passed(raw asset),6 passed(doctor),3 passed(pdf extraction).Risk / Rollback