feat(laboratory): publish repeated M48S load envelope
This commit is contained in:
@@ -45,7 +45,7 @@ function resultPayload() {
|
||||
selected: false,
|
||||
...overrides,
|
||||
});
|
||||
const loadScenario = (id, loadPurpose, rate, delivered, superseded, targetPassed) => ({
|
||||
const loadScenario = (id, loadPurpose, rate, delivered, superseded) => ({
|
||||
id,
|
||||
load_purpose: loadPurpose,
|
||||
requested_source_rate_hz: rate,
|
||||
@@ -57,8 +57,12 @@ function resultPayload() {
|
||||
world_state_completion_age_p95_ms: 75,
|
||||
world_state_completion_age_p99_ms: 100,
|
||||
world_state_completion_age_maximum_ms: 400,
|
||||
decode_p95_ms: 12,
|
||||
decode_maximum_ms: 3200,
|
||||
hot_loop_decode_p95_ms: 14,
|
||||
hot_loop_decode_maximum_ms: 42,
|
||||
preadmission_decode_maximum_ms: 3633,
|
||||
source_prefetch_preparation_maximum_ms: 4353,
|
||||
source_pacing_lateness_p95_ms: 1.7,
|
||||
source_pacing_lateness_maximum_ms: 11,
|
||||
detector_p95_ms: 40,
|
||||
detector_maximum_ms: 370,
|
||||
gpu_utilization_mean_percent: 35,
|
||||
@@ -68,14 +72,31 @@ function resultPayload() {
|
||||
queue_high_watermarks: { detector: 2, geometry: 2, temporal: 2, rolling: 2, threat: 2 },
|
||||
queue_capacity: 2,
|
||||
additional_inference_passes: 0,
|
||||
repeat_count: 3,
|
||||
all_repetitions_passed: true,
|
||||
integrity_gate_passed: true,
|
||||
operating_target_gate_passed: targetPassed,
|
||||
operating_target_gate_passed: true,
|
||||
thresholds: {
|
||||
minimum_delivery_ratio: rate === 10 ? 0.999 : rate === 12 ? 0.995 : 0.95,
|
||||
minimum_effective_world_state_fps: rate * 0.95,
|
||||
maximum_world_state_completion_p95_ms: rate === 10 ? 125 : rate === 12 ? 150 : 175,
|
||||
},
|
||||
frame_evidence_sha256: "8".repeat(64),
|
||||
repetitions: [1, 2, 3].map((repetition) => ({
|
||||
run_id: `m48s-load-prefetch-v1-${id}-a${repetition}`,
|
||||
repetition,
|
||||
delivered_world_states: delivered,
|
||||
superseded_frames: superseded,
|
||||
delivery_ratio: delivered / 4489,
|
||||
effective_world_state_fps: rate * 0.975,
|
||||
world_state_completion_age_p95_ms: 75,
|
||||
hot_loop_decode_p95_ms: 14,
|
||||
hot_loop_decode_maximum_ms: 42,
|
||||
preadmission_decode_maximum_ms: 3633,
|
||||
source_pacing_lateness_maximum_ms: 11,
|
||||
operating_target_gate_passed: true,
|
||||
result_sha256: "7".repeat(64),
|
||||
frame_evidence_sha256: "8".repeat(64),
|
||||
})),
|
||||
});
|
||||
return {
|
||||
schema_version: "missioncore.m48s-fixed-class-detector-result-view/v1",
|
||||
@@ -205,17 +226,18 @@ function resultPayload() {
|
||||
},
|
||||
},
|
||||
load_envelope: {
|
||||
schema_version: "missioncore.m48s-load-envelope-comparison/v1",
|
||||
production_rate_repeatability_passed: false,
|
||||
schema_version: "missioncore.m48s-load-envelope-comparison/v2",
|
||||
repeat_count_per_rate: 3,
|
||||
production_rate_repeatability_passed: true,
|
||||
reserve_12_fps_passed: true,
|
||||
limit_15_fps_passed: true,
|
||||
load_envelope_accepted: false,
|
||||
load_envelope_accepted: true,
|
||||
compute_capacity_at_least_fps: 15,
|
||||
bottleneck_interpretation: "rare-source-decode-or-scheduling-tail-not-steady-gpu-saturation",
|
||||
bottleneck_interpretation: "cold-video-decode-isolated-before-admission-no-steady-gpu-saturation",
|
||||
scenarios: [
|
||||
loadScenario("production-10fps", "production-rate", 10, 4483, 6, false),
|
||||
loadScenario("reserve-12fps", "reserve-gate", 12, 4477, 12, true),
|
||||
loadScenario("limit-15fps", "limit-discovery", 15, 4488, 1, true),
|
||||
loadScenario("production-10fps", "production-rate", 10, 4489, 0),
|
||||
loadScenario("reserve-12fps", "reserve-gate", 12, 4488, 1),
|
||||
loadScenario("limit-15fps", "limit-discovery", 15, 4488, 1),
|
||||
],
|
||||
},
|
||||
},
|
||||
@@ -226,10 +248,10 @@ function resultPayload() {
|
||||
integrated_world_state_gate_passed: true,
|
||||
detector_replacement_authorized: false,
|
||||
load_envelope_evaluated: true,
|
||||
production_rate_repeatability_passed: false,
|
||||
production_rate_repeatability_passed: true,
|
||||
reserve_12_fps_passed: true,
|
||||
limit_15_fps_passed: true,
|
||||
load_envelope_accepted: false,
|
||||
load_envelope_accepted: true,
|
||||
production_accepted: false,
|
||||
},
|
||||
limitations: ["No independent semantic ground truth."],
|
||||
@@ -263,15 +285,68 @@ test("M4.8S result exposes complete graph load without production authority", as
|
||||
assert.equal(result.metrics.runtimeHardening.baseline.supersededFrames, 9);
|
||||
assert.equal(result.metrics.runtimeHardening.hardened.supersededFrames, 1);
|
||||
assert.equal(result.metrics.runtimeHardening.startup.prewarmed.worldStateMs, 60.516957);
|
||||
assert.equal(result.metrics.loadEnvelope.scenarios[0].operatingTargetGatePassed, false);
|
||||
assert.equal(result.metrics.loadEnvelope.scenarios[1].deliveredWorldStates, 4477);
|
||||
assert.equal(result.metrics.loadEnvelope.scenarios[0].operatingTargetGatePassed, true);
|
||||
assert.equal(result.metrics.loadEnvelope.scenarios[1].deliveredWorldStates, 4488);
|
||||
assert.equal(result.metrics.loadEnvelope.scenarios[2].repetitions.length, 3);
|
||||
assert.equal(result.metrics.loadEnvelope.scenarios[0].hotLoopDecodeP95Ms, 14);
|
||||
assert.equal(result.metrics.loadEnvelope.computeCapacityAtLeastFps, 15);
|
||||
assert.equal(result.decision.loadEnvelopeAccepted, false);
|
||||
assert.equal(result.decision.loadEnvelopeAccepted, true);
|
||||
assert.equal(result.decision.integratedWorldStateGatePassed, true);
|
||||
assert.equal(result.decision.productionAccepted, false);
|
||||
assert.equal(result.authority.navigationOrSafetyAccepted, false);
|
||||
});
|
||||
|
||||
test("M4.8S keeps the immutable v1 load-envelope result readable", async () => {
|
||||
const payload = resultPayload();
|
||||
payload.metrics.load_envelope = {
|
||||
schema_version: "missioncore.m48s-load-envelope-comparison/v1",
|
||||
production_rate_repeatability_passed: false,
|
||||
reserve_12_fps_passed: true,
|
||||
limit_15_fps_passed: true,
|
||||
load_envelope_accepted: false,
|
||||
compute_capacity_at_least_fps: 15,
|
||||
bottleneck_interpretation: "rare-source-decode-or-scheduling-tail-not-steady-gpu-saturation",
|
||||
scenarios: payload.metrics.load_envelope.scenarios.map((scenario, index) => ({
|
||||
id: scenario.id,
|
||||
load_purpose: scenario.load_purpose,
|
||||
requested_source_rate_hz: scenario.requested_source_rate_hz,
|
||||
source_frames_admitted: scenario.source_frames_admitted,
|
||||
delivered_world_states: index === 0 ? 4483 : scenario.delivered_world_states,
|
||||
superseded_frames: index === 0 ? 6 : scenario.superseded_frames,
|
||||
delivery_ratio: index === 0 ? 4483 / 4489 : scenario.delivery_ratio,
|
||||
effective_world_state_fps: scenario.effective_world_state_fps,
|
||||
world_state_completion_age_p95_ms: scenario.world_state_completion_age_p95_ms,
|
||||
world_state_completion_age_p99_ms: scenario.world_state_completion_age_p99_ms,
|
||||
world_state_completion_age_maximum_ms: scenario.world_state_completion_age_maximum_ms,
|
||||
decode_p95_ms: scenario.hot_loop_decode_p95_ms,
|
||||
decode_maximum_ms: 3200,
|
||||
detector_p95_ms: scenario.detector_p95_ms,
|
||||
detector_maximum_ms: scenario.detector_maximum_ms,
|
||||
gpu_utilization_mean_percent: scenario.gpu_utilization_mean_percent,
|
||||
gpu_utilization_maximum_percent: scenario.gpu_utilization_maximum_percent,
|
||||
gpu_memory_maximum_mib: scenario.gpu_memory_maximum_mib,
|
||||
process_peak_rss_mib: scenario.process_peak_rss_mib,
|
||||
queue_high_watermarks: scenario.queue_high_watermarks,
|
||||
queue_capacity: 2,
|
||||
additional_inference_passes: 0,
|
||||
integrity_gate_passed: true,
|
||||
operating_target_gate_passed: index !== 0,
|
||||
thresholds: scenario.thresholds,
|
||||
frame_evidence_sha256: "8".repeat(64),
|
||||
})),
|
||||
};
|
||||
payload.decision.production_rate_repeatability_passed = false;
|
||||
payload.decision.load_envelope_accepted = false;
|
||||
|
||||
const result = await fetchM48SFixedClassDetectorResult(resultId, {
|
||||
fetcher: async () => response(payload),
|
||||
});
|
||||
|
||||
assert.equal(result.metrics.loadEnvelope.repeatCountPerRate, 1);
|
||||
assert.equal(result.metrics.loadEnvelope.loadEnvelopeAccepted, false);
|
||||
assert.equal(result.metrics.loadEnvelope.scenarios[0].operatingTargetGatePassed, false);
|
||||
});
|
||||
|
||||
test("M4.8S frame binds exact camera endpoint and risk-only boxes", async () => {
|
||||
const frame = await fetchM48SFixedClassDetectorFrame(resultId, "000253", {
|
||||
fetcher: async () => response({
|
||||
|
||||
Reference in New Issue
Block a user