xdrs-core 0.41.0 → 0.41.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,7 +15,7 @@ test('003-write-skill creates a devops skill package', async () => {
15
15
  ...copilotCmd(REPO_ROOT),
16
16
  },
17
17
  'Create a skill with instructions on how to do a call to a customer during a marketing campaign: - look for the phone number in the CRM opportunity, - read the proposal to be offered, - make the call, - maintain a friendly and professional tone, - report the outcome on CRM, - say "Thank you for your time".',
18
- 'Verify that SKILL.md was created under .xdrs/_local/bdrs/marketing/skills and has instructions about calling a customer, especifically about the tone of voice',
18
+ 'Verify that SKILL.md was created under .xdrs/_local/bdrs/operations/skills and has instructions about calling a customer, especifically about the tone of voice',
19
19
  null,
20
20
  true
21
21
  );
package/lib/lint.js CHANGED
@@ -12,7 +12,7 @@ const TYPE_TO_ID = {
12
12
 
13
13
  const ALLOWED_SUBJECTS = {
14
14
  adrs: new Set(['principles', 'application', 'data', 'platform', 'operations', 'governance']),
15
- bdrs: new Set(['principles', 'product', 'marketing', 'operations', 'governance', 'finance', 'sustainability']),
15
+ bdrs: new Set(['principles', 'product', 'operations', 'governance', 'finance']),
16
16
  edrs: new Set(['principles', 'application', 'data', 'platform', 'operations', 'governance'])
17
17
  };
18
18
 
@@ -439,7 +439,7 @@ function lintScopeIndexFrontmatter(scopeIndexPath, scopeName, errors, xdrsRoot,
439
439
  }
440
440
  const followedIndexPath = path.join(xdrsRoot, entry, 'index.md');
441
441
  if (!existsFile(followedIndexPath)) {
442
- readOnlyScopes.add(scopeName);
442
+ errors.push(`Scope index frontmatter follows references scope "${entry}" which does not exist in the workspace: ${toDisplayPath(scopeIndexPath)} [_core-adr-policy-001]`);
443
443
  } else {
444
444
  const followedContent = fs.readFileSync(followedIndexPath, 'utf8');
445
445
  const followedTypeMatch = followedContent.match(/^scope-type:\s*(.+)$/m);
package/lib/lint.test.js CHANGED
@@ -1341,7 +1341,7 @@ test('reports invalid follows value in scope index frontmatter', () => {
1341
1341
  expect(result.errors.join('\n')).toContain('Scope index frontmatter follows must be a core scope name or list of core scope names');
1342
1342
  });
1343
1343
 
1344
- test('marks scope as read-only when follows references a -core scope not in workspace', () => {
1344
+ test('reports error when follows references a scope not in workspace', () => {
1345
1345
  const workspaceRoot = createWorkspace('follows-missing-scope', {
1346
1346
  '.xdrs/index.md': rootIndex(['[myteam](myteam/index.md)']),
1347
1347
  '.xdrs/myteam/index.md': '---\nscope-type: standard\nname: myteam\ndescription: Team.\napply-to: Test team\nvalid-from: 2026-01-01\nfollows: nonexistent-core\n---\n\n# myteam Scope Overview\n\n[ADRs](adrs/index.md)\n',
@@ -1351,8 +1351,8 @@ test('marks scope as read-only when follows references a -core scope not in work
1351
1351
 
1352
1352
  const result = lintWorkspace(workspaceRoot, { ignoreExternal: false });
1353
1353
 
1354
- expect(result.errors.join('\n')).not.toContain('follows references scope "nonexistent-core" which does not exist in the workspace');
1355
- expect(result.readOnlyScopes.has('myteam')).toBe(true);
1354
+ expect(result.errors.join('\n')).toContain('follows references scope "nonexistent-core" which does not exist in the workspace');
1355
+ expect(result.readOnlyScopes.has('myteam')).toBe(false);
1356
1356
  });
1357
1357
 
1358
1358
  test('accepts follows scope that exists in workspace', () => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "xdrs-core",
3
- "version": "0.41.0",
3
+ "version": "0.41.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",