Skip to content

fix(workspace): jugar-probar dep needs version for clean-room A0 path-strip (Refs PMAT-157)#900

Closed
noahgift wants to merge 1 commit into
mainfrom
fix/workspace-qa-runner-version-dep
Closed

fix(workspace): jugar-probar dep needs version for clean-room A0 path-strip (Refs PMAT-157)#900
noahgift wants to merge 1 commit into
mainfrom
fix/workspace-qa-runner-version-dep

Conversation

@noahgift

Copy link
Copy Markdown
Contributor

Summary

Clean-Room CI (paiml/infra run 24622014067) fails at Gate A1 with:

error: failed to load manifest for workspace member
  `/build/aprender/crates/aprender-qa-runner`
Caused by: dependency (jugar-probar) specified without providing a
  local path, Git repository, version, or workspace dependency to use

Root Cause (Five Whys)

  1. Why A1 fail? cargo generate-lockfile rejected aprender-qa-runner's manifest.
  2. Why rejected? jugar-probar had no version/git/path/workspace after A0 strip.
  3. Why no path? Gate A0 runs sed 's/path = "...", *//g' on every Cargo.toml (simulate cargo publish).
  4. Why no version? The original line lacked version = "X":
    jugar-probar = { path = "../aprender-test-lib", package = "aprender-test-lib", features = ["llm-types"] }
  5. Why wasn't this caught? This crate was added after the workspace established the version = "X", path = "..." pattern (see aprender-test-cli/Cargo.toml:27 which already does it correctly).

Fix

Add version = "0.31.0" to both local-path deps in aprender-qa-runner/Cargo.toml, matching the workspace version and the pattern used by sibling aprender-test-cli. After A0 path-strip, version remains, satisfying cargo.

Also adds publish = false to the crate (internal QA harness reached via apr qa; never published to crates.io) — this was added by the pmat pre-commit hook as a policy improvement.

Verification

Simulated Clean-Room A0 + A1 locally on /tmp/aprender-cleanroom-test:

  • Before fix: error: failed to load manifest for workspace member aprender-qa-runner (Gate A1 FAIL)
  • After fix: cargo metadata --no-deps --offline succeeds, all 75 workspace members resolve including aprender-qa-runner.

Note: A subsequent, unrelated A1 error surfaces for aprender-present-yaml = "^0.30.0" (candidate 0.29.0). That is a separate version-mismatch bug outside PMAT-157's scope.

Test Plan

  • cargo check -p aprender-qa-runner passes locally
  • Manifest parses under clean-room A0 strip (reproduced locally)
  • Clean-Room CI run (paiml/infra) Gate A1 for aprender advances past qa-runner
  • No regression on cargo check --workspace

Refs: PMAT-157

Clean-Room CI (paiml/infra run 24622014067) fails at Gate A1 with:
  error: failed to load manifest for workspace member
    `/build/aprender/crates/aprender-qa-runner`
  Caused by: dependency (jugar-probar) specified without providing a
    local path, Git repository, version, or workspace dependency to use

Root cause: Gate A0 strips all `path = "..."` attributes (simulate cargo
publish). The `jugar-probar` dep in `aprender-qa-runner/Cargo.toml` had:

  jugar-probar = { path = "../aprender-test-lib",
                   package = "aprender-test-lib",
                   features = ["llm-types"] }

After path-strip → `{ package = "...", features = [...] }`, which has no
version/git/path/workspace — cargo rejects it at A1 `cargo generate-lockfile`.

Fix: add `version = "0.31.0"` alongside path so the stripped form has a
valid version to resolve (matches the pattern already used by
aprender-test-cli in the same workspace). Applied the same treatment to
`aprender-qa-gen` (symmetry) so both local-path deps in qa-runner follow
the clean-room-compatible `version = "X", path = "..."` pattern.

Also adds `publish = false` to aprender-qa-runner (internal QA harness,
reached via `apr qa`, never published to crates.io).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@noahgift noahgift enabled auto-merge (squash) April 19, 2026 07:43
noahgift added a commit that referenced this pull request Apr 19, 2026
…-strip (Refs PMAT-157)

Clean-Room CI Gate A1 fails with:
  error: dependency (jugar-probar) specified without providing a local
  path, Git repository, version, or workspace dependency to use

Root cause: `cargo publish` simulation strips `path = "..."` from every
Cargo.toml. The original dep line had no `version = "X"`, so after strip
there's nothing left for cargo to resolve.

Fix: add `version = "0.31.0"` to the jugar-probar dep in
aprender-qa-runner/Cargo.toml, matching the pattern used by sibling
aprender-test-cli/Cargo.toml:27.

Rebase of closed #900 after merge conflict with #901 (publish = false).
@noahgift

Copy link
Copy Markdown
Contributor Author

Superseded by rebased PR (clean apply on current main after #901 conflict)

@noahgift noahgift closed this Apr 19, 2026
auto-merge was automatically disabled April 19, 2026 07:46

Pull request was closed

noahgift added a commit that referenced this pull request Apr 20, 2026
…s PMAT-157) (#903)

* fix(workspace): jugar-probar dep needs version for clean-room A0 path-strip (Refs PMAT-157)

Clean-Room CI Gate A1 fails with:
  error: dependency (jugar-probar) specified without providing a local
  path, Git repository, version, or workspace dependency to use

Root cause: `cargo publish` simulation strips `path = "..."` from every
Cargo.toml. The original dep line had no `version = "X"`, so after strip
there's nothing left for cargo to resolve.

Fix: add `version = "0.31.0"` to the jugar-probar dep in
aprender-qa-runner/Cargo.toml, matching the pattern used by sibling
aprender-test-cli/Cargo.toml:27.

Rebase of closed #900 after merge conflict with #901 (publish = false).

* fix(tests): workspace-test false-positive on sibling detection (Refs PMAT-157)

Three tests in aprender-contracts/src/query/ relied on
`parent.join("aprender").exists()` to detect a local-dev environment with
sibling repos. GitHub Actions checks repos out at /__w/<repo>/<repo>, so
the parent directory *always* contains a child named `aprender` (the
workspace itself) — the check false-positives in CI, the tests proceed
expecting provable-contracts/contracts/aprender/binding.yaml, and fail.

Fix: check for `provable-contracts` (a distinct sibling that never shares
a name with the checked-out repo) instead of `aprender`. Local dev has
provable-contracts alongside aprender; CI does not.

Failing tests now fixed:
- query::cross_project::tests::find_binding_path_real
- query::cross_project::tests::binding_refs_for_aprender
- query::coverage_tests::coverage_map_enrichment

Verified locally: 3/3 pass with provable-contracts sibling present.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
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