{"ok":false,"checkedAt":"2026-06-02T19:18:45.289Z","profileVersion":"moral-trade-performance-v0.4-2026-06","purpose":"Public performance and route-resilience contract for the core Moral Trade experience, including loading-state recovery, Web Vitals, API latency, error-rate measurement, cache posture, and honest non-claims.","measurementCadence":"weekly_internal_monthly_public_aggregate","validation":{"status":"fail","validatorName":"moral-trade-performance-profile","validatorVersion":"moral-trade-performance-validator-v0.5","profileVersion":"moral-trade-performance-v0.4-2026-06","checks":[{"id":"metric-targets","label":"Performance targets for route errors, API latency, Web Vitals, loading recovery, and build coverage","status":"pass","evidence":"route_error_rate, api_latency_p95_ms, web_vitals_lcp_p75_ms, web_vitals_inp_p75_ms, web_vitals_cls_p75, specific_loading_recovery_ratio, build_route_manifest_coverage"},{"id":"instrumentation-controls","label":"Instrumentation controls","status":"pass","evidence":"web_vitals_capture, api_server_timing, route_error_boundary, loading_state_inventory, production_route_manifest_smoke"},{"id":"route-families","label":"Public route resilience families","status":"pass","evidence":"core_protocol_contract, offer_marketplace, background_networking, reasoning_and_review"},{"id":"route-recovery-manifest","label":"Route recovery manifest covers public Moral Trade route families","status":"fail","evidence":"11/13 route(s), blockers 2."},{"id":"release-gates","label":"Performance release gates reference known instrumentation","status":"pass","evidence":"instrument_before_optimize->web_vitals_capture+api_server_timing+route_error_boundary, public_route_resilience->route_error_boundary+loading_state_inventory+production_route_manifest_smoke, privacy_safe_telemetry->web_vitals_capture+api_server_timing"},{"id":"privacy-safe-telemetry","label":"Telemetry boundaries reject private text and unredacted query data","status":"pass","evidence":"route_error_rate:Route names and counts only; no raw query strings, private wish text, or contact details. | api_latency_p95_ms:Route key, status bucket, and duration bucket only. | web_vitals_lcp_p75_ms:Route bucket and metric value only; no raw user text. | web_vitals_inp_p75_ms:Route bucket and metric value only; no raw user text. | web_vitals_cls_p75:Route bucket and metric value only; no raw user text. | specific_loading_recovery_ratio:Route family counts only. | build_route_manifest_coverage:Route keys and manifest presence only."},{"id":"public-nonclaims","label":"Public non-claims for unverified performance readiness","status":"pass","evidence":"Moral Trade does not claim verified Core Web Vitals pass status until route-level samples are collected and published in aggregate. | Moral Trade does not claim all loading states are optimized; generic fallbacks are tracked as route-resilience debt. | Moral Trade does not claim production API latency targets are met without current server-timing or provider metrics. | Moral Trade does not claim performance telemetry can include raw private wishes, source notes, contact details, or unredacted query strings."},{"id":"performance-tests","label":"Performance test hooks","status":"pass","evidence":"performance_profile_validator, performance_snapshot_audit, route_recovery_manifest_audit, loading_error_boundary_smoke, route_manifest_coverage_smoke, performance_health_route_contract_smoke, technical_spec_performance_smoke, privacy_safe_telemetry_smoke"}],"blockers":["route-recovery-manifest: Route recovery manifest covers public Moral Trade route families"]},"publicContract":{"observedFriction":["loading_interstitials","reasoning_route_resilience","public_liquidity_perception"],"metricTargets":[{"key":"route_error_rate","target":"<=1% of public route views over a reporting period","source":"route_error_events","publicReporting":"aggregate_only"},{"key":"api_latency_p95_ms","target":"<=800ms p95 for public Moral Trade contract and directory APIs","source":"server_timing_or_api_metrics","publicReporting":"aggregate_only"},{"key":"web_vitals_lcp_p75_ms","target":"<=2500ms p75 for public Moral Trade routes","source":"web_vitals_events","publicReporting":"aggregate_only"},{"key":"web_vitals_inp_p75_ms","target":"<=200ms p75 for public Moral Trade routes","source":"web_vitals_events","publicReporting":"aggregate_only"},{"key":"web_vitals_cls_p75","target":"<=0.1 p75 for public Moral Trade routes","source":"web_vitals_events","publicReporting":"aggregate_only"},{"key":"specific_loading_recovery_ratio","target":">=90% of public Moral Trade route families have specific loading or error recovery paths","source":"route_source_smoke","publicReporting":"aggregate_only"},{"key":"build_route_manifest_coverage","target":"Every public Moral Trade contract route appears in the production build manifest before release.","source":"production_build_manifest","publicReporting":"release_gate"}],"auditDefaults":{"minSampleCount":50,"maxRouteErrorRate":0.01,"maxApiLatencyP95Ms":800,"maxLcpP75Ms":2500,"maxInpP75Ms":200,"maxClsP75":0.1,"minSpecificLoadingRecoveryRatio":0.9},"instrumentationControls":["web_vitals_capture","api_server_timing","route_error_boundary","loading_state_inventory","production_route_manifest_smoke"],"routeFamilies":[{"key":"core_protocol_contract","paths":["/moral-trade/technical-spec","/api/moral-trade/health","/api/moral-trade/api-contract"]},{"key":"offer_marketplace","paths":["/offers","/offers/new","/offers/examples/[exampleId]"]},{"key":"background_networking","paths":["/background-networking","/wish-registry","/api/wish-registry/search"]},{"key":"reasoning_and_review","paths":["/reasoning-center","/api/moral-trade/reasoning/packets","/validation","/trust"]}],"routeRecoveryAudit":{"status":"fail","routeCount":13,"coveredRouteCount":11,"coverageRatio":0.8462,"blockers":["route_recovery_evidence_missing:/moral-trade/technical-spec:src/app/moral-trade/technical-spec/error.tsx","route_recovery_evidence_missing:/reasoning-center:src/app/reasoning-center/error.tsx"],"reasoningCenterRecovery":["route_segment_error_boundary","route_specific_viewer_fallback","packet_generation_recovery_notice","global_error_boundary","packet_json_fallback","safe_navigation"],"reasoningCenterEvidenceFile":"src/app/reasoning-center/error.tsx","reasoningPacketJsonRecovery":["validator_blockers","packet_generation_failed_contract","no_store_dynamic"]},"releaseGates":["instrument_before_optimize","public_route_resilience","privacy_safe_telemetry"],"publicNonClaims":["Moral Trade does not claim verified Core Web Vitals pass status until route-level samples are collected and published in aggregate.","Moral Trade does not claim all loading states are optimized; generic fallbacks are tracked as route-resilience debt.","Moral Trade does not claim production API latency targets are met without current server-timing or provider metrics.","Moral Trade does not claim performance telemetry can include raw private wishes, source notes, contact details, or unredacted query strings."],"performanceTests":["performance_profile_validator","performance_snapshot_audit","route_recovery_manifest_audit","loading_error_boundary_smoke","route_manifest_coverage_smoke","performance_health_route_contract_smoke","technical_spec_performance_smoke","privacy_safe_telemetry_smoke"]},"blockers":["route-recovery-manifest: Route recovery manifest covers public Moral Trade route families"]}