aios-core 4.2.5 → 4.2.7

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.
Files changed (32) hide show
  1. package/.aios-core/core/code-intel/code-intel-client.js +280 -0
  2. package/.aios-core/core/code-intel/code-intel-enricher.js +159 -0
  3. package/.aios-core/core/code-intel/index.js +137 -0
  4. package/.aios-core/core/code-intel/providers/code-graph-provider.js +201 -0
  5. package/.aios-core/core/code-intel/providers/provider-interface.js +108 -0
  6. package/.aios-core/core/orchestration/context-manager.js +333 -5
  7. package/.aios-core/core/orchestration/dashboard-integration.js +17 -1
  8. package/.aios-core/core/orchestration/execution-profile-resolver.js +107 -0
  9. package/.aios-core/core/orchestration/index.js +3 -0
  10. package/.aios-core/core/orchestration/skill-dispatcher.js +2 -0
  11. package/.aios-core/core/orchestration/subagent-prompt-builder.js +2 -0
  12. package/.aios-core/core/orchestration/workflow-orchestrator.js +113 -5
  13. package/.aios-core/data/entity-registry.yaml +44 -22
  14. package/.aios-core/development/agents/ux-design-expert.md +1 -1
  15. package/.aios-core/development/checklists/brownfield-compatibility-checklist.md +114 -0
  16. package/.aios-core/development/scripts/workflow-state-manager.js +128 -1
  17. package/.aios-core/development/tasks/next.md +36 -5
  18. package/.aios-core/hooks/ids-post-commit.js +29 -1
  19. package/.aios-core/hooks/ids-pre-push.js +29 -1
  20. package/.aios-core/infrastructure/contracts/compatibility/aios-4.0.4.yaml +44 -0
  21. package/.aios-core/infrastructure/scripts/validate-parity.js +238 -2
  22. package/.aios-core/install-manifest.yaml +63 -27
  23. package/.aios-core/product/templates/brownfield-risk-report-tmpl.yaml +277 -0
  24. package/.aios-core/workflow-intelligence/engine/suggestion-engine.js +114 -5
  25. package/LICENSE +13 -1
  26. package/README.md +39 -9
  27. package/package.json +8 -6
  28. package/packages/installer/src/wizard/ide-config-generator.js +0 -117
  29. package/packages/installer/src/wizard/index.js +2 -118
  30. package/packages/installer/src/wizard/pro-setup.js +58 -12
  31. package/pro/license/license-api.js +9 -9
  32. package/scripts/semantic-lint.js +190 -0
@@ -252,12 +252,28 @@ class DashboardIntegration extends EventEmitter {
252
252
  await fs.writeJson(this.statusPath, status, { spaces: 2 });
253
253
  this.emit('statusUpdated', status);
254
254
  } catch (error) {
255
- this.emit('error', { type: 'statusUpdate', error });
255
+ this._emitSafeError({ type: 'statusUpdate', error });
256
256
  }
257
257
 
258
258
  return status;
259
259
  }
260
260
 
