Repository navigation
Conversation
Deploying podnotes with
|
| Latest commit: |
9f091c1
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://5580bef7.podnotes.pages.dev |
| Branch Preview URL: | https://chore-model-review.podnotes.pages.dev |
chhoumann
marked this pull request as ready for review
November 14, 2026 14:49
This branch has not been deployed
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
Goal: no PodNotes user stays on an old transcription model. The curated list in
src/services/transcription/providers/*.tsis the source of truth, so a maintainer needs a weekly signal when OpenRouter retires one or ships a newer one. This is tooling only and adds no plugin bytes.scripts/model-review.mjs(npm run review:models) reads the curated IDs from the provider files, fetches the publicGET https://openrouter.ai/api/v1/models?output_modalities=transcription(no key), and prints a short Markdown report: curated OpenRouter models missing from the catalog or carrying anexpiration_date, catalog models newer than a curated model of the same vendor family (direct providers count, sodeepgram/nova-4is newer thannova-3), and uncurated models listed once as candidates. It exits 1 only when a curated OpenRouter model is gone or past its end date (sameends <= todayrule the registry uses).--catalog <file>reads a saved catalog..github/workflows/model-review.ymlruns it Mondays 06:00 UTC and byworkflow_dispatch, never on pull requests. It uses the defaultGITHUB_TOKENwithcontents: readandissues: write, creates or edits one openmodel-reviewissue with the report, and then fails the run when the script exited 1. It is not inprotect-master.json, has noconcurrencyblock, and pins actions to the same SHAs astest.yml.AGENTS.mdlists the command in Common Commands.Base is
feat/transcription-openrouter(#540), where the curated lists live.Verification
Node 22.23.2 via fnm. All pass on this branch:
npm run lint,npm run format:check,npm run typecheck,npm run test:tooling(9 files, 54 tests),npm run test(125 files, 2882 tests),npm run build. Not run:docs:build(no docs change) and Obsidian runtime checks (no plugin code change).Tests:
tests/tooling/modelReview.test.tsruns the report ontests/fixtures/transcription/openrouter-catalog.json(trimmed live entries plus a deliberately retiredx-ai/grok-stt-2.0and a deliberately newerdeepgram/nova-4) and runs the CLI for exit codes.scripts/model-review.test.tsproves the IDs read from the provider files equal whatPROVIDERSin the registry offers, so the reader cannot drift from the code.Plants (
npm run plant, each must type-check, fail the named test, and pass once restored):else if (model.expiration_date) {toelse if (model.expiration_date === "never") {(drops the expiration check)model review > reports a curated model past its end dateown.every((curatedModel) => compare(version, curatedModel.version) > 0)toown.every(() => false)(drops the family check)model review > reports a model newer than a curated model of its familyThe workflow itself has not run: GitHub runs
scheduleonly from the default branch, so the first real run needs a manualworkflow_dispatchafter merge tomaster.Live run on 2026-11-14 (
npm run --silent review:models, exit 0, 31 catalog models, every curated model present with no end date):Release impact
None. No plugin, settings, storage, API, or URI change. Conventional type
choredoes not trigger a release.Note
Add weekly model-review workflow and
npm run review:modelsCLIreview:modelsnpm script and a scheduled workflow that runs Mondays at 06:00 UTC or manually. It writes the report to the step summary, force-updates amodel-reviewlabel, edits or creates an issue with that label, then fails the job if the review reported problems.model-review), so any existing issue with that label gets its body overwritten by the report.Macroscope summarized 9f091c1.
Note
Low Risk
Tooling-only change with no plugin runtime impact; the workflow only reads the repo and writes/updates issues using the default token.
Overview
Adds
npm run review:modelsandscripts/model-review.mjs, which read curated transcription model IDs from provider files, compare them to the public OpenRouter transcription catalog (live fetch or--catalog), and emit a Markdown report for missing or expiring curated OpenRouter models, newer family versions, and uncurated candidates. The command exits 1 when a curated OpenRouter model is absent or past its end date.A new Model review GitHub Actions workflow runs that script weekly (Mondays) and on manual dispatch, publishes the report to the job summary, and creates or updates a single
model-reviewissue when action is needed (without reopening on candidates-only reports).AGENTS.mdandpackage.jsondocument the npm script.Coverage includes unit/CLI tests with a catalog fixture and a check that parsed provider IDs stay aligned with the transcription registry.
Reviewed by Cursor Bugbot for commit 9f091c1. Bugbot is set up for automated code reviews on this repo. Configure here.