feat: rebuild Updatarr completely in Rust #308

Merged
Wuast94 merged 48 commits from migration/rust-rebuild into main 2026-10-08 16:33:42 +02:00
Owner

Die Go-App wird vollständig durch den nativen Rust-Service mit Goldtemplate und veröffentlichten Common-/UI-Crates ersetzt. API, Konfiguration, Daten, Jobs, sämtliche Datasources, Git-/Forgejo-Abläufe, UI und alle sieben externen Lockfilewerkzeuge bleiben erhalten. PostgreSQL/SeaORM ist der einzige Produktionsdefault; die genehmigte Wolfi-Werkzeugruntime bleibt in der finalen scratch-Stage. Imageziel: harbor.wuastbude.de/updatarr/updatarr.

Die native Runtimeabnahme überträgt Keys, Inputs und Prüfbinaries jetzt durch die Docker-Archiv-API in eigene Volumes statt über clientseitige Bindpfade. Verbraucher lesen diese Volumes nur; Die vorhandene Python-TCP-Probe und SSH-Fixture teilen das kontrollierte Netz; Docker-Execfehler 125/126/127 propagieren ohne Retry. Create/Copy-Fehler propagieren mit eigener Bereinigung und frühem Fehlerbericht. Der native Repro belegt den ursprünglichen leeren Host-Bindpfad und den erfolgreichen Ersatz. GHCR-Source-Discovery und GitHub-/Forgejo-Compare verarbeiten zusätzlich echte HTTP-Antworten mit Paket-/Origin-/Token-Scope, Commitnotes und Fehlern ohne veröffentlichte Evidence.

Unabhängige PostgreSQL-Testfixtures besitzen jetzt ihren gemeinsamen Dienst bis zum Cleanup; verschachtelte Source-/Target-/Restore-Datenbanken teilen den Szenariobesitz. Innere Konkurrenzprüfungen bleiben unverändert. CI1085 belegte die Verbindungserschöpfung bei28 parallelen Fällen. Stage-Wait beobachtet echte fehlgeschlagene Common-Job-Messungen und beendet/joint den Worker auch bei erhaltenem queued-Intent; ein tatsächlicher Lease-Authentifizierungsfehler prüft dies ohne Git-/Remoteeffekte.

  • Vollständige einzelne Funktions-IDs und tatsächliche Tests: Inventar, Migrationsbericht.
  • Funktionale Themen jeweils mit vollständigem Vorcommit-just gate Exit0 und normalen Hooks. Aktueller Lauf: 239 Rust-, 100 Node-, 33 Browserfälle/0 Pageerrors sowie echter Binary-/PostgreSQL-/Git-/Forgejo-Liveflow. Hostcoverage 87,54% Zeilen/84,31% Regionen; Branch-/Doctestcoverage nicht gemessen.
  • Alle sieben echten Resolver mit Generate/Refresh/Folgeoperation; Prozessbesitz/Cancellation/Reaping, authentifiziertes SSH/HTTPS, Projekt-Rustup, readonly/nonroot, zehn Legacy-Tabellen/sieben Sequenzen, Folgeoperation und vollständiger Dump/Restore/Rollback sind in der vollständigen nativen Imageabnahme auf actrunner01 tatsächlich mit Exit0 abgeschlossen (43 Rust-Runtimefälle, Linux/amd64, Image-ID b7e5f136). Zusätzlich ist das historische Go-v0.11.0-Image mit exakt restored Legacy-Dump und tatsächlichen API-Zugriffen/Shutdown geprüft; Produktion unverändert.
  • Native Syft-SBOM mit4.736 Einträgen und aktuelle Grype-Auswertung mit272 Matches/196 Zuordnungen/0 Ignores vollständig erhalten; keine ungefragten Versionsupdates. Keine Produktionsumschaltung.

