Skip to content

backlog(P3): B-0198 F# UoM-on-BigInteger upstream contribution -- absorb-and-contribute (Aaron 2026-05-05)#1596

Merged
AceHack merged 2 commits intomainfrom
backlog/B-0198-fsharp-uom-biginteger-upstream-contribution-aaron-2026-05-05
May 5, 2026
Merged

backlog(P3): B-0198 F# UoM-on-BigInteger upstream contribution -- absorb-and-contribute (Aaron 2026-05-05)#1596
AceHack merged 2 commits intomainfrom
backlog/B-0198-fsharp-uom-biginteger-upstream-contribution-aaron-2026-05-05

Conversation

@AceHack
Copy link
Copy Markdown
Member

@AceHack AceHack commented May 5, 2026

Summary

Acceptance criterion (d) of B-0196 flagged UoM-on-BigInteger compatibility as research-required. WebSearch performed 2026-05-05T07:40Z; verification result landed inline in the row.

Confirmed

F# UoM does NOT natively extend to System.Numerics.BigInteger. Per Microsoft Learn: Units of Measure, dimensioned quantities work only on floating-point, signed integral, and decimal primitive types. Per Microsoft Learn: Basic Types, bigint is not a basic type -- abbreviation for System.Numerics.BigInteger, outside the F# primitive numeric set.

Workarounds documented

  • FSharp.UMX -- phantom-type pattern for non-numeric primitives; technique generalizes
  • fslang-suggestions/831 "Generic Arithmetic" -- discusses BigInteger as int64 escalation type; not implemented; adjacent

Implication

B-0196 acceptance criterion (a) substrate-survey output should treat BigInteger<weight> as requiring either (1) custom phantom-type wrapper struct (FSharp.UMX-style), (2) abandoning UoM on BigInteger paths, or (3) waiting on fslang-suggestions/831 outcome. Per the four-property hodl, option (1) most likely satisfies all four invariants.

Composes with

  • B-0196 acceptance criterion (d)
  • B-0198 (filed in parallel) -- upstream contribution row capturing absorb-and-contribute discipline applied to this gap

🤖 Generated with Claude Code

…orb-and-contribute (Aaron 2026-05-05)

Aaron 2026-05-05 verbatim, after PR #1596 verified F# UoM does not
natively extend to System.Numerics.BigInteger:
  "but no implementation. do they need help we are good neighbors
   and citizens of github and our dependencies"

Per memory/feedback_absorb_and_contribute_community_dependency_
discipline_2026_04_22.md: when Zeta depends on community work AND
identifies a gap, contributing back is the discipline.

Two contribution shapes:

Option 1 (lightweight): comment on fslang-suggestions/831 surfacing
Zeta's BigInteger<weight> use case as evidence-of-demand. Cost-free,
citizen-move signal that the gap is felt downstream.

Option 2 (heavier): RFC pre-draft for UoM-extension-to-BigInteger
specifically (separate from generic-arithmetic/831), following PR
1591's pattern. Verification preconditions documented (search
fslang-suggestions, fslang-design, Don Syme prior work, csharplang
coordination).

P3 because:
- Not blocking Zeta (in-language workarounds suffice for B-0196's
  per-class adoption decision)
- Citizenship work, not survival work
- Bounded scope per option

Engagement gate: only escalate IF contribution has substance --
the Prop 3.5 misattribution worked example shows premature upstream
engagement on under-verified findings is itself the failure mode.

Composes with B-0196, PR #1591, the absorb-and-contribute
discipline memory file, and fslang-suggestions/831.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings May 5, 2026 07:45
@AceHack AceHack enabled auto-merge (squash) May 5, 2026 07:45
@AceHack AceHack changed the title research(B-0196): verify F# UoM does NOT natively extend to BigInteger (Otto-364 search-first authority) backlog(P3): B-0198 F# UoM-on-BigInteger upstream contribution -- absorb-and-contribute (Aaron 2026-05-05) May 5, 2026
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a new backlog row capturing an “absorb-and-contribute” upstream-engagement plan around the F# Units-of-Measure + BigInteger gap, and updates the generated backlog index to include the new row.

Changes:

  • Introduces backlog row B-0198 (P3) documenting two upstream contribution options (lightweight comment vs optional RFC pre-draft) plus engagement gates.
  • Updates docs/BACKLOG.md to include B-0198 in the P3 list.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.

File Description
docs/backlog/P3/B-0198-fsharp-uom-biginteger-upstream-contribution-aaron-2026-05-05.md New per-row backlog entry describing upstream contribution plan and acceptance criteria.
docs/BACKLOG.md Regenerated/updated index to include the new B-0198 entry.

…ith on B-0196 (#1596 reviewer)

Two real reviewer findings:

1. MD027/no-multiple-space-blockquote at line 24:3 -- the verbatim
   blockquote had double-space after `>`. Reduced to single-space.
   The verbatim text content is preserved unchanged.

2. Bidirectional composes_with: B-0196 now lists B-0198 in its
   composes_with frontmatter. The edge B-0198 -> B-0196 already
   existed; this adds B-0196 -> B-0198 making it bidirectional per
   tools/backlog/README.md schema.

The third "github -> GitHub in row title" reviewer thread is a
false-positive: the row title contains no "github" string at all.
Lowercase "github" appears only in (a) the verbatim ask: field
quote (preserve as-is per witnessable-evolution), (b) the verbatim
blockquote at line 23-24 (preserve as-is), (c) inside markdown URL
paths like https://github.com/... (correct lowercase per URL
convention). No title change needed.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@AceHack AceHack merged commit af4fa33 into main May 5, 2026
22 checks passed
@AceHack AceHack deleted the backlog/B-0198-fsharp-uom-biginteger-upstream-contribution-aaron-2026-05-05 branch May 5, 2026 07:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants