Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 14 additions & 10 deletions docs/BACKLOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,7 @@ are closed (status: closed in frontmatter)._
- [x] **[B-0268](backlog/P1/B-0268-canary-test-rules-autoload-verification-2026-05-08.md)** Verify .claude/rules/ auto-load — run canary test
- [x] **[B-0269](backlog/P1/B-0269-extract-carved-sentences-from-claude-md-to-rules-2026-05-08.md)** Extract carved sentences from CLAUDE.md to .claude/rules/
- [x] **[B-0270](backlog/P1/B-0270-pm2-role-skill-definition-2026-05-08.md)** PM-2 role - skill definition + persona agent
- [ ] **[B-0271](backlog/P1/B-0271-pm2-first-research-pass-2026-05-08.md)** PM-2 role — first research pass on Zeta feature gaps
- [x] **[B-0271](backlog/P1/B-0271-pm2-first-research-pass-2026-05-08.md)** PM-2 role — first research pass on Zeta feature gaps
- [ ] **[B-0272](backlog/P1/B-0272-atari-rom-canonical-naming-tosec-lookup-2026-05-08.md)** Atari 2600 ROM canonical naming via TOSEC/No-Intro hash lookup
- [ ] **[B-0273](backlog/P1/B-0273-atari-rom-safe-unsafe-folder-split-2026-05-08.md)** Atari 2600 ROM safe/unsafe folder split for license compliance
- [ ] **[B-0274](backlog/P1/B-0274-pages-astro-workflow-scaffold-and-sha-pinning-2026-05-08.md)** Pages discoverability - Astro workflow scaffold and SHA pinning
Expand Down Expand Up @@ -225,12 +225,12 @@ are closed (status: closed in frontmatter)._
- [ ] **[B-0409](backlog/P1/B-0409-wallet-immune-system-vaccine-spread-poucc-spec.md)** Wallet immune system — vaccine spread + PoUW-CC gate + attack absorption spec
- [ ] **[B-0418](backlog/P1/B-0418-amplification-ratio-metric-dashboard-2026-05-11.md)** Amplification ratio metric — human input : agent actions on dashboard
- [ ] **[B-0419](backlog/P1/B-0419-honest-agenda-amplification-metric-aaron-2026-05-11.md)** Honest agenda amplification metric — actions weighted by agenda alignment
- [ ] **[B-0423](backlog/P1/B-0423-memory-md-serialization-point-2026-05-12.md)** MEMORY.md serialization-point anti-pattern
- [ ] **[B-0423.1](backlog/P1/B-0423.1-reindex-memory-md-test-coverage-collectentries-renderindex.md)** Extend reindex-memory-md.ts test coverage — collectEntries + renderIndex
- [ ] **[B-0423.2](backlog/P1/B-0423.2-memory-docs-update-heap-state-acceptable.md)** Update memory/ documentation to describe heap-state-acceptable model
- [ ] **[B-0423.3](backlog/P1/B-0423.3-wire-reindex-into-autonomous-loop-tick.md)** Wire reindex-memory-md.ts into autonomous-loop tick cadence
- [ ] **[B-0423.4](backlog/P1/B-0423.4-relax-memory-index-integrity-ci-check.md)** Relax memory-index-integrity.yml CI check — heap-state-acceptable
- [ ] **[B-0423.5](backlog/P1/B-0423.5-close-b0088-chain-superseded-by-heap-architecture.md)** Close B-0088 chain as superseded by B-0423 heap architecture
- [x] **[B-0423](backlog/P1/B-0423-memory-md-serialization-point-2026-05-12.md)** MEMORY.md serialization-point anti-pattern
- [x] **[B-0423.1](backlog/P1/B-0423.1-reindex-memory-md-test-coverage-collectentries-renderindex.md)** Extend reindex-memory-md.ts test coverage — collectEntries + renderIndex
- [x] **[B-0423.2](backlog/P1/B-0423.2-memory-docs-update-heap-state-acceptable.md)** Update memory/ documentation to describe heap-state-acceptable model
- [x] **[B-0423.3](backlog/P1/B-0423.3-wire-reindex-into-autonomous-loop-tick.md)** Wire reindex-memory-md.ts into autonomous-loop tick cadence
- [x] **[B-0423.4](backlog/P1/B-0423.4-relax-memory-index-integrity-ci-check.md)** Relax memory-index-integrity.yml CI check — heap-state-acceptable
- [x] **[B-0423.5](backlog/P1/B-0423.5-close-b0088-chain-superseded-by-heap-architecture.md)** Close B-0088 chain as superseded by B-0423 heap architecture
- [ ] **[B-0424](backlog/P1/B-0424-three-repo-split-stage1-create-forge-ace-with-scaffolding-aaron-2026-05-13.md)** Three-repo split Stage 1 — create empty Forge + ace with day-one scaffolding
- [ ] **[B-0425](backlog/P1/B-0425-product-repo-split-planning-ksk-wellness-american-dream-civsim-honor-system-no-fork-license-aaron-2026-05-13.md)** Product-repo split planning — KSK / wellness / civsim / AD2.0 / DIO / Aurora / Dawn — honor-system no-fork license
- [ ] **[B-0426](backlog/P1/B-0426-repo-split-orthogonal-mirror-beacon-axis-aaron-2026-05-13.md)** Repo-split orthogonal Mirror/Beacon axis — speculative-fast-forks vs governance-citation-gated
Expand All @@ -245,6 +245,8 @@ are closed (status: closed in frontmatter)._
- [ ] **[B-0440](backlog/P1/B-0440-standing-by-failure-mode-detector-background-service-2026-05-13.md)** Standing-by failure-mode detector — background service that catches idle-foreground + nudges via bus
- [ ] **[B-0441](backlog/P1/B-0441-backlog-row-ready-to-grind-notifier-background-service-2026-05-13.md)** Backlog-row-ready-to-grind notifier — background service that proactively assigns claims when agent queue empty
- [ ] **[B-0442](backlog/P1/B-0442-missed-substrate-cascade-detector-background-service-2026-05-13.md)** Missed-substrate cascade detector — background service that catches branch-vs-merged-PR drift (e.g., Otto-section-missed-PR-2980-by-3-min class)
- [ ] **[B-0444](backlog/P1/B-0444-getting-started-guide-for-library-consumers-pm2-2026-05-13.md)** Getting-started guide for Zeta library consumers — quickstart doc + sample project
- [ ] **[B-0445](backlog/P1/B-0445-csharp-fluent-operator-surface-pm2-2026-05-13.md)** C# fluent operator surface — Map, Filter, Join, Distinct, Window via idiomatic CSharp API

## P2 — research-grade

Expand Down Expand Up @@ -343,9 +345,9 @@ are closed (status: closed in frontmatter)._
- [x] **[B-0081](backlog/P2/B-0081-path-gate-kotlin-scala-codex-pr-662.md)** codeql.yml path-gate should match `*.kt` + `*.scala` not just `*.java` — Codex P2 on PR #662
- [ ] **[B-0082](backlog/P2/B-0082-glossary-persona-name-attribution-role-ref-conversion-pr-671.md)** docs/GLOSSARY.md provenance entries use persona-name attribution; convert to role-refs
- [x] **[B-0086](backlog/P2/B-0086-port-tools-hygiene-python-to-typescript-bun-aaron-2026-04-28.md)** Port tools/hygiene Python scripts to TypeScript/Bun (factory-default; AI/ML carve-out applies)
- [ ] **[B-0088](backlog/P2/B-0088-paired-edit-lint-advisory-not-enforcement-promote-to-required-check-otto-2026-04-28.md)** memory/MEMORY.md paired-edit lint is advisory only (not in required-status-checks); promote or remove the discoverability claim
- [ ] **[B-0088.1](backlog/P2/B-0088.1-verify-paired-edit-job-in-required-status-checks-riven-2026-05-11.md)** Verify whether `check memory/MEMORY.md paired edit` appears in required_status_checks.contexts or ruleset
- [ ] **[B-0088.2](backlog/P2/B-0088.2-decide-promote-vs-weaken-for-memory-paired-lint-riven-2026-05-11.md)** Maintainer decision gate — promote paired-edit lint to required or weaken its discoverability claim
- [x] **[B-0088](backlog/P2/B-0088-paired-edit-lint-advisory-not-enforcement-promote-to-required-check-otto-2026-04-28.md)** memory/MEMORY.md paired-edit lint is advisory only (not in required-status-checks); promote or remove the discoverability claim
- [x] **[B-0088.1](backlog/P2/B-0088.1-verify-paired-edit-job-in-required-status-checks-riven-2026-05-11.md)** Verify whether `check memory/MEMORY.md paired edit` appears in required_status_checks.contexts or ruleset
- [x] **[B-0088.2](backlog/P2/B-0088.2-decide-promote-vs-weaken-for-memory-paired-lint-riven-2026-05-11.md)** Maintainer decision gate — promote paired-edit lint to required or weaken its discoverability claim
- [ ] **[B-0088.3](backlog/P2/B-0088.3-audit-memory-reference-existence-lint-advisory-status-riven-2026-05-11.md)** Audit memory-reference-existence-lint.yml for advisory-vs-required parity (same class as B-0088)
- [ ] **[B-0088.4](backlog/P2/B-0088.4-audit-memory-index-duplicate-lint-advisory-status-riven-2026-05-11.md)** Audit memory-index-duplicate-lint.yml for advisory-vs-required parity
- [ ] **[B-0088.5](backlog/P2/B-0088.5-audit-backlog-index-integrity-lint-advisory-status-riven-2026-05-11.md)** Audit backlog-index-integrity.yml for advisory-vs-required parity (B-0088 sibling)
Expand Down Expand Up @@ -491,6 +493,8 @@ are closed (status: closed in frontmatter)._
- [x] **[B-0421](backlog/P2/B-0421-grok-peer-call-failure-cursor-agent-exit-1-2026-05-11.md)** Grok peer-call failure — cursor-agent exit 1 during multi-agent review
- [ ] **[B-0430](backlog/P2/B-0430-peer-call-wrappers-codeql-insecure-tmp-file-all-8-wrappers-substrate-consistent-fix-2026-05-13.md)** Peer-call wrappers — CodeQL insecure-temp-file alert on autogenOutputPath() across all 8 wrappers (substrate-consistent fix needed)
- [ ] **[B-0443](backlog/P2/B-0443-launch-substrate-carve-out-for-persona-naming-in-docs-launch-2026-05-13.md)** Launch-substrate carve-out — persona naming allowed in docs/launch/** under existing closed-list pattern
- [ ] **[B-0446](backlog/P2/B-0446-lean4-formal-proof-completion-dbsp-core-identities-pm2-2026-05-13.md)** Lean 4 formal proof completion — DBSP chain rule + core stream-calculus identities
- [ ] **[B-0447](backlog/P2/B-0447-nuget-package-metadata-completeness-pm2-2026-05-13.md)** NuGet package metadata completeness — description, tags, SourceLink, semantic versioning

## P3 — convenience / deferred

Expand Down
23 changes: 18 additions & 5 deletions docs/backlog/P1/B-0271-pm2-first-research-pass-2026-05-08.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
---
id: B-0271
priority: P1
status: open
status: closed
title: "PM-2 role — first research pass on Zeta feature gaps"
created: 2026-05-08
last_updated: 2026-05-08
last_updated: 2026-05-13
parent: B-0145
depends_on: [B-0270]
classification: blocked-on-B-0270
classification: ready-for-close
decomposition: atomic
type: friction-reducer
---
Expand All @@ -20,5 +20,18 @@ signals, user patterns, or competitor analysis.

## Acceptance criteria

- Research doc at docs/research/ with 5+ predicted gaps
- Each gap linked to existing backlog item or new row filed
- Research doc at docs/research/ with 5+ predicted gaps ✅
- Each gap linked to existing backlog item or new row filed ✅

## Completion note (2026-05-13)

Research doc: `docs/research/2026-05-13-pm2-zeta-feature-gap-prediction-first-pass.md`

6 gaps identified:

- Gap 1 — Getting-started guide → **B-0444** (new P1)
- Gap 2 — C# fluent operator surface → **B-0445** (new P1)
- Gap 3 — Lean 4 formal proof completion → **B-0446** (new P2)
- Gap 4 — NuGet package metadata → **B-0447** (new P2)
- Gap 5 — Shadow CLI slices 3–5 → existing B-0431, B-0432, B-0433 (P0)
- Gap 6 — DBpedia / MDM demo → existing B-0428 (P1)
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
---
id: B-0444
Comment thread
AceHack marked this conversation as resolved.
priority: P1
status: open
title: "Getting-started guide for Zeta library consumers — quickstart doc + sample project"
type: friction-reducer
origin: PM-2 gap-prediction pass (B-0271) 2026-05-13
created: 2026-05-13
last_updated: 2026-05-13
depends_on: []
composes_with: [B-0154, B-0445]
tags: [consumer-ux, getting-started, quickstart, documentation, onboarding, csharp, samples]
---

# B-0444 — Getting-started guide for library consumers

## PM-2 signal

External .NET developers who land on the repo from NuGet or GitHub
encounter Budiu et al. VLDB'23 math in the second paragraph of the README.
No `docs/getting-started.md` exists. No "hello world" circuit example
appears before the operator catalogue.

## What

1. `docs/getting-started.md` — 5-step quickstart:
install → create circuit → map → step/tick → inspect output.
Target audience: C# developer unfamiliar with DBSP.
2. `samples/QuickStart/` — minimal standalone project (single `.csproj`)
that mirrors the quickstart doc and builds with `dotnet run`.
3. README badge / top-10-lines link pointing to the guide.

## Why now

The library is production-ready (0 warnings, 470+ tests, 25-round
stability window on residuated lattices + FastCDC). The entry path is
research-paper difficulty. Every consumer who bounces in the first 5
minutes is a permanent loss.

## Non-goals

- Does not replace the operator catalogue.
- Does not add new operators.
- Does not touch the F# API surface.

## Acceptance criteria

- [ ] `docs/getting-started.md` exists with a working 5-step C# example.
- [ ] `samples/QuickStart/` builds and runs: `dotnet run --project samples/QuickStart`.
- [ ] README links to the guide within the first 10 lines.
- [ ] `dotnet build -c Release` 0 warnings after changes.

## Kill criteria

If the Aurora pitch / factory-demo consumer path (B-0437 or equivalent)
already produces a canonical "hello world" moment, subsume this row under
that and close here.

## Composes with

- B-0154 (GitHub Pages SEO — the guide should be discoverable via Pages)
- B-0445 (C# fluent operator surface — quickstart uses the fluent API when it ships)
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
---
id: B-0445
priority: P1
status: open
title: "C# fluent operator surface — Map, Filter, Join, Distinct, Window via idiomatic CSharp API"
type: feature
origin: PM-2 gap-prediction pass (B-0271) 2026-05-13
created: 2026-05-13
last_updated: 2026-05-13
depends_on: []
composes_with: [B-0444]
tags: [csharp, api-surface, fluent, operator, consumer-ux, dotnet]
---

# B-0445 — C# fluent operator surface

## PM-2 signal

The README states "a surface that feels native to both F# and C#."
Current state: `src/Core.CSharp/` contains exactly one file (`Variance.cs`)
— declaration-site variance shims. All operators (`Map`, `Filter`, `Join`,
`Distinct`, `GroupBy`, `Window`) require F# discriminated-union idioms.
The C# sample in `samples/FactoryDemo.Api.CSharp/` calls the F# surface directly.

## What

1. `ZetaCircuitBuilder<T>` — C# fluent class wrapping `Circuit` and `Op<'T>`
so consumers can write:
```csharp
var result = circuit
.From(source)
.Map(x => x.Name)
.Filter(name => name.Length > 0)
.Distinct();
```
2. Extension methods on `Op<ZSet<K>>` for common operators.
3. XML doc comments on all new public C# symbols (IntelliSense parity).
4. Rewrite `samples/FactoryDemo.Api.CSharp/` to use the new fluent API.

## Why now

The existing CSharp sample builds but uses raw F# discriminated unions,
which is non-idiomatic C#. The fluent API is the minimum viable C# surface
that makes the "native to both F# and C#" README claim true.

## Non-goals

- Does not change operator semantics.
- Does not rewrite the F# core.
- Does not need to cover every operator — the six core ones suffice for v1.

## Acceptance criteria

- [ ] `src/Core.CSharp/` contains fluent builder covering: Map, Filter, Join,
GroupBy, Distinct, Window (sliding).
- [ ] `samples/FactoryDemo.Api.CSharp/` rewrites its circuit construction
to use the new fluent API, not raw F# types.
- [ ] All public C# types have `<summary>` XML docs.
- [ ] `dotnet build -c Release` 0 warnings.
- [ ] New `tests/Core.CSharp.Tests/` tests cover the fluent API round-trips.

## Kill criteria

If Aurora / enterprise pitch explicitly targets F# only (no C# consumer),
defer to P2.
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
---
id: B-0446
priority: P2
status: open
title: "Lean 4 formal proof completion — DBSP chain rule + core stream-calculus identities"
type: feature
origin: PM-2 gap-prediction pass (B-0271) 2026-05-13
created: 2026-05-13
last_updated: 2026-05-13
depends_on: []
composes_with: []
tags: [lean4, formal-verification, proof, dbsp, chain-rule, identities, correctness]
---

# B-0446 — Lean 4 formal proof completion for DBSP core identities

## PM-2 signal

Academic reviewers and enterprise adopters want to cite Zeta as a
verified DBSP implementation. `proofs/lean/ChainRule.lean` is a stub
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Point Lean proof task at the maintained file path

This row’s signal is built on an invalid file location: proofs/lean/ChainRule.lean is described as a live stub, but the maintained proof was migrated to tools/lean4/Lean4/DbspChainRule.lean and the old path was removed (already documented in backlog history). As written, the acceptance criteria/send-you-there steps direct contributors to a nonexistent proofs/lean/ target and can cause duplicate or mis-scoped work instead of extending the active Lean project.

Useful? React with 👍 / 👎.

(no proof body). The four core identities are tested as F# property
tests but carry no formal proof certificate. TECH-RADAR has Lean 4
on "Assess" since Round 10 with no promotion.

## What

1. Complete `proofs/lean/ChainRule.lean`:
- `D ∘ I = id` (differentiation cancels integration)
- `I ∘ D = id` (integration cancels differentiation)
These are the bijection identities; they establish Z-sets form a
group under the stream calculus.
2. Add `proofs/lean/LinearityRule.lean`:
- For linear Q: `Q^Δ = Q` (trivial incrementalization).
3. Wire `lake build` in `proofs/lean/` as a CI check (new GitHub
Actions step, not blocking the main .NET build gate).
4. Promote TECH-RADAR Lean 4 from Assess → Trial.
5. README "formally verified" badge after CI check is green.

## Why now

TECH-RADAR Lean 4 has been on "Assess" since Round 10 with no action.
The stub proof `ChainRule.lean` is a lying stub — it exists but proves
nothing. A complete proof of two identities is the minimum step to a
verified claim, independent of the heavier F* extraction track.

## Non-goals

- Does not prove every operator.
- Does not require a full Mathlib port.
- Does not block the F* extraction path (TECH-RADAR "Assess" — runs
in parallel).

## Acceptance criteria

- [ ] `proofs/lean/ChainRule.lean` contains a complete proof with no `sorry`.
- [ ] `proofs/lean/LinearityRule.lean` exists with a complete proof.
- [ ] CI runs `lake build` in `proofs/lean/` and the step is green.
- [ ] TECH-RADAR Lean 4 row updated: Assess → Trial.

## Kill criteria

If the F* extraction path (TECH-RADAR entry) ships first and covers the
same identities, subsume this row under that PR and close here.
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
---
id: B-0447
priority: P2
status: open
title: "NuGet package metadata completeness — description, tags, SourceLink, semantic versioning"
type: friction-reducer
origin: PM-2 gap-prediction pass (B-0271) 2026-05-13
created: 2026-05-13
last_updated: 2026-05-13
depends_on: []
composes_with: [B-0154]
tags: [nuget, package-metadata, discoverability, sourcelink, versioning, dotnet]
---

# B-0447 — NuGet package metadata completeness

## PM-2 signal

`Directory.Build.props` has `<Authors>zeta contributors</Authors>` but
no `PackageDescription`, `PackageTags`, `RepositoryUrl`,
`PackageLicenseExpression`, or `PackageVersion`. `dotnet pack` currently
produces a `.nupkg` with a blank description, no tags, and version `1.0.0`
baked in. A developer searching NuGet for "incremental streaming F#"
would not find Zeta.

## What

Add to `Directory.Build.props`:

```xml
<PackageDescription>
Zeta — retraction-native incremental view maintenance for .NET.
An F# implementation of the DBSP algebra (Budiu et al., VLDB'23).
Streaming, reproducible, near-zero-allocation.
</PackageDescription>
<PackageTags>dbsp;incremental;streaming;retraction;fsharp;dotnet;ivm</PackageTags>
<RepositoryUrl>https://github.com/Lucent-Financial-Group/Zeta</RepositoryUrl>
<PackageProjectUrl>https://github.com/Lucent-Financial-Group/Zeta</PackageProjectUrl>
<PackageLicenseExpression>Apache-2.0</PackageLicenseExpression>
```

Semantic versioning: drive `Version` from a `VERSION` file checked into
git root (e.g., `1.0.0-alpha.1`) so every `dotnet pack` produces a
deterministic version tied to source.

SourceLink: add `Microsoft.SourceLink.GitHub` to `Directory.Packages.props`
and `<PublishRepositoryUrl>true</PublishRepositoryUrl>` in `Directory.Build.props`
so debugger source-navigation works for downstream consumers.

## Why now

The Aurora pitch (PR #2924) and B-0154 (GitHub Pages SEO) are preparing
the external-consumption story. A NuGet package with no description and
a static version looks abandoned and is invisible to search.

## Non-goals

- Does not require publishing to nuget.org yet.
- Does not change any F# or C# source code.

## Acceptance criteria

- [ ] `dotnet pack` produces a `.nupkg` with Description, Tags,
RepositoryUrl, LicenseExpression populated.
- [ ] `Version` is driven from a `VERSION` file, not hard-coded.
- [ ] `dotnet pack --include-symbols` produces a `.snupkg` with SourceLink.
- [ ] `dotnet build -c Release` 0 warnings after the change.

## Kill criteria

If NuGet publishing is explicitly WONT-DO before the Aurora pitch closes,
defer to P3 and note that decision in this row.
Loading
Loading