Skip to content
310 changes: 310 additions & 0 deletions docs/craft/subjects/zeta/semiring-basics/module.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,310 @@
# Semirings — the recipe template Zeta plugs different
"arithmetics" into
Comment on lines +1 to +2
Copy link

Copilot AI Apr 23, 2026

Choose a reason for hiding this comment

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

P2: The H1 heading is split across two lines, so only the first line is part of the heading and the second line becomes a separate paragraph. Consider making it a single heading line (or use an explicit <br> if a line break is intentional).

Suggested change
# Semirings — the recipe template Zeta plugs different
"arithmetics" into
# Semirings — the recipe template Zeta plugs different "arithmetics" into

Copilot uses AI. Check for mistakes.

**Subject:** zeta
**Level:** applied (default) + theoretical (opt-in)
**Audience:** contributors curious why Zeta claims
"multiple algebras in one database"
**Prerequisites:**

- `subjects/zeta/zset-basics/` (ℤ-with-retraction is the
signed-integer case; this module shows why it's just
one of many)
- `subjects/zeta/operator-composition/` (operators
Comment on lines +10 to +13
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Point prerequisites to existing modules

The new module declares subjects/zeta/zset-basics/ and subjects/zeta/operator-composition/ as prerequisites, but those modules are not present in this commit’s tree (the only Zeta craft modules are retraction-intuition and semiring-basics). That makes the onboarding path non-actionable for readers and breaks the “prerequisites” contract; either add the missing modules in the same change or mark these references as forthcoming/non-existent explicitly.

Useful? React with 👍 / 👎.

compose the same way across different arithmetics)
Comment on lines +10 to +14
Copy link

Copilot AI Apr 23, 2026

Choose a reason for hiding this comment

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

P1: The prerequisite links subjects/zeta/zset-basics/ and subjects/zeta/operator-composition/ don’t resolve in-tree (under docs/craft/subjects/zeta/ there are only retraction-intuition/ and semiring-basics/). Update these links to existing modules, add the missing modules in this PR, or mark them as forthcoming to avoid sending readers to dead paths.

Suggested change
- `subjects/zeta/zset-basics/` (ℤ-with-retraction is the
signed-integer case; this module shows why it's just
one of many)
- `subjects/zeta/operator-composition/` (operators
compose the same way across different arithmetics)
- `subjects/zeta/retraction-intuition/` (the signed-update
intuition first; this module generalises that one case
into a broader arithmetic template)
- Operator composition across arithmetics (forthcoming;
operators compose the same way across different
arithmetics)

Copilot uses AI. Check for mistakes.

**Next suggested:** `subjects/cs/databases/` (forthcoming
— where Zeta fits among database paradigms)
Comment on lines +10 to +17
Copy link

Copilot AI Apr 24, 2026

Choose a reason for hiding this comment

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

The prerequisite/next-suggested links point at subjects/zeta/zset-basics/, subjects/zeta/operator-composition/, and subjects/cs/databases/, but those modules/directories don't exist under docs/craft/subjects/ in this repo right now. Either add the missing modules, or mark these references as forthcoming and avoid presenting them as resolvable links until they land.

Suggested change
- `subjects/zeta/zset-basics/` (ℤ-with-retraction is the
signed-integer case; this module shows why it's just
one of many)
- `subjects/zeta/operator-composition/` (operators
compose the same way across different arithmetics)
**Next suggested:** `subjects/cs/databases/` (forthcoming
— where Zeta fits among database paradigms)
- Z-set basics *(forthcoming)* (ℤ-with-retraction is the
signed-integer case; this module shows why it's just
one of many)
- Operator composition *(forthcoming)* (operators
compose the same way across different arithmetics)
**Next suggested:** Databases *(forthcoming)* (where
Zeta fits among database paradigms)

Copilot uses AI. Check for mistakes.

---

## The anchor — a recipe template

A recipe template says: *"combine A and B to make
something; combine something and something-else to make
a final thing."* The shape is fixed (combine, combine,
combine). What you plug in — flour and water? paint and
canvas? two votes? — is different each time, and the
*meaning* of "combine" is different each time too.

In baking, "combine" means mix. In mixing paint, it means
blend. In counting votes, it means add. In finding the
shortest path between cities, it means *take the minimum*.
Same recipe template, different arithmetics.

**A semiring is a recipe template for "arithmetics."**
Zeta's operators are written once against the template;
plugging in a different arithmetic gives you a different
pipeline behaviour without rewriting the operators.

---