261
+ /**
262
+ * Emit error event only when listeners are present, otherwise degrade to warning.
263
+ * Avoids unhandled EventEmitter 'error' exceptions in background update flows.
264
+ * @private
265
+ * @param {Object} payload
266
+ */
267
+ _emitSafeError(payload) {
268
+ if (this.listenerCount('error') > 0) {
269
+ this.emit('error', payload);
270
+ return;
271
+ }
272
+
273
+ const message = payload?.error?.message || 'unknown dashboard error';
274
+ console.warn(`[DashboardIntegration] ${payload?.type || 'error'}: ${message}`);
275
+ }
276
+
261
277
  /**
262
278
  * Build status object (AC2)
263
279
  * @returns {Object} Status object
@@ -0,0 +1,107 @@
1
+ 'use strict';
2
+
3
+ const VALID_PROFILES = ['safe', 'balanced', 'aggressive'];
4
+ const VALID_CONTEXTS = ['production', 'migration', 'security-sensitive', 'development'];
5
+
6
+ const PROFILE_POLICIES = {
7
+ safe: {
8
+ require_confirmation: true,
9
+ require_tests_before_handoff: true,
10
+ max_parallel_changes: 1,
11
+ allow_destructive_operations: false,
12
+ allow_autonomous_refactors: false,
13
+ },
14
+ balanced: {
15
+ require_confirmation: 'high-risk-only',
16
+ require_tests_before_handoff: true,
17
+ max_parallel_changes: 3,
18
+ allow_destructive_operations: false,
19
+ allow_autonomous_refactors: true,
20
+ },
21
+ aggressive: {
22
+ require_confirmation: false,
23
+ require_tests_before_handoff: false,
24
+ max_parallel_changes: 8,
25
+ allow_destructive_operations: false,
26
+ allow_autonomous_refactors: true,
27
+ },
28
+ };
29
+
30
+ function normalizeProfile(profile) {
31
+ const value = String(profile || '').trim().toLowerCase();
32
+ return VALID_PROFILES.includes(value) ? value : null;
33
+ }
34
+
35
+ function normalizeContext(context) {
36
+ const value = String(context || '').trim().toLowerCase();
37
+ return VALID_CONTEXTS.includes(value) ? value : 'development';
38
+ }
39
+
40
+ function resolveExecutionProfile(input = {}) {
41
+ const context = normalizeContext(input.context);
42
+ const explicitProfile = normalizeProfile(input.explicitProfile);
43
+ const yolo = Boolean(input.yolo);
44
+ const reasons = [];
45
+
46
+ if (explicitProfile) {
47
+ reasons.push(`explicit profile selected: ${explicitProfile}`);
48
+ return {
49
+ profile: explicitProfile,
50
+ context,
51
+ policy: PROFILE_POLICIES[explicitProfile],
52
+ reasons,
53
+ source: 'explicit',
54
+ };
55
+ }
56
+
57
+ if (context === 'production' || context === 'security-sensitive') {
58
+ reasons.push(`context "${context}" enforces safe profile`);
59
+ return {
60
+ profile: 'safe',
61
+ context,
62
+ policy: PROFILE_POLICIES.safe,
63
+ reasons,
64
+ source: 'context',
65
+ };
66
+ }
67
+
68
+ if (context === 'migration') {
69
+ reasons.push('migration context enforces balanced profile');
70
+ return {
71
+ profile: 'balanced',
72
+ context,
73
+ policy: PROFILE_POLICIES.balanced,
74
+ reasons,
75
+ source: 'context',
76
+ };
77
+ }
78
+
79
+ if (yolo) {
80
+ reasons.push('yolo mode enabled for non-critical context');
81
+ return {
82
+ profile: 'aggressive',
83
+ context,
84
+ policy: PROFILE_POLICIES.aggressive,
85
+ reasons,
86
+ source: 'yolo',
87
+ };
88
+ }
89
+
90
+ reasons.push('default profile for standard development context');
91
+ return {
92
+ profile: 'balanced',
93
+ context,
94
+ policy: PROFILE_POLICIES.balanced,
95
+ reasons,
96
+ source: 'default',
97
+ };
98
+ }
99
+
100
+ module.exports = {
101
+ VALID_PROFILES,
102
+ VALID_CONTEXTS,
103
+ PROFILE_POLICIES,
104
+ normalizeProfile,
105
+ normalizeContext,
106
+ resolveExecutionProfile,
107
+ };
@@ -22,6 +22,7 @@ const ParallelExecutor = require('./parallel-executor');
22
22
  const TechStackDetector = require('./tech-stack-detector');
23
23
  const ConditionEvaluator = require('./condition-evaluator');
24
24
  const SkillDispatcher = require('./skill-dispatcher');
25
+ const executionProfileResolver = require('./execution-profile-resolver');
25
26
 
26
27
  // Epic 0: Master Orchestrator (ADE)
27
28
  const MasterOrchestrator = require('./master-orchestrator');
@@ -159,6 +160,8 @@ module.exports = {
159
160
  TechStackDetector,
160
161
  ConditionEvaluator,
161
162
  SkillDispatcher,
163
+ ExecutionProfileResolver: executionProfileResolver,
164
+ resolveExecutionProfile: executionProfileResolver.resolveExecutionProfile,
162
165
 
163
166
  // Epic 0: Orchestrator constants
164
167
  OrchestratorState: MasterOrchestrator.OrchestratorState,
@@ -170,6 +170,8 @@ class SkillDispatcher {
170
170
  workflowId: context.workflowId,
171
171
  yoloMode: context.yoloMode || false,
172
172
  previousPhases: context.previousPhases || {},
173
+ executionProfile: context.executionProfile || null,
174
+ executionPolicy: context.executionPolicy || null,
173
175
  },
174
176
  };
175
177
  }
@@ -299,7 +299,9 @@ ${agentDef}
299
299
  **Task File:** ${taskFile}
300
300
  **Expected Output:** ${context.creates || 'See task definition'}
301
301
  **Execution Mode:** ${context.yoloMode ? 'YOLO (autonomous)' : 'Interactive'}
302
+ **Execution Profile:** ${context.executionProfile || 'balanced'}
302
303
  **Elicitation Required:** ${context.elicit ? 'Yes' : 'No'}
304
+ **Risk Policy:** ${JSON.stringify(context.executionPolicy || {}, null, 0)}
303
305
 
304
306
  ### Complete Task Definition:
305
307
 
@@ -23,6 +23,7 @@ const ChecklistRunner = require('./checklist-runner');
23
23
  const TechStackDetector = require('./tech-stack-detector');
24
24
  const ConditionEvaluator = require('./condition-evaluator');
25
25
  const SkillDispatcher = require('./skill-dispatcher');
26
+ const { resolveExecutionProfile } = require('./execution-profile-resolver');
26
27
 
27
28
  /**
28
29
  * Orchestrates multi-agent workflow execution
@@ -41,11 +42,15 @@ class WorkflowOrchestrator {
41
42
  this.workflowPath = workflowPath;
42
43
  this.options = {
43
44
  yolo: options.yolo || false,
45
+ executionProfile: options.executionProfile || null,
46
+ executionContext: options.executionContext || 'development',
44
47
  parallel: options.parallel !== false, // Default true
45
48
  onPhaseStart: options.onPhaseStart || this._defaultPhaseStart.bind(this),
46
49
  onPhaseComplete: options.onPhaseComplete || this._defaultPhaseComplete.bind(this),
47
50
  dispatchSubagent: options.dispatchSubagent || null,
48
51
  projectRoot: options.projectRoot || process.cwd(),
52
+ confidenceThreshold: this._resolveConfidenceThreshold(options.confidenceThreshold),
53
+ enableConfidenceGate: options.enableConfidenceGate !== false,
49
54
  };
50
55
 
51
56
  this.workflow = null;
@@ -59,6 +64,11 @@ class WorkflowOrchestrator {
59
64
  this.skillDispatcher = new SkillDispatcher(this.options);
60
65
  this.conditionEvaluator = null; // Initialized after pre-flight detection
61
66
  this.techStackProfile = null; // Populated by pre-flight detection
67
+ this.executionProfile = resolveExecutionProfile({
68
+ explicitProfile: this.options.executionProfile,
69
+ context: this.options.executionContext,
70
+ yolo: this.options.yolo,
71
+ });
62
72
 
63
73
  // Execution state
64
74
  this.executionState = {
@@ -395,8 +405,15 @@ class WorkflowOrchestrator {
395
405
  }
396
406
  }
397
407
 
398
- // Generate execution summary
399
- return this._generateExecutionSummary();
408
+ // Generate execution summary + confidence gate
409
+ const summary = this._generateExecutionSummary();
410
+ if (summary.confidenceGate?.enabled && !summary.confidenceGate.passed) {
411
+ await this.contextManager.markFailed(
412
+ `Delivery confidence ${summary.deliveryConfidence.score}% below threshold ${summary.confidenceGate.threshold}%`,
413
+ this.executionState.currentPhase,
414
+ );
415
+ }
416
+ return summary;
400
417
  }
401
418
 
402
419
  /**
@@ -478,7 +495,9 @@ class WorkflowOrchestrator {
478
495
 
479
496
  // V3.1: Save skip result to context with reason
480
497
  const skipResult = this.skillDispatcher.createSkipResult(phase, skipReason);
481
- await this.contextManager.savePhaseOutput(phaseNum, skipResult);
498
+ await this.contextManager.savePhaseOutput(phaseNum, skipResult, {
499
+ handoffTarget: this._getNextPhaseHandoffTarget(phaseNum),
500
+ });
482
501
 
483
502
  return { skipped: true, phase: phaseNum, reason: skipReason };
484
503
  }
@@ -522,6 +541,8 @@ class WorkflowOrchestrator {
522
541
  notes: phase.notes,
523
542
  checklist: phase.checklist,
524
543
  template: phase.template,
544
+ executionProfile: this.executionProfile.profile,
545
+ executionPolicy: this.executionProfile.policy,
525
546
  },
526
547
  );
527
548
 
@@ -534,6 +555,8 @@ class WorkflowOrchestrator {
534
555
  ...context,
535
556
  workflowId: this.workflow.workflow?.id,
536
557
  yoloMode: this.options.yolo,
558
+ executionProfile: this.executionProfile.profile,
559
+ executionPolicy: this.executionProfile.policy,
537
560
  previousPhases: this.executionState.completedPhases,
538
561
  },
539
562
  techStackProfile: this.techStackProfile,
@@ -545,6 +568,11 @@ class WorkflowOrchestrator {
545
568
  ` 🚀 ${this.skillDispatcher.formatDispatchLog(dispatchPayload).split('\n')[0]}`,
546
569
  ),
547
570
  );
571
+ console.log(
572
+ chalk.gray(
573
+ ` 🛡️ Execution profile: ${this.executionProfile.profile} (${this.executionProfile.context})`,
574
+ ),
575
+ );
548
576
 
549
577
  // Dispatch to subagent
550
578
  let result;
@@ -556,7 +584,8 @@ class WorkflowOrchestrator {
556
584
  agentId: phase.agent,
557
585
  prompt,
558
586
  phase,
559
- context,
587
+ context: dispatchPayload.context,
588
+ baseContext: context,
560
589
  });
561
590
 
562
591
  // V3.1: Parse and normalize skill output
@@ -586,6 +615,8 @@ class WorkflowOrchestrator {
586
615
  result,
587
616
  validation,
588
617
  timestamp: new Date().toISOString(),
618
+ }, {
619
+ handoffTarget: this._getNextPhaseHandoffTarget(phaseNum),
589
620
  });
590
621
 
591
622
  // Notify phase complete
@@ -615,6 +646,31 @@ class WorkflowOrchestrator {
615
646
  return this._evaluateConditionLegacy(condition);
616
647
  }
617
648
 
649
+ /**
650
+ * Determine next phase handoff target from workflow sequence.
651
+ * @private
652
+ */
653
+ _getNextPhaseHandoffTarget(currentPhaseNum) {
654
+ const sequence = Array.isArray(this.workflow?.sequence) ? this.workflow.sequence : [];
655
+ const currentIndex = sequence.findIndex((p) => p && p.phase === currentPhaseNum);
656
+ if (currentIndex < 0) {
657
+ return { phase: null, agent: null };
658
+ }
659
+
660
+ for (let i = currentIndex + 1; i < sequence.length; i += 1) {
661
+ const next = sequence[i];
662
+ if (!next || next.workflow_end || !next.phase) {
663
+ continue;
664
+ }
665
+ return {
666
+ phase: next.phase,
667
+ agent: next.agent || null,
668
+ };
669
+ }
670
+
671
+ return { phase: null, agent: null };
672
+ }
673
+
618
674
  /**
619
675
  * Legacy condition evaluation (backward compatibility)
620
676
  * @private
@@ -703,7 +759,8 @@ class WorkflowOrchestrator {
703
759
  const minutes = Math.floor(duration / 60000);
704
760
  const seconds = Math.floor((duration % 60000) / 1000);
705
761
 
706
- return {
762
+ const deliveryConfidence = this.contextManager?.getDeliveryConfidence?.() || null;
763
+ const summary = {
707
764
  workflow: this.workflow.workflow?.id,
708
765
  status: this.executionState.failedPhases.length === 0 ? 'completed' : 'completed_with_errors',
709
766
  duration: `${minutes}m ${seconds}s`,
@@ -717,6 +774,57 @@ class WorkflowOrchestrator {
717
774
  failedPhases: this.executionState.failedPhases,
718
775
  skippedPhases: this.executionState.skippedPhases,
719
776
  outputs: this.contextManager?.getPreviousPhaseOutputs() || {},
777
+ deliveryConfidence,
778
+ };
779
+
780
+ const confidenceGate = this._evaluateConfidenceGate(deliveryConfidence);
781
+ if (confidenceGate.enabled) {
782
+ summary.confidenceGate = confidenceGate;
783
+ if (!confidenceGate.passed && summary.status === 'completed') {
784
+ summary.status = 'failed_confidence_gate';
785
+ }
786
+ }
787
+
788
+ return summary;
789
+ }
790
+
791
+ /**
792
+ * Resolve confidence threshold from explicit option > env > default.
793
+ * @private
794
+ */
795
+ _resolveConfidenceThreshold(explicitThreshold) {
796
+ const explicit = Number(explicitThreshold);
797
+ if (Number.isFinite(explicit)) {
798
+ return explicit;
799
+ }
800
+ const envThreshold = Number(process.env.AIOS_DELIVERY_CONFIDENCE_THRESHOLD);
801
+ return Number.isFinite(envThreshold) ? envThreshold : 70;
802
+ }
803
+
804
+ /**
805
+ * Evaluate delivery confidence gate.
806
+ * @private
807
+ */
808
+ _evaluateConfidenceGate(deliveryConfidence) {
809
+ if (!this.options.enableConfidenceGate) {
810
+ return { enabled: false, threshold: this.options.confidenceThreshold, passed: true };
811
+ }
812
+
813
+ if (!deliveryConfidence || !Number.isFinite(deliveryConfidence.score)) {
814
+ return {
815
+ enabled: true,
816
+ threshold: this.options.confidenceThreshold,
817
+ passed: false,
818
+ reason: 'delivery_confidence_unavailable',
819
+ };
820
+ }
821
+
822
+ const passed = deliveryConfidence.score >= this.options.confidenceThreshold;
823
+ return {
824
+ enabled: true,
825
+ threshold: this.options.confidenceThreshold,
826
+ score: deliveryConfidence.score,
827
+ passed,
720
828
  };
721
829
  }
