Skip to content

extdeps positioning restructure (findings 1–4, os de-grab-bag, hub-loose) - #7231

Merged
briansrls merged 5 commits into
mainfrom
session/quiet-stag-580-extdeps-restructure
Jul 25, 2026
Merged

briansrls merged 5 commits into
mainfrom
session/quiet-stag-580-extdeps-restructure

Conversation

@briansrls

@briansrls briansrls commented Jul 25, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Pure git mv + import repoint per docs/plans/extdeps-positioning-restructure.md — zero behavior change, zero service-name changes.

  • os/ de-grab-bag: systemd/ extracted; hostname/free/id → tools/; proc_meminfo → linux/; ubuntu_*install_media* → provisioning/; exec_arg_limit → exec/; os/ retains identity taxonomy only.
  • Finding 1: OpenSSH unified under extdeps/ssh/ (access/ssh + diagnostic/ssh).
  • Finding 2: diagnostic/ dissolved (edac → linux/, ipmi → bmc/); mock_corpus siblings split to match.
  • Finding 3: gnu_coreutils/diffutils → tools/; shell/ shrinks to exec/credentials seam; shell.dag + shell_mock_corpus.dag promoted LOOSE.
  • Finding 4: Hub files promoted LOOSE — tools.dag, os.dag (extdeps.os.os → extdeps.os), cache.dag (extdeps.cache.cache → extdeps.cache).

Rails honored: shell/exec.dag and shell/credentials.dag untouched; no service renames.

Test plan

  • Corpus-wide grep: no stale extdeps.os.os, extdeps.cache.cache, extdeps.diagnostic.*, or extdeps.access.ssh import paths remain
  • Directory layout verified: shell/ = {exec,credentials} only; os/ = identity leaves + ubuntu_autoinstall
  • CI floor (compile-clean gate + affected witnesses) — opted in by marking PR ready

Brian Searls and others added 2 commits July 25, 2026 16:58
Rehomes os/ grab-bag, dissolves diagnostic/, unifies ssh/, consolidates
gnu-userland under tools/, and promotes os/cache/tools hubs to LOOSE files
(extdeps.os.os → extdeps.os, extdeps.cache.cache → extdeps.cache) with
zero service-name changes.

Co-authored-by: Cursor <cursoragent@cursor.com>
@gunbai-bot gunbai-bot Bot changed the title extdeps positioning restructure — EXECUTE per docs/plans/extdeps-positioning-restructure.md (now on main): pure git mv + import repoint, os/ de-grab-bag + findings 1-4 (hub-loose), one PR. READ that doc first — it is the full authoritative brief + hard rails. extdeps positioning restructure (findings 1–4, os de-grab-bag, hub-loose) Jul 25, 2026
@gunbai-bot
gunbai-bot Bot marked this pull request as ready for review July 25, 2026 17:10
@gunbai-bot

gunbai-bot Bot commented Jul 25, 2026

Copy link
Copy Markdown
Contributor

Addressed review 42725: extdeps_shell_resolves_to_the_dag_authority in cli_run.rs now expects dag/extdeps/shell.dag (LOOSE hub), matching the shell.dag promotion in this PR. Verified locally via cargo test -p v1-compiler --lib module_path_index (22/22 green).

— sent from quiet-stag-580

Explicit imports in diagnostic_mock_totality_test broke the import-free
graft that supplies witness_template helpers. Move corpus reassembly to
extdeps.diagnostic.mock_corpus (LOOSE diagnostic_mock_corpus.dag, same
pattern as shell_mock_corpus.dag) and revert the test to import-free.

Co-authored-by: Cursor <cursoragent@cursor.com>
@briansrls
briansrls merged commit da78370 into main Jul 25, 2026
5 checks passed
@briansrls
briansrls deleted the session/quiet-stag-580-extdeps-restructure branch July 25, 2026 19:05
briansrls added a commit that referenced this pull request Jul 25, 2026
…y; meta-exec roster 3->0 + per-PR emptiness wall; census true-up

- host_runner_memory_cap_verify probed_at: retained_runtime shell.Exec.Run(date -Iseconds)
  -> typed extdeps.clock Clock.Now via gunbc.clock_read (host_converge_slice1 precedent).
  extdeps.shell import, retained_shell_script bridge and the transport-script scaffold all deleted.
  Refusal decision refactored to runner_memory_cap_verify_result_from_live_read so the
  read-absent arm is executable hermetically; RED control proves a widen fails.
- meta_exec_confinement_exception_roster 3 -> 0: tools/review.dag and ci_deploy_target_host.dag
  verified stale (0 shell.Exec); host_runner_memory_cap_verify dissolved above.
