Skip to content

v0.32.0 cascade publish: workspace-level path-only dev-dep audit + topological publish #1514

@noahgift

Description

@noahgift

Goal

Publish v0.32.0 of the user-facing crate set to crates.io after the §50.4 cascade landed. Currently `aprender-rag` v0.32.0 is published (PR #1512); the rest of the user-facing crates (12+) are still at 0.31.2 on crates.io despite local main being at v0.32.0.

Scope

User-facing crates that need v0.32.0 publish:

  • aprender (root facade)
  • apr-cli (CLI logic)
  • aprender-core (`use aprender::*`)
  • aprender-compute (was `trueno`)
  • aprender-train (was `entrenar`)
  • aprender-serve (was `realizar`)
  • aprender-contracts (was `provable-contracts`)
  • aprender-contracts-cli (was `pv`)
  • aprender-contracts-macros
  • aprender-graph (was `trueno-graph`)
  • aprender-data (was `alimentar`)
  • aprender-mcp
  • aprender-zram-core (was `trueno-zram-core`)

Already done: aprender-rag v0.32.0 ✓

Blockers identified during dry-run

  1. Path-only dev-dep audit needed: `aprender-core`'s dev-deps include `entrenar = { workspace = true }` (= aprender-train), which has a workspace version pin of 0.32.0. cargo publish complains because aprender-train@0.32.0 isn't on crates.io. Same class likely affects 3-5 other publishable crates with internal-dev-deps.

  2. Documented architectural cycle: `crates/aprender-core/Cargo.toml` lines 122-124 + 150-153 explicitly note:

    • `renacer depends on aprender, so it cannot be a runtime dep` (dev-only currently)
    • `realizar optionally depends on aprender. Resolution requires creating a separate quantization crate. See docs/specifications/qwen2.5-coder-showcase-demo.md Section E.7`

    The realizar/aprender cycle is documented as architectural — partial fix possible without the separate quantization crate.

  3. Topological cargo publish: 13 crates need publishing in dependency order. Each cargo publish has a ~30s upload + ~1-2min crates.io index propagation delay. Total wall: ~30-60 minutes minimum.

  4. Pre-existing release policy: `crates/aprender-orchestrate/CLAUDE.md` requires clean-room build green BEFORE any publish (HARD GATE). v0.31.1 was YANKED per `feedback_post_publish_qa_required.md` for skipping this.

Acceptance criteria

  • Path-only dev-dep audit + fix PR merged (cycle-free workspace publish hygiene)
  • Clean-room green: `make clean-room-aprender` exits 0 on intel
  • Topological cargo publish in order: leaves → roots
  • All 13 user-facing crates at v0.32.0 on crates.io
  • Post-publish QA: `cargo install aprender --force` + smoke verify
  • CHANGELOG.md updated with [0.32.0] - 2026-05-05 section

Five Whys

  1. Why didn't the cascade work first try? Multiple workspace-internal cycles (some dev-dep-only, some architectural) prevent cargo from resolving the published dep graph; each cargo publish exposes the next missing 0.32.0 version.
  2. Why are there workspace-internal cycles in the first place? Renacer/realizar depend on aprender at architectural boundaries; full decomposition requires separate quantization/loader crates that don't exist yet.
  3. Why publish all 13 instead of just aprender-rag? The §50.4 cascade landed user-facing features (apr pretrain --init, apr tokenize import-hf, polymorphic preflight, pv lint --strict-test-binding) that operators consume via the published binaries. Stopping at one crate leaves the rest stale.
  4. Why aren't published 0.31.2 versions sufficient? They predate the 297 commits since the last release — including the entire SHIP-TWO-001 §50.4 cascade and the drift-sweep + lint-hardening work.
  5. Why open a tracking issue rather than just doing it? Per `crates/aprender-orchestrate/CLAUDE.md` HARD GATE policy: cascade publishes need clean-room + CI green + provable-contracts version pins verified. Each gate is its own decision; making them visible via an issue keeps the release-cut auditable.

Plan

  1. PR-A: workspace publish hygiene (path-only dev-deps for cycle-free publishability).
  2. Run `make clean-room-aprender` on intel — must exit 0.
  3. Topological cargo publish (~13 crates × ~1-2 min each = ~30 min wall).
  4. Post-publish QA + CHANGELOG entry.
  5. Close this issue when `cargo install aprender --force` pulls v0.32.0 cleanly.

🤖 Generated with Claude Code

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions