fix(pi): prove packaged workers end to end

This commit is contained in:
2026-08-24 16:51:13 +08:00
parent dc166a18cb
commit 2ff2e4af79
8 changed files with 825 additions and 493 deletions

View File

@@ -56,7 +56,11 @@ function assertActivePressure(pressure) {
const expected = {
parentWorkers: 4,
childWorkers: 4,
parentProcesses: 4,
childProcesses: 4,
liveProcesses: 8,
parentProviderRequests: 4,
childProviderRequests: 4,
processBudget: 8,
childPermits: 4,
dispatches: 4,
@@ -65,7 +69,11 @@ function assertActivePressure(pressure) {
const actual = {
parentWorkers: pressure?.parentWorkers,
childWorkers: pressure?.childWorkers,
parentProcesses: pressure?.parentProcessIds?.length,
childProcesses: pressure?.childProcessIds?.length,
liveProcesses: pressure?.liveProcessIds?.length,
parentProviderRequests: pressure?.providerRequests?.parent,
childProviderRequests: pressure?.providerRequests?.child,
processBudget: pressure?.processBudget?.active,
childPermits: pressure?.childPermits?.active,
dispatches: pressure?.dispatches?.active,
@@ -80,7 +88,11 @@ function assertReleasedPressure(pressure) {
const counts = [
pressure?.parentWorkers,
pressure?.childWorkers,
pressure?.parentProcessIds?.length,
pressure?.childProcessIds?.length,
pressure?.liveProcessIds?.length,
pressure?.providerRequests?.parent,
pressure?.providerRequests?.child,
pressure?.processBudget?.active,
pressure?.processBudget?.waiting,
pressure?.childPermits?.active,
@@ -147,10 +159,16 @@ export async function runPackagedProductProof(options) {
const extension = await evaluateProof(electronApplication, 'extension');
assertPackagedMain(extension);
if (extension.extension?.subagentStatus !== 'complete'
|| extension.extension?.childToolNames?.length !== 0
|| extension.extension?.childToolNames?.join(',') !== 'find,grep,ls,read'
|| !extension.extension?.parentToolNames?.includes('subagent')
|| extension.extension?.managedWorkerMilestones?.filter(({ cold }) => cold).length !== 4
|| extension.extension?.managedWorkerMilestones?.filter(({ cold }) => !cold).length !== 4) {
|| extension.extension?.parentProcessIds?.length < 2
|| extension.extension?.childProcessIds?.length !== 1
|| extension.extension?.providerRequests?.child !== 1
|| extension.extension?.managedTurns?.length !== 2
|| extension.extension.managedTurns.some(({ milestones }) => (
milestones.map(({ milestone }) => milestone).join(',')
!== 'worker.queue_wait,resources.ready,worker.spawn,rpc.ready,session.open,prompt.accepted,agent.start,provider.first_event,agent.settled'
))) {
throw new Error(`Final ASAR extension/subagent proof failed: ${JSON.stringify(extension.extension)}`);
}