@ryuenn3123/agentic-senior-core 2.5.17 → 2.5.18

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.
@@ -2,6 +2,10 @@
2
2
 
3
3
  Use this checklist before promoting any release tag or package publish operation.
4
4
 
5
+ ## 0) Terminology Boundary (Compliance and Audit)
6
+ - Compliance and audit artifacts keep the canonical enterprise term: `Federated Governance`.
7
+ - Developer-facing aliases are allowed outside compliance artifacts when first mention includes the canonical term in parentheses.
8
+
5
9
  ## 1) Versioning and Changelog Integrity
6
10
  - `package.json` version is valid semantic version (`x.y.z`).
7
11
  - `CHANGELOG.md` has a matching release header for the package version.
@@ -1,5 +1,5 @@
1
1
  {
2
- "generatedAt": "2026-04-18T02:40:52.883Z",
2
+ "generatedAt": "2026-04-18T02:48:53.130Z",
3
3
  "reportName": "memory-continuity-benchmark",
4
4
  "schemaVersion": "1.0.0",
5
5
  "passed": true,
package/.cursorrules CHANGED
@@ -1,6 +1,6 @@
1
1
  # AGENTIC-SENIOR-CORE DYNAMIC GOVERNANCE RULESET
2
2
 
3
- Generated by Agentic-Senior-Core CLI v2.5.17
3
+ Generated by Agentic-Senior-Core CLI v2.5.18
4
4
  Timestamp: 2026-04-18T03:00:00.000Z
5
5
  Selected profile: beginner
6
6
  Selected policy file: .agent-context/policies/llm-judge-threshold.json
package/.windsurfrules CHANGED
@@ -1,6 +1,6 @@
1
1
  # AGENTIC-SENIOR-CORE DYNAMIC GOVERNANCE RULESET
2
2
 
3
- Generated by Agentic-Senior-Core CLI v2.5.17
3
+ Generated by Agentic-Senior-Core CLI v2.5.18
4
4
  Timestamp: 2026-04-18T03:00:00.000Z
5
5
  Selected profile: beginner
6
6
  Selected policy file: .agent-context/policies/llm-judge-threshold.json
package/README.md CHANGED
@@ -7,7 +7,7 @@
7
7
  [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
8
8
  [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](CONTRIBUTING.md)
9
9
 
10
- **Production-grade rules engine for AI coding agents.**
10
+ **Production-grade Rules Engine (Governance Engine) for AI coding agents.**
11
11
  Works with Cursor, Windsurf, GitHub Copilot, Claude Code, Gemini, and other LLM-powered IDE workflows.
12
12
 
13
13
  </div>
@@ -103,6 +103,8 @@ Use `--dry-run` first to preview changes safely, then apply with `--yes`.
103
103
 
104
104
  Rule: on first mention in developer-facing docs, include canonical term in parentheses.
105
105
 
106
+ Full mapping reference: docs/terminology-mapping.md
107
+
106
108
  ---
107
109
 
108
110
  ## Reference Docs
@@ -115,6 +117,7 @@ Rule: on first mention in developer-facing docs, include canonical term in paren
115
117
  - V2 upgrade playbook: docs/v2-upgrade-playbook.md
116
118
  - Integration playbook: docs/integration-playbook.md
117
119
  - Benchmark and stack reference: docs/benchmark-reference.md
120
+ - Terminology mapping reference: docs/terminology-mapping.md
118
121
  - Product roadmap: docs/roadmap.md
119
122
 
120
123
  ---
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ryuenn3123/agentic-senior-core",
3
- "version": "2.5.17",
3
+ "version": "2.5.18",
4
4
  "type": "module",
5
5
  "description": "Force your AI Agent to code like a Staff Engineer, not a Junior.",
6
6
  "bin": {
@@ -100,6 +100,61 @@ const REQUIRED_TERMINOLOGY_ROW_PATTERNS = [
100
100
  ];
101
101
  const REQUIRED_TERMINOLOGY_RULE_SNIPPET =
102
102
  'Rule: on first mention in developer-facing docs, include canonical term in parentheses.';
103
+ const TERMINOLOGY_REFERENCE_DOCUMENT_PATH = 'docs/terminology-mapping.md';
104
+ const REQUIRED_DEVELOPER_FIRST_MENTION_PATTERNS = [
105
+ {
106
+ path: 'README.md',
107
+ label: 'Rules Engine first mention includes Governance Engine',
108
+ pattern: /Rules Engine\s*\(Governance Engine\)/u,
109
+ },
110
+ {
111
+ path: 'docs/deep-dive.md',
112
+ label: 'Dynamic Rules Engine first mention includes Governance Engine',
113
+ pattern: /Dynamic Rules Engine\s*\(Governance Engine\)/u,
114
+ },
115
+ {
116
+ path: 'docs/faq.md',
117
+ label: 'Quality Checks first mention includes Guardrails',
118
+ pattern: /Quality Checks\s*\(Guardrails\)/u,
119
+ },
120
+ {
121
+ path: '.agent-context/prompts/init-project.md',
122
+ label: 'Init prompt first mention includes Federated Governance baseline',
123
+ pattern: /rules operations context\s*\(Federated Governance baseline\)/iu,
124
+ },
125
+ {
126
+ path: 'lib/cli/commands/init.mjs',
127
+ label: 'Init command wording includes Federated Governance baseline',
128
+ pattern: /rules operations\s+(assets|pack)[^\n]*\(Federated Governance baseline\)/iu,
129
+ },
130
+ {
131
+ path: 'lib/cli/commands/upgrade.mjs',
132
+ label: 'Upgrade command wording includes Federated Governance baseline',
133
+ pattern: /rules operations upgrade assistant\s*\(Federated Governance baseline\)/iu,
134
+ },
135
+ {
136
+ path: 'lib/cli/utils.mjs',
137
+ label: 'CLI help wording includes quality checks and guardrails',
138
+ pattern: /quality checks\s*\(guardrails\)/iu,
139
+ },
140
+ ];
141
+ const COMPLIANCE_TERMINOLOGY_BOUNDARY_PATHS = [
142
+ '.agent-context/review-checklists/security-audit.md',
143
+ '.agent-context/review-checklists/performance-audit.md',
144
+ '.agent-context/review-checklists/release-operations.md',
145
+ 'scripts/release-gate.mjs',
146
+ 'scripts/forbidden-content-check.mjs',
147
+ ];
148
+ const COMPLIANCE_ALIAS_TERMS = [
149
+ 'Federated Rules Operations',
150
+ ];
151
+ const REQUIRED_COMPLIANCE_CANONICAL_SNIPPETS = [
152
+ {
153
+ path: '.agent-context/review-checklists/release-operations.md',
154
+ snippet: 'Federated Governance',
155
+ label: 'release operations checklist keeps canonical term Federated Governance',
156
+ },
157
+ ];
103
158
 
104
159
  const validationResult = {
105
160
  passed: 0,
@@ -212,6 +267,7 @@ async function validateRequiredFiles() {
212
267
  'CHANGELOG.md',
213
268
  'docs/faq.md',
214
269
  'docs/deep-dive.md',
270
+ 'docs/terminology-mapping.md',
215
271
  'docs/v1.7-execution-playbook.md',
216
272
  'docs/v1.7-issue-breakdown.md',
217
273
  'docs/v1.8-operations-playbook.md',
@@ -750,6 +806,40 @@ async function validateDocumentationFlow() {
750
806
  async function validateTerminologyMapping() {
751
807
  console.log('\nChecking terminology mapping consistency...');
752
808
 
809
+ const terminologyReferenceDocumentPath = join(ROOT_DIR, TERMINOLOGY_REFERENCE_DOCUMENT_PATH);
810
+
811
+ if (!(await fileExists(terminologyReferenceDocumentPath))) {
812
+ fail(`Missing terminology reference document: ${TERMINOLOGY_REFERENCE_DOCUMENT_PATH}`);
813
+ } else {
814
+ const terminologyReferenceContent = await readTextFile(terminologyReferenceDocumentPath);
815
+
816
+ if (terminologyReferenceContent.includes('Dual-Term Mapping')) {
817
+ pass(`${TERMINOLOGY_REFERENCE_DOCUMENT_PATH} includes Dual-Term Mapping section`);
818
+ } else {
819
+ fail(`${TERMINOLOGY_REFERENCE_DOCUMENT_PATH} must include Dual-Term Mapping section`);
820
+ }
821
+
822
+ for (const terminologyRowRule of REQUIRED_TERMINOLOGY_ROW_PATTERNS) {
823
+ if (terminologyRowRule.pattern.test(terminologyReferenceContent)) {
824
+ pass(`${TERMINOLOGY_REFERENCE_DOCUMENT_PATH} includes mapping row: ${terminologyRowRule.label}`);
825
+ } else {
826
+ fail(`${TERMINOLOGY_REFERENCE_DOCUMENT_PATH} is missing mapping row: ${terminologyRowRule.label}`);
827
+ }
828
+ }
829
+
830
+ if (terminologyReferenceContent.includes('first mention must include canonical term in parentheses')) {
831
+ pass(`${TERMINOLOGY_REFERENCE_DOCUMENT_PATH} defines first-mention canonical term rule`);
832
+ } else {
833
+ fail(`${TERMINOLOGY_REFERENCE_DOCUMENT_PATH} must define first-mention canonical term rule`);
834
+ }
835
+
836
+ if (terminologyReferenceContent.includes('Compliance and audit artifacts must keep canonical enterprise terminology')) {
837
+ pass(`${TERMINOLOGY_REFERENCE_DOCUMENT_PATH} defines compliance terminology boundary`);
838
+ } else {
839
+ fail(`${TERMINOLOGY_REFERENCE_DOCUMENT_PATH} must define compliance terminology boundary`);
840
+ }
841
+ }
842
+
753
843
  for (const terminologyReferencePath of TERMINOLOGY_REFERENCE_PATHS) {
754
844
  const absoluteReferencePath = join(ROOT_DIR, terminologyReferencePath);
755
845
 
@@ -779,6 +869,62 @@ async function validateTerminologyMapping() {
779
869
  } else {
780
870
  fail(`${terminologyReferencePath} must include first-mention canonical term rule`);
781
871
  }
872
+
873
+ if (referenceContent.includes(TERMINOLOGY_REFERENCE_DOCUMENT_PATH)) {
874
+ pass(`${terminologyReferencePath} links to ${TERMINOLOGY_REFERENCE_DOCUMENT_PATH}`);
875
+ } else {
876
+ fail(`${terminologyReferencePath} must link to ${TERMINOLOGY_REFERENCE_DOCUMENT_PATH}`);
877
+ }
878
+ }
879
+
880
+ for (const firstMentionRule of REQUIRED_DEVELOPER_FIRST_MENTION_PATTERNS) {
881
+ const absoluteFirstMentionPath = join(ROOT_DIR, firstMentionRule.path);
882
+
883
+ if (!(await fileExists(absoluteFirstMentionPath))) {
884
+ fail(`Missing developer-facing first-mention source: ${firstMentionRule.path}`);
885
+ continue;
886
+ }
887
+
888
+ const firstMentionContent = await readTextFile(absoluteFirstMentionPath);
889
+ if (firstMentionRule.pattern.test(firstMentionContent)) {
890
+ pass(`${firstMentionRule.path} keeps first-mention rule: ${firstMentionRule.label}`);
891
+ } else {
892
+ fail(`${firstMentionRule.path} must keep first-mention rule: ${firstMentionRule.label}`);
893
+ }
894
+ }
895
+
896
+ for (const compliancePath of COMPLIANCE_TERMINOLOGY_BOUNDARY_PATHS) {
897
+ const absoluteCompliancePath = join(ROOT_DIR, compliancePath);
898
+
899
+ if (!(await fileExists(absoluteCompliancePath))) {
900
+ fail(`Missing compliance/audit artifact for terminology boundary: ${compliancePath}`);
901
+ continue;
902
+ }
903
+
904
+ const complianceContent = await readTextFile(absoluteCompliancePath);
905
+ for (const aliasTerm of COMPLIANCE_ALIAS_TERMS) {
906
+ if (complianceContent.includes(aliasTerm)) {
907
+ fail(`${compliancePath} must not use developer-facing alias in compliance context: ${aliasTerm}`);
908
+ } else {
909
+ pass(`${compliancePath} keeps canonical terminology boundary for alias: ${aliasTerm}`);
910
+ }
911
+ }
912
+ }
913
+
914
+ for (const complianceRule of REQUIRED_COMPLIANCE_CANONICAL_SNIPPETS) {
915
+ const absoluteComplianceRulePath = join(ROOT_DIR, complianceRule.path);
916
+
917
+ if (!(await fileExists(absoluteComplianceRulePath))) {
918
+ fail(`Missing compliance canonical source: ${complianceRule.path}`);
919
+ continue;
920
+ }
921
+
922
+ const complianceRuleContent = await readTextFile(absoluteComplianceRulePath);
923
+ if (complianceRuleContent.includes(complianceRule.snippet)) {
924
+ pass(`${complianceRule.path} keeps canonical terminology rule: ${complianceRule.label}`);
925
+ } else {
926
+ fail(`${complianceRule.path} must keep canonical terminology rule: ${complianceRule.label}`);
927
+ }
782
928
  }
783
929
  }
784
930