- Per-PR enforcement is a construction wall (empty roster => stale_count 0, no scan);
  live receipt measured 13.5s cold vs a 5s fast-lane budget, homed in the long lane
  with a non-degeneracy control.
- Census section 4/5 + ledger trued up to main (#7184/#7192/#7193/#7194/#7215/#7231/#7233).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
briansrls added a commit that referenced this pull request Jul 25, 2026
…; meta-exec roster 3→0 + per-PR emptiness wall (#7241)

* WIP: shell→dag bucket A cleanup (one PR): (1) host_runner_memory_cap_verify 2

* WIP: shell→dag bucket A cleanup (one PR): (1) host_runner_memory_cap_verify 2

* WIP: shell→dag bucket A cleanup (one PR): (1) host_runner_memory_cap_verify 2

* WIP: shell→dag bucket A cleanup (one PR): (1) host_runner_memory_cap_verify 2

* WIP: shell→dag bucket A cleanup (one PR): (1) host_runner_memory_cap_verify 2

* shell->dag bucket A: last shell.Exec off host_runner_memory_cap_verify; meta-exec roster 3->0 + per-PR emptiness wall; census true-up

- host_runner_memory_cap_verify probed_at: retained_runtime shell.Exec.Run(date -Iseconds)
  -> typed extdeps.clock Clock.Now via gunbc.clock_read (host_converge_slice1 precedent).
  extdeps.shell import, retained_shell_script bridge and the transport-script scaffold all deleted.
  Refusal decision refactored to runner_memory_cap_verify_result_from_live_read so the
  read-absent arm is executable hermetically; RED control proves a widen fails.
- meta_exec_confinement_exception_roster 3 -> 0: tools/review.dag and ci_deploy_target_host.dag
  verified stale (0 shell.Exec); host_runner_memory_cap_verify dissolved above.
- Per-PR enforcement is a construction wall (empty roster => stale_count 0, no scan);
  live receipt measured 13.5s cold vs a 5s fast-lane budget, homed in the long lane
  with a non-degeneracy control.
- Census section 4/5 + ledger trued up to main (#7184/#7192/#7193/#7194/#7215/#7231/#7233).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Brian Searls <briansrls@gunb.ai>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
gunbai-bot Bot pushed a commit that referenced this pull request Sep 3, 2026
…ero-consumer ruling request

The census's §5.A table still read `extdeps.os.id` as a NEW op at
`dag/extdeps/os/id.dag` -- the stale row a survey read as "still pending". The
op landed on #7194 at its post-#7231 home `dag/extdeps/tools/id.dag` (module
`extdeps.tools.id`, service `os.Id`, ops `Uid`/`Gid`/`Lookup`), hermetic witness
`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`).
The row now says so, cited by module and symbol rather than position, and the
consumer column states the true status: `host_effect_realize`'s ssh probes
already consume the typed argv rows `id_uid_argv`/`id_gid_argv` (absolute-path
variants), and `fleet_posix_accounts` `probe_command` is NOT-a-shell-site
(census §4 row) -- authored provenance, live proof `deploy_access_check_observed`.

The same PR files a ruling request, not a deletion: `id_lookup_argv` (the
`id <user>` verb) has zero production references -- measured denominator, grep
of `dag/` + `src/v2/test/` at `75873c2897`: the definition, the hermetic-witness
call, and service-name rows in the effect-plan tests, nothing more. Zero
references is not deadness in this repo (env-gated and emitted-path consumers
exist that grep does not see), and the row's named consumers are reclassified
(`fleet_posix_accounts` -- NOT-a-shell-site) or deferred
(`spark/managed_access_apply` create-script bodies -- dissolve-on marker, no
operator verdict). Retain-as-reserved or retire is the operator's call; the row
records the measured denominator and asks for it.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
gunbai-bot Bot pushed a commit that referenced this pull request Sep 3, 2026
…ero-consumer ruling request

The census's §5.A table still read `extdeps.os.id` as a NEW op at
`dag/extdeps/os/id.dag` -- the stale row a survey read as "still pending". The
op landed on #7194 at its post-#7231 home `dag/extdeps/tools/id.dag` (module
`extdeps.tools.id`, service `os.Id`, ops `Uid`/`Gid`/`Lookup`), hermetic witness
`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`).
The row now says so, cited by module and symbol rather than position, and the
consumer column states the true status: `host_effect_realize`'s ssh probes
already consume the typed argv rows `id_uid_argv`/`id_gid_argv` (absolute-path
variants), and `fleet_posix_accounts` `probe_command` is NOT-a-shell-site
(census §4 row) -- authored provenance, live proof `deploy_access_check_observed`.