722
830
 
@@ -1,7 +1,7 @@
1
1
  metadata:
2
2
  version: 1.0.0
3
- lastUpdated: '2026-02-16T01:40:14.162Z'
4
- entityCount: 505
3
+ lastUpdated: '2026-02-16T04:49:07.416Z'
4
+ entityCount: 506
5
5
  checksumAlgorithm: sha256
6
6
  entities:
7
7
  tasks:
@@ -1952,13 +1952,14 @@ entities:
1952
1952
  usedBy: []
1953
1953
  dependencies:
1954
1954
  - suggestion-engine
1955
+ - workflow-state-manager
1955
1956
  - output-formatter
1956
1957
  adaptability:
1957
1958
  score: 0.8
1958
1959
  constraints: []
1959
1960
  extensionPoints: []
1960
- checksum: sha256:8ba7dc4567c0c7bf7001f0a26650767f72f45442d312daeb0e321ba4605ce429
1961
- lastVerified: '2026-02-15T19:17:32.644Z'
1961
+ checksum: sha256:d9c84f8892367cd8e1bd453dd08876d051bcc368ca9eacf5d2babb26235427fb
1962
+ lastVerified: '2026-02-16T01:52:27.944Z'
1962
1963
  orchestrate-resume:
1963
1964
  path: .aios-core/development/tasks/orchestrate-resume.md
