Conversation
#1514) apr-cli's `aliases.rs:13` used `include_str!("../../../../configs/aliases.yaml")` to embed the workspace-root alias map. cargo publish failed because files outside the crate directory aren't included in the published tarball: error: couldn't read `src/commands/../../../../configs/aliases.yaml`: No such file or directory --> src/commands/aliases.rs:13:28 Workaround applied during v0.32.0 cascade publish (Issue #1514): copy the file into the crate's own directory and shorten the include path. ## What ships - New file: `crates/apr-cli/configs/aliases.yaml` (28-line copy of workspace-root `configs/aliases.yaml`). - Modified: `aliases.rs:13` — `include_str!` path changed from `"../../../../configs/aliases.yaml"` to `"../../configs/aliases.yaml"` (relative to the crate's `src/commands/`). - Documented: comment explains the in-crate copy is a publish-time duplicate; the workspace root file remains canonical. ## Sync rule When editing `configs/aliases.yaml` at the workspace root: cp configs/aliases.yaml crates/apr-cli/configs/aliases.yaml Until a build.rs symlink or a `[package.include]` rewrite addresses this more cleanly, the two copies must be kept in sync manually. Out of scope for this fix; this PR only un-blocks v0.32.0 cascade publish. ## Verification - `cargo check -p apr-cli` ✓ clean - `cargo publish -p apr-cli --dry-run --allow-dirty` ✓ clean - apr-cli v0.32.0 already published to crates.io with this fix included (pushed before this PR landed because cascade publish is operator- driven; this PR retroactively documents the change on origin/main). ## Five Whys 1. Why did include_str! reference outside the crate? Historical: the workspace had only one apr-cli at v0.4.x, and the YAML was placed at the workspace root for "global" config. The ../../../../ path worked in dev because the workspace root was always present. 2. Why didn't earlier publishes catch this? apr-cli wasn't published to crates.io for a while; this is the first cascade attempt that tried publishing apr-cli itself. The defect was latent. 3. Why use a copy vs a build.rs that pulls from workspace root? Build scripts can read sibling files at compile time but the published tarball still doesn't include them. The copy is the simpler fix. 4. Why not move the canonical YAML into the crate? Workspace root has other consumers (CI, docs); moving would break those references. In-crate copy + sync rule is least disruptive. 5. Why now (post-publish) rather than before? The cascade publish was operator-driven (per `feedback_post_publish_qa_required.md`); the defect surfaced during cascade and was patched locally to keep the cascade moving. This PR codifies the local patch for origin/main. Refs #1514 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This was referenced May 5, 2026
noahgift
added a commit
that referenced
this pull request
May 5, 2026
Records the v0.32.0 cascade publish: 15 user-facing crates published to crates.io in topological order via three release-engineering fix PRs (#1515 dev-dep cycle break, #1517 clean-room compat, #1518 apr-cli aliases.yaml in-crate copy). Also documents the breaking aprender-rag lib rename (trueno_rag → aprender_rag) per Issue #1510 / PR #1512. User-facing additions for 0.32.0: - apr pretrain --init polymorphic Qwen2.5-Coder-0.5B-Instruct fine-tune - apr tokenize import-hf for HF BPE → aprender layout - pv lint --strict-test-binding (PV-VER-002) Closes #1514 Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
noahgift
added a commit
that referenced
this pull request
May 5, 2026
…h + 4 release-engineering defects closed (#1520) §58 records the parallel release-engineering track that landed during the §57 drift-sweep wait: the v0.32.0 user-facing-crate cascade publish (Issue #1514 CLOSED) and the four hidden defects it surfaced + closed. User-facing crates now live on crates.io at v0.32.0: - aprender = "0.32.0" - aprender-rag = "0.32.0" - aprender-core = "0.32.0" - apr-cli = "0.32.0" Defects closed during cascade (each in its own PR): - #1512 aprender-rag [lib] name = "trueno_rag" → "aprender_rag" BREAKING - #1513 aprender-orchestrate cmd_code 7→8 arg drift on emit_trace addition - #1515 aprender-core path-only dev-deps (publish-time cycle break) - #1517 aprender-core permissive version + path (clean-room sed-strip robustness) - #1518 apr-cli aliases.yaml in-crate copy (include_str scope fix) Plus PR #1511 (pv-lint --strict-test-binding) closes §57.4's foreshadowed prevention rule. 5g.1 corpus retokenize (PID 2767124) at 62 shards / 16h19m wall (manifest pending). Ship-% unchanged: MODEL-1=91%, MODEL-2=57%. §58 is the third hygiene amendment in a row; §59 will record 5g.1 completion when manifest emits. Refs: #1514 Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
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.
Summary
`apr-cli/src/commands/aliases.rs:13` had `include_str!("../../../../configs/aliases.yaml")` referencing the workspace-root file. `cargo publish` excludes files outside the crate dir, breaking the publish step. Surfaced during v0.32.0 cascade publish (Issue #1514).
Fix
apr-cli v0.32.0 was already published to crates.io with this fix applied locally (cascade was operator-driven). This PR codifies the change on origin/main.
Refs #1514
🤖 Generated with Claude Code