Skip to content

ci(vold): trace pinned dependencies and probe a minimal original-vold source checkout - #162

Merged
0cwa merged 31 commits into
mainfrom
feature/vold-minimal-source-closure-20261022
Oct 22, 2026
Merged

0cwa merged 31 commits into
mainfrom
feature/vold-minimal-source-closure-20261022

Conversation

@0cwa

@0cwa 0cwa commented Oct 22, 2026 •

Copy link
Copy Markdown
Owner

Why

The original, unmodified pdx235 vold must reproduce the authenticated October 16 LineageOS OTA byte for byte before the timeout patch can proceed. The full 1,243-project checkout is too expensive for targeted dependency discovery. Review also found failures that the previous mocked tests missed: modern Repo's manifest wrapper, invalid two-component lunch syntax, automatic roomservice fetching, and proprietary ELF reads during Sony makefile regeneration.

What changes

  • Keep the standard-hosted, nonpublishing plan mode and also retain its vold-source-provisional-plan artifact in ordinary PR and main CI. It requires no Android checkout, large runner or repository variables.
  • Select 84 of 1,243 exact-manifest projects, incorporating 14 providers verified from pinned native/HIDL/AIDL, generated aconfig/Rust, and Sony namespace source. Correct the libbase, libgsi and libhardware_legacy mappings. Exact source URLs and dependency chains are retained in the seed.
  • Accept Repo's actual single-include manifest wrapper while verifying the included bytes and rejecting local overrides. Resume fetches only missing Git worktrees. A real two-project Repo integration confirms selected-only sync, missing-only expansion, and no sync for an unchanged selection.
  • Pin product lineage_pdx235, release cp2a, and variant userdebug, including the exact release-file digest. Use the unchanged _lunch_meat configuration helper after check_product to avoid roomservice downloads. Fail on automatic kernel-build requests and failed setup; allow upstream's intentionally unset optional shell variables.
  • Check source revisions and workspace contents before and after compilation, reject inherited missing-dependency bypass flags, constrain build outputs, and remove a stale final executable.
  • Improve partial Blueprint traversal and actual Soong-error parsing. Up to three bounded static scans can add reviewed providers before up to three build-diagnostic passes; all expansions retain the same pinned checkout.
  • Keep authenticated OTA extraction and full byte equality as the only binary qualification gate. No patch, injection, publication or default enablement is introduced.

Verified vendor blocker — real build remains blocked

The unchanged pinned extract-files.py --regenerate_makefiles cannot operate from public lists alone. It skips extraction but still opens proprietary ELF files for architecture and dependency metadata. A real replay fails on the absent camera library com.qti.eeprom.hi846_back_eeprom.so, after upstream writes four incomplete declaration files.

The probe therefore first syncs only the three small pinned vendor prerequisite projects, writes sony-vendor-input-report.json with status: blocked and makefiles_generated: false, and stops before downloading toolchains or running the generator. Former synthetic-success receipts and arbitrary preexisting vendor content cannot qualify those inputs.

A reviewed authenticated proprietary-input acquisition/provenance contract is still required. The complete source closure and first Android compilation remain unproven. Trusted runner readiness is also unverified; the last baseline attempt stopped with empty configuration variables. The connected tools do not expose manual dispatch or runner/variable management.

Validation and evidence

  • 46 vold tests pass locally, including actual Bash failure guards and process-level probe ordering.
  • Existing workflow contract tests pass.
  • Real upstream Repo integration passed using two local Git projects; no Android source download or compilation.
  • Real pinned Sony regeneration replay confirmed the proprietary-input failure; no synthetic files are accepted.
  • YAML structure, shell syntax and git diff --check pass.
  • Exact-head GitHub CI #39707304342 passed for 9a36c0bfaf0b3f84e003864939c4150a69ca5cd9 before merge.
  • Main CI #39707541567 passed for merge d5095a8de1baea6418db701bfe5d0715bdf04763. Its vold-source-provisional-plan artifact (12396040362) was downloaded and verified: all 84 paths exactly match the reviewed selection, with 1,159 manifest projects outside that initial selection. Plan JSON SHA-256: 6eb2269b653d3c7fb25963768ddae0e2e7263b25be456b0b9f00884937ed151d.
  • The release workflow triggered by the merge was skipped; no OTA was published.

Evidence:

The 100 GB build scratch allowance remains provisional. A plan or compile-only probe is not binary-equality proof. PR #157 remains separate and draft; real device, recovery and publication acceptance gates still apply after authentic baseline success.

@coderabbitai

coderabbitai Bot commented Oct 22, 2026 •

Copy link
Copy Markdown

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

⚙️ Run configuration
  • Configuration used: Organization UI
  • Review profile: ASSERTIVE
  • Plan: Advanced
  • Run ID: 6f2b6977-67c4-4a4c-a7b0-a68244846bb4
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

0cwa added 2 commits October 22, 2026 03:21
Verify actual Repo include wrappers and missing-only resume, pin cp2a build setup without automatic source fetches, trace 84 reviewed projects, and stop after three small vendor source projects when proprietary inputs lack provenance. Retain low-cost source plans in normal CI and auditable upstream replay evidence. Keep authentic byte equality and publication gates unchanged.
@0cwa
0cwa merged commit d5095a8 into main Oct 22, 2026
3 checks passed
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.

1 participant