You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The public design and roadmap now treat operator-authored IPv6 remotes as shipped in iter-030, while keeping domain-valued remotes and non-systemd refresh as explicit future slices.
Constraint: The docs guide future feature ordering for DNS and proxy-core work, so current network-policy residuals must be precise.\nRejected: Keep operator IPv6 grouped with domain remotes | IPv6 remotes are now compiled from canonical addresses, while domain remotes still require DNS set semantics.\nConfidence: high\nScope-risk: narrow\nDirective: Keep Design 05 residuals split by trust model: literal/CIDR IP remotes are not the same as DNS-backed domain remotes.\nTested: git diff --check\nNot-tested: Rendered documentation site; docs are markdown-only in this repo.
Copy file name to clipboardExpand all lines: docs/PRODUCT-VISION.md
+3-2Lines changed: 3 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -22,7 +22,8 @@
22
22
> plan-hash binding for pending high-risk approvals landed in iter-025; the
23
23
> control-plane HTTPS-domain nft named set landed in iter-026; the agent-native
24
24
> nft domain-set updater landed in iter-027; systemd periodic refresh landed in
25
-
> iter-028; IPv6 control-plane parity landed in iter-029. See
25
+
> iter-028; IPv6 control-plane parity landed in iter-029; operator-authored IPv6
26
+
> policy remotes landed in iter-030. See
26
27
> `designs/README.md` for the remaining cross-cutting dependencies and
27
28
> recommended build order.
28
29
@@ -44,7 +45,7 @@ The bar is not "works." The bar is **惊艳 — a product that makes a self-host
44
45
45
46
## 3. Honest current state (2026-06-13)
46
47
47
-
Delivered and pushed: control plane + node agent + SDK + dashboard across 6 repos; security hardening; DDNS, monitoring, notifications, WireGuard mesh, CF Tunnel; plugin manifest/signing + loader + preflight verify + host-API broker/server adapter + lifecycle registry/API + dashboard panel + runtime manager + runner contract; TOTP 2FA; tamper-evident audit WAL; node-token rotation; bounded task execution; **AES-256-GCM at-rest encryption** (ADR-002); bbolt state import/export foundation with explicit JSON migration/rollback CLI and record-level APIs for current state buckets, including secret-bearing identity/auth/DDNS/notify/OIDC/MachineProfile records and non-secret `NFTInputs`/`NetPolicy`/operator `NodeGeo`; low-trust `HostFacts` inventory telemetry from node-agent through server to dashboard; server-only MachineProfile cost/renewal reminders with encrypted console/detail links and a Machines dashboard panel; shared per-node nft input persistence for DNS/ACL single-table rendering; Design 05 `NetPolicy` state/API/graph/dashboard; the committed egress-only nft policy apply path with plan-hash approval, 60s rollback watchdog, agent `/api/health` selfcheck, result-backed applied/failed status, HTTPS-domain IPv4/IPv6 control-plane named-set support, an agent-native domain-set updater, and systemd periodic refresh for those sets; Network Guard `lattice_guard` apply with rollback and ingress-policy composition; required dashboard-computed plan hashes for pending high-risk approvals; a dependency-free dashboard Fleet Map driven by operator-owned geo facts; and dashboard policy-graph SVG driven by server graph JSON. Minimal external Go deps are currently limited to the OIDC stack approved in ADR-001 (`oauth2`, `go-oidc`, transitive `go-jose`) plus bbolt for Phase C storage; still zero CGo. The 2026-06-13 closeout baseline is recorded in `development-report-2026-06-13.md`, with iter-029 as the current netpolicy domain-set delta.
48
+
Delivered and pushed: control plane + node agent + SDK + dashboard across 6 repos; security hardening; DDNS, monitoring, notifications, WireGuard mesh, CF Tunnel; plugin manifest/signing + loader + preflight verify + host-API broker/server adapter + lifecycle registry/API + dashboard panel + runtime manager + runner contract; TOTP 2FA; tamper-evident audit WAL; node-token rotation; bounded task execution; **AES-256-GCM at-rest encryption** (ADR-002); bbolt state import/export foundation with explicit JSON migration/rollback CLI and record-level APIs for current state buckets, including secret-bearing identity/auth/DDNS/notify/OIDC/MachineProfile records and non-secret `NFTInputs`/`NetPolicy`/operator `NodeGeo`; low-trust `HostFacts` inventory telemetry from node-agent through server to dashboard; server-only MachineProfile cost/renewal reminders with encrypted console/detail links and a Machines dashboard panel; shared per-node nft input persistence for DNS/ACL single-table rendering; Design 05 `NetPolicy` state/API/graph/dashboard; the committed egress-only nft policy apply path with plan-hash approval, 60s rollback watchdog, agent `/api/health` selfcheck, result-backed applied/failed status, HTTPS-domain IPv4/IPv6 control-plane named-set support, an agent-native domain-set updater, systemd periodic refresh for those sets, and operator-authored IPv6 CIDR/node remotes; Network Guard `lattice_guard` apply with rollback and ingress-policy composition; required dashboard-computed plan hashes for pending high-risk approvals; a dependency-free dashboard Fleet Map driven by operator-owned geo facts; and dashboard policy-graph SVG driven by server graph JSON. Minimal external Go deps are currently limited to the OIDC stack approved in ADR-001 (`oauth2`, `go-oidc`, transitive `go-jose`) plus bbolt for Phase C storage; still zero CGo. The 2026-06-13 closeout baseline is recorded in `development-report-2026-06-13.md`, with iter-030 as the current netpolicy delta.
48
49
49
50
The three gaps that most separate us from 惊艳, in dependency order: **identity policy polish**, **the platform actually running plugins**, and **a storage engine that scales** — plus a **dashboard worthy of the backend**.
@@ -33,7 +34,7 @@ new build slice becomes a numbered `iterations/iter-NNN-*.md` (per
33
34
| 02 |[Self-hosted DNS](design-02-self-host-dns.md)| One-click private DNS on a chosen node + CF subdomain (gmami-jp1.dns.roobli.org) auto-updated via DDNS + nft-confined | CORE `internal/selfdns`; **pure-Go CoreDNS** (digest-pinned) via plan→approve→apply; reuses `internal/ddns` (CF) + shared `NFTInputs`|
34
35
| 03 |[Log ingestion & query](design-03-log-ingestion.md)| Tail an operator-specified log path on a node → queryable store for debugging | Agent tails + ships deltas; **NOT on the JSON store** — a dedicated bounded append-only per-node log store (relates to the bbolt foundation); query API + dashboard |
0 commit comments