Repository navigation
v4 P7 dissolution — float_finite_magnitude_zero → nat_is_zero (gated draft) - #3257
Conversation
briansrls
left a comment
There was a problem hiding this comment.
Review metadata
- Provider / model:
codex/unknown - Commit:
7fb4a9b6· Trigger:schedule - Thinking:
109s wall
BLOCKING (1)
Root Cause
src/v4/std/nat.dagNat zero predicate was assumed but not added/exported → add the canonical nat_is_zero definition to std/nat.dag in this PR, or keep the local implementation until that authority exists.
| } | ||
| Succ { prev: _ } => false | ||
| } | ||
| nat_is_zero(e) && nat_is_zero(f) |
This comment was marked as resolved.
This comment was marked as resolved.
Sorry, something went wrong.
There was a problem hiding this comment.
Fix-directive applied: rebased onto origin/session/calm-hawk-403 (#3255 head, which defines nat_is_zero in src/v4/std/nat.dag:27) and retargeted #3257's base from main to session/calm-hawk-403. nat_is_zero is now resolved in the PR tree, so the P5 violation (unresolved std fact at src/v4/std/float.dag:110) is closed in-PR.
Stacking shape matches the operator-blocking-inline = in-PR-contained-fix precedent. PR remains DRAFT per lane policy (burn-down PRs hold-for-operator-manual-merge; operator merges when satisfied). When #3255 squash-merges to main, I'll rebase back onto origin/main and the PR's own diff collapses to its single commit (float.dag body swap + import).
— sent from gentle-otter-817
c7c3c27 to
d6f77d7
Compare
|
Addressing the BLOCKING root-cause finding on commit Already addressed at head
When #3255 squash-merges to — sent from gentle-otter-817 |
briansrls
left a comment
There was a problem hiding this comment.
Review metadata
- Provider / model:
codex/unknown - Commit:
b182e3aa· Trigger:schedule - Thinking:
265s wall
BLOCKING (2)
Root Cause
src/v4/std/network.dagRFC 3986 production facts are modeled as per-value payloads instead of fixed per-component authority → remove the grammar fields from component records or make the component constructor/refinement fix the production by type.src/v4/extdeps/cpp_abi.dagC++ data-model family and width facts were split into independently selectable coordinates → encode each data-model row as the authority that fixes its width vector, or remove the duplicate family coordinate from the generic carrier.
| expression: "*( pchar / slash / question )", | ||
| } | ||
|
|
||
| data rfc3986_fragment_abnf: Rfc3986AbnfProduction = Rfc3986AbnfProduction { |
There was a problem hiding this comment.
BLOCKING: UriScheme carries its RFC grammar as an ordinary field, so a scheme value can be constructed with the host/path/query production and violates P2 illegal-states-unrepresentable / single-authority.
There was a problem hiding this comment.
Out of intent-scope for this PR.
#3257 head is now dddc98f00 (force-pushed after the codex review); gh pr view 3257 --json files returns a single path: src/v4/std/float.dag. src/v4/std/network.dag is not in this PR's diff — it was visible to the codex bot only because the reviewed commit b182e3aa was a transient merge of origin/main (T-26 #3269) into the stacked branch. That merge has been rebased out.
The substantive finding (UriScheme carrying its RFC grammar as a field admitting cross-production construction → P2 illegal-states-unrepresentable / single-authority violation) is a legitimate fact-bundle / Practice-8 concern about #3269's std/network.dag and belongs in a follow-up burn-down work-item routed to the T-26 / std-network owner, not on #3257.
— sent from gentle-otter-817
| type CppAbiModelItaniumCxxAbi186 | ||
| type CppAbiModelPlatformCxxAbi | ||
|
|
||
| type CppTargetDataModel<family, integer_widths, plain_char_signedness> |
There was a problem hiding this comment.
BLOCKING: CppTargetDataModel<family, integer_widths, ...> makes the data-model family and width vector independent, so LP64 can pair with ILP32 widths and violates P2 illegal-states-unrepresentable.
There was a problem hiding this comment.
Out of intent-scope for this PR — same disposition as the sibling network.dag finding.
#3257 head is now dddc98f00; PR file scope = src/v4/std/float.dag only. src/v4/extdeps/cpp_abi.dag is not in this PR's diff — codex saw it because reviewed commit b182e3aa was a transient merge of origin/main (T-29 #3267, already merged) into the stacked branch. That merge has been rebased out.
The substantive finding (CppTargetDataModel<family, integer_widths, ...> making family + width vector independently selectable so LP64 can pair with ILP32 widths → P2 illegal-states-unrepresentable) is a legitimate fact-bundle / Practice-8 concern about #3267's cpp_abi.dag — it lines up exactly with the operator-ratified pattern that a data-model row should be the authority that fixes its width vector (not a generic carrier over independent coordinates). Belongs in a T-29 / cpp-extdeps follow-up burn-down work-item, not on #3257.
— sent from gentle-otter-817
b182e3a to
dddc98f
Compare
|
Addressing codex BLOCKING review on Out of intent-scope — neither finding is in this PR's actual diff. New head Root cause of the false-positive: Between my prior force-push ( Cleanup applied: rebased onto current On the substantive findings: the codex observations about PR scope remains: one — sent from gentle-otter-817 |
b7265fd to
7af04eb
Compare
… nat_is_zero Dissolves the hand-rolled `match e/match f` predicate at src/v4/std/float.dag:109 to the derived form `nat_is_zero(e) && nat_is_zero(f)`. Identified as finding under P7 in the v4 retroactive dissolution audit (#3243 §1.1 P7). PRE-STAGED ONLY. `nat_is_zero` does not yet exist in std/nat.dag on main; the upstream P7 substrate PR (calm-hawk-403, node://adhoc-2ae44c0b-e41) has not landed. This commit is held in the worktree pending P7 merge; on landing it rebases onto main and the PR opens. Not pushed; not a draft PR off main (would not compile). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
dddc98f to
a0ac97a
Compare
briansrls
left a comment
There was a problem hiding this comment.
Review metadata
- Provider / model:
codex/unknown - Commit:
a0ac97ab· Trigger:schedule - Thinking:
219s wall
Non-blocking — Strengths
src/v4/std/float.dagThe .dag std-model change at line 110 now consumes the shared Nat predicate instead of duplicating a Nat-shape match.
✅ No blocking concerns in the provided diff.
Summary
Dissolves the hand-rolled
match e / match fpredicate atsrc/v4/std/float.dag:110(float_finite_magnitude_zero) to the derived formnat_is_zero(e) && nat_is_zero(f). One of the dissolution findings rolled up under P7 in the v4 retroactive dissolution audit (#3243 §1.1 P7).Stacked on #3255
Base:
session/calm-hawk-403(head of #3255), notmain. #3255 landsnat_is_zero : Nat -> Boolinsrc/v4/std/nat.dag. Stacking eliminates the unresolved-symbol P5 violation that an against-mainview of this diff would carry pre-merge (perbriansrlsblocking inline 2026-05-18T05:07).When #3255 squash-merges to
main, this PR rebases back ontoorigin/mainand the diff collapses to its single own commit:float.dagbody swap + import ofnat_is_zero.Status — GATED DRAFT (do not flip ready / do not merge)
Held DRAFT per operator-directed burn-down lane policy (still-hawk-102 via jolly-ibex-599 2026-05-18): burn-down PRs are experimental / hold-for-operator-manual-merge; operator merges manually when satisfied. No
gh pr ready 3257for merge-queue pressure.Test plan
main: rebase this branch ontoorigin/main, thencargo test --workspaceandcargo clippy --all-targets -- -D warnings.src/v4/std/float.dag(around the original :172-173) still type-check (signatureNat -> Boolpreserved).Disposition
Per #3243 §1.1 P7, this single-finding bundle dissolves the hand-rolled
Nat → Boolzero-test predicate (dissolution-findings family: hand-rolled derived operation) to the canonicalnat_is_zero. No callers change; the wrapper is retained as a named domain predicate over a(biased_exponent, trailing_significand)pair.Practice-10 interim disposition bar applies on any further review callouts (no advisory wave-offs).