Skip to content

dav: import the DCM validation corpus - #65

Closed
croadfeldt wants to merge 2 commits into
mainfrom
pr/dd1-dav-corpus
Closed

dav: import the DCM validation corpus#65
croadfeldt wants to merge 2 commits into
mainfrom
pr/dd1-dav-corpus

Conversation

@croadfeldt

@croadfeldt croadfeldt commented Jun 16, 2026

Copy link
Copy Markdown
Collaborator

UC map — Cross-cutting substrate — supports all UCs.

Decision: Add the DAV validation corpus (dav/) — the use-case set DCM is validated against — so the spec ships with its conformance dogfood.

Part of the staged upstreaming: single-concern ≤3k. This PR: dav/ only (+1,151). Independent of the split; pairs with the architecture PRs each use case exercises.

Draft — sample for review pending team re-engagement.

Adds the DAV validation corpus (dav/) -- the use-case set DCM is validated against -- so the spec ships with its conformance dogfood. Single-concern; independent of the UDLM/DCM split.

Signed-off-by: Chris Roadfeldt <chris@roadfeldt.com>
@@ -0,0 +1,180 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

please provide some description which properties are used for what

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done — every property now carries a description (its purpose, its form, and whether it's authored or server-owned), plus a schema-level description of what a UC is.

uuid: uc-seed-001a
handle: compute/vm-standard-provision
scenario:
description: An application team requests a new virtual machine with standard multi-tenant

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this use case covers too much. I think that tenancy should be handled in another use case

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agreed it was covering too much. I split it: this UC is now scoped to standard VM provisioning only, and the data-plane tenant-isolation concern moved to its own UC (compute/vm-tenant-isolation-enforcement), with the tenancy data model in compute/tenancy-data-model.

uuid: uc-seed-bfi-001
handle: cross-domain/ansible-inventory-brownfield-ingestion
scenario:
description: An operations team manages an existing estate (bare metal, VMs,

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nice discovery use case. What I am missing is how the use should manage the infra once it is discovered. Should we continue to allow the user to manage in the old way and keep the data in sync or should we ask the user to use dcm api?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good question — it deserved its own UC rather than an inline answer. I added a companion adoption UC (cross-domain/brownfield-adoption-capability): adopt-in-place, a coexistence window that tracks out-of-band changes as drift, then a cutover that flips authority to the DCM API. Whether continued out-of-band management is allowed after cutover is a policy-configurable action (default reject+alert), so it's an explicit choice rather than left to the reader.

uuid: uc-seed-002a
handle: cross-domain/sovereign-decommission-with-peer
scenario:
description: A sovereign-profile tenant initiates decommissioning of a resource

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this use case seems to be related to rehydrate flow. Why it is important whether it is done from sovereign env or not?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The sovereign/peer angle is the point, not rehydrate. This UC is a peer-coordinated decommission — a two-phase release across both DCM instances with a single, consistent cross-DCM audit trail — which is distinct from rehydrate (rehydrate replays Intent into a new Requested state on another provider; this releases both existing replicas). I clarified that in the scenario so the distinction is explicit.

uuid: uc-seed-008a
handle: cross-domain/tenant-onboarding
scenario:
description: A platform engineer onboards a new tenant into the FSI-profile DCM

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

please clarify the relationship between tenant and profile? Should the relationship between the two be determined by policies? Why do we need to have additional mapping?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The binding is a property of the tenant boundary, not a separate mapping table: onboarding binds the tenant to the instance's resolved profile (near-term the instance applies one profile deployment-wide). The compliance/sovereignty overlay (Sovereignty Zone + Accreditation) is a separate axis from the profile. I made both explicit in the scenario.

uuid: uc-seed-007a
handle: governance/audit-merkle-tree-verification
scenario:
description: A compliance auditor requests cryptographic verification that a specific

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this imply we provide a way to verify consistency of historical data. We need to investigate how to do it.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Right — that's the requirement this UC asserts, not a committed mechanism yet, so "we need to investigate how" is the correct read: the UC is what puts that investigation on the board. The concrete hash-chain structure belongs in the audit-store design; happy to cross-link the two so the requirement and the design track together.

uuid: uc-seed-009a
handle: governance/minimal-profile-policy-scope-boundary
scenario:
description: A developer in a minimal-profile personal sandbox tenant provisions

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is this related to how policies are implemented and enforces?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes — it validates policy-scope behavior. Under the minimal profile the FSI-scoped policies (data-residency, dual-approval, encryption-at-rest) aren't part of the request's resolved profile, so they must not evaluate; the request proceeds under only what the minimal profile carries. It checks that a minimal profile enforces its floor and nothing above it.

uuid: uc-seed-003a
handle: identity/auth-provider-drift-detection
scenario:
description: The DCM control plane detects that the identity provider's view of

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why dcm needs to cache user/group membership? shouldn't we delegate it to identity provider?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

DCM does delegate to the IdP and doesn't keep an authoritative membership cache. The only exception is a disconnected/sovereign deployment, where it may hold a point-in-time identity projection (provenance=observed) to keep operating while the IdP is unreachable. This UC is about detecting when that projection has diverged from the IdP once connectivity returns — the IdP stays authoritative.

uuid: uc-seed-obs-001
handle: observability/udlm-universal-telemetry-export
scenario:
description: A platform operations team connects its existing observability

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would like to understand a bit more about this use case. I am not sure how we can achieve this without writing adapters.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No per-tool adapters: DCM exposes one UDLM-modeled, schema-discoverable export surface over standard transports — OTLP, Prometheus scrape, and a message-bus subscription against the published event catalog. Any tool that speaks a standard transport consumes it, so "no adapters" means no DCM-side per-tool integration code — that's the requirement this UC tests.

Brings this PR's files up to the current DCM spec state (post UDLM/DCM
separation, AEP alignment, taxonomy reconciliation, and review resolutions).
Content-only update on existing paths.

Signed-off-by: croadfeldt <chris@roadfeldt.com>
@croadfeldt
croadfeldt force-pushed the pr/dd1-dav-corpus branch 2 times, most recently from e3a0a7b to 3707b45 Compare July 11, 2026 00:00
croadfeldt added a commit that referenced this pull request Jul 11, 2026
…e/identity/infrastructure/observability use-cases)

Adds the remainder of the DCM validation use-case corpus developed upstream —
tenancy, brownfield adoption, composite services, audit-chain, policy
resolution, identity/delegation, bootstrap, rehydration, drift/telemetry.
Depends on #65 (initial corpus import); kept as a separate additive slice so

Signed-off-by: croadfeldt <chris@roadfeldt.com>
#65's in-flight review threads are undisturbed.
@croadfeldt

Copy link
Copy Markdown
Collaborator Author

Thanks @pkliczewski — captured, not closed. Superseded by the ordered, scoped set (#109#117), tracked in #108; your feedback carries forward as CF-10 (brownfield discovery lifecycle — answered by the estate-observation flow). See #108.

@croadfeldt croadfeldt closed this Jul 28, 2026
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.

2 participants