• Joined on 2026-03-27
mathias pushed to feat/33-audio-upload-transcript at mathias/tapir 2026-10-02 06:01:33 +00:00
1a89eb3868 docs(adr-034): record the first blind check; bar ambiguity and the unanswered second condition
2e9d76dad0 docs(research): first blind check of two-engine reconcile on a real recording (aggregates only)
Compare 2 commits »
mathias opened issue mathias/tapir#43 2026-10-02 05:30:21 +00:00
Upload worker logs nothing until the job ends: no start, phase, engine or adjudication lines
mathias commented on issue mathias/tapir#42 2026-10-02 05:26:23 +00:00
Upload page: show progress, so the user can tell running from hung or crashed

Requirements from the product owner (2026-10-02), to be treated as part of this issue's acceptance:

  1. Visual style. The indicator continues tapir's existing visual style. Reuse the…
mathias opened issue mathias/tapir#42 2026-10-02 05:24:09 +00:00
Upload page: show progress, so the user can tell running from hung or crashed
mathias pushed to feat/33-audio-upload-transcript at mathias/tapir 2026-10-02 05:13:10 +00:00
7f8e3677b3 docs(adr-034): gemma4-31b slowness explained; reopen the 26B-vs-31B reconciler choice
e3aa661cf2 docs(research): Low Power Mode confirmed as the cause of slow gemma4-31b (22.3 vs 7.9 tok/s decode)
Compare 2 commits »
mathias commented on pull request mathias/tapir#39 2026-10-01 21:28:25 +00:00
feat: upload audio, get a private Swedish transcript, discuss it (#33, ADR-033)

Scope added since the description above: two-engine transcription with a local reconciler (ADR-034, migration 019, internal/reconcile, transcribe.Ensemble). Off by default; the existing…

mathias commented on issue mathias/tapir#40 2026-10-01 21:28:12 +00:00
Add iguana/pianissimo as a second local transcription backend (middle tier, or run both)

Built: option B (run both, reconcile locally) — ADR-034, on PR #39

Chosen by the maintainer. Off by default; TAPIR_RECONCILE_BASE_MODEL=iguana/pianissimo + `TAPIR_RECONCILE_MODEL=iguana/…

mathias pushed to feat/33-audio-upload-transcript at mathias/tapir 2026-10-01 21:28:07 +00:00
7ae888a468 docs(claude): two-engine reconciliation, and that task check does not gate lint (#41)
b9e0dfa1c9 docs(homelab): two-engine mode, its settings and why every model must be local
8dbcb9a9eb docs(data-model): reconciliation column
26cc00c1cc test(acceptance): map the two-engine scenarios to their covering tests
36a80ac4f5 docs(use-cases): scenarios for two-engine reconciliation (ADR-034)
Compare 18 commits »
mathias opened issue mathias/tapir#41 2026-10-01 21:26:06 +00:00
Taskfile lint step can never fail: `golangci-lint run
mathias pushed to feat/33-audio-upload-transcript at mathias/tapir 2026-10-01 21:23:40 +00:00
6fb7a52980 feat(web): say what reconciliation did, and never claim a second opinion that was not there
d6ba11d288 test(web): the page says what reconciliation did, plainly, and never claims more (red)
ae4f9fd775 feat(store): persist and read back the reconciliation
e838f6bb6d feat(store): migration 019 -- uploaded_transcripts.reconciliation
5bd41077af test(store): the reconciliation survives the round trip, and its absence stays absent (red)
Compare 8 commits »
mathias pushed to feat/33-audio-upload-transcript at mathias/tapir 2026-10-01 21:20:41 +00:00
f25acebe4c feat(reconcile): merge two transcripts with a model choosing between disagreements
7f9e967ad0 test(reconcile): a verdict returned with an error is not used
0fead2e102 feat(domain): Reconciliation -- how a merged transcript came about (ADR-034)
a1e16fa658 test(reconcile): fixtures need two shared words between disputes
b20558ffa6 test(reconcile): merging two transcripts, and failing soft (red)
Compare 14 commits »
mathias pushed to feat/33-audio-upload-transcript at mathias/tapir 2026-10-01 21:15:14 +00:00
de9871c9c3 docs(adr): ADR-034 transcribe with two engines, reconcile with a local model
e182a6b07d docs(research): can a local model adjudicate two ASR transcripts?
Compare 2 commits »
mathias pushed tag v0.19.0 to mathias/hyperguild 2026-10-01 21:10:09 +00:00
mathias commented on issue mathias/gitea-mcp#64 2026-10-01 21:09:46 +00:00
tools/call is not audit-logged — only auth acceptance is (OWASP MCP08)

The Loki clause I left unverified earlier is now verified. `{namespace="gitea-mcp"}

mathias closed issue mathias/hyperguild#144 2026-10-01 21:09:45 +00:00
brain-mcp: one shared bearer for every client, no per-caller read scoping (OWASP MCP07/MCP10)
mathias commented on issue mathias/hyperguild#144 2026-10-01 21:09:44 +00:00
brain-mcp: one shared bearer for every client, no per-caller read scoping (OWASP MCP07/MCP10)

The last done-when clause is verified live. PR #147 deployed as ingestion:a6da933 (infra 36916a3), and the rollout completed. I then ran a live brain_query through the plugin MCP, and Loki…

mathias reopened issue mathias/hyperguild#144 2026-10-01 21:07:32 +00:00
brain-mcp: one shared bearer for every client, no per-caller read scoping (OWASP MCP07/MCP10)
mathias commented on issue mathias/hyperguild#144 2026-10-01 21:07:31 +00:00
brain-mcp: one shared bearer for every client, no per-caller read scoping (OWASP MCP07/MCP10)

pr-gatekeeper: PR #147 merged as a6da933. One structured mcp tool call slog record per tools/call, carrying tool, principal, origin, wing, hall, content_bytes, duration_ms and outcome (ok/error…

mathias commented on issue mathias/hyperguild#145 2026-10-01 21:07:30 +00:00
brain_write is an ungated persistent prompt-injection path into every future session (OWASP MCP06)

pr-gatekeeper: done, verified by execution. PR #147 merged as a6da933 after four review rounds.

  • Write side: brain_write, brain_update, brain_edit, brain_promote, capture (MCP and REST), MCP…
mathias opened issue mathias/hyperguild#151 2026-10-01 21:07:17 +00:00
provenance follow-ups: decode written_by on read; promote leaves empty dir on refusal; partial multi-page ingest