Repository navigation
Conversation
scotwells
changed the base branch from
docs/first-machine-lifecycle-milestone
to
main
November 4, 2026 00:59
scotwells
force-pushed
the
codex/fleet-api-foundation
branch
from
November 4, 2026 01:00
f928df8 to
2798e5e
Compare
ecv
approved these changes
Nov 4, 2026
ecv
left a comment
There was a problem hiding this comment.
Approve.
Go types and CRDs line up, and CI is green. I ran all five CRDs through the apiextensions validator (v0.36.1), including CEL cost estimation, with zero errors. Every default satisfies its own rules.
- Checked the CEL: the
MachineClassmode and source immutability rule,Machineprovider and device immutability,MachineClaimallocation-input immutability andInstallation'sself == oldSelfplus predecessor rule. TheDisabled,Off,[IPv6]andDeletedefaults are all in their enums, and the immutability comparisons hold across defaulted fields.
Follow-ups:
MachineClassprofilePolicy,accessandcapacity, andMachineProfilecores,gpus,disksandinterfacesarex-kubernetes-preserve-unknown-fields. The Go types requirecapacity.machines.namespace,allowedProfiles[].nameandgpus.count, but the API server enforces none of it, so typos and missing fields are admitted. Spell out the schema before controllers rely on these.ConstraintandQuantityConstrainthave no CEL formin <= maxor forexactexcludingmin/max.Quantitystrings are unvalidated.MachineClaimref names (machineClassRef,machineProfileRef,locationRef) andInstallationclaimRef/imageReflackminLength: 1, unlike theMachinerefs.networkInterfaceshas nomaxItems.Machine.reclaimPolicyis required with a single-value enum and no default. Consider defaulting it toRetain.deepCopyround-trips through JSON and ignores errors. Replace it with generated deepcopy before controllers use these types.
andrewb3000
approved these changes
Nov 5, 2026
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.
Summary
go.datum.net/fleetas the Go modulekubectlprinter columnsReview boundaries
This is PR 1 of the implementation stack and is based on #2. It intentionally contains no allocator, simulator, controller, provider integration, Milo integration, or deployment.
The primary review questions are public resource shape, identity boundaries, validation/defaulting, status projection, and module/package conventions.
Validation
go test ./internal/api/...kustomize build config/base/crd./hack/validate-doc-links.shgit diff --check HEAD^ HEADAll commands passed from a detached worktree containing only this commit.