audit-tools 0.30.12 → 0.30.14
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/dist/audit/cli/dispatch/quotaPool.d.ts.map +1 -1
- package/dist/audit/cli/dispatch/quotaPool.js +8 -1
- package/dist/audit/cli/dispatch/quotaPool.js.map +1 -1
- package/dist/audit/cli/mergeAndIngestCommand.d.ts +4 -1
- package/dist/audit/cli/mergeAndIngestCommand.d.ts.map +1 -1
- package/dist/audit/cli/mergeAndIngestCommand.js +27 -3
- package/dist/audit/cli/mergeAndIngestCommand.js.map +1 -1
- package/dist/audit/cli/nextStepHelpers.d.ts.map +1 -1
- package/dist/audit/cli/nextStepHelpers.js +1 -2
- package/dist/audit/cli/nextStepHelpers.js.map +1 -1
- package/dist/audit/cli/workerRunCommand.d.ts.map +1 -1
- package/dist/audit/cli/workerRunCommand.js +23 -1
- package/dist/audit/cli/workerRunCommand.js.map +1 -1
- package/dist/audit/contracts/workerSchemas.d.ts +4 -4
- package/dist/audit/contracts/wrapperResponse.d.ts +6 -6
- package/dist/audit/orchestrator/intentCheckpointGate.d.ts.map +1 -1
- package/dist/audit/orchestrator/intentCheckpointGate.js +4 -3
- package/dist/audit/orchestrator/intentCheckpointGate.js.map +1 -1
- package/dist/audit/orchestrator/ledger.d.ts.map +1 -1
- package/dist/audit/orchestrator/ledger.js +4 -1
- package/dist/audit/orchestrator/ledger.js.map +1 -1
- package/dist/audit/orchestrator/resultBaseline.d.ts +7 -0
- package/dist/audit/orchestrator/resultBaseline.d.ts.map +1 -1
- package/dist/audit/orchestrator/resultBaseline.js +8 -2
- package/dist/audit/orchestrator/resultBaseline.js.map +1 -1
- package/dist/audit/quota/index.d.ts +12 -12
- package/dist/audit/types.d.ts +2 -2
- package/dist/audit/validation/auditResults.d.ts.map +1 -1
- package/dist/audit/validation/auditResults.js +5 -0
- package/dist/audit/validation/auditResults.js.map +1 -1
- package/dist/remediate/contractPipeline/artifactStore.d.ts +5 -12
- package/dist/remediate/contractPipeline/artifactStore.d.ts.map +1 -1
- package/dist/remediate/contractPipeline/artifactStore.js +6 -8
- package/dist/remediate/contractPipeline/artifactStore.js.map +1 -1
- package/dist/remediate/steps/contractPipeline.d.ts +7 -0
- package/dist/remediate/steps/contractPipeline.d.ts.map +1 -1
- package/dist/remediate/steps/contractPipeline.js +185 -2
- package/dist/remediate/steps/contractPipeline.js.map +1 -1
- package/dist/remediate/steps/dispatch.d.ts.map +1 -1
- package/dist/remediate/steps/dispatch.js +42 -1
- package/dist/remediate/steps/dispatch.js.map +1 -1
- package/dist/remediate/validation/contractPipeline.d.ts +1 -1
- package/dist/remediate/validation/contractPipeline.d.ts.map +1 -1
- package/dist/remediate/validation/contractPipeline.js +1 -1
- package/dist/remediate/validation/contractPipeline.js.map +1 -1
- package/dist/remediate/validation/contractPipelineGates.d.ts +34 -16
- package/dist/remediate/validation/contractPipelineGates.d.ts.map +1 -1
- package/dist/remediate/validation/contractPipelineGates.js +129 -2
- package/dist/remediate/validation/contractPipelineGates.js.map +1 -1
- package/dist/shared/contentKey.d.ts +47 -0
- package/dist/shared/contentKey.d.ts.map +1 -1
- package/dist/shared/contentKey.js +54 -0
- package/dist/shared/contentKey.js.map +1 -1
- package/dist/shared/dispatch/rollingDispatch.d.ts +12 -0
- package/dist/shared/dispatch/rollingDispatch.d.ts.map +1 -1
- package/dist/shared/dispatch/rollingDispatch.js +23 -1
- package/dist/shared/dispatch/rollingDispatch.js.map +1 -1
- package/dist/shared/friction/captureFrictionEvent.d.ts +12 -8
- package/dist/shared/friction/captureFrictionEvent.d.ts.map +1 -1
- package/dist/shared/friction/captureFrictionEvent.js +21 -21
- package/dist/shared/friction/captureFrictionEvent.js.map +1 -1
- package/dist/shared/friction/frictionRecord.d.ts +76 -0
- package/dist/shared/friction/frictionRecord.d.ts.map +1 -0
- package/dist/shared/friction/frictionRecord.js +45 -0
- package/dist/shared/friction/frictionRecord.js.map +1 -0
- package/dist/shared/friction/stepBoundaryCapture.d.ts +80 -0
- package/dist/shared/friction/stepBoundaryCapture.d.ts.map +1 -0
- package/dist/shared/friction/stepBoundaryCapture.js +41 -0
- package/dist/shared/friction/stepBoundaryCapture.js.map +1 -0
- package/dist/shared/friction/triage.d.ts +3 -43
- package/dist/shared/friction/triage.d.ts.map +1 -1
- package/dist/shared/friction/triage.js +35 -34
- package/dist/shared/friction/triage.js.map +1 -1
- package/dist/shared/index.d.ts +4 -1
- package/dist/shared/index.d.ts.map +1 -1
- package/dist/shared/index.js +6 -1
- package/dist/shared/index.js.map +1 -1
- package/dist/shared/io/gitignoreArtifacts.d.ts +52 -10
- package/dist/shared/io/gitignoreArtifacts.d.ts.map +1 -1
- package/dist/shared/io/gitignoreArtifacts.js +83 -29
- package/dist/shared/io/gitignoreArtifacts.js.map +1 -1
- package/dist/shared/quota/capacity.d.ts +4 -4
- package/dist/shared/quota/compositeQuotaSource.d.ts +12 -0
- package/dist/shared/quota/compositeQuotaSource.d.ts.map +1 -1
- package/dist/shared/quota/compositeQuotaSource.js +7 -0
- package/dist/shared/quota/compositeQuotaSource.js.map +1 -1
- package/dist/shared/quota/hostSessionQuotaSource.d.ts.map +1 -1
- package/dist/shared/quota/hostSessionQuotaSource.js +42 -8
- package/dist/shared/quota/hostSessionQuotaSource.js.map +1 -1
- package/dist/shared/quota/quotaSource.d.ts +2 -2
- package/dist/shared/repair/emitValidateRepair.d.ts.map +1 -1
- package/dist/shared/repair/emitValidateRepair.js +4 -3
- package/dist/shared/repair/emitValidateRepair.js.map +1 -1
- package/dist/{audit → shared}/validation/designFindingGrounding.d.ts +5 -1
- package/dist/shared/validation/designFindingGrounding.d.ts.map +1 -0
- package/dist/{audit → shared}/validation/designFindingGrounding.js +1 -1
- package/dist/shared/validation/designFindingGrounding.js.map +1 -0
- package/package.json +1 -1
- package/scripts/postinstall.mjs +8 -2
- package/dist/audit/validation/designFindingGrounding.d.ts.map +0 -1
- package/dist/audit/validation/designFindingGrounding.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contentKey.js","sourceRoot":"","sources":["../../src/shared/contentKey.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwDG;AACH,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAErD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,wBAAwB,EAAE,MAAM,4CAA4C,CAAC;
|
|
1
|
+
{"version":3,"file":"contentKey.js","sourceRoot":"","sources":["../../src/shared/contentKey.ts"],"names":[],"mappings":"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"}
|
|
@@ -110,6 +110,18 @@ export interface RollingDispatchConfig<TPacket> {
|
|
|
110
110
|
* Defaults to DEFAULT_EMPIRICAL_HALF_LIFE_HOURS.
|
|
111
111
|
*/
|
|
112
112
|
halfLifeHours?: number;
|
|
113
|
+
/**
|
|
114
|
+
* Host-session escalation predicate. When a `rate_limited` packet has been
|
|
115
|
+
* ESCALATED by the host-session source (its account-level wall re-tripped the
|
|
116
|
+
* SAME packet past the bounded re-limit guard — an unresettable / clock-skewed
|
|
117
|
+
* wall), re-queuing it would livelock. Consulted in the rate_limited branch:
|
|
118
|
+
* an escalated packet is STRANDED (surfaced via the empty-pool terminal) instead
|
|
119
|
+
* of re-queued, while a non-escalated packet keeps the normal INV-QD-07
|
|
120
|
+
* transient-exhaustion re-route. The consumer owns feeding the source's
|
|
121
|
+
* `recordLimit` from the worker ERROR/STATUS channel; this is the read side.
|
|
122
|
+
* Omit to leave INV-QD-07 behaviour unchanged.
|
|
123
|
+
*/
|
|
124
|
+
isPacketEscalated?: (packetId: string) => boolean;
|
|
113
125
|
}
|
|
114
126
|
/** Options for tuning the dispatcher (intentionally minimal per INV-S05). */
|
|
115
127
|
export interface RollingDispatchOptions {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rollingDispatch.d.ts","sourceRoot":"","sources":["../../../src/shared/dispatch/rollingDispatch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AACpF,OAAO,KAAK,EAAE,eAAe,EAA4B,MAAM,mBAAmB,CAAC;AAenF,oEAAoE;AACpE,MAAM,WAAW,qBAAqB,CAAC,OAAO;IAC5C,8DAA8D;IAC9D,EAAE,EAAE,MAAM,CAAC;IACX,gEAAgE;IAChE,OAAO,EAAE,OAAO,CAAC;IACjB;;;OAGG;IACH,eAAe,EAAE,MAAM,CAAC;IACxB;;;;OAIG;IACH,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,8CAA8C;AAC9C,MAAM,WAAW,qBAAqB,CAAC,OAAO;IAC5C,MAAM,EAAE,qBAAqB,CAAC,OAAO,CAAC,CAAC;IACvC,OAAO,EAAE,SAAS,GAAG,cAAc,GAAG,SAAS,GAAG,OAAO,CAAC;IAC1D,0DAA0D;IAC1D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,mEAAmE;AACnE,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wDAAwD;AACxD,MAAM,WAAW,aAAa,CAAC,OAAO;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,qBAAqB,CAAC,OAAO,CAAC,CAAC;IACvC,YAAY,EAAE,YAAY,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC;CAClD;AAED,+CAA+C;AAC/C,MAAM,WAAW,oBAAoB,CAAC,OAAO;IAC3C,YAAY,EAAE,qBAAqB,CAAC,OAAO,CAAC,EAAE,CAAC;IAC/C,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;IAC9C,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1B;;;;;OAKG;IACH,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC9B;;;;OAIG;IACH,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC1B;AAED,kEAAkE;AAClE,MAAM,WAAW,qBAAqB,CAAC,OAAO;IAC5C,qDAAqD;IACrD,cAAc,EAAE,YAAY,EAAE,CAAC;IAC/B,aAAa,EAAE,aAAa,CAAC;IAC7B;;;OAGG;IACH,cAAc,EAAE,CACd,MAAM,EAAE,qBAAqB,CAAC,OAAO,CAAC,EACtC,IAAI,EAAE,YAAY,KACf,OAAO,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC;IAC7C,uFAAuF;IACvF,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,qBAAqB,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;IAC5D;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"rollingDispatch.d.ts","sourceRoot":"","sources":["../../../src/shared/dispatch/rollingDispatch.ts"],"names":[],"mappings":"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"}
|
|
@@ -191,7 +191,7 @@ export function selectProvider(packet, confirmedPools, inFlightTracker, quotaSta
|
|
|
191
191
|
* separate concurrency cap unless `options.maxConcurrentPerPool` is set.
|
|
192
192
|
*/
|
|
193
193
|
export function createRollingDispatcher(config, options = {}) {
|
|
194
|
-
const { confirmedPools, sessionConfig, dispatchPacket, onResult, halfLifeHours = DEFAULT_EMPIRICAL_HALF_LIFE_HOURS, } = config;
|
|
194
|
+
const { confirmedPools, sessionConfig, dispatchPacket, onResult, halfLifeHours = DEFAULT_EMPIRICAL_HALF_LIFE_HOURS, isPacketEscalated, } = config;
|
|
195
195
|
const state = {
|
|
196
196
|
pendingQueue: [],
|
|
197
197
|
inFlight: new Map(),
|
|
@@ -282,6 +282,28 @@ export function createRollingDispatcher(config, options = {}) {
|
|
|
282
282
|
// marked completed nor recorded as a result — it remains live work.
|
|
283
283
|
if (result.outcome === "rate_limited") {
|
|
284
284
|
state.exhaustedPoolIds.add(providerSlot.poolId);
|
|
285
|
+
// Bounded-escalation guard: if the host-session source has ESCALATED this
|
|
286
|
+
// packet (its account wall re-tripped the SAME packet past the bound — an
|
|
287
|
+
// unresettable / clock-skewed limit), re-queuing it would livelock. Strand
|
|
288
|
+
// it instead so it surfaces via the empty-pool terminal (INV-QD-07's
|
|
289
|
+
// stranding path), rather than re-routing into the wall forever. A
|
|
290
|
+
// non-escalated packet keeps the normal transient-exhaustion re-route.
|
|
291
|
+
if (isPacketEscalated?.(packet.id)) {
|
|
292
|
+
if (!state.completedIds.has(packet.id))
|
|
293
|
+
state.strandedIds.add(packet.id);
|
|
294
|
+
try {
|
|
295
|
+
process.stderr.write(JSON.stringify({
|
|
296
|
+
ts: new Date().toISOString(),
|
|
297
|
+
kind: "rolling_dispatch_stranded_host_session_escalation",
|
|
298
|
+
packet_id: packet.id,
|
|
299
|
+
exhausted_pool_id: providerSlot.poolId,
|
|
300
|
+
}) + "\n");
|
|
301
|
+
}
|
|
302
|
+
catch {
|
|
303
|
+
// Observability must never abort a run.
|
|
304
|
+
}
|
|
305
|
+
return;
|
|
306
|
+
}
|
|
285
307
|
// Re-queue at the front so the displaced packet is retried before fresh
|
|
286
308
|
// pending work (avoids starving an already-attempted packet).
|
|
287
309
|
if (!state.completedIds.has(packet.id) && !state.pendingQueue.some((q) => q.id === packet.id)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rollingDispatch.js","sourceRoot":"","sources":["../../../src/shared/dispatch/rollingDispatch.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"rollingDispatch.js","sourceRoot":"","sources":["../../../src/shared/dispatch/rollingDispatch.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { type FrictionCaptureArtifact, type FrictionItem } from
|
|
1
|
+
import { type FrictionCaptureArtifact, type FrictionItem } from "../io/frictionCapture.js";
|
|
2
|
+
export type { CapturedFrictionItem } from "./frictionRecord.js";
|
|
2
3
|
/**
|
|
3
4
|
* The single mechanical-friction sink (FC-005). Mechanical seams (O3
|
|
4
5
|
* validation/coercion/repair warnings; O2 recovery / ingest-merge-retry) call
|
|
@@ -19,13 +20,18 @@ import { type FrictionCaptureArtifact, type FrictionItem } from '../io/frictionC
|
|
|
19
20
|
* - IDEMPOTENT / PER-EVENT DE-DUP: an event whose `id` already appears in the
|
|
20
21
|
* run record is dropped, so re-entrant passes (re-dispatch, retry) never
|
|
21
22
|
* double-record the same logical event (INV-O1-6, FAIL-O1-5).
|
|
23
|
+
* - LOCKED + MERGE-PRESERVING (CE-004 / CE-010): the append rides the SAME
|
|
24
|
+
* `withFileLock(frictionLockPath)` as the host triage path and reads-then-
|
|
25
|
+
* merges the current record, so a late mechanical emit never clobbers host
|
|
26
|
+
* `dispositions[]` / `open_observations[]` already written to the record.
|
|
22
27
|
* - OS/PATH-AGNOSTIC: the record path comes only from the substrate's
|
|
23
28
|
* `frictionCapturePath` (node:path joins off `artifactsDir` + `sanitizeRunId`);
|
|
24
29
|
* no platform-baked literal, never coupled to any repo doc (INV-O1-7).
|
|
25
30
|
*
|
|
26
31
|
* This is the substrate-wrapping sink only: live triage dispositions over the
|
|
27
32
|
* accreted events are owned by O1's triage module, the locked append ordering by
|
|
28
|
-
*
|
|
33
|
+
* the shared `frictionRecord` substrate — this layer just appends one de-duped
|
|
34
|
+
* event, best-effort.
|
|
29
35
|
*/
|
|
30
36
|
/** A single mechanical friction event recorded through the sink. */
|
|
31
37
|
export interface FrictionEvent extends FrictionItem {
|
|
@@ -35,16 +41,14 @@ export interface FrictionEvent extends FrictionItem {
|
|
|
35
41
|
*/
|
|
36
42
|
id: string;
|
|
37
43
|
}
|
|
38
|
-
/** A friction record item carrying its mechanical-event de-dup id. */
|
|
39
|
-
export interface CapturedFrictionItem extends FrictionItem {
|
|
40
|
-
id: string;
|
|
41
|
-
}
|
|
42
44
|
/**
|
|
43
45
|
* Append one mechanical friction event to the per-run record, best-effort.
|
|
44
46
|
*
|
|
45
47
|
* Never throws: any failure (missing/locked dir, malformed existing record,
|
|
46
48
|
* write contention) is swallowed so the calling obligation is never broken
|
|
47
|
-
* (INV-O1-5, FAIL-O1-3). De-duped on `event.id` (INV-O1-6, FAIL-O1-5).
|
|
49
|
+
* (INV-O1-5, FAIL-O1-3). De-duped on `event.id` (INV-O1-6, FAIL-O1-5). Rides the
|
|
50
|
+
* shared `withFileLock` and MERGES the existing record, so host
|
|
51
|
+
* `dispositions[]` / `open_observations[]` survive a late emit (CE-004 / CE-010).
|
|
48
52
|
*/
|
|
49
|
-
export declare function captureFrictionEvent(artifactsDir: string, runId: string, event: FrictionEvent, tool?: FrictionCaptureArtifact[
|
|
53
|
+
export declare function captureFrictionEvent(artifactsDir: string, runId: string, event: FrictionEvent, tool?: FrictionCaptureArtifact["tool"]): Promise<void>;
|
|
50
54
|
//# sourceMappingURL=captureFrictionEvent.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"captureFrictionEvent.d.ts","sourceRoot":"","sources":["../../../src/shared/friction/captureFrictionEvent.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"captureFrictionEvent.d.ts","sourceRoot":"","sources":["../../../src/shared/friction/captureFrictionEvent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,uBAAuB,EAAE,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAM3F,YAAY,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAEhE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,oEAAoE;AACpE,MAAM,WAAW,aAAc,SAAQ,YAAY;IACjD;;;OAGG;IACH,EAAE,EAAE,MAAM,CAAC;CACZ;AAED;;;;;;;;GAQG;AACH,wBAAsB,oBAAoB,CACxC,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,aAAa,EACpB,IAAI,GAAE,uBAAuB,CAAC,MAAM,CAAoB,GACvD,OAAO,CAAC,IAAI,CAAC,CA0Bf"}
|
|
@@ -1,31 +1,31 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { readOptionalJsonFile, writeJsonFile } from '../io/json.js';
|
|
1
|
+
import { appendFrictionUnderLock, } from "./frictionRecord.js";
|
|
3
2
|
/**
|
|
4
3
|
* Append one mechanical friction event to the per-run record, best-effort.
|
|
5
4
|
*
|
|
6
5
|
* Never throws: any failure (missing/locked dir, malformed existing record,
|
|
7
6
|
* write contention) is swallowed so the calling obligation is never broken
|
|
8
|
-
* (INV-O1-5, FAIL-O1-3). De-duped on `event.id` (INV-O1-6, FAIL-O1-5).
|
|
7
|
+
* (INV-O1-5, FAIL-O1-3). De-duped on `event.id` (INV-O1-6, FAIL-O1-5). Rides the
|
|
8
|
+
* shared `withFileLock` and MERGES the existing record, so host
|
|
9
|
+
* `dispositions[]` / `open_observations[]` survive a late emit (CE-004 / CE-010).
|
|
9
10
|
*/
|
|
10
|
-
export async function captureFrictionEvent(artifactsDir, runId, event, tool =
|
|
11
|
+
export async function captureFrictionEvent(artifactsDir, runId, event, tool = "remediate-code") {
|
|
11
12
|
try {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
:
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
};
|
|
28
|
-
await writeJsonFile(path, artifact);
|
|
13
|
+
await appendFrictionUnderLock(artifactsDir, runId, (record) => {
|
|
14
|
+
const frictions = Array.isArray(record.frictions)
|
|
15
|
+
? record.frictions
|
|
16
|
+
: [];
|
|
17
|
+
// Per-event de-dup: drop an event whose id is already recorded. The
|
|
18
|
+
// record (incl. host dispositions / open observations) is returned
|
|
19
|
+
// unchanged so the locked merge preserves every existing field.
|
|
20
|
+
if (frictions.some((item) => item.id === event.id)) {
|
|
21
|
+
return record;
|
|
22
|
+
}
|
|
23
|
+
return {
|
|
24
|
+
...record,
|
|
25
|
+
tool: record.tool ?? tool,
|
|
26
|
+
frictions: [...frictions, { ...event }],
|
|
27
|
+
};
|
|
28
|
+
}, tool);
|
|
29
29
|
}
|
|
30
30
|
catch {
|
|
31
31
|
// Best-effort: swallow every failure so capture never breaks the obligation.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"captureFrictionEvent.js","sourceRoot":"","sources":["../../../src/shared/friction/captureFrictionEvent.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"captureFrictionEvent.js","sourceRoot":"","sources":["../../../src/shared/friction/captureFrictionEvent.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,uBAAuB,GACxB,MAAM,qBAAqB,CAAC;AA+C7B;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,YAAoB,EACpB,KAAa,EACb,KAAoB,EACpB,OAAwC,gBAAgB;IAExD,IAAI,CAAC;QACH,MAAM,uBAAuB,CAC3B,YAAY,EACZ,KAAK,EACL,CAAC,MAAM,EAAE,EAAE;YACT,MAAM,SAAS,GAA2B,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC;gBACvE,CAAC,CAAC,MAAM,CAAC,SAAS;gBAClB,CAAC,CAAC,EAAE,CAAC;YACP,oEAAoE;YACpE,mEAAmE;YACnE,gEAAgE;YAChE,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;gBACnD,OAAO,MAAM,CAAC;YAChB,CAAC;YACD,OAAO;gBACL,GAAG,MAAM;gBACT,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,IAAI;gBACzB,SAAS,EAAE,CAAC,GAAG,SAAS,EAAE,EAAE,GAAG,KAAK,EAAE,CAAC;aACxC,CAAC;QACJ,CAAC,EACD,IAAI,CACL,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,6EAA6E;IAC/E,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { type FrictionCaptureArtifact, type FrictionItem } from "../io/frictionCapture.js";
|
|
2
|
+
/**
|
|
3
|
+
* The shared per-run friction RECORD substrate (CE-004 / CE-010, the O1
|
|
4
|
+
* FRICTION-FOUNDATION layer). Single-sourced for BOTH orchestrators so the
|
|
5
|
+
* record shape, the lock path, and the locked read-merge-write append cannot
|
|
6
|
+
* drift between the two halves of the pipeline.
|
|
7
|
+
*
|
|
8
|
+
* `captureFrictionEvent` (the mechanical sink) and `recordFrictionDisposition` /
|
|
9
|
+
* `decideFrictionTriage` (the host triage path) BOTH route their record
|
|
10
|
+
* mutations through `appendFrictionUnderLock`, which rides ONE
|
|
11
|
+
* `withFileLock(frictionLockPath)` and reads-then-MERGEs the existing record —
|
|
12
|
+
* so a late mechanical emit never clobbers host `dispositions[]` /
|
|
13
|
+
* `open_observations[]` already written, and a host disposition never drops a
|
|
14
|
+
* concurrently-appended mechanical `frictions[]` entry (CE-010).
|
|
15
|
+
*
|
|
16
|
+
* Every path derives from `node:path` joins off the supplied artifacts dir
|
|
17
|
+
* (via `frictionCapturePath` / `sanitizeRunId`) — no platform-baked literal, so
|
|
18
|
+
* the substrate is OS/path-agnostic (INV-O1-7).
|
|
19
|
+
*/
|
|
20
|
+
/** A single captured mechanical friction event: a `FrictionItem` plus a stable id. */
|
|
21
|
+
export interface CapturedFrictionItem extends FrictionItem {
|
|
22
|
+
/** Stable distinct id; re-recording an event with this id is a no-op de-dup. */
|
|
23
|
+
id: string;
|
|
24
|
+
}
|
|
25
|
+
/** The host disposition vocabulary over a captured subject. */
|
|
26
|
+
export type FrictionDisposition = "keep" | "discard" | "annotate";
|
|
27
|
+
/** One host disposition recorded against a captured subject (event/reflection). */
|
|
28
|
+
export interface FrictionDispositionRecord {
|
|
29
|
+
/** The captured subject's stable key (event id or reflection key). */
|
|
30
|
+
target_id: string;
|
|
31
|
+
/** The host's verdict on the subject. */
|
|
32
|
+
disposition: FrictionDisposition;
|
|
33
|
+
/** Optional free-form annotation (carried by the `annotate` disposition). */
|
|
34
|
+
annotation?: string;
|
|
35
|
+
}
|
|
36
|
+
/** One mandatory end-of-run open observation along a named friction dimension. */
|
|
37
|
+
export interface FrictionOpenObservation {
|
|
38
|
+
/** The named friction dimension (or a free-form string). */
|
|
39
|
+
dimension: string;
|
|
40
|
+
/** The host's observation note. */
|
|
41
|
+
note: string;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* The full per-run friction record on disk — the base capture artifact, the
|
|
45
|
+
* accreted mechanical events, plus the host-owned triage overlay
|
|
46
|
+
* (`dispositions[]` / `open_observations[]`). The base `frictions` field is
|
|
47
|
+
* narrowed to `CapturedFrictionItem[]` (each carries an `id`).
|
|
48
|
+
*/
|
|
49
|
+
export interface TriagedFrictionArtifact extends FrictionCaptureArtifact {
|
|
50
|
+
frictions: CapturedFrictionItem[];
|
|
51
|
+
/** Host dispositions, keyed by `target_id` (latest verdict wins). */
|
|
52
|
+
dispositions?: FrictionDispositionRecord[];
|
|
53
|
+
/** Host open observations (≥1 required to satisfy the blocking close-out). */
|
|
54
|
+
open_observations?: FrictionOpenObservation[];
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* `<artifactsDir>/friction/<run_id>.lock` — the lock path guarding the per-run
|
|
58
|
+
* record. Single-sourced so every record mutator (mechanical sink + host triage)
|
|
59
|
+
* serializes on the SAME lock (CE-004). Sibling of the record file, so it stays
|
|
60
|
+
* within the friction dir and is OS/path-agnostic.
|
|
61
|
+
*/
|
|
62
|
+
export declare function frictionLockPath(artifactsDir: string, runId: string): string;
|
|
63
|
+
/**
|
|
64
|
+
* Apply `mutate` to the per-run friction record under the shared lock, then
|
|
65
|
+
* persist the result atomically and return it.
|
|
66
|
+
*
|
|
67
|
+
* The critical section reads the CURRENT record (materializing an empty base on
|
|
68
|
+
* first touch), hands it to `mutate`, and writes the returned record back via
|
|
69
|
+
* the shared atomic `writeJsonFile` (temp-then-rename). Because the read and the
|
|
70
|
+
* write both happen inside ONE `withFileLock(frictionLockPath)`, two concurrent
|
|
71
|
+
* appenders never lost-update each other's fields — the late writer always sees
|
|
72
|
+
* the earlier writer's merged record (CE-010). `mutate` must be pure and
|
|
73
|
+
* total (it returns the next record); it never performs IO of its own.
|
|
74
|
+
*/
|
|
75
|
+
export declare function appendFrictionUnderLock(artifactsDir: string, runId: string, mutate: (record: TriagedFrictionArtifact) => TriagedFrictionArtifact, tool?: FrictionCaptureArtifact["tool"]): Promise<TriagedFrictionArtifact>;
|
|
76
|
+
//# sourceMappingURL=frictionRecord.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frictionRecord.d.ts","sourceRoot":"","sources":["../../../src/shared/friction/frictionRecord.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,uBAAuB,EAC5B,KAAK,YAAY,EAKlB,MAAM,0BAA0B,CAAC;AAIlC;;;;;;;;;;;;;;;;;GAiBG;AAEH,sFAAsF;AACtF,MAAM,WAAW,oBAAqB,SAAQ,YAAY;IACxD,gFAAgF;IAChF,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,+DAA+D;AAC/D,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,SAAS,GAAG,UAAU,CAAC;AAElE,mFAAmF;AACnF,MAAM,WAAW,yBAAyB;IACxC,sEAAsE;IACtE,SAAS,EAAE,MAAM,CAAC;IAClB,yCAAyC;IACzC,WAAW,EAAE,mBAAmB,CAAC;IACjC,6EAA6E;IAC7E,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,kFAAkF;AAClF,MAAM,WAAW,uBAAuB;IACtC,4DAA4D;IAC5D,SAAS,EAAE,MAAM,CAAC;IAClB,mCAAmC;IACnC,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;GAKG;AACH,MAAM,WAAW,uBAAwB,SAAQ,uBAAuB;IACtE,SAAS,EAAE,oBAAoB,EAAE,CAAC;IAClC,qEAAqE;IACrE,YAAY,CAAC,EAAE,yBAAyB,EAAE,CAAC;IAC3C,8EAA8E;IAC9E,iBAAiB,CAAC,EAAE,uBAAuB,EAAE,CAAC;CAC/C;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAE5E;AAgBD;;;;;;;;;;;GAWG;AACH,wBAAsB,uBAAuB,CAC3C,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,CAAC,MAAM,EAAE,uBAAuB,KAAK,uBAAuB,EACpE,IAAI,GAAE,uBAAuB,CAAC,MAAM,CAAoB,GACvD,OAAO,CAAC,uBAAuB,CAAC,CAUlC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { join } from "node:path";
|
|
2
|
+
import { FRICTION_CAPTURE_SCHEMA_VERSION, frictionCaptureDir, frictionCapturePath, sanitizeRunId, } from "../io/frictionCapture.js";
|
|
3
|
+
import { readOptionalJsonFile, writeJsonFile } from "../io/json.js";
|
|
4
|
+
import { withFileLock } from "../quota/fileLock.js";
|
|
5
|
+
/**
|
|
6
|
+
* `<artifactsDir>/friction/<run_id>.lock` — the lock path guarding the per-run
|
|
7
|
+
* record. Single-sourced so every record mutator (mechanical sink + host triage)
|
|
8
|
+
* serializes on the SAME lock (CE-004). Sibling of the record file, so it stays
|
|
9
|
+
* within the friction dir and is OS/path-agnostic.
|
|
10
|
+
*/
|
|
11
|
+
export function frictionLockPath(artifactsDir, runId) {
|
|
12
|
+
return join(frictionCaptureDir(artifactsDir), `${sanitizeRunId(runId)}.lock`);
|
|
13
|
+
}
|
|
14
|
+
/** A fresh, empty record for a run (the clean-degrade base, `frictions: []`). */
|
|
15
|
+
function emptyRecord(runId, tool) {
|
|
16
|
+
return {
|
|
17
|
+
schema_version: FRICTION_CAPTURE_SCHEMA_VERSION,
|
|
18
|
+
tool,
|
|
19
|
+
run_id: runId,
|
|
20
|
+
captured_at: new Date().toISOString(),
|
|
21
|
+
frictions: [],
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Apply `mutate` to the per-run friction record under the shared lock, then
|
|
26
|
+
* persist the result atomically and return it.
|
|
27
|
+
*
|
|
28
|
+
* The critical section reads the CURRENT record (materializing an empty base on
|
|
29
|
+
* first touch), hands it to `mutate`, and writes the returned record back via
|
|
30
|
+
* the shared atomic `writeJsonFile` (temp-then-rename). Because the read and the
|
|
31
|
+
* write both happen inside ONE `withFileLock(frictionLockPath)`, two concurrent
|
|
32
|
+
* appenders never lost-update each other's fields — the late writer always sees
|
|
33
|
+
* the earlier writer's merged record (CE-010). `mutate` must be pure and
|
|
34
|
+
* total (it returns the next record); it never performs IO of its own.
|
|
35
|
+
*/
|
|
36
|
+
export async function appendFrictionUnderLock(artifactsDir, runId, mutate, tool = "remediate-code") {
|
|
37
|
+
return withFileLock(frictionLockPath(artifactsDir, runId), async () => {
|
|
38
|
+
const existing = await readOptionalJsonFile(frictionCapturePath(artifactsDir, runId));
|
|
39
|
+
const base = existing ?? emptyRecord(runId, tool);
|
|
40
|
+
const next = mutate(base);
|
|
41
|
+
await writeJsonFile(frictionCapturePath(artifactsDir, runId), next);
|
|
42
|
+
return next;
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=frictionRecord.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frictionRecord.js","sourceRoot":"","sources":["../../../src/shared/friction/frictionRecord.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAGL,+BAA+B,EAC/B,kBAAkB,EAClB,mBAAmB,EACnB,aAAa,GACd,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AA8DpD;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,YAAoB,EAAE,KAAa;IAClE,OAAO,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,EAAE,GAAG,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAChF,CAAC;AAED,iFAAiF;AACjF,SAAS,WAAW,CAClB,KAAa,EACb,IAAqC;IAErC,OAAO;QACL,cAAc,EAAE,+BAA+B;QAC/C,IAAI;QACJ,MAAM,EAAE,KAAK;QACb,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACrC,SAAS,EAAE,EAAE;KACd,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,YAAoB,EACpB,KAAa,EACb,MAAoE,EACpE,OAAwC,gBAAgB;IAExD,OAAO,YAAY,CAAC,gBAAgB,CAAC,YAAY,EAAE,KAAK,CAAC,EAAE,KAAK,IAAI,EAAE;QACpE,MAAM,QAAQ,GAAG,MAAM,oBAAoB,CACzC,mBAAmB,CAAC,YAAY,EAAE,KAAK,CAAC,CACzC,CAAC;QACF,MAAM,IAAI,GAAG,QAAQ,IAAI,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAClD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QAC1B,MAAM,aAAa,CAAC,mBAAmB,CAAC,YAAY,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC;QACpE,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import type { FrictionItem } from "../io/frictionCapture.js";
|
|
2
|
+
import type { FrictionCaptureArtifact } from "../io/frictionCapture.js";
|
|
3
|
+
/**
|
|
4
|
+
* CE-005 — the SINGLE shared backend-observed step-boundary chokepoint.
|
|
5
|
+
*
|
|
6
|
+
* EVERY backend-observed friction fact flows through `captureStepBoundaryFriction`
|
|
7
|
+
* (single-sourced here, consumed by BOTH orchestrators) so the fact list is
|
|
8
|
+
* structural/extensible, not a snapshot a sixth fact can silently bypass. The
|
|
9
|
+
* backend already computes each of these facts at its own step boundary — phase
|
|
10
|
+
* re-emit counts, artifact rejection, repair rounds, post-repair re-derive,
|
|
11
|
+
* no-change merge, the intent-gate lock-across-judge fallback, and any quota
|
|
12
|
+
* escalation. Routing them all through one chokepoint with ZERO host discretion
|
|
13
|
+
* (INV-O1-1 / OBL-m-friction-inv-1) means a new backend fact is added by routing
|
|
14
|
+
* it through this same emitter, never by extending a closed enum elsewhere.
|
|
15
|
+
*
|
|
16
|
+
* CE-006 — the event id is a STRUCTURED, collision-free key. Its components
|
|
17
|
+
* {event_type, runId, discriminator} are individually percent-encoded and joined
|
|
18
|
+
* with a delimiter (`:`) that CANNOT appear in any encoded component, so a
|
|
19
|
+
* `:`-bearing reused discriminator (e.g. an M-IDEMPOTENCY split key) can never
|
|
20
|
+
* make the de-dup key ambiguous: two distinct facts never flatten to one key, and
|
|
21
|
+
* one fact never expands to two (OBL-m-friction-inv-6 / fail-2). The encoding is
|
|
22
|
+
* deterministic, so re-recording the same fact is a guaranteed no-op (INV-O1-6).
|
|
23
|
+
*
|
|
24
|
+
* The capture itself rides `captureFrictionEvent` — best-effort, non-fatal,
|
|
25
|
+
* de-duped, OS/path-agnostic (INV-O1-5 / fail-5). A contended or failed capture
|
|
26
|
+
* never throws into the in-flight obligation.
|
|
27
|
+
*/
|
|
28
|
+
/**
|
|
29
|
+
* The backend-observed step-boundary fact kinds. OPEN/EXTENSIBLE — this union is
|
|
30
|
+
* the documented catalogue, but the chokepoint accepts any string `event_type`
|
|
31
|
+
* so a new backend fact routes through the SAME emitter without forking a closed
|
|
32
|
+
* enum (CE-005). The named members below are the seven facts the contract pins:
|
|
33
|
+
*
|
|
34
|
+
* - `phase_reemit` — a phase re-emitting the SAME gate errors / leftovers.
|
|
35
|
+
* - `artifact_rejected` — an artifact rejected / archived (referential-integrity
|
|
36
|
+
* reject, deemed_inappropriate, archive-consumed-inputs).
|
|
37
|
+
* - `repair_round` — one runEmitValidateRepair stage firing.
|
|
38
|
+
* - `post_repair_rederive` — a staleness re-derive after a repair / redispatch.
|
|
39
|
+
* - `no_change_merge` — a resolved_no_change node merged with no diff.
|
|
40
|
+
* - `intent_gate_fallback` — intent_checkpoint gate lock-across-judge fallback.
|
|
41
|
+
* - `quota_escalation` — a bounded quota re-limit escalation surfaced as friction.
|
|
42
|
+
* - `coverage_total_lines_mismatch` — an AuditResult whose
|
|
43
|
+
* `file_coverage[].total_lines` disagrees with the
|
|
44
|
+
* file's actual line count (discriminator: the result
|
|
45
|
+
* index + the mismatching path).
|
|
46
|
+
*/
|
|
47
|
+
export type StepBoundaryEventType = "phase_reemit" | "artifact_rejected" | "repair_round" | "post_repair_rederive" | "no_change_merge" | "intent_gate_fallback" | "quota_escalation" | "coverage_total_lines_mismatch" | (string & {});
|
|
48
|
+
/**
|
|
49
|
+
* Build the STRUCTURED, collision-free de-dup id for a step-boundary fact.
|
|
50
|
+
* Components are individually percent-encoded then joined with `:` — a delimiter
|
|
51
|
+
* that cannot survive the encoding inside any component, so the mapping
|
|
52
|
+
* {event_type, runId, discriminator} → id is injective (CE-006).
|
|
53
|
+
*/
|
|
54
|
+
export declare function stepBoundaryEventId(eventType: StepBoundaryEventType, runId: string, discriminator: string): string;
|
|
55
|
+
/** The structured fact a caller routes through the chokepoint. */
|
|
56
|
+
export interface StepBoundaryFriction {
|
|
57
|
+
/** Backend-observed fact kind (one of the named members, or a new string). */
|
|
58
|
+
eventType: StepBoundaryEventType;
|
|
59
|
+
/**
|
|
60
|
+
* A stable discriminator distinguishing this fact instance within the run
|
|
61
|
+
* (e.g. the phase id + attempt, the artifact id, the node id). May contain any
|
|
62
|
+
* characters — it is percent-encoded before flattening, so `:` is safe.
|
|
63
|
+
*/
|
|
64
|
+
discriminator: string;
|
|
65
|
+
/** Human-readable summary for the triage prompt. */
|
|
66
|
+
note: string;
|
|
67
|
+
severity?: FrictionItem["severity"];
|
|
68
|
+
category?: FrictionItem["category"];
|
|
69
|
+
area?: string;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Route ONE backend-observed step-boundary fact through the single chokepoint.
|
|
73
|
+
*
|
|
74
|
+
* Best-effort and non-fatal: delegates to `captureFrictionEvent`, which swallows
|
|
75
|
+
* every failure so the in-flight obligation is never broken (INV-O1-5). De-duped
|
|
76
|
+
* on the structured collision-free id, so re-entrant boundary passes (re-dispatch,
|
|
77
|
+
* retry, re-derive) never double-count the same fact (INV-O1-6).
|
|
78
|
+
*/
|
|
79
|
+
export declare function captureStepBoundaryFriction(artifactsDir: string, runId: string, fact: StepBoundaryFriction, tool: FrictionCaptureArtifact["tool"]): Promise<void>;
|
|
80
|
+
//# sourceMappingURL=stepBoundaryCapture.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stepBoundaryCapture.d.ts","sourceRoot":"","sources":["../../../src/shared/friction/stepBoundaryCapture.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAGxE;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,MAAM,qBAAqB,GAC7B,cAAc,GACd,mBAAmB,GACnB,cAAc,GACd,sBAAsB,GACtB,iBAAiB,GACjB,sBAAsB,GACtB,kBAAkB,GAClB,+BAA+B,GAC/B,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAgBlB;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,qBAAqB,EAChC,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,MAAM,GACpB,MAAM,CAIR;AAED,kEAAkE;AAClE,MAAM,WAAW,oBAAoB;IACnC,8EAA8E;IAC9E,SAAS,EAAE,qBAAqB,CAAC;IACjC;;;;OAIG;IACH,aAAa,EAAE,MAAM,CAAC;IACtB,oDAAoD;IACpD,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC;IACpC,QAAQ,CAAC,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;GAOG;AACH,wBAAsB,2BAA2B,CAC/C,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,oBAAoB,EAC1B,IAAI,EAAE,uBAAuB,CAAC,MAAM,CAAC,GACpC,OAAO,CAAC,IAAI,CAAC,CASf"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { captureFrictionEvent } from "./captureFrictionEvent.js";
|
|
2
|
+
/**
|
|
3
|
+
* Percent-encode a single id component so the join delimiter (`:`) cannot appear
|
|
4
|
+
* inside it. `encodeURIComponent` already escapes `:` (and `/`, `\`, `%`, etc.),
|
|
5
|
+
* but it leaves a handful of safe sub-delimiters (`!'()*-._~`) unescaped — none of
|
|
6
|
+
* which is `:`, so the delimiter remains unambiguous. We additionally escape `*`
|
|
7
|
+
* and `!` defensively to keep the keyspace tight and fully reversible.
|
|
8
|
+
*/
|
|
9
|
+
function encodeIdComponent(value) {
|
|
10
|
+
return encodeURIComponent(value).replace(/[!*]/g, (c) => "%" + c.charCodeAt(0).toString(16).toUpperCase());
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Build the STRUCTURED, collision-free de-dup id for a step-boundary fact.
|
|
14
|
+
* Components are individually percent-encoded then joined with `:` — a delimiter
|
|
15
|
+
* that cannot survive the encoding inside any component, so the mapping
|
|
16
|
+
* {event_type, runId, discriminator} → id is injective (CE-006).
|
|
17
|
+
*/
|
|
18
|
+
export function stepBoundaryEventId(eventType, runId, discriminator) {
|
|
19
|
+
return [eventType, runId, discriminator]
|
|
20
|
+
.map((part) => encodeIdComponent(part))
|
|
21
|
+
.join(":");
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Route ONE backend-observed step-boundary fact through the single chokepoint.
|
|
25
|
+
*
|
|
26
|
+
* Best-effort and non-fatal: delegates to `captureFrictionEvent`, which swallows
|
|
27
|
+
* every failure so the in-flight obligation is never broken (INV-O1-5). De-duped
|
|
28
|
+
* on the structured collision-free id, so re-entrant boundary passes (re-dispatch,
|
|
29
|
+
* retry, re-derive) never double-count the same fact (INV-O1-6).
|
|
30
|
+
*/
|
|
31
|
+
export async function captureStepBoundaryFriction(artifactsDir, runId, fact, tool) {
|
|
32
|
+
const event = {
|
|
33
|
+
id: stepBoundaryEventId(fact.eventType, runId, fact.discriminator),
|
|
34
|
+
note: fact.note,
|
|
35
|
+
severity: fact.severity,
|
|
36
|
+
category: fact.category ?? "trap",
|
|
37
|
+
area: fact.area,
|
|
38
|
+
};
|
|
39
|
+
await captureFrictionEvent(artifactsDir, runId, event, tool);
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=stepBoundaryCapture.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stepBoundaryCapture.js","sourceRoot":"","sources":["../../../src/shared/friction/stepBoundaryCapture.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAsB,MAAM,2BAA2B,CAAC;AA0DrF;;;;;;GAMG;AACH,SAAS,iBAAiB,CAAC,KAAa;IACtC,OAAO,kBAAkB,CAAC,KAAK,CAAC,CAAC,OAAO,CACtC,OAAO,EACP,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CACxD,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CACjC,SAAgC,EAChC,KAAa,EACb,aAAqB;IAErB,OAAO,CAAC,SAAS,EAAE,KAAK,EAAE,aAAa,CAAC;SACrC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;SACtC,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC;AAmBD;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,YAAoB,EACpB,KAAa,EACb,IAA0B,EAC1B,IAAqC;IAErC,MAAM,KAAK,GAAkB;QAC3B,EAAE,EAAE,mBAAmB,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC;QAClE,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,MAAM;QACjC,IAAI,EAAE,IAAI,CAAC,IAAI;KAChB,CAAC;IACF,MAAM,oBAAoB,CAAC,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AAC/D,CAAC"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { type FrictionCaptureArtifact } from '../io/frictionCapture.js';
|
|
2
2
|
import { type AgentReflection } from '../agentReflections.js';
|
|
3
|
-
import type
|
|
3
|
+
import { type FrictionDisposition, type FrictionDispositionRecord, type FrictionOpenObservation, type TriagedFrictionArtifact } from './frictionRecord.js';
|
|
4
|
+
export type { CapturedFrictionItem, FrictionDisposition, FrictionDispositionRecord, FrictionOpenObservation, TriagedFrictionArtifact, } from './frictionRecord.js';
|
|
5
|
+
export { appendFrictionUnderLock, frictionLockPath } from './frictionRecord.js';
|
|
4
6
|
/**
|
|
5
7
|
* O1 end-of-run friction TRIAGE — single-sourced for BOTH orchestrators so the
|
|
6
8
|
* triage step shape, the disposition vocabulary, the blocking semantics, and the
|
|
@@ -32,23 +34,10 @@ import type { CapturedFrictionItem } from './captureFrictionEvent.js';
|
|
|
32
34
|
* Friction appends ride O2's `withFileLock` (keyed off the friction record path)
|
|
33
35
|
* so a friction append never races the locked critical section.
|
|
34
36
|
*/
|
|
35
|
-
/** The triage disposition vocabulary — the host's verdict per captured item. */
|
|
36
|
-
export type FrictionDisposition = 'keep' | 'discard' | 'annotate';
|
|
37
37
|
/** The set of valid dispositions, for validation at the contract boundary. */
|
|
38
38
|
export declare const FRICTION_DISPOSITIONS: readonly FrictionDisposition[];
|
|
39
39
|
/** Whether a value is a valid disposition (mechanical contract check). */
|
|
40
40
|
export declare function isFrictionDisposition(value: unknown): value is FrictionDisposition;
|
|
41
|
-
/**
|
|
42
|
-
* One triage record: a host disposition against a captured item key. `target_id`
|
|
43
|
-
* is the friction-event id (mechanical sink) or the reflection key (a stable key
|
|
44
|
-
* derived from a surfaced agent-feedback reflection). `annotation` is required
|
|
45
|
-
* only for the `annotate` disposition.
|
|
46
|
-
*/
|
|
47
|
-
export interface FrictionDispositionRecord {
|
|
48
|
-
target_id: string;
|
|
49
|
-
disposition: FrictionDisposition;
|
|
50
|
-
annotation?: string;
|
|
51
|
-
}
|
|
52
41
|
/** A captured item the host must dispose of, normalized across both sources. */
|
|
53
42
|
export interface TriageSubject {
|
|
54
43
|
/** Stable key the disposition is recorded against. */
|
|
@@ -64,15 +53,6 @@ export interface TriageSubject {
|
|
|
64
53
|
*/
|
|
65
54
|
export declare const FRICTION_NAMED_DIMENSIONS: readonly ["gate_reloops", "integration_guard_failures", "rescopes", "surprises", "manual_interventions", "other"];
|
|
66
55
|
export type FrictionDimension = (typeof FRICTION_NAMED_DIMENSIONS)[number] | string;
|
|
67
|
-
/**
|
|
68
|
-
* One proactive friction observation the host records — distinct from a
|
|
69
|
-
* mechanical-event disposition. Every run MUST carry ≥1 entry; "no friction
|
|
70
|
-
* encountered this run" as `other` is a valid observation.
|
|
71
|
-
*/
|
|
72
|
-
export interface FrictionOpenObservation {
|
|
73
|
-
dimension: string;
|
|
74
|
-
note: string;
|
|
75
|
-
}
|
|
76
56
|
/**
|
|
77
57
|
* The mandatory blocking triage decision. `pending` means the close-out is NOT
|
|
78
58
|
* satisfied. `action`:
|
|
@@ -92,19 +72,6 @@ export interface FrictionTriageDecision {
|
|
|
92
72
|
}
|
|
93
73
|
/** A stable key for a surfaced reflection (task_id + ordinal within the run). */
|
|
94
74
|
export declare function reflectionKey(reflection: AgentReflection, ordinal: number): string;
|
|
95
|
-
/**
|
|
96
|
-
* The per-run friction record the triage reads/writes. Extends the captured
|
|
97
|
-
* artifact (mechanical events) with the host's `dispositions[]` and the
|
|
98
|
-
* host's open `open_observations[]` — the tool owns every field except the
|
|
99
|
-
* host-recorded content.
|
|
100
|
-
*/
|
|
101
|
-
export interface TriagedFrictionArtifact extends Omit<FrictionCaptureArtifact, 'frictions'> {
|
|
102
|
-
frictions: CapturedFrictionItem[];
|
|
103
|
-
dispositions?: FrictionDispositionRecord[];
|
|
104
|
-
open_observations?: FrictionOpenObservation[];
|
|
105
|
-
}
|
|
106
|
-
/** Where the friction append/triage lock lives (rides O2's withFileLock). */
|
|
107
|
-
export declare function frictionLockPath(artifactsDir: string, runId: string): string;
|
|
108
75
|
/**
|
|
109
76
|
* Build the union triage-subject set for a run: every captured mechanical event
|
|
110
77
|
* UNION every surfaced agent-feedback reflection. Deterministic — pure read off
|
|
@@ -140,13 +107,6 @@ export declare function decideFrictionTriage(artifactsDir: string, runId: string
|
|
|
140
107
|
* the run may present complete.
|
|
141
108
|
*/
|
|
142
109
|
export declare function buildFrictionTriageBlock(triage: FrictionTriageDecision): string;
|
|
143
|
-
/**
|
|
144
|
-
* Mutate the per-run friction record under O2's `withFileLock` so a friction
|
|
145
|
-
* append (mechanical event OR host disposition) never races the locked critical
|
|
146
|
-
* section. The mutator receives the current record (a fresh degrade-clean shell
|
|
147
|
-
* when none exists) and returns the next record to persist atomically.
|
|
148
|
-
*/
|
|
149
|
-
export declare function appendFrictionUnderLock(artifactsDir: string, runId: string, mutate: (record: TriagedFrictionArtifact) => Promise<TriagedFrictionArtifact> | TriagedFrictionArtifact, tool?: FrictionCaptureArtifact['tool']): Promise<TriagedFrictionArtifact>;
|
|
150
110
|
/**
|
|
151
111
|
* Record one host disposition against a captured subject, under the shared lock.
|
|
152
112
|
* Re-disposing the same `target_id` overwrites the prior verdict (idempotent on
|