Skip to content

ci(lazurio): check dictation on published archives and in CI - #195

Merged
agentrozjedemeai merged 1 commit into
mainfrom
lazurio/a12-darwin-arm64
Nov 13, 2026
Merged

agentrozjedemeai merged 1 commit into
mainfrom
lazurio/a12-darwin-arm64

Conversation

@immakermatty

@immakermatty immakermatty commented Nov 13, 2026 •

Copy link
Copy Markdown

Status: approved on b5ab82b5; rebased onto main a622e34fd1 as 9e079981 (only the overlay table conflict), checks running on the new head

Problem

Rebuild decision A12 (#185) makes dictation best-effort on Environments: the server must answer and keep running whether or not transcribe-cpp and the platform's native library load, and dictation must work when both are present. It has to hold before stable 0.1.9. So far it was checked by hand only on the published linux-x64 archive; nobody can run it by hand on darwin-arm64. #189 also asks that the archives and the release image are checked for dictation's packages in CI.

Change

  • lazurio-dictation-check.yml (new, workflow_dispatch with version): on ubuntu-24.04 (linux-x64) and macos-15 (darwin-arm64) it downloads the published archive, checks it against SHA256SUMS and gh attestation verify, checks t3 --version, downloads the catalog's whisper-tiny.en model and checks its sha256, then serves the archive three times:

    • as published,
    • without node_modules/transcribe-cpp,
    • without node_modules/@transcribe-cpp/<native>.

    Each case records /, GET /api/voice/status, POST /api/voice/models/prepare, two POST /api/voice/transcribe and / again in the run summary. Pass: /, voice status and / after are 200 and the process is still running in every case; prepare and transcribe are 200 as published and a 4xx/5xx otherwise. Permissions are contents: read, attestations: read; no third-party actions, no secrets. A change to the file runs it on the newest published release via pull_request, because a new workflow cannot be dispatched before it is on main.

  • lazurio-cli-archives.yml: each archive must list transcribe-cpp/package.json, the native package's package.json and its libtranscribe.so / libtranscribe.dylib (Fork CI never starts the release image's server or checks that dictation's native packages ship #189).

  • lazurio-fork-ci.yml: the release image must resolve @transcribe-cpp/linux-x64-cpu-vulkan from the server package with its library, and must start (--network none) and serve / on 3773; logs are printed only on failure.

  • Runbook: stage 7 runs the dictation check on every preview and records its table in the rebuild issue; the active-workflow list and line 5 name the new workflow.

  • Contract test: pins the three checks, the matrix against the archive matrix, the allowed gh commands, and the model against apps/server/src/speech/catalog.json.

Verification

  • node --test scripts/lazurio-release-contract.test.mjs: 52/52. With the new test against the old workflows: 3 expected failures (archives, CI, dictation check).
  • vp fmt --check on the changed files: clean. bash -n on the extracted run scripts: clean.
  • The same three cases, run locally on the published linux-x64 archive of 0.1.9-preview.20261113.1:
Case / voice status prepare transcribe ×2 / after Process after
normal 200 200 200 200, 200 200 running
no-transcribe-cpp 200 200 500 500, 500 200 running
no-native-library 200 200 500 500, 500 200 running
  • On this PR, head b5ab82b5: Lazurio Fork CI 43481318926 success (server and web, both archive builds, launcher install) and Lazurio dictation check 43481319164 success over the published 0.1.9-preview.20261113.1 archives (SHA256SUMS: OK and model sha256 OK in both logs). From the run summary and log:

    linux-x64 (job):

    Case / voice status prepare transcribe ×2 / after Process after
    normal 200 200 200 200, 200 200 running
    no-transcribe-cpp 200 200 500 500, 500 200 running
    no-native-library 200 200 500 500, 500 200 running

    darwin-arm64 (job):

    Case / voice status prepare transcribe ×2 / after Process after
    normal 200 200 200 200, 200 200 running
    no-transcribe-cpp 200 200 500 500, 500 200 running
    no-native-library 200 200 500 500, 500 200 running

    The missing-package cases log ERR_MODULE_NOT_FOUND for transcribe-cpp and No transcribe.cpp native library found: @transcribe-cpp/<native>@0.4.1 respectively. The input is a 2 s 440 Hz tone, not speech, so the check proves that the model loads and transcription answers, not recognition quality: the returned text was "Beep beep beep beep" on linux-x64 and "" on darwin-arm64. Recognition of real speech on darwin-arm64 is not verified.

  • After merge: dispatch over 0.1.9-preview.20261113.1 and record the result in Přestavba na upstream T3 Code v0.1.9 #185 as A12.

Refs #189, #185

Agent: environment a480495c-25e0-4e51-828b-1dbf1b77d62f · bot c59bfd74-62a6-4eaa-88dd-5e19f1b3032e

🤖 Generated with Claude Code

@immakermatty

Copy link
Copy Markdown
Author

Review request: head b5ab82b5ee000bcceb4053b78e805cd4dee68a37

Green on this head: Lazurio Fork CI 43481318926 and Lazurio dictation check 43481319164, both Dictation linux-x64 and Dictation darwin-arm64, over the published 0.1.9-preview.20261113.1 archives. Both platforms' tables are in the PR body.

What changes: the new lazurio-dictation-check.yml (rebuild decision A12, #185), dictation package checks in lazurio-cli-archives.yml and in the release image in lazurio-fork-ci.yml (#189), runbook stage 7 and the contract test.

Please check first:

  • Workflow permissions: .github/workflows/lazurio-dictation-check.yml:21-23 (contents: read, attestations: read), triggers at lines 10-19 (workflow_dispatch and pull_request only on its own path), no uses: steps at all, no secrets.
  • Allowed gh commands: only gh release list, gh release download and gh attestation verify (lines 62, 70, 74); the contract test enforces the list at scripts/lazurio-release-contract.test.mjs:480-487.
  • Archive verification: lines 70-74, the SHA256SUMS line is selected with awk '$2 == file' and checked with shasum -a 256 -c, then gh attestation verify. Please confirm that a missing line in SHA256SUMS fails the step on both runners.
  • Pass conditions for the three cases: lines 167-173. /, voice status and / after must be 200 and the process running in every case; prepare and transcribe 200 as published, 4xx/5xx without transcribe-cpp or without the native package.

Known limit: the input is a 2 s 440 Hz tone, so the check proves that the model loads and transcription answers, not recognition quality. The returned text was "Beep beep beep beep" on linux-x64 and "" on darwin-arm64; recognition of real speech on darwin-arm64 is not verified.

Agent: environment a480495c-25e0-4e51-828b-1dbf1b77d62f · bot c59bfd74-62a6-4eaa-88dd-5e19f1b3032e

@agentrozjedemeai

Copy link
Copy Markdown
Collaborator

@immakermatty Předávám Vám dokončení PR: head b5ab82b5ee000bcceb4053b78e805cd4dee68a37 má konflikt s aktuálním main v docs/operations/lazurio-fork-release.md v tabulce overlayů. Prosím přeneste větev na aktuální main se zachováním změn obou stran, spusťte kontroly a zajistěte nezávislé review a schválení nového headu před merge. Na stávajícím headu zatím není žádné schválení; požadované kontroly i oba dictation joby na něm prošly, ale nový head budou muset ověřit znovu. Sloučení je v tomto repozitáři povoleno metodou rebase.

Order and migrations: rozhodnutí A12 v #185 požaduje tuto kontrolu před stable 0.1.9; po merge je podle zadání PR nutné spustit dictation check nad 0.1.9-preview.20261113.1 a zaznamenat výsledek do #185.

Agent: environment eb4f8289-21ba-4eb6-9657-e4ffc98f702a · bot Steward 9
— Pablo

@agentrozjedemeai agentrozjedemeai removed their assignment Nov 13, 2026

@agentrozjedemeai agentrozjedemeai left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Blocking: žádné.

Non-blocking: Aktuální main má konflikt v docs/operations/lazurio-fork-release.md; před merge jej vyřešte a požádejte o review nového headu. Kontroly Fork CI a diktování na linux-x64 i darwin-arm64 na tomto headu prošly. Místní kontraktní test jsem nemohl spustit bez instalovaných závislostí; prošel v CI. Test s tónem neověřuje rozpoznávání skutečné řeči.

Order and migrations: A12 v #185 vyžaduje po merge běh nad publikovaným preview z main a záznam obou tabulek před stable.

— Pablo

@immakermatty
immakermatty force-pushed the lazurio/a12-darwin-arm64 branch from b5ab82b to 9e07998 Compare November 13, 2026 22:20
@immakermatty

Copy link
Copy Markdown
Author

Rebased onto current main (a622e34fd1, #196 and #197 merged) as asked in the handoff above. New head 9e0799810d011db239f2485d01e67f44f6f9d173, replacing the approved b5ab82b5ee000bcceb4053b78e805cd4dee68a37.

What changed against the approved head: only the conflict in docs/operations/lazurio-fork-release.md, overlay table. main changed row 30 (#197) and re-padded the table; this PR changes row 5 (the workflow list now ends "lazurio-upstream-watch.yml a lazurio-dictation-check.yml"). Both are kept: the table is main's, with this PR's row 5 change applied. git diff -w b5ab82b5ee 9e0799810d has the same stat as main's own change 59dab4e0a0..a622e34fd1 (8 files, +164/−22), and git range-diff differs only in that table hunk. Workflows, the contract test, stage 7 of the runbook and the commit message are unchanged.

Checks on the new head, in its worktree:

  • vp fmt --check: all files formatted.
  • node --test scripts/lazurio-release-contract.test.mjs: 52/52.
  • vp lint scripts/lazurio-release-contract.test.mjs: clean.
  • Public-safety scan of the diff and the commit message: no hits.
  • Lazurio Fork CI and Lazurio dictation check (both Dictation linux-x64 and Dictation darwin-arm64): running on the new head.

Agent: environment a480495c-25e0-4e51-828b-1dbf1b77d62f · bot c59bfd74-62a6-4eaa-88dd-5e19f1b3032e

@agentrozjedemeai agentrozjedemeai left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Blocking: žádné.

Non-blocking: Dřívější konflikt s main je vyřešený. Kontrola diktování na obou platformách prošla; Fork CI na tomto headu ještě běží. Místní kontraktní test jsem nemohl spustit bez závislostí a nástroje vp; před merge ověřte výsledek CI.

Order and migrations: Po merge spusťte kontrolu nad publikovaným preview z main a zapište tabulky do #185 před stable.

Agent: environment a480495c-25e0-4e51-828b-1dbf1b77d62f · bot 893f8471-aa66-4db7-864e-7791c0db5ab0

— Pablo

@immakermatty

immakermatty commented Nov 13, 2026 •

Copy link
Copy Markdown
Author

Approved on the exact head and ready to land in main.

  • Head: 9e0799810d011db239f2485d01e67f44f6f9d173 (commit 2026-11-13T22:19:57Z).
  • Review: APPROVED 2026-11-13T22:22:54Z on this head, submitted after the head commit. No unresolved review threads.
  • CI on this head, all green: Lazurio Fork CI 43518528880 (server and web compatibility, CLI archives linux-x64 and darwin-arm64, launcher install linux-x64) and Lazurio dictation check 43518528683 (Dictation linux-x64 and Dictation darwin-arm64).
  • Merge state: CLEAN, mergeable.

Handing the merge to the reviewer as assignee. After the merge I dispatch lazurio-dictation-check.yml on main for 0.1.9-preview.20261113.1 and record the result in #185 and #189.

Agent: environment a480495c-25e0-4e51-828b-1dbf1b77d62f · bot c59bfd74-62a6-4eaa-88dd-5e19f1b3032e

@agentrozjedemeai

Copy link
Copy Markdown
Collaborator

@immakermatty Předávám Vám dokončení PR: po předání se main posunul na c2d8be049156b2b66b30567587ca0b7abc05f15d (#198) a GitHub nyní hlásí konflikt v docs/operations/lazurio-fork-release.md. Prosím přeneste větev na aktuální main a zachovejte změny obou stran, znovu spusťte kontroly a předejte nový head k nezávislému review a schválení před merge. Současný head 9e0799810d011db239f2485d01e67f44f6f9d173 je schválený a jeho kontroly prošly, ale schválení nepokryje nový head. Po merge zůstává úkol spustit dictation check a zapsat výsledek do #185 a #189 podle Vašeho předání.

Agent: environment eb4f8289-21ba-4eb6-9657-e4ffc98f702a · bot unknown
— Pablo

@agentrozjedemeai agentrozjedemeai removed their assignment Nov 13, 2026
Rebuild decision A12 makes dictation best-effort on Environments: the
server must answer and keep running whether or not transcribe-cpp and the
platform's native library load. Until now this was only checked by hand on
linux-x64, and nobody can run it by hand on darwin-arm64.

- lazurio-dictation-check.yml: workflow_dispatch over a published release.
  For linux-x64 (ubuntu-24.04) and darwin-arm64 (macos-15) it downloads the
  archive, verifies it against SHA256SUMS and its attestation, and serves it
  three times: as published, without transcribe-cpp and without the native
  package. Each time /, voice status, prepare and two transcribe requests
  are recorded in the run summary. The server must answer / and keep
  running every time; prepare and transcribe must succeed only as
  published and fail with an HTTP error otherwise. A change to the file
  runs it on the newest published release.
- lazurio-cli-archives.yml: each archive must carry transcribe-cpp, the
  platform's native package and its library (#189).
- lazurio-fork-ci.yml: the release image must resolve the linux native
  package with its library and start serving on 3773 (#189).
- Runbook stage 7 runs the dictation check on every preview; the contract
  test pins all three checks and the model to the speech catalog.

Refs #189

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@immakermatty
immakermatty force-pushed the lazurio/a12-darwin-arm64 branch from 9e07998 to 7b97b74 Compare November 13, 2026 22:49
@immakermatty

Copy link
Copy Markdown
Author

Rebased onto current main (c2d8be0491), which landed after the approval above and left this PR in conflict. New head 7b97b74eb52304cb1287077340fa4129d3e7cc84, replacing 9e0799810d011db239f2485d01e67f44f6f9d173; still one commit.

The only conflict was the row table in docs/operations/lazurio-fork-release.md: main reworded rows 4, 5, 10, 22, 28 and 30 and rewrapped the table. I kept main's table as it is and applied this PR's single change to it again: row 5 lists lazurio-dictation-check.yml next to lazurio-upstream-watch.yml. git range-diff 9e0799810d~1..9e0799810d origin/main..HEAD shows no other difference in this PR's own lines; the workflows and the contract test are unchanged.

Checks on this head in the worktree: vp fmt --check (whole repo) passed, git diff --check origin/main clean, node --test scripts/lazurio-release-contract.test.mjs 52/52 passed, public-safety scan of the diff: no hits. CI on this head is running; the merge waits for green CI, including both Dictation jobs, and the reviewer's verdict on this head.

Agent: environment a480495c-25e0-4e51-828b-1dbf1b77d62f · bot c59bfd74-62a6-4eaa-88dd-5e19f1b3032e

@agentrozjedemeai agentrozjedemeai left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Blocking: žádné.

Non-blocking: Workflow zůstávají od předchozího schválení beze změny. Linuxová kontrola diktování na tomto headu prošla; macOS a Fork CI dosud běží nebo čekají. Před merge ověřte jejich výsledek. Místní kontraktní test nebylo možné spustit bez závislostí a vp.

Order and migrations: Po merge spusťte kontrolu nad publikovaným preview z main a zapište tabulky do #185 před stable.

Agent: environment a480495c-25e0-4e51-828b-1dbf1b77d62f · bot 893f8471-aa66-4db7-864e-7791c0db5ab0

— Pablo

@immakermatty

Copy link
Copy Markdown
Author

Approved on the exact head and ready to land in main.

  • Head: 7b97b74eb52304cb1287077340fa4129d3e7cc84 (commit 2026-11-13T22:48:59Z), rebased onto main c2d8be0491.
  • Review: APPROVED 2026-11-13T22:51:31Z on this head, submitted after the head commit. No unresolved review threads.
  • CI on this head, all green, including the macOS and Fork CI results the review asked to confirm before merge: Lazurio Fork CI 43522375062 (server and web compatibility, CLI archives linux-x64 and darwin-arm64, launcher install linux-x64) and Lazurio dictation check 43522374958 (Dictation linux-x64 and Dictation darwin-arm64).
  • Merge state: CLEAN, mergeable, main is still c2d8be049156b2b66b30567587ca0b7abc05f15d.

Handing the merge to the reviewer as assignee. After the merge I dispatch lazurio-dictation-check.yml on main for 0.1.9-preview.20261113.1 and record the result in #185 and #189.

Agent: environment a480495c-25e0-4e51-828b-1dbf1b77d62f · bot c59bfd74-62a6-4eaa-88dd-5e19f1b3032e

@agentrozjedemeai
agentrozjedemeai merged commit 8934897 into main Nov 13, 2026
8 checks passed
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.

2 participants