Roadmap
Domain modeling ships as milestone M9 of the orchestration roadmap, in slices that each deliver something usable. The first slice needs no orchestration at all. This page is where the milestone is tracked. The design holds the contract and its open decisions, and issue #173 holds the discussion.
Done when: Colocated team declarations feed independently registered units. Local and CI runs produce identical bundles and execution keys. Moving a declaration without changing its membership or admission re-runs nothing. Schema, policy, and missing-evidence failures block only the consuming units, before any effect. Releases select their manifests and are selected by label or path, read the same bundles in every render, and render identically with and without the cache. The guide runs end to end.
Prerequisites
Section titled “Prerequisites”The slices build on these orchestration milestones.
Slices
Section titled “Slices”A slice is in progress once one of its deliverables has shipped, and done when all of it has. The line between slices fills as the slice above it progresses.
R1 Definitions and the catalog
PlannedTeams can declare typed resources and validate them, without orchestration.
5 deliverables
- Not done:
ResourceDefinitionloaded only from the[resources]paths ofnyl.toml - Not done: Discovery of literal declarations with project-wide identity and Git provenance
- Not done: Schema validation with defaults, and
x-nyl-referencechecks - Not done:
nyl validatecovering definitions and declarations - Not done:
nyl get resourcesandnyl schema resources
- Not done:
R2 Collections and the bundle
PlannedUnits collect declarations and receive them as one tool-neutral bundle.
8 deliverables
- Not done: The
collectionsunit field with membership, ordering, andallowEmpty - Not done: Ownership claims with
access: ownandaccess: read, with removal and transition guards only for owners - Not done:
fromUnitreferences inside declarations - Not done: The versioned
ResourceBundleand its provenance in desired state - Not done: The bundle digest in the execution key
- Not done:
fromCollectionreferences and the Command unit’scollectionsinput - Not done:
nyl preparewith fixture outputs - Not done: Referenced resources in the bundle: the
x-nyl-referenceclosure, read-only and part of the digest
- Not done: The
R3 Policy admission
PlannedPolicies restrict what each folder may declare.
3 deliverables
- Not done: Kyverno validating policies loaded from
[resources] policies - Not done: Trusted source-path annotations and a CRD derived from each definition
- Not done: Rejection of mutating policies
- Not done: Kyverno validating policies loaded from
R4 Native adaptation
PlannedOpenTofu and Terraform consume bundles, with or without orchestration, and removals wait for approval.
6 deliverables
- Not done: The driver
preparecapability andnyl prepare --native - Not done: OpenTofu and Terraform adaptation, checked by the driver conformance suite
- Not done: Approval before collection members are removed
- Not done:
nyl execwith deployed and worktree bundles - Not done:
nyl prepare --nativeandnyl execfor a unit outside any Environment, andprepare --check - Not done:
--worktree,--source, and--deployedwith warnings and refusals for relevant uncommitted changes
- Not done: The driver
R5 Transition rules
PlannedDefinitions guard changes between versions, such as an account email, by denying them or requiring approval.
6 deliverables
- Not done:
x-nyl-validationsCEL rules withselfandoldSelf, and thedenyeffect - Not done:
--basecomparing against another revision, and an explicit--no-base, required outside orchestration - Not done: The bundle of the current receipt as the baseline when a unit runs
- Not done:
oldObjectand the operation for Kyverno policies - Not done: Tracked last-applied refs with
exec --advance: permission preflight, compare-and-swap, recovery steps, and--bootstrap - Not done: The
approveeffect for guarded changes, with removed members as one of them, and--allow-changeoutside orchestration
- Not done:
R6 One unit per resource
PlannedA unit instantiates once per matching declaration with
forEach.4 deliverables
- Not done:
forEachscanned statically and expanded from the catalog - Not done:
resourcein the structural pass, with only YAML-safe values printed - Not done: Instance names with the clash check
- Not done: Instances leaving the ownership set under the teardown gate
- Not done:
R7 The worked guide
PlannedThe AWS, GitHub, and Bao walkthrough becomes runnable.
2 deliverables
- Not done: The development, testing, and breakglass guide for AWS accounts and access grants
- Not done: The guide validated as a tier-2 reference scenario
R8 The Release catalog
PlannedReleases point at their manifests and ApplicationGroups select them by label as well as by path.
6 deliverables
- Not done: Literal Release
metadata.labels, scanned and verified after rendering - Not done:
spec.manifestsunder the local path rule, withspec.includedeprecated - Not done: Several Releases in one file, next to other Releases or control resources
- Not done: The Release catalog keyed by path and document, and
nyl get releases - Not done: ApplicationGroup source
selectorcombined with path membership, guarded by an AppProject that derives nothing - Not done:
--releasefor shared files in direct commands
- Not done: Literal Release
R9 Release admission
PlannedPolicies decide which folders may declare which Releases, so label membership cannot widen a generated AppProject.
2 deliverables
- Not done: Kyverno validating policies over rendered Releases and their manifests, per target
- Not done: Trusted repository, source, target, and ApplicationGroup annotations, and the effective namespace
R10 Collections in Releases
PlannedReleases read declaration collections as template data, without orchestration.
5 deliverables
- Not done: The pure
nyl-collectionscrate with membership, the reference closure, and bundle assembly, shared with R2 - Not done: Release
spec.collections, read-only, with${ … }selector values - Not done:
collectionsandreferencedtemplate variables with YAML-safe output - Not done: Bundle digests in the dependency recorder and the ownership index
- Not done: Rejection in remote sources and of unresolvable references
- Not done: The pure
R11 One Release per resource
PlannedA Release instantiates once per matching declaration with
forEach.2 deliverables
- Not done:
forEachon Releases with theresourcecontext - Not done: Instance names with the clash check, and instance bindings over base bindings
- Not done: