architecture: overview and handbook - #66
Conversation
Architecture overview, layering, design principles, and operator handbook as one unit. Signed-off-by: Chris Roadfeldt <chris@roadfeldt.com>
d426893 to
bff3c74
Compare
|
|
||
| --- | ||
|
|
||
| ## 1. API Path Format (AEP Colon Syntax) |
There was a problem hiding this comment.
I am not sure about the need for this. Why not to define what we want to use from AEP or what we don't want to use.
There was a problem hiding this comment.
This file isn't the AEP-adoption policy — it's a point-in-time consistency audit, the record of naming/path/terminology drift I found and fixed across the docs. What DCM actually adopts from AEP (and what it deliberately doesn't) lives in adopted-standards-dcm.md. Happy to add a pointer from here to that doc so the split is obvious — or, if you'd rather this audit record not sit in the architecture handbook at all, I'll move it out of the PR; it's history, not normative.
|
|
||
| ## 2. Approval tier model (runtime enforcement) | ||
|
|
||
| UDLM defines the authority tier vocabulary (auto / reviewed / verified / |
There was a problem hiding this comment.
please clarify what this means
There was a problem hiding this comment.
Thanks — you're right the terms landed cold. I added a one-line gloss at first mention: the four tiers are an escalating human-gate ladder — auto = no human gate, reviewed = one approver, verified = two independent approvers, authorized = a quorum vote by a named group. UDLM owns the vocabulary; the table right below records how DCM enforces each.
| calling the vote-recording API. A Slack bot that collects emoji reactions and | ||
| then calls DCM's Admin API is a valid implementation. | ||
|
|
||
| ### 2.1 Admin API as integration point |
There was a problem hiding this comment.
I am not sure whether this is about request approval but this should be done by approval policy/logic. If delegated to third party system it should be approved there. Why do we need this api?
There was a problem hiding this comment.
Agreed — the decision happens wherever the org runs it, and DCM deliberately doesn't build a deliberation/voting platform (the list just above is only membership, quorum, notification, recording). The endpoint exists only so the external system can report the outcome back: DCM holds the request pipeline, so it has to be told the result to advance or reject and to record it in its own audit trail. Approve in ServiceNow/Slack/Jira; call the endpoint to record what was decided.
|
|
||
| ### 2.2 Deadline and escalation | ||
|
|
||
| DCM manages the approval window and fires escalation notifications: |
There was a problem hiding this comment.
assuming that dcm will take responsibility for escalations this config is not enough. How do we know who is the recipient of the escalation? should it be reoccurring? if so for how long? should it be static value or exponential?
There was a problem hiding this comment.
Fair — escalate alone is under-specified, and the deeper answer is that the ladder is profile/organization-defined, not a fixed platform one. ADR-007 (UDLM) settles this: profiles are composed sets that set floors, and the approval/escalation ladder is part of a profile's operational config, not something the platform hard-codes. The platform supplies the mechanism — escalation target group (platform-admin by default) via the Notification Service, with a bounded repeat cadence and max attempts; the profile supplies the ladder. So the recipient and retry behavior are declared, not ad hoc.
|
|
||
| ## 3. Profile-governed system constraints | ||
|
|
||
| DCM ships six built-in profiles (`minimal`, `dev`, `standard`, `prod`, `fsi`, |
There was a problem hiding this comment.
built-in profiles are restrictive and the admin should be able to decide what they need and to me it should be codified in policies. Is there any other place or reason why we constrain the system?
There was a problem hiding this comment.
Good push. The six built-ins are presets, not a closed set: ADR-007 (UDLM) makes profiles first-class composed sets that set floors — built-ins are immutable, and any modification forks a new custom profile (copy-on-write, reproducible and audited). Everything you'd want to tune — thresholds, tiers, automation level, review windows — is admin-tunable that way; the only thing not switchable is the small non-negotiable floor (CPX-001 and the other security invariants). So it's constrained only at that floor, on purpose.
|
|
||
| --- | ||
|
|
||
| ## 6. System policies (DCM realization) |
There was a problem hiding this comment.
how this be enforced for policies defined by admins/SRE?
There was a problem hiding this comment.
These apply to DCM's project documentation, not to admin/SRE policy artifacts — so there's nothing to enforce at runtime here. Admin/SRE-authored policies are governed separately by the policy validation pipeline (schema validation plus the governance policies), not by these doc-discipline rules. Happy to make that scope explicit in the doc so it doesn't read as a runtime constraint.
| │ • ingress / egress, APIs, service boundaries │ | ||
| │ • drift detection, recovery utilities, expiration │ | ||
| │ • persistence (PostgreSQL mandated for this realization) │ | ||
| │ • specific 9-layer canonical location hierarchy │ |
There was a problem hiding this comment.
please clarify what 9-layer hierarchy is
There was a problem hiding this comment.
Thanks — that was a dangling forward reference. I added the gloss and link at first mention: it's DCM's canonical location topology, Country → Region → … → Unit, nine levels — DCM's concrete choice for UDLM's abstract layered-topology contract — fully defined in topology/canonical-9-layer-hierarchy.md.
|
|
||
| ## Compatibility model (LOCKED) | ||
|
|
||
| **UDLM enforces wire-level compatibility at the data/event/contract boundary; |
There was a problem hiding this comment.
what about backward compatibility for udlm? how it should be evolved?
There was a problem hiding this comment.
UDLM's evolution is governed in the UDLM repo, not here: SPEC MAJOR/MINOR, with wire-level compatibility guaranteed within a MAJOR (UDLM CONFORMANCE §9). DCM pins a UDLM MAJOR, and the "Compatibility model (LOCKED)" section just below states DCM enforces wire-compat at the data/event/contract boundary. So backward compatibility is a UDLM-side guarantee DCM consumes; happy to add the cross-link to the UDLM versioning doc so that isn't left implicit.
|
|
||
| DCM ships with six built-in profiles: `minimal`, `dev`, `standard`, `prod`, | ||
| `fsi`, `sovereign`. The profile controls dozens of enforcement and threshold | ||
| settings simultaneously: credential lifetimes, TLS requirements, MFA |
There was a problem hiding this comment.
now I see what configuration profiles influence. I see a gap with this. I have been thinking about the profiles for infrastructure DCM manages where as they are purely about the control plane. How do we cover the infra?
There was a problem hiding this comment.
This is a genuinely important line to draw — thank you. I added a subsection (§5.1, "Profiles govern the control plane, not the managed infrastructure"): profiles govern how the control plane behaves — strictness, thresholds, automation — while the infrastructure DCM manages is shaped by a different set of levers (placement/validation/transformation policies, catalog and composite-service definitions, and provider capability declarations). Profile = how the control plane operates; policy + catalog + provider = what gets built and under what constraints.
|
|
||
| --- | ||
|
|
||
| ## Reading order for new contributors |
There was a problem hiding this comment.
this should be at the beginning of this markdown
There was a problem hiding this comment.
Agreed — I moved "Reading order for new contributors" up to right after the intro, ahead of the repo-organization tables. It's the first thing a new reader needs.
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>
e740b32 to
67663cc
Compare
0d1c5b5 to
65ddc44
Compare
|
Thanks @pkliczewski — captured, not closed. Superseded by the ordered, scoped set (#109–#117), tracked in #108; your feedback carries forward as CF-7 (profiles vs policies → the ADR-049/050 invariant-vs-policy split), CF-6 (adopt AEP by reference), CF-12 (legibility). See #108; please re-review on the new set. |
Decision: Architecture overview, layering, design principles, and operator handbook as one unit.
Part of the staged
croadfeldt/dcm→dcm-project/dcmupstreaming: single-concern PRs, ≤3k lines, logical boundaries. (1619 lines, 7 files.)Draft — pending team re-engagement.