Skip to content

HOST-010: bind deterministic package evidence#45

Merged
jacklv-coder merged 3 commits into
mainfrom
agent/issue-43-host-010-manifest-evidence
Jul 22, 2026
Merged

HOST-010: bind deterministic package evidence#45
jacklv-coder merged 3 commits into
mainfrom
agent/issue-43-host-010-manifest-evidence

Conversation

@jacklv-coder

Copy link
Copy Markdown
Owner

Closes #43

Summary

  • add a Unix-only library builder that revalidates and hashes the secured source IPA, deterministic unsigned analysis IPA, canonical inventories, and every confirmed code object
  • introduce export-manifest schema version 3 with closed package policy, exclusions, rejected candidates, and complete Mach-O slice evidence
  • preserve honest device-free semantics: unchanged code bytes remain inconclusive structure evidence, with no plaintext, signature, publication, device, or CLI claim
  • add adversarial Rust/schema tests and English/Chinese learning and status documentation

Local verification

  • cargo fmt --all --check
  • cargo clippy --workspace --all-targets --locked -- -D warnings
  • cargo test --workspace --locked
  • RUSTDOCFLAGS=-D warnings cargo doc --workspace --no-deps --locked
  • cargo run --locked -p orchardprobe-cli -- demo --json

Scope

This PR does not add IPA input to the CLI, publish an IPA, access a device, modify Mach-O, decrypt bytes, prove plaintext, validate signatures, sign, install, or make a compatibility claim.

@jacklv-coder

Copy link
Copy Markdown
Owner Author

Independent read-only CR record

  • Reviewed final SHA: f660411
  • Local Claude CLI: 2.1.216
  • Requested model alias: sonnet
  • Actual model reported by CLI: deepseek-v4-flash
  • Repository access: read-only allowlist; editing, Git writes, network, GitHub review, and merge tools disabled
  • First pass: no blockers; size-error clarity and negative-test coverage suggestions were addressed in f660411
  • Final pass verdict: NO_ACTIONABLE_FINDINGS
  • Residual risks: non-blocking and already documented; unchanged-byte equality remains inconclusive structural evidence and does not prove plaintext

This comment records the advisory result only. The Claude CLI did not author this comment, approve the PR, or perform any GitHub mutation.

@jacklv-coder
jacklv-coder marked this pull request as ready for review July 22, 2026 00:06
@jacklv-coder
jacklv-coder merged commit b5fbb1f into main Jul 22, 2026
3 checks passed

@chatgpt-codex-connector chatgpt-codex-connector Bot 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: f660411b0a

ℹ️ 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".

Comment on lines +708 to +711
for excluded in &package.exclusions {
if !is_safe_relative_path(&excluded.path)
|| !excluded.path.starts_with(&format!("{}/", source.app_root))
|| previous.is_some_and(|path: &str| excluded.path.as_str() <= path)

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Validate exclusion reasons against their paths

A device_free_package manifest can currently claim that any safe, app-root-relative path was excluded as mas_receipt or sc_info, including a confirmed binary path, because this loop checks only path safety, prefix, and ordering and never examines excluded.reason or conflicts with binaries. As a result, oprobe verify accepts contradictory package evidence such as an exclusion for Payload/App.app/App labeled sc_info; enforce that each reason matches its exact reserved path component (and reject paths still represented as output code) before accepting the manifest.

Useful? React with 👍 / 👎.

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.

[Host] Bind deterministic package evidence into manifest

1 participant