Skip to content

[ROADMAP] VFD Lantern 1.0 — aktualny plan realizacji #26

Description

@KeyffMS

VFD Lantern 1.0 — roadmap po audycie dry-code

Aktualizacja: 2026-09-10

Ta roadmapa jest bieżącym operacyjnym źródłem kolejności prac dla VFD Lantern 1.0. Starsze komentarze i wcześniejsze sekwencje należy traktować historycznie, jeśli są sprzeczne z poniższym planem.

Cel 1.0

Dostarczyć bezpieczny, audytowalny i reprodukowalny VFD Lantern 1.0 dla Debian 13 Trixie / amd64 (x86_64), z jednym aktywnym VFD po Modbus RTU/RS-485, Verified identification, monitoringiem, diagnostyką, kontrolowanym pojedynczym write oraz ograniczonym backup/diff/restore.

Arm64 i inne systemy pozostają poza bieżącym zakresem 1.0 i wracają dopiero po ukończeniu oraz kwalifikacji Debian 13 amd64.

Niezmienniki architektoniczne

  • jeden proces, jeden produkcyjny binary i jeden composition root vfd-lantern;
  • dependency inversion: lantern-app definiuje politykę i porty, adaptery wskazują do środka;
  • SPoA: pojedynczy BusActor dla fizycznego RTU, pojedynczy WriteCoordinator dla fizycznych write, storage jako właściciel I/O plikowego;
  • SPoT: ValidatedDeviceProfile, ApplicationState, SessionStateMachine, UiState, LatestValues, PollPlan;
  • read-only jest stanem domyślnym;
  • write wymaga Verified + trust + Armed + Healthy audit + prepare/confirm + durable prepare + dokładnie jednego write + bounded read-back;
  • zero retry write, zero rollback, zero auto-restore, zero motion/fault-reset/raw-PDU;
  • restore 1.0 wyłącznie dla allowlisty Normal przez ApprovedRestorePlan i RestoreOperationPermit;
  • każda zmiana przed candidate musi zachować fail-closed boundaries oraz pełne committed conformance evidence [PLAN 01] Zablokować architekturę modularnego monolitu Rust #1Create logical issue #6 commit #40.

Stan osiągnięty

Wynik audytu KISS / DRY / SPoA / SPoT / clean-code

Rdzeń bezpieczeństwa, transport, profile, polling, telemetry, write kernel i restore kernel są gotowe do dalszego hardeningu. Audyt wykazał jednak, że przed przejściem wyłącznie na sprzęt należy domknąć integrację produktu oraz kilka uproszczeń utrzymaniowych.

M6.5 — Dry-code completion & cleanup — AKTYWNE TERAZ

Ten etap nie wymaga fizycznego VFD.

  1. Backup / Diff / Restore — pełna integracja produktu

    • połączyć istniejący core [PLAN 17] Zbudować bezpieczny backup, semantyczny diff i ograniczony restore #17 z ApplicationState / effect boundary / production runtime;
    • zastąpić placeholder ekranu Backup / Diff / Restore realnym przepływem TUI;
    • zapewnić capture complete backup, semantic diff, prepare restore, jawne potwierdzenie, begin/step/finish/abort;
    • żadnej drugiej ścieżki write: wszystkie kroki restore nadal przez istniejący WriteCoordinator.
  2. Process-level dry E2E backup/restore

    • symulator/PTy oraz produkcyjna ścieżka composition root;
    • success + refusal + disconnect + OutcomeUnknown + audit failure;
    • dokładnie jeden write na krok, zero retry, zero rollback/resume;
    • potwierdzenie, że TUI nie może ominąć permit/trust/audit.
  3. Bus Diagnostics UI

    • zastąpić placeholder rzeczywistą projekcją istniejących statystyk RTU/poll/queues/timeouts/drops;
    • presentation-only, bez nowego stanu transportowego.
  4. SPoT session/write cleanup

    • ograniczyć RuntimeSessionControl / WriteSessionSnapshot do projekcji/cache stanu aplikacji;
    • SessionStateMachine pozostaje jedynym właścicielem decyzji o stanie sesji, authorization, audit health i operation;
    • brak drugiego mutable authority.
  5. KISS / DRY refactor bez zmiany semantyki

    • rozbić duże moduły implementacyjne (application.rs, poll.rs, ewentualnie wewnętrznie write_coordinator.rs) bez tworzenia nowych SPoT/SPoA;
    • scalić powtarzalne restore abort/finalize helpers;
    • uprościć powtarzalne reset/search flows w UiState;
    • nie deduplikować safety re-checków wykonywanych ponownie tuż przed write — ich powtórzenie jest wymaganiem bezpieczeństwa.
  6. Clean-code / docs cleanup

    • usunąć nieaktualne placeholder/status texty;
    • zaktualizować README ze stanu architecture bootstrap / pre-alpha;
    • uporządkować nazewnictwo UI i ograniczyć niepotrzebnie szeroki publiczny surface tam, gdzie można to zrobić bez ryzyka.

