diff --git a/dag/extdeps/tools/id.dag b/dag/extdeps/tools/id.dag index 8b44dbfdb17..3f4b454c387 100644 --- a/dag/extdeps/tools/id.dag +++ b/dag/extdeps/tools/id.dag @@ -25,10 +25,6 @@ fn id_gid_argv() -> List { ["id", "-g"] } -fn id_lookup_argv(user: NonEmptyStr) -> List { - ["id", user as String] -} - service os.Id { operation Uid { input {} diff --git a/docs/plans/shell-to-dag-residual-census-and-arc-completion.md b/docs/plans/shell-to-dag-residual-census-and-arc-completion.md index a4f8b980ec3..e7cea7629c0 100644 --- a/docs/plans/shell-to-dag-residual-census-and-arc-completion.md +++ b/docs/plans/shell-to-dag-residual-census-and-arc-completion.md @@ -782,10 +782,12 @@ What the trigger does **not** discharge is the **existing** rows: the wall stops | --- | --- | --- | --- | | `extdeps.os.hostname` · ~~`Read`~~ **LANDED** + `Set` | `dag/extdeps/os/hostname.dag` (created) | ~~`hostname -s`~~ **done**; `hostnamectl set-hostname` remains | **Read done** — `os.Hostname.ReadShort` realized via typed cell `HostnameReadOnHost` + `gunbc.hostname_read` (LocalShell → op, SshShell → typed argv); both read consumers dissolved: `host_identity_observation` (`HostIdentityShortHostnameRead`, the `host_identity_short_hostname_script` concat DELETED) and `ci_deploy_target_host` (runtime-present read; the GHA preflight *block* stays E-emit). **Set** (`host_effect_hostname` `SetHostnameCas`, its own `host_effect_set_hostname_cas_script` concat) still pending — reuses this op file with a `SetHostname` op. | | `systemd.Systemctl.ListUnits` | **add to** `dag/extdeps/os/systemctl.dag` | `systemctl list-units --state=active` | `host_converge_slice1` (was `_enumerate_units_script`; now calls `systemctl_list_units_active_services` at `:287`). *The `fleet_show_effective_read` consumer named here — `fleet_runner_width_count_read_script` — was never migrated: it was superseded and left dead, and is deleted by the 2026-07-26 true-up.* | -| `extdeps.os.id` · `Read` (uid/gid/user) | **new** `dag/extdeps/os/id.dag` | `id -u`, `id -g`, `id ` | `host_effect_realize` (ssh probes), `fleet_posix_accounts` (`probe_command`) | +| `extdeps.os.id` · `Read` (uid/gid/user) — **ops landed; row NOT done** | `dag/extdeps/tools/id.dag` (created; landed #7194; post-#7231 home) | `id -u`, `id -g`, `id ` — service `os.Id` ops `Uid`/`Gid`/`Lookup` | **Operation model + hermetic operation witnesses have landed** (`test.claim.shell_dag_census_5a_typed_ops_witness`, `witness_os_id_uid_realizes_hermetically`, `witness_os_id_gid_realizes_hermetically`, `witness_os_id_lookup_realizes_hermetically`; declared scope is model-before-implement, call-site migration §5.B a later lane). **NOT "Done"** — that word requires the production consumers to have moved AND the superseded string/argv path to be deleted. Remaining argv/SSH callers are dispositioned independently, not by this row: `host_effect_realize` srv3 probes (raw argv rows `extdeps.tools.id.id_uid_argv`/`id_gid_argv`, absolute-path variants), `fleet_posix_accounts` `probe_command` (NOT-a-shell-site, §4), `spark/managed_access_apply` (deferred, dissolve-on). `id_lookup_argv` RETIRED by ruling (below). | | `ssh.Session.ExecArgv` | **add to** `dag/extdeps/diagnostic/ssh.dag` | typed argv over ssh (`ssh host -- argv`) | `host_effect_realize` ssh probes — **IN FLIGHT, C5 #6946** | | `systemd.Systemctl.Status` | **add to** `dag/extdeps/os/systemctl.dag` | `systemctl status --no-pager --full ` (models exit-3-for-dead-unit — retires the `\| tail`+`exit 0` absorbing fallback) | `live_deploy/readiness.dag` unit diagnosis | +**RULING — `extdeps.tools.id.id_lookup_argv` RETIRED and deleted (ruled 2026-09-03).** The retirement is on the ruling, not on the zero-reference count: `os.Id.Lookup` (the semantic operation) already names the intended request; a future consumer should consume `os.Id.Lookup` and choose a typed SSH realization (`ssh.Session.ExecArgv` on the `id` binary with a `{user}` argument, or an `IdLookup` invocation modeled on the `os.Hostname.Set`/`HostnameSetInvocation` pattern) — not resurrect a raw `List` argv helper because it sat in inventory. Keeping it "reserved" would preserve exactly the lower-level interface the migration exists to make unavailable. The measured denominator (filed 2026-09-03) found no production reference — the §5.A witness calls `os.Id.Lookup`, NOT this helper — but a future need is the trigger to add a typed remote realization, not evidence that the helper should survive. + That is the entire new-modeling surface. (A sixth, optional: a typed stdout/receipt emit for the two `echo ` sites, or reuse `Filesystem.Write`.) The healthz probe needs **no** new op — `http.Client.Get` already exists. ### 5.B — CALL AN EXISTING OP (receipt: the op is already modeled on main)