## Applied track — when / how / why semirings matter

### The claim

Zeta's operators (D, I, z⁻¹, H, filter, map, count, etc.)
don't care which arithmetic you're using underneath.
Swap the arithmetic, and your pipeline computes a
different thing — but with the same structure.

This is what lets Zeta be "one algebra to map the
others": the pipeline shape stays; the *meaning* of
combine + zero + one + multiply changes depending on the
semiring you choose.

### When to reach for a different semiring

You've been using Z-sets (the **signed-integer semiring**
ℤ with ordinary + and ×). Common alternatives:

| Semiring | "Combine" means | "Multiply" means | What it computes |
|---|---|---|---|
| **ℤ (signed integers)** — Zeta default | Add (with negatives for retraction) | Multiply | Retractable counts |
| **ℕ (counting)** | Add (no negatives) | Multiply | Plain multisets; no retraction |
| **𝔹 (Boolean)** | OR (either-or) | AND (both-and) | Plain sets; presence/absence only |
Comment on lines +61 to +65
Copy link

Copilot AI Apr 23, 2026

Choose a reason for hiding this comment

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

P1: The markdown tables here use || at the start of each row, which will render as an extra empty first column (and misalign the table) in standard GFM. Use a single leading | (or no leading pipe) consistently for the header and each row.

Copilot uses AI. Check for mistakes.
| **Tropical (min-plus)** | Take minimum | Add | Shortest paths between nodes |
| **Max-plus** | Take maximum | Add | Longest / critical-path times |
| **Probabilistic ([0,1] fuzzy)** | Take maximum | Multiply | Possibility distributions |
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Separate probabilistic from fuzzy max-times semantics

This row is labeled probabilistic but defines combination as max, which is possibilistic/Viterbi-style behavior rather than probability accumulation. If contributors apply this as a probability semiring, alternative derivations will be collapsed instead of accumulated, yielding systematically wrong results for probabilistic interpretation; either the operation should reflect probabilistic addition semantics or the row should be renamed to fuzzy/possibilistic.

Useful? React with 👍 / 👎.

| **Provenance** | Join witnesses | Combine witnesses | Which source contributed |

Comment on lines +61 to +70
Copy link

Copilot AI Apr 24, 2026

Choose a reason for hiding this comment

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

The semiring comparison table rows start with ||, which creates an empty first column in Markdown tables. If the intent is a 4-column table, switch the leading || to a single | on the header/separator/rows so the table renders correctly.

Copilot uses AI. Check for mistakes.
### Real-world examples — when each fits

- **Counting pages on a website** → ℕ (you never un-count)
- **Tracking order submissions with returns** → ℤ (Z-sets; returns are negatives)
- **"Is this user in the group?"** → 𝔹 (yes/no, no counts)
- **"What's the cheapest route?"** → Tropical (cheapest = min; combining routes = add costs)
- **"What's the fastest project finish?"** → Max-plus (finish time = max of dependencies)
- **"Which source is this fact from?"** → Provenance (tracks which input tuples contributed)

You use Zeta's same operator library for all of these;
only the semiring parameter changes.

### How to use semirings in Zeta (conceptually)

F# signature (sketch — actual APIs are an active-
development surface):

```fsharp
// Instead of hard-coding ℤ:
type ZSet<'K> = ...

// Parameterise over semiring S:
type SemiringSet<'K, 'S when 'S :> ISemiring> = ...

// Same operators, different arithmetic:
count : SemiringSet<'K, ℤ> -> int64 // retractable count
count : SemiringSet<'K, ℕ> -> uint64 // plain count
count : SemiringSet<'K, 𝔹> -> bool // is-any-present
count : SemiringSet<'K, Tropical> -> float // minimum cost
Comment on lines +85 to +99
Copy link

Copilot AI Apr 24, 2026

Choose a reason for hiding this comment

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

The F# signature block is presented as a sketch, but as written it won’t typecheck: it uses non-F# type identifiers (ℤ/ℕ/𝔹), references an ISemiring interface that doesn’t exist in src/, and suggests Tropical results as float while the current implementation uses TropicalWeight backed by int64 (src/Core/NovelMath.fs). Consider making this explicitly pseudocode (no F#-looking types), or update it to use real types from the codebase (Weight, TropicalWeight, etc.) so readers don’t copy a non-compiling pattern.

Suggested change
F# signature (sketch — actual APIs are an active-
development surface):
```fsharp
// Instead of hard-coding :
type ZSet<'K> = ...
// Parameterise over semiring S:
type SemiringSet<'K, 'S when 'S :> ISemiring> = ...
// Same operators, different arithmetic:
count : SemiringSet<'K, ℤ> -> int64 // retractable count
count : SemiringSet<'K, ℕ> -> uint64 // plain count
count : SemiringSet<'K, 𝔹> -> bool // is-any-present
count : SemiringSet<'K, Tropical> -> float // minimum cost
Pseudocode sketch (illustrative only — not current F#
API surface):
```text
// Instead of hard-coding integer weights:
ZSet<Key> = ...
// Parameterise the collection by a chosen semiring:
SemiringSet<Key, Semiring> = ...
// Same operator shape, different arithmetic:
count : SemiringSet<Key, Integers> -> int64 // retractable count
count : SemiringSet<Key, Naturals> -> uint64 // plain count
count : SemiringSet<Key, Booleans> -> bool // is-any-present
count : SemiringSet<Key, TropicalWeight> -> TropicalWeight // minimum cost

Copilot uses AI. Check for mistakes.
```
Comment on lines +88 to +100
Copy link