Vor geschütztem Rebase-Merge muss die native PR-CI genau diesen Head mit Quality und dem einzigen Productionbuild einschließlich Runtimeabnahme bestätigen. Danach Main-Release mit aktuellem Runtime-/Datenbeleg, Harbor-Digest, Cosignsignatur und SPDX-Attestation prüfen. Erst nach vollständigem Ersatz old/ und working/ entfernen und Standardrolle/Nachweis abschließen.

Die Go-App wird vollständig durch den nativen Rust-Service mit Goldtemplate und veröffentlichten Common-/UI-Crates ersetzt. API, Konfiguration, Daten, Jobs, sämtliche Datasources, Git-/Forgejo-Abläufe, UI und alle sieben externen Lockfilewerkzeuge bleiben erhalten. PostgreSQL/SeaORM ist der einzige Produktionsdefault; die genehmigte Wolfi-Werkzeugruntime bleibt in der finalen scratch-Stage. Imageziel: `harbor.wuastbude.de/updatarr/updatarr`. Die native Runtimeabnahme überträgt Keys, Inputs und Prüfbinaries jetzt durch die Docker-Archiv-API in eigene Volumes statt über clientseitige Bindpfade. Verbraucher lesen diese Volumes nur; Die vorhandene Python-TCP-Probe und SSH-Fixture teilen das kontrollierte Netz; Docker-Execfehler 125/126/127 propagieren ohne Retry. Create/Copy-Fehler propagieren mit eigener Bereinigung und frühem Fehlerbericht. Der native Repro belegt den ursprünglichen leeren Host-Bindpfad und den erfolgreichen Ersatz. GHCR-Source-Discovery und GitHub-/Forgejo-Compare verarbeiten zusätzlich echte HTTP-Antworten mit Paket-/Origin-/Token-Scope, Commitnotes und Fehlern ohne veröffentlichte Evidence. Unabhängige PostgreSQL-Testfixtures besitzen jetzt ihren gemeinsamen Dienst bis zum Cleanup; verschachtelte Source-/Target-/Restore-Datenbanken teilen den Szenariobesitz. Innere Konkurrenzprüfungen bleiben unverändert. CI1085 belegte die Verbindungserschöpfung bei28 parallelen Fällen. Stage-Wait beobachtet echte fehlgeschlagene Common-Job-Messungen und beendet/joint den Worker auch bei erhaltenem queued-Intent; ein tatsächlicher Lease-Authentifizierungsfehler prüft dies ohne Git-/Remoteeffekte. - Vollständige einzelne Funktions-IDs und tatsächliche Tests: [Inventar](https://git.wuastbude.de/Wuast94/updatarr/src/branch/migration/rust-rebuild/docs/migration/inventory.md), [Migrationsbericht](https://git.wuastbude.de/Wuast94/updatarr/src/branch/migration/rust-rebuild/docs/migration/report.md). - Funktionale Themen jeweils mit vollständigem Vorcommit-`just gate` Exit0 und normalen Hooks. Aktueller Lauf: 239 Rust-, 100 Node-, 33 Browserfälle/0 Pageerrors sowie echter Binary-/PostgreSQL-/Git-/Forgejo-Liveflow. Hostcoverage 87,54% Zeilen/84,31% Regionen; Branch-/Doctestcoverage nicht gemessen. - Alle sieben echten Resolver mit Generate/Refresh/Folgeoperation; Prozessbesitz/Cancellation/Reaping, authentifiziertes SSH/HTTPS, Projekt-Rustup, readonly/nonroot, zehn Legacy-Tabellen/sieben Sequenzen, Folgeoperation und vollständiger Dump/Restore/Rollback sind in der vollständigen nativen Imageabnahme auf actrunner01 tatsächlich mit Exit0 abgeschlossen (43 Rust-Runtimefälle, Linux/amd64, Image-ID b7e5f136). Zusätzlich ist das historische Go-v0.11.0-Image mit exakt restored Legacy-Dump und tatsächlichen API-Zugriffen/Shutdown geprüft; Produktion unverändert. - Native Syft-SBOM mit4.736 Einträgen und aktuelle Grype-Auswertung mit272 Matches/196 Zuordnungen/0 Ignores vollständig erhalten; keine ungefragten Versionsupdates. Keine Produktionsumschaltung. Vor geschütztem Rebase-Merge muss die native PR-CI genau diesen Head mit Quality und dem einzigen Productionbuild einschließlich Runtimeabnahme bestätigen. Danach Main-Release mit aktuellem Runtime-/Datenbeleg, Harbor-Digest, Cosignsignatur und SPDX-Attestation prüfen. Erst nach vollständigem Ersatz `old/` und `working/` entfernen und Standardrolle/Nachweis abschließen.
chore: scaffold Rust rebuild from the complete gold template
Some checks failed
CI / Build (pull_request) Has been cancelled
CI / Build-1 (pull_request) Has been cancelled
CI / Quality (pull_request) Has been cancelled
4c5c88125c
docs: inventory all Updatarr features and select Rust libraries
All checks were successful
CI / Quality (pull_request) Successful in 5m6s
CI / Build-1 (pull_request) Successful in 10m34s
CI / Build (pull_request) Successful in 11m35s
5404bb402b
docs: define Wolfi APK source updates before implementation
All checks were successful
CI / Quality (pull_request) Successful in 6m32s
CI / Build-1 (pull_request) Successful in 17s
CI / Build (pull_request) Successful in 19s
d00daaf752
chore: synchronize local build cleanup standard
All checks were successful
CI / Quality (pull_request) Successful in 9m30s
CI / Build-1 (pull_request) Successful in 56s
CI / Build (pull_request) Successful in 56s
58d03d6a39
docs: include VRDS in the shared standard scope
All checks were successful
CI / Quality (pull_request) Successful in 7m11s
CI / Build (pull_request) Successful in 21s
CI / Build-1 (pull_request) Successful in 22s
21ae640e1f
feat: rebuild Updatarr with native Rust workflows
Some checks failed
CI / Quality (pull_request) Failing after 10m16s
CI / Build (pull_request) Has been skipped
CI / Build-1 (pull_request) Has been skipped
0a78f968fa
Wuast94 changed title from WIP: feat: rebuild Updatarr completely in Rust to feat: rebuild Updatarr completely in Rust 2026-10-04 05:46:34 +02:00
test: synchronize browser focus after initial refresh
Some checks failed
CI / Quality (pull_request) Failing after 6m42s
CI / Build (pull_request) Has been skipped
CI / Build-1 (pull_request) Has been skipped
56e01f6009
test: observe worker failures while awaiting scan recovery
Some checks failed
CI / Quality (pull_request) Failing after 6m40s
CI / Build (pull_request) Has been skipped
CI / Build-1 (pull_request) Has been skipped
41585daac0
test: report PostgreSQL waits when fixture migration fails
Some checks failed
CI / Quality (pull_request) Successful in 13m6s
CI / Build-1 (pull_request) Failing after 3m26s
CI / Build (pull_request) Failing after 3m31s
09072902c4
docs: forbid asynchronous questions and require a full stop
Some checks failed
CI / Build (pull_request) Has been cancelled
CI / Build-1 (pull_request) Has been cancelled
CI / Quality (pull_request) Has been cancelled
e5811570a3
docs: record question-tool prohibition across active repositories
Some checks failed
CI / Quality (pull_request) Failing after 14m34s
CI / Build (pull_request) Has been skipped
CI / Build-1 (pull_request) Has been skipped
6ba0d8d0aa
Pure maintenance exception: reviewed diff contains only documentation. No processing, tests, dependencies, build, CI, or effective configuration are staged. The command-scoped hook exemption avoids compiling the separate, unfinished HTTP topic; repository hooks and verification gates remain unchanged.
fix: join owned HTTP processing before closing dependencies
Some checks failed
CI / Quality (pull_request) Failing after 19m55s
CI / Build (pull_request) Has been skipped
CI / Build-1 (pull_request) Has been skipped
a90ee5e0de
docs: document protected CI context migration
Some checks failed
CI / Quality (pull_request) Successful in 14m8s
CI / Build-1 (pull_request) Failing after 3m9s
CI / Build (pull_request) Failing after 3m9s
9e8c692612
fix(build): expose bounded Bun identity failure diagnostics
Some checks failed
CI / Quality (pull_request) Successful in 14m47s
CI / Build-1 (pull_request) Failing after 3m39s
CI / Build (pull_request) Failing after 3m40s
31c62e2601
Preserve the public Rust wrapper before instrumentation and restore it for
native release canaries. Keep unset and explicitly empty Cargo wrappers
distinct; leave native invocations and all compile/runtime deadlines intact.

Validation: full working-tree just gate exit 0, 228 initial Rust cases plus
feature variants, 49 Node cases, 33 controlled browser cases and the real
PostgreSQL/Git/Forgejo live flow. Lines 86.81%, regions 83.56%. The native
optimized critical/noncritical worker canary passed in 44.94 seconds.
fix(test): bound the complete native browser fixture
Some checks failed
CI / Quality (pull_request) Failing after 25m26s
CI / Build (pull_request) Has been skipped
CI / Build-1 (pull_request) Has been skipped
6a888701bb
Derive the live body budget from its existing bounded app and cleanup phases
while keeping ordinary database assertions at thirty seconds. Persist fixed
phase checkpoints and join/reap native owners before database cleanup. Mark
overall success only after browser, application and database completion.

Validation: independent full just gate exit 0 immediately before this commit;
228 initial Rust cases plus feature variants, 49 Node cases, 33 controlled
browser cases and real PostgreSQL/Git/Forgejo live integration. Lines 86.81%,
regions 83.56%. Existing assertions and production deadlines are unchanged.
Historical native CI1073 remains a failure; exact-head native CI follows push.
fix(test): clean up failed PostgreSQL fixture setup
Some checks failed
CI / Quality (pull_request) Failing after 12m8s
CI / Build (pull_request) Has been skipped
CI / Build-1 (pull_request) Has been skipped
1c906e4e48
Adopt the reviewed reference-first PostgreSQL setup ownership fix. Await
cleanup of a successfully created database and its admin pool after a
failed target connection; preserve existing databases on CREATE failure.
Validate target URLs before CREATE and emit only safe setup diagnostics.
Preserve five-second connection limits, pool defaults, concurrency and
Updatarr's native timeout/join/reap ownership contract.

Validation: actual just gate Exit 0; 231 initial all-feature Rust cases,
49 Node cases, 33 controlled browser cases and real live flow completed
with no page errors. Stable coverage: 16341/18823 lines (86.81%) and
24291/29070 regions (83.56%); branch/doctest/JS coverage unmeasured.
Three real PostgreSQL setup regressions passed. Reviewed old auth-failure
ownership path was red (Exit 101) and retained its created database.
Existing native Bun and canonical rustup PATH restored after an unrelated
host Spawn failure; no installation or dependency/tool/pin update.

Evidence: docs/migration/report.md; independent prefix/drain review;
/tmp/updatarr-db-setup-proof.json and final-gate log/actual exit file.
Historical CI1074's first connection-timeout cause remains unknown.
Configured datasource startup validation remains a separate app fix.
fix(test): wait for the initial overview before bulk refresh
Some checks failed
CI / Quality (pull_request) Failing after 9m31s
CI / Build (pull_request) Has been skipped
CI / Build-1 (pull_request) Has been skipped
90b38dd121
docs(migration): record native quality and legacy runtime rollback
Some checks failed
CI / Build production (pull_request) Has been cancelled
CI / Quality (pull_request) Has been cancelled
3058139bcd
docs: record native image acceptance and current CVE evidence
All checks were successful
CI / Quality (pull_request) Successful in 17m17s
CI / Build production (pull_request) Successful in 29m52s
b6a6fb15cf
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
Wuast94/updatarr!308
No description provided.