@neurcode-ai/governance-runtime 0.1.3 → 0.1.4
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.
- package/LICENSE +201 -0
- package/dist/admission-provenance.d.ts +111 -0
- package/dist/admission-provenance.d.ts.map +1 -0
- package/dist/admission-provenance.js +735 -0
- package/dist/admission-provenance.js.map +1 -0
- package/dist/agent-guard-posture.d.ts +40 -0
- package/dist/agent-guard-posture.d.ts.map +1 -0
- package/dist/agent-guard-posture.js +117 -0
- package/dist/agent-guard-posture.js.map +1 -0
- package/dist/agent-invocation-observability.d.ts +47 -0
- package/dist/agent-invocation-observability.d.ts.map +1 -0
- package/dist/agent-invocation-observability.js +229 -0
- package/dist/agent-invocation-observability.js.map +1 -0
- package/dist/agent-plan.d.ts +119 -0
- package/dist/agent-plan.d.ts.map +1 -0
- package/dist/agent-plan.js +565 -0
- package/dist/agent-plan.js.map +1 -0
- package/dist/agent-runtime-adapter.d.ts +69 -0
- package/dist/agent-runtime-adapter.d.ts.map +1 -0
- package/dist/agent-runtime-adapter.js +274 -0
- package/dist/agent-runtime-adapter.js.map +1 -0
- package/dist/ai-change-record.d.ts +185 -0
- package/dist/ai-change-record.d.ts.map +1 -0
- package/dist/ai-change-record.js +580 -0
- package/dist/ai-change-record.js.map +1 -0
- package/dist/architecture-graph.d.ts +153 -0
- package/dist/architecture-graph.d.ts.map +1 -0
- package/dist/architecture-graph.js +646 -0
- package/dist/architecture-graph.js.map +1 -0
- package/dist/architecture-obligations.d.ts +153 -0
- package/dist/architecture-obligations.d.ts.map +1 -0
- package/dist/architecture-obligations.js +505 -0
- package/dist/architecture-obligations.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +103 -1
- package/dist/index.js.map +1 -1
- package/dist/profile.d.ts +159 -0
- package/dist/profile.d.ts.map +1 -0
- package/dist/profile.js +611 -0
- package/dist/profile.js.map +1 -0
- package/dist/session.d.ts +428 -0
- package/dist/session.d.ts.map +1 -0
- package/dist/session.js +2052 -0
- package/dist/session.js.map +1 -0
- package/package.json +19 -8
- package/src/constraints.ts +0 -828
- package/src/index.test.ts +0 -502
- package/src/index.ts +0 -463
- package/tsconfig.json +0 -19
|
@@ -0,0 +1,505 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.DEFAULT_ARCHITECTURE_OBLIGATION_POLICY = exports.ARCHITECTURE_OBLIGATION_SCHEMA_VERSION = void 0;
|
|
7
|
+
exports.normalizeArchitectureObligationPolicy = normalizeArchitectureObligationPolicy;
|
|
8
|
+
exports.effectiveArchitectureObligationMode = effectiveArchitectureObligationMode;
|
|
9
|
+
exports.isArchitectureObligationWaiverActive = isArchitectureObligationWaiverActive;
|
|
10
|
+
exports.activeArchitectureObligationWaivers = activeArchitectureObligationWaivers;
|
|
11
|
+
exports.deriveArchitectureObligations = deriveArchitectureObligations;
|
|
12
|
+
exports.summarizeArchitectureObligations = summarizeArchitectureObligations;
|
|
13
|
+
exports.evaluateArchitectureObligationFeedback = evaluateArchitectureObligationFeedback;
|
|
14
|
+
exports.evaluateArchitectureEdit = evaluateArchitectureEdit;
|
|
15
|
+
const micromatch_1 = __importDefault(require("micromatch"));
|
|
16
|
+
const architecture_graph_1 = require("./architecture-graph");
|
|
17
|
+
exports.ARCHITECTURE_OBLIGATION_SCHEMA_VERSION = 1;
|
|
18
|
+
exports.DEFAULT_ARCHITECTURE_OBLIGATION_POLICY = Object.freeze({
|
|
19
|
+
mode: 'warn',
|
|
20
|
+
ruleModes: {},
|
|
21
|
+
});
|
|
22
|
+
function unique(values) {
|
|
23
|
+
return Array.from(new Set(Array.from(values, (value) => String(value ?? '').trim()).filter(Boolean)));
|
|
24
|
+
}
|
|
25
|
+
function planText(plan) {
|
|
26
|
+
if (!plan)
|
|
27
|
+
return '';
|
|
28
|
+
return [
|
|
29
|
+
plan.summary,
|
|
30
|
+
...plan.steps,
|
|
31
|
+
...plan.constraints,
|
|
32
|
+
...plan.risks,
|
|
33
|
+
...plan.expectedFiles,
|
|
34
|
+
...plan.expectedGlobs,
|
|
35
|
+
].join('\n');
|
|
36
|
+
}
|
|
37
|
+
function isDemoRehearsalMarkerIntent(text) {
|
|
38
|
+
return (/\bfixtures\/demo-svc\b/i.test(text) &&
|
|
39
|
+
/\b(marker|rehearsal|demo)\b/i.test(text));
|
|
40
|
+
}
|
|
41
|
+
function isTestPath(filePath) {
|
|
42
|
+
return (/(^|\/)(tests?|specs?)(\/|$)/i.test(filePath) ||
|
|
43
|
+
/(?:^|[._-])(test|spec)\.[a-z0-9]+$/i.test(filePath) ||
|
|
44
|
+
/(?:^|\/)test_[^/]+\.[a-z0-9]+$/i.test(filePath));
|
|
45
|
+
}
|
|
46
|
+
function matchesPath(filePath, pathOrGlob) {
|
|
47
|
+
const prefix = pathOrGlob.replace('/**', '').replace('/*', '');
|
|
48
|
+
return (filePath === pathOrGlob ||
|
|
49
|
+
filePath === prefix ||
|
|
50
|
+
filePath.startsWith(prefix + '/') ||
|
|
51
|
+
micromatch_1.default.isMatch(filePath, pathOrGlob, { dot: true, matchBase: true }));
|
|
52
|
+
}
|
|
53
|
+
function allowedTrajectoryPaths(events) {
|
|
54
|
+
return unique(events
|
|
55
|
+
.filter((event) => event.type === 'check_ok' || event.type === 'check_warn')
|
|
56
|
+
.map((event) => event.filePath));
|
|
57
|
+
}
|
|
58
|
+
function approvalRequiredPaths(events) {
|
|
59
|
+
const paths = [];
|
|
60
|
+
for (const event of events) {
|
|
61
|
+
if (event.type !== 'check_block')
|
|
62
|
+
continue;
|
|
63
|
+
const raw = event.detail?.approvalContext;
|
|
64
|
+
if (!raw || typeof raw !== 'object' || Array.isArray(raw))
|
|
65
|
+
continue;
|
|
66
|
+
const context = raw;
|
|
67
|
+
const candidate = context.suggestedApprovalPath || context.blockedPath || event.filePath;
|
|
68
|
+
if (typeof candidate === 'string' && candidate.trim())
|
|
69
|
+
paths.push(candidate.trim());
|
|
70
|
+
}
|
|
71
|
+
return unique(paths);
|
|
72
|
+
}
|
|
73
|
+
function evidence(kind, summary, path) {
|
|
74
|
+
return { kind, summary, ...(path ? { path } : {}) };
|
|
75
|
+
}
|
|
76
|
+
/** True when an active approval path covers (or is inside) the module glob. */
|
|
77
|
+
function approvalCoversPath(approvedPaths, moduleGlob) {
|
|
78
|
+
const prefix = moduleGlob.replace('/**', '').replace('/*', '');
|
|
79
|
+
for (const approved of approvedPaths) {
|
|
80
|
+
const approvedPrefix = approved.replace('/**', '').replace('/*', '');
|
|
81
|
+
if (matchesPath(prefix || moduleGlob, approved) ||
|
|
82
|
+
approvedPrefix === prefix ||
|
|
83
|
+
approvedPrefix.startsWith(prefix + '/') ||
|
|
84
|
+
prefix.startsWith(approvedPrefix + '/')) {
|
|
85
|
+
return approved;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
return null;
|
|
89
|
+
}
|
|
90
|
+
/** Find a guarded test-path edit that lands inside (or names) the module. */
|
|
91
|
+
function moduleTestEdit(trajectoryPaths, moduleId, moduleGlob) {
|
|
92
|
+
const lastSegment = moduleId.split('/').filter(Boolean).at(-1) ?? moduleId;
|
|
93
|
+
for (const filePath of trajectoryPaths) {
|
|
94
|
+
if (!isTestPath(filePath))
|
|
95
|
+
continue;
|
|
96
|
+
if (matchesPath(filePath, moduleGlob))
|
|
97
|
+
return filePath;
|
|
98
|
+
if (lastSegment && filePath.toLowerCase().includes(lastSegment.toLowerCase()))
|
|
99
|
+
return filePath;
|
|
100
|
+
}
|
|
101
|
+
return null;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Collect the source-free paths/globs currently "in play" for graph obligation
|
|
105
|
+
* derivation: declared intent scope, the accepted plan's expected targets, and
|
|
106
|
+
* the guarded change trajectory (including attempted approval-required writes).
|
|
107
|
+
*/
|
|
108
|
+
function graphCandidatePaths(input, events) {
|
|
109
|
+
const candidates = new Set();
|
|
110
|
+
const add = (value) => {
|
|
111
|
+
const trimmed = String(value ?? '').trim();
|
|
112
|
+
if (trimmed)
|
|
113
|
+
candidates.add(trimmed);
|
|
114
|
+
};
|
|
115
|
+
const target = input.intentContract?.target;
|
|
116
|
+
(target?.expectedPathGlobs ?? []).forEach(add);
|
|
117
|
+
(target?.pathTokens ?? []).forEach(add);
|
|
118
|
+
if (input.agentPlan) {
|
|
119
|
+
input.agentPlan.expectedFiles.forEach(add);
|
|
120
|
+
input.agentPlan.expectedGlobs.forEach(add);
|
|
121
|
+
}
|
|
122
|
+
for (const event of events) {
|
|
123
|
+
if (event.type === 'check_ok' || event.type === 'check_warn' || event.type === 'check_block') {
|
|
124
|
+
add(event.filePath);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
for (const requiredPath of approvalRequiredPaths(events))
|
|
128
|
+
add(requiredPath);
|
|
129
|
+
return Array.from(candidates);
|
|
130
|
+
}
|
|
131
|
+
/** Build obligation drafts from the architecture graph for the modules in play. */
|
|
132
|
+
function deriveGraphDrafts(input, events, approvedPaths, acceptedPlanText) {
|
|
133
|
+
if (!input.graph)
|
|
134
|
+
return [];
|
|
135
|
+
const candidatePaths = graphCandidatePaths(input, events);
|
|
136
|
+
const seeds = (0, architecture_graph_1.deriveGraphObligationSeeds)({ graph: input.graph, candidatePaths });
|
|
137
|
+
const trajectoryPaths = allowedTrajectoryPaths(events);
|
|
138
|
+
return seeds.map((seed) => {
|
|
139
|
+
const observedEvidence = [];
|
|
140
|
+
if (seed.satisfy.approval) {
|
|
141
|
+
const approved = approvalCoversPath(approvedPaths, seed.requiredPath);
|
|
142
|
+
if (approved) {
|
|
143
|
+
observedEvidence.push(evidence('exact-approval', `Active approval covers ${seed.module}: ${approved}`, approved));
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
if (seed.satisfy.planPattern) {
|
|
147
|
+
const pattern = new RegExp(seed.satisfy.planPattern, 'i');
|
|
148
|
+
if (pattern.test(acceptedPlanText)) {
|
|
149
|
+
observedEvidence.push(evidence('accepted-plan', `Accepted plan addresses ${seed.surface} obligation for ${seed.module}.`));
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
if (seed.satisfy.moduleTest) {
|
|
153
|
+
const testPath = moduleTestEdit(trajectoryPaths, seed.module, seed.requiredPath);
|
|
154
|
+
if (testPath) {
|
|
155
|
+
observedEvidence.push(evidence('change-trajectory', `Guarded test edit covers ${seed.module}: ${testPath}`, testPath));
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
return {
|
|
159
|
+
id: seed.id,
|
|
160
|
+
category: seed.category,
|
|
161
|
+
title: seed.title,
|
|
162
|
+
description: seed.description,
|
|
163
|
+
severity: seed.severity,
|
|
164
|
+
triggeredBy: seed.triggeredBy,
|
|
165
|
+
requiredEvidence: seed.requiredEvidence,
|
|
166
|
+
observedEvidence,
|
|
167
|
+
requiredPath: seed.requiredPath,
|
|
168
|
+
};
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
function normalizePolicyMode(value) {
|
|
172
|
+
return value === 'off' || value === 'warn' || value === 'block' ? value : null;
|
|
173
|
+
}
|
|
174
|
+
function normalizeArchitectureObligationPolicy(value) {
|
|
175
|
+
const mode = normalizePolicyMode(value?.mode) || exports.DEFAULT_ARCHITECTURE_OBLIGATION_POLICY.mode;
|
|
176
|
+
const ruleModes = {};
|
|
177
|
+
const rawRuleModes = value?.ruleModes;
|
|
178
|
+
if (rawRuleModes && typeof rawRuleModes === 'object' && !Array.isArray(rawRuleModes)) {
|
|
179
|
+
for (const [rawId, rawMode] of Object.entries(rawRuleModes)) {
|
|
180
|
+
const id = rawId.trim();
|
|
181
|
+
const ruleMode = normalizePolicyMode(rawMode);
|
|
182
|
+
if (id && ruleMode)
|
|
183
|
+
ruleModes[id] = ruleMode;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
return { mode, ruleModes };
|
|
187
|
+
}
|
|
188
|
+
function effectiveArchitectureObligationMode(obligation, policy) {
|
|
189
|
+
const normalized = normalizeArchitectureObligationPolicy(policy);
|
|
190
|
+
return normalized.ruleModes[obligation.id] || normalized.mode;
|
|
191
|
+
}
|
|
192
|
+
function isArchitectureObligationWaiverActive(waiver, checkedAt = new Date().toISOString()) {
|
|
193
|
+
if (!waiver.obligationId || waiver.revokedAt)
|
|
194
|
+
return false;
|
|
195
|
+
if (!waiver.expiresAt)
|
|
196
|
+
return true;
|
|
197
|
+
const expiresAtMs = Date.parse(waiver.expiresAt);
|
|
198
|
+
const checkedAtMs = Date.parse(checkedAt);
|
|
199
|
+
if (!Number.isFinite(expiresAtMs) || !Number.isFinite(checkedAtMs))
|
|
200
|
+
return false;
|
|
201
|
+
return expiresAtMs > checkedAtMs;
|
|
202
|
+
}
|
|
203
|
+
function activeArchitectureObligationWaivers(waivers = [], checkedAt = new Date().toISOString()) {
|
|
204
|
+
return waivers.filter((waiver) => isArchitectureObligationWaiverActive(waiver, checkedAt));
|
|
205
|
+
}
|
|
206
|
+
function finalize(drafts, previous, now, policy, waivers) {
|
|
207
|
+
const previousById = new Map(previous.map((item) => [item.id, item]));
|
|
208
|
+
const activeWaivers = activeArchitectureObligationWaivers(waivers, now);
|
|
209
|
+
const obligations = [];
|
|
210
|
+
for (const draft of drafts) {
|
|
211
|
+
const prior = previousById.get(draft.id);
|
|
212
|
+
const observedEvidence = unique(draft.observedEvidence.map((item) => JSON.stringify(item)))
|
|
213
|
+
.map((item) => JSON.parse(item));
|
|
214
|
+
const effectiveMode = effectiveArchitectureObligationMode(draft, policy);
|
|
215
|
+
if (effectiveMode === 'off')
|
|
216
|
+
continue;
|
|
217
|
+
const activeWaiver = activeWaivers.find((waiver) => waiver.obligationId === draft.id);
|
|
218
|
+
const baseStatus = observedEvidence.length > 0 ? 'satisfied' : 'pending';
|
|
219
|
+
const status = baseStatus === 'pending' && activeWaiver ? 'waived' : baseStatus;
|
|
220
|
+
const waiverEvidence = activeWaiver
|
|
221
|
+
? {
|
|
222
|
+
eventId: activeWaiver.eventId,
|
|
223
|
+
reason: activeWaiver.reason,
|
|
224
|
+
waivedAt: activeWaiver.waivedAt,
|
|
225
|
+
expiresAt: activeWaiver.expiresAt,
|
|
226
|
+
waivedBy: activeWaiver.waivedBy ?? null,
|
|
227
|
+
source: activeWaiver.source,
|
|
228
|
+
}
|
|
229
|
+
: undefined;
|
|
230
|
+
const finalEvidence = waiverEvidence && baseStatus === 'pending'
|
|
231
|
+
? [
|
|
232
|
+
...observedEvidence,
|
|
233
|
+
evidence('waiver', `Waived by ${waiverEvidence.waivedBy || waiverEvidence.source}: ${waiverEvidence.reason}`),
|
|
234
|
+
]
|
|
235
|
+
: observedEvidence;
|
|
236
|
+
const materiallyChanged = !prior ||
|
|
237
|
+
prior.status !== status ||
|
|
238
|
+
prior.effectiveMode !== effectiveMode ||
|
|
239
|
+
JSON.stringify(prior.observedEvidence) !== JSON.stringify(finalEvidence) ||
|
|
240
|
+
JSON.stringify(prior.waiver ?? null) !== JSON.stringify(waiverEvidence ?? null);
|
|
241
|
+
obligations.push({
|
|
242
|
+
schemaVersion: exports.ARCHITECTURE_OBLIGATION_SCHEMA_VERSION,
|
|
243
|
+
...draft,
|
|
244
|
+
status,
|
|
245
|
+
observedEvidence: finalEvidence,
|
|
246
|
+
firstSeenAt: prior?.firstSeenAt || now,
|
|
247
|
+
updatedAt: materiallyChanged ? now : prior.updatedAt,
|
|
248
|
+
effectiveMode,
|
|
249
|
+
...(waiverEvidence && status === 'waived' ? { waiver: waiverEvidence } : {}),
|
|
250
|
+
});
|
|
251
|
+
}
|
|
252
|
+
return obligations;
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* Derive the live architecture-obligation ledger from source-free metadata.
|
|
256
|
+
*
|
|
257
|
+
* The first rule set is intentionally conservative. Every obligation is
|
|
258
|
+
* explainable from user intent, the accepted agent plan, guarded path attempts,
|
|
259
|
+
* or exact approval state. Source, diffs, and file contents are never inputs.
|
|
260
|
+
*/
|
|
261
|
+
function deriveArchitectureObligations(input) {
|
|
262
|
+
const now = input.now || new Date().toISOString();
|
|
263
|
+
const policy = normalizeArchitectureObligationPolicy(input.policy);
|
|
264
|
+
const events = input.events ?? [];
|
|
265
|
+
const trajectoryPaths = allowedTrajectoryPaths(events);
|
|
266
|
+
const acceptedPlanText = planText(input.agentPlan);
|
|
267
|
+
const combinedText = `${input.goal}\n${acceptedPlanText}`.toLowerCase();
|
|
268
|
+
const intentIds = new Set((input.intentContract?.obligations ?? []).map((item) => item.id).filter(Boolean));
|
|
269
|
+
const domains = new Set(input.intentContract?.target?.domainKeywords ?? []);
|
|
270
|
+
const drafts = [];
|
|
271
|
+
const reliabilityTriggered = !isDemoRehearsalMarkerIntent(combinedText) && (/\b(retry|retries|backoff|timeout|idempoten|duplicate side effect)\b/i.test(combinedText) ||
|
|
272
|
+
domains.has('reliability') ||
|
|
273
|
+
intentIds.has('preserve-idempotency') ||
|
|
274
|
+
intentIds.has('cover-retry-path'));
|
|
275
|
+
if (reliabilityTriggered) {
|
|
276
|
+
const retryTest = trajectoryPaths.find(isTestPath);
|
|
277
|
+
drafts.push({
|
|
278
|
+
id: 'reliability:retry-path-coverage',
|
|
279
|
+
category: 'reliability',
|
|
280
|
+
title: 'Exercise the retry path',
|
|
281
|
+
description: 'Retry, backoff, and timeout work should include a guarded test-path change before the session finishes.',
|
|
282
|
+
severity: 'warn',
|
|
283
|
+
triggeredBy: ['intent or accepted plan references retry, backoff, timeout, or reliability'],
|
|
284
|
+
requiredEvidence: ['Edit a test or spec path during this governed session.'],
|
|
285
|
+
observedEvidence: retryTest
|
|
286
|
+
? [evidence('change-trajectory', `Guarded test-path edit observed: ${retryTest}`, retryTest)]
|
|
287
|
+
: [],
|
|
288
|
+
});
|
|
289
|
+
const idempotencyCommitment = /\b(idempoten\w*|duplicate side effects?|at[- ]most[- ]once)\b/i.test(acceptedPlanText);
|
|
290
|
+
drafts.push({
|
|
291
|
+
id: 'reliability:idempotency-reasoning',
|
|
292
|
+
category: 'reliability',
|
|
293
|
+
title: 'State the idempotency strategy',
|
|
294
|
+
description: 'Retry work needs an accepted-plan commitment explaining how duplicate side effects are avoided.',
|
|
295
|
+
severity: 'critical',
|
|
296
|
+
triggeredBy: ['intent or accepted plan references retry, backoff, timeout, or reliability'],
|
|
297
|
+
requiredEvidence: ['Add an idempotency or duplicate-side-effect commitment to the accepted agent plan.'],
|
|
298
|
+
observedEvidence: idempotencyCommitment
|
|
299
|
+
? [evidence('accepted-plan', 'Accepted plan states an idempotency or duplicate-side-effect strategy.')]
|
|
300
|
+
: [],
|
|
301
|
+
});
|
|
302
|
+
}
|
|
303
|
+
const migrationTriggered = /\b(migration|migrate|schema change|database migration|backfill)\b/i.test(combinedText) ||
|
|
304
|
+
input.agentPlan?.expectedFiles.some((filePath) => /(^|\/)(migrations?|schema)(\/|$)/i.test(filePath));
|
|
305
|
+
if (migrationTriggered) {
|
|
306
|
+
const rollbackCommitment = /\b(rollback|reversible|down migration|backfill safety|restore strategy)\b/i.test(acceptedPlanText);
|
|
307
|
+
drafts.push({
|
|
308
|
+
id: 'data-model:migration-rollback-plan',
|
|
309
|
+
category: 'data-model',
|
|
310
|
+
title: 'State the migration rollback strategy',
|
|
311
|
+
description: 'Schema and migration work needs an accepted-plan commitment for rollback or reversibility.',
|
|
312
|
+
severity: 'critical',
|
|
313
|
+
triggeredBy: ['intent or accepted plan references migration, schema change, or backfill'],
|
|
314
|
+
requiredEvidence: ['Add a rollback, reversible migration, or restore-strategy commitment to the accepted agent plan.'],
|
|
315
|
+
observedEvidence: rollbackCommitment
|
|
316
|
+
? [evidence('accepted-plan', 'Accepted plan states a rollback or reversibility strategy.')]
|
|
317
|
+
: [],
|
|
318
|
+
});
|
|
319
|
+
}
|
|
320
|
+
const refactorTriggered = input.intentContract?.primaryAction === 'refactor' ||
|
|
321
|
+
/\b(refactor|restructure|cleanup)\b/i.test(input.goal);
|
|
322
|
+
if (refactorTriggered) {
|
|
323
|
+
const behaviorCommitment = /\b(preserve (?:existing )?behavio[u]?r|backward compat|no behavio[u]?r change|regression tests?)\b/i.test(acceptedPlanText);
|
|
324
|
+
drafts.push({
|
|
325
|
+
id: 'behavior:refactor-preservation-plan',
|
|
326
|
+
category: 'behavior',
|
|
327
|
+
title: 'State the behavior-preservation strategy',
|
|
328
|
+
description: 'Refactors should name how existing behavior remains stable before implementation expands.',
|
|
329
|
+
severity: 'warn',
|
|
330
|
+
triggeredBy: ['user intent declares a refactor or restructure'],
|
|
331
|
+
requiredEvidence: ['Add a behavior-preservation, compatibility, or regression-test commitment to the accepted agent plan.'],
|
|
332
|
+
observedEvidence: behaviorCommitment
|
|
333
|
+
? [evidence('accepted-plan', 'Accepted plan states a behavior-preservation or regression strategy.')]
|
|
334
|
+
: [],
|
|
335
|
+
});
|
|
336
|
+
}
|
|
337
|
+
const approvedPaths = input.approvedPaths ?? [];
|
|
338
|
+
for (const requiredPath of approvalRequiredPaths(events)) {
|
|
339
|
+
const approved = approvedPaths.find((approvedPath) => matchesPath(requiredPath, approvedPath));
|
|
340
|
+
drafts.push({
|
|
341
|
+
id: `ownership:exact-approval:${requiredPath}`,
|
|
342
|
+
category: 'ownership',
|
|
343
|
+
title: `Approve sensitive path ${requiredPath}`,
|
|
344
|
+
description: 'A guarded sensitive or team-owned path must have an explicit session-scoped approval before the write lands.',
|
|
345
|
+
severity: 'critical',
|
|
346
|
+
triggeredBy: [`guarded write attempted: ${requiredPath}`],
|
|
347
|
+
requiredEvidence: [`Approve exactly ${requiredPath} or an explicitly chosen broader glob.`],
|
|
348
|
+
observedEvidence: approved
|
|
349
|
+
? [evidence('exact-approval', `Active session approval recorded: ${approved}`, approved)]
|
|
350
|
+
: [],
|
|
351
|
+
requiredPath,
|
|
352
|
+
});
|
|
353
|
+
}
|
|
354
|
+
// V2: architecture-graph-derived structural obligations (auth/payments/
|
|
355
|
+
// public-api/migration/downstream-impact) for the modules currently in play.
|
|
356
|
+
if (!isDemoRehearsalMarkerIntent(combinedText)) {
|
|
357
|
+
drafts.push(...deriveGraphDrafts(input, events, approvedPaths, acceptedPlanText));
|
|
358
|
+
}
|
|
359
|
+
return finalize(drafts, input.previous ?? [], now, policy, input.waivers ?? []);
|
|
360
|
+
}
|
|
361
|
+
function summarizeArchitectureObligations(obligations = []) {
|
|
362
|
+
return {
|
|
363
|
+
total: obligations.length,
|
|
364
|
+
pending: obligations.filter((item) => item.status === 'pending').length,
|
|
365
|
+
satisfied: obligations.filter((item) => item.status === 'satisfied').length,
|
|
366
|
+
waived: obligations.filter((item) => item.status === 'waived').length,
|
|
367
|
+
criticalPending: obligations.filter((item) => item.status === 'pending' && item.severity === 'critical').length,
|
|
368
|
+
blockingPending: obligations.filter((item) => item.status === 'pending' && (item.effectiveMode ?? 'warn') === 'block').length,
|
|
369
|
+
};
|
|
370
|
+
}
|
|
371
|
+
/**
|
|
372
|
+
* Whether an obligation applies to a given edit path, independent of its status.
|
|
373
|
+
* - `ownership` + path-scoped graph obligations apply only when the edit lands
|
|
374
|
+
* in (or names) their module.
|
|
375
|
+
* - test-satisfiable graph obligations and retry-coverage do not nag the
|
|
376
|
+
* satisfying test edit itself.
|
|
377
|
+
* - global intent/plan obligations apply to every guarded edit.
|
|
378
|
+
*/
|
|
379
|
+
function obligationScopeMatches(item, filePath) {
|
|
380
|
+
if (item.id === 'reliability:retry-path-coverage' && isTestPath(filePath))
|
|
381
|
+
return false;
|
|
382
|
+
if (item.category === 'ownership')
|
|
383
|
+
return item.requiredPath ? matchesPath(filePath, item.requiredPath) : false;
|
|
384
|
+
if (item.requiredPath) {
|
|
385
|
+
if ((0, architecture_graph_1.isModuleTestSatisfiable)(item.id) && isTestPath(filePath))
|
|
386
|
+
return false;
|
|
387
|
+
return matchesPath(filePath, item.requiredPath);
|
|
388
|
+
}
|
|
389
|
+
return true;
|
|
390
|
+
}
|
|
391
|
+
function evaluateArchitectureObligationFeedback(obligations = [], filePath) {
|
|
392
|
+
const pending = obligations.filter((item) => {
|
|
393
|
+
if (item.status !== 'pending')
|
|
394
|
+
return false;
|
|
395
|
+
if ((item.effectiveMode ?? 'warn') === 'off')
|
|
396
|
+
return false;
|
|
397
|
+
return obligationScopeMatches(item, filePath);
|
|
398
|
+
});
|
|
399
|
+
const blocking = pending.filter((item) => (item.effectiveMode ?? 'warn') === 'block');
|
|
400
|
+
return {
|
|
401
|
+
action: blocking.length > 0 ? 'block' : pending.length > 0 ? 'warn' : 'none',
|
|
402
|
+
filePath,
|
|
403
|
+
pending,
|
|
404
|
+
blocking,
|
|
405
|
+
reasons: pending.map((item) => `${item.title}: ${item.requiredEvidence[0]}`),
|
|
406
|
+
};
|
|
407
|
+
}
|
|
408
|
+
const SEVERITY_RANK = { critical: 0, warn: 1 };
|
|
409
|
+
function pickPrimary(obligations) {
|
|
410
|
+
if (obligations.length === 0)
|
|
411
|
+
return null;
|
|
412
|
+
return [...obligations].sort((a, b) => SEVERITY_RANK[a.severity] - SEVERITY_RANK[b.severity])[0];
|
|
413
|
+
}
|
|
414
|
+
/**
|
|
415
|
+
* Evaluate one edit against the architecture graph + live obligation ledger and
|
|
416
|
+
* return a single structured verdict:
|
|
417
|
+
* pass · warn · block · obligation_pending · obligation_waived
|
|
418
|
+
*
|
|
419
|
+
* Boundary blocks always win. Block-mode pending obligations also block. Open
|
|
420
|
+
* warn-mode obligations surface as `obligation_pending` (the edit is allowed but
|
|
421
|
+
* carries an open obligation). When the only applicable obligations are waived,
|
|
422
|
+
* the status is `obligation_waived`.
|
|
423
|
+
*/
|
|
424
|
+
function evaluateArchitectureEdit(input) {
|
|
425
|
+
const filePath = input.filePath;
|
|
426
|
+
const boundaryVerdict = input.boundaryVerdict ?? 'ok';
|
|
427
|
+
const obligations = input.obligations ?? [];
|
|
428
|
+
const graph = input.graph ?? null;
|
|
429
|
+
const module = graph ? (0, architecture_graph_1.findModuleForPath)(graph, filePath) : null;
|
|
430
|
+
const surfaces = module?.surfaces ?? [];
|
|
431
|
+
const dependents = graph && module ? (0, architecture_graph_1.dependentsOf)(graph, module.id) : [];
|
|
432
|
+
const applicable = obligations.filter((item) => (item.effectiveMode ?? 'warn') !== 'off' && obligationScopeMatches(item, filePath));
|
|
433
|
+
const pending = applicable.filter((item) => item.status === 'pending');
|
|
434
|
+
const blocking = pending.filter((item) => (item.effectiveMode ?? 'warn') === 'block');
|
|
435
|
+
const waived = applicable.filter((item) => item.status === 'waived');
|
|
436
|
+
const satisfied = applicable.filter((item) => item.status === 'satisfied');
|
|
437
|
+
let status;
|
|
438
|
+
if (boundaryVerdict === 'block' || blocking.length > 0)
|
|
439
|
+
status = 'block';
|
|
440
|
+
else if (pending.length > 0)
|
|
441
|
+
status = 'obligation_pending';
|
|
442
|
+
else if (waived.length > 0)
|
|
443
|
+
status = 'obligation_waived';
|
|
444
|
+
else if (boundaryVerdict === 'warn')
|
|
445
|
+
status = 'warn';
|
|
446
|
+
else
|
|
447
|
+
status = 'pass';
|
|
448
|
+
const reasons = [];
|
|
449
|
+
const primary = pickPrimary(blocking.length > 0 ? blocking : pending.length > 0 ? pending : waived);
|
|
450
|
+
let message = '';
|
|
451
|
+
if (status === 'block') {
|
|
452
|
+
if (blocking.length > 0 && primary) {
|
|
453
|
+
message = `${primary.description} (architecture obligation enforced as block).`;
|
|
454
|
+
reasons.push(...blocking.map((item) => item.description));
|
|
455
|
+
}
|
|
456
|
+
else {
|
|
457
|
+
message = module
|
|
458
|
+
? `Edit to ${filePath} is blocked by a governance boundary in module ${module.id}.`
|
|
459
|
+
: `Edit to ${filePath} is blocked by a governance boundary.`;
|
|
460
|
+
reasons.push('boundary policy block');
|
|
461
|
+
}
|
|
462
|
+
}
|
|
463
|
+
else if (status === 'obligation_pending' && primary) {
|
|
464
|
+
message = primary.description;
|
|
465
|
+
reasons.push(...pending.map((item) => `${item.title}: ${item.requiredEvidence[0] ?? ''}`.trim()));
|
|
466
|
+
}
|
|
467
|
+
else if (status === 'obligation_waived' && primary) {
|
|
468
|
+
const who = primary.waiver?.waivedBy || primary.waiver?.source || 'a human';
|
|
469
|
+
message = `${primary.description} A waiver is active (${who}); proceeding under accepted risk.`;
|
|
470
|
+
reasons.push(...waived.map((item) => `${item.title} waived`));
|
|
471
|
+
}
|
|
472
|
+
else if (status === 'warn') {
|
|
473
|
+
message = module
|
|
474
|
+
? `Edit to ${filePath} in module ${module.id} is allowed with an advisory warning.`
|
|
475
|
+
: `Edit to ${filePath} is allowed with an advisory warning.`;
|
|
476
|
+
}
|
|
477
|
+
else {
|
|
478
|
+
message = '';
|
|
479
|
+
}
|
|
480
|
+
let options;
|
|
481
|
+
if (status === 'block') {
|
|
482
|
+
const ownershipDriven = blocking.some((item) => item.category === 'ownership' || item.category === 'payments' || item.category === 'security') ||
|
|
483
|
+
Boolean(module?.approvalRequired);
|
|
484
|
+
options = ownershipDriven ? ['approve', 'waive', 'narrow', 'replan'] : ['waive', 'narrow', 'replan'];
|
|
485
|
+
}
|
|
486
|
+
else if (status === 'obligation_pending') {
|
|
487
|
+
options = ['continue', 'approve', 'waive', 'replan'];
|
|
488
|
+
}
|
|
489
|
+
else {
|
|
490
|
+
options = ['continue'];
|
|
491
|
+
}
|
|
492
|
+
return {
|
|
493
|
+
status,
|
|
494
|
+
filePath,
|
|
495
|
+
module: module?.id ?? null,
|
|
496
|
+
surfaces,
|
|
497
|
+
dependents,
|
|
498
|
+
boundaryVerdict,
|
|
499
|
+
obligations: { blocking, pending, waived, satisfied },
|
|
500
|
+
reasons: reasons.filter(Boolean),
|
|
501
|
+
message,
|
|
502
|
+
options,
|
|
503
|
+
};
|
|
504
|
+
}
|
|
505
|
+
//# sourceMappingURL=architecture-obligations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"architecture-obligations.js","sourceRoot":"","sources":["../src/architecture-obligations.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
export type PlanVerdict = 'PASS' | 'FAIL' | 'WARN';
|
|
2
|
+
export { buildRepoGovernanceProfile, checkFileBoundary, DEFAULT_PLAN_COHERENCE_MODE, ownersForPath, type RepoGovernanceProfile, type ProfileInput, type RuntimeGovernanceConfig, type PlanCoherenceMode, type SensitiveBoundary, type OwnershipBoundary, type BoundaryCheckInput, type BoundaryCheckResult, type BoundaryVerdict, type ReadinessStatus, } from './profile';
|
|
3
|
+
export { createSession, loadActiveSession, loadSession, appendEvent, approveSession, revokeSessionApproval, activeApprovalPaths, expireSessionApprovals, expireArchitectureObligationWaivers, waiveArchitectureObligation, refreshArchitectureObligations, evaluateIntentCoherence, evaluatePlanCoherencePolicy, attachAgentPlan, captureAgentPlan, amendAgentPlan, decideAgentPlanAmendment, classifyAgentPlanAmendment, evaluateSessionPlanCoherence, activeAgentPlanRevision, buildPlanTimeline, finishSession, replaySession, sessionsDir, sessionPath, type GovernanceSession, type SessionContract, type SessionEvent, type EventType, type ApprovalResult, type ApprovalGrant, type ApprovalOptions, type ApprovalRevocationOptions, type ApprovalRevocationResult, type ApprovalSource, type FinishSessionOptions, type UnresolvedApprovalBlock, type ArchitectureObligationWaiverOptions, type ArchitectureObligationWaiverResult, type AgentPlanAmendmentAction, type AgentPlanAmendmentActor, type AgentPlanAmendmentDecision, type AgentPlanAmendmentDecisionInput, type AgentPlanAmendmentDecisionResult, type AgentPlanAmendmentInput, type AgentPlanAmendmentProposal, type AgentPlanAmendmentProposalStatus, type AgentPlanAmendmentResult, type AgentPlanAmendmentRisk, type AgentPlanAmendmentRiskLevel, type AgentPlanCaptureResult, type AgentPlanRevision, type AgentPlanRevisionKind, type IntentCoherenceResult, type IntentCoherenceVerdict, type IntentConfidence, type IntentContract, type IntentObligation, type IntentPrimaryAction, type PlanCoherencePolicyAction, type PlanCoherencePolicyDecision, type PlanTimeline, type PlanTimelineEntry, type PlanTimelineEntryKind, } from './session';
|
|
4
|
+
export { AI_CHANGE_RECORD_SCHEMA_VERSION, AI_CHANGE_RECORD_TYPE, aiChangeRecordPath, buildAIChangeRecord, writeAIChangeRecord, type AIChangeRecord, type AIChangeRecordApprovalEntry, type AIChangeRecordPathTrajectory, type AIChangeRecordPlanTimelineEntry, type AIChangeRecordStructuralUnderstanding, } from './ai-change-record';
|
|
5
|
+
export { AGENT_INVOCATION_OBSERVABILITY_SCHEMA_VERSION, buildAgentInvocationSummary, type AgentInvocationCheckStatus, type AgentInvocationProtocolCheck, type AgentInvocationStatus, type AgentInvocationSummary, } from './agent-invocation-observability';
|
|
6
|
+
export { AGENT_GUARD_POSTURE_SCHEMA_VERSION, buildAgentGuardPostureSummary, type AgentGuardFileClassification, type AgentGuardPostureFile, type AgentGuardPostureStatus, type AgentGuardPostureSummary, } from './agent-guard-posture';
|
|
7
|
+
export { ARCHITECTURE_OBLIGATION_SCHEMA_VERSION, DEFAULT_ARCHITECTURE_OBLIGATION_POLICY, activeArchitectureObligationWaivers, deriveArchitectureObligations, effectiveArchitectureObligationMode, evaluateArchitectureObligationFeedback, evaluateArchitectureEdit, isArchitectureObligationWaiverActive, normalizeArchitectureObligationPolicy, summarizeArchitectureObligations, type ArchitectureObligation, type ArchitectureObligationCategory, type ArchitectureObligationEvidence, type ArchitectureObligationEvidenceKind, type ArchitectureObligationFeedback, type ArchitectureObligationIntent, type ArchitectureObligationPolicy, type ArchitectureObligationPolicyMode, type ArchitectureObligationSeverity, type ArchitectureObligationStatus, type ArchitectureObligationSummary, type ArchitectureObligationWaiver, type ArchitectureObligationWaiverEvidence, type ArchitectureObligationWaiverSource, type DeriveArchitectureObligationsInput, type RuntimeEditEvaluation, type RuntimeEditOption, type RuntimeEditStatus, } from './architecture-obligations';
|
|
8
|
+
export { ARCHITECTURE_GRAPH_SCHEMA_VERSION, buildArchitectureGraph, dependenciesOf, dependentsOf, deriveGraphObligationSeeds, extractImportSpecifiers, findModuleForPath, isModuleTestSatisfiable, moduleIdForPath, modulesInPlay, resolveImportSpecifier, type ArchitectureDependencyEdge, type ArchitectureGraphStats, type ArchitectureModule, type ArchitectureSurfaceKind, type BuildArchitectureGraphInput, type GraphObligationSeed, type ModuleImportRecord, type RepoArchitectureGraph, } from './architecture-graph';
|
|
2
9
|
export { compileDeterministicConstraints, type DeterministicConstraintCompilation, type DeterministicConstraintCompilationInput, type DeterministicConstraintRule, type DeterministicConstraintSource, } from './constraints';
|
|
10
|
+
export { buildCoverageManifest, computeCoverageSetHash, computeDeltaHash, deriveCoverageEntries, normalizeDeltaEntries, readSelfAttestedAdmissionRecord, readSelfAttestedAdmissionRecordFromText, sortCoverageEntries, sortDeltaEntries, unionCoverageEntries, unionCoverageManifests, validateSelfAttestedRecordConsistency, type BuildCoverageManifestInput, type GovernanceClassificationInput, type GovernanceClassificationMap, type RawDeltaInput, } from './admission-provenance';
|
|
11
|
+
export { AGENT_PLAN_SCHEMA_VERSION, extractAgentPlan, extractExpectedTargetsFromText, parsePlanSteps, evaluatePlanCoherence, planImpliesSupportWork, isTestOrUtilityPath, sanitizeAgentPlan, sanitizePlanCoherence, type AgentPlan, type AgentPlanSource, type AgentPlanConfidence, type PlanCoherenceResult, type PlanCoherenceVerdict, type PlanCoherenceInput, type ExtractAgentPlanOptions, } from './agent-plan';
|
|
12
|
+
export { AGENT_RUNTIME_ADAPTER_SCHEMA_VERSION, AGENT_RUNTIME_DECISION_SCHEMA_VERSION, getAgentRuntimeAdapterCapability, listAgentRuntimeAdapterCapabilities, normalizeAgentRuntimeEvent, type AgentRuntimeAdapterCapability, type AgentRuntimeAdapterId, type AgentRuntimeDecision, type AgentRuntimeDecisionEnvelope, type AgentRuntimeEnforcementLevel, type AgentRuntimeEvent, type AgentRuntimeEventPayload, type AgentRuntimeEventType, } from './agent-runtime-adapter';
|
|
3
13
|
import { type DeterministicConstraintRule } from './constraints';
|
|
4
14
|
export interface PlanFileScopeItem {
|
|
5
15
|
path: string;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|