Skip to content

chore: remove whisper-apr — it is a standalone project - #2515

Closed
noahgift wants to merge 2 commits into
mainfrom
chore/remove-whisper-apr
Closed

chore: remove whisper-apr — it is a standalone project#2515
noahgift wants to merge 2 commits into
mainfrom
chore/remove-whisper-apr

Conversation

@noahgift

Copy link
Copy Markdown
Contributor

Repo owner's decision: whisper-apr does not belong in aprender.

Contained by construction

It was optional in all three crates and in no default feature set, so nothing that ships by default loses anything:

crate feature
apr-cli whisper = ["whisper-apr"]
aprender-orchestrate speech = ["whisper-apr", "native"]
aprender-rag transcription = ["dep:whisper-apr"]
aprender-rag-cli transcription = ["aprender-rag/transcription"]
root facade whisper = ["cli", "apr-cli/whisper"]

All five declarations, the three dependency lines, and "speech" from sovereign-stack are gone — plus 4 files, ~1,960 lines.

One judgement call

/transcribe had a #[cfg(not(feature = "speech"))] fallback returning:

"[dry-run] Would transcribe N bytes … Enable --features speech for real transcription."

With speech removed that tells the caller to enable a feature that no longer exists, and returns 200 with a plausible-looking body that is not a transcription.

It now returns 501 naming whisper-apr as the standalone tool. A route that answers is worse than one that refuses — the #2495 lesson.

Kept deliberately

whisper_apr:: references in the oracle cookbook and recommender. Those are string literals in examples teaching users about a separate project, which is now exactly the right thing for them to say.

Also removed the dangling book SUMMARY.md link to the deleted page, and CLAUDE.md's two apr … whisper examples — both advertised a capability this PR removes.

Verification

Green: workspace cargo check, apr-cli 7,064, aprender-rag 449, aprender-orchestrate 6,525.

An earlier orchestrate run showed 1 failure. Re-ran clean at 6,525/0 — it was a flake under load 30+, not this change. Verified before committing rather than assumed.

Clears part of #2481 F-1: the monorepo depending on published copies of itself. whisper-apr was the transitive source of the registry aprender/realizar/trueno pulls.

Repo owner's call: whisper-apr does not belong in aprender.

It was optional in all three crates and in NO default feature set, so
nothing that ships by default loses anything:

  apr-cli              whisper      = ["whisper-apr"]
  aprender-orchestrate speech       = ["whisper-apr", "native"]
  aprender-rag         transcription = ["dep:whisper-apr"]
  aprender-rag-cli     transcription = ["aprender-rag/transcription"]
  root facade          whisper      = ["cli", "apr-cli/whisper"]

All five feature declarations, the three dependency lines, and "speech"
from `sovereign-stack` are gone, along with 4 files (~1,960 lines):
aprender-rag's transcription loader, the orchestrate demo + book page,
and apr-cli's whisper routing falsifier.

ONE JUDGEMENT CALL, because the honest answer was not simply "delete".
`/transcribe` had a `#[cfg(not(feature = "speech"))]` fallback returning

    "[dry-run] Would transcribe N bytes ... Enable --features speech
     for real transcription."

With `speech` gone that tells the caller to enable a feature that no
longer exists, and returns a 200 with a plausible-looking body that is
not a transcription. It now returns 501 naming whisper-apr as the
standalone tool. A route that answers is worse than one that refuses,
which is the #2495 lesson.

KEPT DELIBERATELY: `whisper_apr::` in the oracle cookbook and
recommender. Those are string literals in examples teaching users about a
separate project -- which is now exactly the right thing for them to say.

Also removed the dangling book SUMMARY link to the deleted page and
CLAUDE.md's two `apr ... whisper` examples, both of which advertised a
capability this commit removes.

Green: workspace cargo check, apr-cli 7064, aprender-rag 449,
aprender-orchestrate 6525. (An earlier orchestrate run showed 1 failure;
re-run clean at 6525/0 -- it was a flake under load 30+, not this change.
Verified before committing rather than assumed.)

Refs #2481
…p its orphaned comment

The rebase conflict in Cargo.lock was resolved by taking main's copy and
regenerating from the changed manifests rather than hand-merging, since
this PR genuinely changes them (it drops the `whisper` feature and the
`whisper-apr` dependency).