Copilot AI Apr 23, 2026

Choose a reason for hiding this comment

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

P2: The fenced block is tagged as fsharp, but it’s not valid F# as written (placeholders like ..., and type identifiers like //𝔹). If this is meant to be copy/pasteable, consider making the snippet syntactically valid (e.g., use int64/uint64/bool weight types or type aliases) or change the fence to text/pseudo to avoid implying it compiles.

Copilot uses AI. Check for mistakes.

See the semiring-parameterised-Zeta research memory
(PR #164) for the current regime-change exploration.
Today's Zeta implementation pins ℤ; the research arc is
about lifting the pin.

### Why semirings — compared to alternatives

| Alternative | Problem |
|---|---|
| Separate library per arithmetic (e.g., graph library for shortest-path; OLAP engine for counts; vote tally for sets) | Can't share operator semantics; re-derive IVM properties per library; no composition across |
| One library, case-matching on what-arithmetic internally | Operators grow with-every-new-arithmetic; no formal guarantee of correctness |
| One library, pick-one-arithmetic forever | Misses the generalisation Zeta's algebra actually supports |
Comment on lines +109 to +113
Copy link

Copilot AI Apr 23, 2026

Choose a reason for hiding this comment

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

P2: This table header uses || at the start of rows, which creates an unintended empty first column in Markdown rendering. Switching to a single leading | on the header/separator rows will keep the table shape consistent.

Copilot uses AI. Check for mistakes.

Semirings win when the underlying query shape is the same
but the *meaning* of the numbers differs. That's common
in DB / streaming / planning / graph contexts.

### How to tell if semiring-parameterisation is right

Three self-check questions:

1. **Does your query use `+`, `×`, `0`, `1` (or minimum,
maximum, or other binary combinators)?** If yes, a
semiring framing likely applies.
2. **Could you run the same query over different
interpretations of those operators?** If yes
(shortest-path vs. counting vs. presence), semirings
are the mechanism.
3. **Do you want retraction / IVM guarantees to hold
across all interpretations?** Only some semirings
(notably ℤ) have the additive-inverse property that
makes retraction lossless. Others (ℕ, 𝔹, Tropical)
are retract-free or retract-constrained — document
the tradeoff.

---

## Prerequisites check (self-assessment gate)

Before the next module, you should be able to answer:

- What's the difference between a semiring (has 0, 1, +,
×, distributivity) and a ring (has all that, plus
additive inverses)? Why does retraction need a ring,
not just a semiring?
- Name two real-world problems where the same pipeline
shape applies but the underlying arithmetic differs.
- Why would you choose the tropical semiring (min-plus)
instead of ordinary arithmetic (plus-times) for a
shortest-path problem?

---

## Theoretical track — opt-in (for learners who really care)

*If applied is enough, stop here. The below is for those
going deep.*

### Formal definition

A **semiring** `(R, +, ×, 0, 1)` is a set `R` with two
binary operations `+` and `×` and two distinguished
elements `0` and `1`, satisfying:

1. `(R, +, 0)` is a commutative monoid
2. `(R, ×, 1)` is a monoid
3. `×` distributes over `+`:
`a × (b + c) = (a × b) + (a × c)`
`(a + b) × c = (a × c) + (b × c)`
4. `0` annihilates: `0 × a = a × 0 = 0`

A **commutative semiring** additionally has
`a × b = b × a`.

