Skip to content

Add read-only Audiozentrale UI and telemetry replay - #46

Merged
alexdermohr merged 1 commit into
mainfrom
feat/audiozentrale-v2-readonly-ui-replay-v1
Aug 2, 2026
Merged

Add read-only Audiozentrale UI and telemetry replay#46
alexdermohr merged 1 commit into
mainfrom
feat/audiozentrale-v2-readonly-ui-replay-v1

Conversation

@alexdermohr

Copy link
Copy Markdown
Contributor

Summary

Implements AUDIO-CONTROL-PLANE-V1-T020 on top of the verified Audiozentrale v2 product model.

  • replaces the previous task-oriented navigation with exactly four stable product places: Jetzt, Setups, Bibliothek, System
  • keeps the existing browser fallback and later app shell on the same static frontend package
  • adds compact, inline-expanded and single-focus display depths
  • keeps observed, configured, physical-open and executable truth textually distinct
  • removes every /api/v1/actions/* call, POST path and action token use from the shared frontend
  • adds a deterministic, schema- and hash-bound telemetry replay for normal, clip, XRun, device loss, stale telemetry and recovery
  • exposes replay through a synthetic, non-authoritative GET endpoint without subprocesses or audio runner calls
  • binds the replay module, catalog and schema into the atomic deployment release set

Security and correctness

Replay catalog, schema and product model are read through descriptor-bound openat/O_NOFOLLOW chains. Duplicate JSON keys, non-finite values, unsafe path components, symlinked parents, oversized files, mid-read drift, nonmonotonic XRuns and inconsistent event semantics fail closed.

The frontend cannot start or stop the whale voice, apply a profile, alter a route, change a default, or start recording. The existing backend action surface is not expanded and is unused by this product surface.

Revision binding

  • base: 0b150a165c7c7b9d9035e76ea779491bc19c903e
  • head: b16ae60f0f802638ae2db6f9f176c22fec14a922
  • binary diff SHA-256: 82b68d45209f7c9846d989ba3160cb40bff1f0a515620ca6d2189593b9640f1c
  • replay catalog SHA-256: 6e7e1d82107a17116ff9bc3412a47d764bc0f0ab7341ee9d03bc821f916bd55b
  • replay schema SHA-256: 35d57824c190a0fff810bcf0c31840328415618d218aafa98bf4871a921157fe
  • frontend hashes:
    • index: a1a2737438c59ee68c9c231cc5a4059a48b48a0709074b72481f0da70428855f
    • app: bff7aaed6ab8b2f1f5c6e19d62e2152ca35897b17657f92d3aeceffe15d6b7e8
    • styles: 1364bbd5a2acc96bdf2ffce37704b69f0af97bedfbe5fddbae9668d111a6c700

Validation

  • exact-head just check: PASS
  • full repository tests: 542/542 PASS
  • replay tests: 8/8 PASS
  • control tests: 57/57 PASS
  • deployment tests: 20/20 PASS
  • JSON Schema Draft 2020-12: PASS
  • Ruff, Node syntax, Compileall and git diff --check: PASS
  • exact-head receipt SHA-256: b6839e63303b370d030d14c2fa1eef3ae96b2c04bc370d877115e40486705414
  • exact-head payload SHA-256: 617c1bf94cbfdfd048539307b34614115988f6b14f936641facf966040e3f334

Browser smoke

Isolated Google Chrome with touch emulation and prefers-reduced-motion: reduce verified:

  • exactly four route links and Bibliothek as active route
  • six replay scenarios
  • authoritative truth readback populated
  • every tested touch target is 42 px high
  • exactly one inline detail expands
  • replay advances from -42 dBFS to -30 dBFS
  • focus dialog becomes visible, marks the app shell inert, and restores trigger focus on close
  • zero console, page or network errors
  • zero /api/v1/actions/* requests

No physical playback, recording, profile apply, PipeWire routing, default device, service, or hardware state was changed during implementation or validation.

@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, you can upgrade your account or add credits to your account and enable them for code reviews in your settings.

@alexdermohr alexdermohr left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Self-Review: PASS auf exaktem Current Head b16ae60f0f802638ae2db6f9f176c22fec14a922 gegen Base 0b150a165c7c7b9d9035e76ea779491bc19c903e; binärer Diff SHA-256 82b68d45209f7c9846d989ba3160cb40bff1f0a515620ca6d2189593b9640f1c.

Geprüfte Achsen:

  • Autorität: Replay bleibt ausdrücklich synthetic-replay / authoritative: false; der gemeinsame Browser enthält keine /api/v1/actions/*-Aufrufe.
  • Laufzeitgrenze: /api/v1/replay akzeptiert keine Query, startet keinen Subprozess und verwendet den begrenzten, symlinkfreien Snapshot-Reader.
  • Releasebindung: Replaymodul, Katalog und Schema sind kritische atomare Releasedateien.
  • Datenvertrag: doppelte Schlüssel, Nichtendlichkeit, Größen-, Pfad-, Hash-, Reihenfolge-, XRun-, Clip-, Stale- und Recovery-Drift schlagen fail-closed fehl.
  • UI: genau vier Produktorte, read-only Fokus, Touchziele und reduzierte Bewegung sind durch Browser-Smoke gebunden; Fokus setzt die App-Shell inert und stellt den Fokus beim Schließen wieder her.
  • Integration: main ist weiterhin exakt 0b150a165…; der PR ist einen Commit voraus und null zurück. Keine Main-Drift.

Evidence auf diesem unveränderten Head: just check PASS, 542/542 Repositorytests, 8/8 Replaytests, 57/57 Controltests, 20/20 Deploymenttests, Browser-Smoke PASS, GitHub safety Run 30745415922 SUCCESS, 0 offene Reviewthreads.

Finding: keine offenen blockierenden Korrektheits-, Autoritäts-, Release-, A11y- oder Recoverybefunde. Der Review behauptet keine physische Audio- oder Deploymentwirkung.

@alexdermohr
alexdermohr merged commit d6ccab3 into main Aug 2, 2026
1 check passed

Copy link
Copy Markdown
Contributor Author

Post-Merge-Closeout — Deployment-Receipt gebunden, fehlgeschlagen

Lane: post-merge-closeout:6a6b966ae1fc8191b2aa3d40694e2409

Dedupe-Identität:

(
  heimgewebe/audio,
  AUDIO-CONTROL-PLANE-V1-T020 / PR #46,
  b16ae60f0f802638ae2db6f9f176c22fec14a922,
  d6ccab393de05ad9ce86228ac14bfca12b785a08,
  9fb69623333e3fa5cce06d462c720ef6c68f50b6ef30ca8f26d1eb29790e4487,
  deployment-receipt-bound
)

Belegte Vorstufen

  • PR-Base: 0b150a165c7c7b9d9035e76ea779491bc19c903e
  • finaler PR-Head: b16ae60f0f802638ae2db6f9f176c22fec14a922
  • Merge-Commit: d6ccab393de05ad9ce86228ac14bfca12b785a08
  • revisionsgebundener Self-Review: PASS
  • vollständige lokale Evidence laut Review: 542/542 Repositorytests, 8/8 Replaytests, 57/57 Controltests, 20/20 Deploymenttests und Browser-Smoke PASS
  • GitHub-Pflichtcheck safety, Run 30745415922: SUCCESS
  • Reviewthreads: 0

Fehlende Abschlusskante und autoritativer Deploymentbefund

Der Merge ist nicht als deployt oder runtimeverifiziert zu behandeln.

Am 2. August 2026 lief die Audiozentrale weiterhin auf Runtime-Head
0b150a165c7c7b9d9035e76ea779491bc19c903e, also dem Vorgängermerge aus T019. Der lokale Health-Endpunkt meldete status=serving, aber nicht den Merge von PR #46.

audio-control-deploy.service ist terminal fehlgeschlagen. Der Timer wiederholte den identischen Fehler minütlich:

systemd-analyze: Failed to allocate device monitor:
Die Adressfamilie wird von der Protokollfamilie nicht unterstützt

Reproduzierbare Ursache: Der Deployer führt systemd-analyze --user verify aus, während seine Unit nur AF_UNIX AF_INET AF_INET6 zulässt. Der benötigte Netlink-Gerätemonitor ist durch den Sandboxvertrag ausgeschlossen. Der UI-Dienst selbst benötigt diese zusätzliche Familie nicht und darf sie nicht erhalten.

Folgewirkung: Der Deploy scheitert vor einem gültigen Release-Receipt; zugleich wird der laufende UI-Dienst durch die wiederholten Versuche regelmäßig neu gestartet. Die Bureau-Wahrheit steht deshalb korrekt noch nicht auf verified: AUDIO-CONTROL-PLANE-V1-T020 ist weiterhin planned und in queue.next enthalten.

Closeout-Stufe

merge-verified:               erreicht
deployment-receipt-bound:     erreicht, Ergebnis FAILED
lifecycle-closed:             nicht erreicht
resources-released:           nur temporäre Closeout-Koordination nach Readback
archived:                     nicht erreicht

Nicht ausgeführter Korrekturpfad

Der minimale Korrekturpfad ist eindeutig: AF_NETLINK ausschließlich zur Deploy-Unit ergänzen, einen Positivtest für die Deploy-Unit und einen Negativtest für die unverändert enge UI-Unit hinzufügen, fokussiert und vollständig testen, mergen, anschließend Deployment und Runtime-Head exakt zurücklesen und erst dann Bureau-Task und Queue konvergieren.

Dieser Lauf hat dafür keinen ungebundenen Durable Task gestartet. Die aktuelle Grabowski-Runtime bbabc81c3cdcfd2e90f5653a7ff86f79d34273e4 weist den vorgeschriebenen eigenständigen Top-Level-Key operation:post-merge-closeout:lane-... noch vor Taskerzeugung als unbekannten Ressourcentyp zurück. Ein Ausweichen auf einen path-only oder generischen Task hätte den Lane- und Dedupevertrag verletzt.

Recovery

  • Produktrollback des Mergegegenstands: Revert von d6ccab393de05ad9ce86228ac14bfca12b785a08.
  • Laufzeit bleibt bis zur erfolgreichen Korrektur auf dem belegten serving-Vorgänger 0b150a165c7c7b9d9035e76ea779491bc19c903e.
  • Die enge Fixidee wurde nicht in einen Branch oder Worktree geschrieben; es existiert daher kein halbfertiger Produktzustand.

Nächster autoritativer Schritt

Nach erfolgreicher Veröffentlichung des Top-Level-operation:-Ressourcenvertrags einen exakt lanegebundenen Korrekturlauf auf dem dann frisch gelesenen audio/main starten. Danach: Fix-PR → Pflicht-CI → Merge → einmaliger Deploy → Health-Readback mit neuem Runtime-Head → T020 auf verified und aus queue.next entfernen.

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