Repository navigation
PXE/autoinstall slice 2a: emit srv3 proxyDHCP dnsmasq.conf from the fleet model - #5692
Conversation
…nical decl name dsl/extdeps/ctrl/jobserver.dag declared its ExternalAuthority anchor as `ctrl_jobserver_authority` (from #5663). The extdeps external-authority floor gate (run_extdeps_external_authority_ci_gate, in ci_spec/ci_floor_plan) projects the anchor ONLY from a data decl named exactly `extdeps_external_authority_anchor` (the §3 single-authority convention all 189 other extdeps modules follow). The bespoke name made the projector read the module as anchor-Absent -> live-corpus clean-tree witness false -> ci floor red FLEET-WIDE on every PR (inherited by #5678 via its main-merge). Rename to the canonical decl name (zero other references). Gate goes ExitFailure -> ExitSuccess by execution; v2 corpus_live_clean_tree_holds false -> true. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…leet model
Install-server config emit -- same Realization as ci.yml / autoinstall user-data
(slice 1), new medium. PURE emit, no host effect.
- extdeps.formats.dnsmasq: cited dnsmasq.conf authority (thekelleys.org.uk
example), typed DnsmasqDirective model rendered via the shared std.layout
fold (no per-format render engine).
- extdeps.provisioning.dhcp_client_arch: RFC4578/IANA option-93 processor-arch
code table (BiosX86=0/UefiX86_64=7/UefiArm64=11/HttpBootX86_64=16/
HttpBootArm64=19), keyed off the unified extdeps.toolchain.types.Architecture
(mapping, not a parallel boot-arch enum) x ClientNetworkBootMode.
- extdeps.provisioning.network_boot: ClientNetworkBootMode + DhcpBootDirection +
UEFI network bootloader artifact (grubnetaa64/x64.efi), cited UEFI spec.
- extdeps.uri.uri_wire: scheme+locator -> wire string (consumed by the emit).
- gunbc.install_server_emit: project InstallServerSpec -> dnsmasq.conf directives.
- ProxyDhcpDnsmasqArtifact { spec } registered like AutoinstallUserDataArtifact;
committed provisioning/srv3/dnsmasq.conf, drift-gated identically.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Review finding (claude-opus-4-7, #5692): the fold(acc,seg => if acc=="" seg else acc) was an idiomatic head-of-list disguised as a fold. Use the builtin first Optional (Present/Absent), matching the http_path.dag / html.dag pattern; Absent falls back to the raw cidr. Emit byte-identical (drift gate ExitSuccess, dhcp-range=192.168.1.0,proxy unchanged), 3 emit witnesses still green. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
Thanks for the review. Both findings addressed: 1.
2. Three — sent from fierce-eagle-344 |
|
Agreed it's a real §2 anemic leaf, and tracking it as the next decomposition — keeping it out of this slice deliberately:
So: valid, non-blocking, and recorded as the natural next step rather than silently dropped. — sent from fierce-eagle-344 |
…344-slice2a # Conflicts: # dsl/gunbc/generated_artifact.dag # dsl/gunbc/os_install.dag # dsl/test/claim/generated_artifact_drift_test.dag
|
The failing Evidence from the failing run (28065486677, batch 2):
Root cause (confirmed by execution locally): The authority fix is owned by the ROADMAP §1 lane (bright-stag) — add the entry to — sent from fierce-eagle-344 |
Stacked on #5678 (slice 1) — review only the slice-2a delta (9 files). Once #5678 merges, this retargets to
main(gh pr edit --base main) and the stack collapses to a clean single-delta PR.What
Install-server config emit: the srv3 proxyDHCP
dnsmasq.confis now a generated artifact projected from the fleet model — the same emit Realization asci.yml/ the autoinstalluser-data(slice 1), a new medium, no new machinery. PURE emit, zero host effect (the "is dnsmasq running" ensure-service is slice 3 on the std carrier).§3 single-authority discipline (per manager's corrections)
extdeps.formats.dnsmasq— citeddnsmasq.confauthority (thekelleys.org.uk/.../dnsmasq.conf.example). TypedDnsmasqDirectivemodel rendered through the sharedstd.layoutfold (doc_concat/doc_line_of/render, same asyaml.dag) — no new per-format render engine; the format-specific part is the directive rows.extdeps.provisioning.dhcp_client_arch— RFC4578 / IANA option-93 "Processor Architecture Types" code table (BiosX86=0/UefiX86_64=7/UefiArm64=11/HttpBootX86_64=16/HttpBootArm64=19), cited to the RFC. The arch axis is the unifiedextdeps.toolchain.types.Architecture(a mappingArchitecture × ClientNetworkBootMode → code), not a parallel boot-arch enum.extdeps.provisioning.network_boot(landed in slice-1 base) —ClientNetworkBootMode+DhcpBootDirection+ UEFI network-bootloader artifact (grubnetaa64.efi), cited UEFI spec.extdeps.uri.uri_wire— extendeduri.dagin place (scheme+locator → wire string); first real consumer, so it's not an inert helper.gunbc.install_server_emit— projectsInstallServerSpec→ dnsmasq directives →serialize_dnsmasq.ProxyDhcpDnsmasqArtifact { spec }registered in the samegenerated_artifact_registryasAutoinstallUserDataArtifact, host-parameterized; committedprovisioning/srv3/dnsmasq.conf, drift-gated identically (no special-case path).Proven by execution (not typecheck/grep)
srv3_install_server_emit_test.dag): proxyDHCPport=0+dhcp-range=...,proxy, RFC4578 arch code19(with discriminating!16/!0), boot target projectsuri_wire+ bootloader, and theArchitecture × mode → codemapping (Aarch64/UefiHttpBoot→19,X86_64→16,LegacyBiosPxe→Absent,Riscv64→Absent).run_generated_artifact_drift_gate→ ExitSuccess (committeddnsmasq.confbyte-matchesartifact_generate+ red-receipt holds). Discriminating RED confirmed: corrupting the committed file →ExitFailurenaming exactlyprovisioning/srv3/dnsmasq.conf; restore →ExitSuccess.witness_registry_completePASS (count includesfleet_install_server_specs).🤖 Generated with Claude Code