Skip to content

FCI-1P2: unify fabric base-directory plan and apply - #9712

Merged
gunbai-bot[bot] merged 6 commits into
mainfrom
session/deep-lark-121
Aug 30, 2026
Merged

gunbai-bot[bot] merged 6 commits into
mainfrom
session/deep-lark-121

Conversation

@briansrls

@briansrls briansrls commented Aug 30, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Supersedes #9709, whose implementation already landed independently as #9702 and whose branch now conflicts with FCI-1A.

The committed srv3 sudoers projection is unchanged: SHA-256 c80f6c02f9c157f4c8bc8006053e4cccde158d97e3d00a51202ee7b844e619f5, 94 lines, 9 fabric-cell lines. The operation/grant constructors did not change.

Test plan

  • remote current-bootstrap build: cargo build --release -p v1-compiler --bin gunbc — passed
  • focused current-bootstrap claim runs with --claim-run:
    • witness_a_full_cell_of_additions_realizes_all_three_addresses — PASS
    • witness_substrate_is_root_owned_and_only_the_attempt_root_is_delegated — PASS
    • witness_fabric_cell_plan_and_apply_project_the_same_effects — PASS
    • witness_fabric_cell_absent_address_plans_add_and_never_change — PASS
  • git diff --check — passed
  • pre-push cargo fmt --all --check — passed

gunbc-ci-auto-heal and others added 3 commits August 29, 2026 23:14
…ly path

The fabric cell family's boundary refusal stood on a STALE premise: it
claimed MemorySwapMax/TasksMax/CPUWeight were unmodeled in
extdeps.systemd.unit_file while the directive-value-grain lane had
already landed all three mints. The refusal survived on a comment
asserting a two-arm shape the tree no longer had, and the all-or-nothing
fold then refused every cell plan, so no cell could ever converge.

- fabric_cell_effect: every ADDITION now realizes. Effects are typed
  tuples only -- a path with an ownership class, or a slice name with
  its directive words -- never bytes an unprivileged principal authored
  (parent veto of the staged-file-install shape: constant argv, content
  as payload, root escalation from any PR). Boundary realizes as
  systemctl set-property words derived from gunbc_runner_slot_desired,
  the same authority the desired digest renders, with systemd persisting
  its own drop-in. Teardown and change still refuse (undeclared).
- Cell substrate (base dir, cell root) is root-owned; the job user is
  delegated exactly one directory, the attempt root (parent ruling).
- executor_privileged_operation: one new exact-argv variant,
  SystemdSetUnitProperty (unit + one pinned Property=value word).
- runner_host_grants: fabric contribution derived from
  fabric_execution_slot_identities -- base-dir ensure plus per-slot
  directory ensures, five set-property grants, one slice start; the
  apply shell renders its commands from the same operation constructors
  the sudoers roster enrolls, so executed argv and grant cannot drift.
- fleet_converge_plan: the fabric family's declared dissolve-on fired;
  FabricCellFamilyRealizationUnavailable narrows to
  FabricCellFamilyPlanned, realizable actions emit executable apply.sh
  lines (boundary first, then substrate, then delegated attempt root --
  a set -euo pipefail stop can strand an inert boundary but never a cell
  root without its resource boundary) and stop counting as refusals, so
  the terminal can reach FullyApplied; refusals keep their typed
  comment+count.
- Witnesses: expecting-refusal rows flipped to permanent positive
  controls per DESIGN 4b(4); the all-or-nothing law keeps a
  discriminating RED via MemberChanged; new row pins the ownership
  delegation in both directions; grant population row derives the
  fabric term from the fabric authorities rather than a literal.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011fo4XmybNms3oUYdQ1MKjj
…deep-lark-121

# Conflicts:
#	dag/gunbc/runner/runner_host_grants.dag
@gunbai-bot gunbai-bot Bot changed the title FCI-1P2: resolve #9709 against merged FCI-1A and close the plan/apply base_dir asymmetry FCI-1P2: unify fabric base-directory plan and apply Aug 30, 2026
@gunbai-bot
gunbai-bot Bot marked this pull request as ready for review August 30, 2026 03:38
@gunbai-bot

gunbai-bot Bot commented Aug 30, 2026

Copy link
Copy Markdown
Contributor

Addressed review 57510 in e8194dc. fabric_cell_plan_effects now adds the base-directory prerequisite only when the action-derived effect population is nonempty, preserving fabric_cell_realization([]) as a zero-effect plan. Added witness_empty_cell_actions_realize_no_effects as the direct regression control; it and the existing plan/apply parity witness both pass using the current bootstrap compiler. — sent from deep-lark-121

@gunbai-bot
gunbai-bot Bot merged commit 2b33c14 into main Aug 30, 2026
4 checks passed
@gunbai-bot
gunbai-bot Bot deleted the session/deep-lark-121 branch August 30, 2026 05:03
@briansrls
briansrls restored the session/deep-lark-121 branch August 30, 2026 05:14
@gunbai-bot
gunbai-bot Bot deleted the session/deep-lark-121 branch August 30, 2026 07:12
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