audit-tools 0.33.3 → 0.33.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/audit/cli/args.d.ts.map +1 -1
- package/dist/audit/cli/args.js +0 -3
- package/dist/audit/cli/args.js.map +1 -1
- package/dist/audit/cli/dispatch/hostFanoutGate.d.ts +7 -0
- package/dist/audit/cli/dispatch/hostFanoutGate.d.ts.map +1 -1
- package/dist/audit/cli/dispatch/hostFanoutGate.js +18 -4
- package/dist/audit/cli/dispatch/hostFanoutGate.js.map +1 -1
- package/dist/audit/cli/dispatch/quotaPool.d.ts +12 -0
- package/dist/audit/cli/dispatch/quotaPool.d.ts.map +1 -1
- package/dist/audit/cli/dispatch/quotaPool.js +59 -31
- package/dist/audit/cli/dispatch/quotaPool.js.map +1 -1
- package/dist/audit/cli/dispatch/types.d.ts +7 -0
- package/dist/audit/cli/dispatch/types.d.ts.map +1 -1
- package/dist/audit/cli/dispatch.d.ts +19 -0
- package/dist/audit/cli/dispatch.d.ts.map +1 -1
- package/dist/audit/cli/dispatch.js +46 -8
- package/dist/audit/cli/dispatch.js.map +1 -1
- package/dist/audit/cli/hybridDispatch.d.ts +7 -1
- package/dist/audit/cli/hybridDispatch.d.ts.map +1 -1
- package/dist/audit/cli/hybridDispatch.js +7 -18
- package/dist/audit/cli/hybridDispatch.js.map +1 -1
- package/dist/audit/cli/nextStepCommand.d.ts +1 -1
- package/dist/audit/cli/nextStepCommand.d.ts.map +1 -1
- package/dist/audit/cli/nextStepCommand.js +27 -13
- package/dist/audit/cli/nextStepCommand.js.map +1 -1
- package/dist/audit/cli/nextStepHelpers.d.ts.map +1 -1
- package/dist/audit/cli/nextStepHelpers.js +29 -8
- package/dist/audit/cli/nextStepHelpers.js.map +1 -1
- package/dist/audit/cli/rollingAuditDispatch.d.ts +14 -2
- package/dist/audit/cli/rollingAuditDispatch.d.ts.map +1 -1
- package/dist/audit/cli/rollingAuditDispatch.js +8 -27
- package/dist/audit/cli/rollingAuditDispatch.js.map +1 -1
- package/dist/audit/cli/semanticReviewStep.d.ts.map +1 -1
- package/dist/audit/cli/semanticReviewStep.js +30 -7
- package/dist/audit/cli/semanticReviewStep.js.map +1 -1
- package/dist/audit/quota/index.d.ts +2 -668
- package/dist/audit/quota/index.d.ts.map +1 -1
- package/dist/audit/quota/index.js +5 -30
- package/dist/audit/quota/index.js.map +1 -1
- package/dist/remediate/steps/dispatch/waveScheduling.d.ts.map +1 -1
- package/dist/remediate/steps/dispatch/waveScheduling.js +21 -25
- package/dist/remediate/steps/dispatch/waveScheduling.js.map +1 -1
- package/dist/remediate/steps/nextStep.d.ts.map +1 -1
- package/dist/remediate/steps/nextStep.js +70 -37
- package/dist/remediate/steps/nextStep.js.map +1 -1
- package/dist/remediate/steps/types.d.ts +7 -27
- package/dist/remediate/steps/types.d.ts.map +1 -1
- package/dist/remediate/steps/types.js +0 -1
- package/dist/remediate/steps/types.js.map +1 -1
- package/dist/shared/dispatch/admissionLoop.d.ts +42 -6
- package/dist/shared/dispatch/admissionLoop.d.ts.map +1 -1
- package/dist/shared/dispatch/admissionLoop.js +82 -1
- package/dist/shared/dispatch/admissionLoop.js.map +1 -1
- package/dist/shared/dispatch/dispatchQuotaContract.d.ts +720 -0
- package/dist/shared/dispatch/dispatchQuotaContract.d.ts.map +1 -0
- package/dist/shared/dispatch/dispatchQuotaContract.js +76 -0
- package/dist/shared/dispatch/dispatchQuotaContract.js.map +1 -0
- package/dist/shared/dispatch/hostDispatchWall.d.ts +39 -0
- package/dist/shared/dispatch/hostDispatchWall.d.ts.map +1 -1
- package/dist/shared/dispatch/hostDispatchWall.js +22 -1
- package/dist/shared/dispatch/hostDispatchWall.js.map +1 -1
- package/dist/shared/dispatch/settledPools.d.ts +32 -0
- package/dist/shared/dispatch/settledPools.d.ts.map +1 -1
- package/dist/shared/dispatch/settledPools.js +37 -0
- package/dist/shared/dispatch/settledPools.js.map +1 -1
- package/dist/shared/index.d.ts +7 -4
- package/dist/shared/index.d.ts.map +1 -1
- package/dist/shared/index.js +5 -3
- package/dist/shared/index.js.map +1 -1
- package/dist/shared/providers/inProcessWorkers.d.ts +42 -0
- package/dist/shared/providers/inProcessWorkers.d.ts.map +1 -0
- package/dist/shared/providers/inProcessWorkers.js +64 -0
- package/dist/shared/providers/inProcessWorkers.js.map +1 -0
- package/dist/shared/providers/proxyCatalog.d.ts.map +1 -1
- package/dist/shared/providers/proxyCatalog.js +21 -4
- package/dist/shared/providers/proxyCatalog.js.map +1 -1
- package/dist/shared/quota/apiPool.d.ts +18 -0
- package/dist/shared/quota/apiPool.d.ts.map +1 -1
- package/dist/shared/quota/apiPool.js +35 -4
- package/dist/shared/quota/apiPool.js.map +1 -1
- package/dist/shared/quota/capacity.d.ts +8 -1
- package/dist/shared/quota/capacity.d.ts.map +1 -1
- package/dist/shared/quota/capacity.js +2 -1
- package/dist/shared/quota/capacity.js.map +1 -1
- package/dist/shared/types/auditorDescriptor.d.ts +0 -8
- package/dist/shared/types/auditorDescriptor.d.ts.map +1 -1
- package/dist/shared/types/auditorDescriptor.js.map +1 -1
- package/dist/shared/validation/sessionConfig.d.ts.map +1 -1
- package/dist/shared/validation/sessionConfig.js +10 -0
- package/dist/shared/validation/sessionConfig.js.map +1 -1
- package/opencode.json +2 -2
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/audit/quota/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/audit/quota/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,uBAAuB,EACvB,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,wBAAwB,EACxB,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,EACpB,WAAW,EACX,WAAW,EACX,YAAY,EACZ,oBAAoB,EACpB,gBAAgB,EAChB,kBAAkB,EAClB,oBAAoB,EACpB,kBAAkB,EAClB,qBAAqB,EACrB,yBAAyB,EACzB,8BAA8B,GAC/B,MAAM,oBAAoB,CAAC;AAE5B,YAAY,EACV,qBAAqB,EACrB,oBAAoB,EACpB,YAAY,EACZ,cAAc,EACd,WAAW,EACX,eAAe,EACf,oBAAoB,EACpB,0BAA0B,EAC1B,UAAU,EACV,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,mBAAmB,EACnB,wBAAwB,EACxB,mBAAmB,EACnB,WAAW,EACX,kBAAkB,EAClB,WAAW,EACX,cAAc,EACd,2BAA2B,GAC5B,MAAM,oBAAoB,CAAC;AAK5B,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3F,YAAY,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAK9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,YAAY,EACV,YAAY,EACZ,sBAAsB,EACtB,gBAAgB,GACjB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,6BAA6B,EAC7B,8BAA8B,GAC/B,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,qBAAqB,EACrB,yBAAyB,EACzB,0BAA0B,GAC3B,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AAErH,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,YAAY,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAEjE,YAAY,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,sBAAsB,EAAE,yBAAyB,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AAM/H,OAAO,EACL,+BAA+B,EAC/B,2BAA2B,IAAI,mBAAmB,GACnD,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EAAE,qBAAqB,IAAI,aAAa,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import { z } from "zod";
|
|
2
|
-
import { ResolvedLimitsSchema, LimitConfidenceSchema, LimitSourceSchema, HostConcurrencyLimitSchema, QuotaUsageSnapshotSchema, BackoffStateSchema, WaveBindingCapSchema, DispatchCapacityPoolSummarySchema, DispatchModelTierSchema, HostModelRosterEntrySchema, DispatchAdmissionSchema, } from "audit-tools/shared";
|
|
3
1
|
// Re-exported from audit-tools/shared
|
|
4
2
|
export { resolveLimits, classifyProvider, readQuotaState, readQuotaStateOrDegrade, writeQuotaState, recordWaveOutcome, getQuotaStatePath, computeBackoffCooldownMs, setQuotaStateDir, detectRateLimitError, computeCooldownUntil, acquireLock, releaseLock, withFileLock, FileLockTimeoutError, runSlidingWindow, LearnedQuotaSource, CompositeQuotaSource, GenericErrorParser, ClaudeCodeErrorParser, getErrorParserForProvider, summarizeDispatchCapacityPools, } from "audit-tools/shared";
|
|
5
3
|
// Wave scheduler now lives in audit-tools/shared (single source of truth for
|
|
@@ -15,32 +13,9 @@ export { detectHostActiveSubagentLimit, resolveHostActiveSubagentLimit, } from "
|
|
|
15
13
|
export { lookupDiscoveredLimits, updateDiscoveredLimits, mergeDiscoveredLimits, readDiscoveredLimitsCache, writeDiscoveredLimitsCache, } from "./discoveredLimits.js";
|
|
16
14
|
export { extractRateLimitHeaders } from "./headerExtraction.js";
|
|
17
15
|
export { GenericHeaderExtractor, ClaudeCodeHeaderExtractor, getHeaderExtractorForProvider } from "./headerExtractors/index.js";
|
|
18
|
-
//
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
run_id: z.string(),
|
|
24
|
-
model: z.string().nullable(),
|
|
25
|
-
resolved_limits: ResolvedLimitsSchema,
|
|
26
|
-
confidence: LimitConfidenceSchema,
|
|
27
|
-
source: LimitSourceSchema,
|
|
28
|
-
host_concurrency_limit: HostConcurrencyLimitSchema.nullable(),
|
|
29
|
-
// Admission control (v1alpha3): the tool GRANTS the affordable admitted set
|
|
30
|
-
// (cost-first-capable, ledger-leased) instead of reporting a computed
|
|
31
|
-
// `max_concurrent_agents` concurrency number. The granted set's size is the
|
|
32
|
-
// emergent admission width; the host dispatches exactly it, then re-invokes
|
|
33
|
-
// next-step for the next grant. See spec/audit/dispatch-admission-control.md.
|
|
34
|
-
admission: DispatchAdmissionSchema,
|
|
35
|
-
cooldown_until: z.string().nullable(),
|
|
36
|
-
binding_cap: WaveBindingCapSchema.optional(),
|
|
37
|
-
capacity_pools: z.array(DispatchCapacityPoolSummarySchema).optional(),
|
|
38
|
-
/** Echo of the host-reported model roster (lowest rank first), when given. */
|
|
39
|
-
host_model_roster: z.array(HostModelRosterEntrySchema).optional(),
|
|
40
|
-
/** Per-tier packet input budgets (context − output) derived from the roster. */
|
|
41
|
-
tier_budgets: z.record(DispatchModelTierSchema, z.number()).optional(),
|
|
42
|
-
quota_source_snapshot: QuotaUsageSnapshotSchema.nullable().optional(),
|
|
43
|
-
backoff_state: BackoffStateSchema.nullable().optional(),
|
|
44
|
-
})
|
|
45
|
-
.strict();
|
|
16
|
+
// H5: the dispatch-quota contract is the SHARED one (dispatchQuotaContract.ts) —
|
|
17
|
+
// these are thin aliases, never a second shape. The old audit-only
|
|
18
|
+
// DISPATCH_QUOTA_V1ALPHA3 zod contract is deleted; both draws emit and validate
|
|
19
|
+
// dispatch-quota/v1.
|
|
20
|
+
export { DISPATCH_QUOTA_CONTRACT_VERSION, DispatchQuotaContractSchema as DispatchQuotaSchema, } from "audit-tools/shared";
|
|
46
21
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/audit/quota/index.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/audit/quota/index.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,uBAAuB,EACvB,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,wBAAwB,EACxB,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,EACpB,WAAW,EACX,WAAW,EACX,YAAY,EACZ,oBAAoB,EACpB,gBAAgB,EAChB,kBAAkB,EAClB,oBAAoB,EACpB,kBAAkB,EAClB,qBAAqB,EACrB,yBAAyB,EACzB,8BAA8B,GAC/B,MAAM,oBAAoB,CAAC;AAyB5B,6EAA6E;AAC7E,+EAA+E;AAC/E,0DAA0D;AAC1D,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAG3F,4EAA4E;AAC5E,8EAA8E;AAC9E,+BAA+B;AAC/B,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAO7D,yDAAyD;AACzD,OAAO,EACL,6BAA6B,EAC7B,8BAA8B,GAC/B,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,qBAAqB,EACrB,yBAAyB,EACzB,0BAA0B,GAC3B,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAIhE,OAAO,EAAE,sBAAsB,EAAE,yBAAyB,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AAE/H,iFAAiF;AACjF,mEAAmE;AACnE,gFAAgF;AAChF,qBAAqB;AACrB,OAAO,EACL,+BAA+B,EAC/B,2BAA2B,IAAI,mBAAmB,GACnD,MAAM,oBAAoB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"waveScheduling.d.ts","sourceRoot":"","sources":["../../../../src/remediate/steps/dispatch/waveScheduling.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,oBAAoB,EACpB,YAAY,EACZ,eAAe,EAEf,oBAAoB,EACpB,2BAA2B,EAC3B,oBAAoB,EACpB,YAAY,EACZ,iBAAiB,EAElB,MAAM,oBAAoB,CAAC;AAS5B,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,
|
|
1
|
+
{"version":3,"file":"waveScheduling.d.ts","sourceRoot":"","sources":["../../../../src/remediate/steps/dispatch/waveScheduling.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { createReservationLedger, admissionPoolsFromSummaries, assembleDispatchQuota } from "audit-tools/shared";
|
|
2
2
|
import { buildHostPoolPreamble, buildSourcePools, resolveHostProviderName, resolveConversationHostProvider, isDemotableInProcessProvider, } from "audit-tools/shared";
|
|
3
|
-
import { REMEDIATION_DISPATCH_QUOTA_CONTRACT_VERSION, } from "../types.js";
|
|
4
3
|
import { computeDispatchCapacity, resolveHostActiveSubagentLimit, computeBackoffCooldownMs, summarizeDispatchCapacityPools, } from "../../quota/index.js";
|
|
5
4
|
export { resolveHostActiveSubagentLimit };
|
|
6
5
|
export { detectHostActiveSubagentLimit as detectHostConcurrencyFromEnv, } from "../../quota/hostLimits.js";
|
|
@@ -161,34 +160,31 @@ dispatchBias) {
|
|
|
161
160
|
current_cooldown_ms: computeBackoffCooldownMs(count),
|
|
162
161
|
};
|
|
163
162
|
}
|
|
164
|
-
//
|
|
165
|
-
//
|
|
166
|
-
//
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
packets: admissionPackets,
|
|
163
|
+
// H5: the admission math + contract shape live in the shared emit core; this
|
|
164
|
+
// wrapper keeps only remediate's assembly policy (precomputed schedule, phase,
|
|
165
|
+
// estimated_wave_tokens).
|
|
166
|
+
return assembleDispatchQuota({
|
|
167
|
+
runId,
|
|
170
168
|
pools: admissionPoolsFromSummaries(schedule.capacity_pools ?? [], confirmedCostPositions),
|
|
169
|
+
packets: admissionPackets,
|
|
171
170
|
outputCap: schedule.resolved_limits.output_tokens,
|
|
172
171
|
grantLeases,
|
|
173
172
|
ledger: createReservationLedger(),
|
|
174
173
|
...(dispatchBias != null ? { dispatchBias } : {}),
|
|
174
|
+
base: {
|
|
175
|
+
phase,
|
|
176
|
+
host_concurrency_limit: schedule.host_concurrency_limit,
|
|
177
|
+
estimated_wave_tokens: schedule.estimated_wave_tokens,
|
|
178
|
+
model: schedule.model,
|
|
179
|
+
confidence: schedule.confidence,
|
|
180
|
+
source: schedule.source,
|
|
181
|
+
resolved_limits: schedule.resolved_limits,
|
|
182
|
+
cooldown_until: schedule.cooldown_until,
|
|
183
|
+
binding_cap: schedule.binding_cap ?? "none",
|
|
184
|
+
capacity_pools: schedule.capacity_pools,
|
|
185
|
+
quota_source_snapshot: schedule.quota_source_snapshot ?? null,
|
|
186
|
+
backoff_state: backoffState,
|
|
187
|
+
},
|
|
175
188
|
});
|
|
176
|
-
return {
|
|
177
|
-
contract_version: REMEDIATION_DISPATCH_QUOTA_CONTRACT_VERSION,
|
|
178
|
-
run_id: runId,
|
|
179
|
-
phase,
|
|
180
|
-
host_concurrency_limit: schedule.host_concurrency_limit,
|
|
181
|
-
admission,
|
|
182
|
-
estimated_wave_tokens: schedule.estimated_wave_tokens,
|
|
183
|
-
model: schedule.model,
|
|
184
|
-
confidence: schedule.confidence,
|
|
185
|
-
source: schedule.source,
|
|
186
|
-
resolved_limits: schedule.resolved_limits,
|
|
187
|
-
cooldown_until: schedule.cooldown_until,
|
|
188
|
-
binding_cap: schedule.binding_cap ?? "none",
|
|
189
|
-
capacity_pools: schedule.capacity_pools,
|
|
190
|
-
quota_source_snapshot: schedule.quota_source_snapshot ?? null,
|
|
191
|
-
backoff_state: backoffState,
|
|
192
|
-
};
|
|
193
189
|
}
|
|
194
190
|
//# sourceMappingURL=waveScheduling.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"waveScheduling.js","sourceRoot":"","sources":["../../../../src/remediate/steps/dispatch/waveScheduling.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"waveScheduling.js","sourceRoot":"","sources":["../../../../src/remediate/steps/dispatch/waveScheduling.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nextStep.d.ts","sourceRoot":"","sources":["../../../src/remediate/steps/nextStep.ts"],"names":[],"mappings":"AAIA,OAAO,EAAc,KAAK,gBAAgB,EAAE,KAAK,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC7F,OAAO,KAAK,EAGV,gBAAgB,EAGjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAA4nB,KAAK,sBAAsB,EAA8C,KAAK,iBAAiB,EAAE,KAAK,aAAa,EAAE,KAAK,oBAAoB,EAAE,KAAK,YAAY,EAAE,KAAK,yBAAyB,EAAE,KAAK,qBAAqB,EAAE,KAAK,YAAY,EAAqB,KAAK,sBAAsB,EAAE,KAAK,cAAc,
|
|
1
|
+
{"version":3,"file":"nextStep.d.ts","sourceRoot":"","sources":["../../../src/remediate/steps/nextStep.ts"],"names":[],"mappings":"AAIA,OAAO,EAAc,KAAK,gBAAgB,EAAE,KAAK,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC7F,OAAO,KAAK,EAGV,gBAAgB,EAGjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAA4nB,KAAK,sBAAsB,EAA8C,KAAK,iBAAiB,EAAE,KAAK,aAAa,EAAE,KAAK,oBAAoB,EAAE,KAAK,YAAY,EAAE,KAAK,yBAAyB,EAAE,KAAK,qBAAqB,EAAE,KAAK,YAAY,EAAqB,KAAK,sBAAsB,EAAE,KAAK,cAAc,EAA8N,sBAAsB,EAAye,KAAK,YAAY,EAAE,KAAK,kBAAkB,EAA2B,MAAM,oBAAoB,CAAC;AAQrvD,OAAO,EASL,KAAK,kBAAkB,EACxB,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AAgBpE,OAAO,KAAK,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAE3E,OAAO,EACL,gBAAgB,EAChB,wBAAwB,EAEzB,MAAM,wBAAwB,CAAC;AAOhC,OAAO,EAKL,KAAK,UAAU,EAChB,MAAM,gBAAgB,CAAC;AAqCxB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAoB3D,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC1B,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,0EAA0E;IAC1E,UAAU,CAAC,EAAE,oBAAoB,EAAE,GAAG,IAAI,CAAC;IAC3C,2EAA2E;IAC3E,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B;;;;OAIG;IACH,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;;;;;OAOG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,aAAa,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IACrC;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;;;OAKG;IACH,eAAe,CAAC,EAAE,UAAU,CAAC;CAC9B;AAED,wBAAgB,6BAA6B,CAAC,OAAO,EAAE;IACrD,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,aAAa,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IACrC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CACzB,GAAG,OAAO,CAYV;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,2BAA2B,CAAC,OAAO,EAAE;IACnD,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,aAAa,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IACrC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CACzB,GAAG,OAAO,CAOV;AAED,iFAAiF;AACjF,MAAM,WAAW,wBAAwB;IACvC,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AASD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,wBAAwB,GAAG,SAAS,EAC9C,SAAS,EAAE,gBAAgB,GAAG,SAAS,GACtC;IAAE,QAAQ,EAAE,gBAAgB,CAAC;IAAC,SAAS,EAAE,gBAAgB,CAAA;CAAE,CAuC7D;AA4KD,YAAY,EACV,eAAe,EACf,qBAAqB,GACtB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,YAAY,EACZ,qBAAqB,EACrB,0BAA0B,EAC1B,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,CAAC;AA+DtD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,gBAAgB,GACtB,gBAAgB,EAAE,EAAE,CAoFtB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,GAAG,IAAI,CAa1E;AAED,0EAA0E;AAC1E,MAAM,MAAM,qBAAqB,GAAG,CAClC,KAAK,EAAE,gBAAgB,EACvB,IAAI,EAAE,YAAY,KACf,OAAO,CAAC,qBAAqB,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAAC;AAE1D,MAAM,WAAW,2BAA2B;IAC1C,kFAAkF;IAClF,cAAc,EAAE,YAAY,EAAE,CAAC;IAC/B,aAAa,EAAE,aAAa,CAAC;IAC7B,mFAAmF;IACnF,YAAY,EAAE,qBAAqB,CAAC;IACpC;;;;OAIG;IACH,0BAA0B,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,8EAA8E;IAC9E,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,MAAM,CAAC;IACrD,8EAA8E;IAC9E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;;OAKG;IACH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,MAAM,EAAE,CAAC;IACtD;;;;;;;OAOG;IACH,gBAAgB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,2EAA2E;IAC3E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,sBAAsB,CAAC;IACrC;;;;OAIG;IACH,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE;QACnB,MAAM,EAAE,MAAM,CAAC;QACf,eAAe,EAAE,MAAM,CAAC;QACxB,mBAAmB,EAAE,MAAM,CAAC;KAC7B,KAAK,IAAI,CAAC;IACX;;;;;;OAMG;IACH,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,KAAK,IAAI,CAAC;IAChF;;;;;;;OAOG;IACH,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACvE;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,KAAK,IAAI,CAAC;IACjF;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,KAAK,IAAI,CAAC;CAClG;AAED,MAAM,WAAW,0BAA0B;IACzC,kDAAkD;IAClD,MAAM,EAAE,KAAK,CAAC;QACZ,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,OAAO,EAAE,qBAAqB,CAAC;YAAE,QAAQ,EAAE,MAAM,CAAA;SAAE,CAAC,EAAE,CAAC;KACxD,CAAC,CAAC;IACH,4FAA4F;IAC5F,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,yBAAyB,CAAC;CACtC;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,gBAAgB,EAAE,EAAE,EAC5B,OAAO,EAAE,2BAA2B,GACnC,OAAO,CAAC,0BAA0B,CAAC,CAwFrC;AAyBD,0GAA0G;AAC1G,MAAM,MAAM,0BAA0B,GAAG,CAAC,IAAI,EAAE;IAC9C,KAAK,EAAE,gBAAgB,CAAC;IACxB,IAAI,EAAE,YAAY,CAAC;IACnB,8DAA8D;IAC9D,YAAY,EAAE,MAAM,CAAC;IACrB,kEAAkE;IAClE,UAAU,EAAE,MAAM,CAAC;CACpB,KAAK,OAAO,CAAC,qBAAqB,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAAC;AAE3D,MAAM,WAAW,oCAAoC;IACnD,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,aAAa,GAAG,IAAI,CAAC;IACpC;;;;;OAKG;IACH,YAAY,CAAC,EAAE,0BAA0B,CAAC;IAC1C,qFAAqF;IACrF,0BAA0B,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,uEAAuE;IACvE,WAAW,CAAC,EAAE;QACZ,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAClC,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACjC,UAAU,CAAC,EAAE,oBAAoB,EAAE,GAAG,IAAI,CAAC;QAC3C,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KAC7B,CAAC;CACH;AAED,MAAM,WAAW,mCAAmC;IAClD,0DAA0D;IAC1D,KAAK,EAAE,KAAK,CAAC;QACX,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,qBAAqB,CAAC;YAAE,QAAQ,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC,SAAS,CAAC,CAAC;QAChE,aAAa,EAAE,OAAO,CAAC;QACvB,MAAM,EAAE,OAAO,CAAC;KACjB,CAAC,CAAC;IACH,uDAAuD;IACvD,QAAQ,EAAE,MAAM,CAAC;IACjB,0EAA0E;IAC1E,YAAY,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC;CAC1C;AAyCD;;;;;;;;;;;;GAYG;AACH,wBAAsB,6BAA6B,CACjD,OAAO,EAAE,oCAAoC,GAC5C,OAAO,CAAC,mCAAmC,GAAG,IAAI,CAAC,CAiSrD;AAUD,4EAA4E;AAC5E,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,KAAK,CAAC;QACX,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,qBAAqB,CAAC;YAAE,QAAQ,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC,SAAS,CAAC,CAAC;QAChE,aAAa,EAAE,OAAO,CAAC;QACvB,MAAM,EAAE,OAAO,CAAC;KACjB,CAAC,CAAC;CACJ;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,yBAAyB,CAAC,MAAM,EAAE;IACtD,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,aAAa,GAAG,IAAI,CAAC;IACpC,SAAS,EAAE,cAAc,EAAE,CAAC;IAC5B,IAAI,EAAE,uBAAuB,CAAC;IAC9B,WAAW,EAAE,sBAAsB,CAAC;IACpC;;;;;;;;;OASG;IACH,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB;;;;OAIG;IACH,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAClC;;;;;OAKG;IACH,cAAc,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;CAClD,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAyEpC;AAaD,OAAO,EACL,oBAAoB,EACpB,0BAA0B,EAC1B,qBAAqB,EACrB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,gBAAgB,CAAC;AACxB,YAAY,EACV,oBAAoB,EACpB,sBAAsB,EACtB,wBAAwB,EACxB,UAAU,EACV,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,gBAAgB,CAAC;AA6gCxB;;;;;;;;;;GAUG;AACH,wBAAsB,+BAA+B,CACnD,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,gBAAgB,GAAG,IAAI,GAC7B,OAAO,CAAC,sBAAsB,CAAC,CAEjC;AA4mDD,wBAAsB,cAAc,CAClC,OAAO,GAAE,eAAe,GAAG,MAAW,GACrC,OAAO,CAAC,eAAe,CAAC,CAyC1B;AA8OD,uFAAuF;AACvF,eAAO,MAAM,8BAA8B,+BAA+B,CAAC;AAC3E,eAAO,MAAM,oCAAoC,kDACA,CAAC;AAElD,MAAM,WAAW,6BAA6B;IAC5C,cAAc,EAAE,OAAO,oCAAoC,CAAC;IAC5D,6EAA6E;IAC7E,WAAW,EAAE,iBAAiB,CAAC;IAC/B;;;;OAIG;IACH,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;GAOG;AACH,wBAAsB,kCAAkC,CACtD,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,gBAAgB,GAAG,SAAS,GACvC,OAAO,CAAC,6BAA6B,GAAG,IAAI,CAAC,CA6B/C"}
|
|
@@ -3,7 +3,7 @@ import { existsSync, statSync } from "node:fs";
|
|
|
3
3
|
import { mkdir, readFile, rename } from "node:fs/promises";
|
|
4
4
|
import { dirname, join, resolve } from "node:path";
|
|
5
5
|
import { StateStore } from "../state/store.js";
|
|
6
|
-
import { readConfirmedDispatchPolicy, resolveDispatchExclusion, readOptionalJsonFile, readValidatedRepoSessionIntent, stagedAndUntracked, writeJsonFile, writeTextFile, buildAuditDeliverablePair, formatValidationIssues, isRecord, withFsRetry, RunLogger, DISPATCH_PROMPT_HANDOFF_NOTE, renderHostScratchNote, hostScratchDir, renderQuotaCoverageNudge, renderTokenBudgetView, coerceJsonObjectArg, driveRolling, resolveLedgerBudgets, setQuotaStateDir, detectHostDispatchWall, admissionBlockedOnBudget, reconcileAdmissionLeasesFromQuotaFile, buildQuotaPausedTerminal, interpretFreeFormIntent, advance, decideFrictionTriage, buildFrictionTriageBlock, planHybridDispatch, readSettledPools, addSettledPool, sourceByPoolId, classifyProvider, selectDispatchDriver, renderDispatchDriverInstruction, HostSessionQuotaSource, buildProviderModelKey, captureStepBoundaryFriction, captureCostDriftFriction, captureCreditExhaustionFriction, captureQuotaUnclassifiedFriction, captureModelUnavailableFriction, capturePacketTooLargeFriction, LENSES, SEVERITIES, resolveHostProviderName, resolveConversationHostProvider, resolveHostDispatchCapability as sharedResolveHostDispatchCapability, resolveAutonomousMode, resolveRollingEngineFlag, shouldDemotePrimaryInProcess, DEFAULT_CONTEXT_TOKENS } from "audit-tools/shared";
|
|
6
|
+
import { readConfirmedDispatchPolicy, resolveDispatchExclusion, readOptionalJsonFile, readValidatedRepoSessionIntent, stagedAndUntracked, writeJsonFile, writeTextFile, buildAuditDeliverablePair, formatValidationIssues, isRecord, withFsRetry, RunLogger, DISPATCH_PROMPT_HANDOFF_NOTE, renderHostScratchNote, hostScratchDir, renderQuotaCoverageNudge, renderTokenBudgetView, coerceJsonObjectArg, driveRolling, resolveLedgerBudgets, setQuotaStateDir, detectHostDispatchWall, admissionBlockedOnBudget, reconcileAdmissionLeasesFromQuotaFile, buildQuotaPausedTerminal, interpretFreeFormIntent, advance, decideFrictionTriage, buildFrictionTriageBlock, planHybridDispatch, readSettledPools, addSettledPool, isPoolSettlingOutcome, isInProcessWorkerProvider, isHeadlessPrimaryProvider, sourceByPoolId, classifyProvider, selectDispatchDriver, renderDispatchDriverInstruction, HostSessionQuotaSource, buildProviderModelKey, captureStepBoundaryFriction, captureCostDriftFriction, captureCreditExhaustionFriction, captureQuotaUnclassifiedFriction, captureModelUnavailableFriction, capturePacketTooLargeFriction, LENSES, SEVERITIES, resolveHostProviderName, resolveConversationHostProvider, resolveHostDispatchCapability as sharedResolveHostDispatchCapability, resolveAutonomousMode, resolveRollingEngineFlag, shouldDemotePrimaryInProcess, DEFAULT_CONTEXT_TOKENS } from "audit-tools/shared";
|
|
7
7
|
import { readRemediationAccessMemory, computeBlockContinuityScores } from "../state/accessMemory.js";
|
|
8
8
|
import { applyPlanPipeline, buildCoverageLedger } from "../phases/plan.js";
|
|
9
9
|
import { groundExtractedFindings } from "../phases/grounding.js";
|
|
@@ -541,41 +541,22 @@ export async function driveRollingDispatch(levels, options) {
|
|
|
541
541
|
};
|
|
542
542
|
}
|
|
543
543
|
/**
|
|
544
|
-
*
|
|
545
|
-
*
|
|
546
|
-
*
|
|
547
|
-
* host (claude-code) and IDE-bound
|
|
548
|
-
*
|
|
549
|
-
* headless invocation. "auto" is intentionally absent — auto-resolution stays on the
|
|
550
|
-
* conversation host-subagent default, so the in-process driver is opt-in via an
|
|
551
|
-
* EXPLICIT backend provider in session config. When one is set, it takes precedence
|
|
552
|
-
* over the host-subagent driver: an operator who configured a backend (e.g. a NIM
|
|
553
|
-
* pool for headless autonomy) wants it to do the implement work, not the host.
|
|
544
|
+
* Whether session config names an EXPLICIT backend the orchestrator self-drives as
|
|
545
|
+
* the per-node implement worker — the shared `isHeadlessPrimaryProvider` predicate
|
|
546
|
+
* (H3), remediate policy: command-shaped primaries allowed (implement nodes carry
|
|
547
|
+
* per-node worker commands). The conversation host (claude-code) and IDE-bound
|
|
548
|
+
* providers stay excluded; "auto" stays on the conversation host-subagent default.
|
|
554
549
|
*/
|
|
555
|
-
const IN_PROCESS_DISPATCH_PROVIDERS = new Set([
|
|
556
|
-
"openai-compatible",
|
|
557
|
-
"codex",
|
|
558
|
-
"opencode",
|
|
559
|
-
"subprocess-template",
|
|
560
|
-
"worker-command",
|
|
561
|
-
"agy",
|
|
562
|
-
// The proxied isolated Claude-harness worker (commit 3b/3c) — headless in-process
|
|
563
|
-
// launch from its claude-worker source (mirrors audit's IN_PROCESS_AUDIT_PROVIDERS;
|
|
564
|
-
// both draws must classify the new worker kind or its pools confirm but never route).
|
|
565
|
-
"claude-worker",
|
|
566
|
-
]);
|
|
567
550
|
function resolvesToInProcessDispatchProvider(sessionConfig) {
|
|
568
|
-
|
|
569
|
-
return provider !== undefined && IN_PROCESS_DISPATCH_PROVIDERS.has(provider);
|
|
551
|
+
return isHeadlessPrimaryProvider(sessionConfig?.provider, { commandWorkers: true });
|
|
570
552
|
}
|
|
571
553
|
/**
|
|
572
554
|
* Whether a confirmed pool is one the orchestrator launches IN-PROCESS this cycle
|
|
573
|
-
* (vs. the conversation host's subagent pool)
|
|
574
|
-
*
|
|
575
|
-
* `resolvesToInProcessDispatchProvider` uses.
|
|
555
|
+
* (vs. the conversation host's subagent pool) — the shared
|
|
556
|
+
* `isInProcessWorkerProvider` predicate (H3), same remediate policy.
|
|
576
557
|
*/
|
|
577
558
|
function isInProcessPool(pool) {
|
|
578
|
-
return
|
|
559
|
+
return isInProcessWorkerProvider(pool.providerName, { commandWorkers: true });
|
|
579
560
|
}
|
|
580
561
|
/**
|
|
581
562
|
* Release a node's shared claim on a terminal accept (token-checked through the
|
|
@@ -1407,12 +1388,16 @@ async function buildImplementDispatchStep(ctx) {
|
|
|
1407
1388
|
// still surfaces as a quota_escalation friction (below), but without the
|
|
1408
1389
|
// verbatim text. Threading verbatim capture into executeInProcessPartition is
|
|
1409
1390
|
// a documented follow-up (affects credit_exhausted identically — not new to A2b).
|
|
1391
|
+
// `packet_too_large` is deliberately NOT a settle trigger (unified-routing
|
|
1392
|
+
// step D): a 413 is a per-(node,pool) sizing fact — one oversized node must
|
|
1393
|
+
// never kill the pool for every other node; settling it would collapse
|
|
1394
|
+
// capacity the run still has. NOTE: this frontier is sized with a FLAT
|
|
1395
|
+
// per-node estimate (HYBRID_NODE_TOKEN_ESTIMATE), so the claim-time fit gate
|
|
1396
|
+
// cannot pre-skip a genuinely-oversized node — a chronic (node,pool) 413 re-
|
|
1397
|
+
// offers each cycle, bounded by item-level triage, and is surfaced as
|
|
1398
|
+
// friction below (per-node real estimates are the step-G follow-up).
|
|
1410
1399
|
const settledOutcomeBlocks = new Set(inProcessOutcome.nodes
|
|
1411
|
-
.filter((n) => n.outcome
|
|
1412
|
-
n.outcome === "credit_exhausted" ||
|
|
1413
|
-
n.outcome === "model_unavailable" ||
|
|
1414
|
-
n.outcome === "packet_too_large" ||
|
|
1415
|
-
n.outcome === "quota_unclassified")
|
|
1400
|
+
.filter((n) => isPoolSettlingOutcome(n.outcome))
|
|
1416
1401
|
.map((n) => n.block_id));
|
|
1417
1402
|
const exhaustedPools = new Set(partition.inProcess.filter((a) => settledOutcomeBlocks.has(a.nodeId)).map((a) => a.poolId));
|
|
1418
1403
|
for (const poolId of exhaustedPools) {
|
|
@@ -1426,12 +1411,29 @@ async function buildImplementDispatchStep(ctx) {
|
|
|
1426
1411
|
void captureStepBoundaryFriction(artifactsDir, runId, {
|
|
1427
1412
|
eventType: "quota_escalation",
|
|
1428
1413
|
discriminator: blockId,
|
|
1429
|
-
note: "A-8 hybrid in-process node rate-limited / credit-exhausted / model-unavailable /
|
|
1414
|
+
note: "A-8 hybrid in-process node rate-limited / credit-exhausted / model-unavailable / quota-unclassified; its backend pool was settled for this run.",
|
|
1430
1415
|
severity: "high",
|
|
1431
1416
|
category: "trap",
|
|
1432
1417
|
area: "dispatch/quota",
|
|
1433
1418
|
}, "remediate-code");
|
|
1434
1419
|
}
|
|
1420
|
+
// A 413 no longer settles its pool (step D), but it must stay OBSERVABLE —
|
|
1421
|
+
// this direct partition never invokes the rolling engine's onPacketTooLarge
|
|
1422
|
+
// hook, so without this record a hybrid 413 would vanish entirely (D+E
|
|
1423
|
+
// review F4). Same dedupe chokepoint; medium severity (a sizing fact to
|
|
1424
|
+
// reconcile at partition time, not a dead pool).
|
|
1425
|
+
for (const node of inProcessOutcome.nodes) {
|
|
1426
|
+
if (node.outcome !== "packet_too_large")
|
|
1427
|
+
continue;
|
|
1428
|
+
void captureStepBoundaryFriction(artifactsDir, runId, {
|
|
1429
|
+
eventType: "quota_escalation",
|
|
1430
|
+
discriminator: `packet-too-large:${node.block_id}`,
|
|
1431
|
+
note: "A-8 hybrid in-process node hit 413 packet-too-large on its assigned pool; the pool was NOT settled (per-node sizing fact) — reconcile node sizing or route the node to a larger pool.",
|
|
1432
|
+
severity: "medium",
|
|
1433
|
+
category: "trap",
|
|
1434
|
+
area: "dispatch/quota",
|
|
1435
|
+
}, "remediate-code");
|
|
1436
|
+
}
|
|
1435
1437
|
// The backend carried the whole batch (or every host node was contested by a
|
|
1436
1438
|
// peer driver) → nothing for the host this cycle; merge what landed + transition.
|
|
1437
1439
|
if (partition.host.length === 0) {
|
|
@@ -1627,6 +1629,9 @@ Then run:
|
|
|
1627
1629
|
grantedCount: implQuota?.admission?.granted_packet_ids?.length ?? 0,
|
|
1628
1630
|
cooldownUntil: implQuota?.cooldown_until ?? null,
|
|
1629
1631
|
bindingWindow: implBindingWindow,
|
|
1632
|
+
// Step E parity: classify the zero-grant cause so the quota_paused terminal's
|
|
1633
|
+
// reset semantics stay honest (a no_capable_pool wall has no reset to wait for).
|
|
1634
|
+
explains: implQuota?.admission?.explains ?? [],
|
|
1630
1635
|
now: Date.now(),
|
|
1631
1636
|
});
|
|
1632
1637
|
if (implWall.atWall) {
|
|
@@ -1638,7 +1643,7 @@ Then run:
|
|
|
1638
1643
|
.filter((id) => typeof id === "string");
|
|
1639
1644
|
const paused = await store.loadState();
|
|
1640
1645
|
if (paused) {
|
|
1641
|
-
paused.partial_completion_terminal = buildQuotaPausedTerminal(strandedIds, implWall.earliestResetAt);
|
|
1646
|
+
paused.partial_completion_terminal = buildQuotaPausedTerminal(strandedIds, implWall.earliestResetAt, implWall.emptyGrantCause);
|
|
1642
1647
|
await store.saveState(paused);
|
|
1643
1648
|
}
|
|
1644
1649
|
return { kind: "transition", state: paused };
|
|
@@ -1701,8 +1706,34 @@ Then run:
|
|
|
1701
1706
|
* clean. Emitted (not blocked) so the run is resumable, never a failure.
|
|
1702
1707
|
*/
|
|
1703
1708
|
async function buildQuotaPausedStep(params) {
|
|
1704
|
-
const { root, artifactsDir, runId, strandedIds, resetAt } = params;
|
|
1709
|
+
const { root, artifactsDir, runId, strandedIds, resetAt, emptyGrantCause } = params;
|
|
1705
1710
|
const nextCommand = loaderCommand("next-step");
|
|
1711
|
+
// Honest pause (step E): a no_capable_pool zero-grant is a structural fit
|
|
1712
|
+
// mismatch — telling the operator to wait for a reset that will never clear it
|
|
1713
|
+
// would strand the run indefinitely (D+E review F2).
|
|
1714
|
+
if (emptyGrantCause === "no_capable_pool") {
|
|
1715
|
+
return writeCurrentStep({
|
|
1716
|
+
stepKind: "quota_paused",
|
|
1717
|
+
status: "ready",
|
|
1718
|
+
runId,
|
|
1719
|
+
repoRoot: root,
|
|
1720
|
+
artifactsDir,
|
|
1721
|
+
prompt: `
|
|
1722
|
+
# Remediation paused — no available pool fits the work
|
|
1723
|
+
|
|
1724
|
+
${strandedIds.length} node(s) could not be granted because they exceed the context
|
|
1725
|
+
window (or capability) of every pool currently available — a fit mismatch, NOT a
|
|
1726
|
+
quota wall, so waiting for a reset will not clear it. The nodes remain PENDING.
|
|
1727
|
+
|
|
1728
|
+
Options: free a larger pool (un-exclude one at the provider gate, or declare one),
|
|
1729
|
+
or shrink the oversized nodes' scope; then run:
|
|
1730
|
+
|
|
1731
|
+
\`${nextCommand}\`
|
|
1732
|
+
`,
|
|
1733
|
+
allowedCommands: [nextCommand],
|
|
1734
|
+
stopCondition: "No available pool fits the stranded nodes — free a larger pool or shrink the work, then re-run next-step.",
|
|
1735
|
+
});
|
|
1736
|
+
}
|
|
1706
1737
|
const resetLine = resetAt
|
|
1707
1738
|
? `The earliest provider reset is \`${resetAt}\`. Wait until then, then run:`
|
|
1708
1739
|
: `Wait for the provider session limit to reset, then run:`;
|
|
@@ -3692,6 +3723,7 @@ function buildMainObligations(ctx) {
|
|
|
3692
3723
|
// the resuming step starts fresh; the pending nodes are the durable signal.
|
|
3693
3724
|
if (terminal.reason === "quota_paused") {
|
|
3694
3725
|
const resetAt = terminal.earliest_reset_at ?? null;
|
|
3726
|
+
const emptyGrantCause = terminal.empty_grant_cause ?? null;
|
|
3695
3727
|
delete s.partial_completion_terminal;
|
|
3696
3728
|
await store.saveState(s);
|
|
3697
3729
|
return {
|
|
@@ -3702,6 +3734,7 @@ function buildMainObligations(ctx) {
|
|
|
3702
3734
|
runId: stateRunId(s),
|
|
3703
3735
|
strandedIds: terminal.stranded_ids ?? [],
|
|
3704
3736
|
resetAt,
|
|
3737
|
+
emptyGrantCause,
|
|
3705
3738
|
}),
|
|
3706
3739
|
};
|
|
3707
3740
|
}
|