Kryterium zakończenia M6.5

  • Backup/Diff/Restore jest osiągalny z produkcyjnego TUI przez właściwe capability boundaries;
  • Bus Diagnostics nie jest placeholderem;
  • brak drugiego authority dla bus/write/session;
  • architecture checks zielone;
  • pełny CI zielony na Debian 13 amd64;
  • wszystkie dry/process E2E zielone;
  • 40/40 committed conformance pozostaje zielone i semantycznie nieosłabione.

BRAMKA SPRZĘTOWA — H1

Sprzęt wchodzi dopiero po zakończeniu M6.5. To jest pierwszy etap, którego nie da się wiarygodnie domknąć wyłącznie symulatorem/PTy.

H1 — zakup i przygotowanie stanowiska

Wymagane minimum:

  • komputer/runner Debian 13 amd64 z dostępem do rzeczywistego RS-485;
  • co najmniej 2 fizyczne VFD od 2 różnych producentów wraz z właściwymi manualami i znanym firmware/revision;
  • adaptery do późniejszej matrix: FTDI, CP210x, CH34x;
  • rzeczywisty native UART z kernelowym TIOCGRS485/TIOCSRS485 do obowiązkowej bramki native-RS485;
  • bezpieczne stanowisko: brak niekontrolowanego ruchu, właściwe odłączenie/LOTO/interlocks zgodnie z charakterem testowanego układu.

Brak sprzętu nie blokuje M6.5. Blokuje natomiast kwalifikację profili i rzeczywisty candidate 1.0.

M7.1 — Profile qualification na fizycznym sprzęcie

Po H1:

  1. ustalić finalny profil dla każdego wybranego VFD i exact semantic profile_hash;
  2. wykonać fizyczną kwalifikację każdego write-capable hash;
  3. utrwalić QualificationReportV1 związany z hardware model, firmware, manual revision i safe-write scope;
  4. utworzyć produkcyjny frozen QualificationIndexV1;
  5. nie używać release/fixtures/qualification-index-v1.json jako production evidence — fixture pozostaje tylko do testów infrastruktury.

Qualification report musi istnieć przed candidate buildem.

M7.2 — Candidate freeze i jeden prawdziwy draft

Po M7.1:

  • zamrozić toolchain, Cargo.lock, schemas, profiles, qualification index i workflows;
  • ustawić finalną wersję 1.0.0 oraz changelog;
  • utworzyć exact candidate commit;
  • uruchomić release-candidate-build dla Debian 13 amd64;
  • wszystkie dalsze testy pobierają wyłącznie assety tego draftu i weryfikują SHA-256;
  • lokalny rebuild nie jest dowodem candidate.

M7.3 — Exact-asset acceptance

Na dokładnych candidate assets:

M7.4 — Hardware candidate HIL / soak / adapter matrix

Na tym samym zamrożonym draft asset:

  • 24 h self-hosted soak Debian 13 amd64;
  • candidate HIL obu VFD;
  • 24 h read-only, identification, telemetry/faults, complete backup/diff;
  • kontrolowane manual write do dozwolonych klas;
  • restore wyłącznie Normal z permit;
  • disconnect/reconnect i fingerprint mismatch;
  • zero retry write, disarm oraz trwałe audit outcomes;
  • FTDI / CP210x / CH34x / native UART TIOCGRS485/TIOCSRS485;
  • raporty związane z exact candidate commit i asset SHA-256.

Candidate HIL jest drugim, odrębnym dowodem od wcześniejszej profile qualification.

M7.5 — Finalizer i approval

Po wszystkich raportach:

  • upload gate reports;
  • snapshot asset set S;
  • finalizer tworzy CandidateManifest jako jedyny końcowy asset po snapshotcie;
  • external manifest hash + protected approval;
  • finalny zbiór musi być dokładnie S ∪ {CandidateManifest}.

M7.6 — Publish 1.0

Skrócona kolejność wykonawcza

M0–M6 DONE → M6.5 dry-code completion/cleanup → H1 zakup/przygotowanie sprzętu → M7.1 profile qualification → M7.2 candidate 1.0.0 → M7.3 exact-asset acceptance → M7.4 HIL/soak/adapter matrix → M7.5 finalizer/approval → M7.6 publish → close #25/#26

Zakres poza 1.0

  • arm64 i inne systemy;
  • wiele aktywnych VFD/portów;
  • Modbus TCP/ASCII, CANopen, EtherCAT i inne protokoły;
  • raw register/PDU, broadcast, blind scan;
  • motion control i fault reset;
  • restore klas innych niż Normal;
  • network/server/cloud/update/plugin runtime;
  • GUI/mouse/Windows/macOS;
  • safety-rated guarantee.

Kryterium zamknięcia roadmapy

Roadmapa może zostać zamknięta dopiero po zakończeniu M6.5, wykonaniu fizycznych qualification/HIL wymaganych przez #25 oraz opublikowaniu VFD Lantern 1.0 Debian 13 amd64 z identycznym, zweryfikowanym asset setem candidate.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions