xdrs-core 0.30.0 → 0.31.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -15,6 +15,7 @@ Foundational standards, principles, and guidelines.
|
|
|
15
15
|
- [_core-adr-policy-007](principles/007-plan-standards.md) - **Plan standards** — How to structure ephemeral execution plans that implement decisions
|
|
16
16
|
- [_core-adr-policy-008](principles/008-xdr-standards-structured.md) - **Policy standards - structured** — How to expose individually referenceable numbered rules inside a Policy when external citation by identifier is required
|
|
17
17
|
- [_core-adr-policy-009](principles/009-presentation-standards.md) - **Presentation standards** — How to structure Marp slide presentations that support XDRS documents
|
|
18
|
+
- [_core-adr-policy-010](principles/010-core-scope-naming.md) - **Core scope naming convention** — How to use the `-core` suffix on a scope to separate meta governance content from consumable policies in a domain
|
|
18
19
|
|
|
19
20
|
## Skills
|
|
20
21
|
|
|
@@ -64,6 +64,7 @@ Policies can be of different kinds, depending on the nature of the decision:
|
|
|
64
64
|
- `_local` is a reserved scope for XDRS elements created locally to a specific project or repository. XDRS elements in `_local` MUST NOT be shared with or propagated to other contexts. This scope MUST always be placed in the lowest position in the root `index.md` so that its decisions override or extend any decisions from higher-positioned scopes. Shared root `index.md` files MUST NOT include an explicit link to `_local`, because `_local` remains workspace-local and is not distributed with shared packages. Readers, tools, and agents SHOULD still try the default workspace-local path `_local/index.md` when it exists, even without a root-index link. Documents in non-`_local` scopes MUST NEVER link to any document inside `_local`; documents inside `_local` MAY link to other documents inside `_local`.
|
|
65
65
|
- **Types:** `adrs`, `bdrs`, `edrs`
|
|
66
66
|
- there can exist sufixes to the standard scope names (e.g: `business-x-mobileapp`, `business-y-servicedesk`)
|
|
67
|
+
- The `-core` suffix is a reserved special suffix (e.g., `security-core`, `platform-core`) that designates a scope as the meta governance layer for all scopes sharing the same prefix. See `_core-adr-policy-010` for the full convention.
|
|
67
68
|
- **Subjects:** MUST be one of the following depending on the type of the Policy. Use the subject to indicate the main concern of the decision.
|
|
68
69
|
- **ADR subjects**
|
|
69
70
|
- `principles`: Cross-cutting architecture and policy foundations.
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: _core-adr-policy-010-core-scope-naming-convention
|
|
3
|
+
description: Defines the -core suffix naming convention for XDRS scopes used to hold meta governance content such as writing standards, structural templates, ownership, and process guidance for a domain. Use when designing or evaluating shared scopes.
|
|
4
|
+
apply-to: All XDRS scope authors and maintainers
|
|
5
|
+
valid-from: 2026-06-24
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# _core-adr-policy-010: Core scope naming convention
|
|
9
|
+
|
|
10
|
+
## Context and Problem Statement
|
|
11
|
+
|
|
12
|
+
When teams create shared XDRS scopes (e.g., `security-standards`, `platform-engineering`), they often mix two kinds of content:
|
|
13
|
+
|
|
14
|
+
- **Consumable policies**: rules and decisions that other teams or repositories must follow.
|
|
15
|
+
- **Meta governance**: writing standards, structural templates, skill guidance, ownership definitions, and process rules that govern how content is authored within the domain.
|
|
16
|
+
|
|
17
|
+
Mixing both kinds makes shared scopes harder to consume selectively and causes confusion about which content represents actual rules versus internal governance for scope contributors.
|
|
18
|
+
|
|
19
|
+
How should teams separate meta governance from consumable policies within a scope domain?
|
|
20
|
+
|
|
21
|
+
## Decision Outcome
|
|
22
|
+
|
|
23
|
+
**Use a `-core` suffix sibling scope to hold all meta governance content for a domain.**
|
|
24
|
+
|
|
25
|
+
A scope named `[domain]-core` (e.g., `security-core`, `platform-core`) is reserved for the meta organization of the `[domain]` scope family. It contains content that governs how policies are written and maintained within the domain — not the actual policies themselves.
|
|
26
|
+
|
|
27
|
+
### Details
|
|
28
|
+
|
|
29
|
+
#### 01-core-suffix-definition
|
|
30
|
+
|
|
31
|
+
A scope name ending in `-core` signals that the scope holds meta governance content for scopes sharing the same prefix. It MUST NOT contain policies intended for direct consumption by other teams or repositories.
|
|
32
|
+
|
|
33
|
+
Content that belongs in a `-core` scope:
|
|
34
|
+
|
|
35
|
+
- Writing standards and templates specific to the domain.
|
|
36
|
+
- Structural conventions for that domain's policies.
|
|
37
|
+
- Process guidance for authoring or reviewing policies within the domain.
|
|
38
|
+
- Skill files for domain-specific review or authoring workflows.
|
|
39
|
+
- Ownership, contact, and governance information for the domain.
|
|
40
|
+
|
|
41
|
+
Content that does NOT belong in a `-core` scope:
|
|
42
|
+
|
|
43
|
+
- Actual rules or constraints for other teams to follow (e.g., security requirements, compliance rules).
|
|
44
|
+
- Any policy intended to be enforced by external teams or repositories.
|
|
45
|
+
|
|
46
|
+
#### 02-core-governs-same-prefix-scopes
|
|
47
|
+
|
|
48
|
+
All XDRS scopes sharing the same prefix as a `-core` scope (e.g., `security-standards`, `security-cloud`) are governed by the standards defined in the corresponding `-core` scope (e.g., `security-core`). Authors of those scopes MUST follow the `-core` scope standards when writing, reviewing, or extending policies in any same-prefix scope.
|
|
49
|
+
|
|
50
|
+
#### 03-core-scope-is-optional-but-recommended
|
|
51
|
+
|
|
52
|
+
Creating a `-core` scope is optional. It is strongly recommended whenever a domain scope is intended to be shared with multiple teams or repositories. Separating meta governance into a `-core` scope prevents unnecessary internal content from being distributed to consumers and keeps the consumable scope focused on actual rules.
|
|
53
|
+
|
|
54
|
+
#### 04-core-vs-local-scope
|
|
55
|
+
|
|
56
|
+
The `-core` suffix is distinct from the `_local` scope:
|
|
57
|
+
|
|
58
|
+
- `_local` holds project-specific overrides that are never shared and apply only to the current repository. It is implicitly present in every workspace and may contain a mix of local overrides unrelated to any particular domain.
|
|
59
|
+
- A `-core` scope is a formal, named scope scoped to a domain. It can be shared selectively with contributors and is required to be followed by all authors writing content in any same-prefix scope.
|
|
60
|
+
|
|
61
|
+
Use `_local` when meta governance is relevant only to the current repository. Use a `-core` scope when the governance applies to a named domain shared across teams or repositories.
|
|
62
|
+
|
|
63
|
+
#### 05-core-scope-distribution
|
|
64
|
+
|
|
65
|
+
A `-core` scope MAY be distributed to consumers alongside the companion consumable scope, or kept internal to the team that maintains the domain. When distributed, consumers who extend or contribute to the domain scope locally MUST follow its standards. When not distributed, internal contributors must still comply.
|
|
66
|
+
|
|
67
|
+
## Considered Options
|
|
68
|
+
|
|
69
|
+
1. **`_local` scope for meta content** — simple to set up, but mixes local project overrides with domain-level governance. Becomes confusing in large teams, especially when `_local` already contains project-specific policies.
|
|
70
|
+
2. **Meta content embedded inside the consumable scope** — makes the shared scope noisier and harder for consumers to parse; no clear separation between governance and rules.
|
|
71
|
+
3. **`-core` sibling scope (chosen)** — cleanly separates meta governance from consumable content, makes the governance explicit and discoverable, and enables selective distribution.
|
package/.xdrs/_core/index.md
CHANGED
|
@@ -35,6 +35,10 @@ Each artifact type has its own writing standard:
|
|
|
35
35
|
|
|
36
36
|
Slide presentations that support XDRS documents follow [_core-adr-policy-009](adrs/principles/009-presentation-standards.md). Slides use the Marp Markdown format, live in `.assets/` next to the document they support, and must maintain bidirectional links with the parent document.
|
|
37
37
|
|
|
38
|
+
### Domain scope meta governance
|
|
39
|
+
|
|
40
|
+
[_core-adr-policy-010](adrs/principles/010-core-scope-naming.md) defines the `-core` suffix naming convention for XDRS scopes. A scope named `[domain]-core` (e.g., `security-core`) holds meta governance content — writing standards, templates, ownership, and process guidance — for all scopes sharing the same prefix. It must not contain consumable policies, and all contributors to same-prefix scopes must follow its standards.
|
|
41
|
+
|
|
38
42
|
### Available skills
|
|
39
43
|
|
|
40
44
|
The `_core` scope ships with seven skills that automate the most common framework operations:
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "xdrs-core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.31.1",
|
|
4
4
|
"description": "A framework to structure, compile and distribute Architectural (ADR), Business (BDR), and Engineering (EDR) decision records contents so that AI agents and humans can reliably find and use them with hierarchical scopes and controlled rollout in the format of distributable versioned packages.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
"jest": "^29.7.0"
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"filedist": "^0.
|
|
33
|
+
"filedist": "^0.36.0",
|
|
34
34
|
"ignore": "^7.0.5",
|
|
35
35
|
"minimatch": "^10.2.5"
|
|
36
36
|
},
|