A **ring** is a semiring with additive inverses — for
every `a ∈ R`, there exists `-a ∈ R` such that
`a + (-a) = 0`.

Retraction in Z-sets depends on ℤ being a ring, not
just a semiring. Pure-semiring-based K-relations (per
Green-Karvounarakis-Tannen PODS 2007) support
lineage / provenance / counting but not retraction.
Comment on lines +181 to +183
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Correct K-relations retraction limitation statement

The statement that “pure-semiring-based K-relations … support lineage/provenance/counting but not retraction” is too broad and contradicts the module’s own semiring table where supports retraction. K-relations instantiated with semirings/rings that have additive inverses (e.g., ) can encode retractions via negative annotations; the limitation is specific to non-invertible semirings like , 𝔹, or tropical. As written, this teaches readers that retraction is outside K-relations entirely, which misstates the framework boundary.

Useful? React with 👍 / 👎.

Comment on lines +181 to +183
Copy link

Copilot AI Apr 23, 2026

Choose a reason for hiding this comment

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

P1: The statement that K-relations are "pure-semiring-based" and therefore "support ... but not retraction" is misleading: rings (like ℤ) are semirings, and K-relations over ℤ do support retraction via additive inverses. Suggest rephrasing to explicitly scope the limitation to semirings without additive inverses (i.e., non-rings).

Suggested change
just a semiring. Pure-semiring-based K-relations (per
Green-Karvounarakis-Tannen PODS 2007) support
lineage / provenance / counting but not retraction.
just a semiring. K-relations over semirings without
additive inverses (per Green-Karvounarakis-Tannen
PODS 2007) support lineage / provenance / counting,
but not retraction; K-relations over rings such as ℤ
do support retraction.

Copilot uses AI. Check for mistakes.

### Canonical semirings in data systems

| Semiring | R | + | × | 0 | 1 | Retraction? |
|---|---|---|---|---|---|---|
Comment on lines +187 to +188
Copy link

Copilot AI Apr 23, 2026

Choose a reason for hiding this comment

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

P2: The canonical semirings table header begins with ||, which will render as a blank leading column in many Markdown parsers. Prefer a single leading | for these rows to avoid the extra empty column.

