feat(laboratory): compare M48S runtime hardening

This commit is contained in:
DCCONSTRUCTIONS
2026-08-25 19:38:11 +03:00
parent 84624ae3ea
commit 078b8421a6
8 changed files with 445 additions and 39 deletions
@@ -80,6 +80,31 @@ export interface M48SIntegratedWorldState {
failures: number;
}
export interface M48SRuntimeHardeningFullRun {
sourceFramesAdmitted: number;
deliveredWorldStates: number;
supersededFrames: number;
effectiveWorldStateFps: number;
worldStateCompletionAgeP95Ms: number;
worldStateCompletionAgeP99Ms: number;
worldStateCompletionAgeMaximumMs: number;
rollingMaximumMs: number;
geometryMaximumMs: number;
additionalInferencePasses: number;
}
export interface M48SRuntimeHardeningComparison {
baseline: M48SRuntimeHardeningFullRun;
hardened: M48SRuntimeHardeningFullRun;
startup: {
baseline: { detectorMs: number; worldStateMs: number };
prewarmed: { detectorMs: number; worldStateMs: number };
prewarmDurationMs: number;
prewarmInferencePasses: number;
validationFrames: number;
};
}
export interface M48SFixedClassDetectorResult {
resultId: string;
createdAtUtc: string;
@@ -118,6 +143,7 @@ export interface M48SFixedClassDetectorResult {
failures: number;
};
integratedWorldState: M48SIntegratedWorldState | null;
runtimeHardening: M48SRuntimeHardeningComparison | null;
};
decision: {
selectedCandidate: "rf-detr";
@@ -366,6 +392,71 @@ function integratedWorldStateValue(value: unknown): M48SIntegratedWorldState {
};
}
function runtimeHardeningFullRunValue(
value: unknown,
label: string,
): M48SRuntimeHardeningFullRun {
const run = objectValue(value, label);
return {
sourceFramesAdmitted: integerValue(run.source_frames_admitted, `${label}.source_frames_admitted`),
deliveredWorldStates: integerValue(run.delivered_world_states, `${label}.delivered_world_states`),
supersededFrames: integerValue(run.superseded_frames, `${label}.superseded_frames`),
effectiveWorldStateFps: numberValue(run.effective_world_state_fps, `${label}.effective_world_state_fps`),
worldStateCompletionAgeP95Ms: numberValue(run.world_state_completion_age_p95_ms, `${label}.world_state_completion_age_p95_ms`),
worldStateCompletionAgeP99Ms: numberValue(run.world_state_completion_age_p99_ms, `${label}.world_state_completion_age_p99_ms`),
worldStateCompletionAgeMaximumMs: numberValue(run.world_state_completion_age_maximum_ms, `${label}.world_state_completion_age_maximum_ms`),
rollingMaximumMs: numberValue(run.rolling_maximum_ms, `${label}.rolling_maximum_ms`),
geometryMaximumMs: numberValue(run.geometry_maximum_ms, `${label}.geometry_maximum_ms`),
additionalInferencePasses: integerValue(run.additional_inference_passes, `${label}.additional_inference_passes`),
};
}
function runtimeHardeningComparisonValue(value: unknown): M48SRuntimeHardeningComparison {
const comparison = objectValue(value, "M4.8S.metrics.runtime_hardening");
exact(
comparison.schema_version,
"missioncore.m48s-runtime-hardening-comparison/v1",
"M4.8S.metrics.runtime_hardening.schema_version",
);
const startup = objectValue(comparison.startup, "M4.8S.runtime_hardening.startup");
const startupFrame = (
candidate: unknown,
label: string,
): { detectorMs: number; worldStateMs: number } => {
const frame = objectValue(candidate, label);
return {
detectorMs: numberValue(frame.detector_ms, `${label}.detector_ms`),
worldStateMs: numberValue(frame.world_state_ms, `${label}.world_state_ms`),
};
};
return {
baseline: runtimeHardeningFullRunValue(
comparison.baseline,
"M4.8S.runtime_hardening.baseline",
),
hardened: runtimeHardeningFullRunValue(
comparison.hardened,
"M4.8S.runtime_hardening.hardened",
),
startup: {
baseline: startupFrame(startup.baseline, "M4.8S.runtime_hardening.startup.baseline"),
prewarmed: startupFrame(startup.prewarmed, "M4.8S.runtime_hardening.startup.prewarmed"),
prewarmDurationMs: numberValue(
startup.prewarm_duration_ms,
"M4.8S.runtime_hardening.startup.prewarm_duration_ms",
),
prewarmInferencePasses: integerValue(
startup.prewarm_inference_passes,
"M4.8S.runtime_hardening.startup.prewarm_inference_passes",
),
validationFrames: integerValue(
startup.validation_frames,
"M4.8S.runtime_hardening.startup.validation_frames",
),
},
};
}
function parseResult(value: unknown, resultId: string): M48SFixedClassDetectorResult {
const payload = objectValue(value, "M4.8S");
exact(
@@ -457,6 +548,9 @@ function parseResult(value: unknown, resultId: string): M48SFixedClassDetectorRe
integratedWorldState: integratedGate
? integratedWorldStateValue(metrics.integrated_world_state)
: null,
runtimeHardening: metrics.runtime_hardening === undefined
? null
: runtimeHardeningComparisonValue(metrics.runtime_hardening),
},
decision: {
selectedCandidate: "rf-detr",
@@ -21,7 +21,10 @@ export function M48SFixedClassDetectorResultView({
const selected = result.metrics.candidates.find((candidate) => candidate.selected);
const load = result.metrics.detectorLoad;
const integrated = result.metrics.integratedWorldState;
const status = integrated
const hardening = result.metrics.runtimeHardening;
const status = hardening
? `После hardening: ${hardening.hardened.deliveredWorldStates.toLocaleString("ru-RU")} из ${hardening.hardened.sourceFramesAdmitted.toLocaleString("ru-RU")} world states доставлены`
: integrated
? "Полный RF-DETR reference graph выдержал realtime shadow"
: "RF-DETR-L выдержал detector-only realtime shadow";
return (
@@ -29,7 +32,7 @@ export function M48SFixedClassDetectorResultView({
summary={(
<LaboratorySummary
title="M4.8S · fixed-class semantics риск-объектов"
description="Сравнение трёх готовых COCO-детекторов на точных кадрах RAVNOVES00, 30-минутная квалификация RF-DETR-L и полный source-paced прогон RF-DETR → geometry → temporal → motion → rolling map → threat на Worker 006. Статические препятствия остаются в геометрическом контуре; классы используются только там, где меняется ожидаемое поведение."
description="Сравнение трёх готовых COCO-детекторов на точных кадрах RAVNOVES00, 30-минутная квалификация RF-DETR-L и полный source-paced прогон RF-DETR → geometry → temporal → motion → rolling map → threat на Worker 006. Ниже отдельно показано, что именно изменилось после разгрузки realtime-контура и prewarm первого кадра."
status={status}
statusTone="success"
facts={[
@@ -41,7 +44,9 @@ export function M48SFixedClassDetectorResultView({
brief={{
question: "Можно ли заменить слабую class-семантику YOLOX готовой моделью, не потеряв realtime на предельном Worker с RTX 4090?",
approach: `YOLOX-S, D-FINE-S и RF-DETR-L сравнили на одинаковых ${result.source.evidenceFrameCount} raw-KB4 кадрах с порогом 0.50. RF-DETR-L отдельно квалифицировали ${decimal(load.durationSeconds / 60, 0)} минут, затем встроили в полный reference graph без дополнительного inference-прохода.`,
principalResult: integrated
principalResult: hardening
? `На одинаковых ${hardening.baseline.sourceFramesAdmitted.toLocaleString("ru-RU")} входных кадрах полный граф увеличил доставку с ${hardening.baseline.deliveredWorldStates.toLocaleString("ru-RU")} до ${hardening.hardened.deliveredWorldStates.toLocaleString("ru-RU")} world states, а число вытесненных кадров снизил с ${hardening.baseline.supersededFrames} до ${hardening.hardened.supersededFrames}. Отдельный ${hardening.startup.validationFrames.toLocaleString("ru-RU")}-кадровый прогон подтвердил prewarm до допуска источника.`
: integrated
? `Полный граф доставил ${integrated.deliveredWorldStates.toLocaleString("ru-RU")} world states при ${decimal(integrated.effectiveWorldStateFps, 3)} FPS и p95 ${decimal(integrated.worldStateCompletionAgeP95Ms, 3)} ms; ${integrated.supersededFrames} входных кадров штатно вытеснены latest-wins очередью.`
: `RF-DETR-L выбран из трёх кандидатов и обработал ${load.sourceFramesConsumed.toLocaleString("ru-RU")} кадров detector-only без замен и ошибок.`,
limitation: "Прогон доказывает runtime envelope, а не истинность классов, качество track identity, корректность risk policy или безопасность движения. Production authority и команды отключены.",
@@ -73,12 +78,23 @@ export function M48SFixedClassDetectorResultView({
)}
result={(
<LaboratoryResultSummary
title={integrated
title={hardening
? "Что сравнивать: один и тот же полный прогон до и после hardening"
: integrated
? "Что дал прогон: полный world-state graph проходит realtime envelope"
: "Что дал прогон: RF-DETR-L проходит detector-only realtime envelope"}
status={status}
statusTone="success"
metrics={integrated ? [
metrics={hardening ? [
{ label: "World-state FPS", value: `${decimal(hardening.baseline.effectiveWorldStateFps, 3)}${decimal(hardening.hardened.effectiveWorldStateFps, 3)}`, hint: "до → после · target ≥ 9.5 FPS" },
{ label: "Задержка p95", value: `${decimal(hardening.baseline.worldStateCompletionAgeP95Ms, 3)}${decimal(hardening.hardened.worldStateCompletionAgeP95Ms, 3)} ms`, hint: `p99 ${decimal(hardening.baseline.worldStateCompletionAgeP99Ms, 3)}${decimal(hardening.hardened.worldStateCompletionAgeP99Ms, 3)} ms` },
{ label: "Максимальная задержка", value: `${decimal(hardening.baseline.worldStateCompletionAgeMaximumMs, 3)}${decimal(hardening.hardened.worldStateCompletionAgeMaximumMs, 3)} ms`, hint: "полный прогон без prewarm" },
{ label: "Доставлено / вытеснено", value: `${hardening.baseline.deliveredWorldStates.toLocaleString("ru-RU")}/${hardening.baseline.supersededFrames}${hardening.hardened.deliveredWorldStates.toLocaleString("ru-RU")}/${hardening.hardened.supersededFrames}`, hint: `${hardening.hardened.sourceFramesAdmitted.toLocaleString("ru-RU")} одинаковых входных кадров` },
{ label: "Rolling max", value: `${decimal(hardening.baseline.rollingMaximumMs, 3)}${decimal(hardening.hardened.rollingMaximumMs, 3)} ms`, hint: "убран длинный стоп realtime-контура" },
{ label: "Geometry max", value: `${decimal(hardening.baseline.geometryMaximumMs, 3)}${decimal(hardening.hardened.geometryMaximumMs, 3)} ms`, hint: "тот же полный source-paced прогон" },
{ label: "Первый detector frame", value: `${decimal(hardening.startup.baseline.detectorMs, 3)}${decimal(hardening.startup.prewarmed.detectorMs, 3)} ms`, hint: `prewarm ${decimal(hardening.startup.prewarmDurationMs, 3)} ms до допуска source` },
{ label: "Первый world state", value: `${decimal(hardening.startup.baseline.worldStateMs, 3)}${decimal(hardening.startup.prewarmed.worldStateMs, 3)} ms`, hint: `${hardening.startup.validationFrames.toLocaleString("ru-RU")} кадров · ${hardening.startup.prewarmInferencePasses} warmup inference` },
] : integrated ? [
{ label: "Complete graph", value: `${decimal(integrated.effectiveWorldStateFps, 3)} FPS`, hint: "target ≥ 9.5 FPS · source-paced" },
{ label: "World-state age p95", value: `${decimal(integrated.worldStateCompletionAgeP95Ms, 3)} ms`, hint: `p99 ${decimal(integrated.worldStateCompletionAgeP99Ms, 3)} ms · target ≤ 175 ms` },
{ label: "Delivered / superseded", value: `${integrated.deliveredWorldStates.toLocaleString("ru-RU")} / ${integrated.supersededFrames}`, hint: `${integrated.failures} failures · queues ${Math.max(...Object.values(integrated.queueHighWatermarks))}/${integrated.queueCapacity}` },
@@ -90,11 +106,15 @@ export function M48SFixedClassDetectorResultView({
{ label: "GPU / VRAM peak", value: `${decimal(load.gpuUtilizationMaximumPercent, 0)}% / ${decimal(load.gpuMemoryMaximumMib / 1024)} GiB`, hint: `GPU mean ${decimal(load.gpuUtilizationMeanPercent)}% · queue ${load.queueMaximumDepth}/${load.queueCapacity}` },
]}
conclusion={{
proved: integrated
proved: hardening
? `На полном сравнительном прогоне с ${hardening.hardened.sourceFramesAdmitted.toLocaleString("ru-RU")} одинаковыми входными кадрами hardening сохранил realtime FPS, доставил на ${(hardening.hardened.deliveredWorldStates - hardening.baseline.deliveredWorldStates).toLocaleString("ru-RU")} world states больше и сократил вытеснения ${hardening.baseline.supersededFrames}${hardening.hardened.supersededFrames}. Максимальный стоп rolling stage уменьшился ${decimal(hardening.baseline.rollingMaximumMs, 3)}${decimal(hardening.hardened.rollingMaximumMs, 3)} ms. Отдельный prewarm-прогон снизил первый detector frame ${decimal(hardening.startup.baseline.detectorMs, 3)}${decimal(hardening.startup.prewarmed.detectorMs, 3)} ms и первый world state ${decimal(hardening.startup.baseline.worldStateMs, 3)}${decimal(hardening.startup.prewarmed.worldStateMs, 3)} ms без дополнительного inference на кадрах.`
: integrated
? `На Worker 006 полный граф обработал ${integrated.sourceFramesAdmitted.toLocaleString("ru-RU")} входных кадров, доставил ${integrated.deliveredWorldStates.toLocaleString("ru-RU")} состояний без ошибок, удержал все очереди в пределах ${integrated.queueCapacity} и p95 ${decimal(integrated.worldStateCompletionAgeP95Ms, 3)} ms. Advisory сформировал публикации по семействам: geometry-only (${integrated.advisoryFamilyCounts["generic-obstacle"].toLocaleString("ru-RU")}), люди (${integrated.advisoryFamilyCounts.person.toLocaleString("ru-RU")}), животные (${integrated.advisoryFamilyCounts.animal.toLocaleString("ru-RU")}) и транспорт (${integrated.advisoryFamilyCounts.vehicle.toLocaleString("ru-RU")}); это не количество уникальных физических объектов и не потребовало второго inference.`
: `RF-DETR-L ${decimal(load.durationSeconds / 60, 0)} минут устойчиво потреблял source-paced поток около 10 FPS: ${load.sourceFramesConsumed.toLocaleString("ru-RU")} кадров, 0 замен, 0 ошибок, completion-age p95 ${decimal(load.completionAgeP95Ms, 3)} ms.`,
notProved: "Не доказаны unbiased precision/recall классов, независимое качество track identity и risk policy, поведение planner или collision safety. Кадровые рамки не заменяют геометрическую occupancy-карту.",
decision: "Сохранить RF-DETR-L как risk-semantic shadow provider полного reference graph. Не классифицировать миллионы статических форм: неизвестное неподвижное препятствие остаётся geometry-owned и объезжается; классы сохраняются для людей, животных и транспорта. Production switch не разрешён.",
decision: hardening
? "Сохранить разгрузку cyclic GC и обязательный detector prewarm как текущий runtime baseline. Следующий этап — измерять запас realtime при росте сцены и числа семантических объектов, не добавляя второй детектор и не расширяя inference-нагрузку. Production switch не разрешён."
: "Сохранить RF-DETR-L как risk-semantic shadow provider полного reference graph. Не классифицировать миллионы статических форм: неизвестное неподвижное препятствие остаётся geometry-owned и объезжается; классы сохраняются для людей, животных и транспорта. Production switch не разрешён.",
}}
/>
)}
@@ -138,6 +138,40 @@ function resultPayload() {
additional_inference_passes: 0,
failures: 0,
},
runtime_hardening: {
schema_version: "missioncore.m48s-runtime-hardening-comparison/v1",
baseline: {
source_frames_admitted: 4489,
delivered_world_states: 4480,
superseded_frames: 9,
effective_world_state_fps: 9.750635,
world_state_completion_age_p95_ms: 76.886564,
world_state_completion_age_p99_ms: 100.661219,
world_state_completion_age_maximum_ms: 794.748644,
rolling_maximum_ms: 762.638263,
geometry_maximum_ms: 350.066302,
additional_inference_passes: 0,
},
hardened: {
source_frames_admitted: 4489,
delivered_world_states: 4488,
superseded_frames: 1,
effective_world_state_fps: 9.821942,
world_state_completion_age_p95_ms: 75.270655,
world_state_completion_age_p99_ms: 94.309605,
world_state_completion_age_maximum_ms: 449.893287,
rolling_maximum_ms: 28.044958,
geometry_maximum_ms: 49.174149,
additional_inference_passes: 0,
},
startup: {
baseline: { detector_ms: 397.356888, world_state_ms: 449.893287 },
prewarmed: { detector_ms: 27.662887, world_state_ms: 60.516957 },
prewarm_duration_ms: 420.721918,
prewarm_inference_passes: 1,
validation_frames: 1000,
},
},
},
decision: {
selected_candidate: "rf-detr",
@@ -175,6 +209,9 @@ test("M4.8S result exposes complete graph load without production authority", as
assert.equal(result.metrics.integratedWorldState.deliveredWorldStates, 4481);
assert.equal(result.metrics.integratedWorldState.worldStateCompletionAgeP95Ms, 74.733648);
assert.equal(result.metrics.integratedWorldState.additionalInferencePasses, 0);
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.decision.integratedWorldStateGatePassed, true);
assert.equal(result.decision.productionAccepted, false);
assert.equal(result.authority.navigationOrSafetyAccepted, false);