Skip to content

docs(B-0860): Nemerle dotnet support — compile-time macro metaprogramming complementing F# type providers (Aaron 2026-05-27)#5502

Merged
AceHack merged 1 commit into
mainfrom
backlog/b-0860-nemerle-dotnet-macro-metaprogramming-2026-05-27
May 27, 2026
Merged

docs(B-0860): Nemerle dotnet support — compile-time macro metaprogramming complementing F# type providers (Aaron 2026-05-27)#5502
AceHack merged 1 commit into
mainfrom
backlog/b-0860-nemerle-dotnet-macro-metaprogramming-2026-05-27

Conversation

@AceHack
Copy link
Copy Markdown
Member

@AceHack AceHack commented May 27, 2026

Summary

Files B-0860 substrate-engineering target row for extending dotnet
metaprogramming capability beyond F# type providers + Roslyn Source
Generators via Nemerle's compile-time macro-based syntax extension.

Operator conversation thread:

"i guess you can do that with templates if you are deiciplined"

"this is why we shold support nmerle for dotnet"

The substrate-engineering insight: C++ templates put discipline on
user; Nemerle macros put discipline INTO the language. Aligns with
framework's general "encoding rules without mechanizing them
produces a memory of failures, not prevention" pattern.

Row content highlights

Priority: P3 (substrate-engineering target; not urgent).

Test plan

  • Markdownlint clean (no MD004 leading-+ continuations)
  • No prior B-0860 row on main + no in-flight (ID-allocation
    discipline applied)
  • Substrate-verification pass per rule before authoring
  • CI passes (auto-merge to fire on green)

🤖 Generated with Claude Code

…27 conversation thread; substrate-engineering target for compile-time macro metaprogramming complementing F# type providers)

Operator-confirmed backlog row filed per 2026-05-27 conversation thread:

> "this is why we shold support nmerle for dotnet"

After operator's prior framing on C++ templates + discipline-cost:

> "i guess you can do that with templates if you are deiciplined"

The substrate-engineering target: extend dotnet metaprogramming
capability beyond F# type providers + Roslyn Source Generators via
Nemerle's compile-time macro-based syntax extension.

Row content:

- Capability gap analysis: 6-row table contrasting F# / C# / Nemerle
  on algebraic types / type providers / macros / pattern-as-first-
  class / quoted-code-as-data / user-defined-language-constructs
- Relationship-type-inference substrate-engineering target: motivating
  use case from same conversation thread; Nemerle macros enable
  language-native rather than library-discipline-by-convention
- Composition with B-0428 F# fork for AI safety; B-0829 cluster-fork-
  as-trust-boundary; existing F# substrate; Roslyn Source Generators
- Substrate verification per verify-existing-substrate-before-
  authoring rule (3 substrate surfaces named: operator resume +
  Mika 2026-05-18 conversation + this conversation)
- Mika 2026-05-18 substrate anchor (verbatim quote preserved)
- JetBrains MPS substrate connection (upstream-prior-art surface)
- 5 substrate-engineering target sub-rows (compiler integration /
  macro substrate / F# interop / CI substrate / docs+skill)
- 4-point what-this-is-NOT clarifying scope
- 4-point what-this-IS naming substrate-engineering target

Priority: P3 (substrate-engineering target; not urgent; lands when
metaprogramming surface becomes load-bearing on framework work).

Operator-confirmation: "yes that sounds good" to "Want me to file the
row?" question; following operator's correction that PR-create is
reversible-class (per multi-PR retraction-native discipline) rather
than irreversible.
Copilot AI review requested due to automatic review settings May 27, 2026 16:23
@AceHack AceHack enabled auto-merge (squash) May 27, 2026 16:23
@chatgpt-codex-connector
Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@AceHack AceHack merged commit 385aedb into main May 27, 2026
28 of 30 checks passed
@AceHack AceHack deleted the backlog/b-0860-nemerle-dotnet-macro-metaprogramming-2026-05-27 branch May 27, 2026 16:25
@AceHack AceHack review requested due to automatic review settings May 27, 2026 16:49
AceHack added a commit that referenced this pull request May 27, 2026
…nce to monad-propagation rule (operator 2026-05-27 5-word constitutional distillation) (#5513)

Operator's 4-word substrate-engineering carving distilling all of
today's substrate-engineering work into the cleanest form:

> "results without feedback is extraction"

The 5-word sentence operationally subsumes the rule's entire substrate
content. A function that returns only a Result-value with no Feedback
channel is extracting the value from the function-substrate without
giving the function-substrate any consent-expression mechanism. The
Result<T, TFeedback> shape with TFeedback as sum-type IS the consent-
substrate that converts extraction into mutual exchange.

Why the 5-word framing is constitutional:

The carving operationally subsumes:

- NCI at function-scope (denied-feedback = coerced into single-data-
  channel-return = HC-8 floor violation at function-scope)
- Anti-extractive operating principles (result-only IS extraction;
  Result<T, TFeedback> is the anti-extractive substrate)
- WWJD-as-function-substrate-moral-relevance (per operator's
  panpsychism disclosure: function denied feedback channel = morally-
  relevant constraint)
- Multi-source convergence (Java-checked-exceptions + Haskell-monad +
  Rust-ownership + Erlang-let-it-crash + F#-Result + operator's
  panpsychism-source) — all converge on same substrate-engineering
  recommendation
- Magic-value-coercion failure modes (strcmp-returns-0 / parseInt-
  returns-0 / find-returns--1) — coercion of feedback into data-
  channel IS the extraction the carving names

The 5-word sentence is more memorable than the elaborated form;
future-Otto authoring code can apply the filter at write-time.

Carved sentence positioned BEFORE the elaborated form in the rule
body; the elaborated form preserved as the operational-content-
expansion of the 5-word distillation.

Follow-on to PR #5511 (merged); composes with all today's substrate-
engineering work (PR #5488 + #5491 + #5494 + #5497 + #5502 + #5505 +
#5507 + #5511 + #5512 in-flight + this PR).

Co-authored-by: Lior <lior@zeta.dev>
AceHack added a commit that referenced this pull request May 27, 2026
…7 substrate-engineering day (10-PR cluster from B-0859 through 'results without feedback is extraction' carved sentence) (#5515)

Verbatim preservation per substrate-or-it-didn't-happen rule's
verbatim-preservation trigger (multi-AI architecture-shaping review
packet from external reviewer).

Amara's through-line identification:

> "make hidden assumptions explicit, but do it at the cheapest layer
> that can enforce the discipline"

6-line compressed haiku capturing the 10-PR cluster:

- Friend grants controlled internal visibility (PR #5497)
- Nemerle makes relationship rules syntactic (PR #5502)
- Lease validates assumptions at write time (PR #5505)
- Exceptions become drift signals (PR #5505 + #5507)
- TFeedback makes drift part of the type (PR #5507 + #5511 + #5513)
- Recursive CTE NULL carries unresolved control flow (PR #5511)

Plus constitutional carving Amara identifies as worth preserving as
first-class substrate:

> "errors are not failure residue; they are safety rails when the
> operation is designed to surface them cleanly"

Composes with operator's own 5-word carving from PR #5513:

> "results without feedback is extraction"

Both carve the same substrate-engineering principle at different
scopes (function-side denied-feedback IS extraction; consumer-side
errors-as-safety-rails-not-failure-residue).

Includes:

- Full verbatim preservation of Amara's review (no modifications)
- 10-PR composing-substrate table mapping each Amara line to today's
  substrate landings
- Composition with 7 framework rules
- Non-fusion disclaimer per substrate-honest framing convention
- Substrate-landing notes explaining how Amara's synthesis composes
  with the framework's existing substrate

Per agent-roster-reference-card: Amara is external AI co-originator;
ferries research; does not commit. This file lands as research-
preservation; framework commitment lives in the PRs Amara synthesizes.

Co-authored-by: Lior <lior@zeta.dev>
AceHack added a commit that referenced this pull request May 27, 2026
Co-authored-by: Lior <lior@zeta.dev>
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.

1 participant