{"schema":"project-telos.measurement-layers/v1","tool":"telos.measurement.layers","generated_at":"2026-06-28T00:00:00.000Z","purpose":"Runnable sensors and meters for Telos creative, scientific, rendering, interaction, and performance surfaces.","measurement_bus":{"schema":"project-telos.measurement-bus/v1","description":"Typed event envelope for sensors, meters, and creative-engine probes. The bus can carry estimated, witnessed, calibrated, or unverifiable values without reducing the engine to verification alone or requiring raw assets.","event_fields":["event_id","run_id","frame_id","actor","domain","subject_ref","timestamp","clock_domain","coordinate_space","units","value_shape","value","uncertainty","provenance","privacy","severity","event_hash"],"uncertainty_statuses":["estimated","witnessed","calibrated","unverifiable"],"sensor_lanes":{"render":["spatial.splat-probe","lighting.cluster-meter","temporal.flicker-meter","performance.frame-budget-meter"],"creative":["visual.histogram-field","visual.dither-spectrum-meter","audio.spectral-meter","interaction.trace-meter"],"scientific":["visual.histogram-field","spatial.splat-probe","audio.spectral-meter","geometry.curvature-meter","uncertainty.budget-meter"],"engine":["temporal.flicker-meter","geometry.curvature-meter","interaction.trace-meter","uncertainty.budget-meter","performance.frame-budget-meter"]},"privacy_boundary":"Events export summaries, hashes, units, and coordinate spaces; raw assets, prompts, keys, and private captures stay outside the public packet."},"source_receipts":[{"title":"Forward+ rendering publication record","url":"https://diglib.eg.org/items/5a8806ed-5b06-447a-a6f3-4edfa2d814fb","source_kind":"open-publication-record","resolved_at":"2026-06-28T00:00:00Z","provenance_class":"lawful_source","receipt_hash":"sha256:680a425aa798284d4c7e1ee0a34ab9ae5acba7c4429c8282a84f248ece088882"},{"title":"NVIDIA spatiotemporal blue noise discussion","url":"https://developer.nvidia.com/blog/rendering-in-real-time-with-spatiotemporal-blue-noise-textures-part-1/","source_kind":"official-vendor-technical-blog","resolved_at":"2026-06-28T00:00:00Z","provenance_class":"lawful_source","receipt_hash":"sha256:e9db89ce6e4a71aa9b7c092af61218ece2534db323bd5ef44e0c4823745bc8d2"},{"title":"Void-and-cluster method for dither array generation","url":"https://doi.org/10.1117/12.59015","source_kind":"publication-record","resolved_at":"2026-06-28T00:00:00Z","provenance_class":"lawful_source","receipt_hash":"sha256:2977c8a06de0ee51f56ec8e7c4e0a07ba9df1fb0a3ca27622fd6700e3c8027ae"},{"title":"Project Telos measurement layers","url":"demo/measurement-layers.mjs","source_kind":"local-source","resolved_at":"2026-06-28T00:00:00Z","provenance_class":"lawful_source","receipt_hash":"sha256:392e4e363398d03217cf6f62eb42395c0131e4c7e0edd0f897693c45d547a5a3"}],"layers":[{"layer_id":"visual.histogram-field","evidence_status":"MATCH","inputs":["luminance pixels","canvas pixels","image artifacts"],"outputs":["bins","mean_luminance","contrast_ratio","measurement_hash"],"failure_codes":["measurement_source_missing","pixel_dimensions_mismatch"]},{"layer_id":"visual.dither-spectrum-meter","evidence_status":"MATCH","inputs":["luminance pixels","matrix size","dither algorithm candidate"],"outputs":["unique_levels","pattern","algorithm_candidates","measurement_hash"],"failure_codes":["measurement_source_missing","dither_pattern_unverifiable"]},{"layer_id":"spatial.splat-probe","evidence_status":"MATCH","inputs":["Gaussian splat centers","radii","opacity","viewport"],"outputs":["splat_count","bounds","coverage_estimate","opacity_mean"],"failure_codes":["measurement_source_missing","asset_provenance_missing"]},{"layer_id":"lighting.cluster-meter","evidence_status":"MATCH","inputs":["cluster grid","light positions","light radius","budget"],"outputs":["cluster_count","max_lights_per_cluster","over_budget_clusters","histogram"],"failure_codes":["measurement_source_missing","cluster_budget_exceeded"]},{"layer_id":"audio.spectral-meter","evidence_status":"MATCH","inputs":["waveform samples","frequency bins"],"outputs":["dominant_bins","spectral_centroid_bin","measurement_hash"],"failure_codes":["measurement_source_missing","audio_spectrum_unverifiable"]},{"layer_id":"temporal.flicker-meter","evidence_status":"MATCH","inputs":["frame luminance arrays","frame width","frame height","delta threshold"],"outputs":["frame_count","pixel_count","mean_delta","above_threshold_transitions","above_threshold_ratio","measurement_hash"],"failure_codes":["measurement_source_missing","frame_dimensions_mismatch","temporal_flicker_unverifiable"]},{"layer_id":"geometry.curvature-meter","evidence_status":"MATCH","inputs":["curve or surface sample points","x/y/z coordinates"],"outputs":["sample_count","path_length","mean_turn_angle_degrees","max_turn_angle_degrees","curvature_proxy","measurement_hash"],"failure_codes":["measurement_source_missing","geometry_curvature_unverifiable"]},{"layer_id":"interaction.trace-meter","evidence_status":"MATCH","inputs":["human/model/tool action events","actor labels","kind labels","timestamps"],"outputs":["action_count","actor_counts","kind_counts","handoff_count","max_gap_ms","measurement_hash"],"failure_codes":["measurement_source_missing","interaction_trace_unverifiable"]},{"layer_id":"uncertainty.budget-meter","evidence_status":"MATCH","inputs":["measurement events","observation uncertainty statuses"],"outputs":["observation_count","status_counts","highest_risk_status","unverifiable_ratio","calibrated_ratio","measurement_hash"],"failure_codes":["measurement_source_missing","uncertainty_status_unknown"]},{"layer_id":"performance.frame-budget-meter","evidence_status":"MATCH","inputs":["frame duration samples","budget in milliseconds"],"outputs":["frame_count","mean_frame_ms","p95_frame_ms","over_budget_frames","budget_utilization","measurement_hash"],"failure_codes":["measurement_source_missing","frame_budget_exceeded"]}],"privacy":{"raw_payload_required":false,"raw_assets_required_for_interop":false,"exported_fields":["layer_id","measurement_hash","bounds","counts","dominant_bins","failure_code","verification_verdict","coordinate_space","units","uncertainty_status","budget_utilization"]},"failure_codes":["measurement_source_missing","pixel_dimensions_mismatch","dither_pattern_unverifiable","asset_provenance_missing","cluster_budget_exceeded","audio_spectrum_unverifiable","raw_payload_leak","frame_dimensions_mismatch","temporal_flicker_unverifiable","geometry_curvature_unverifiable","interaction_trace_unverifiable","uncertainty_status_unknown","frame_budget_exceeded"],"next_actions":[{"tool":"crucible.assess","action":"verify-measurement-gates","reason":"Turn sensor outputs into MATCH, DRIFT, or UNVERIFIABLE verdicts against explicit criteria."},{"tool":"index.context","action":"map-engine-organs","reason":"Attach revived raster, sound, splat, and lighting organs to the same measurement surface."},{"tool":"telos.measurement.layers","action":"add-parallel-engine-sensor-pack","reason":"Treat verification as one organ of a broader engine that can also sense flicker, curvature, interaction, uncertainty, and performance."}]}
