audit-tools 0.44.0 → 0.46.0
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/README.md +15 -2
- package/dist/audit/cli/charterExtractionPrompt.d.ts.map +1 -1
- package/dist/audit/cli/charterExtractionPrompt.js +11 -1
- package/dist/audit/cli/charterExtractionPrompt.js.map +1 -1
- package/dist/audit/cli/cleanupCommand.d.ts +25 -0
- package/dist/audit/cli/cleanupCommand.d.ts.map +1 -1
- package/dist/audit/cli/cleanupCommand.js +69 -0
- package/dist/audit/cli/cleanupCommand.js.map +1 -1
- package/dist/audit/cli/dispatch/hostHandoff.d.ts +64 -3
- package/dist/audit/cli/dispatch/hostHandoff.d.ts.map +1 -1
- package/dist/audit/cli/dispatch/hostHandoff.js +247 -99
- package/dist/audit/cli/dispatch/hostHandoff.js.map +1 -1
- package/dist/audit/cli/dispatch/packetFilter.d.ts +1 -1
- package/dist/audit/cli/dispatch.d.ts +1 -1
- package/dist/audit/cli/dispatch.d.ts.map +1 -1
- package/dist/audit/cli/dispatch.js +1 -1
- package/dist/audit/cli/dispatch.js.map +1 -1
- package/dist/audit/cli/fanoutLanes.d.ts.map +1 -1
- package/dist/audit/cli/fanoutLanes.js +6 -1
- package/dist/audit/cli/fanoutLanes.js.map +1 -1
- package/dist/audit/cli/laneSubmissions.d.ts +16 -2
- package/dist/audit/cli/laneSubmissions.d.ts.map +1 -1
- package/dist/audit/cli/laneSubmissions.js +38 -27
- package/dist/audit/cli/laneSubmissions.js.map +1 -1
- package/dist/audit/cli/nextStepCommand.d.ts.map +1 -1
- package/dist/audit/cli/nextStepCommand.js +9 -6
- package/dist/audit/cli/nextStepCommand.js.map +1 -1
- package/dist/audit/cli/nextStepHelpers.d.ts +39 -4
- package/dist/audit/cli/nextStepHelpers.d.ts.map +1 -1
- package/dist/audit/cli/nextStepHelpers.js +132 -42
- package/dist/audit/cli/nextStepHelpers.js.map +1 -1
- package/dist/audit/cli/reviewRun.d.ts +1 -1
- package/dist/audit/cli/reviewRun.d.ts.map +1 -1
- package/dist/audit/cli/reviewRun.js +2 -9
- package/dist/audit/cli/reviewRun.js.map +1 -1
- package/dist/audit/cli/sampleRunCommand.d.ts.map +1 -1
- package/dist/audit/cli/sampleRunCommand.js +12 -1
- package/dist/audit/cli/sampleRunCommand.js.map +1 -1
- package/dist/audit/cli/semanticReviewStep.d.ts +5 -2
- package/dist/audit/cli/semanticReviewStep.d.ts.map +1 -1
- package/dist/audit/cli/semanticReviewStep.js +28 -1
- package/dist/audit/cli/semanticReviewStep.js.map +1 -1
- package/dist/audit/cli/steps.d.ts +6 -6
- package/dist/audit/cli/unacceptResultsCommand.d.ts +18 -0
- package/dist/audit/cli/unacceptResultsCommand.d.ts.map +1 -0
- package/dist/audit/cli/unacceptResultsCommand.js +49 -0
- package/dist/audit/cli/unacceptResultsCommand.js.map +1 -0
- package/dist/audit/cli.d.ts +6 -0
- package/dist/audit/cli.d.ts.map +1 -1
- package/dist/audit/cli.js +34 -59
- package/dist/audit/cli.js.map +1 -1
- package/dist/audit/contracts/findingContractPrompt.d.ts +11 -0
- package/dist/audit/contracts/findingContractPrompt.d.ts.map +1 -0
- package/dist/audit/contracts/findingContractPrompt.js +112 -0
- package/dist/audit/contracts/findingContractPrompt.js.map +1 -0
- package/dist/audit/contracts/workerSchemas.d.ts +106 -42
- package/dist/audit/contracts/workerSchemas.d.ts.map +1 -1
- package/dist/audit/contracts/workerSchemas.js +16 -7
- package/dist/audit/contracts/workerSchemas.js.map +1 -1
- package/dist/audit/contracts/wrapperResponse.d.ts +52 -28
- package/dist/audit/contracts/wrapperResponse.d.ts.map +1 -1
- package/dist/audit/contracts/wrapperResponse.js +8 -5
- package/dist/audit/contracts/wrapperResponse.js.map +1 -1
- package/dist/audit/decompose/sources.d.ts.map +1 -1
- package/dist/audit/decompose/sources.js +21 -5
- package/dist/audit/decompose/sources.js.map +1 -1
- package/dist/audit/extractors/analyzers/registry.d.ts +8 -5
- package/dist/audit/extractors/analyzers/registry.d.ts.map +1 -1
- package/dist/audit/extractors/analyzers/registry.js +28 -7
- package/dist/audit/extractors/analyzers/registry.js.map +1 -1
- package/dist/audit/extractors/designAssessment.js +1 -1
- package/dist/audit/extractors/gitHistory.d.ts +1 -1
- package/dist/audit/extractors/gitHistory.js +1 -1
- package/dist/audit/extractors/graph.d.ts +1 -1
- package/dist/audit/extractors/graph.js +1 -1
- package/dist/audit/extractors/risk.d.ts +1 -1
- package/dist/audit/extractors/risk.js +1 -1
- package/dist/audit/io/artifacts.d.ts.map +1 -1
- package/dist/audit/io/artifacts.js +5 -5
- package/dist/audit/io/artifacts.js.map +1 -1
- package/dist/audit/orchestrator/acquisitionExecutor.d.ts +11 -6
- package/dist/audit/orchestrator/acquisitionExecutor.d.ts.map +1 -1
- package/dist/audit/orchestrator/acquisitionExecutor.js +1 -1
- package/dist/audit/orchestrator/acquisitionExecutor.js.map +1 -1
- package/dist/audit/orchestrator/advance.d.ts +14 -10
- package/dist/audit/orchestrator/advance.d.ts.map +1 -1
- package/dist/audit/orchestrator/advance.js +49 -24
- package/dist/audit/orchestrator/advance.js.map +1 -1
- package/dist/audit/orchestrator/advanceTypes.d.ts +14 -0
- package/dist/audit/orchestrator/advanceTypes.d.ts.map +1 -1
- package/dist/audit/orchestrator/autoFixExecutor.d.ts +20 -1
- package/dist/audit/orchestrator/autoFixExecutor.d.ts.map +1 -1
- package/dist/audit/orchestrator/autoFixExecutor.js +77 -15
- package/dist/audit/orchestrator/autoFixExecutor.js.map +1 -1
- package/dist/audit/orchestrator/dependencyMap.js +1 -1
- package/dist/audit/orchestrator/dependencyMap.js.map +1 -1
- package/dist/audit/orchestrator/executorRunners.d.ts.map +1 -1
- package/dist/audit/orchestrator/executorRunners.js +18 -4
- package/dist/audit/orchestrator/executorRunners.js.map +1 -1
- package/dist/audit/orchestrator/executors.d.ts +54 -0
- package/dist/audit/orchestrator/executors.d.ts.map +1 -1
- package/dist/audit/orchestrator/executors.js +352 -0
- package/dist/audit/orchestrator/executors.js.map +1 -1
- package/dist/audit/orchestrator/hostInputPause.d.ts +20 -11
- package/dist/audit/orchestrator/hostInputPause.d.ts.map +1 -1
- package/dist/audit/orchestrator/hostInputPause.js +17 -11
- package/dist/audit/orchestrator/hostInputPause.js.map +1 -1
- package/dist/audit/orchestrator/localCommands.d.ts +24 -1
- package/dist/audit/orchestrator/localCommands.d.ts.map +1 -1
- package/dist/audit/orchestrator/localCommands.js +44 -9
- package/dist/audit/orchestrator/localCommands.js.map +1 -1
- package/dist/audit/orchestrator/nextStep.d.ts +13 -0
- package/dist/audit/orchestrator/nextStep.d.ts.map +1 -1
- package/dist/audit/orchestrator/nextStep.js +13 -0
- package/dist/audit/orchestrator/nextStep.js.map +1 -1
- package/dist/audit/orchestrator/requeueCommand.d.ts +1 -1
- package/dist/audit/orchestrator/runtimeCommand.d.ts +32 -1
- package/dist/audit/orchestrator/runtimeCommand.d.ts.map +1 -1
- package/dist/audit/orchestrator/runtimeCommand.js +90 -3
- package/dist/audit/orchestrator/runtimeCommand.js.map +1 -1
- package/dist/audit/orchestrator/structureExecutors.js +1 -1
- package/dist/audit/orchestrator/structureExecutors.js.map +1 -1
- package/dist/audit/orchestrator/syntaxResolutionExecutor.d.ts +11 -1
- package/dist/audit/orchestrator/syntaxResolutionExecutor.d.ts.map +1 -1
- package/dist/audit/orchestrator/syntaxResolutionExecutor.js +25 -9
- package/dist/audit/orchestrator/syntaxResolutionExecutor.js.map +1 -1
- package/dist/audit/supervisor/operatorHandoff.d.ts +0 -1
- package/dist/audit/supervisor/operatorHandoff.d.ts.map +1 -1
- package/dist/audit/supervisor/operatorHandoff.js +2 -1
- package/dist/audit/supervisor/operatorHandoff.js.map +1 -1
- package/dist/audit/types.d.ts +33 -19
- package/dist/audit/types.d.ts.map +1 -1
- package/dist/audit/validation/auditResults.d.ts +39 -0
- package/dist/audit/validation/auditResults.d.ts.map +1 -1
- package/dist/audit/validation/auditResults.js +111 -53
- package/dist/audit/validation/auditResults.js.map +1 -1
- package/dist/audit/validation/ingestIssueCodes.d.ts +18 -0
- package/dist/audit/validation/ingestIssueCodes.d.ts.map +1 -0
- package/dist/audit/validation/ingestIssueCodes.js +26 -0
- package/dist/audit/validation/ingestIssueCodes.js.map +1 -0
- package/dist/remediate/contractPipeline/derive.d.ts.map +1 -1
- package/dist/remediate/contractPipeline/derive.js +1 -0
- package/dist/remediate/contractPipeline/derive.js.map +1 -1
- package/dist/remediate/contractPipeline/semanticProjection.d.ts +5 -4
- package/dist/remediate/contractPipeline/semanticProjection.d.ts.map +1 -1
- package/dist/remediate/contractPipeline/semanticProjection.js +34 -19
- package/dist/remediate/contractPipeline/semanticProjection.js.map +1 -1
- package/dist/remediate/index.d.ts.map +1 -1
- package/dist/remediate/index.js +3 -2
- package/dist/remediate/index.js.map +1 -1
- package/dist/remediate/phases/close.d.ts +37 -2
- package/dist/remediate/phases/close.d.ts.map +1 -1
- package/dist/remediate/phases/close.js +100 -31
- package/dist/remediate/phases/close.js.map +1 -1
- package/dist/remediate/phases/closeVerifyAnalyzerLeads.js +2 -2
- package/dist/remediate/phases/closeVerifyAnalyzerLeads.js.map +1 -1
- package/dist/remediate/phases/triage.d.ts.map +1 -1
- package/dist/remediate/phases/triage.js +61 -19
- package/dist/remediate/phases/triage.js.map +1 -1
- package/dist/remediate/state/types.d.ts +15 -1
- package/dist/remediate/state/types.d.ts.map +1 -1
- package/dist/remediate/steps/contractPipeline.d.ts +13 -0
- package/dist/remediate/steps/contractPipeline.d.ts.map +1 -1
- package/dist/remediate/steps/contractPipeline.js +82 -3
- package/dist/remediate/steps/contractPipeline.js.map +1 -1
- package/dist/remediate/steps/dispatch/hostHandoff.d.ts +1 -1
- package/dist/remediate/steps/dispatch/hostHandoff.d.ts.map +1 -1
- package/dist/remediate/steps/dispatch/hostHandoff.js +297 -139
- package/dist/remediate/steps/dispatch/hostHandoff.js.map +1 -1
- package/dist/remediate/steps/nextStep.d.ts.map +1 -1
- package/dist/remediate/steps/nextStep.js +37 -7
- package/dist/remediate/steps/nextStep.js.map +1 -1
- package/dist/remediate/types/options.d.ts +1 -1
- package/dist/shared/analyzers/acquisitionEngine.d.ts +61 -28
- package/dist/shared/analyzers/acquisitionEngine.d.ts.map +1 -1
- package/dist/shared/analyzers/acquisitionEngine.js +83 -24
- package/dist/shared/analyzers/acquisitionEngine.js.map +1 -1
- package/dist/shared/analyzers/binaryAcquisition.d.ts +8 -2
- package/dist/shared/analyzers/binaryAcquisition.d.ts.map +1 -1
- package/dist/shared/analyzers/binaryAcquisition.js +4 -4
- package/dist/shared/analyzers/binaryAcquisition.js.map +1 -1
- package/dist/shared/constitutionalDocPaths.d.ts.map +1 -1
- package/dist/shared/constitutionalDocPaths.js +7 -0
- package/dist/shared/constitutionalDocPaths.js.map +1 -1
- package/dist/shared/decompose/systemicChallenge.d.ts +15 -1
- package/dist/shared/decompose/systemicChallenge.d.ts.map +1 -1
- package/dist/shared/engine/obligationEngine.d.ts +44 -3
- package/dist/shared/engine/obligationEngine.d.ts.map +1 -1
- package/dist/shared/engine/obligationEngine.js +53 -7
- package/dist/shared/engine/obligationEngine.js.map +1 -1
- package/dist/shared/findings/dedupe.d.ts.map +1 -1
- package/dist/shared/findings/dedupe.js +8 -0
- package/dist/shared/findings/dedupe.js.map +1 -1
- package/dist/shared/friction/frictionRecord.d.ts +42 -2
- package/dist/shared/friction/frictionRecord.d.ts.map +1 -1
- package/dist/shared/friction/frictionRecord.js +111 -3
- package/dist/shared/friction/frictionRecord.js.map +1 -1
- package/dist/shared/friction/triage.d.ts +15 -0
- package/dist/shared/friction/triage.d.ts.map +1 -1
- package/dist/shared/friction/triage.js +33 -2
- package/dist/shared/friction/triage.js.map +1 -1
- package/dist/shared/index.d.ts +16 -11
- package/dist/shared/index.d.ts.map +1 -1
- package/dist/shared/index.js +16 -9
- package/dist/shared/index.js.map +1 -1
- package/dist/shared/io/fileLock.d.ts.map +1 -1
- package/dist/shared/io/fileLock.js +22 -3
- package/dist/shared/io/fileLock.js.map +1 -1
- package/dist/shared/io/frictionCapture.d.ts +73 -19
- package/dist/shared/io/frictionCapture.d.ts.map +1 -1
- package/dist/shared/io/frictionCapture.js +21 -30
- package/dist/shared/io/frictionCapture.js.map +1 -1
- package/dist/shared/io/lockedJsonStore.d.ts +24 -3
- package/dist/shared/io/lockedJsonStore.d.ts.map +1 -1
- package/dist/shared/io/lockedJsonStore.js +35 -7
- package/dist/shared/io/lockedJsonStore.js.map +1 -1
- package/dist/shared/io/stepContractWriter.d.ts +3 -3
- package/dist/shared/io/stepContractWriter.d.ts.map +1 -1
- package/dist/shared/io/stepContractWriter.js +97 -13
- package/dist/shared/io/stepContractWriter.js.map +1 -1
- package/dist/shared/submission/expectedSubmissions.d.ts +18 -0
- package/dist/shared/submission/expectedSubmissions.d.ts.map +1 -1
- package/dist/shared/submission/expectedSubmissions.js +17 -0
- package/dist/shared/submission/expectedSubmissions.js.map +1 -1
- package/dist/shared/submission/handRecovery.d.ts.map +1 -1
- package/dist/shared/submission/handRecovery.js +9 -11
- package/dist/shared/submission/handRecovery.js.map +1 -1
- package/dist/shared/submission/hostHandoffCore.d.ts +155 -0
- package/dist/shared/submission/hostHandoffCore.d.ts.map +1 -0
- package/dist/shared/submission/hostHandoffCore.js +210 -0
- package/dist/shared/submission/hostHandoffCore.js.map +1 -0
- package/dist/shared/submission/submissionClassifier.d.ts +4 -1
- package/dist/shared/submission/submissionClassifier.d.ts.map +1 -1
- package/dist/shared/submission/submissionClassifier.js.map +1 -1
- package/dist/shared/submission/submissionLedger.d.ts +16 -5
- package/dist/shared/submission/submissionLedger.d.ts.map +1 -1
- package/dist/shared/submission/submissionLedger.js +42 -3
- package/dist/shared/submission/submissionLedger.js.map +1 -1
- package/dist/shared/tooling/commandShape.d.ts +29 -0
- package/dist/shared/tooling/commandShape.d.ts.map +1 -1
- package/dist/shared/tooling/commandShape.js +82 -10
- package/dist/shared/tooling/commandShape.js.map +1 -1
- package/dist/shared/tooling/exec.d.ts +32 -0
- package/dist/shared/tooling/exec.d.ts.map +1 -1
- package/dist/shared/tooling/exec.js +189 -0
- package/dist/shared/tooling/exec.js.map +1 -1
- package/dist/shared/types/finding.d.ts +132 -20
- package/dist/shared/types/finding.d.ts.map +1 -1
- package/dist/shared/types/finding.js +70 -63
- package/dist/shared/types/finding.js.map +1 -1
- package/docs/audit-pkg/contracts.md +8 -1
- package/docs/audit-pkg/operator-guide.md +13 -2
- package/docs/audit-pkg/product.md +22 -6
- package/package.json +10 -6
- package/schemas/audit-code-v1alpha1.schema.json +297 -0
- package/schemas/audit_result.schema.json +5 -1
- package/schemas/audit_results.schema.json +5 -1
- package/schemas/finding.schema.json +1 -1
- package/scripts/shared/install-host-assets.mjs +8 -5
- package/skills/audit-code/SKILL.md +4 -2
- package/skills/audit-code/audit-code.prompt.md +5 -2
- package/skills/audit-code/opencode-command-template.txt +1 -1
- package/wrapper/audit-code-wrapper-lib.mjs +82 -16
- package/wrapper/installer-verb-help.mjs +14 -4
- package/docs/audit-pkg/development.md +0 -113
- package/docs/audit-pkg/release.md +0 -140
|
@@ -16,7 +16,7 @@ export declare const SystemicChallengeSubmissionSchema: z.ZodObject<{
|
|
|
16
16
|
confidence: z.ZodEnum<["high", "medium", "low"]>;
|
|
17
17
|
lens: z.ZodString;
|
|
18
18
|
summary: z.ZodString;
|
|
19
|
-
affected_files: z.ZodArray<z.ZodObject<{
|
|
19
|
+
affected_files: z.ZodArray<z.ZodEffects<z.ZodObject<{
|
|
20
20
|
path: z.ZodString;
|
|
21
21
|
line_start: z.ZodOptional<z.ZodNumber>;
|
|
22
22
|
line_end: z.ZodOptional<z.ZodNumber>;
|
|
@@ -37,6 +37,20 @@ export declare const SystemicChallengeSubmissionSchema: z.ZodObject<{
|
|
|
37
37
|
line_end?: number | undefined;
|
|
38
38
|
quoted_text?: string | undefined;
|
|
39
39
|
hash_at_plan_time?: string | undefined;
|
|
40
|
+
}>, {
|
|
41
|
+
path: string;
|
|
42
|
+
symbol?: string | undefined;
|
|
43
|
+
line_start?: number | undefined;
|
|
44
|
+
line_end?: number | undefined;
|
|
45
|
+
quoted_text?: string | undefined;
|
|
46
|
+
hash_at_plan_time?: string | undefined;
|
|
47
|
+
}, {
|
|
48
|
+
path: string;
|
|
49
|
+
symbol?: string | undefined;
|
|
50
|
+
line_start?: number | undefined;
|
|
51
|
+
line_end?: number | undefined;
|
|
52
|
+
quoted_text?: string | undefined;
|
|
53
|
+
hash_at_plan_time?: string | undefined;
|
|
40
54
|
}>, "many">;
|
|
41
55
|
impact: z.ZodOptional<z.ZodString>;
|
|
42
56
|
likelihood: z.ZodOptional<z.ZodString>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"systemicChallenge.d.ts","sourceRoot":"","sources":["../../../src/shared/decompose/systemicChallenge.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB;;;;;;;GAOG;AACH,eAAO,MAAM,iCAAiC
|
|
1
|
+
{"version":3,"file":"systemicChallenge.d.ts","sourceRoot":"","sources":["../../../src/shared/decompose/systemicChallenge.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB;;;;;;;GAOG;AACH,eAAO,MAAM,iCAAiC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAInC,CAAC;AACZ,MAAM,MAAM,2BAA2B,GAAG,CAAC,CAAC,KAAK,CAC/C,OAAO,iCAAiC,CACzC,CAAC"}
|
|
@@ -117,6 +117,27 @@ export declare function findNextObligation<S, Ctx, Step>(priority: readonly stri
|
|
|
117
117
|
* deepest real remediate-code fold is a handful of transitions per call).
|
|
118
118
|
*/
|
|
119
119
|
export declare const DEFAULT_MAX_TRANSITIONS = 100;
|
|
120
|
+
/**
|
|
121
|
+
* Headroom between a consumer's own GRACEFUL step cap and the engine bound
|
|
122
|
+
* derived from it. Stated HERE, once, because the relationship between the two
|
|
123
|
+
* numbers is a property of the engine's contract, not of any one consumer: a
|
|
124
|
+
* consumer that stops its fold at its own cap must be able to prove the engine
|
|
125
|
+
* bound cannot fire first, and it can only do that if the two are derived from
|
|
126
|
+
* a single formulation rather than written independently.
|
|
127
|
+
*
|
|
128
|
+
* The value is the slack the engine needs to observe a consumer's final,
|
|
129
|
+
* cap-spending step and the emit that follows it.
|
|
130
|
+
*/
|
|
131
|
+
export declare const ENGINE_TRANSITION_HEADROOM = 2;
|
|
132
|
+
/**
|
|
133
|
+
* The engine bound DERIVED from a consumer's graceful cap — the second half of
|
|
134
|
+
* the bounded-call invariant this module owns.
|
|
135
|
+
*
|
|
136
|
+
* Consumers call this instead of restating a constant, so raising a graceful
|
|
137
|
+
* cap can never silently push the fold past the engine bound: there is no
|
|
138
|
+
* second number anywhere to remember to re-derive.
|
|
139
|
+
*/
|
|
140
|
+
export declare function deriveEngineBound(cap: number): number;
|
|
120
141
|
/**
|
|
121
142
|
* The outcome of an `advance` run.
|
|
122
143
|
*
|
|
@@ -127,12 +148,24 @@ export declare const DEFAULT_MAX_TRANSITIONS = 100;
|
|
|
127
148
|
* - `step` null, `stopped: "cycle"` → a transition revisited an already-seen state
|
|
128
149
|
* signature, so the fold is not converging; the caller surfaces a graceful
|
|
129
150
|
* terminal rather than looping. Only possible when `opts.stateSignature` is
|
|
130
|
-
* supplied
|
|
151
|
+
* supplied.
|
|
152
|
+
* - `step` null, `stopped: "bound"` → the fold spent `maxTransitions`
|
|
153
|
+
* transitions without reaching an emit or completion. Also non-convergence,
|
|
154
|
+
* detected by counting rather than by signature.
|
|
155
|
+
*
|
|
156
|
+
* `stopped` being ABSENT is what means "the run is complete". A caller that
|
|
157
|
+
* branches on `step` alone therefore cannot tell completion from
|
|
158
|
+
* non-convergence, and would report a wedged fold as a finished one — so both
|
|
159
|
+
* stopped values must be handled explicitly. `lastObligationId` names the
|
|
160
|
+
* obligation the fold was executing when it stopped, so a caller can say WHICH
|
|
161
|
+
* obligation is spinning without parsing it out of a message.
|
|
131
162
|
*/
|
|
132
163
|
export interface AdvanceResult<S, Step> {
|
|
133
164
|
state: S;
|
|
134
165
|
step: Step | null;
|
|
135
|
-
stopped?: "cycle";
|
|
166
|
+
stopped?: "cycle" | "bound";
|
|
167
|
+
/** The obligation in flight when `stopped` was set; absent otherwise. */
|
|
168
|
+
lastObligationId?: string;
|
|
136
169
|
}
|
|
137
170
|
/**
|
|
138
171
|
* Drive the engine from `state`: repeatedly select the highest-priority actionable
|
|
@@ -154,7 +187,15 @@ export interface AdvanceResult<S, Step> {
|
|
|
154
187
|
* work-set before it shrinks): each distinct round is a new signature, so only a
|
|
155
188
|
* genuine revisit stops it.
|
|
156
189
|
* - `maxTransitions` is the absolute backstop for callers that supply no
|
|
157
|
-
* signature — it
|
|
190
|
+
* signature — it stops the loop with `stopped: "bound"` after that many
|
|
191
|
+
* consecutive transitions.
|
|
192
|
+
*
|
|
193
|
+
* BOTH backstops terminate GRACEFULLY. The bound used to throw, which forced
|
|
194
|
+
* every consumer to recognize a wedged fold by matching text in an error
|
|
195
|
+
* message and to recover the spinning obligation's id with a regex over that
|
|
196
|
+
* same prose — so the engine's bound was part of its contract while its only
|
|
197
|
+
* signal was a sentence. A structured stop lets a consumer pause resumably at
|
|
198
|
+
* the bound the way it already pauses for any other non-actionable outcome.
|
|
158
199
|
*
|
|
159
200
|
* `emit` and natural completion both terminate the loop and are never bounded.
|
|
160
201
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"obligationEngine.d.ts","sourceRoot":"","sources":["../../../src/shared/engine/obligationEngine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,oEAMhC,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE,+EAA+E;AAC/E,eAAO,MAAM,gBAAgB;;;;;;;;;;;;EAMlB,CAAC;AACZ,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D;;;;;;;;;;;;GAYG;AACH,wBAAgB,6BAA6B,CAAC,CAAC,SAAS,UAAU,EAChE,QAAQ,EAAE,SAAS,MAAM,EAAE,EAC3B,WAAW,EAAE,SAAS,CAAC,EAAE,GACxB,CAAC,GAAG,SAAS,CAQf;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,WAAW,aAAa,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI;IACzC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,eAAe,CAAC;IAClC,OAAO,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;CAClE;AAED;;;;;;;;;;GAUG;AACH,MAAM,MAAM,iBAAiB,CAAC,CAAC,EAAE,IAAI,IACjC;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,IAAI,CAAC;IAAC,KAAK,CAAC,EAAE,CAAC,CAAA;CAAE,CAAC;AAE5C,8EAA8E;AAC9E,MAAM,WAAW,gBAAgB,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI;IAC5C,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,WAAW,EAAE,SAAS,aAAa,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC;CACrD;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAC7C,QAAQ,EAAE,SAAS,MAAM,EAAE,EAC3B,WAAW,EAAE,SAAS,aAAa,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,EACnD,KAAK,EAAE,CAAC,GACP,aAAa,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,SAAS,CAIzC;AAED;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAE3C
|
|
1
|
+
{"version":3,"file":"obligationEngine.d.ts","sourceRoot":"","sources":["../../../src/shared/engine/obligationEngine.ts"],"names":[],"mappings":"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"}
|
|
@@ -78,6 +78,29 @@ export function findNextObligation(priority, obligations, state) {
|
|
|
78
78
|
* deepest real remediate-code fold is a handful of transitions per call).
|
|
79
79
|
*/
|
|
80
80
|
export const DEFAULT_MAX_TRANSITIONS = 100;
|
|
81
|
+
/**
|
|
82
|
+
* Headroom between a consumer's own GRACEFUL step cap and the engine bound
|
|
83
|
+
* derived from it. Stated HERE, once, because the relationship between the two
|
|
84
|
+
* numbers is a property of the engine's contract, not of any one consumer: a
|
|
85
|
+
* consumer that stops its fold at its own cap must be able to prove the engine
|
|
86
|
+
* bound cannot fire first, and it can only do that if the two are derived from
|
|
87
|
+
* a single formulation rather than written independently.
|
|
88
|
+
*
|
|
89
|
+
* The value is the slack the engine needs to observe a consumer's final,
|
|
90
|
+
* cap-spending step and the emit that follows it.
|
|
91
|
+
*/
|
|
92
|
+
export const ENGINE_TRANSITION_HEADROOM = 2;
|
|
93
|
+
/**
|
|
94
|
+
* The engine bound DERIVED from a consumer's graceful cap — the second half of
|
|
95
|
+
* the bounded-call invariant this module owns.
|
|
96
|
+
*
|
|
97
|
+
* Consumers call this instead of restating a constant, so raising a graceful
|
|
98
|
+
* cap can never silently push the fold past the engine bound: there is no
|
|
99
|
+
* second number anywhere to remember to re-derive.
|
|
100
|
+
*/
|
|
101
|
+
export function deriveEngineBound(cap) {
|
|
102
|
+
return cap + ENGINE_TRANSITION_HEADROOM;
|
|
103
|
+
}
|
|
81
104
|
/**
|
|
82
105
|
* Drive the engine from `state`: repeatedly select the highest-priority actionable
|
|
83
106
|
* obligation and execute it. A `transition` outcome advances the state and the
|
|
@@ -98,7 +121,15 @@ export const DEFAULT_MAX_TRANSITIONS = 100;
|
|
|
98
121
|
* work-set before it shrinks): each distinct round is a new signature, so only a
|
|
99
122
|
* genuine revisit stops it.
|
|
100
123
|
* - `maxTransitions` is the absolute backstop for callers that supply no
|
|
101
|
-
* signature — it
|
|
124
|
+
* signature — it stops the loop with `stopped: "bound"` after that many
|
|
125
|
+
* consecutive transitions.
|
|
126
|
+
*
|
|
127
|
+
* BOTH backstops terminate GRACEFULLY. The bound used to throw, which forced
|
|
128
|
+
* every consumer to recognize a wedged fold by matching text in an error
|
|
129
|
+
* message and to recover the spinning obligation's id with a regex over that
|
|
130
|
+
* same prose — so the engine's bound was part of its contract while its only
|
|
131
|
+
* signal was a sentence. A structured stop lets a consumer pause resumably at
|
|
132
|
+
* the bound the way it already pauses for any other non-actionable outcome.
|
|
102
133
|
*
|
|
103
134
|
* `emit` and natural completion both terminate the loop and are never bounded.
|
|
104
135
|
*
|
|
@@ -113,6 +144,9 @@ export async function advance(engine, state, ctx, opts) {
|
|
|
113
144
|
const visited = stateSignature ? new Set() : null;
|
|
114
145
|
let current = state;
|
|
115
146
|
let transitions = 0;
|
|
147
|
+
// The obligation most recently selected — reported on every non-convergent
|
|
148
|
+
// stop so the caller can name what is spinning.
|
|
149
|
+
let lastObligationId = null;
|
|
116
150
|
for (;;) {
|
|
117
151
|
if (visited) {
|
|
118
152
|
const signature = stateSignature(current);
|
|
@@ -121,24 +155,36 @@ export async function advance(engine, state, ctx, opts) {
|
|
|
121
155
|
// not converging (a no-progress step that left the signature unchanged,
|
|
122
156
|
// or a multi-obligation state cycle). Stop gracefully; the caller renders
|
|
123
157
|
// a terminal rather than throwing.
|
|
124
|
-
return {
|
|
158
|
+
return {
|
|
159
|
+
state: current,
|
|
160
|
+
step: null,
|
|
161
|
+
stopped: "cycle",
|
|
162
|
+
...(lastObligationId === null ? {} : { lastObligationId }),
|
|
163
|
+
};
|
|
125
164
|
}
|
|
126
165
|
visited.add(signature);
|
|
127
166
|
}
|
|
128
167
|
const obligation = findNextObligation(engine.priority, engine.obligations, current);
|
|
129
168
|
if (!obligation)
|
|
130
169
|
return { state: current, step: null };
|
|
170
|
+
lastObligationId = obligation.id;
|
|
131
171
|
const outcome = await obligation.execute(current, ctx);
|
|
132
172
|
if (outcome.kind === "emit") {
|
|
133
173
|
return { state: outcome.state ?? current, step: outcome.step };
|
|
134
174
|
}
|
|
135
175
|
current = outcome.state;
|
|
136
176
|
if (++transitions > maxTransitions) {
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
177
|
+
// The fold spent its whole bound without reaching an emit or completion —
|
|
178
|
+
// a transition obligation is not clearing its own actionable state. This
|
|
179
|
+
// returns rather than throws (see the doc comment): the caller pauses
|
|
180
|
+
// resumably and names `lastObligationId`, instead of recognizing the
|
|
181
|
+
// condition by matching text in an exception.
|
|
182
|
+
return {
|
|
183
|
+
state: current,
|
|
184
|
+
step: null,
|
|
185
|
+
stopped: "bound",
|
|
186
|
+
lastObligationId,
|
|
187
|
+
};
|
|
142
188
|
}
|
|
143
189
|
}
|
|
144
190
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"obligationEngine.js","sourceRoot":"","sources":["../../../src/shared/engine/obligationEngine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;GAIG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,IAAI,CAAC;IAC1C,SAAS;IACT,SAAS;IACT,OAAO;IACP,SAAS;IACT,WAAW;CACZ,CAAC,CAAC;AAGH,+EAA+E;AAC/E,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC;KAC9B,MAAM,CAAC;IACN,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,KAAK,EAAE,qBAAqB;IAC5B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC9B,CAAC;KACD,MAAM,EAAE,CAAC;AAGZ;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,6BAA6B,CAC3C,QAA2B,EAC3B,WAAyB;IAEzB,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QAClD,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,KAAK,OAAO,CAAC,EAAE,CAAC;YACjE,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAiDD;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAChC,QAA2B,EAC3B,WAAmD,EACnD,KAAQ;IAER,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/E,MAAM,MAAM,GAAG,6BAA6B,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAChE,OAAO,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC1E,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,GAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"obligationEngine.js","sourceRoot":"","sources":["../../../src/shared/engine/obligationEngine.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dedupe.d.ts","sourceRoot":"","sources":["../../../src/shared/findings/dedupe.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AA2EnD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,OAAO,CAAC,WAAW,CAAC,EAC9B,QAAQ,EAAE,OAAO,CAAC,WAAW,CAAC,GAC7B,OAAO,CAAC,WAAW,CAAC,CAMtB;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI,CAkB5F;AAED,MAAM,WAAW,aAAa;IAC5B,yEAAyE;IACzE,cAAc,EAAE,OAAO,CAAC;IACxB,kEAAkE;IAClE,iBAAiB,EAAE,OAAO,CAAC;CAC5B;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,GAAG,IAAI,CAY7F;AAcD,MAAM,WAAW,qBAAqB;IACpC;;;;;OAKG;IACH,YAAY,EAAE,MAAM,GAAG,MAAM,CAAC;IAC9B;;;OAGG;IACH,yBAAyB,EAAE,OAAO,CAAC;IACnC;;;;OAIG;IACH,gBAAgB,EAAE,QAAQ,GAAG,OAAO,CAAC;IACrC,yEAAyE;IACzE,cAAc,EAAE,OAAO,CAAC;IACxB,kEAAkE;IAClE,iBAAiB,EAAE,OAAO,CAAC;IAC3B;;;;;;OAMG;IACH,uBAAuB,EAAE,OAAO,CAAC;IACjC;;;;;;;;;;;;;;OAcG;IACH,YAAY,EAAE,QAAQ,GAAG,OAAO,CAAC;IACjC,sEAAsE;IACtE,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,QAAQ,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;CACpE;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB;;;;OAIG;IACH,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B;;;;;;OAMG;IACH,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,wBAAwB,CAAC,GAAG,IAAI,CAAC;CAC/D;AAED,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,UAAU,GAAG,QAAQ,CAAC;IAC9B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,OAAO,EAAE,EACnB,MAAM,EAAE,qBAAqB,GAC5B,qBAAqB,CA8LvB;AA+DD;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAM7D;AAeD;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"dedupe.d.ts","sourceRoot":"","sources":["../../../src/shared/findings/dedupe.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AA2EnD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,OAAO,CAAC,WAAW,CAAC,EAC9B,QAAQ,EAAE,OAAO,CAAC,WAAW,CAAC,GAC7B,OAAO,CAAC,WAAW,CAAC,CAMtB;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI,CAkB5F;AAED,MAAM,WAAW,aAAa;IAC5B,yEAAyE;IACzE,cAAc,EAAE,OAAO,CAAC;IACxB,kEAAkE;IAClE,iBAAiB,EAAE,OAAO,CAAC;CAC5B;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,GAAG,IAAI,CAY7F;AAcD,MAAM,WAAW,qBAAqB;IACpC;;;;;OAKG;IACH,YAAY,EAAE,MAAM,GAAG,MAAM,CAAC;IAC9B;;;OAGG;IACH,yBAAyB,EAAE,OAAO,CAAC;IACnC;;;;OAIG;IACH,gBAAgB,EAAE,QAAQ,GAAG,OAAO,CAAC;IACrC,yEAAyE;IACzE,cAAc,EAAE,OAAO,CAAC;IACxB,kEAAkE;IAClE,iBAAiB,EAAE,OAAO,CAAC;IAC3B;;;;;;OAMG;IACH,uBAAuB,EAAE,OAAO,CAAC;IACjC;;;;;;;;;;;;;;OAcG;IACH,YAAY,EAAE,QAAQ,GAAG,OAAO,CAAC;IACjC,sEAAsE;IACtE,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,QAAQ,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;CACpE;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB;;;;OAIG;IACH,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B;;;;;;OAMG;IACH,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,wBAAwB,CAAC,GAAG,IAAI,CAAC;CAC/D;AAED,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,UAAU,GAAG,QAAQ,CAAC;IAC9B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,OAAO,EAAE,EACnB,MAAM,EAAE,qBAAqB,GAC5B,qBAAqB,CA8LvB;AA+DD;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAM7D;AAeD;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE,CA+C7D;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CA6B5F"}
|
|
@@ -412,6 +412,14 @@ export function sameLensDedupe(findings) {
|
|
|
412
412
|
if (removed.has(group[i]))
|
|
413
413
|
continue;
|
|
414
414
|
for (let j = i + 1; j < group.length; j++) {
|
|
415
|
+
// The i-slot finding may have been absorbed mid-scan (as b of an earlier
|
|
416
|
+
// pair): an absorbed finding must never act as a survivor again, or it
|
|
417
|
+
// re-absorbs data that was already unioned into ITS absorber and the
|
|
418
|
+
// final filter silently drops everything it then wins — the same
|
|
419
|
+
// conservation guard crossLensDedupe carries. Checked BEFORE the j-slot
|
|
420
|
+
// skip, mirroring that pass.
|
|
421
|
+
if (removed.has(group[i]))
|
|
422
|
+
break;
|
|
415
423
|
if (removed.has(group[j]))
|
|
416
424
|
continue;
|
|
417
425
|
const a = group[i];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dedupe.js","sourceRoot":"","sources":["../../../src/shared/findings/dedupe.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"dedupe.js","sourceRoot":"","sources":["../../../src/shared/findings/dedupe.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type FrictionCaptureArtifact, type FrictionItem } from "../io/frictionCapture.js";
|
|
1
|
+
import { type FrictionCaptureArtifact, type FrictionItem, type FrictionRunLinks, type FrictionRunLinkUpdate } from "../io/frictionCapture.js";
|
|
2
2
|
/**
|
|
3
3
|
* The shared per-run friction RECORD substrate (CE-004 / CE-010, the O1
|
|
4
4
|
* FRICTION-FOUNDATION layer). Single-sourced for BOTH orchestrators so the
|
|
@@ -150,6 +150,46 @@ export declare function frictionLockPath(artifactsDir: string, runId: string): s
|
|
|
150
150
|
* appenders never lost-update each other's fields — the late writer always sees
|
|
151
151
|
* the earlier writer's merged record (CE-010). `mutate` must be pure and
|
|
152
152
|
* total (it returns the next record); it never performs IO of its own.
|
|
153
|
+
*
|
|
154
|
+
* `links` names the runs this write knows about (semantics: `FrictionRunLinks`). It is
|
|
155
|
+
* folded in AROUND `mutate`, never inside it, because every caller's mutate has an early
|
|
156
|
+
* return that yields the record unchanged (the per-event de-dup in `captureFrictionEvent`
|
|
157
|
+
* most of all) — and a re-entrant pass is exactly when a newly-known id arrives.
|
|
158
|
+
*/
|
|
159
|
+
export declare function appendFrictionUnderLock(artifactsDir: string, runId: string, mutate: (record: TriagedFrictionArtifact) => TriagedFrictionArtifact, tool?: FrictionCaptureArtifact["tool"], links?: FrictionRunLinkUpdate): Promise<TriagedFrictionArtifact>;
|
|
160
|
+
/**
|
|
161
|
+
* Record which step-envelope run and/or dispatch run this friction record relates to,
|
|
162
|
+
* best-effort. The only writer seam whose whole purpose is the reference — every other
|
|
163
|
+
* writer carries frictions and merely passes its links along.
|
|
164
|
+
*
|
|
165
|
+
* Call it at a seam that HOLDS the id (a dispatch prepare, a step publish), once per
|
|
166
|
+
* round, passing only what is genuinely in scope (semantics: `FrictionRunLinks`). Never
|
|
167
|
+
* throws: a failed link is diagnostic loss, never a broken obligation — the same
|
|
168
|
+
* best-effort contract as the mechanical capture sink.
|
|
169
|
+
*
|
|
170
|
+
* ⚠ It MATERIALIZES the record when none exists (`appendFrictionUnderLock` creates on
|
|
171
|
+
* miss), so a link write alone makes `frictionCaptured` — the never-re-loop gate keyed
|
|
172
|
+
* on artifact existence — answer true for a run with no close-out. Harmless only while
|
|
173
|
+
* that gate has no live consumer; re-wiring it means this seam must stop creating.
|
|
174
|
+
*/
|
|
175
|
+
export declare function linkFrictionRunIds(artifactsDir: string, runId: string, links: FrictionRunLinkUpdate, tool?: FrictionCaptureArtifact["tool"]): Promise<void>;
|
|
176
|
+
/** One friction record found by reference, with the references it carries. */
|
|
177
|
+
export interface FrictionRecordReference extends FrictionRunLinks {
|
|
178
|
+
/** The record's own run key (the friction dir entry it is filed under). */
|
|
179
|
+
run_id: string;
|
|
180
|
+
/** Absolute path to the record. */
|
|
181
|
+
path: string;
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Find every friction record under `artifactsDir` that REFERENCES the given run(s) —
|
|
185
|
+
* the read side of the linkage. Without it a caller holding a dispatch run id can only
|
|
186
|
+
* guess at the record's key, and a record filed under a different key is invisible.
|
|
187
|
+
*
|
|
188
|
+
* A record matches when ANY queried id is a MEMBER of the record's corresponding
|
|
189
|
+
* reference array — so a record naming N rounds is found from any one of them, not just
|
|
190
|
+
* the first, and a caller holding a whole round set joins in ONE scan. Querying no id
|
|
191
|
+
* matches nothing (an empty query is not "everything"). Results are ordered by `run_id` —
|
|
192
|
+
* a stable, content-derived key, never directory-read order.
|
|
153
193
|
*/
|
|
154
|
-
export declare function
|
|
194
|
+
export declare function findFrictionRecordsByRunLink(artifactsDir: string, link: Partial<FrictionRunLinks>): Promise<FrictionRecordReference[]>;
|
|
155
195
|
//# sourceMappingURL=frictionRecord.d.ts.map
|
|
@@ -1 +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,
|
|
1
|
+
{"version":3,"file":"frictionRecord.d.ts","sourceRoot":"","sources":["../../../src/shared/friction/frictionRecord.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { join } from "node:path";
|
|
2
|
-
import { FRICTION_CAPTURE_SCHEMA_VERSION, frictionCaptureDir, frictionCapturePath, sanitizeRunId, } from "../io/frictionCapture.js";
|
|
2
|
+
import { FRICTION_CAPTURE_SCHEMA_VERSION, frictionCaptureDir, frictionCapturePath, listFrictionRecordFilenames, sanitizeRunId, } from "../io/frictionCapture.js";
|
|
3
3
|
import { readOptionalJsonFile, writeJsonFile } from "../io/json.js";
|
|
4
4
|
import { withFileLock } from "../io/fileLock.js";
|
|
5
5
|
/**
|
|
@@ -57,10 +57,42 @@ function emptyRecord(runId, tool) {
|
|
|
57
57
|
schema_version: FRICTION_CAPTURE_SCHEMA_VERSION,
|
|
58
58
|
tool,
|
|
59
59
|
run_id: runId,
|
|
60
|
+
// Materialization happens at whichever seam touches the record first, routinely
|
|
61
|
+
// BEFORE either related run exists (semantics: `FrictionRunLinks`).
|
|
62
|
+
step_run_ids: [],
|
|
63
|
+
dispatch_run_ids: [],
|
|
60
64
|
captured_at: new Date().toISOString(),
|
|
61
65
|
frictions: [],
|
|
62
66
|
};
|
|
63
67
|
}
|
|
68
|
+
/**
|
|
69
|
+
* A stored reference array as read off disk: deduped and sorted in code-unit order of the
|
|
70
|
+
* id, so the array is content-ordered rather than write-ordered. The value arrives through
|
|
71
|
+
* an unchecked JSON cast, so anything that is not an array of strings (a record written
|
|
72
|
+
* before the field existed) normalizes to empty instead of throwing.
|
|
73
|
+
*/
|
|
74
|
+
function normalizeRunRefs(stored) {
|
|
75
|
+
const refs = Array.isArray(stored)
|
|
76
|
+
? stored.filter((ref) => typeof ref === "string")
|
|
77
|
+
: [];
|
|
78
|
+
return [...new Set(refs)].sort((left, right) => (left < right ? -1 : left > right ? 1 : 0));
|
|
79
|
+
}
|
|
80
|
+
/** {@link normalizeRunRefs} of the stored array unioned with one newly-supplied id. */
|
|
81
|
+
function mergeRunRefs(stored, added) {
|
|
82
|
+
const existing = normalizeRunRefs(stored);
|
|
83
|
+
return typeof added === "string" ? normalizeRunRefs([...existing, added]) : existing;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Fold a run-link update into a record — the single chokepoint implementing the reference
|
|
87
|
+
* semantics stated on `FrictionRunLinks` (src/shared/io/frictionCapture.ts).
|
|
88
|
+
*/
|
|
89
|
+
function mergeFrictionRunLinks(record, links) {
|
|
90
|
+
return {
|
|
91
|
+
...record,
|
|
92
|
+
step_run_ids: mergeRunRefs(record.step_run_ids, links?.step_run_id),
|
|
93
|
+
dispatch_run_ids: mergeRunRefs(record.dispatch_run_ids, links?.dispatch_run_id),
|
|
94
|
+
};
|
|
95
|
+
}
|
|
64
96
|
/**
|
|
65
97
|
* Apply `mutate` to the per-run friction record under the shared lock, then
|
|
66
98
|
* persist the result atomically and return it.
|
|
@@ -72,14 +104,90 @@ function emptyRecord(runId, tool) {
|
|
|
72
104
|
* appenders never lost-update each other's fields — the late writer always sees
|
|
73
105
|
* the earlier writer's merged record (CE-010). `mutate` must be pure and
|
|
74
106
|
* total (it returns the next record); it never performs IO of its own.
|
|
107
|
+
*
|
|
108
|
+
* `links` names the runs this write knows about (semantics: `FrictionRunLinks`). It is
|
|
109
|
+
* folded in AROUND `mutate`, never inside it, because every caller's mutate has an early
|
|
110
|
+
* return that yields the record unchanged (the per-event de-dup in `captureFrictionEvent`
|
|
111
|
+
* most of all) — and a re-entrant pass is exactly when a newly-known id arrives.
|
|
75
112
|
*/
|
|
76
|
-
export async function appendFrictionUnderLock(artifactsDir, runId, mutate, tool = "remediate-code") {
|
|
113
|
+
export async function appendFrictionUnderLock(artifactsDir, runId, mutate, tool = "remediate-code", links) {
|
|
77
114
|
return withFileLock(frictionLockPath(artifactsDir, runId), async () => {
|
|
78
115
|
const existing = await readOptionalJsonFile(frictionCapturePath(artifactsDir, runId));
|
|
79
116
|
const base = existing ?? emptyRecord(runId, tool);
|
|
80
|
-
const next = mutate(base);
|
|
117
|
+
const next = mergeFrictionRunLinks(mutate(base), links);
|
|
81
118
|
await writeJsonFile(frictionCapturePath(artifactsDir, runId), next);
|
|
82
119
|
return next;
|
|
83
120
|
});
|
|
84
121
|
}
|
|
122
|
+
/**
|
|
123
|
+
* Record which step-envelope run and/or dispatch run this friction record relates to,
|
|
124
|
+
* best-effort. The only writer seam whose whole purpose is the reference — every other
|
|
125
|
+
* writer carries frictions and merely passes its links along.
|
|
126
|
+
*
|
|
127
|
+
* Call it at a seam that HOLDS the id (a dispatch prepare, a step publish), once per
|
|
128
|
+
* round, passing only what is genuinely in scope (semantics: `FrictionRunLinks`). Never
|
|
129
|
+
* throws: a failed link is diagnostic loss, never a broken obligation — the same
|
|
130
|
+
* best-effort contract as the mechanical capture sink.
|
|
131
|
+
*
|
|
132
|
+
* ⚠ It MATERIALIZES the record when none exists (`appendFrictionUnderLock` creates on
|
|
133
|
+
* miss), so a link write alone makes `frictionCaptured` — the never-re-loop gate keyed
|
|
134
|
+
* on artifact existence — answer true for a run with no close-out. Harmless only while
|
|
135
|
+
* that gate has no live consumer; re-wiring it means this seam must stop creating.
|
|
136
|
+
*/
|
|
137
|
+
export async function linkFrictionRunIds(artifactsDir, runId, links, tool = "remediate-code") {
|
|
138
|
+
try {
|
|
139
|
+
await appendFrictionUnderLock(artifactsDir, runId, (record) => record, tool, links);
|
|
140
|
+
}
|
|
141
|
+
catch {
|
|
142
|
+
// Best-effort: swallow every failure so linking never breaks the obligation.
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Find every friction record under `artifactsDir` that REFERENCES the given run(s) —
|
|
147
|
+
* the read side of the linkage. Without it a caller holding a dispatch run id can only
|
|
148
|
+
* guess at the record's key, and a record filed under a different key is invisible.
|
|
149
|
+
*
|
|
150
|
+
* A record matches when ANY queried id is a MEMBER of the record's corresponding
|
|
151
|
+
* reference array — so a record naming N rounds is found from any one of them, not just
|
|
152
|
+
* the first, and a caller holding a whole round set joins in ONE scan. Querying no id
|
|
153
|
+
* matches nothing (an empty query is not "everything"). Results are ordered by `run_id` —
|
|
154
|
+
* a stable, content-derived key, never directory-read order.
|
|
155
|
+
*/
|
|
156
|
+
export async function findFrictionRecordsByRunLink(artifactsDir, link) {
|
|
157
|
+
const wantStep = normalizeRunRefs(link.step_run_ids);
|
|
158
|
+
const wantDispatch = normalizeRunRefs(link.dispatch_run_ids);
|
|
159
|
+
if (wantStep.length === 0 && wantDispatch.length === 0)
|
|
160
|
+
return [];
|
|
161
|
+
const dir = frictionCaptureDir(artifactsDir);
|
|
162
|
+
const names = await listFrictionRecordFilenames(artifactsDir);
|
|
163
|
+
const found = [];
|
|
164
|
+
for (const name of names) {
|
|
165
|
+
const path = join(dir, name);
|
|
166
|
+
// Siblings are host-authorable (the triage block asks the host to write one), so an
|
|
167
|
+
// unreadable record costs only its own visibility — never the caller's close-out.
|
|
168
|
+
let record;
|
|
169
|
+
try {
|
|
170
|
+
record = await readOptionalJsonFile(path);
|
|
171
|
+
}
|
|
172
|
+
catch {
|
|
173
|
+
continue;
|
|
174
|
+
}
|
|
175
|
+
if (!record || typeof record.run_id !== "string")
|
|
176
|
+
continue;
|
|
177
|
+
const stepRunIds = normalizeRunRefs(record.step_run_ids);
|
|
178
|
+
const dispatchRunIds = normalizeRunRefs(record.dispatch_run_ids);
|
|
179
|
+
const matches = wantStep.some((id) => stepRunIds.includes(id)) ||
|
|
180
|
+
wantDispatch.some((id) => dispatchRunIds.includes(id));
|
|
181
|
+
if (!matches)
|
|
182
|
+
continue;
|
|
183
|
+
found.push({
|
|
184
|
+
run_id: record.run_id,
|
|
185
|
+
path,
|
|
186
|
+
step_run_ids: stepRunIds,
|
|
187
|
+
dispatch_run_ids: dispatchRunIds,
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
// Code-unit order on the record's own key: stable, content-derived, locale-free.
|
|
191
|
+
return found.sort((left, right) => left.run_id < right.run_id ? -1 : left.run_id > right.run_id ? 1 : 0);
|
|
192
|
+
}
|
|
85
193
|
//# sourceMappingURL=frictionRecord.js.map
|
|
@@ -1 +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,
|
|
1
|
+
{"version":3,"file":"frictionRecord.js","sourceRoot":"","sources":["../../../src/shared/friction/frictionRecord.ts"],"names":[],"mappings":"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"}
|
|
@@ -174,6 +174,21 @@ export interface FrictionTriageDecision {
|
|
|
174
174
|
existing_attestations: FrictionCategoryAttestation[];
|
|
175
175
|
/** Free-form notes already recorded (undefined when none). */
|
|
176
176
|
free_form_notes?: string;
|
|
177
|
+
/**
|
|
178
|
+
* Every step-envelope run this record relates to (semantics: `FrictionRunLinks`).
|
|
179
|
+
* Surfaced so the close-out states which runs it is closing out instead of leaving
|
|
180
|
+
* the relation to be inferred from the record's key. Empty when none was recorded.
|
|
181
|
+
*/
|
|
182
|
+
step_run_ids: readonly string[];
|
|
183
|
+
/** Every dispatch (host-handoff) run this record relates to; empty when none. */
|
|
184
|
+
dispatch_run_ids: readonly string[];
|
|
185
|
+
/**
|
|
186
|
+
* The OWN KEYS of other friction records under the same artifacts dir that reference
|
|
187
|
+
* one of the SAME runs — found by reference, not by key, so a record filed under a
|
|
188
|
+
* substrate-minted key is visible to a close-out walking a different key. Ordered by
|
|
189
|
+
* key; empty when this record names no run or nothing else references one.
|
|
190
|
+
*/
|
|
191
|
+
related_record_keys: string[];
|
|
177
192
|
}
|
|
178
193
|
/** A stable key for a surfaced reflection (task_id + ordinal within the run). */
|
|
179
194
|
export declare function reflectionKey(reflection: AgentReflection, ordinal: number): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"triage.d.ts","sourceRoot":"","sources":["../../../src/shared/friction/triage.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,uBAAuB,EAE7B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,KAAK,eAAe,EAGrB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EACrB,KAAK,2BAA2B,EAChC,KAAK,mBAAmB,EACxB,KAAK,yBAAyB,EAC9B,KAAK,uBAAuB,EAC5B,KAAK,uBAAuB,
|
|
1
|
+
{"version":3,"file":"triage.d.ts","sourceRoot":"","sources":["../../../src/shared/friction/triage.ts"],"names":[],"mappings":"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"}
|