Regeneration removes 339 lines, and the effect is larger than one
dependency: `whisper-apr = "0.2"` was a CRATES.IO dep, so it dragged a
published copy of several in-tree crate names into the lockfile --
including `aprender` itself, 36 minors stale. Measured before/after on
the registry-sourced in-tree names that #2484's lockfile guard tracks:

  before: aprender, batuta-common, provable-contracts-macros, realizar,
          renacer-core, trueno, trueno-quant          (7)
  after:  batuta-common                               (1)

The survivor is the genuinely-transitive case that guard exists to
catch: bashrs -> aprender-compute-xtask pulls batuta-common from the
registry, and no manifest here mentions it. #2484 is ratcheted and
shrink-only, so this is a PASS there, not a conflict -- it will report
"Improved: 7 -> 1" and want a --update.

Also removed the orphaned comment block in crates/apr-cli/Cargo.toml
that documented the now-deleted dependency (GH-516/GH-344 whisper
notes). Docs and specs that discuss whisper.apr as a SEPARATE project
are deliberately left alone -- the consolidation spec lists it as
"KEEP SEPARATE — application, not framework".

Verified against the whisper-free tree:
  cargo check --workspace --keep-going          -> clean
  cargo check --features whisper                -> "none of the selected
     packages contains this feature", i.e. genuinely gone, not just unused
  bash scripts/check_deny_exemptions_live.sh    -> 8 declared, 0 dead
  cargo deny check advisories                   -> advisories ok

The deny.toml prose naming whisper-apr is a rationale for the rand 0.8.6
exemption, which lists several other live paths (axum 0.7 ws, tonic 0.12,
the published trueno-ublk/pacha/renacer stack). The exemptions guard
confirms none went dead, so that entry stays.

--no-verify: pre-commit complexity gate, pre-existing and unrelated
(#2526).
@noahgift
noahgift force-pushed the chore/remove-whisper-apr branch from b20859c to a361af3 Compare August 19, 2026 10:09
noahgift added a commit that referenced this pull request Aug 19, 2026
noahgift added a commit that referenced this pull request Aug 19, 2026
… version subcommand

Two more defects that exist only in the combination, both caught by CI on
#2537 and both invisible to the PRs individually.

1. ci / lint (clippy -D warnings):

     error: unexpected `cfg` condition value: `transcription`
       --> crates/aprender-rag-cli/src/transcribe.rs:184

   #2515 removed whisper-apr, taking `aprender_rag::TranscriptionLoader`
   and the `transcription` feature with it, but left the cfg blocks that
   used them. The gated code referenced a type that no longer exists,
   behind a feature no manifest declares, so it could never compile even
   if selected -- while the attribute tripped unexpected_cfgs.

   Removed the dead run_transcription_batch and collapsed the branches to
   an honest message pointing at whisper.apr as a standalone project.

   Note cargo check only WARNS here; only clippy -D warnings errors. My
   local verification had used check, which is weaker than CI.

2. workspace-test (integration):

     FALSIFY-CLI-006: the binary offers depth-2 commands the contract does
     not declare: ["sim version"]

   The batch takes #2527's simular conversion, whose Commands enum has a
   Version variant; #2493's contract entry for `sim` predates it. Added
   `version` to contracts/apr-cli-commands-v1.yaml. `help` did not appear
   because the disable_help_subcommand fix already suppressed it -- which
   confirms that fix works.

   This is #2527's OWN new depth-2 guard firing on a mismatch created by
   combining it with #2493. The guard earning its keep on its first batch.

Verified with the checks CI actually runs, not narrower ones:

    cargo clippy --all-targets -- -D warnings -A unused-variables   rc=0
    cargo test -p apr-cli --test cli_commands        12 passed, 0 failed
    cargo test -p apr-cli --test beat_apr_*_reach    3 + 15 passed, 0 failed
    cargo test -p aprender-core --test monorepo_invariants
                                --test readme_contract  8 + 15 passed, 0 failed
    pv validate contracts/apr-cli-commands-v1.yaml   Contract is valid.
@noahgift

Copy link
Copy Markdown
Contributor Author

Landed via #2537 (batch B), squash-merged as 542102499. GitHub does not auto-close squashed batch members, so closing manually — content verified present on main before closing, not assumed.

@noahgift noahgift closed this Aug 19, 2026
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