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

@@ -140,8 +140,10 @@ async function runProductProofSamples(artifact, projectRoot, samples) {
function summarizeManagedMilestone(reports, cold, milestone) {
return summarizeMeasurements(reports.flatMap(({ extension }) => (
extension.managedWorkerMilestones
.filter((event) => event.cold === cold && event.milestone === milestone)
extension.managedTurns
.filter((turn) => turn.cold === cold)
.flatMap((turn) => turn.milestones)
.filter((event) => event.milestone === milestone)
.map(({ durationMs }) => durationMs)
)));
}
@@ -180,32 +182,29 @@ export async function runPiReleasePerformance(options) {
options.projectRoot,
options.samples,
);
const providerMetric = (temperature, field) => summarizeMeasurements(
providerContracts.protocols.flatMap(
({ qualification }) => qualification[temperature][field],
),
);
const managedMilestones = {
definition: 'Actual createPiManagedWorkerOpener execution from final app.asar Main against final pi-runtime; cold creates a session, warm reopens it.',
definition: 'Each sample is one Main-owned correlated final-ASAR turn against the final pi-runtime; cold creates a session and invokes a real packaged subagent, warm reopens the same session. No milestone is joined from an external probe.',
cold: {
workerQueueWaitMs: summarizeManagedMilestone(productProofs, true, 'worker.queue_wait'),
resourcesReadyMs: summarizeManagedMilestone(productProofs, true, 'resources.ready'),
workerSpawnMs: summarizeManagedMilestone(productProofs, true, 'worker.spawn'),
rpcReadyMs: summarizeManagedMilestone(productProofs, true, 'rpc.ready'),
sessionOpenMs: summarizeManagedMilestone(productProofs, true, 'session.open'),
promptAcceptedMs: providerMetric('cold', 'promptAcceptedSamplesMs'),
agentStartMs: providerMetric('cold', 'agentStartSamplesMs'),
providerFirstEventMs: providerMetric('cold', 'providerFirstEventSamplesMs'),
agentSettledMs: providerMetric('cold', 'agentSettledSamplesMs'),
promptAcceptedMs: summarizeManagedMilestone(productProofs, true, 'prompt.accepted'),
agentStartMs: summarizeManagedMilestone(productProofs, true, 'agent.start'),
providerFirstEventMs: summarizeManagedMilestone(productProofs, true, 'provider.first_event'),
agentSettledMs: summarizeManagedMilestone(productProofs, true, 'agent.settled'),
},
warm: {
workerQueueWaitMs: summarizeManagedMilestone(productProofs, false, 'worker.queue_wait'),
resourcesReadyMs: summarizeManagedMilestone(productProofs, false, 'resources.ready'),
workerSpawnMs: summarizeManagedMilestone(productProofs, false, 'worker.spawn'),
rpcReadyMs: summarizeManagedMilestone(productProofs, false, 'rpc.ready'),
sessionOpenMs: summarizeManagedMilestone(productProofs, false, 'session.open'),
promptAcceptedMs: providerMetric('warm', 'promptAcceptedSamplesMs'),
agentStartMs: providerMetric('warm', 'agentStartSamplesMs'),
providerFirstEventMs: providerMetric('warm', 'providerFirstEventSamplesMs'),
agentSettledMs: providerMetric('warm', 'agentSettledSamplesMs'),
promptAcceptedMs: summarizeManagedMilestone(productProofs, false, 'prompt.accepted'),
agentStartMs: summarizeManagedMilestone(productProofs, false, 'agent.start'),
providerFirstEventMs: summarizeManagedMilestone(productProofs, false, 'provider.first_event'),
agentSettledMs: summarizeManagedMilestone(productProofs, false, 'agent.settled'),
},
};
const pressureUiInteractiveMs = summarizeMeasurements(
@@ -230,7 +229,7 @@ export async function runPiReleasePerformance(options) {
const git = await gitEvidence(options.projectRoot);
const scenarios = [
{ id: 1, name: 'fresh userData metadata and Composer', evidence: ['metadata fragments', 'Electron Composer samples'], result: 'pass' },
{ id: 2, name: 'first prompt milestone split', evidence: ['final-ASAR resources.ready/worker.spawn/rpc.ready/session.open', 'separate cold prompt.accepted/agent.start/provider.first_event/agent.settled', 'Renderer commit'], result: 'pass' },
{ id: 2, name: 'first prompt milestone split', evidence: ['single correlated final-ASAR worker.queue_wait/resources.ready/worker.spawn/rpc.ready/session.open/prompt.accepted/agent.start/provider.first_event/agent.settled timeline per turn', 'Renderer commit'], result: 'pass' },
{ id: 3, name: 'warm Conversation restore', evidence: ['packaged session stop/reopen/get_entries', 'warm rpc.ready samples'], result: 'pass' },
{ id: 4, name: 'two projects provider-shaped overlap and abort isolation', evidence: providerContracts.protocols.map(({ protocol }) => protocol), result: 'pass' },
{ id: 5, name: 'same-project read-only concurrency', evidence: ['pi-worker-pool.test.ts', 'pi-subagent.test.ts'], result: 'pass' },
@@ -302,8 +301,11 @@ export async function runPiReleasePerformance(options) {
budgets,
result: 'pass',
crossPlatformReleaseReady: false,
releaseBlockers: [
'macOS x64 and macOS arm64 PI-150 performance/final-artifact validation was skipped by explicit user direction',
releaseBlockers: platform() === 'linux' && !release().toLowerCase().includes('microsoft')
? []
: ['Native non-WSL Linux desktop/compositor PI-150 evidence is not established by this report'],
deferredToPi160: [
'macOS x64 and macOS arm64 final release validation was skipped by explicit user direction and remains Not Pass',
],
};
if (options.reportPath) {