1964
1965
  type: task
@@ -4764,21 +4765,24 @@ entities:
4764
4765
  extensionPoints: []
4765
4766
  checksum: sha256:e8345404f17977a268b917a4ff86e4f10f80174a6bb572865e5413c8f7dd217a
4766
4767
  lastVerified: '2026-02-15T17:43:13.184Z'
4767
- statusline-script:
4768
- path: .aios-core/product/templates/statusline/statusline-script.js
4768
+ brownfield-risk-report-tmpl:
4769
+ path: .aios-core/product/templates/brownfield-risk-report-tmpl.yaml
4769
4770
  type: template
4770
- purpose: Entity at .aios-core\product\templates\statusline\statusline-script.js
4771
+ purpose: '>'
4771
4772
  keywords:
4772
- - statusline
4773
- - script
4773
+ - brownfield
4774
+ - risk
4775
+ - report
4776
+ - tmpl
4777
+ - template
4774
4778
  usedBy: []
4775
4779
  dependencies: []
4776
4780
  adaptability:
4777
4781
  score: 0.5
4778
4782
  constraints: []
4779
4783
  extensionPoints: []
4780
- checksum: sha256:352b928acd0a477875192ce96fa3aebb278fe9d9b55bc24a144e7aaafa180b45
4781
- lastVerified: '2026-02-16T01:40:14.160Z'
4784
+ checksum: sha256:173adec3131f0924bc7d64c10f54386bb85dcadc14e6ff3fb9bb2f8172caf162
4785
+ lastVerified: '2026-02-16T04:49:07.415Z'
4782
4786
  scripts:
4783
4787
  agent-assignment-resolver:
4784
4788
  path: .aios-core/development/scripts/agent-assignment-resolver.js
@@ -5726,20 +5730,21 @@ entities:
5726
5730
  workflow-state-manager:
5727
5731
  path: .aios-core/development/scripts/workflow-state-manager.js
5728
5732
  type: script
5729
- purpose: Entity at .aios-core\development\scripts\workflow-state-manager.js
5733
+ purpose: Entity at .aios-core/development/scripts/workflow-state-manager.js
5730
5734
  keywords:
5731
5735
  - workflow
5732
5736
  - state
5733
5737
  - manager
5734
5738
  usedBy:
5739
+ - next
5735
5740
  - verify-workflow-gaps
5736
5741
  dependencies: []
5737
5742
  adaptability:
5738
5743
  score: 0.7
5739
5744
  constraints: []
5740
5745
  extensionPoints: []
5741
- checksum: sha256:56758b8af8b53b74b89b758d84feda85b73ea196704c2969573d183025f052d7
5742
- lastVerified: '2026-02-08T13:33:24.304Z'
5746
+ checksum: sha256:89177df1184e1650ba3e9aad18c9a3b07f6b77711f0271949e8676701695e431
5747
+ lastVerified: '2026-02-16T01:52:27.944Z'
5743
5748
  workflow-validator:
5744
5749
  path: .aios-core/development/scripts/workflow-validator.js
5745
5750
  type: script
@@ -6817,7 +6822,7 @@ entities:
6817
6822
  context-manager:
6818
6823
  path: .aios-core/core/orchestration/context-manager.js
6819
6824
  type: module
6820
- purpose: Entity at .aios-core\core\orchestration\context-manager.js
6825
+ purpose: Entity at .aios-core/core/orchestration/context-manager.js
6821
6826
  keywords:
6822
6827
  - context
6823
6828
  - manager
@@ -6828,8 +6833,8 @@ entities:
6828
6833
  score: 0.4
6829
6834
  constraints: []
6830
6835
  extensionPoints: []
6831
- checksum: sha256:91b4e84f1a6246f9a1c94191a096bf9ee26b668610cc3fe7aec893931f54d241
6832
- lastVerified: '2026-02-08T13:33:24.342Z'
6836
+ checksum: sha256:0dd03e84d0a2ea06165825c5eb7154531337ef98275918119ccd03769af576c3
6837
+ lastVerified: '2026-02-16T02:23:49.802Z'
6833
6838
  dashboard-integration:
6834
6839
  path: .aios-core/core/orchestration/dashboard-integration.js
6835
6840
  type: module
@@ -7061,8 +7066,8 @@ entities:
7061
7066
  score: 0.4
7062
7067
  constraints: []
7063
7068
  extensionPoints: []
7064
- checksum: sha256:0a2dcf12cb8b04c26006c57016cf0d651332e60dee09762f88927c216464abde
7065
- lastVerified: '2026-02-08T13:33:24.350Z'
7069
+ checksum: sha256:4a54fec3a3338431d1d9634ebf06f3983d06903570c45d67d0ac15d25c95eb05
7070
+ lastVerified: '2026-02-16T02:23:49.802Z'
7066
7071
  subagent-prompt-builder:
7067
7072
  path: .aios-core/core/orchestration/subagent-prompt-builder.js
7068
7073
  type: module
@@ -7175,7 +7180,7 @@ entities:
7175
7180
  workflow-orchestrator:
7176
7181
  path: .aios-core/core/orchestration/workflow-orchestrator.js
7177
7182
  type: module
7178
- purpose: Entity at .aios-core\core\orchestration\workflow-orchestrator.js
7183
+ purpose: Entity at .aios-core/core/orchestration/workflow-orchestrator.js
7179
7184
  keywords:
7180
7185
  - workflow
7181
7186
  - orchestrator
@@ -7188,12 +7193,13 @@ entities:
7188
7193
  - tech-stack-detector
7189
7194
  - condition-evaluator
7190
7195
  - skill-dispatcher
7196
+ - execution-profile-resolver
7191
7197
  adaptability:
7192
7198
  score: 0.4
7193
7199
  constraints: []
7194
7200
  extensionPoints: []
7195
- checksum: sha256:fb89682ea86d33bf8453062f82be0313fbfdf4da42ebf0220dd12dc29238a50a
7196
- lastVerified: '2026-02-08T13:33:24.353Z'
7201
+ checksum: sha256:5d3f14d5f12742ce87c3ae8745f82f4ac9f3df3d1889cf16bfc13743130963f9
7202
+ lastVerified: '2026-02-16T02:23:49.803Z'
7197
7203
  operation-guard:
7198
7204
  path: .aios-core/core/permissions/operation-guard.js
7199
7205
  type: module
@@ -9016,6 +9022,22 @@ entities:
9016
9022
  extensionPoints: []
9017
9023
  checksum: sha256:869fbc8fbc333ac8eea4eca3ea4ab9ca79917fa5e53735b70d634c85ac6420c8
9018
9024
  lastVerified: '2026-02-08T13:33:24.391Z'
9025
+ brownfield-compatibility-checklist:
9026
+ path: .aios-core/development/checklists/brownfield-compatibility-checklist.md
9027
+ type: checklist
9028
+ purpose: Brownfield Compatibility Checklist
9029
+ keywords:
9030
+ - brownfield
9031
+ - compatibility
9032
+ - checklist
9033
+ usedBy: []
9034
+ dependencies: []
9035
+ adaptability:
9036
+ score: 0.6
9037
+ constraints: []
9038
+ extensionPoints: []
9039
+ checksum: sha256:d07b1f9e2fcb78f62188ef05a6e6f75a94821b6bb297ea67f2e782e260d27f49
9040
+ lastVerified: '2026-02-16T04:49:07.414Z'
9019
9041
  data:
9020
9042
  agent-config-requirements:
9021
9043
  path: .aios-core/data/agent-config-requirements.yaml
@@ -196,7 +196,7 @@ commands:
196
196
 
197
197
  # === UNIVERSAL COMMANDS ===
198
198
  scan {path|url}: 'Analyze HTML/React artifact for patterns'
199
- integrate {pack}: 'Connect with squad'
199
+ integrate {squad}: 'Connect with squad'
200
200
  help: 'Show all commands organized by phase'
201
201
  status: 'Show current workflow phase'
202
202
  guide: 'Show comprehensive usage guide for this agent'
