Skip to content

Project Glowing Heart v2.1 Channel Registry and Compatibility Matrix

What changed

Difference Packet status now comes from a named channel compatibility rule. A Core registry declares channel identity and representation metadata, while a compatibility matrix evaluates a pair under explicit fixture and observer context.

The registry declares comparison rules through the matrix. It does not replace snapshot data, observer declarations, or retained artifact provenance.

Initial channels

Channel Kind Representation
bend_magnitude_metric measurement scalar grid
ray_hit_flag measurement binary grid
traversal_step_count measurement scalar grid
observer_basis identity metadata
fixture_identity identity metadata
runtime_metadata metadata metadata

Initial compatibility rules

Rule Status Conditions
bend_magnitude_same_observer Comparable same channel type, fixture identity, observer basis, and coordinate grid
ray_hit_same_fixture_observer Comparable same channel type, fixture identity, observer basis, and coordinate grid
traversal_steps_vs_bend_not_comparable NotComparable none
core_to_future_image_requires_transform RequiresTransform declared transform
missing_channel_declaration Unknown declared channel identity is absent

An undeclared pair defaults to Unknown. No Core channel paired with a future Godot or image channel can be Comparable in v2.1.

Selector semantics

The preview matrix uses structured selector objects. Fields within one selector are combined with AND. An anyOf list combines selector objects with OR. For example, the future-image rule matches a right-side channel when producer is future_godot OR kind is image, exactly mirroring the C# predicate.

Required condition tokens

Token Meaning
same_observer_basis Observer pose, direction, projection, sampling, and resolution are declared compatible
same_fixture_identity Both snapshots identify the same fixture source and basis
declared_transform A documented transform exists and is cited before comparison
same_channel_type Both sides declare the same channel identifier
same_coordinate_grid Sample coordinates align

All five tokens are part of the preview vocabulary. Tokens not exercised by the current Core self-comparison are reserved for later milestones and do not authorize additional comparison scope.

Implementation authority

The v2.1 C# ChannelCompatibilityMatrix is the runtime authority. The preview JSON matrix is a declarative mirror used for documentation, inspection, and future tooling. If they diverge, this is a documentation/tooling defect to fix before relying on external consumers.

Difference Packet integration

The v2.0 Core self-comparison still compares one bend_magnitude_metric grid with itself. Its Comparable status is now backed by bend_magnitude_same_observer, and emitted packets record:

compatibilityRuleId
channelRegistryVersion
compatibilityMatrixVersion

The expected self-comparison remains 880 compared samples, maximum absolute difference 0, mean absolute difference 0, and non-zero count 0.

The packet keeps schema ID xprimeray.glowing_heart.difference_packet.v2.0. The v2.1 fields compatibilityRuleId, channelRegistryVersion, and compatibilityMatrixVersion are optional preview extensions in that schema. This avoids disrupting existing v2.0 readers while allowing new packets to cite their compatibility source.

Artifacts

schemas/glowing_heart/channel_registry.v0.preview.json
schemas/glowing_heart/channel_compatibility_matrix.v0.preview.json
Docs/xPRIMEray/glowing_heart/channel_registry.preview.json
Docs/xPRIMEray/glowing_heart/channel_compatibility_matrix.preview.json

Claim boundary

The registry and matrix declare channel identity and comparison eligibility. They do not validate scientific correctness. They do not establish renderer equivalence. They do not compare Core to Godot. They do not perform image comparison or prove physical truth.

No parity claim. No physical-validation claim. No equivalence claim. No proof claim.

Next milestone

v2.2 should compare two separately retained Core snapshots with the same declared channel, fixture identity, observer basis, and coordinate grid. It should not compare Core to Godot.