Skip to main content
Welcome. This site supports keyboard navigation and screen readers. Press ? at any time for keyboard shortcuts. Press [ to focus the sidebar, ] to focus the content. High-contrast themes are available via the toolbar.
serard@dev00:~/cv

Site and Domain Contracts

Status: Public design proposal and product vision. This series presents Diem CMF .NET’s intended architecture and capabilities. Proposed features remain subject to implementation and validation; existing components are identified separately.

The address contract must resolve a request to the intended instance and surface while preserving the distinction between hosting, source selection and active execution.

Proposed identities

The following C# shape illustrates the relationship. Identifiers stand for validated identities; the declaration is not a released SDK.

public sealed record SiteInstance(
    string InstanceId,
    string SiteId,
    string HostingEnvironmentId,
    string VersionTrackId,
    string DataScopeId,
    string? ActiveReleaseId);

public sealed record DiemDomain(
    string BindingId,
    string Hostname,
    string PathPrefix,
    string InstanceId,
    string SurfaceId,
    string AccessPolicyId);

A surface identifies an installed frontend, admin, Lab or other declared contribution. Development capabilities belong to the instance/workspace and applicable policy; a hostname does not grant them automatically.

Binding invariants

  • Each binding must identify one instance and a surface available in its active or explicitly selected preview configuration.
  • Hostname and path prefix must be normalized consistently for registration and request matching. Matching must respect path-segment boundaries: /diem must not capture /diem-other.
  • Exact duplicate ownership must fail validation. Intentional nested prefixes require deterministic, explicit routing; ambiguous registrations must report both owners.
  • The renderer, static assets, navigation, canonical URLs and sitemap generator must receive the effective public base address.
  • A domain's role, access policy and indexability must remain distinct settings. Public frontend visibility must not implicitly expose admin or Lab operations.

These checks apply whether DNS uses dedicated records or a configured wildcard. The Lab can provision a route under an existing wildcard without pretending it created a new DNS record for every branch.

Source selection and runtime facts

A version track identifies its source policy: Git repository/ref, filesystem workspace or artifact selection. Each build records the actual commit or source snapshot and resolved artifacts.

The domain resolves an active release or authorized preview, not an unverified branch label. Inspection must expose desired track, base revision, workspace changes, candidate build state and active release separately.

A main frontend and admin can bind to the same instance. An experimental branch can bind to an isolated instance in the same production hosting environment. ASPNETCORE_ENVIRONMENT is recorded as an application setting, not used to infer these identities.

Configuration resolution

C# contributions declare defaults, fixed constraints and editable settings. Valid saved configuration can override defaults; it cannot override fixed constraints. An operation may supply temporary choices only for settings declared overridable at that stage.

Every resolved setting must have an inspectable origin. Invalid settings fail before activation with a diagnostic identifying the contribution and field. The UI and automation must use the same resolution path.

Prefix example

For the planned www.frenchexdev.net/diem frontend, a documentation route such as /guide resolves under /diem/guide. Its assets use the effective prefix or an explicitly configured asset origin. Canonical and sitemap URLs use the public binding, not a container hostname.

An admin binding may use another hostname or prefix and its own access policy. No particular public admin address is selected by this proposal.

Acceptance

DOM-01: front and admin resolve the same main instance and data scope.

DOM-02: a branch preview runs in production hosting without altering main's source selection or active release.

DOM-03: /diem routes and assets resolve correctly; conflicting bindings and prefix-boundary mistakes are rejected.

The reference scenarios provide cross-cutting checks.


Previous: Diem CMF .NET 11: Specification · Next: Modeling and Module Generation · Series index · Section index

⬇ Download