v3: advance baseline through v1.4.1#335
Closed
vicondoa wants to merge 14 commits into
Closed
Conversation
Define parent-owned workload-hosted realm controllers, type-first provider interfaces, Entra and YubiKey credential boundaries, and policy-authorized shared-relay shortcuts.
* workloads: add provider-neutral launch and status ( W2 ) Resolve configured launcher items exclusively from bundle-hashed private metadata, route local VM and unsafe-local providers through their authenticated runtimes, and expose feature-negotiated workload list/status/launch through d2bd and the Rust CLI. Bundle format 11 extends trusted configured items to local VM workloads while public metadata remains argv-free. Copilot-Session: 354dd249-397d-4ae2-ab02-f451bef0f5fb * contracts: normalize generated workload artifacts ( W2 ) Regenerate bundle, wire, CLI schema, completion, manpage, daemon API, and evaluated bundle-version outputs, while normalizing generated manpage trailing whitespace and keeping test-only routing helpers out of production dead-code warnings. Copilot-Session: 354dd249-397d-4ae2-ab02-f451bef0f5fb * tests: expect bundle format 11 ( W2 ) Align the hashed configured-workload bundle resolver assertion with the provider-neutral local-VM item extension. Copilot-Session: 354dd249-397d-4ae2-ab02-f451bef0f5fb * unsafe-local: expose helper availability correctly ( W2 ) Keep availability and last-failure accessors as sibling registry methods so workload status can compile and report typed helper prerequisites. Copilot-Session: 354dd249-397d-4ae2-ab02-f451bef0f5fb * metrics: use approved workload outcome labels ( W2 ) Reuse the bounded outcome label vocabulary for workload lifecycle counters and assert exact sensitive label keys rather than matching OpenMetrics metadata substrings. Copilot-Session: 354dd249-397d-4ae2-ab02-f451bef0f5fb * tests: scope workload dashboard redaction ( W2 ) Inspect only the provider workload panels so unrelated pre-existing dashboard content cannot satisfy or invalidate the workload telemetry redaction contract. Copilot-Session: 354dd249-397d-4ae2-ab02-f451bef0f5fb * workloads: isolate launch ledger capacity per uid ( W2 ) Bound active and completed launch history per authenticated requester, expire stale entries, and prevent one stalled helper generation from exhausting launch capacity for every authorized user. Copilot-Session: 354dd249-397d-4ae2-ab02-f451bef0f5fb * workloads: keep inventory provider-neutral ( W2 ) List every direct-local workload regardless of launcher enablement, reject disabled launchers only at exec dispatch, and centralize provider routing so unsafe-local targets can never be coerced to VM names. Copilot-Session: 354dd249-397d-4ae2-ab02-f451bef0f5fb * workloads: scope helper failures by target ( W2 ) Track unsafe-local launch prerequisites per authenticated uid and canonical workload target so one graphical failure cannot degrade every local workload in that user session. Copilot-Session: 354dd249-397d-4ae2-ab02-f451bef0f5fb * workloads: close launch contract gaps ( W2fu1 H1 H2 H3 H4 H5 H6 H7 H8 ) Close H1 by preserving legacy VM resolution for shell/exec and using the trusted legacy binding for launch shell items; H2/H3 by normalizing nullable local-VM metadata and asserting private artifact mode; H4-H7 with target/item ambiguity, direct-local placement, feature-skew, and typed-remediation coverage; and H8 by documenting every bounded workload metric label. Grouping keeps the provider-neutral launch contract reviewable end to end. Copilot-Session: 354dd249-397d-4ae2-ab02-f451bef0f5fb * tests: pin bundle format 11 case ( W2fu1 H2 H3 ) Align the fail-closed nix-unit inventory with the renamed private configured-item materialization contract. Copilot-Session: 354dd249-397d-4ae2-ab02-f451bef0f5fb * tests: borrow generated workload targets ( W2fu1 H4 H5 ) Pass formatted canonical target fixtures through the parser\x27s borrowed-string API in CLI selection and direct-local placement coverage. Copilot-Session: 354dd249-397d-4ae2-ab02-f451bef0f5fb * tests: use gateway VM placement variant ( W2fu1 H5 ) Exercise remote realm denial with the canonical controller placement enum used by the committed DTO. Copilot-Session: 354dd249-397d-4ae2-ab02-f451bef0f5fb * workloads: make launch idempotency restart-stable ( W2fu2 H1 H2 ) Close H1 by releasing helper operation reservations on timeout, channel failure, and mismatched replies. Close H2 by deriving an opaque local-VM exec id from authenticated launch identity, forwarding it in guest request metadata, and replaying guestd\x27s durable detached record only when the trusted argv hash matches. Copilot-Session: 354dd249-397d-4ae2-ab02-f451bef0f5fb * tests: keep detached list assertions with creator ( W2fu2 H2 ) Preserve the existing create/list scope while adding deterministic replay coverage as a separate test. Copilot-Session: 354dd249-397d-4ae2-ab02-f451bef0f5fb * workloads: close replay allocation race ( W2fu3 H1 H2 ) Remove pending helper requests on every failed completion path, and recheck requested guest exec ids and tombstones while holding the slot-allocation lock so concurrent same-id creates cannot reserve duplicate slots. Copilot-Session: 354dd249-397d-4ae2-ab02-f451bef0f5fb * nix: normalize configured workload artifacts ( W2fu4 L1 L2 ) Align the local-VM private emitter and workload dashboard panels with surrounding Nix and JSON structure, and use the canonical outcome vocabulary in panel description text. Copilot-Session: 354dd249-397d-4ae2-ab02-f451bef0f5fb * docs: correct workload state cardinality ( W2fu5 L1 ) Include the explicit not-applicable sentinel alongside the eight WorkloadAvailability values in the metric bound. Copilot-Session: 354dd249-397d-4ae2-ab02-f451bef0f5fb * audit: correlate configured workload launches ( W2fu6 H1 H2 ) Record the authenticated peer uid on every workload-launch boundary and emit the standard detached-create audit with the durable opaque exec id for local-VM launches, without adding argv, environment, cwd, paths, or output. Copilot-Session: 354dd249-397d-4ae2-ab02-f451bef0f5fb * tests: cover configured launch audit wiring ( W2fu7 H1 H2 H3 ) Verify idempotent detached creation forwards the guest request id, local-VM launcher source wiring emits detached-create audit with the returned exec id, and the local-vm workload provider serializes canonically without execution details. Copilot-Session: 354dd249-397d-4ae2-ab02-f451bef0f5fb * audit: join workload and detached execution events ( W2fu8 M1 ) Carry the public operation id on every configured-launch event and the durable guest exec id on local-VM outcomes, creating a shared correlation key with detached-create audit while keeping execution details redacted. Copilot-Session: 354dd249-397d-4ae2-ab02-f451bef0f5fb * workloads: return provider launch audit context ( W2fu8 M1 ) Keep unsafe-local dispatch returning its wire disposition while local-VM dispatch also returns the durable exec id needed for audit correlation. Copilot-Session: 354dd249-397d-4ae2-ab02-f451bef0f5fb * workloads: document and support first-class local VMs ( W2fu9 H1 H2 H3 H4 H5 H6 ) Close the launch reference gaps with full synopsis/flags/arguments/exit/JSON documentation; preserve existing first-class local-VM semantics by using workload id when legacyVmName is absent instead of rejecting valid evals; and update AGENTS.md for bundle v11 configured items plus launcher-authorized detached guest-control execution. Copilot-Session: 354dd249-397d-4ae2-ab02-f451bef0f5fb * workloads: finish first-class local VM routing ( W2fu10 H1 H2 H3 H4 ) Close the four remaining first-class local-VM findings as one coherent contract correction: CLI shell dispatch and direct-local routing now use the workload id when no legacy binding exists, while schema prose and Nix artifact coverage assert the same rule. * guestd: coalesce detached create replays ( W2fu11 H3 ) * helper: preserve launch idempotency and fd ownership ( W2fu11 H1 H2 M1 ) This coherent batch closes the helper duplicate-launch, timeout ambiguity, and fd-ownership findings. Reservations now precede side effects, ambiguous timeouts remain bounded and non-retryable, and received terminal descriptors are RAII-owned and validated before duplication. * daemon: make workload signals coherent ( W2fu11 H4 H5 H8 H9 H10 H11 M3 L1 ) Batch these findings because inventory aggregation, launch-result accounting, and their authorization/runtime tests share one workload dispatch boundary. Atomic bounded gauge replacement prevents stale or last-row-wins state, while centralized launch outcomes ensure pre-dispatch refusals and backend results emit exactly once without exposing execution details. * workloads: harden private artifact emission ( W2fu11 H6 H7 M2 L2 ) Close H6/H7, M2, and L2 together because the eval predicate, private emitter, Rust allocation bounds, generated schema, and CLI fallback coverage form one reviewable artifact contract. Exclude compatibility-only local VM launcher metadata, reject included configured launches without supported private items, filter unsupported item kinds, split unsafe-local and local-VM limits, and remove the duplicate test-only route helper. * workloads: preserve unsafe-local workload capacity ( W2fu11 M2 ) Keep the existing 256-row unsafe-local limit while bounding local-VM configured launch independently at 256. The initial split incorrectly reduced an established contract to 16. * guestd: satisfy replay lint gate ( W2fu11 H3 ) Pass borrowed detached-create inputs directly so the workspace warnings-denied Clippy gate accepts the coalesced replay helper. * docs: fix workload metric heading levels ( W2fu12 L1 ) Remove accidental list indentation so both workload metric contracts render as first-class reference sections. --------- Co-authored-by: John Vicondoa <vicondoa@users.noreply.github.com>
* contracts: define unsafe-local persistent shell wire v2 ( W3 ) Complete the install-together helper contract before runtime dispatch lands. Keep public protocol v3 and terminal protocol v1 while making management correlation, terminal framing, restart snapshots, and skew rejection explicit and bounded. * contracts: defer unsafe-local shell advertisement ( W3 ) Let clients recognize the additive feature token while keeping daemon negotiation fail-closed until the stacked runtime dispatch slice lands. --------- Co-authored-by: John Vicondoa <vicondoa@users.noreply.github.com>
* unsafe-local: supervise persistent host shells ( W3 ) Keep each PTY and login shell under a reconnectable same-UID supervisor so helper and daemon reconnects cannot destroy session ownership. Bound rings, workers, sockets, and descriptor transfer while preserving exact verified-scope teardown. * unsafe-local: serialize terminal control operations ( W3 ) Preserve wire order for input offsets and control sequences while leaving bounded read and wait observations concurrent. * ci: refresh helper stack checks ( W3 ) --------- Co-authored-by: John Vicondoa <vicondoa@users.noreply.github.com>
* shell: wire unsafe-local sessions through d2bd ( W3 ) * shell: harden feature and helper correlation ( W3 ) Use one helper request-id namespace across launches and shells, require negotiated unsafe-local shell support after admin auth, redact unresolved audit targets, and forbid canonical-target fallback to a VM. * shell: satisfy negotiated-route lint gate ( W3 ) Pass the borrowed server state directly when checking whether a shell target requires unsafe-local feature negotiation. * shell: harden late replies and idle supervision ( W3fu1 H1 H2 M1 ) Close the terminal-late-response, real-CLI KVM coverage, and idle poll findings together because they validate the same end-to-end attachment lifecycle. Retain an evicted-abandon watermark, block idle PTY/listener loops in poll, and exercise the actual Rust CLI through a pseudo-terminal. * shell: satisfy late-reply lint gate ( W3fu1 H1 ) Collapse the bounded abandoned-request eviction condition for the warnings-denied workspace gate. * tests: wait for real shell CLI readiness ( W3fu1 H2 ) Avoid mistaking local PTY echo for remote shell output by waiting for the attach boundary, disabling remote echo, and then proving command output before detaching. * cli: resolve direct shells before gateway routing ( W3fu1 H2 ) Consult the daemon workload inventory for canonical direct-local shells before applying realm-gateway routing, while preserving gateway fallback when no direct workload exists. The KVM PTY driver now waits for actual attachment and non-echoed remote output. * cli: default invalid PTY shell geometry ( W3fu1 H2 ) Treat zero or out-of-range host terminal dimensions as unavailable and use the documented 24x80 attach default instead of forwarding an invalid helper request. * tests: detach real shell CLI through signals ( W3fu1 H2 ) Drive the CLI signal-handling detach path after proving remote non-echoed output; the detach escape state machine remains covered hermetically without pseudo-terminal flow-control interference. * shell: make lifecycle observability exactly once ( W3fu2 H1 H2 H3 H4 ) Close the four observability findings as one coherent accounting fix: resolved execution failures retain canonical targets, resolution and capability failures emit metric/audit pairs, and runtime paths emit only the provider-neutral shell audit event. Preserve bounded force intent on unified attach records. * shell: close unified audit contract gaps ( W3fu3 H1 H2 H3 H4 ) Close the feature-refusal accounting and three audit-contract documentation findings together: negotiated unsafe-local refusals now emit one resolved metric/audit pair, ShellLifecycle is the sole runtime enum, optional force is documented, and source guards prevent legacy reintroduction. * tests: stabilize terminal fd cleanup check ( W3fu4 ) Allocate cleanup-probe descriptors from a high bounded range so parallel tests cannot immediately reuse their raw numbers and falsify EBADF assertions. * docs: name the sole shell lifecycle event ( W3fu5 L1 L2 ) Align the unsafe-local reference with the daemon API by naming ShellLifecycle as the sole runtime event and marking operation/session correlation digests optional. --------- Co-authored-by: John Vicondoa <vicondoa@users.noreply.github.com>
…297) * unsafe-local: supervise graphical proxy and app ( W6 ) * unsafe-local: harden live graphical supervision ( W6 ) * clipboard: wait for picker focus restoration ( W6 ) * clipboard: align paste replay virtual keyboard ( W6 ) * clipboard: preserve paste keycode through proxies ( W6 ) * docs: refresh daemon API source links ( W6 ) * test: migrate host realm isolation fixture ( W6 ) * docs: document helper group relog requirement ( W6fu1 H1 ) * docs: align WeezTerm input guidance ( W6fu1 H4 ) * daemon: fingerprint unsafe-local realm accent ( W6fu2 H1 ) * helper: reap workload on ack failure ( W6fu4 H1 ) * test: cover runtime path and display bounds ( W6fu4 H2 H3 H4 ) * release: prepare 1.4.0 --------- Co-authored-by: John Vicondoa <vicondoa@users.noreply.github.com>
Co-authored-by: John Vicondoa <vicondoa@users.noreply.github.com>
Auto-generated by release-host-binaries.yml after publishing GitHub Release v1.4.0. Consumers: `nix flake update d2b` to pick up pre-built binaries. Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: John Vicondoa <vicondoa@users.noreply.github.com>
Rename ADR 0045 to Provider and transport framework, define generic byte transports plus Noise/ttrpc component sessions, and preserve parent-owned controller and shared-fabric invariants. Also reconcile shell-supervisor cleanup and launch authorization regressions exposed by the latest-main integration.
* test: isolate mkfs diagnostic bounds * test: separate output and EOF wakeups * test: confirm EOF at the returned cursor --------- Co-authored-by: John Vicondoa <vicondoa@users.noreply.github.com>
* test: isolate mkfs diagnostic bounds * test: separate output and EOF wakeups * test: confirm EOF at the returned cursor * test: isolate parallel scratch and fd identity --------- Co-authored-by: John Vicondoa <vicondoa@users.noreply.github.com>
* unsafe-local: fix persistent shell terminal environment * release: prepare 1.4.1 * test: tolerate unrelated fd number reuse --------- Co-authored-by: John Vicondoa <vicondoa@users.noreply.github.com>
Auto-generated by release-host-binaries.yml after publishing GitHub Release v1.4.1. Consumers: `nix flake update d2b` to pick up pre-built binaries. Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Owner
Author
|
Superseded: repository topology is being reset so both main and v3 point directly at 9cc7db2 before ADR 0046 is rebased. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Dependency: none
Base: v3 @ b5ddbed
Required baseline: 9cc7db2
Head: 7fe85b1
Tree: 1a22b4c27ddb72d76d695ce569bf2277b420bebf
Checks: