Define option-preserving gonol relationship displays - #168
Conversation
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 9025957b40
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| "repositories": [ | ||
| { | ||
| "repository": "The-Interdependency/ucns", | ||
| "commit": "a98c9e6c69804a8a08d0786b1d8b450bb2c49a97", |
There was a problem hiding this comment.
Pin the manifest to a commit containing the contract
When the publication consumer follows this work graph, it resolves the UCNS producer to a98c9e6..., but that is the parent of the reviewed commit and contains none of the newly introduced gonol relationship files. The promised commit-pinned machine contract therefore cannot be fetched from the declared producer identity, blocking the dependent website path described by this change; publish the contract first, pin a commit that actually contains it, and recompute work_graph_sha256.
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
Addressed in 8091e53. The stack manifest now pins The-Interdependency/ucns@cfad06cf41bd1cc82861f08f6076f0d398a0089b, a commit containing both the machine contract and repaired receipt schema. The canonical SHA-256 over exactly repositories plus boundaries is cb642cb5cbde47d456f6c512448e557686530eb41f77b21543b3dba955d1f1da. Leaving this thread unresolved until the full repository gate can execute.
| "comparison_policy": { | ||
| "oneOf": [ | ||
| {"type": "null"}, | ||
| {"$ref": "#/$defs/policy"} | ||
| ] |
There was a problem hiding this comment.
Reject measured comparisons without a policy
For a pair marked candidate-measured-evidence, the schema still accepts comparison_policy: null together with any comparison_outcome, so a consumer can emit a schema-valid measured comparison without naming its comparison semantics. Add a conditional tying candidate-measured status or a non-null outcome to a non-null policy; otherwise the receipt bypasses the repository's explicit-comparison invariant.
AGENTS.md reference: AGENTS.md:L93-L94
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
Addressed in cfad06c. A pair with relationship_status: candidate-measured-evidence now requires a non-null named/versioned comparison_policy with standing: experiment-candidate and a non-null comparison_outcome. Represented evidence requires both fields to remain null. The focused negative fixture rejects a measured pair without policy. Leaving unresolved pending a green repository gate.
| "consumer_reference": {"type": ["string", "null"]} | ||
| } | ||
| }, | ||
| "information_loss": {"type": "array", "items": {"type": "string", "minLength": 1}}, |
There was a problem hiding this comment.
Require the display's declared information loss
Every display covered by this contract loses at least native-scale magnitude, and the centerline projections also omit continuous band/frame behavior, yet information_loss: [] is schema-valid. A consumer can consequently publish a conforming-looking receipt without disclosing the losses that the machine contract and publication contract make mandatory; require the applicable declared losses rather than merely requiring an array.
AGENTS.md reference: AGENTS.md:L86-L87
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
Addressed in cfad06c. Top-level and display-policy information_loss now require both exact contract losses: native-scale magnitude is not encoded by visible radius, and continuous Möbius band width/local-frame motion are not encoded by the centerline projection. Empty or partial loss arrays fail validation. Leaving unresolved pending a green repository gate.
| "prefixItems": [ | ||
| {"type": "string", "minLength": 1}, | ||
| {"type": "string", "minLength": 1} | ||
| ], |
There was a problem hiding this comment.
Enforce that declared pairs reference the operands
For arities two and three, the conditionals constrain only the number of pairs; each pair may contain arbitrary strings, repeat another pair, or reference no operand_id, and the corresponding pairwise receipts are likewise unlinked. Thus a primitive-three receipt with three copies of an unknown X/Y pair validates despite the contract requiring the ordered A↔B, B↔C, and C↔A relationships, so the schema needs a structure that validates operand references and the declared pair order.
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
Addressed in cfad06c. Operands now occupy exact ordered slots, and arity-specific plans/receipts are fixed as: arity 1 none; arity 2 A-B; arity 3 A-B, B-C, C-A; arity 7 explicitly unresolved with no guessed pairs. Pairwise receipts carry the same fixed left/right slots, so unknown, repeated, or reordered pairs fail. Leaving unresolved pending a green repository gate.
| "maxItems": 7, | ||
| "items": {"$ref": "#/$defs/operand"} | ||
| }, | ||
| "display_policy": {"$ref": "#/$defs/policy"}, |
There was a problem hiding this comment.
Bind receipts to the declared display policy
The receipt's display_policy accepts the generic policy definition, so any nonempty policy ID and version, any allowed standing, and arbitrary parameters validate. A primitive-two or primitive-three receipt can therefore use native-scale radii or another projection while claiming conformance, even though the machine contract fixes ucns.display.relation-equalized/0.1.0 with display radius 1; constrain this field to that policy identity and its required parameters.
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
Addressed in cfad06c. display_policy is no longer generic: it is fixed to ucns.display.relation-equalized/0.1.0, standing: declared-static-projection, display radius 1, native-scale retention true, visible-radius/native-scale equivalence false, and an explicit derived-layer visibility boolean. Alternative projection policies fail. Leaving unresolved pending a green repository gate.
| } | ||
| }, | ||
| "information_loss": {"type": "array", "items": {"type": "string", "minLength": 1}}, | ||
| "hmmm": {"type": "array", "items": {"type": "string", "minLength": 1}} |
There was a problem hiding this comment.
Require unresolved boundaries to remain in receipts
The required hmmm field still accepts an empty array, including for primitive seven, so a schema-valid receipt can omit the unresolved seven-gonol geometry, pairing construction, continuous frame law, and other boundaries that the publication contract requires consumers to expose. Require the applicable unresolved entries—or at minimum a nonempty boundary set—so validation cannot erase unresolved constraints by omission.
AGENTS.md reference: AGENTS.md:L126-L126
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
Addressed in cfad06c. The receipt now requires all five current unresolved boundaries: continuous local-frame geometry, seven-gonol geometry/pairing, derived-layer promotion, cross-scope/higher composition, and English lexical-source/embedding completion. Operand and pairwise hmmm arrays are also nonempty. Empty omission fails. Leaving unresolved pending a green repository gate.
| } | ||
| ] | ||
| }, | ||
| "evidence_status": {"enum": ["represented-evidence", "candidate-measured-evidence"]}, |
There was a problem hiding this comment.
Require candidate identity for measured receipts
Setting the top-level status to candidate-measured-evidence triggers no additional requirements, and the schema has no field that records the candidate's name, evaluator kind, version, code reference, scope, or policy dependencies. A consumer can therefore promote a represented display to candidate-measured status by changing this single enum value, with no recoverable identity for the measurement; add a conditional candidate-identity record before permitting that status.
AGENTS.md reference: AGENTS.md:L101-L102
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
Addressed in cfad06c. Any top-level, operand, or pairwise candidate-measured status now promotes the whole receipt to candidate-measured and requires candidate_identity with name, evaluator kind, version, code reference, scope, and policy dependencies. Represented-only receipts require candidate identity to remain null. Leaving unresolved pending a green repository gate.
| "properties": { | ||
| "scale_id": {"type": "string", "minLength": 1}, | ||
| "declaration": {"type": "string", "minLength": 1}, | ||
| "numeric_rank": {"type": ["number", "null"]} |
There was a problem hiding this comment.
Disallow numeric scale ranks without a scale law
The contract defines native scale as opaque unless a separate scale law supplies additional structure, but numeric_rank accepts any number and the receipt has no field that identifies such a law, its version, standing, or evidence. A consumer can therefore assign arbitrary ranks and use them to order or coerce otherwise incomparable scales while still producing a schema-valid receipt; keep this value null until a named scale-law record is present.
AGENTS.md reference: AGENTS.md:L83-L85
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
Addressed in cfad06c. native_scale.numeric_rank is now const: null; the current receipt schema contains no hidden scale-law escape hatch. Numeric ordering remains unavailable until a separately named, versioned scale-law record and evidence contract exist. The focused negative fixture rejects any numeric rank. Leaving unresolved pending a green repository gate.
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
Outcome
Records an authority-declared, option-preserving UCNS display contract for the primitive arity range
{1,2,3,7}without selecting the unresolved continuous Möbius, seven-form, comparison, higher-composition, or embedding laws.3r/2scope circle andr/2relationship circle;A↔B,B↔C, andC↔Avesicas;Current producer artifacts
9025957b4063c4748429cb56b52d3c9a56157c42fdb94ff829a42c267de5f00f2a752550352a444dd1ac67d4a5d5b4cd0622056af94b24a1404f1f5c7d7dfeb59ee28e5edb73aad5cfad06cf41bd1cc82861f08f6076f0d398a0089b569ff5ce8a891a879314f2845905b7c9b8bc085c2b15b1fbc517fdf11e617da8d31ae542cb6f240755ba12390a5bbc7d81034d568091e53dab60d36f90c0a9f6e25ef7c4ddf9e6e75b494f5356b87ce1ef5279c7a37aee16c1d7da76cb642cb5cbde47d456f6c512448e557686530eb41f77b21543b3dba955d1f1daReview repair at current head
The receipt schema now:
ucns.display.relation-equalized/0.1.0display policy, radius, scale-retention flags, and derived-layer visibility;hmmmboundaries;A-B,B-C,C-Aand links pairwise receipts to those slots;numeric_rank = nulluntil a separately named scale law exists;The stack manifest now pins
The-Interdependency/ucns@cfad06c..., a commit that actually contains the machine contract and repaired schema, and its canonical work-graph digest has been recomputed.Focused validation completed
1,2,3, and7: passedhmmm, numeric scale rank, wrong pair order, wrong display policy, missing candidate identity, null measured-comparison policy, missing producer blob, and any status-transfer flag: passedActions boundary
The repository workflow did not produce a usable repository verdict for the repaired heads. Both Python matrix jobs fail before exposing steps or retrievable logs. A separate draft diagnostic PR #169 reduced the workload to a single
echoplus artifact upload; that runner probe also failed before producing an artifact. PR #169 was closed without merge and its branch reset to this PR head.Accordingly, this PR remains open and unmerged. Red checks are not being overridden.
Remaining before merge
docs/GONOL_RELATIONSHIP_DISPLAY_V1.mdto the final producer identity;Cross-repository boundaries
No semantic, mathematical, proof, certification, measurement, empirical, completion, embedding, or producer-authentication standing transfers to the website. Display equality is not native-scale equality. Digest identity is not geometry or a signature. Registry integration remains pending.
hmmm
Continuous local-frame geometry, the seven-gonol construction and pairing plan, promotion of derived scope or relationship circles, cross-scope higher-gonol composition, a complete English root policy and lexical run, and the hyperdimensional embedding law remain unresolved. The immediate operational blocker is Actions execution, not an asserted successful repository gate.