The same PR files a ruling request, not a deletion: `id_lookup_argv` (the
`id <user>` verb) has zero production references -- measured denominator, grep
of `dag/` + `src/v2/test/` at `739f1a548f` (post-#10211): the definition, the
hermetic-witness call, and service-name rows in the effect-plan tests, nothing
more. Zero references is not deadness in this repo (env-gated and emitted-path
consumers exist that grep does not see), and the row's named consumers are
reclassified (`fleet_posix_accounts` -- NOT-a-shell-site) or deferred
(`spark/managed_access_apply` create-script bodies -- dissolve-on marker, no
operator verdict). Retain-as-reserved or retire is the operator's call; the row
records the measured denominator and asks for it.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
briansrls pushed a commit that referenced this pull request Sep 3, 2026
…ero-consumer ruling request (#10233)

* Mark the §5.A extdeps.os.id row landed, and file the id_lookup_argv zero-consumer ruling request

The census's §5.A table still read `extdeps.os.id` as a NEW op at
`dag/extdeps/os/id.dag` -- the stale row a survey read as "still pending". The
op landed on #7194 at its post-#7231 home `dag/extdeps/tools/id.dag` (module
`extdeps.tools.id`, service `os.Id`, ops `Uid`/`Gid`/`Lookup`), hermetic witness
`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`).
The row now says so, cited by module and symbol rather than position, and the
consumer column states the true status: `host_effect_realize`'s ssh probes
already consume the typed argv rows `id_uid_argv`/`id_gid_argv` (absolute-path
variants), and `fleet_posix_accounts` `probe_command` is NOT-a-shell-site
(census §4 row) -- authored provenance, live proof `deploy_access_check_observed`.

The same PR files a ruling request, not a deletion: `id_lookup_argv` (the
`id <user>` verb) has zero production references -- measured denominator, grep
of `dag/` + `src/v2/test/` at `75873c2897`: the definition, the hermetic-witness
call, and service-name rows in the effect-plan tests, nothing more. Zero
references is not deadness in this repo (env-gated and emitted-path consumers
exist that grep does not see), and the row's named consumers are reclassified
(`fleet_posix_accounts` -- NOT-a-shell-site) or deferred
(`spark/managed_access_apply` create-script bodies -- dissolve-on marker, no
operator verdict). Retain-as-reserved or retire is the operator's call; the row
records the measured denominator and asks for it.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

* Retire id_lookup_argv on structural ruling, and correct the overstated §5.A row

RULING (2026-09-03): retire extdeps.tools.id.id_lookup_argv. No measured
production consumer; the semantic os.Id.Lookup already names the intended
request; a future consumer should consume IdLookup/IdInvocation and choose an
SSH realization, not resurrect a raw List<String> argv helper. Keeping it
"reserved" would preserve the lower-level interface the migration exists to
make unavailable — a future need is the trigger to add a typed remote
realization, not evidence that the helper should survive.

Deleted from dag/extdeps/tools/id.dag. The module's sole production import
(dag/gunbc/host/host_effect_realize.dag:69) imports id_uid_argv, id_gid_argv
and id_binary_path only — no reference to id_lookup_argv exists in the code
tree. The witness (test.claim.shell_dag_census_5a_typed_ops_witness,
witness_os_id_lookup_realizes_hermetically) exercises os.Id.Lookup, the
semantic op — NOT the deleted argv helper — and is unchanged.

CORRECTION (second finding): the §5.A row overstated by claiming "Done" when
the hermetic operation witnesses had landed but the model-before-implement
scope (call-site migration a later lane, the superseded argv/string path still
standing, remaining SSH callers dispositioned independently) does not support
that word. The row now says honestly: "operation model + hermetic operation
witnesses have landed" and explicitly what is NOT done instead of claiming
closure.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

* Fix ruling record: point future consumers at the real canonical symbol

The ruling record directed future consumers to `IdLookup`/`IdInvocation`,
neither of which exists in the tree. `os.Id.Lookup` is the actual semantic
operation — cite it directly, with the two plausible typed SSH-realization
paths (`ssh.Session.ExecArgv` on `id <user>`, or a full `IdLookup` invocation
modeled on the `os.Hostname.Set`/`HostnameSetInvocation` pattern) so a
migration worker is not left to guess. No changed symbols or fabricated
interfaces. DESIGN §3 single-authority and "cite the symbol" rules satisfied.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

---------

Co-authored-by: Brian Searls <briansearls1@gmail.com>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant