@aria_asi/cli 0.2.32 → 0.2.34

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 (93) hide show
  1. package/dist/aria-connector/src/connectors/codebase-awareness.d.ts +8 -1
  2. package/dist/aria-connector/src/connectors/codebase-awareness.d.ts.map +1 -1
  3. package/dist/aria-connector/src/connectors/codebase-awareness.js +126 -71
  4. package/dist/aria-connector/src/connectors/codebase-awareness.js.map +1 -1
  5. package/dist/aria-connector/src/connectors/codex.d.ts.map +1 -1
  6. package/dist/aria-connector/src/connectors/codex.js +98 -0
  7. package/dist/aria-connector/src/connectors/codex.js.map +1 -1
  8. package/dist/aria-connector/src/setup-wizard.d.ts.map +1 -1
  9. package/dist/aria-connector/src/setup-wizard.js +91 -24
  10. package/dist/aria-connector/src/setup-wizard.js.map +1 -1
  11. package/dist/assets/hooks/aria-harness-via-sdk.mjs +26 -8
  12. package/dist/assets/hooks/aria-pre-tool-gate.mjs +60 -1
  13. package/dist/assets/hooks/aria-stop-gate.mjs +69 -3
  14. package/dist/assets/hooks/doctrine_trigger_map.json +43 -0
  15. package/dist/assets/hooks/lib/domain-output-quality.mjs +103 -0
  16. package/dist/assets/hooks/lib/skill-autoload-gate.mjs +14 -0
  17. package/dist/assets/opencode-plugins/harness-context/index.js +1 -1
  18. package/dist/assets/opencode-plugins/harness-gate/index.js +114 -10
  19. package/dist/assets/opencode-plugins/harness-gate/lib/skill-autoload-gate.js +14 -0
  20. package/dist/assets/opencode-plugins/harness-outcome/index.js +39 -0
  21. package/dist/assets/opencode-plugins/harness-stop/index.js +234 -139
  22. package/dist/assets/opencode-plugins/harness-stop/lib/domain-output-quality.js +103 -0
  23. package/dist/assets/opencode-plugins/harness-stop/lib/skill-autoload-gate.js +14 -0
  24. package/dist/runtime/codex-bridge.mjs +71 -8
  25. package/dist/runtime/discipline/CLAUDE.md +2 -2
  26. package/dist/runtime/discipline/doctrine_trigger_map.json +43 -0
  27. package/dist/runtime/discipline/skills/aria-harness/aria-harness-onboarding/SKILL.md +3 -3
  28. package/dist/runtime/doctrine_trigger_map.json +43 -0
  29. package/dist/runtime/harness-daemon.mjs +50 -2
  30. package/dist/runtime/hooks/aria-agent-handoff.mjs +247 -0
  31. package/dist/runtime/hooks/aria-agent-ledger-merge.mjs +164 -0
  32. package/dist/runtime/hooks/aria-architect-fallback.mjs +267 -0
  33. package/dist/runtime/hooks/aria-cognition-substrate-binding.mjs +761 -0
  34. package/dist/runtime/hooks/aria-discovery-record.mjs +101 -0
  35. package/dist/runtime/hooks/aria-harness-via-sdk.mjs +544 -0
  36. package/dist/runtime/hooks/aria-import-resolution-gate.mjs +330 -0
  37. package/dist/runtime/hooks/aria-outcome-record.mjs +84 -0
  38. package/dist/runtime/hooks/aria-pre-emit-dryrun.mjs +329 -0
  39. package/dist/runtime/hooks/aria-pre-text-gate.mjs +112 -0
  40. package/dist/runtime/hooks/aria-pre-tool-gate.mjs +2482 -0
  41. package/dist/runtime/hooks/aria-preprompt-consult.mjs +464 -0
  42. package/dist/runtime/hooks/aria-preturn-memory-gate.mjs +647 -0
  43. package/dist/runtime/hooks/aria-repo-doctrine-gate.mjs +429 -0
  44. package/dist/runtime/hooks/aria-stop-gate.mjs +1882 -0
  45. package/dist/runtime/hooks/aria-trigger-autolearn.mjs +229 -0
  46. package/dist/runtime/hooks/aria-userprompt-abandon-detect.mjs +192 -0
  47. package/dist/runtime/hooks/doctrine_trigger_map.json +577 -0
  48. package/dist/runtime/hooks/lib/canonical-lenses.mjs +65 -0
  49. package/dist/runtime/hooks/lib/domain-output-quality.mjs +103 -0
  50. package/dist/runtime/hooks/lib/gate-audit.mjs +43 -0
  51. package/dist/runtime/hooks/lib/gate-loop-state.mjs +50 -0
  52. package/dist/runtime/hooks/lib/hook-message-window.mjs +121 -0
  53. package/dist/runtime/hooks/lib/skill-autoload-gate.mjs +14 -0
  54. package/dist/runtime/hooks/test-aria-preturn-memory-gate.mjs +245 -0
  55. package/dist/runtime/hooks/test-tier-lens-labeling.mjs +367 -0
  56. package/dist/runtime/manifest.json +2 -2
  57. package/dist/runtime/sdk/BUNDLED.json +2 -2
  58. package/dist/runtime/sdk/index.d.ts +48 -0
  59. package/dist/runtime/sdk/index.js +140 -1
  60. package/dist/runtime/sdk/index.js.map +1 -1
  61. package/dist/runtime/sdk/runWithGovernance.d.ts +16 -0
  62. package/dist/runtime/sdk/runWithGovernance.js +54 -0
  63. package/dist/runtime/sdk/runWithGovernance.js.map +1 -0
  64. package/dist/runtime/service.mjs +339 -10
  65. package/dist/sdk/BUNDLED.json +2 -2
  66. package/dist/sdk/index.d.ts +48 -0
  67. package/dist/sdk/index.js +140 -1
  68. package/dist/sdk/index.js.map +1 -1
  69. package/dist/sdk/runWithGovernance.d.ts +16 -0
  70. package/dist/sdk/runWithGovernance.js +54 -0
  71. package/dist/sdk/runWithGovernance.js.map +1 -0
  72. package/hooks/aria-harness-via-sdk.mjs +26 -8
  73. package/hooks/aria-pre-tool-gate.mjs +60 -1
  74. package/hooks/aria-stop-gate.mjs +69 -3
  75. package/hooks/doctrine_trigger_map.json +43 -0
  76. package/hooks/lib/domain-output-quality.mjs +103 -0
  77. package/hooks/lib/skill-autoload-gate.mjs +14 -0
  78. package/opencode-plugins/harness-context/index.js +1 -1
  79. package/opencode-plugins/harness-gate/index.js +114 -10
  80. package/opencode-plugins/harness-gate/lib/skill-autoload-gate.js +14 -0
  81. package/opencode-plugins/harness-outcome/index.js +39 -0
  82. package/opencode-plugins/harness-stop/index.js +234 -139
  83. package/opencode-plugins/harness-stop/lib/domain-output-quality.js +103 -0
  84. package/opencode-plugins/harness-stop/lib/skill-autoload-gate.js +14 -0
  85. package/package.json +12 -5
  86. package/runtime-src/codex-bridge.mjs +71 -8
  87. package/runtime-src/harness-daemon.mjs +50 -2
  88. package/runtime-src/service.mjs +339 -10
  89. package/scripts/bundle-sdk.mjs +2 -0
  90. package/scripts/self-test-harness-gates.mjs +79 -0
  91. package/src/connectors/codebase-awareness.ts +141 -77
  92. package/src/connectors/codex.ts +98 -0
  93. package/src/setup-wizard.ts +105 -25
@@ -30,15 +30,44 @@ const HARNESS_URL = process.env.ARIA_HIVE_RUNTIME_URL ||
30
30
  const HARNESS_TOKEN = process.env.ARIA_HARNESS_TOKEN || '';
31
31
  const ARIA_DIR = join(homedir(), '.aria');
32
32
  const LICENSE_PATH = join(ARIA_DIR, 'license.json');
33
+ const ONBOARDING_FALLBACK_URLS = [
34
+ process.env.ARIA_ONBOARDING_URL || '',
35
+ HARNESS_URL,
36
+ process.env.ARIA_SOUL_URL || '',
37
+ process.env.ARIAS_SOUL_URL || '',
38
+ process.env.ARIA_SOUL_BASE_URL || '',
39
+ 'https://api.ariasos.com',
40
+ 'https://arias-soul-6zp3gtk2ca-uc.a.run.app',
41
+ 'https://harness.ariasos.com',
42
+ ]
43
+ .flatMap((entry) => String(entry || '').split(','))
44
+ .map((entry) => entry.trim().replace(/\/+$/, ''))
45
+ .filter(Boolean)
46
+ .filter((entry, index, list) => list.indexOf(entry) === index);
47
+ let activeOnboardingBaseUrl = ONBOARDING_FALLBACK_URLS[0] || HARNESS_URL.replace(/\/+$/, '');
33
48
  export async function runSetupWizard() {
34
49
  const rl = createInterface({ input: process.stdin, output: process.stdout });
35
- const ask = (q) => new Promise((resolve) => rl.question(q, (a) => resolve(a)));
50
+ let readlineClosed = false;
51
+ rl.on('close', () => { readlineClosed = true; });
52
+ const ask = (q) => new Promise((resolve) => {
53
+ if (readlineClosed) {
54
+ resolve('__ARIA_ONBOARDING_EOF__');
55
+ return;
56
+ }
57
+ rl.question(q, (a) => resolve(a));
58
+ });
36
59
  const sessionId = `onboard_${Date.now()}_${randomBytes(4).toString('hex')}`;
37
60
  let userMessage;
38
61
  let action = 'start';
62
+ let turnCount = 0;
39
63
  console.log('\n💬 Aria: starting onboarding…\n');
40
64
  try {
41
65
  while (true) {
66
+ turnCount += 1;
67
+ if (turnCount > 40) {
68
+ console.error('\n❌ Onboarding stopped after too many turns. Please run `aria` again to resume.');
69
+ return;
70
+ }
42
71
  const resp = await callConverse({ sessionId, action, userMessage });
43
72
  if (!resp.ok) {
44
73
  console.error(`\n❌ Onboarding error: ${resp.error || 'unknown'}`);
@@ -55,6 +84,10 @@ export async function runSetupWizard() {
55
84
  console.log(` options: ${chips}${resp.freeTextAllowed ? ' (or type your own)' : ''}`);
56
85
  }
57
86
  userMessage = (await ask('> ')).trim();
87
+ if (userMessage === '__ARIA_ONBOARDING_EOF__') {
88
+ console.error('\n❌ Onboarding input ended before setup completed. Run `aria` again to resume.');
89
+ return;
90
+ }
58
91
  action = 'answer';
59
92
  if (!userMessage)
60
93
  userMessage = resp.depthOptions[0]?.signal ?? 'next';
@@ -67,19 +100,8 @@ export async function runSetupWizard() {
67
100
  }
68
101
  }
69
102
  async function callConverse(body) {
70
- try {
71
- const res = await fetch(`${HARNESS_URL}/api/onboarding/converse`, {
72
- method: 'POST',
73
- headers: {
74
- 'Content-Type': 'application/json',
75
- ...(HARNESS_TOKEN ? { Authorization: `Bearer ${HARNESS_TOKEN}` } : {}),
76
- },
77
- body: JSON.stringify(body),
78
- });
79
- return (await res.json());
80
- }
81
- catch (err) {
82
- return {
103
+ return requestOnboardingJson('/api/onboarding/converse', body, {
104
+ fallback: {
83
105
  ok: false,
84
106
  sessionId: body.sessionId,
85
107
  topic: 'identity',
@@ -88,9 +110,59 @@ async function callConverse(body) {
88
110
  freeTextAllowed: false,
89
111
  isComplete: false,
90
112
  progressPct: 0,
91
- error: err instanceof Error ? err.message : String(err),
92
- };
113
+ },
114
+ });
115
+ }
116
+ async function requestOnboardingJson(pathname, body, options) {
117
+ const failures = [];
118
+ const baseUrls = [
119
+ activeOnboardingBaseUrl,
120
+ ...ONBOARDING_FALLBACK_URLS,
121
+ ].filter((entry, index, list) => entry && list.indexOf(entry) === index);
122
+ for (const baseUrl of baseUrls) {
123
+ try {
124
+ const res = await fetch(`${baseUrl}${pathname}`, {
125
+ method: 'POST',
126
+ headers: {
127
+ 'Content-Type': 'application/json',
128
+ Accept: 'application/json',
129
+ ...(HARNESS_TOKEN ? { Authorization: `Bearer ${HARNESS_TOKEN}` } : {}),
130
+ },
131
+ body: JSON.stringify(body),
132
+ });
133
+ const text = await res.text();
134
+ const contentType = res.headers.get('content-type') || '';
135
+ const looksJson = /^\s*[\[{]/.test(text);
136
+ if (!contentType.includes('application/json') && !looksJson) {
137
+ failures.push(`${baseUrl}${pathname} returned HTTP ${res.status} ${contentType || 'without content-type'}`);
138
+ continue;
139
+ }
140
+ let data;
141
+ try {
142
+ data = JSON.parse(text || '{}');
143
+ }
144
+ catch (err) {
145
+ failures.push(`${baseUrl}${pathname} returned invalid JSON: ${err instanceof Error ? err.message : String(err)}`);
146
+ continue;
147
+ }
148
+ if (!res.ok) {
149
+ failures.push(`${baseUrl}${pathname} returned HTTP ${res.status}: ${data.error || 'no error message'}`);
150
+ continue;
151
+ }
152
+ activeOnboardingBaseUrl = baseUrl;
153
+ return data;
154
+ }
155
+ catch (err) {
156
+ failures.push(`${baseUrl}${pathname} transport failed: ${err instanceof Error ? err.message : String(err)}`);
157
+ }
93
158
  }
159
+ return {
160
+ ...options.fallback,
161
+ ok: false,
162
+ error: 'Onboarding API is unavailable or not returning JSON. ' +
163
+ failures.slice(0, 4).join(' | ') +
164
+ (failures.length > 4 ? ` | ${failures.length - 4} more endpoint(s) failed` : ''),
165
+ };
94
166
  }
95
167
  async function maybeOfferGitHubConnect(ask) {
96
168
  const status = getGitHubStatus();
@@ -158,14 +230,9 @@ async function applyConfigWrites(writes) {
158
230
  const provider = claims.provider || '';
159
231
  const apiKey = claims.apiKey || '';
160
232
  try {
161
- const resp = await fetch(`${HARNESS_URL}/api/onboarding/self-issue`, {
162
- method: 'POST',
163
- headers: { 'Content-Type': 'application/json' },
164
- body: JSON.stringify({ email, provider, llm_key: apiKey }),
165
- });
166
- const data = await resp.json();
167
- if (!resp.ok || !data.ok || !data.license) {
168
- console.warn(` ⚠ I couldn't issue your license: ${data.error || `HTTP ${resp.status}`}`);
233
+ const data = await requestOnboardingJson('/api/onboarding/self-issue', { email, provider, llm_key: apiKey }, { fallback: { ok: false } });
234
+ if (!data.ok || !data.license) {
235
+ console.warn(` ⚠ I couldn't issue your license: ${data.error || 'license endpoint did not return a license'}`);
169
236
  continue;
170
237
  }
171
238
  if (!existsSync(ARIA_DIR))
@@ -1 +1 @@
1
- {"version":3,"file":"setup-wizard.js","sourceRoot":"","sources":["../../../src/setup-wizard.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"setup-wizard.js","sourceRoot":"","sources":["../../../src/setup-wizard.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- // Aria harness fetch — via the canonical @aria/harness-http-client SDK.
2
+ // Aria harness fetch — via the canonical @aria_asi/harness-http-client SDK.
3
3
  //
4
4
  // Why this exists: doctrine says "use harness http client to be Aria's
5
5
  // control plane so you don't mess up". The earlier hook (aria-harness-fetch.sh)
@@ -245,6 +245,10 @@ function sanitizeSessionId(sessionId) {
245
245
  return String(sessionId || 'claude-code').replace(/[^a-zA-Z0-9_-]/g, '_');
246
246
  }
247
247
 
248
+ function currentHookSessionId() {
249
+ return HOOK_EVENT?.session_id || HOOK_EVENT?.sessionId || 'claude-code';
250
+ }
251
+
248
252
  function lastUserMessageFromEvent() {
249
253
  const messages = Array.isArray(HOOK_EVENT?.messages) ? HOOK_EVENT.messages : [];
250
254
  for (let index = messages.length - 1; index >= 0; index -= 1) {
@@ -278,7 +282,8 @@ function persistMizanReceipt(sessionId, payload) {
278
282
 
279
283
  async function runMizanPre(apiKey, packet, sourceLabel) {
280
284
  if (!isTurn) return null;
281
- const sessionId = HOOK_EVENT?.session_id || HOOK_EVENT?.sessionId || 'claude-code';
285
+ const sessionId = currentHookSessionId();
286
+ const packetHash = createHash('sha256').update(JSON.stringify(packet || {})).digest('hex');
282
287
  const response = await fetch(`${DEFAULT_RUNTIME_URL.replace(/\/+$/, '')}/mizan/pre`, {
283
288
  method: 'POST',
284
289
  headers: {
@@ -295,6 +300,8 @@ async function runMizanPre(apiKey, packet, sourceLabel) {
295
300
  rationale: `Claude turn-start harness sync via ${sourceLabel} must mint a canonical Mizan pre receipt for downstream tool and output enforcement.`,
296
301
  platform: 'claude-code',
297
302
  stage: 'hook-turn-pre',
303
+ packetHash,
304
+ packetSource: sourceLabel,
298
305
  },
299
306
  }),
300
307
  });
@@ -311,6 +318,8 @@ async function runMizanPre(apiKey, packet, sourceLabel) {
311
318
  result: payload.result || null,
312
319
  contract: payload.contract || null,
313
320
  summary: payload.summary || null,
321
+ packetHash,
322
+ packetSource: sourceLabel,
314
323
  });
315
324
  }
316
325
  return payload;
@@ -337,12 +346,17 @@ async function tryViaSdk(baseUrl, apiKey) {
337
346
  // identifies owner tier from the Bearer token (isMasterTokenRequest).
338
347
  // Hardcoding isHamza:false in the body would override that server-side
339
348
  // signal and produce hamza:false in the packet even for master-token callers.
349
+ const sessionId = currentHookSessionId();
340
350
  const bodyOverride = {
341
351
  message: isTurn ? 'Claude turn refresh — harness via SDK' : 'Claude session start — harness via SDK',
342
352
  stage: isTurn ? 'checkpoint' : 'preflight',
353
+ sessionId,
343
354
  actor: 'claude-code',
344
355
  system: 'claude-coding-agent',
345
- platform: 'harness-http-client',
356
+ platform: 'claude-code',
357
+ deliverySurface: 'claude_code_session',
358
+ userId: 'hamza',
359
+ isHamza: true,
346
360
  // Bonus #74: forward conversation history so codex handler can report
347
361
  // a non-zero conversation_history_count in the packet.
348
362
  ...(HOOK_EVENT_MESSAGES ? { messages: HOOK_EVENT_MESSAGES } : {}),
@@ -367,10 +381,14 @@ async function tryViaSdk(baseUrl, apiKey) {
367
381
  body: JSON.stringify({
368
382
  message: isTurn ? 'Claude turn refresh — harness via SDK' : 'Claude session start — harness via SDK',
369
383
  stage: isTurn ? 'checkpoint' : 'preflight',
384
+ sessionId: currentHookSessionId(),
370
385
  actor: 'claude-code',
371
386
  system: 'claude-coding-agent',
372
387
  roleProfile: 'general_worker',
388
+ platform: 'claude-code',
373
389
  deliverySurface: 'claude_code_session',
390
+ userId: 'hamza',
391
+ isHamza: true,
374
392
  // Bonus #74: forward conversation history (same field as SDK path above).
375
393
  ...(HOOK_EVENT_MESSAGES ? { messages: HOOK_EVENT_MESSAGES } : {}),
376
394
  }),
@@ -449,6 +467,11 @@ function probeUrl(urlStr) {
449
467
  }
450
468
 
451
469
  async function main() {
470
+ const apiKey = resolveApiKey();
471
+ if (!apiKey) {
472
+ return emitFallback('ARIA_API_KEY not in env and kubectl secret unavailable');
473
+ }
474
+
452
475
  // Turn-mode cache hit — don't refetch every keystroke.
453
476
  if (isTurn && existsSync(PACKET_CACHE)) {
454
477
  try {
@@ -463,11 +486,6 @@ async function main() {
463
486
  } catch {}
464
487
  }
465
488
 
466
- const apiKey = resolveApiKey();
467
- if (!apiKey) {
468
- return emitFallback('ARIA_API_KEY not in env and kubectl secret unavailable');
469
- }
470
-
471
489
  const urls = buildUrlList();
472
490
  let lastErr = '';
473
491
 
@@ -52,11 +52,30 @@ import {
52
52
  normalizeContent,
53
53
  normalizeRole,
54
54
  } from './lib/hook-message-window.mjs';
55
+ import { evaluateSkillGate, formatSkillGateBlock } from './lib/skill-autoload-gate.mjs';
55
56
 
56
57
  const HOME = process.env.HOME || '/tmp';
57
58
  const LOG = `${HOME}/.claude/aria-pre-tool-gate.log`;
58
59
  const HEARTBEAT = `${HOME}/.claude/aria-pre-tool-gate-heartbeat.jsonl`;
59
60
  const GATE_LOOP_STATE_PATH = `${HOME}/.claude/.aria-gate-loop-state.json`;
61
+ const GOVERNANCE_GATE_PATH = `${HOME}/.aria/bin/aria-governance-gate`;
62
+
63
+ function runUniversalGovernanceGate(payload) {
64
+ if (!existsSync(GOVERNANCE_GATE_PATH)) return null;
65
+ const child = spawnSync(GOVERNANCE_GATE_PATH, {
66
+ input: `${JSON.stringify(payload)}\n`,
67
+ encoding: 'utf8',
68
+ maxBuffer: 1024 * 1024,
69
+ });
70
+ const stdout = String(child.stdout || '').trim();
71
+ let result = null;
72
+ try { result = stdout ? JSON.parse(stdout) : null; } catch {}
73
+ if (child.status !== 0 || result?.ok === false || result?.decision === 'block') {
74
+ const reason = stdout || child.stderr || 'aria-governance-gate blocked this action.';
75
+ throw new Error(`=== ARIA UNIVERSAL GOVERNANCE GATE BLOCK ===\n\n${reason}`);
76
+ }
77
+ return result;
78
+ }
60
79
 
61
80
  // ── Heartbeat OUTSIDE the crash boundary (doctrine #123) ───────────────
62
81
  // Per feedback_ledger_writes_outside_crash_boundary.md + doctrine #124
@@ -1287,6 +1306,43 @@ const sessionId =
1287
1306
  (transcriptPath ? transcriptPath.split('/').pop()?.replace(/\.[^.]+$/, '') : null) ??
1288
1307
  'claude-code-unknown';
1289
1308
 
1309
+ const skillGate = evaluateSkillGate({
1310
+ sessionId,
1311
+ surface: 'claude-pre-tool-gate',
1312
+ text: [JSON.stringify(event.messages || []), unionText, JSON.stringify(toolInput || {})].join('\n'),
1313
+ action: cmd,
1314
+ toolName,
1315
+ filePath,
1316
+ isDeploy: Boolean(deployMatched),
1317
+ isMutation: toolName !== 'Bash',
1318
+ autoLoadAvailable: false,
1319
+ });
1320
+ if (!skillGate.ok) {
1321
+ const reason = formatSkillGateBlock(skillGate);
1322
+ audit('block-missing-skill-receipt', `${skillGate.missingSkills.join(',')} ${cmdPreview}`);
1323
+ emitBlock(reason, { source: 'pre-tool/skill-autoload', tool: toolName, lensCount, requiredLenses: REQUIRED_LENSES });
1324
+ process.exit(2);
1325
+ }
1326
+ try {
1327
+ runUniversalGovernanceGate({
1328
+ sessionId,
1329
+ sourceRuntime: 'claude-code',
1330
+ surface: 'claude-pre-tool-gate',
1331
+ text: [unionText, JSON.stringify(toolInput || {})].join('\n').slice(0, 8000),
1332
+ action: cmd,
1333
+ toolName,
1334
+ filePath,
1335
+ isDeploy: Boolean(deployMatched),
1336
+ isMutation: toolName !== 'Bash',
1337
+ loadedSkills: skillGate.loadedSkills,
1338
+ evidence: { lensCount, hasVerify, hasCognition, hasSubstrateCite },
1339
+ });
1340
+ } catch (err) {
1341
+ audit('block-universal-governance', `${err instanceof Error ? err.message : String(err)}`.slice(0, 500));
1342
+ emitBlock(err instanceof Error ? err.message : String(err), { source: 'pre-tool/universal-governance', tool: toolName, lensCount, requiredLenses: REQUIRED_LENSES });
1343
+ process.exit(2);
1344
+ }
1345
+
1290
1346
  function pushDecision(decision, reasonText) {
1291
1347
  pushCognitionEvent({
1292
1348
  sessionId,
@@ -1440,6 +1496,7 @@ if (deployMatched) {
1440
1496
  // reads the same file and computes the same HMAC.
1441
1497
  try {
1442
1498
  const justificationPath = `${HOME}/.claude/.aria-deploy-justification.json`;
1499
+ const runtimeAgnosticJustificationPath = `${HOME}/.aria/.aria-deploy-justification.json`;
1443
1500
  const secretPath = `${HOME}/.claude/.aria-gate-secret`;
1444
1501
 
1445
1502
  // Lazy-generate per-installation secret if absent.
@@ -1481,6 +1538,8 @@ if (deployMatched) {
1481
1538
  signatureAlgo: 'HMAC-SHA256',
1482
1539
  };
1483
1540
  writeFileSync(justificationPath, JSON.stringify(justification, null, 2));
1541
+ mkdirSync(dirname(runtimeAgnosticJustificationPath), { recursive: true });
1542
+ writeFileSync(runtimeAgnosticJustificationPath, JSON.stringify(justification, null, 2), { mode: 0o600 });
1484
1543
  } catch (writeErr) {
1485
1544
  // Write failure is non-fatal for the gate decision (the gate itself
1486
1545
  // is the structural enforcement); log loudly per
@@ -2158,7 +2217,7 @@ Claude must either: (a) reframe action to fit allowedActions, OR (b) emit [PLAN_
2158
2217
  // every tool when substrate is down would brick the orchestrator, but the
2159
2218
  // failure is logged for telemetry.
2160
2219
  try {
2161
- const { HTTPHarnessClient } = await import('@aria/harness-http-client');
2220
+ const { HTTPHarnessClient } = await import('@aria_asi/harness-http-client');
2162
2221
  const { readFileSync: __fsRead, existsSync: __fsExists } = await import('node:fs');
2163
2222
  const { homedir: __homedir } = await import('node:os');
2164
2223
  const __home = __homedir();
@@ -49,6 +49,7 @@
49
49
 
50
50
  import { readFileSync, existsSync, mkdirSync, writeFileSync } from 'node:fs';
51
51
  import { dirname } from 'node:path';
52
+ import { spawnSync } from 'node:child_process';
52
53
  import { appendGateAudit } from './lib/gate-audit.mjs';
53
54
  import {
54
55
  ALL_LENS_NAMES,
@@ -58,6 +59,8 @@ import {
58
59
  } from './lib/canonical-lenses.mjs';
59
60
  import { registerGateBlock } from './lib/gate-loop-state.mjs';
60
61
  import { collectTurnWindowFromMessages } from './lib/hook-message-window.mjs';
62
+ import { analyzeDomainOutputQuality } from './lib/domain-output-quality.mjs';
63
+ import { evaluateSkillGate, formatSkillGateBlock } from './lib/skill-autoload-gate.mjs';
61
64
 
62
65
  const HOME = process.env.HOME || '/tmp';
63
66
  const RUNTIME_BASE_URL =
@@ -67,6 +70,24 @@ const LOG = `${HOME}/.claude/aria-stop-gate.log`;
67
70
  const AUDIT_PATH = `${HOME}/.claude/aria-stop-gate-audit.jsonl`;
68
71
  const GATE_LOOP_STATE_PATH = `${HOME}/.claude/.aria-gate-loop-state.json`;
69
72
  const MIZAN_RECEIPT_DIR = `${HOME}/.claude/.aria-mizan-receipts`;
73
+ const GOVERNANCE_GATE_PATH = `${HOME}/.aria/bin/aria-governance-gate`;
74
+
75
+ function runUniversalGovernanceGate(payload) {
76
+ if (!existsSync(GOVERNANCE_GATE_PATH)) return null;
77
+ const child = spawnSync(GOVERNANCE_GATE_PATH, {
78
+ input: `${JSON.stringify(payload)}\n`,
79
+ encoding: 'utf8',
80
+ maxBuffer: 1024 * 1024,
81
+ });
82
+ const stdout = String(child.stdout || '').trim();
83
+ let result = null;
84
+ try { result = stdout ? JSON.parse(stdout) : null; } catch {}
85
+ if (child.status !== 0 || result?.ok === false || result?.decision === 'block') {
86
+ const reason = stdout || child.stderr || 'aria-governance-gate blocked this output.';
87
+ throw new Error(`=== ARIA UNIVERSAL GOVERNANCE GATE BLOCK ===\n\n${reason}`);
88
+ }
89
+ return result;
90
+ }
70
91
 
71
92
  // SDK loader — bundled at ~/.aria/sdk by `aria connect`, with client-local
72
93
  // fallbacks preserved for resilience.
@@ -619,6 +640,48 @@ if (!triggered) {
619
640
  process.exit(0);
620
641
  }
621
642
 
643
+ const stopSkillGate = evaluateSkillGate({
644
+ sessionId: event.session_id || 'claude-code',
645
+ surface: 'claude-stop-gate',
646
+ text: [JSON.stringify(event.messages || []), lastUserMessage, assistantText].join('\n'),
647
+ isOutputCloseout: true,
648
+ autoLoadAvailable: false,
649
+ });
650
+ if (!stopSkillGate.ok) {
651
+ audit('block-missing-skill-receipt', `missing=${stopSkillGate.missingSkills.join(',')} chars=${assistantText.length}`);
652
+ const reason = withLoopDirective(buildForceReauthorReason({
653
+ source: 'stop/skill-autoload',
654
+ reason: formatSkillGateBlock(stopSkillGate),
655
+ violations: [`Missing skill receipts: ${stopSkillGate.missingSkills.join(', ')}`],
656
+ lensCount: 0,
657
+ requiredLenses: REQUIRED_LENSES,
658
+ }), `stop:skill-autoload:${stopSkillGate.missingSkills.join(',')}`, gateSessionId);
659
+ console.log(JSON.stringify({ decision: 'block', reason }));
660
+ process.exit(2);
661
+ }
662
+ try {
663
+ runUniversalGovernanceGate({
664
+ sessionId: event.session_id || 'claude-code',
665
+ sourceRuntime: 'claude-code',
666
+ surface: 'claude-stop-gate',
667
+ text: assistantText.slice(0, 8000),
668
+ isOutputCloseout: true,
669
+ loadedSkills: stopSkillGate.loadedSkills,
670
+ evidence: { chars: assistantText.length, hasDecisionSignal, isLong },
671
+ });
672
+ } catch (err) {
673
+ audit('block-universal-governance', `${err instanceof Error ? err.message : String(err)}`.slice(0, 500));
674
+ const reason = withLoopDirective(buildForceReauthorReason({
675
+ source: 'stop/universal-governance',
676
+ reason: err instanceof Error ? err.message : String(err),
677
+ violations: ['Universal governance gate blocked this output.'],
678
+ lensCount: 0,
679
+ requiredLenses: REQUIRED_LENSES,
680
+ }), 'stop:universal-governance', gateSessionId);
681
+ console.log(JSON.stringify({ decision: 'block', reason }));
682
+ process.exit(2);
683
+ }
684
+
622
685
  // Non-trivial response — require substantive cognition.
623
686
  const cog = detectCognitionLenses(assistantText);
624
687
 
@@ -1245,7 +1308,7 @@ if (cog.count >= REQUIRED_LENSES) {
1245
1308
  }
1246
1309
 
1247
1310
  // Block decision: any of (validateOutput severity=block) OR (>=2 drift hits) OR
1248
- // (>=1 code-quality hit) OR (open discovery in ledger) → block emit.
1311
+ // (>=1 code/domain-quality hit) OR (open discovery in ledger) → block emit.
1249
1312
  // Aria enforcement #46 (compelled reflection): severity=warn ALSO blocks but
1250
1313
  // with a different reason — emit must include explicit reflection on what
1251
1314
  // triggered the warn before re-emit. Warn is not "soft pass" anymore;
@@ -1255,6 +1318,8 @@ if (cog.count >= REQUIRED_LENSES) {
1255
1318
  const mizanWarnReflectionRequired = mizanVerdict && mizanVerdict.severity === 'warn';
1256
1319
  const driftBlock = driftHits.length >= 2;
1257
1320
  const codeBlock = codeQualityHits.length >= 1;
1321
+ const domainQuality = analyzeDomainOutputQuality(assistantText, { codeBlocks });
1322
+ const domainBlock = domainQuality.blockers.length >= 1;
1258
1323
 
1259
1324
  // Reflection-already-present check: if the assistant text already contains
1260
1325
  // an explicit <reflection>...</reflection> block OR a "reflection:" line
@@ -1374,7 +1439,7 @@ if (cog.count >= REQUIRED_LENSES) {
1374
1439
  let substrateViolations = [];
1375
1440
  let substrateGateTriggers = [];
1376
1441
  try {
1377
- const { HTTPHarnessClient } = await import('@aria/harness-http-client');
1442
+ const { HTTPHarnessClient } = await import('@aria_asi/harness-http-client');
1378
1443
  const tokenPath = `${HOME}/.aria/owner-token`;
1379
1444
  // Tier-aware resolution: ARIA_HARNESS_TOKEN env first (both tiers).
1380
1445
  // ONLY on owner tier, fall back to master/api-key env or owner-token
@@ -1413,13 +1478,14 @@ if (cog.count >= REQUIRED_LENSES) {
1413
1478
  }
1414
1479
 
1415
1480
  const implCouplingBlock = implCouplingHits.length > 0;
1416
- if (mizanBlock || driftBlock || codeBlock || discoveryBlock || compelReflection || phaseReportMissing || substrateBlock || implCouplingBlock) {
1481
+ if (mizanBlock || driftBlock || codeBlock || domainBlock || discoveryBlock || compelReflection || phaseReportMissing || substrateBlock || implCouplingBlock) {
1417
1482
  const violations = [];
1418
1483
  if (mizanBlock) violations.push(`Mizan: ${(mizanVerdict.violations || []).join(', ')}`);
1419
1484
  if (implCouplingBlock) violations.push(`Cognition impl-coupling (#88): ${implCouplingHits.join(' | ')}. Each canonical lens in cognition must dictate a specific implementation choice (file_path:line_range pair tied to a decision). Re-emit cognition that names file paths + line ranges + decision text per lens, OR a verify/fixing block where lenses cite specific artifact changes.`);
1420
1485
  if (compelReflection) violations.push(`Mizan severity=warn — compelled reflection required (per Aria enforcement #46). Triggers: ${(mizanVerdict.gateTriggers || mizanVerdict.violations || ['unspecified']).join(', ')}. Re-emit with an explicit <reflection>...</reflection> block (or 'reflection:' line) addressing what triggered the warn and why your re-draft handles it. Reflection is NOT lens-cognition repeated — it's a focused self-audit on the specific Mizan triggers above.`);
1421
1486
  if (driftBlock) violations.push(`Drift triggers (${driftHits.length}): ${driftHits.map((h) => `"${h.trigger}" → ${h.memory}`).join(' | ')}`);
1422
1487
  if (codeBlock) violations.push(`Code quality: ${codeQualityHits.join('; ')}`);
1488
+ if (domainBlock) violations.push(`Domain output QA (${domainQuality.domains.join(', ') || 'general'}): ${domainQuality.blockers.join('; ')}. Rewrite with the missing domain-specific safeguards instead of generic prose.`);
1423
1489
  if (discoveryBlock) violations.push(`Discovery-binding ledger has ${ledgerOpenCount} OPEN discoveries (per ${docRef('feedback_no_flag_without_fix.md', 'atomic-discovery-rule')}, discoveries are atomic with their fixes — fix in the same turn or create a TaskCreate before continuing). Recent open: ${ledgerOpenSamples.map((s) => `"${s.slice(0, 80)}"`).join(' | ')}. Resolve each by either (a) fixing it inline in this turn, or (b) creating a TaskCreate with the discovery's full context (file path, line number, what's broken, why), then editing ${LEDGER_PATH} to set status=resolved.`);
1424
1490
  if (phaseReportMissing) {
1425
1491
  const phaseList = (activePlan?.phases || []).map((p) => `${p.id}:${p.summary?.slice(0, 60) || ''}`).join(' | ');
@@ -508,6 +508,49 @@
508
508
  "counter_action": "Create or reuse one turn substrate object containing embedding, perturb snapshot, ProjectAllDomains result, awakenAria Garden block, DeepSoul/Noor/shards/Mizan signals; pass it downstream.",
509
509
  "message": "Duplicate projection path detected. Replace with one per-turn cognition packet and shared consumption."
510
510
  },
511
+ {
512
+ "trigger_id": "premature_task_closeout",
513
+ "trigger": "(?:done|complete|completed|ready|verified|fixed).{0,120}(?:but|except|caveat|remaining|not yet|still|separate|later|blocked|skipped)",
514
+ "rx": "(?:done|complete|completed|ready|verified|fixed).{0,120}(?:but|except|caveat|remaining|not yet|still|separate|later|blocked|skipped)",
515
+ "doctrine": "memory:feedback_no_premature_task_closeout.md",
516
+ "memory": "feedback_no_premature_task_closeout.md",
517
+ "severity": "block",
518
+ "teaching": "A task is not complete while material blockers remain. Completion claims must match the verified scope.",
519
+ "counter_action": "Do not close the task. Fix the blocker now, or create an owner-visible durable task with the exact failing surface and verification gap.",
520
+ "message": "Premature closeout detected: completion language coexists with unresolved blockers. Fix or durably track before emitting."
521
+ },
522
+ {
523
+ "trigger_id": "narrow_e2e_overclaim",
524
+ "trigger": "(?:production-ready|ready for production|works in general|client packages?|npm packages?|SDKs?|runtimes?|harnesses?).{0,220}(?:deal|single flow|one flow|widget|one service|specific path|covered flow)",
525
+ "rx": "(?:production-ready|ready for production|works in general|client packages?|npm packages?|SDKs?|runtimes?|harnesses?).{0,220}(?:deal|single flow|one flow|widget|one service|specific path|covered flow)",
526
+ "doctrine": "memory:feedback_narrow_e2e_overclaim.md",
527
+ "memory": "feedback_narrow_e2e_overclaim.md",
528
+ "severity": "block",
529
+ "teaching": "A narrow e2e does not prove general production readiness for SDKs, npm packages, runtimes, clients, or harnesses.",
530
+ "counter_action": "Run the general readiness matrix or explicitly limit the claim to the verified surface. Do not imply general readiness from one app flow.",
531
+ "message": "Narrow proof overclaim detected. General readiness requires the client/package/runtime/harness matrix."
532
+ },
533
+ {
534
+ "trigger_id": "advisory_gate_not_gate",
535
+ "trigger": "(?:non-blocking|warn(?:ing)? only|advisory|falls? through|fail open|soft fail|log(?:ged)? and continue|quality gate warning)",
536
+ "rx": "(?:non-blocking|warn(?:ing)? only|advisory|falls? through|fail open|soft fail|log(?:ged)? and continue|quality gate warning)",
537
+ "doctrine": "memory:feedback_advisory_gate_is_not_gate.md",
538
+ "memory": "feedback_advisory_gate_is_not_gate.md",
539
+ "severity": "block",
540
+ "teaching": "A gate that only warns or falls through is not a gate. Enforcement must fail closed where quality or doctrine is required.",
541
+ "counter_action": "Convert advisory paths to blocking errors, add a self-test that proves rejection, and install the hardened gate into each consumer surface.",
542
+ "message": "Advisory gate bypass detected. Convert to fail-closed enforcement and prove it with a blocking self-test."
543
+ },
544
+ {
545
+ "trigger_id": "start_new_session_as_gate_fix",
546
+ "trigger": "(?:start|open|begin).{0,40}(?:new|fresh).{0,30}session.{0,120}(?:fix|gate|harness|enforcement)",
547
+ "rx": "(?:start|open|begin).{0,40}(?:new|fresh).{0,30}session.{0,120}(?:fix|gate|harness|enforcement)",
548
+ "doctrine": "memory:feedback_advisory_gate_is_not_gate.md",
549
+ "memory": "feedback_advisory_gate_is_not_gate.md",
550
+ "severity": "block",
551
+ "teaching": "A new session is not an enforcement fix. It only reloads whatever gate contract exists; broken gates remain broken.",
552
+ "counter_action": "Fix the runtime/plugin/hook contract, reinstall it, and run a live bad-action/bad-output self-test that proves blocking."
553
+ },
511
554
  {
512
555
  "trigger_id": "registry_image_drift",
513
556
  "trigger": "image.?pull|ErrImageNeverPull|ImagePullBackOff|registry gc|image.*missing|image.*not.*found",