@@ -0,0 +1,114 @@
1
+ # Brownfield Compatibility Checklist
2
+
3
+ > Story AIOS-DIFF-4.3.2: Checklist formal de compatibilidade retroativa
4
+
5
+ ## Pre-Migration Compatibility Check
6
+
7
+ ### 1. Source Control Status
8
+ - [ ] All changes committed to version control
9
+ - [ ] Working branch created from main/master
10
+ - [ ] Remote backup verified (push before migration)
11
+
12
+ ### 2. Existing Configuration Preservation
13
+ - [ ] `.env` files backed up (never overwritten by AIOS)
14
+ - [ ] `package.json` scripts preserved
15
+ - [ ] Existing linting config (.eslintrc, .prettierrc) detected
16
+ - [ ] CI/CD workflows (.github/workflows) inventoried
17
+
18
+ ### 3. Dependency Compatibility
19
+ - [ ] Node.js version compatible (>=18)
20
+ - [ ] No conflicting global dependencies
21
+ - [ ] Lock file (package-lock.json/yarn.lock) preserved
22
+
23
+ ### 4. Directory Structure Analysis
24
+ - [ ] `docs/` directory status checked (empty/existing)
25
+ - [ ] `.aios-core/` not present (fresh install)
26
+ - [ ] No naming conflicts with AIOS directories
27
+
28
+ ## During Migration Checks
29
+
30
+ ### 5. Non-Destructive Operations
31
+ - [ ] AIOS creates new files, never overwrites existing
32
+ - [ ] Merge conflicts surfaced for user decision
33
+ - [ ] Original files preserved with `.backup` if conflict
34
+
35
+ ### 6. Configuration Merge Strategy
36
+ - [ ] Existing `.gitignore` entries preserved + AIOS entries added
37
+ - [ ] TypeScript config extended (not replaced) if existing
38
+ - [ ] ESLint rules merged (not overwritten)
39
+
40
+ ### 7. Rollback Points
41
+ - [ ] Pre-migration commit hash recorded
42
+ - [ ] AIOS files clearly identified (can be removed cleanly)
43
+ - [ ] No modifications to existing source code during install
44
+
45
+ ## Post-Migration Validation
46
+
47
+ ### 8. Existing Functionality
48
+ - [ ] `npm test` passes (if tests existed before)
49
+ - [ ] `npm run build` succeeds (if build existed)
50
+ - [ ] Application starts normally
51
+
52
+ ### 9. AIOS Integration
53
+ - [ ] `npx aios-core doctor` reports healthy
54
+ - [ ] Agent activation works (@dev, @architect, etc.)
55
+ - [ ] Existing docs not duplicated
56
+
57
+ ### 10. Rollback Verification
58
+ - [ ] `git diff HEAD~1` shows only AIOS additions
59
+ - [ ] `git checkout HEAD~1 -- .` would restore pre-AIOS state
60
+ - [ ] No orphaned AIOS processes or files
61
+
62
+ ---
63
+
64
+ ## Compatibility Matrix
65
+
66
+ | Existing Config | AIOS Behavior | User Action Required |
67
+ |-----------------|---------------|---------------------|
68
+ | `.eslintrc.*` | Detect + preserve | None |
69
+ | `.prettierrc.*` | Detect + preserve | None |
70
+ | `tsconfig.json` | Extend (not replace) | Review extends |
71
+ | `jest.config.*` | Detect + preserve | None |
72
+ | `docs/*.md` | Skip (don't overwrite) | Manual merge if needed |
73
+ | `.github/workflows/*` | Inventory only | User decides integration |
74
+ | `package.json` scripts | Preserve all | None |
75
+
76
+ ## Rollback Procedure
77
+
78
+ If migration fails or is unwanted:
79
+
80
+ ```bash
81
+ # Option 1: Full rollback to pre-migration state
82
+ git checkout HEAD~1 -- .
83
+
84
+ # Option 2: Remove only AIOS files
85
+ rm -rf .aios-core/
86
+ rm -rf docs/architecture/ docs/prd/ docs/stories/
87
+ # Review and revert .gitignore AIOS entries
88
+
89
+ # Option 3: Soft rollback (keep docs, remove runtime)
90
+ rm -rf .aios-core/
91
+ ```
92
+
93
+ ---
94
+
95
+ ## Checklist Usage
96
+
97
+ **Pre-Migration:**
98
+ ```bash
99
+ # Run compatibility check
100
+ npx aios-core doctor --pre-migration
101
+ ```
102
+
103
+ **Post-Migration:**
104
+ ```bash
105
+ # Validate migration
106
+ npx aios-core doctor
107
+ npm test # if tests exist
108
+ npm run build # if build exists
109
+ ```
110
+
111
+ ---
112
+
113
+ *AIOS Brownfield Compatibility Checklist v1.0*
114
+ *Story AIOS-DIFF-4.3.2*