Copilot uses AI. Check for mistakes.
| Signed integers | ℤ | + | × | 0 | 1 | Yes (ring) |
| Counting | ℕ | + | × | 0 | 1 | No (no negatives) |
| Boolean | {T, F} | ∨ | ∧ | F | T | N/A (can't "retract") |
| Tropical | ℝ ∪ {+∞} | min | + | +∞ | 0 | No (min has no additive inverse) |
| Max-plus | ℝ ∪ {-∞} | max | + | -∞ | 0 | No |
Comment on lines +187 to +193
Copy link

Copilot AI Apr 24, 2026

Choose a reason for hiding this comment

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

The Tropical row states R = ℝ ∪ {+∞}, but Zeta’s current tropical implementation is explicitly (ℤ ∪ {∞}, min, +) with TropicalWeight.Value : int64 and Int64.MaxValue as +∞ (src/Core/NovelMath.fs:13-34). Since this module links to NovelMath.fs as the implementation, aligning the table with the code (or calling out that the table is the general definition vs Zeta’s discrete instantiation) would avoid confusion.

Suggested change
| Semiring | R | + | × | 0 | 1 | Retraction? |
|---|---|---|---|---|---|---|
| Signed integers || + | × | 0 | 1 | Yes (ring) |
| Counting || + | × | 0 | 1 | No (no negatives) |
| Boolean | {T, F} ||| F | T | N/A (can't "retract") |
| Tropical | ℝ ∪ {+∞} | min | + | +∞ | 0 | No (min has no additive inverse) |
| Max-plus | ℝ ∪ {-∞} | max | + | -∞ | 0 | No |
These rows give the **canonical mathematical**
definitions. Zeta's current `NovelMath.fs` tropical
implementation is the discrete instantiation
`(ℤ ∪ {∞}, min, +)` backed by `int64`, not the full
real-valued tropical semiring.
| Semiring | R | + | × | 0 | 1 | Retraction? |
|---|---|---|---|---|---|---|
| Signed integers || + | × | 0 | 1 | Yes (ring) |
| Counting || + | × | 0 | 1 | No (no negatives) |
| Boolean | {T, F} ||| F | T | N/A (can't "retract") |
| Tropical (general) | ℝ ∪ {+∞} | min | + | +∞ | 0 | No (min has no additive inverse) |
| Max-plus (general) | ℝ ∪ {-∞} | max | + | -∞ | 0 | No |

Copilot uses AI. Check for mistakes.
| Fuzzy | [0, 1] | max | × | 0 | 1 | No |
| Lineage | 2^X (subsets of source tuples) | ∪ | ∩ | ∅ | X | N/A |
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Fix lineage semiring multiplication semantics

The canonical-semirings table defines lineage as (2^X, ∪, ∩, ∅, X), but for tuple-lineage/witness tracking the multiplicative step for a join must combine evidence from both sides (set union of witnesses), not set intersection. With × = ∩, joining tuples with disjoint provenance sets collapses to , which loses provenance and contradicts the K-relation interpretation described later in the module. This will teach contributors the wrong algebra for provenance-style joins.

Useful? React with 👍 / 👎.

| Provenance | N[X] (polynomials) | + | × | 0 | 1 | Depends on coefficient ring |
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Mark N[X] provenance row as non-retractable

The table currently lists N[X] for provenance but says retraction “Depends on coefficient ring,” which is inconsistent with the type shown: N[X] is fixed to natural-number coefficients and therefore has no additive inverses. In this module’s own ring-vs-semiring framing, that means retractions cannot be represented losslessly, so this row teaches the wrong tradeoff when readers choose a semiring.

Useful? React with 👍 / 👎.


Comment on lines +187 to +197
Copy link

Copilot AI Apr 24, 2026

Choose a reason for hiding this comment

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

The canonical semirings table also uses || at line starts, which will render as an extra empty column. Use a single leading | for the header/separator/rows to avoid a spurious blank column.

Copilot uses AI. Check for mistakes.
### The K-relations framework (Green-Karvounarakis-Tannen 2007)

The formal basis for semiring-parameterised database
queries. A **K-relation** is a relation `R → K` where
`K` is a commutative semiring. Relational-algebra
operators (select / project / join / union) are defined
in terms of semiring `+` and `×`:

- **union** uses `+` (disjunction of evidence)
- **join** uses `×` (conjunction of evidence)
- **projection** uses `+` (aggregate / marginalise)
- **selection** uses multiplication-by-0-or-1 (mask)

GKT proved that every relational-algebra result over
K-relations is **semiring-homomorphic** — changing the
semiring gives a systematic reinterpretation of the
Comment on lines +211 to +213
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Restrict homomorphism claim to positive relational algebra

The text currently states this result for "every relational-algebra result," but the GKT semiring-homomorphism theorem applies to positive relational algebra (SPJU), not arbitrary RA with non-monotone operators like difference/negation. As written, readers can infer that semiring-swapping preserves semantics for queries outside that fragment, which is incorrect and can lead to wrong expectations about what operators are validly semiring-parameterised.

Useful? React with 👍 / 👎.

query.

### Zeta's regime-change claim (Otto-session memory)

Per the semiring-parameterised-Zeta memory (Otto-17-era):

> Zeta's retraction-native operator algebra (D / I / z⁻¹
> / H) is the stable meta-layer. The semiring becomes a
> pluggable parameter. All other DB algebras (tropical
> / Boolean / probabilistic / lineage / provenance /
> Bayesian) host within the one Zeta algebra by
> semiring-swap.

The regime-change framing: Zeta doesn't replace
shortest-path libraries / Boolean set logic / lineage
tools — it provides the operator-algebra substrate that
all of them can slot into as semiring-parameterised
instances.

### What requires care

- **Non-ring semirings lose retraction.** If you use
tropical or Boolean as the base, pipelines can't
retract losslessly. Operator documentation must call
this out.
- **Some operators require additional structure**
(e.g., **idempotence** for Boolean; **convergence** for
fixpoint queries). Not all semirings satisfy these.
- **Type-system shape**: parameterising F# types over
semirings requires careful interface design; see
`src/Core/Algebra.fs` for the current state and the
regime-change memory for research-direction.

### Theoretical prerequisites (if going deeper)

- Abstract algebra — monoids / semirings / rings /
distributivity
- Category theory — semiring-valued functors; Kan
extensions
- Database theory — K-relations (GKT 2007); provenance
polynomials
- Graph algorithms — shortest-path via tropical
semirings (Kleene stars; matrix-semiring powers)

---

## Composes with

- `subjects/zeta/zset-basics/` — ℤ-semiring as one
instance
- `subjects/zeta/retraction-intuition/` — retraction
requires ring-structure, not just semiring
- `subjects/zeta/operator-composition/` — same operators
compose across different semirings
- `docs/TECH-RADAR.md` — Tropical semiring Adopt (ring
Copy link

Copilot AI Apr 23, 2026

Choose a reason for hiding this comment

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

P2: In docs/TECH-RADAR.md, the "11" for Tropical semiring is the Round column, not a "ring" number. Updating this wording will keep the cross-reference accurate (Tech Radar table columns are Technique | Ring | Round | Notes).

Suggested change
- `docs/TECH-RADAR.md` — Tropical semiring Adopt (ring
- `docs/TECH-RADAR.md` — Tropical semiring Adopt (round

Copilot uses AI. Check for mistakes.
11); residuated lattices Adopt; provenance deferred
Copy link

Copilot AI Apr 24, 2026

Choose a reason for hiding this comment

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

This docs/TECH-RADAR.md reference claims “provenance deferred”, but docs/TECH-RADAR.md currently has rows for Tropical semiring and Residuated lattices and no provenance entry. Either add a provenance row to TECH-RADAR (so this bullet is grounded), or drop/soften the provenance claim here to match the radar source of truth.

Suggested change
11); residuated lattices Adopt; provenance deferred
11); residuated lattices Adopt

Copilot uses AI. Check for mistakes.
- `docs/ALIGNMENT.md` HC-2 — retraction-native
operations (strictly applies to ring-based; documented
for other semirings)
- `src/Core/Algebra.fs` — `Weight = int64` pins ℤ
today
- `src/Core/NovelMath.fs` — tropical semiring
implementation
- `src/Core/NovelMathExt.fs` — research-grade extensions
- Per-user memory
`project_semiring_parameterized_zeta_regime_change_one_algebra_to_map_others_2026_04_22.md`
Comment on lines +278 to +279
Copy link

Copilot AI Apr 23, 2026

Choose a reason for hiding this comment

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

P1 (xref): This references a "Per-user memory" file, but the semiring regime-change document appears to live in-repo under memory/project_semiring_parameterized_zeta_regime_change_one_algebra_to_map_others_2026_04_22.md. Consider updating the label (it’s not per-user) and the path so the cross-reference resolves.

Suggested change
- Per-user memory
`project_semiring_parameterized_zeta_regime_change_one_algebra_to_map_others_2026_04_22.md`
- Project memory
`memory/project_semiring_parameterized_zeta_regime_change_one_algebra_to_map_others_2026_04_22.md`

Copilot uses AI. Check for mistakes.
— full regime-change research framing

---

## Module-level discipline audit (bidirectional-alignment)

- **AI → human**: does this module help the AI explain
semirings clearly to a new contributor? YES —
recipe-template anchor, real-world examples table,
F# signature sketch, alternative comparison, self-
check gate.
- **Human → AI**: does this module help a human
contributor understand what the AI treats as
semiring-parameterisation? YES — K-relations
reference, GKT 2007 citation, Zeta regime-change
framing, retraction-ring-vs-semiring distinction
surfaced.

**Module passes both directions.**

---

## Attribution

Otto (loop-agent PM hat) authored v0. Fourth Craft
module (after zset-basics / retraction-intuition /
operator-composition). Content accuracy: future Soraya
(formal-verification) review on formal definitions;
Hiroshi (complexity-theory) on shortest-path /
idempotence / Kleene-star claims; Kira (harsh-critic)
normal pass.
Comment on lines +304 to +310
Copy link

Copilot AI Apr 23, 2026

Choose a reason for hiding this comment

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

P1: The ## Attribution section includes direct contributor/agent name attribution (and review assignments). Repo standing rule is to avoid names in code/docs/skills and use role references instead; names belong only under memory/persona/<name>/ and optionally docs/BACKLOG.md when capturing a request (see docs/AGENT-BEST-PRACTICES.md:284-292). Please rewrite this section to be role-based (or remove it) to comply.

Suggested change
Otto (loop-agent PM hat) authored v0. Fourth Craft
module (after zset-basics / retraction-intuition /
operator-composition). Content accuracy: future Soraya
(formal-verification) review on formal definitions;
Hiroshi (complexity-theory) on shortest-path /
idempotence / Kleene-star claims; Kira (harsh-critic)
normal pass.
Initial draft produced via a loop-agent project-
management pass. Fourth Craft module (after zset-
basics / retraction-intuition / operator-composition).
Content accuracy follow-up: formal-verification review
on formal definitions; complexity-theory review on
shortest-path / idempotence / Kleene-star claims; and
a standard harsh-critic pass.

Copilot uses AI. Check for mistakes.
Loading