@ryuenn3123/agentic-senior-core 2.5.16 → 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.
@@ -1,7 +1,7 @@
1
1
  # Prompts: Initialize Project
2
2
 
3
3
  > Copy-paste one of these prompts to your AI agent (Cursor, Windsurf, Copilot, Antigravity) right after cloning this repository.
4
- > V1.4 recommendation: run `bunx @fatidaprilian/agentic-senior-core init` first to compile dynamic governance context.
4
+ > V1.4 recommendation: run `bunx @fatidaprilian/agentic-senior-core init` first to compile dynamic rules operations context (Federated Governance baseline).
5
5
 
6
6
  ---
7
7
 
@@ -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:25:05.037Z",
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,7 +1,7 @@
1
1
  # AGENTIC-SENIOR-CORE DYNAMIC GOVERNANCE RULESET
2
2
 
3
- Generated by Agentic-Senior-Core CLI v2.5.16
4
- Timestamp: 2026-04-18T00:00:00.000Z
3
+ Generated by Agentic-Senior-Core CLI v2.5.18
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
7
7
 
package/.windsurfrules CHANGED
@@ -1,7 +1,7 @@
1
1
  # AGENTIC-SENIOR-CORE DYNAMIC GOVERNANCE RULESET
2
2
 
3
- Generated by Agentic-Senior-Core CLI v2.5.16
4
- Timestamp: 2026-04-18T00:00:00.000Z
3
+ Generated by Agentic-Senior-Core CLI v2.5.18
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
7
7
 
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>
@@ -74,7 +74,7 @@ If you see `Property $schema is not allowed`, keep `.vscode/mcp.json` without `$
74
74
 
75
75
  | Command | Purpose |
76
76
  |---------|---------|
77
- | `agentic-senior-core init` | Initialize governance context |
77
+ | `agentic-senior-core init` | Initialize rules operations context (Federated Governance baseline) |
78
78
  | `agentic-senior-core upgrade --dry-run` | Preview safe upgrades |
79
79
  | `agentic-senior-core optimize --show` | Show token optimization state |
80
80
  | `agentic-senior-core skill frontend --tier advance` | Select skill packs |
@@ -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
  ---
@@ -583,7 +583,7 @@ export async function runInitCommand(targetDirectoryArgument, initOptions = {})
583
583
  }
584
584
 
585
585
  console.log(`\nAgentic-Senior-Core CLI v${CLI_VERSION}`);
586
- console.log('I will copy governance files into your target folder and compile a single rulebook for your AI tools.');
586
+ console.log('I will copy rules operations assets (Federated Governance baseline) into your target folder and compile a single rulebook for your AI tools.');
587
587
 
588
588
  if (selectedPreset) {
589
589
  console.log(`Using preset: ${initOptions.preset} (${selectedPreset.description}).`);
@@ -881,7 +881,7 @@ export async function runInitCommand(targetDirectoryArgument, initOptions = {})
881
881
  ? selectedProfilePack.defaultCi
882
882
  : selectedProfile.lockCi
883
883
  ? selectedProfile.defaultCi
884
- : await askYesNo('Enable CI/CD guardrails and the LLM Judge policy?', userInterface, selectedProfile.defaultCi);
884
+ : await askYesNo('Enable CI/CD quality checks (guardrails) and the LLM Judge policy?', userInterface, selectedProfile.defaultCi);
885
885
 
886
886
  await copyGovernanceAssetsToTarget(resolvedTargetDirectoryPath, {
887
887
  includeMcpTemplate: shouldIncludeMcpTemplate,
@@ -1078,7 +1078,7 @@ export async function runInitCommand(targetDirectoryArgument, initOptions = {})
1078
1078
  console.log(`- Additional blueprints: ${selectedAdditionalBlueprintFileNames.map((blueprintFileName) => toTitleCase(blueprintFileName)).join(', ')}`);
1079
1079
  }
1080
1080
  console.log(`- Runtime environment: ${resolveRuntimeEnvironmentLabelFromKey(selectedRuntimeEnvironmentKey)} (detected: ${detectedRuntimeEnvironment.label})`);
1081
- console.log(`- CI/CD guardrails: ${includeCiGuardrails ? 'enabled' : 'disabled'}`);
1081
+ console.log(`- CI/CD quality checks (guardrails): ${includeCiGuardrails ? 'enabled' : 'disabled'}`);
1082
1082
  console.log(`- Blocking severities: ${formatBlockingSeverities(selectedProfile.blockingSeverities)}`);
1083
1083
  console.log(`- Setup time: ${formatDuration(setupDurationMs)}`);
1084
1084
  console.log('- Generated files: .cursorrules, .windsurfrules, and .agent-context/state/onboarding-report.json');
@@ -1099,7 +1099,7 @@ export async function runInitCommand(targetDirectoryArgument, initOptions = {})
1099
1099
  console.log('- Token optimization policy: disabled (--no-token-optimize)');
1100
1100
  }
1101
1101
  console.log('\nPlain-language summary:');
1102
- console.log(`I prepared a ${selectedProfile.displayName.toLowerCase()} governance pack for a ${toTitleCase(selectedResolvedStackFileName)} project using the ${toTitleCase(selectedResolvedBlueprintFileName)} blueprint.`);
1102
+ console.log(`I prepared a ${selectedProfile.displayName.toLowerCase()} rules operations pack (Federated Governance baseline) for a ${toTitleCase(selectedResolvedStackFileName)} project using the ${toTitleCase(selectedResolvedBlueprintFileName)} blueprint.`);
1103
1103
  if (selectedAdditionalStackFileNames.length > 0) {
1104
1104
  console.log(`I also included additional stack context for ${selectedAdditionalStackFileNames.map((stackFileName) => toTitleCase(stackFileName)).join(', ')}.`);
1105
1105
  }
@@ -100,7 +100,7 @@ export async function runUpgradeCommand(targetDirectoryArgument, upgradeOptions
100
100
 
101
101
  try {
102
102
  console.log(`\nAgentic-Senior-Core CLI v${CLI_VERSION}`);
103
- console.log('Running upgrade assistant for an existing repository.');
103
+ console.log('Running rules operations upgrade assistant (Federated Governance baseline) for an existing repository.');
104
104
 
105
105
  await copyGovernanceAssetsToTarget(resolvedTargetDirectoryPath, {
106
106
  includeMcpTemplate: upgradeOptions.includeMcpTemplate === true,
@@ -193,7 +193,7 @@ export async function runUpgradeCommand(targetDirectoryArgument, upgradeOptions
193
193
  if (selectedAdditionalBlueprintFileNames.length > 0) {
194
194
  console.log(`- Additional blueprints: ${selectedAdditionalBlueprintFileNames.map((blueprintFileName) => toTitleCase(blueprintFileName)).join(', ')}`);
195
195
  }
196
- console.log(`- CI/CD guardrails: ${includeCiGuardrails ? 'enabled' : 'disabled'}`);
196
+ console.log(`- CI/CD quality checks (guardrails): ${includeCiGuardrails ? 'enabled' : 'disabled'}`);
197
197
  console.log(`- Existing rules lines: ${currentRuleLineCount}`);
198
198
  console.log(`- Planned rules lines: ${plannedRuleLineCount}`);
199
199
  console.log(`- Rules changed: ${isRulesContentChanged ? 'yes' : 'no'}`);
package/lib/cli/utils.mjs CHANGED
@@ -49,7 +49,7 @@ export function printUsage() {
49
49
  console.log(' --project-description Architecture intent text used for stack/blueprint recommendation');
50
50
  console.log(' --architect-token-budget Max token estimate used by recommendation research (default: 900)');
51
51
  console.log(' --architect-timeout-ms Max recommendation research time in milliseconds (default: 1500)');
52
- console.log(' --ci Override CI/CD guardrails (true|false)');
52
+ console.log(' --ci Override CI/CD quality checks (guardrails) (true|false)');
53
53
  console.log(' --token-optimize Explicitly enable token optimization policy during init (default behavior)');
54
54
  console.log(' --token-agent Set token optimization agent target (copilot, claude, cursor, windsurf, gemini, codex, cline)');
55
55
  console.log(' --no-token-optimize Disable token optimization policy during init');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ryuenn3123/agentic-senior-core",
3
- "version": "2.5.16",
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": {
@@ -80,6 +80,81 @@ const REQUIRED_HUMAN_WRITING_SNIPPETS = [
80
80
  ],
81
81
  },
82
82
  ];
83
+ const TERMINOLOGY_REFERENCE_PATHS = [
84
+ 'README.md',
85
+ 'docs/roadmap.md',
86
+ ];
87
+ const REQUIRED_TERMINOLOGY_ROW_PATTERNS = [
88
+ {
89
+ label: 'Federated Governance -> Federated Rules Operations',
90
+ pattern: /\|\s*Federated Governance\s*\|\s*Federated Rules Operations\s*\|/u,
91
+ },
92
+ {
93
+ label: 'Governance Engine -> Rules Engine',
94
+ pattern: /\|\s*Governance Engine\s*\|\s*Rules Engine\s*\|/u,
95
+ },
96
+ {
97
+ label: 'Guardrails -> Quality Checks',
98
+ pattern: /\|\s*Guardrails\s*\|\s*Quality Checks\s*\|/u,
99
+ },
100
+ ];
101
+ const REQUIRED_TERMINOLOGY_RULE_SNIPPET =
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
+ ];
83
158
 
84
159
  const validationResult = {
85
160
  passed: 0,
@@ -192,6 +267,7 @@ async function validateRequiredFiles() {
192
267
  'CHANGELOG.md',
193
268
  'docs/faq.md',
194
269
  'docs/deep-dive.md',
270
+ 'docs/terminology-mapping.md',
195
271
  'docs/v1.7-execution-playbook.md',
196
272
  'docs/v1.7-issue-breakdown.md',
197
273
  'docs/v1.8-operations-playbook.md',
@@ -727,6 +803,131 @@ async function validateDocumentationFlow() {
727
803
  }
728
804
  }
729
805
 
806
+ async function validateTerminologyMapping() {
807
+ console.log('\nChecking terminology mapping consistency...');
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
+
843
+ for (const terminologyReferencePath of TERMINOLOGY_REFERENCE_PATHS) {
844
+ const absoluteReferencePath = join(ROOT_DIR, terminologyReferencePath);
845
+
846
+ if (!(await fileExists(absoluteReferencePath))) {
847
+ fail(`Missing terminology reference source: ${terminologyReferencePath}`);
848
+ continue;
849
+ }
850
+
851
+ const referenceContent = await readTextFile(absoluteReferencePath);
852
+
853
+ if (referenceContent.includes('Terminology Mapping (Final)')) {
854
+ pass(`${terminologyReferencePath} includes Terminology Mapping (Final)`);
855
+ } else {
856
+ fail(`${terminologyReferencePath} must include Terminology Mapping (Final)`);
857
+ }
858
+
859
+ for (const terminologyRowRule of REQUIRED_TERMINOLOGY_ROW_PATTERNS) {
860
+ if (terminologyRowRule.pattern.test(referenceContent)) {
861
+ pass(`${terminologyReferencePath} includes mapping row: ${terminologyRowRule.label}`);
862
+ } else {
863
+ fail(`${terminologyReferencePath} is missing mapping row: ${terminologyRowRule.label}`);
864
+ }
865
+ }
866
+
867
+ if (referenceContent.includes(REQUIRED_TERMINOLOGY_RULE_SNIPPET)) {
868
+ pass(`${terminologyReferencePath} includes first-mention canonical term rule`);
869
+ } else {
870
+ fail(`${terminologyReferencePath} must include first-mention canonical term rule`);
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
+ }
928
+ }
929
+ }
930
+
730
931
  async function validateMcpConfiguration() {
731
932
  console.log('\nChecking MCP configuration...');
732
933
 
@@ -975,6 +1176,7 @@ async function main() {
975
1176
  await validatePolicyFile();
976
1177
  await validateVersionConsistency();
977
1178
  await validateDocumentationFlow();
1179
+ await validateTerminologyMapping();
978
1180
  await validateMcpConfiguration();
979
1181
  await validateHumanWritingGovernance();
980
1182
  await validateInstructionAdapters();