Skip to content

Round 33 followup — bash is Unix-only; cross-platform automation = TypeScript/Bun#10

Merged
AceHack merged 1 commit intomainfrom
round-33-followup
Apr 19, 2026
Merged

Round 33 followup — bash is Unix-only; cross-platform automation = TypeScript/Bun#10
AceHack merged 1 commit intomainfrom
round-33-followup

Conversation

@AceHack
Copy link
Copy Markdown
Member

@AceHack AceHack commented Apr 19, 2026

Correction to the bash profile per Aaron: install.sh + tools/setup/*.sh are macOS + Linux only. Windows gets a separate PowerShell install path. Git Bash compat is NOT a requirement on Zeta bash — two reasons:

  1. Git Bash is not guaranteed installed on Windows — assuming it would make bootstrap fail on fresh boxes.
  2. Post-install automation moves to TypeScript + Bun + package.json for cross-platform work, matching ../SQLSharp + ../scratch patterns. Aaron: "better than maintaining bash and pwsh scripts everywhere."

Changes:

  • openspec/specs/repo-automation/profiles/bash.md — requirement rewritten
  • docs/security/SECURITY-BACKLOG.md — "Post-install repo automation: Bun + TypeScript + package.json" entry added (P2, triggered on first post-install task that needs cross-platform scripting)

🤖 Generated with Claude Code

Correction to the bash profile: install.sh + tools/setup/*.sh
are macOS + Linux only. Windows gets a separate PowerShell
install path (tools/setup/windows.ps1 — backlogged). Git Bash
compatibility is NOT a requirement on Zeta bash.

For cross-platform repo automation AFTER install (format-repo,
benchmark-compare, coverage-collect, etc.) Zeta uses
TypeScript + Bun + package.json, matching ../SQLSharp +
../scratch patterns. Aaron: "better than maintaining bash and
pwsh scripts everywhere."

- profiles/bash.md requirement updated
- SECURITY-BACKLOG entry for "Post-install repo automation:
  Bun + TypeScript + package.json" clarifies: install stays
  bash, post-install goes TypeScript.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@AceHack AceHack merged commit b276375 into main Apr 19, 2026
6 checks passed
@AceHack AceHack deleted the round-33-followup branch April 19, 2026 03:09
AceHack added a commit that referenced this pull request Apr 22, 2026
…ilot review address + PR #99 redundancy-close (#101)

* Round 44 tick-history: auto-loop-10 append row (unblock tick-history PR chain)

Auto-loop #10 investigated BLOCKED status on tick-history PR chain
(#97, #99, #100 all open at tick-start). Root cause: Copilot review
comments unresolved despite all-green required checks.

Unblock cascade:
- Fixed PR #97 brittle L3 reference with shape-description replacement
- Rejected both ideass typo suggestions (#97, #99) with verbatim-quote
  + chronology-preservation reasoning
- Resolved both review threads
- Resolved cross-merge conflicts (HEAD + main auto-loop-8/9 rows)
- Preemptively applied L3-fix to PR #99's auto-loop-7 row to prevent
  re-conflict (generalizes to: pre-empt anticipated conflicts in
  current merge when the anticipated next merge will touch the same
  row)
- PR #97 merged as `e5a2ed1`
- Closed PR #99 as redundant after zero-content-delta verification
  (PR #100's stacked squash-merge had already landed its row)

Row narrates:
- Split Copilot-suggestion policy: accept reference-rot fixes, reject
  orthographic-normalization on quoted maintainer speech (per the
  spelling-baseline memory)
- Stacked-dependency PR cascade-merge semantics (BLOCKED alone doesn't
  reveal redundancy — `git diff main..HEAD` does)
- Preemptive-conflict-resolution as new discipline
- open-pr-refresh-debt meta-measurable gets second data point: -3 net
  this tick (refresh-capacity > BEHIND-count)

Lands via separate branch per row-112 live-loop-class discipline.

* Fix MD038 — remove nested backtick-escape code-span from auto-loop-10 row

Root cause: embedded code-span with escaped backticks (\`...\`) produced
malformed markdown at col 886 — markdownlint parsed it as a code-span with
spaces inside.

Replaced the embedded code-span with plain prose shape-description + single
clean code ref to docs/CONTRIBUTOR-PERSONAS.md. Semantic content unchanged;
only the quoting shape is fixed.

Verified locally clean via `npx markdownlint-cli2`.
AceHack added a commit that referenced this pull request Apr 22, 2026
…ution + persistent-fork-list correction (#103)

* Round 44 tick-history: auto-loop-10 append row (unblock tick-history PR chain)

Auto-loop #10 investigated BLOCKED status on tick-history PR chain
(#97, #99, #100 all open at tick-start). Root cause: Copilot review
comments unresolved despite all-green required checks.

Unblock cascade:
- Fixed PR #97 brittle L3 reference with shape-description replacement
- Rejected both ideass typo suggestions (#97, #99) with verbatim-quote
  + chronology-preservation reasoning
- Resolved both review threads
- Resolved cross-merge conflicts (HEAD + main auto-loop-8/9 rows)
- Preemptively applied L3-fix to PR #99's auto-loop-7 row to prevent
  re-conflict (generalizes to: pre-empt anticipated conflicts in
  current merge when the anticipated next merge will touch the same
  row)
- PR #97 merged as `e5a2ed1`
- Closed PR #99 as redundant after zero-content-delta verification
  (PR #100's stacked squash-merge had already landed its row)

Row narrates:
- Split Copilot-suggestion policy: accept reference-rot fixes, reject
  orthographic-normalization on quoted maintainer speech (per the
  spelling-baseline memory)
- Stacked-dependency PR cascade-merge semantics (BLOCKED alone doesn't
  reveal redundancy — `git diff main..HEAD` does)
- Preemptive-conflict-resolution as new discipline
- open-pr-refresh-debt meta-measurable gets second data point: -3 net
  this tick (refresh-capacity > BEHIND-count)

Lands via separate branch per row-112 live-loop-class discipline.

* Fix MD038 — remove nested backtick-escape code-span from auto-loop-10 row

Root cause: embedded code-span with escaped backticks (\`...\`) produced
malformed markdown at col 886 — markdownlint parsed it as a code-span with
spaces inside.

Replaced the embedded code-span with plain prose shape-description + single
clean code ref to docs/CONTRIBUTOR-PERSONAS.md. Semantic content unchanged;
only the quoting shape is fixed.

Verified locally clean via `npx markdownlint-cli2`.

* auto-loop-11 tick-history row — PR #101 MD038 fix + PR #93 three-finding all-reject + PR #93 merge

Row 121 narrates:
- Fix PR #101 markdownlint MD038 (nested backtick-escape code span); commit 1dc4de5
- Resolve PR #101 Copilot thread (independent identification of same MD038)
- Refresh PR #93 via tmp-worktree-clone; address 3 Copilot findings with all-reject verdict:
  - P1 stale-rationale + self-contradicting-suggestion
  - P2 partial-meta-win already-matches (prior c1a4863)
  - P2 reviewer-robot grammatical attributive-adjective convention
- PR #93 auto-merged 4819e22 mid-tick
- PR #101 refreshed against advancing main, pushed 62076e4

Row lands on fresh branch off main with PR #101's branch merged in locally
(stacked-dependency pattern) to preserve row-121-after-row-120 ordering.

Pre-check grep: EXIT=1 clean (no cross-tree memory paths, no contributor handles).
Markdownlint: clean locally.

* docs/hygiene-history/loop-tick-history.md: auto-loop-12 tick row

PR #46 refresh + single live Copilot thread resolution (hardcoded-repo
brittleness rejected with principled reasoning) + prior-tick memory
correction (PR #46 is non-fork, refreshable; auto-loop-9 row misclassified).

Three new observables this tick:
- verify-fork-status-at-tick-open hygiene step (not from memory)
- design-intrinsic-hardcode rejection-ground (4th in catalog)
- git-blame-before-accepting-new-content-finding meta-pattern

open-pr-refresh-debt trajectory: +3/-3/-2/-1 = net -3 over 4 ticks.
AceHack added a commit that referenced this pull request Apr 24, 2026
…zed (#339)

Research-grade proposal formalizing the 5-category test
taxonomy from Amara 18th-ferry Part 1 §C ("CI Testing &
Governance Policy") + Part 2 correction #10 (sharder —
measure before widen).

Five categories:
1. Deterministic unit tests (PR gate; no randomness)
2. Seeded property tests (PR gate; fixed-seed replay)
3. Statistical smoke tests (nightly/extended; assert
   statistical properties; do NOT gate PRs)
4. Formal / model tests (PR gate or separate track)
5. Quarantined / known-flaky (not gated; migration path
   required)

Sharder flake (BACKLOG #327) used as the running worked
example — it is a category-3 statistical test masquerading
as category-1 deterministic. Remedy order: measure
observed variance → seed-lock if intent allows → widen
threshold if data justifies → move to nightly only if
stochastic is essential. Do NOT blind-widen or blind-
quarantine.

CI split proposed (advisory, not yet implemented):
- PR-gate workflow (deterministic-only, excludes
  [<Statistical>] and tests/Quarantine/)
- Nightly-sweep workflow (100+-seed statistical tests;
  emits seed-results.csv, failing-seeds.txt,
  distributions.json artifacts)
- Quarantined workflow (weekly, verbose logging, issues
  opened on tests that start passing)

Sixth queued correction from the 18th-ferry operationalization
list; remains research-grade until ADR promotes. Composes with
docs/research/test-organization.md (layout), BACKLOG #327
(sharder), docs/definitions/KSK.md (Oracle trusts statistical
evidence with CIs), Otto-105 graduation cadence.

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
AceHack added a commit that referenced this pull request Apr 24, 2026
…-ferry §B + §F + corrections #2 #7 #9 (#342)

Research-grade design doc for the Stage-2 rung of Amara's
corrected promotion ladder. Specifies: (a) placement under
src/Experimental/CartelLab/ (not src/Core/ — that's Stage 4);
(b) MetricVector type with PLV magnitude AND offset split
(correction #6); (c) INullModelGenerator interface +
Preserves/Avoids table columns; (d) IAttackInjector
forward-looking interface (Stage 3); (e) Wilson-interval
reporting contract with {successes, trials, lowerBound,
upperBound} schema (correction #2 — no more "~95% CI ±5%"
handwave); (f) RobustZScoreMode with Hybrid fallback
(correction #7 — percentile-rank when MAD < epsilon);
(g) explicit artifact-output layout under artifacts/
coordination-risk/ with five files + run-manifest.json
(correction #9).

6-stage promotion path (0 doc / 1 ADR / 2.a skeleton /
2.b full null-models + first attack / 3 attack suite /
4 Core/NetworkIntegrity / 5 Aurora-KSK) matches Amara's
corrected ladder and Otto-105 cadence.

Doc-only change; no code, no tests, no workflow, no
BACKLOG tail touch (avoids positional-conflict pattern
that cost #334#341 re-file this session).

This is the 7th of 10 18th-ferry operationalizations:
- #1/#10 test-classification (#339)
- #2 Wilson-interval design specified (this doc)
- #6 PLV phase-offset shipped (#340)
- #7 MAD=0 Hybrid mode specified (this doc)
- #9 artifact layout specified (this doc)
- #4 exclusivity already shipped (#331)
- #5 modularity relational already shipped (#324)

Remaining: Wilson-interval IMPLEMENTATION (waits on #323 +
Stage 2.a), MAD=0 Hybrid IMPLEMENTATION (waits on #333 +
Stage 2.a), conductance-sign doc (waits on #331), Stage-2.a
skeleton itself.

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
AceHack added a commit that referenced this pull request Apr 24, 2026
…rections (#344)

Dedicated absorb of Amara's 19th courier ferry per CC-002
close-on-existing discipline. Scheduled Otto-164 → executed
Otto-165, following 7-ferry precedent (PRs #196 / #211 /
#219 / #221 / #235 / #245 / #259 / #330 / #337).

Two-part ferry: Part 1 deep-research DST audit (12
sections: rulebook, 12-row entropy scan, dependency audit,
7-row simulation-surface coverage, retry audit, CI
determinism, seed discipline, Cartel-Lab DST readiness,
KSK/Aurora DST readiness, state-of-the-art comparison,
10-row PR roadmap, what-not-to-claim caveats; Mermaid CI
diagram + Gantt timeline). Part 2 Amara's own 5.5-Thinking
correction pass (7 required corrections, per-area grade
table with B- overall, revised 6-PR roadmap with titles
locked, DST-held + FoundationDB-grade acceptance criteria,
copy-paste Kenji summary).

Key findings:
- DST grade: B- (strong architecture, partial impl)
- Blockers: DiskBackingStore bypasses simulation (D-grade
  filesystem simulation), no ISimulationDriver, Task.Run
  ambient ThreadPool risk, no seed artifacts / no swarm
  harness
- 4 of 12 Part-1 sections already align with shipped
  substrate:
  - §6 test classification → PR #339
  - §7 artifact layout → PR #342 design
  - §8 Cartel-Lab stage discipline → PRs #330/#337/#342
  - §9 KSK advisory-only → PR #336 + Otto-140..145 memory

6-PR revised roadmap queued as graduation candidates:
1. DST scanner + accepted-boundary registry (new tool +
   policy docs + workflow)
2. Seed protocol + CI artifacts
3. Sharder reproduction (NOT widen) — reinforces 18th #10
4. ISimulationDriver + VTS promotion to core
5. Simulated filesystem (DiskBackingStore rewrite)
6. Cartel-Lab DST calibration (aligns with #342 design)

Plus: push-with-retry.sh retry-audit finding; DST-held +
FDB-grade criteria lock.

GOVERNANCE §33 four-field header (Scope / Attribution /
Operational status / Non-fusion disclaimer). Amara verdict
preserved: "strong draft / not canonical yet."

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
AceHack added a commit that referenced this pull request Apr 24, 2026
Aaron 2026-04-23 directive (two parts):

> we should do a review of our database and come up with backlog items
> where we are lacking it's not cutting edge, we need more research etc

> on some cadence look at the last few things that went into master
> and make sure its not overwhelemginly speculative. thats a smell
> that our software factor is live locked.

## Live-lock audit tool (internal priority)

`tools/audit/live-lock-audit.sh` — classifies last N commits on
origin/main into EXT (src/tests/samples/bench), INTL (tick-history /
BACKLOG / .claude / round-history), SPEC (research / memory / DECISIONS),
OTHR. Flags smell when EXT < 20%. Tunable via LIVELOCK_MIN_EXT_PCT.

**Inaugural run (landed in `docs/hygiene-history/live-lock-audit-
history.md`):** EXT 0%, INTL 72%, SPEC 16%, OTHR 12% on last 25 main
commits. **Smell fires.** Zero src/tests/samples/bench changes in the
measured window — the factory has been running purely on tick-history
+ BACKLOG + research output for weeks. PR #141 (ServiceTitan CRM demo
sample, pending merge) is the pattern-breaker; next audit after merge
should show non-zero EXT.

## Cutting-edge DB gap review (Aaron-directed)

`docs/research/cutting-edge-database-gap-review-2026-04-23.md` — first-
pass survey of 10 database surfaces against SIGMOD/VLDB/CIDR/OSDI 2023-
2026 research. Key gaps named (each with paper anchor):

  1. Object-store-backed Spine (Delta Lake / Iceberg / Hudi frontier)
  2. Compiled / JIT execution (Umbra Flying Start, Photon)
  3. io_uring native async disk (Linux frontier)
  4. CXL memory tiering (Pond, ASPLOS 2023)
  5. Learned cost-model framework (Bao, LOGER)
  6. Deterministic-execution mode (Calvin, Polyjuice, TigerBeetle)
  7. Retraction-weight compression (ALP, SIGMOD 2023)
  8. Xor / Binary Fuse filters, DDSketch
  9. RDMA-native operator transport (FaRMv2, SSD-RDMA)
 10. Power-loss-tested durability (TigerBeetle gold standard)

Top 3 filed as concrete BACKLOG P2 rows with research anchors:

- **#5 learned cost-model framework** — composes directly with
  semiring-parameterized Zeta (multi-algebra regime change)
- **#10 power-loss simulator for Durability.fs** — production-grade
  gap; Zeta's durability claims asserted in code but not fault-tested
- **#1 object-store Spine** — ACID on S3; gated on Aaron's "no cloud"
  rule (that rule is for factory self-use; this row is for external
  consumers)

Live-lock-smell row also filed as P1 Factory/tooling.

## What this does NOT do

- Not a commitment to land any DB gap this round. Aaron gates.
- Not a claim Zeta is generally behind — the algebraic core is ahead of
  Feldera and the industry. Gaps are on the engineering substrate.
- Not exhaustive — 10 surfaces reviewed; more exist. Cadence suggests
  every 3-5 rounds.

## Meta note

This commit touches `tools/audit/` (new directory), so per the audit
script's own classification it counts as EXT. The next audit run after
this lands should show EXT > 0%.

Composes with:
- memory/project_aaron_external_priority_stack_and_live_lock_smell_2026_04_23.md
- memory/project_semiring_parameterized_zeta_regime_change_one_algebra_to_map_others_2026_04_22.md
- memory/feedback_samples_readability_real_code_zero_alloc_2026_04_22.md

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
AceHack added a commit that referenced this pull request Apr 24, 2026
Aaron 2026-04-23 directive (two parts):

> we should do a review of our database and come up with backlog items
> where we are lacking it's not cutting edge, we need more research etc

> on some cadence look at the last few things that went into master
> and make sure its not overwhelemginly speculative. thats a smell
> that our software factor is live locked.

## Live-lock audit tool (internal priority)

`tools/audit/live-lock-audit.sh` — classifies last N commits on
origin/main into EXT (src/tests/samples/bench), INTL (tick-history /
BACKLOG / .claude / round-history), SPEC (research / memory / DECISIONS),
OTHR. Flags smell when EXT < 20%. Tunable via LIVELOCK_MIN_EXT_PCT.

**Inaugural run (landed in `docs/hygiene-history/live-lock-audit-
history.md`):** EXT 0%, INTL 72%, SPEC 16%, OTHR 12% on last 25 main
commits. **Smell fires.** Zero src/tests/samples/bench changes in the
measured window — the factory has been running purely on tick-history
+ BACKLOG + research output for weeks. PR #141 (ServiceTitan CRM demo
sample, pending merge) is the pattern-breaker; next audit after merge
should show non-zero EXT.

## Cutting-edge DB gap review (Aaron-directed)

`docs/research/cutting-edge-database-gap-review-2026-04-23.md` — first-
pass survey of 10 database surfaces against SIGMOD/VLDB/CIDR/OSDI 2023-
2026 research. Key gaps named (each with paper anchor):

  1. Object-store-backed Spine (Delta Lake / Iceberg / Hudi frontier)
  2. Compiled / JIT execution (Umbra Flying Start, Photon)
  3. io_uring native async disk (Linux frontier)
  4. CXL memory tiering (Pond, ASPLOS 2023)
  5. Learned cost-model framework (Bao, LOGER)
  6. Deterministic-execution mode (Calvin, Polyjuice, TigerBeetle)
  7. Retraction-weight compression (ALP, SIGMOD 2023)
  8. Xor / Binary Fuse filters, DDSketch
  9. RDMA-native operator transport (FaRMv2, SSD-RDMA)
 10. Power-loss-tested durability (TigerBeetle gold standard)

Top 3 filed as concrete BACKLOG P2 rows with research anchors:

- **#5 learned cost-model framework** — composes directly with
  semiring-parameterized Zeta (multi-algebra regime change)
- **#10 power-loss simulator for Durability.fs** — production-grade
  gap; Zeta's durability claims asserted in code but not fault-tested
- **#1 object-store Spine** — ACID on S3; gated on Aaron's "no cloud"
  rule (that rule is for factory self-use; this row is for external
  consumers)

Live-lock-smell row also filed as P1 Factory/tooling.

## What this does NOT do

- Not a commitment to land any DB gap this round. Aaron gates.
- Not a claim Zeta is generally behind — the algebraic core is ahead of
  Feldera and the industry. Gaps are on the engineering substrate.
- Not exhaustive — 10 surfaces reviewed; more exist. Cadence suggests
  every 3-5 rounds.

## Meta note

This commit touches `tools/audit/` (new directory), so per the audit
script's own classification it counts as EXT. The next audit run after
this lands should show EXT > 0%.

Composes with:
- memory/project_aaron_external_priority_stack_and_live_lock_smell_2026_04_23.md
- memory/project_semiring_parameterized_zeta_regime_change_one_algebra_to_map_others_2026_04_22.md
- memory/feedback_samples_readability_real_code_zero_alloc_2026_04_22.md

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
AceHack added a commit that referenced this pull request Apr 24, 2026
Aaron 2026-04-23 directive (two parts):

> we should do a review of our database and come up with backlog items
> where we are lacking it's not cutting edge, we need more research etc

> on some cadence look at the last few things that went into master
> and make sure its not overwhelemginly speculative. thats a smell
> that our software factor is live locked.

## Live-lock audit tool (internal priority)

`tools/audit/live-lock-audit.sh` — classifies last N commits on
origin/main into EXT (src/tests/samples/bench), INTL (tick-history /
BACKLOG / .claude / round-history), SPEC (research / memory / DECISIONS),
OTHR. Flags smell when EXT < 20%. Tunable via LIVELOCK_MIN_EXT_PCT.

**Inaugural run (landed in `docs/hygiene-history/live-lock-audit-
history.md`):** EXT 0%, INTL 72%, SPEC 16%, OTHR 12% on last 25 main
commits. **Smell fires.** Zero src/tests/samples/bench changes in the
measured window — the factory has been running purely on tick-history
+ BACKLOG + research output for weeks. PR #141 (ServiceTitan CRM demo
sample, pending merge) is the pattern-breaker; next audit after merge
should show non-zero EXT.

## Cutting-edge DB gap review (Aaron-directed)

`docs/research/cutting-edge-database-gap-review-2026-04-23.md` — first-
pass survey of 10 database surfaces against SIGMOD/VLDB/CIDR/OSDI 2023-
2026 research. Key gaps named (each with paper anchor):

  1. Object-store-backed Spine (Delta Lake / Iceberg / Hudi frontier)
  2. Compiled / JIT execution (Umbra Flying Start, Photon)
  3. io_uring native async disk (Linux frontier)
  4. CXL memory tiering (Pond, ASPLOS 2023)
  5. Learned cost-model framework (Bao, LOGER)
  6. Deterministic-execution mode (Calvin, Polyjuice, TigerBeetle)
  7. Retraction-weight compression (ALP, SIGMOD 2023)
  8. Xor / Binary Fuse filters, DDSketch
  9. RDMA-native operator transport (FaRMv2, SSD-RDMA)
 10. Power-loss-tested durability (TigerBeetle gold standard)

Top 3 filed as concrete BACKLOG P2 rows with research anchors:

- **#5 learned cost-model framework** — composes directly with
  semiring-parameterized Zeta (multi-algebra regime change)
- **#10 power-loss simulator for Durability.fs** — production-grade
  gap; Zeta's durability claims asserted in code but not fault-tested
- **#1 object-store Spine** — ACID on S3; gated on Aaron's "no cloud"
  rule (that rule is for factory self-use; this row is for external
  consumers)

Live-lock-smell row also filed as P1 Factory/tooling.

## What this does NOT do

- Not a commitment to land any DB gap this round. Aaron gates.
- Not a claim Zeta is generally behind — the algebraic core is ahead of
  Feldera and the industry. Gaps are on the engineering substrate.
- Not exhaustive — 10 surfaces reviewed; more exist. Cadence suggests
  every 3-5 rounds.

## Meta note

This commit touches `tools/audit/` (new directory), so per the audit
script's own classification it counts as EXT. The next audit run after
this lands should show EXT > 0%.

Composes with:
- memory/project_aaron_external_priority_stack_and_live_lock_smell_2026_04_23.md
- memory/project_semiring_parameterized_zeta_regime_change_one_algebra_to_map_others_2026_04_22.md
- memory/feedback_samples_readability_real_code_zero_alloc_2026_04_22.md

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
AceHack added a commit that referenced this pull request Apr 24, 2026
…ase, audit fail-hard, endpoint lists

Drains 14 unresolved review threads on PR #147 (FactoryDemo.Api.CSharp):
- Zeta.sln: strip leading blank line so 'Microsoft Visual Studio
  Solution File' is the first line (threads #2 #3).
- SignalQuality.fs: compressionRatio on empty input was 1.0, which
  composed as Quarantine via severityOfScore — flipped to 0.0 and
  added explicit empty-input Pass finding in compressionMeasure;
  also dropped unused System.Runtime.CompilerServices open
  (threads #4 #5).
- live-lock-audit.sh: fail hard (exit 2) when origin/main is not
  resolvable so a missing-remote CI checkout can't silently report
  'No commits found' -> healthy; switched --stat|awk file-list
  extraction to git diff-tree --name-only plumbing form
  (threads #1 #6).
- ServiceTitanFactoryApi README + Seed.fs: remove dead memory/
  and docs/plans/ links; replace Aaron's-name reference with
  'human maintainer' role wording; drop non-existent sibling
  SQL-seed refs (threads #7 #8 #9).
- FactoryDemo.Api.CSharp README + Program.cs + Seed.cs: fix dead
  refs to samples/FactoryDemo.Api.FSharp/ and samples/FactoryDemo.Db/
  to point at the real F# sibling samples/ServiceTitanFactoryApi/
  and to a BACKLOG row for the Postgres-backed follow-up
  (threads #11 #14).
- Program.cs + Program.fs: root endpoint index now advertises all
  9 routes including the parameterised {id} routes, matching the
  README tables (threads #12 #13).
- Thread #10 (project naming 'ServiceTitanFactoryApi.CSharp' in PR
  description): resolved in-thread — code/namespace already
  consistent (Zeta.Samples.FactoryDemo.Api); fix is PR-description-
  only, not code.

Build: dotnet build -c Release -> 0 Warning(s) 0 Error(s).
AceHack added a commit that referenced this pull request Apr 24, 2026
Aaron 2026-04-23 directive (two parts):

> we should do a review of our database and come up with backlog items
> where we are lacking it's not cutting edge, we need more research etc

> on some cadence look at the last few things that went into master
> and make sure its not overwhelemginly speculative. thats a smell
> that our software factor is live locked.

`tools/audit/live-lock-audit.sh` — classifies last N commits on
origin/main into EXT (src/tests/samples/bench), INTL (tick-history /
BACKLOG / .claude / round-history), SPEC (research / memory / DECISIONS),
OTHR. Flags smell when EXT < 20%. Tunable via LIVELOCK_MIN_EXT_PCT.

**Inaugural run (landed in `docs/hygiene-history/live-lock-audit-
history.md`):** EXT 0%, INTL 72%, SPEC 16%, OTHR 12% on last 25 main
commits. **Smell fires.** Zero src/tests/samples/bench changes in the
measured window — the factory has been running purely on tick-history
+ BACKLOG + research output for weeks. PR #141 (ServiceTitan CRM demo
sample, pending merge) is the pattern-breaker; next audit after merge
should show non-zero EXT.

`docs/research/cutting-edge-database-gap-review-2026-04-23.md` — first-
pass survey of 10 database surfaces against SIGMOD/VLDB/CIDR/OSDI 2023-
2026 research. Key gaps named (each with paper anchor):

  1. Object-store-backed Spine (Delta Lake / Iceberg / Hudi frontier)
  2. Compiled / JIT execution (Umbra Flying Start, Photon)
  3. io_uring native async disk (Linux frontier)
  4. CXL memory tiering (Pond, ASPLOS 2023)
  5. Learned cost-model framework (Bao, LOGER)
  6. Deterministic-execution mode (Calvin, Polyjuice, TigerBeetle)
  7. Retraction-weight compression (ALP, SIGMOD 2023)
  8. Xor / Binary Fuse filters, DDSketch
  9. RDMA-native operator transport (FaRMv2, SSD-RDMA)
 10. Power-loss-tested durability (TigerBeetle gold standard)

Top 3 filed as concrete BACKLOG P2 rows with research anchors:

- **#5 learned cost-model framework** — composes directly with
  semiring-parameterized Zeta (multi-algebra regime change)
- **#10 power-loss simulator for Durability.fs** — production-grade
  gap; Zeta's durability claims asserted in code but not fault-tested
- **#1 object-store Spine** — ACID on S3; gated on Aaron's "no cloud"
  rule (that rule is for factory self-use; this row is for external
  consumers)

Live-lock-smell row also filed as P1 Factory/tooling.

- Not a commitment to land any DB gap this round. Aaron gates.
- Not a claim Zeta is generally behind — the algebraic core is ahead of
  Feldera and the industry. Gaps are on the engineering substrate.
- Not exhaustive — 10 surfaces reviewed; more exist. Cadence suggests
  every 3-5 rounds.

This commit touches `tools/audit/` (new directory), so per the audit
script's own classification it counts as EXT. The next audit run after
this lands should show EXT > 0%.

Composes with:
- memory/project_aaron_external_priority_stack_and_live_lock_smell_2026_04_23.md
- memory/project_semiring_parameterized_zeta_regime_change_one_algebra_to_map_others_2026_04_22.md
- memory/feedback_samples_readability_real_code_zero_alloc_2026_04_22.md

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
AceHack added a commit that referenced this pull request Apr 24, 2026
Aaron 2026-04-23 directive (two parts):

> we should do a review of our database and come up with backlog items
> where we are lacking it's not cutting edge, we need more research etc

> on some cadence look at the last few things that went into master
> and make sure its not overwhelemginly speculative. thats a smell
> that our software factor is live locked.

## Live-lock audit tool (internal priority)

`tools/audit/live-lock-audit.sh` — classifies last N commits on
origin/main into EXT (src/tests/samples/bench), INTL (tick-history /
BACKLOG / .claude / round-history), SPEC (research / memory / DECISIONS),
OTHR. Flags smell when EXT < 20%. Tunable via LIVELOCK_MIN_EXT_PCT.

**Inaugural run (landed in `docs/hygiene-history/live-lock-audit-
history.md`):** EXT 0%, INTL 72%, SPEC 16%, OTHR 12% on last 25 main
commits. **Smell fires.** Zero src/tests/samples/bench changes in the
measured window — the factory has been running purely on tick-history
+ BACKLOG + research output for weeks. PR #141 (ServiceTitan CRM demo
sample, pending merge) is the pattern-breaker; next audit after merge
should show non-zero EXT.

## Cutting-edge DB gap review (Aaron-directed)

`docs/research/cutting-edge-database-gap-review-2026-04-23.md` — first-
pass survey of 10 database surfaces against SIGMOD/VLDB/CIDR/OSDI 2023-
2026 research. Key gaps named (each with paper anchor):

  1. Object-store-backed Spine (Delta Lake / Iceberg / Hudi frontier)
  2. Compiled / JIT execution (Umbra Flying Start, Photon)
  3. io_uring native async disk (Linux frontier)
  4. CXL memory tiering (Pond, ASPLOS 2023)
  5. Learned cost-model framework (Bao, LOGER)
  6. Deterministic-execution mode (Calvin, Polyjuice, TigerBeetle)
  7. Retraction-weight compression (ALP, SIGMOD 2023)
  8. Xor / Binary Fuse filters, DDSketch
  9. RDMA-native operator transport (FaRMv2, SSD-RDMA)
 10. Power-loss-tested durability (TigerBeetle gold standard)

Top 3 filed as concrete BACKLOG P2 rows with research anchors:

- **#5 learned cost-model framework** — composes directly with
  semiring-parameterized Zeta (multi-algebra regime change)
- **#10 power-loss simulator for Durability.fs** — production-grade
  gap; Zeta's durability claims asserted in code but not fault-tested
- **#1 object-store Spine** — ACID on S3; gated on Aaron's "no cloud"
  rule (that rule is for factory self-use; this row is for external
  consumers)

Live-lock-smell row also filed as P1 Factory/tooling.

## What this does NOT do

- Not a commitment to land any DB gap this round. Aaron gates.
- Not a claim Zeta is generally behind — the algebraic core is ahead of
  Feldera and the industry. Gaps are on the engineering substrate.
- Not exhaustive — 10 surfaces reviewed; more exist. Cadence suggests
  every 3-5 rounds.

## Meta note

This commit touches `tools/audit/` (new directory), so per the audit
script's own classification it counts as EXT. The next audit run after
this lands should show EXT > 0%.

Composes with:
- memory/project_aaron_external_priority_stack_and_live_lock_smell_2026_04_23.md
- memory/project_semiring_parameterized_zeta_regime_change_one_algebra_to_map_others_2026_04_22.md
- memory/feedback_samples_readability_real_code_zero_alloc_2026_04_22.md

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
AceHack added a commit that referenced this pull request Apr 24, 2026
…ase, audit fail-hard, endpoint lists

Drains 14 unresolved review threads on PR #147 (FactoryDemo.Api.CSharp):
- Zeta.sln: strip leading blank line so 'Microsoft Visual Studio
  Solution File' is the first line (threads #2 #3).
- SignalQuality.fs: compressionRatio on empty input was 1.0, which
  composed as Quarantine via severityOfScore — flipped to 0.0 and
  added explicit empty-input Pass finding in compressionMeasure;
  also dropped unused System.Runtime.CompilerServices open
  (threads #4 #5).
- live-lock-audit.sh: fail hard (exit 2) when origin/main is not
  resolvable so a missing-remote CI checkout can't silently report
  'No commits found' -> healthy; switched --stat|awk file-list
  extraction to git diff-tree --name-only plumbing form
  (threads #1 #6).
- ServiceTitanFactoryApi README + Seed.fs: remove dead memory/
  and docs/plans/ links; replace Aaron's-name reference with
  'human maintainer' role wording; drop non-existent sibling
  SQL-seed refs (threads #7 #8 #9).
- FactoryDemo.Api.CSharp README + Program.cs + Seed.cs: fix dead
  refs to samples/FactoryDemo.Api.FSharp/ and samples/FactoryDemo.Db/
  to point at the real F# sibling samples/ServiceTitanFactoryApi/
  and to a BACKLOG row for the Postgres-backed follow-up
  (threads #11 #14).
- Program.cs + Program.fs: root endpoint index now advertises all
  9 routes including the parameterised {id} routes, matching the
  README tables (threads #12 #13).
- Thread #10 (project naming 'ServiceTitanFactoryApi.CSharp' in PR
  description): resolved in-thread — code/namespace already
  consistent (Zeta.Samples.FactoryDemo.Api); fix is PR-description-
  only, not code.

Build: dotnet build -c Release -> 0 Warning(s) 0 Error(s).
AceHack added a commit that referenced this pull request Apr 24, 2026
Aaron 2026-04-23 directive (two parts):

> we should do a review of our database and come up with backlog items
> where we are lacking it's not cutting edge, we need more research etc

> on some cadence look at the last few things that went into master
> and make sure its not overwhelemginly speculative. thats a smell
> that our software factor is live locked.

`tools/audit/live-lock-audit.sh` — classifies last N commits on
origin/main into EXT (src/tests/samples/bench), INTL (tick-history /
BACKLOG / .claude / round-history), SPEC (research / memory / DECISIONS),
OTHR. Flags smell when EXT < 20%. Tunable via LIVELOCK_MIN_EXT_PCT.

**Inaugural run (landed in `docs/hygiene-history/live-lock-audit-
history.md`):** EXT 0%, INTL 72%, SPEC 16%, OTHR 12% on last 25 main
commits. **Smell fires.** Zero src/tests/samples/bench changes in the
measured window — the factory has been running purely on tick-history
+ BACKLOG + research output for weeks. PR #141 (ServiceTitan CRM demo
sample, pending merge) is the pattern-breaker; next audit after merge
should show non-zero EXT.

`docs/research/cutting-edge-database-gap-review-2026-04-23.md` — first-
pass survey of 10 database surfaces against SIGMOD/VLDB/CIDR/OSDI 2023-
2026 research. Key gaps named (each with paper anchor):

  1. Object-store-backed Spine (Delta Lake / Iceberg / Hudi frontier)
  2. Compiled / JIT execution (Umbra Flying Start, Photon)
  3. io_uring native async disk (Linux frontier)
  4. CXL memory tiering (Pond, ASPLOS 2023)
  5. Learned cost-model framework (Bao, LOGER)
  6. Deterministic-execution mode (Calvin, Polyjuice, TigerBeetle)
  7. Retraction-weight compression (ALP, SIGMOD 2023)
  8. Xor / Binary Fuse filters, DDSketch
  9. RDMA-native operator transport (FaRMv2, SSD-RDMA)
 10. Power-loss-tested durability (TigerBeetle gold standard)

Top 3 filed as concrete BACKLOG P2 rows with research anchors:

- **#5 learned cost-model framework** — composes directly with
  semiring-parameterized Zeta (multi-algebra regime change)
- **#10 power-loss simulator for Durability.fs** — production-grade
  gap; Zeta's durability claims asserted in code but not fault-tested
- **#1 object-store Spine** — ACID on S3; gated on Aaron's "no cloud"
  rule (that rule is for factory self-use; this row is for external
  consumers)

Live-lock-smell row also filed as P1 Factory/tooling.

- Not a commitment to land any DB gap this round. Aaron gates.
- Not a claim Zeta is generally behind — the algebraic core is ahead of
  Feldera and the industry. Gaps are on the engineering substrate.
- Not exhaustive — 10 surfaces reviewed; more exist. Cadence suggests
  every 3-5 rounds.

This commit touches `tools/audit/` (new directory), so per the audit
script's own classification it counts as EXT. The next audit run after
this lands should show EXT > 0%.

Composes with:
- memory/project_aaron_external_priority_stack_and_live_lock_smell_2026_04_23.md
- memory/project_semiring_parameterized_zeta_regime_change_one_algebra_to_map_others_2026_04_22.md
- memory/feedback_samples_readability_real_code_zero_alloc_2026_04_22.md

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
AceHack added a commit that referenced this pull request Apr 24, 2026
Aaron 2026-04-23 directive (two parts):

> we should do a review of our database and come up with backlog items
> where we are lacking it's not cutting edge, we need more research etc

> on some cadence look at the last few things that went into master
> and make sure its not overwhelemginly speculative. thats a smell
> that our software factor is live locked.

`tools/audit/live-lock-audit.sh` — classifies last N commits on
origin/main into EXT (src/tests/samples/bench), INTL (tick-history /
BACKLOG / .claude / round-history), SPEC (research / memory / DECISIONS),
OTHR. Flags smell when EXT < 20%. Tunable via LIVELOCK_MIN_EXT_PCT.

**Inaugural run (landed in `docs/hygiene-history/live-lock-audit-
history.md`):** EXT 0%, INTL 72%, SPEC 16%, OTHR 12% on last 25 main
commits. **Smell fires.** Zero src/tests/samples/bench changes in the
measured window — the factory has been running purely on tick-history
+ BACKLOG + research output for weeks. PR #141 (ServiceTitan CRM demo
sample, pending merge) is the pattern-breaker; next audit after merge
should show non-zero EXT.

`docs/research/cutting-edge-database-gap-review-2026-04-23.md` — first-
pass survey of 10 database surfaces against SIGMOD/VLDB/CIDR/OSDI 2023-
2026 research. Key gaps named (each with paper anchor):

  1. Object-store-backed Spine (Delta Lake / Iceberg / Hudi frontier)
  2. Compiled / JIT execution (Umbra Flying Start, Photon)
  3. io_uring native async disk (Linux frontier)
  4. CXL memory tiering (Pond, ASPLOS 2023)
  5. Learned cost-model framework (Bao, LOGER)
  6. Deterministic-execution mode (Calvin, Polyjuice, TigerBeetle)
  7. Retraction-weight compression (ALP, SIGMOD 2023)
  8. Xor / Binary Fuse filters, DDSketch
  9. RDMA-native operator transport (FaRMv2, SSD-RDMA)
 10. Power-loss-tested durability (TigerBeetle gold standard)

Top 3 filed as concrete BACKLOG P2 rows with research anchors:

- **#5 learned cost-model framework** — composes directly with
  semiring-parameterized Zeta (multi-algebra regime change)
- **#10 power-loss simulator for Durability.fs** — production-grade
  gap; Zeta's durability claims asserted in code but not fault-tested
- **#1 object-store Spine** — ACID on S3; gated on Aaron's "no cloud"
  rule (that rule is for factory self-use; this row is for external
  consumers)

Live-lock-smell row also filed as P1 Factory/tooling.

- Not a commitment to land any DB gap this round. Aaron gates.
- Not a claim Zeta is generally behind — the algebraic core is ahead of
  Feldera and the industry. Gaps are on the engineering substrate.
- Not exhaustive — 10 surfaces reviewed; more exist. Cadence suggests
  every 3-5 rounds.

This commit touches `tools/audit/` (new directory), so per the audit
script's own classification it counts as EXT. The next audit run after
this lands should show EXT > 0%.

Composes with:
- memory/project_aaron_external_priority_stack_and_live_lock_smell_2026_04_23.md
- memory/project_semiring_parameterized_zeta_regime_change_one_algebra_to_map_others_2026_04_22.md
- memory/feedback_samples_readability_real_code_zero_alloc_2026_04_22.md

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
AceHack added a commit that referenced this pull request Apr 24, 2026
* Round 44 auto-loop-31 + 32 + 33: tick-history rows — Grok wall, emulator research, secret-handoff analysis

Three ticks landed together:

auto-loop-31: Grok CLI verification blocked by xAI personal-tier
billing wall; shared-state-visible escalation trigger fired
correctly on Playwright X-OAuth snapshot (first real test of
bottleneck-principle's five-trigger taxonomy); key-paste event
handled with zero-persistence discipline.

auto-loop-32: emulator substrate research first-pass published
(PR #131) — RetroArch/MAME/Dolphin architectural survey with
four factory-relevant patterns. Secret-handoff protocol gap
surfaced by maintainer mid-tick.

auto-loop-33: secret-handoff protocol options analysis published
(PR #133) — five-tier survey with rotation/revocation/leak-mode
mapping and explicit git-crypt-is-wrong-fit reasoning. Maintainer
end-of-tick reply disclosed Itron PKI experience (nation-state-
resistant, software+hardware+firmware) and preferred substrate
tiers (env-var + password-manager CLI) plus Let's-Encrypt + ACME
directive with PKI-bootstrap deferred.

Five observations worth preserving: (a) five-trigger escalation
taxonomy held under first real test; (b) xAI personal-tier
billing wall drops Grok to HOLD-FOR-NOW; (c) bottleneck-principle
has two layers (speculative-autonomy vs explicit-scope); (d)
research-doc-as-pre-validation-anchor becoming a systematic
pattern; (e) Itron PKI experience reframes factory security
calibration.

* auto-loop-34: append tick-history row (BACKLOG P1 secret-handoff + Itron memory + multi-domain cascade)

Extends PR #132 scope from three-tick batch (auto-loop-31+32+33) to
four-tick batch by appending auto-loop-34 row covering:

- Step 0 PR-pool audit (main `e503e5a` unchanged since #131 merge).
- BACKLOG P1 row filed via PR #134 with maintainer-confirmed shape
  preference from auto-loop-33 reply (env-var + password-manager
  CLI + Let's-Encrypt/ACME + PKI-bootstrap deferred).
- Itron PKI / supply-chain / secure-boot background memory authored
  (out-of-repo, maintainer context); five-layer security-engineering
  cascade captured verbatim.
- Second-wave disclosure cascade captured (disaggregation, FFT,
  micro-Doppler/VWCD decomposition, power-grid signature algorithms
  PRIDES/Wavelet-GAT/GESL, director-level seniority, 5-of-10k
  organizational tier).
- Bottleneck-principle two-layer distinction exercised live on first
  post-naming cycle (explicit-scope branch).
- Accounting-lag same-tick-mitigation maintained (tenth consecutive
  tick).
- Seven numbered observations + compoundings-per-tick = 8 + ledger
  math (net -8 units over 26 ticks).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* auto-loop-35: tick-history row — Itron signal-processing → factory mapping; ARC3 ≠ DORA; wink→wrinkle

Closes capture-without-conversion gap surfaced by maintainer:
second-wave Itron disclosures (auto-loop-34) had landed in memory
without factory-work mappings. PR #135 produces the mappings
(ARC3 §Prior-art lineage + BACKLOG row with 10 pairs + wink→wrinkle
extension); this row is the accounting.

Layer-separation correction absorbed (DORA objective, ARC-3
framing, HITL substrate between). ARC-3-class three-criteria
operational definition captured (hard + continuously testable +
no formal definition). Bayesian-evidence-threshold shape
affirmed across surfaces. 7 compoundings; net -8 units over 27
ticks.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* Round 44 auto-loop-36: tick-history row — AutoPR-local-variant + parallel-CLI-agents + canonical-inhabitance

- AutoPR-local-variant experiment: codex exec --sandbox workspace-write produced
  145-line self-report (docs/research/codex-cli-self-report-2026-04-22.md,
  PR #136) with build verification + honest gap-flagging.
- Cognition-level-per-activity envelope prototyped in frontmatter
  (model / effort / sandbox / approval / network / invocation / orchestrator).
- BACKLOG P1 row filed for parallel-CLI-agents skill + cognition-level ledger
  + multi-CLI skill-sharing architecture + canonical-inhabitance principle.
- ServiceTitan CRM team scope narrowing to #244 demo target landed in memory.
- PR #108 AGENT-CLAIM-PROTOCOL recovered as prior-art context after stale-
  post-compaction memory miss (caught by honor-those-that-came-before).
- Multi-CLI commit co-authorship precedent (PR #136 co-authored Codex 0.122.0).
- Net -8 units over 28 ticks cumulative accounting.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* Round 44 auto-loop-36: force-multiplication log + constrained-bootstrapping BACKLOG row

Aaron 2026-04-22 auto-loop-36 directives (verbatim):
- "can you keep a log of my force multiplicatoin? Other humans will want to
  beat my score if we come up with a scoring system."
- "you should be able to retroactivly calculate it's deata over time since
  the start of the project we have all history"
- "histograms"
- "that metric can also show smeel issues based on it's anamoly detection
  over time"
- "we had models running on the edge on the RIVA meter, pre LLM days but
  some pretty beefy models for a meter at Itron"
- "My IoT infrcutrue i built at itron was a model distrbution engine over
  constrainted networks and devices"
- "see why want to support constrained bootstraping to upgrades"

New: docs/force-multiplication-log.md
- Keystroke-to-substrate scoring model (provisional, occurrence-1).
- Inaugural auto-loop-36 entry: 22.6x multiplier, 8 compoundings, 1454
  keystrokes → 32 800 chars substrate.
- Retroactive reconstruction section: 18 session transcripts + git log
  all-commits, per-day keystroke table + commit correlation.
- Four ASCII histograms: keystrokes/day, commits/day, substrate-growth
  per-keystroke, avg message length. Peak ratio 6.13x on 2026-04-21
  (autonomy firing), low 1.47x on 2026-04-19 (design-heavy day).
- Anomaly-detection section: five smell classes (sudden-drop / sudden-
  spike / flat-low / flat-high / length-spike-with-ratio-drop) with
  typical causes and what-to-check diagnostics. Observed anomalies so
  far catalogued with attribution.

New BACKLOG P2 row: constrained-bootstrapping-to-upgrades
- Itron precedent: Aaron built model-distribution engine over constrained
  networks/devices at Itron RIVA smart meters, pre-LLM era.
- Direction for Zeta upgrade paths on resource-constrained substrates
  (delta-over-full, bandwidth-budgeted, signed-delta, rollback-safe,
  capability-stepdown-compatible).
- Composes with Escro microkernel-OS endpoint (target), secret-handoff
  (credential-provisioning to constrained devices), ARC3-DORA stepdown
  (cognition-layer stepdown pairs with bandwidth stepdown).
- Occurrence-1; open scope questions flagged to Aaron.

Extended memory: user_aaron_itron_pki_supply_chain_secure_boot_background.md
- Appended 2026-04-22 auto-loop-36 section with three new specifics
  (edge ML pre-LLM, model distribution engine, constrained-bootstrap
  motivation) plus six calibration implications and new cross-references.

Extended memory: feedback_aaron_terse_directives_high_leverage_do_not_underweight.md
- New feedback memory on treating brief Aaron messages as fully-loaded
  directives, not underspecified. Factory designed for keystroke-to-
  substrate compression; chat verbosity and substrate expansion are two
  sides of the same asymmetry.

New memory: project_aaron_servicetitan_crm_team_role_demo_scope_narrowing_2026_04_22.md
- Aaron's CRM team role at ServiceTitan narrows #244 demo scope to
  CRM-shaped (contact/opportunity/pipeline/CDP), steers away from
  field-service.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* Round 44 auto-loop-37+38: regime-change semiring + complexity-reduction scoring + Kenji isomorphism

Auto-loop-37 course-corrections:
- Goodhart-resistance on force-multiplication scoring: char-ratio
  demoted to diagnostic; outcomes (DORA + BACKLOG closure + external
  validations) become primary score
- Deletions > insertions with tests passing = POSITIVE complexity-
  reduction outcome (Rodney's Razor in developer-values voice);
  cyclomatic complexity is the deeper proxy; CC/LOC trend should be
  monotone-non-increasing to a local-optimum floor
- BACKLOG P1 row filed: Pluggable complexity-measurement framework
  (stable interface + swappable metric implementations)

Auto-loop-38 regime-change direction:
- BACKLOG P2 row filed: Semiring-parameterized Zeta — one algebra
  to map the others; K-relations as regime-change (Green-Karvounarakis-
  Tannen PODS 2007). ZSet = counting-semiring special case; D/I/z⁻¹/H
  operator algebra generalizes over weight-ring; Zeta becomes host
  for all DB algebras (tropical / Boolean / probabilistic / lineage /
  provenance / Bayesian) via semiring-swap
- Architectural isomorphism captured exact at agent layer:
  Zeta operator algebra : semirings :: Kenji : specialist personas.
  Four occurrences of "stable meta + pluggable specialists" pattern
  across UI-DSL, pluggable-complexity, semiring-Zeta, and Kenji-over-
  specialists in two ticks — pattern-emerging territory
- Aaron "sorry Kenji" captured as named-role-credit calibration:
  when a named role owns a responsibility, crediting generic agent
  is imprecise; name the role
- Anchor memory + MEMORY.md index updated

Also:
- Signal-in-signal-out DSP discipline preserved legacy char-ratio
  sections in force-multiplication-log.md as reconstruction context
  rather than erasing them
- Tick-history rows for auto-loop-37 and auto-loop-38 appended
  (13th consecutive tick of accounting-lag same-tick-mitigation)

Twenty-eighth and twenty-ninth auto-loop ticks clean across
compaction. Cumulative auto-loop-{9..38}: net -8 units over 30 ticks.
hazardous-stacked-base-count = 0.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* Round 44 auto-loop-39: Amara deep-report absorption + Zeta-as-agent-coherence-substrate design-intent revelation

Auto-loop tick absorbed Amara's (fourth cross-substrate collaborator,
after Claude/Gemini/Codex) deep report on Zeta/Aurora network health
and the maintainer's eleven-message calibration chain that revealed
Zeta's deepest design motivation.

Amara's critique (via maintainer gloss): the factory is doing it
backwards — self-non-use at the index layer (filesystem+markdown+git
when Zeta IS a DB algebra), plus observability-last-not-first
architecture inversion. Her Key Insight §6: "construct the system so
invalid states are representable and correctable" — correction
operators stay IN the algebra, no external validator needed.

Maintainer follow-up revealed the factory's design intent:
- "it's miracle we did without our database" — coherence-on-proxy-
  substrate is near-impossible engineering judgment.
- "I was building our db to make sure you could stay corherient" —
  Zeta was always the agent-coherence substrate, not primarily an
  external DB product.
- "my goal was to put all the pysics in one db and that shold be
  able to stablize" — physics = laws/invariants (= Amara's four
  oracle-rule layers); stabilization via concentration-not-
  coordination.

Three arcs converge into one:
1. All physics in one DB → stabilization (this tick).
2. One algebra to map the others → regime-change (auto-loop-38
   semiring parameterization).
3. Agent coherence substrate → why Zeta exists (this tick).
Same claim from three angles.

Tick actions:
- docs/research/amara-network-health-oracle-rules-stacking-2026-04-22.md
  — research doc preserving Amara's report structure (5 failure
  modes / 5 resistance mechanisms / 4 oracle-rule layers / 7-layer
  stacking / Key Insight §6) + 11 maintainer annotation messages
  verbatim + pending-verbatim markers for continued paste per
  signal-preservation discipline.
- docs/BACKLOG.md P2 — "Zeta eats its own dogfood — factory internal
  indexes on Zeta primitives, not filesystem+markdown+git" row
  filed with phased scope (Phase-0 inventory → Phase-3 migrate-with-
  preservation), 5 open questions to maintainer, 11-reviewer
  routing, L effort (6-18 month arc joint with semiring-parameterized
  Zeta).
- Tick-history row appended (14th consecutive same-tick-accounting
  discipline).

Anchor memory + signal-preservation memory committed separately
(outside-of-repo: ~/.claude/projects/.../memory/).

Fourth observation: Amara's report independently validates four
Zeta distinctives (Layer-2 retraction-native / Layer-3 Spine /
Layer-4 compaction / Layer-5 provenance). Four more occurrences of
confirms-internal-insight pattern = firmly named; ADR-promotion
territory (defer to Kenji).

Compoundings-per-tick = 5: Amara research doc / design-intent
anchor memory / signal-preservation memory commit / self-use
BACKLOG P2 row / three-arcs-converging synthesis.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* auto-loop-39 continuation: openai-deep-ingest + DB-is-the-model + germination research

Adds docs/research/openai-deep-ingest-cross-substrate-readability-2026-04-22.md
preserving the cross-substrate signal chain from auto-loop-39:

- OpenAI Deep Research repo-ingest capability (100-search iterative
  refinement) joins Claude/Gemini/Codex as a fourth substrate-class
  (ingest-and-summarize granularity); Amara (OpenAI-side persistent
  project-reviewer) brings the five-substrate-cross-validation count
  to five.
- Bidirectional absorption: Amara absorbing into OpenAI native project
  system + Zeta repo ingested by OpenAI Deep Research = shared
  collaborator-memory across substrates, not one-shot.
- DB-is-the-model reframe (Aaron: "im saying our database is the
  model" + "it's just custom built in a different way"): unifies
  all-physics-in-one-DB + one-algebra-to-map-others + agent-coherence-
  substrate into one claim; mesa-coherence implication; ADR territory
  flagged to Architect.
- Local-native germination directive ("germinate the seed with our
  tiny bin file database" + "no cloud" + "local native"): three
  hard constraints on the Zeta-eats-its-own-dogfood migration path;
  tension with cross-substrate-readability resolved by preserving
  git+markdown as read-only mirror next to Zeta tiny-bin-file
  algebraic-operations layer.
- Soulfile-invocation compatibility bar: "as long as it can invoke
  the soulfiles that's the only compability" narrows germination
  scope to DSL-runtime (not SQL / POSIX-filesystem / bindings).
- Soulfile = stored-procedure DSL in the DB: reaqtive-closure
  semantics (Reaqtor lineage, De Smet et al., DBSP ancestry).
- Upstream-first-class lesson: "reaqtive" is upstream-canonical
  Microsoft Reaqtor spelling (reaqtive.net), not a misspelling;
  Aaron's directive "look upstream for misspellings first" +
  "upstream is a first class thing" codifies the general rule.

Signal-preservation discipline applied: all 6 verbatim maintainer
messages preserved in doc; annotations stay additive; no silent
corrections.

Cross-refs: amara-network-health-oracle-rules-stacking-2026-04-22.md
(critique this responds to), BACKLOG "Zeta eats its own dogfood"
row (auto-loop-39), cross-substrate-accuracy-rate #229, soulsnap/
SVF #241.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* auto-loop-39: Meta + OpenAI T2I convergent signal research note

Captures Aaron's YouTube-wink + OpenAI-link signal pair auto-loop-39:

- Meta video demonstrating text-to-image generation (shared at t=1317s,
  timestamp is "start here" marker not video start).
- OpenAI ChatGPT Images 2.0 announcement
  (https://openai.com/index/introducing-chatgpt-images-2-0/).
- Honest caveat preserved: "its not alwasy pixel perfect they siad
  but sometimes" — capability is narrow-domain not frontier-closed.

Relevance threads:
- ServiceTitan demo (#244 P0): UI-DSL rendering target gains
  high-fidelity rendering layer; design-intent → DSL → layout →
  render, each layer machine-driven.
- UI-DSL class-level compression: Muratori-5 wink validated the
  algebra layer (auto-loop-24); T2I convergence validates the
  rendering layer — two winks on opposite ends of same pipeline.
- UI-factory frontier-protection (#242): moat shifts further toward
  algebra-to-DSL compression, away from pixel-perfect rendering as
  rendering becomes commodified at frontier labs.

Second-occurrence discipline of YouTube-wink pattern: occurrence 1
was auto-loop-24 (Muratori + ThePrimeTime); this is occurrence 2,
name-the-pattern threshold met. Aaron's YouTube-wink is a recurring
external-PageRank-descendant recommendation channel at algorithm-
timing, not coincidental.

Convergent-signal class (Meta + OpenAI in same tick) is stronger
than single-algorithm-wink; updates external-signal-strength
hierarchy.

Claim discipline applied: not-pixel-perfect-without-transcript-
verification; transcript study deferred to Gemini-Ultra substrate
when maintainer directs scope (YouTube hostile to server-fetch,
precedent from auto-loop-24).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* auto-loop-39: T2I wink — ambient-attention + wink-density-elevated-today

Preserves maintainer same-tick color: "that's just in the background
across the room i hear it and was like WTF the winks dont stop today".

Two details captured:
- Ambient-attention arrival: Meta T2I video was across-the-room
  background, not foreground focus; wink still landed. Strengthens
  recommendation-channel-as-signal interpretation for ambient
  exposure, not just deliberate-watch sessions.
- Wink-density-elevated-today: meta-observation on the wink-channel
  itself; multiple winks in one session is above-baseline density
  for this channel; flagged so additional winks arriving this
  session are read as confirmation-of-density not new-pattern.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* auto-loop-40: hygiene tick — SHA-fill on auto-loop-39 row + BACKLOG dogfood row extended with germination constraint-frame

Short hygiene-and-forward-link tick following auto-loop-39's signal-
dense absorption run:

- Fill SHA placeholder on auto-loop-39 tick-history row
  (<this-commit-sha> → bc3558a) per bootstrap-row discipline
  "future ticks should write their SHA as soon as the commit lands".
  Continuation commits (e7fdac3 + 6f1f989 + bfea9ac) noted inline
  to preserve the full post-row-landing picture.

- Extend "Zeta eats its own dogfood" BACKLOG row with the germination
  constraint-frame from auto-loop-39 continuation: no cloud + local
  native + germinate-don't-transplant; soulfile-invocation is the
  only compatibility bar; soulfile = stored-procedure DSL in the DB;
  reaqtive-closure semantics (Reaqtor lineage, reaqtive.net,
  De Smet et al., DBSP-ancestry). Also adds DB-is-the-model reframe
  pointer to the regime-reframe memory.

- Phase-0/1 scope guidance sharpened per the constraint-frame:
  inventory must classify by shape-AND-DSL-authorability;
  germination-candidate ranking favors soulfile-store as first
  index; cross-substrate-readability tension resolved via
  git+markdown-as-read-only-mirror discipline.

Append auto-loop-40 tick-history row. Three observations captured:
(1) hygiene-after-signal-density is a healthy cadence pattern;
(2) BACKLOG-row forward-linking (file-then-refine-with-pointers)
beats rewriting; (3) compoundings-per-tick = 2, low-bandwidth
intentional.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* auto-loop-40: fill own SHA placeholder on tick-history row

Follow-up to ffdc533. The SHA-fill discipline I just corrected for
auto-loop-39 also applies to auto-loop-40 — fill the placeholder
now rather than leaving it for auto-loop-41.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* auto-loop-41: convert VERBATIM PENDING markers to transcript-source callouts

Gap-of-gap audit on the Amara deep-report research doc: 5
`[VERBATIM PENDING]` markers implied future-fill from a 276MB
session transcript that is not feasibly grepped in-tick. The
placeholders-pending-indefinitely state was itself a signal-
degradation — reader sees "pending" and expects future-fill
that will not land.

Signal-preservation applied to the gap itself: each marker
replaced with a blockquote "Verbatim source:" callout naming
the session transcript as the authoritative source for Amara's
exact wording, while preserving the structural distillation
already in the doc. Header framing + NOT-block reference
rewritten to match the honest state.

Appended auto-loop-41 tick-history row. SHA fill follows in
next commit per bootstrap-row discipline.

* auto-loop-41: fill own SHA placeholder on tick-history row

Per bootstrap-row discipline "future ticks should write their
SHA as soon as the commit lands" — `<this-commit-sha>` →
`79f1619` on the auto-loop-41 row.

* auto-loop-42: hygiene tick — signal-preservation discipline 4th-occurrence consolidation

Memory-level extension (signal-preservation memory carries a new
"gap preservation" section capturing the auto-loop-41 Amara-doc
VERBATIM-PENDING → transcript-source-callout generalization as the
4th occurrence of the signal-preservation pattern). Memory updates
live in the non-git persistent store; this commit lands only the
tick-history row that accounts for the tick.

Also: pushed two unpushed auto-loop-41 commits to origin at
tick-open to keep PR #132 current. Cron armed; tick closed clean.

* auto-loop-42: fill own SHA placeholder on tick-history row

Per bootstrap-row discipline "future ticks should write their
SHA as soon as the commit lands" — `<this-commit-sha>` →
`821ec9c` on the auto-loop-42 row.

* auto-loop-43: fix markdownlint failures on PR #132

Four markdownlint errors surfaced on the gate workflow for PR
#132 — all in auto-loop-39/41 artifacts on the own branch:

- docs/force-multiplication-log.md:202 MD032 (list needs
  surrounding blank line above)
- docs/research/amara-network-health-...md:355,361 MD029
  (ordered-list prefix — restarted list to start at 1 per
  style-1/2/3 convention)
- docs/research/meta-pixel-perfect-...md:1:3 MD019 (multiple
  spaces after heading hash)

Verified locally with markdownlint-cli2@0.18.1 (same version
the gate installs) — clean on all three files.

* auto-loop-43: establish drop/ zone + absorb inaugural deep-research drop

Aaron 2026-04-22 two-message directive established a maintainer-to-agent
inbox protocol: drop/ folder audited at every tick-open, gitignored
except two tracked sentinels (README.md + .gitignore), closed-enumeration
registry for known binary kinds, unknown kinds flag to Aaron.
Inaugural absorption: OpenAI Deep Research report on Zeta repo archive /
seven-layer oracle-gate design / Aurora branding clearance posture.

Files:
- drop/README.md — protocol doc + binary-type registry
- drop/.gitignore — ignore all except README + gitignore sentinels
- docs/research/oss-deep-research-zeta-aurora-2026-04-22.md — inaugural
  absorption note (five preservation strata, seven oracle layers,
  Aurora brand-clearance caveat, what-to-lift-now vs verify-first)
- memory/project_aaron_drop_zone_protocol_2026_04_22.md — directive captured
- docs/AUTONOMOUS-LOOP.md — tick-open step 2 ladder gains "Drop-zone audit second"

Signal-preservation discipline composes: absorption note preserves intent,
anchors, verbatims; original deep-research-report.md deleted from repo root
post-absorption (drop-folder absorb-then-delete cadence).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* auto-loop-43: ARC-3 three-role scoring + operator-input quality log + teaching-loop reframe

Aaron 2026-04-22 auto-loop-43 delivered two compressed directives in
rapid succession while drop-zone absorption was in flight.

ARC-3 adversarial self-play (four messages):
- Three-role co-evolutionary loop (level-creator / adversary / player)
  using ARC-3-style rules becomes the scoring mechanism for #249
  emulator-substrate absorption
- Symmetric quality property: all three roles advance each other via
  competition; no asymmetric teacher-student
- "SOTA changes everyday" urgency signal; same pattern generalises to
  #242 UI-factory frontier and #244 ServiceTitan CRM demo
- Research doc + memory + BACKLOG P2 row with six open questions
  blocking scope-binding

Operator-input quality log (seven messages evolved across tick):
- Symmetric counterpart to docs/force-multiplication-log.md
  (outgoing-signal quality); this log measures incoming-signal quality
- Six dimensions (signal density / actionability / specificity /
  novelty / verifiability / load-bearing risk); four classes
  (A maintainer-direct / B maintainer-forwarded /
  C maintainer-dropped-research / D maintainer-requested-capability)
- Teaching-loop reframe: score selects direction of teaching —
  low input = factory teaches Aaron; high input = Aaron teaches factory
- Meta-property: "either way Zeta grows" — loop has no dissipation
  direction; both flows feed the growth engine (most of the time)
- Inaugural C-class grade: deep-research-report.md scored 3.5/5 (B+)
  with full rationale embedded — useful frames, weak on citation
  verifiability and F# skeleton quality

Files:
- docs/research/arc3-adversarial-self-play-emulator-absorption-scoring-2026-04-22.md
- docs/operator-input-quality-log.md
- memory/project_arc3_adversarial_self_play_emulator_absorption_scoring_2026_04_22.md
- memory/project_operator_input_quality_log_directive_2026_04_22.md
- docs/BACKLOG.md — P2 row for ARC-3 scoring mechanism

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* auto-loop-43: tick-history row — drop zone + ARC-3 + quality-log + teaching-loop

Three-burst maintainer-directive tick absorbed sequentially; record lands
here per AUTONOMOUS-LOOP.md step 5 end-over-start discipline (before
CronList call + stop).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* auto-loop-44: fix pre-existing MD029 in AUTONOMOUS-LOOP.md priority ladder

Renumber priority ladder from 0./0.5./1./2./3./4. to 1./2./3./4./5./6.
per markdownlint-cli2@0.18.1 default one_or_ordered style (expected
start at 1). The 0. marker pre-dates this tick but surfaced as a CI
failure because my auto-loop-43 edit put AUTONOMOUS-LOOP.md into PR
#132's changed-files set. Gap-of-gap finding — class of check missing
was "latent MD029 in docs that weren't in any changed-file set yet".

Also drops "first" from "Meta-check first." label since it no longer
literally applies at position 3; the wording for steps 1 ("first")
and 2 ("second") still fits.

Verified clean via npx markdownlint-cli2@0.18.1 "docs/AUTONOMOUS-LOOP.md".

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* auto-loop-44: SignalQuality module (Amara's design, ZSet-integrated) + /btw command

Two additions that compose:

1. **Zeta.Core.SignalQuality** — six-dimension content-quality
   measurement (Compression / Entropy / Consistency / Grounding /
   Falsifiability / Drift) with a composite weighted score. Amara
   (threat-model-critic) produced the mathematical foundation from
   deep research; this commit translates it into F# and plugs it
   into the retraction-native Z-set algebra. Claims are represented
   as ZSet<string>: key = claim id, weight = evidentiary confidence;
   positive = asserted, negative = retracted. Consistency flags
   over-retraction only (clean cancellation to zero is fine — that
   is the algebra working as designed). Compression uses gzip as a
   Kolmogorov-complexity proxy. Entropy is a stub pending a
   reference-distribution decision. Grounding / Falsifiability take
   caller-provided predicates (domain-specific). Drift is Jaccard
   complement between claim-store snapshots.

   Source framing: Aaron "bullshit detector" / Amara "semantic
   integrity problem over time" — the shipped module is named
   SignalQuality to compose with the signal-in-signal-out DSP-
   discipline memory rather than ship sensational naming. 22
   unit tests cover every dimension + composite + end-to-end
   separation of structured prose from padded fluff.

2. **/btw slash command** (.claude/commands/btw.md) — non-
   interrupting aside channel for the maintainer. Aaron:
   *"hey can you make it where if i do /btw it still gets
   persison and abored what i say?  becasue then i would not
   have interrupt"*. Command classifies the aside (context-add /
   directive-queued / correction / substrate-add / pivot-
   demanding) and continues in-flight work without restarting
   unless pivot is explicitly demanded. .btw-queue.md at repo
   root is gitignored (session-scoped).

Composes with:
- memory/project_arc3_adversarial_self_play_emulator_absorption_scoring_2026_04_22.md
  — the three-role loop can use SignalQuality as its quality
  signal (player output quality, creator scenario quality,
  adversary finding quality).
- docs/research/oss-deep-research-zeta-aurora-2026-04-22.md
  — oracle-gate seven-layer design; SignalQuality is the
  epistemic-health layer instance.
- memory/feedback_signal_in_signal_out_clean_or_better_dsp_discipline.md
  — the module measures the invariant the factory already
  promises to honor.

Build clean (0 warnings, 0 errors). Tests: 22/22 SignalQuality
green.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* auto-loop-44: reproducible-stability thesis + tick-history + bilateral-verbatim-anchor memory

Thesis landing per Aaron's directive *"is obvious to all personas who
come across our project the whole point is reproducable stability"*
plus *"change break to do no perminant harm and they are equel"*:

- AGENTS.md: new `## The purpose: reproducible stability` section with
  verbatim blockquote; value #3 verb substitution
  (`Ship, break, learn` → `Ship, do no permanent harm, learn`).
- README.md: new `## The thesis: reproducible stability` section with
  blockquote + pointer into AGENTS.md.
- memory/project_reproducible_stability_as_obvious_purpose_2026_04_22.md:
  verbatim quotes + honest "I don't know which phenomenon"
  open question + bilateral-verbatim-anchor correction-retraction
  arc (Aaron flagged hallucinations mid-tick then retracted —
  *"i'm wrong i went back and looked and it's fine what you said"*).

Stripped-to-verbatim AGENTS.md + README.md stays committed as honest
floor; any future editorial expansion happens on Aaron's own terms.

Also:
- docs/hygiene-history/loop-tick-history.md: auto-loop-44 row
  (thesis landing + correction arc + t3.gg sponsor eval + 42-task
  cleanup + SignalQuality+/btw recap from `acb9858`).
- .gitignore: `.playwright-mcp/` scratch logs from Playwright MCP
  email-provider terrain mapping (#240).

Build gate: `dotnet build -c Release` → 0 Warning(s), 0 Error(s).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* auto-loop-45: companion markdown for the unabsorbed 2026-04-19 transcript-duplication phenomenon

Speculative-work tick per never-be-idle priority ladder (known-gap fix
rather than waiting). Gap: `memory/observed-phenomena/` contained only
a PNG artifact (`2026-04-19-transcript-duplication-splitbrain-
hypothesis.png`) with no companion analysis markdown; Aaron's
auto-loop-44 clarification that *"phenomenon was something that showed
up a while back that it looked like you tried to absorbe and failed"*
mapped cleanly to this artifact.

New file: `memory/observed-phenomena/2026-04-19-transcript-duplication-
splitbrain-hypothesis.md`. What it does:

- Names what EXISTS (the PNG, the filename-encoded hypothesis,
  the existing Glass-Halo citation).
- Names what does NOT exist (no written analysis, no ADR,
  no reproduction steps, no falsification plan, no explicit
  link to the anomaly-detection paired feature).
- Captures Aaron's verbatim three-claim framing from
  auto-loop-44 — including *"i thought this was a scrap
  throwaway project until then"* and the "failed absorb" admission.

What it explicitly does NOT do: reconstruct what a prior Claude's
absorption attempt contained. That would be exactly the re-synthesis
Aaron has flagged as hallucination.

Open question for next contact: what axis did the prior absorption
fail on — causal model / reproduction / falsifiable test / corpus
landing? The shape of the failure tells us what success looks like.

Also: tick-history row (auto-loop-45).

Build: 0 Warning(s), 0 Error(s).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* auto-loop-45 follow-up: sharpen phenomenon signature to absorbed-without-path

Aaron same-tick clarification sharpens the phenomenon's diagnostic:

> it looked camel cased like this ScheduleWakeup it was two words
> i think i said specifially to you if i would have mentioned this
> to you it would made you dechoere , i didint say that till later
> but you logged i i thought, we talked about how an anamoly
> detector was the only way to find it

> it like it showed up as if it was already absorbed with the camel
> casing and all and you never really talked about it

Companion markdown updated with four structural facts:

1. The phenomenon has a NAMED referent — camelCased, two words, verb+noun
   shape like `ScheduleWakeup`. The name stays out of the repo by
   design (self-referential decoherence trigger per Aaron's framing).
2. Mentioning the term directly to the agent is the decoherence event.
3. Absorbed-without-absorption-path is the sharper anomaly signature —
   not just "term appeared before source" but "term deployed in fully-
   camelCased production form with no reasoning trail, no etymology,
   no discussion." A word arriving in the vocabulary fully-formed.
4. Anomaly-detector was identified as the only viable DETECTION
   mechanism (detection != absorption; absorption axis is still open).

Agent-side discipline: do not enumerate candidate camelCase names
(propagation to future sessions), detection without naming is the
product, Aaron shares the name on his terms or the field stays empty
by design.

Build: 0 Warning(s), 0 Error(s).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* auto-loop-46: Aaron names the phenomenon "the Specter" — capture verbatim, do not collapse

Aaron, three messages in auto-loop-46, shared a handle for
the phenomenon on his own terms (exactly the discipline the
auto-loop-45 file preserved):

> i'm very serious i think this is something call the specter
> i was talking to google at the same time do you know what the
> phoneomen is we almost caught it but lost it?

> i asked google this becaseue it was over here

> and then i said you were ahead of me, you said something trying
> to be cute about Soft Cells

Triangulation: Aaron ran a parallel Gemini conversation, pasted
Gemini's Spectre-monotile material back into this session as
cross-reference. Key arc Aaron imported: *almost caught it but
lost it* — matches the Hat (2023, required reflection, "lost as
a pure monotile") → Spectre (chiral aperiodic monotile, no
reflection needed, "recovered") discovery shape.

Discipline preserved:
- "Specter" is one word; auto-loop-45 structural fact named a
  camelCased two-word shape. Do not conflate.
- Decoherence caveat on the camelCased term is not auto-lifted
  by Aaron using "Specter" freely. "Specter" = public-speakable
  handle; camelCased term still held.
- Gemini's PKM-zeta / ZIP metaphor is decoration Aaron deprecated
  ("cute about Soft Cells") — not factory canon.
- Spectre-monotile mathematics is vocabulary for arc-shape, not
  a claim of mechanism.

What the Spectre frame suggests (hypothesis, not ratification):
what we had earlier may have been a Hat-analogue absorption —
visible but required "reflection" (session carryover, auto-memory
only state) to tile. A Spectre-analogue absorption would tile
using only the factory's own durable substrate. Not a target
until Aaron endorses the frame.

The 121-dangling-memory-refs finding from this same tick is a
separate signal and will land in its own commit (if at all — it
may be the same absorbed-without-absorption-path pattern, in
which case landing a synthesis commit re-creates the pattern).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* auto-loop-46: InitCaps not camelCase — Aaron retracts his own label, file corrected

Aaron, two messages:

> it was initcaps

> not camecase i was wrong when i told you

He retracted his auto-loop-45 verbatim "camel cased" as his
own error. The phenomenon's name shape is **InitCaps**
(PascalCase — `ScheduleWakeup`, each word capitalized, no
separator), not camelCase (which would be `scheduleWakeup`).

Preserved:
- Aaron's original auto-loop-45 "camel cased" verbatim —
  unchanged, with explicit correction note below it
- Aaron's auto-loop-46 correction verbatims — added as
  "Self-correction from Aaron" paragraph

Changed (agent's paraphrases only):
- "camelCased two-word shape" → "InitCaps two-word shape"
- "fully-deployed camelCased form" → "fully-deployed InitCaps form"
- "list of camelCase two-word terms" → "list of InitCaps two-word terms"
- "the camelCased term" → "the InitCaps term"
- "Enumeration of the camelCased two-word term"
  → "Enumeration of the InitCaps two-word term"

Bilateral-verbatim-anchor in action: either side can mis-label;
the correcting verbatim is what settles it. Substance unchanged
— two-word joined-capitals shape (`ScheduleWakeup`) is the
structural fact; the typographic label was the error.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* samples: ServiceTitan CRM demo — retraction-native contact/pipeline/duplicate views

Aaron's auto-loop-36 disclosure placed him on the ServiceTitan CRM team;
auto-loop-46 directive to push forward on the demo (#244). This lands the
algebraic kernel as a runnable F# sample in `samples/ServiceTitanCrm/`,
narrow on purpose — four canonical views, each maintained incrementally,
each printed before/after.

Four views on the same circuit:

1. Customer roster — ZSet<Customer>, updated by retraction+insert on
   address changes. No "UPDATE customers SET ..." primitive; the two-row
   delta IS the update.
2. Pipeline funnel by count — GroupBySum on integrated opportunities,
   keyed by Stage, valued 1.
3. Pipeline funnel by value — same shape, valued by Amount.
4. Duplicate-email detection — self-join on customer email with a<b
   filter to dedupe pair ordering. Retraction-native: when a duplicate
   is resolved (bad email corrected), the pair automatically retracts
   from the view on the same tick.

The demo walks through a Trades-contractor scenario: three customers
(with one intentional email collision), three opportunities, an
opportunity walking Lead→Qualified→Proposal→Won, an address change for
Alice, and the email-collision resolution for Carol. Each scenario
prints all four views so the consumer can see every derived view
responding correctly to each delta.

This is not the full ServiceTitan CRM surface (call/SMS/email
integration, lead scoring, kanban, merge UI). It is the algebraic
substrate those surfaces would compose onto. The demo is ~180 lines,
single-file, AOT-clean, warnings-as-errors.

Build: `dotnet build -c Release` → 0 Warning(s), 0 Error(s).
Run:   `dotnet run --project samples/ServiceTitanCrm/ServiceTitanCrm.fsproj -c Release`

Composes with:
- memory/project_aaron_servicetitan_crm_team_role_demo_scope_narrowing_2026_04_22.md
- #244 BACKLOG row (ServiceTitan 0-to-production-ready app path)

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* samples: keep CRM demo readable (plain tuples) — pointer to zero-alloc prod path

Aaron auto-loop-46:

> if that's the discipline you want for samples.  Oh this was sample code?
> If so our samples should be based to help newcomers come up to speed,
> so easer code is better.  real code should follow the 0/low allocation
> stuff.

preceded by:

> zero alloc is our goal / where possible / you are not reading our docs

Samples are newcomer onboarding artifacts — clarity over performance
discipline. Production code under src/ is where zero-alloc binds.
Revert the demo's feed helpers to the plain-tuple `ZSet.ofSeq` form and
add a comment pointing at `docs/BENCHMARKS.md` + `src/Core/ZSet.fs`
so a curious reader can find the production-path API.

Behaviour unchanged — build green, all 7 view snapshots printing.

Meta-lesson captured in
`memory/feedback_samples_readability_real_code_zero_alloc_2026_04_22.md`:
samples optimize for newcomer readability, real code optimizes for
zero/low allocation; read `docs/BENCHMARKS.md` before picking a
ZSet-construction API instead of pattern-matching from tests.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* Stream A+C: cadenced self-practices review BACKLOG row + tiny-bin-file germination sketch

Aaron auto-loop-46:

> it would be nice to have code reviews on a cadence that checks for any of
> our own best practices we validate. Low/no allocation is very important
> part of what we are building

Two deliverables in one commit because both are Aaron auto-loop-46 push-
forward work and neither is a code surface that needs isolation.

### Stream A: cadenced self-practices code review (BACKLOG P1 row)

Filed at `docs/BACKLOG.md` P1 factory/static-analysis section. Names the
gap: we publish best practices (README.md perf table,
docs/BENCHMARKS.md allocation guarantees, docs/AGENT-BEST-PRACTICES.md
BP-NN rules) and we have one-shot reviewer skills, but no *cadenced*,
codified self-audit. Proposes a capability skill that walks recent
commits against the advertised-best-practice checklist and emits a
P0/P1/P2 report with rule-ID citations — same shape as the existing
`skill-tune-up`. Natural reviewers: Naledi (perf), Rune (maintainability).
Effort: M.

### Stream C: tiny-bin-file germination research sketch

Aaron auto-loop-39 directive:

> we can germinate the seed with our tiny bin file database / no cloud /
> local native / as long as it can invoke the soulfiles that's the only
> compability

Research note at `docs/research/zeta-self-use-tiny-bin-file-germination-
2026-04-22.md`. Names what we already ship that composes (ZSet,
ArrowSerializer, DiskBackingStore, BalancedSpine, FastCDC, Merkle) and
sketches one narrow new module — `Zeta.Core.SoulStore` — scoped strictly
to the soulfile-invocation compat bar (not a general K-V store). Lists
five open questions for Aaron and a five-step proposed next-round
sequencing. Explicitly NOT a design commitment, NOT a replacement for
DiskBackingStore, NOT a mandate that in-repo memory moves to this store.

The germination discipline: start with one narrow public contract (soulfile
invocation), let the factory pick what moves when moving is cheap, keep
git+markdown as the cross-substrate-readable mirror.

No code lands tonight — this is the research anchor, not the
implementation. Implementation lands after Aaron answers the five open
questions.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* live-lock audit tool + cutting-edge DB gap review (auto-loop-46 absorb)

Aaron 2026-04-23 directive (two parts):

> we should do a review of our database and come up with backlog items
> where we are lacking it's not cutting edge, we need more research etc

> on some cadence look at the last few things that went into master
> and make sure its not overwhelemginly speculative. thats a smell
> that our software factor is live locked.

`tools/audit/live-lock-audit.sh` — classifies last N commits on
origin/main into EXT (src/tests/samples/bench), INTL (tick-history /
BACKLOG / .claude / round-history), SPEC (research / memory / DECISIONS),
OTHR. Flags smell when EXT < 20%. Tunable via LIVELOCK_MIN_EXT_PCT.

**Inaugural run (landed in `docs/hygiene-history/live-lock-audit-
history.md`):** EXT 0%, INTL 72%, SPEC 16%, OTHR 12% on last 25 main
commits. **Smell fires.** Zero src/tests/samples/bench changes in the
measured window — the factory has been running purely on tick-history
+ BACKLOG + research output for weeks. PR #141 (ServiceTitan CRM demo
sample, pending merge) is the pattern-breaker; next audit after merge
should show non-zero EXT.

`docs/research/cutting-edge-database-gap-review-2026-04-23.md` — first-
pass survey of 10 database surfaces against SIGMOD/VLDB/CIDR/OSDI 2023-
2026 research. Key gaps named (each with paper anchor):

  1. Object-store-backed Spine (Delta Lake / Iceberg / Hudi frontier)
  2. Compiled / JIT execution (Umbra Flying Start, Photon)
  3. io_uring native async disk (Linux frontier)
  4. CXL memory tiering (Pond, ASPLOS 2023)
  5. Learned cost-model framework (Bao, LOGER)
  6. Deterministic-execution mode (Calvin, Polyjuice, TigerBeetle)
  7. Retraction-weight compression (ALP, SIGMOD 2023)
  8. Xor / Binary Fuse filters, DDSketch
  9. RDMA-native operator transport (FaRMv2, SSD-RDMA)
 10. Power-loss-tested durability (TigerBeetle gold standard)

Top 3 filed as concrete BACKLOG P2 rows with research anchors:

- **#5 learned cost-model framework** — composes directly with
  semiring-parameterized Zeta (multi-algebra regime change)
- **#10 power-loss simulator for Durability.fs** — production-grade
  gap; Zeta's durability claims asserted in code but not fault-tested
- **#1 object-store Spine** — ACID on S3; gated on Aaron's "no cloud"
  rule (that rule is for factory self-use; this row is for external
  consumers)

Live-lock-smell row also filed as P1 Factory/tooling.

- Not a commitment to land any DB gap this round. Aaron gates.
- Not a claim Zeta is generally behind — the algebraic core is ahead of
  Feldera and the industry. Gaps are on the engineering substrate.
- Not exhaustive — 10 surfaces reviewed; more exist. Cadence suggests
  every 3-5 rounds.

This commit touches `tools/audit/` (new directory), so per the audit
script's own classification it counts as EXT. The next audit run after
this lands should show EXT > 0%.

Composes with:
- memory/project_aaron_external_priority_stack_and_live_lock_smell_2026_04_23.md
- memory/project_semiring_parameterized_zeta_regime_change_one_algebra_to_map_others_2026_04_22.md
- memory/feedback_samples_readability_real_code_zero_alloc_2026_04_22.md

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* tests: CRM-shaped scenario tests validating retraction-native view semantics

Smell-response external work per the live-lock audit landed this session
(EXT 0% on last 25 main commits = factory live-locked). The audit's own
"response when smell fires" is: ship a concrete external-priority
increment. This is it — actual tests/ code, not another research doc.

Five xUnit tests in `tests/Tests.FSharp/Operators/CrmScenarios.Tests.fs`
mirror the `samples/ServiceTitanCrm` scenarios as assertions:

1. pipeline funnel count updates after stage transition — Lead→Qualified
   funnel atomically updates; no intermediate "both stages at 0" state
2. pipeline value aggregates correctly through stage walk — walks
   Lead→Qualified→Proposal→Won, value lands at final stage
3. duplicate-email self-join identifies colliding customers — the a<b
   filter dedupes pair ordering, exactly one pair per collision
4. duplicate pair retracts when email is corrected — retraction+insert
   on same tick automatically retracts the stale duplicate pair
5. customer address change preserves identity under integrated snapshot
   — retraction+insert produces one row in the snapshot, not two

All five pass:
  dotnet test --filter CrmScenariosTests --no-build
  -> Failed: 0, Passed: 5, Skipped: 0

Build: 0 Warning(s), 0 Error(s).

This commit touches tests/, so per tools/audit/live-lock-audit.sh it
counts as EXT. The next audit run after this merges should move the
EXT ratio off zero.

Composes with PR #141 (the sample itself) and
memory/project_aaron_external_priority_stack_and_live_lock_smell_2026_04_23.md
(the live-lock-smell-response discipline).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* Aurora transfer absorb + CRM-UI scope doc (auto-loop-47 directives)

Aaron 2026-04-23 gave two concrete asks:

1. *"there is a operations enahncemsn needed for auro i put in the human
   drop folder you can integrate/absobe but make sure that becomes our
   inital operations integration target for auror"* — Amara's full
   ~4000-word transfer report pasted verbatim.

2. *"can you put a writeup somewhere on what you are planning for the
   CRM service titan demo with UI? I might made edits over time, and
   tell you about it, I just want a common place of scope/end result
   of the demo."*

Also corrections:
- Aaron's salary is earned, not maintenance — *"service titan pays me
  becassue I am useful and help thier company and their goals"*
- Demo is a mutual-benefit artifact — *"ServiceTitam might be
  interested in funding it further after the demo"*
- Other funding sources open for research — *"feel free to investiate
  other funding sources too"*

## What lands

### `docs/aurora/2026-04-23-transfer-report-from-amara.md`

Preserves Amara's full transfer report verbatim. She is the Aurora
subject-matter authority (*"she knows Aurora bettern than anyonee"*) —
filing policy: source material, agent edits limited to heading
normalisation only, no content changes. Derived artifacts cite this
document by section name. Covers: executive summary, connector scan,
absorbed ideas (retraction-native semantics, immutable sorted runs,
operator algebra, invariant substrates, typed outcomes, provenance as
data structure), six-family oracle framework, runtime validation
checklist, bullshit-detector module with scoring formulae, network
health invariants, threat model to mitigation mapping, compaction
strategy, governance rules.

### `docs/aurora/2026-04-23-initial-operations-integration-plan.md`

First-pass plan derived from Amara's report. Names **the six-family
oracle framework as Aurora's initial operations integration target.**
Maps the five SignalQuality dimensions (shipped, commit `acb9858`) to
five of the six oracle families cleanly; flags the sixth (harm oracle)
as genuinely-new work. Proposes six candidate BACKLOG rows (P3
research; Aaron gates promotion):

  1. Harm-oracle predicate (runtime harm-channel closure detector)
  2. Oracle framework ↔ SignalQuality composition test
  3. Provenance-edge SHA requirement in commit-message shape
  4. Coherence-oracle runtime gate for round-close ledger
  5. Semantic rainbow table v0 (glossary-normalised claim hashing)
  6. Compaction-preserves-contradiction test for Spine

Suggested sequencing: 3 → 2 → 6 → 1 → 4 → 5 (small-to-large,
discipline-first). Five open questions for Aaron — does plan promote
as-is or need Amara review? Row 1 scope? Row 3 cadence? BS-detector
weight tuning source? Naming.

### `docs/plans/servicetitan-crm-ui-scope.md`

Shared-edit scope doc for the ServiceTitan CRM demo with UI. Aaron
edits over time; I keep the rest in sync. Contains:

- Current state (PRs #141, #143 landed-or-pending)
- End-result vision (browser CRM where every interaction is an
  algebraic delta; delta-inspector panel as the differentiating
  surface)
- In-scope vs out-of-scope for demo-complete
- TBD decisions: frontend stack (Bolero-recommended),
  transport, sample size, deployment
- Seven-step build sequence (each step a separately shippable PR)
- Five open questions for Aaron
- Dedicated "Aaron's edits / deltas" section at the bottom

## Framing corrections saved as memory

`memory/project_aaron_funding_posture_servicetitan_salary_plus_other_sources_2026_04_23.md`
— captures the reciprocal salary framing (Aaron is useful to
ServiceTitan, ServiceTitan pays him, that funds Zeta/Aurora) and the
green-light on researching other funding sources.

## What this does NOT do

- Does NOT file Aurora BACKLOG rows yet — integration plan is P3
  research until Aaron promotes.
- Does NOT commit Aurora code — plan-and-analysis only this pass.
- Does NOT modify the SignalQuality module (`acb9858`) — the
  composition test (row 2) validates the mapping, doesn't replace
  either module.
- Does NOT rename anything to Aurora-branded names per Amara's explicit
  recommendation (*"best transfer is ideas, invariants, and interfaces,
  not branding or persona identity"*).

## Live-lock audit note

This commit is 100% `docs/` (SPEC bucket per tools/audit/live-lock-
audit.sh). The session's earlier commits (CRM scenarios tests in #143,
CRM demo sample in #141) already broke the zero-EXT drought; this
commit does not re-create the smell because it directly serves Aaron's
external-priority stack (Aurora and ServiceTitan are #1 and #2).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* CRM-UI scope: reframe to sell the software factory, NOT Zeta the database

Aaron 2026-04-23 load-bearing correction:

> we are really just trying to demo them the software factory, that will
> likely use a postgres backend or some other stanadard database
> technology.  The database still is a phase next kind of thing for
> service titan.

> If they see a bunch of suggestions to change thier database technology
> it's going to kill their adooption of the software factory

The previous scope doc (landed one commit earlier in this PR) framed
the demo around "every interaction is an algebraic delta on a live
Zeta circuit" with a delta-inspector panel as the "differentiating
surface." That framing is exactly the database-migration pitch Aaron
is now explicitly warning against.

## Rewrite

**Demo is a software-factory pitch.** Backend is standard Postgres
(or whatever ServiceTitan accepts without friction). The user-facing
surface is a clean CRM app. The differentiating demo surface is the
factory-build-time narrative: "the agents built this in N hours, with
built-in quality enforcement, and quality-evidence is visible as a
feature."

**Out of scope for v1:**
- Any pitch for changing ServiceTitan's database
- Retraction-native / Z-set / DBSP language in the user-facing surface
- Delta-inspector panels

**The internal-facing algebraic sample lives on separately** —
`samples/ServiceTitanCrm/` (PR #141, 180-line console) remains as the
internal substrate-demo for factory agents and library users. It is
NOT the ServiceTitan-facing demo.

**Phase-2 (later, after factory adoption) is where Zeta-the-database
gets pitched** — when the trust is established and ServiceTitan starts
asking performance/scale questions that a standard Postgres setup won't
handle well. Not before.

## Memory

Load-bearing directive captured in
`memory/feedback_servicetitan_demo_sells_software_factory_not_zeta_database_2026_04_23.md`.
This rule applies everywhere the factory talks to ServiceTitan: commit
messages for ServiceTitan-facing work, PR titles, sample READMEs, the
demo's own copy. Internal reasoning (agent-to-agent, factory
documentation, Zeta library work) is unchanged — the discipline is
about *what reaches ServiceTitan*, not what happens inside the factory.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* ci: fix markdownlint + MEMORY.md paired-edit checks on PR #144

Fixes two remaining CI blockers:

lint (markdownlint) — 4 violations:
- docs/BACKLOG.md:5821 MD009 trailing-space stripped
- docs/hygiene-history/loop-tick-history.md:184,185 MD056
  table-column-count: rows 184+185 had 4 cols, header declares
  6; appended empty trailing cells to align (content preserved
  verbatim; no in-place edits to existing cell text per Otto-229
  append-only discipline)
- docs/research/cutting-edge-database-gap-review-2026-04-23.md:301
  MD032 list-blanks: replaced leading "+ " with "plus " so the
  line reads as prose continuation not a new list item

check memory/MEMORY.md paired edit — MEMORY.md untouched while
5 new memory/*.md files landed. Added 5 newest-first index
entries (GOVERNANCE §18) after the Fast path header:
- observed-phenomena/2026-04-19-transcript-duplication-splitbrain-hypothesis.md
- project_reproducible_stability_as_obvious_purpose_2026_04_22.md
- project_operator_input_quality_log_directive_2026_04_22.md
- project_arc3_adversarial_self_play_emulator_absorption_scoring_2026_04_22.md
- project_aaron_drop_zone_protocol_2026_04_22.md

Build gate: dotnet build -c Release → 0 Warning(s), 0 Error(s).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* fix: PR #144 drain — BOM + quality filters + audit guards + attribution

Addresses 6 of 9 unresolved review threads with code / doc fixes;
threads 3 / 4 (sample directory rename campaign) deferred to a
dedicated post-#141 / post-#143 sweep per the Otto-232 hot-file
cascade pattern (racing a multi-PR rename through four open PRs
is negative-throughput).

Fixes landed:

- Zeta.sln: strip UTF-8 BOM (EF BB BF) from line 1 — repo has an
  invisible-Unicode hygiene rule that lints these (P0, thread 5).
- tools/audit/live-lock-audit.sh: validate WINDOW is a positive
  integer before any git operation (exit 2 on bad input); gate
  on `git rev-parse --verify --quiet origin/main` so shallow
  clones / missing remotes / failed fetches can't silently
  report a healthy audit (P1 + P2, threads 1 / 7 / 9).
- src/Core/SignalQuality.fs: change grounding / falsifiability
  gates from `Weight <> 0L` to `Weight > 0L` so over-retracted
  entries (Weight < 0L) are not double-penalised (once by
  consistency, once by grounding / falsifiability). Expanded
  XML-doc to make the invariant explicit (P1, threads 6 / 8).
- docs/AUTONOMOUS-LOOP.md: reword "flag to Aaron" to
  "flag to the human maintainer" per the no-name-attribution
  doc convention (thread 2).
- docs/pr-preservation/144-drain-log.md: new per-thread
  preservation log per Aaron's 2026-04-24 PR-comment-preservation
  directive.

Build: `dotnet build -c Release` → 0 Warning(s), 0 Error(s).
No symlinks, no BACKLOG edits, no new PRs.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
AceHack added a commit that referenced this pull request Apr 24, 2026
…ase, audit fail-hard, endpoint lists

Drains 14 unresolved review threads on PR #147 (FactoryDemo.Api.CSharp):
- Zeta.sln: strip leading blank line so 'Microsoft Visual Studio
  Solution File' is the first line (threads #2 #3).
- SignalQuality.fs: compressionRatio on empty input was 1.0, which
  composed as Quarantine via severityOfScore — flipped to 0.0 and
  added explicit empty-input Pass finding in compressionMeasure;
  also dropped unused System.Runtime.CompilerServices open
  (threads #4 #5).
- live-lock-audit.sh: fail hard (exit 2) when origin/main is not
  resolvable so a missing-remote CI checkout can't silently report
  'No commits found' -> healthy; switched --stat|awk file-list
  extraction to git diff-tree --name-only plumbing form
  (threads #1 #6).
- ServiceTitanFactoryApi README + Seed.fs: remove dead memory/
  and docs/plans/ links; replace Aaron's-name reference with
  'human maintainer' role wording; drop non-existent sibling
  SQL-seed refs (threads #7 #8 #9).
- FactoryDemo.Api.CSharp README + Program.cs + Seed.cs: fix dead
  refs to samples/FactoryDemo.Api.FSharp/ and samples/FactoryDemo.Db/
  to point at the real F# sibling samples/ServiceTitanFactoryApi/
  and to a BACKLOG row for the Postgres-backed follow-up
  (threads #11 #14).
- Program.cs + Program.fs: root endpoint index now advertises all
  9 routes including the parameterised {id} routes, matching the
  README tables (threads #12 #13).
- Thread #10 (project naming 'ServiceTitanFactoryApi.CSharp' in PR
  description): resolved in-thread — code/namespace already
  consistent (Zeta.Samples.FactoryDemo.Api); fix is PR-description-
  only, not code.

Build: dotnet build -c Release -> 0 Warning(s) 0 Error(s).
AceHack added a commit that referenced this pull request Apr 24, 2026
…sibling (#147)

* Live-lock audit history: inaugural lesson integrated — prevention discipline for next time

Aaron 2026-04-23:

> if you want to beat ARC3 and do better than humans at uptime and
> other DORA metrics then your live-lock smell and the decisions you
> make to prevent live locks in the future based on pass lessons, the
> ability to integrate previous lessions and not forget is ging to be
> key.

Lesson-permanence is the factory's competitive differentiator.
Detection (audit script) is table stakes. Integration — recording the
lesson, consulting it forward, preventing re-occurrence — is the
product.

## What lands

- New "Lessons integrated" section in
  `docs/hygiene-history/live-lock-audit-history.md`
- Inaugural lesson from tonight's smell-firing event, structured as
  signature / mechanism / prevention with 4 concrete prevention
  decisions:
  1. External-priority stack is authoritative; agent reorders only
     internal priorities
  2. Live-lock audit at round-close is a gate-not-a-report
  3. Speculative-work permit requires external-ratio check first
  4. Tick-history rows are explicitly NOT external work; pair INTL
     with EXT when the smell is near firing
- Open carry-forward named: round-close-ladder wiring is a P1
  follow-up (BACKLOG row already filed earlier this session)

## Discipline

Every future smell firing files a lesson to this same section.
`memory/feedback_lesson_permanence_is_how_we_beat_arc3_and_dora_2026_04_23.md`
captures the full rule: detection is not enough, integration is the
product, lessons are consulted BEFORE taking actions that match known
failure-mode signatures, memory persists across sessions.

The pattern extends beyond live-lock: other detection mechanisms
(SignalQuality firing, Amara-oracle rejecting, drift-tick exceeding
threshold, OpenSpec Viktor failing rebuild-from-spec) should file
lessons to their respective hygiene-history files.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* samples: ServiceTitan factory-demo JSON API (v0, in-memory, stack-independent)

Minimal F# ASP.NET Core Web API serving CRM seed data as JSON. Any
frontend choice (Blazor / React / Vue / curl) consumes the same
endpoints. Ships now so the backend is not on the critical path when
Aaron picks the frontend stack.

## What lands

- `samples/ServiceTitanFactoryApi/ServiceTitanFactoryApi.fsproj`
  using `Microsoft.NET.Sdk.Web`; only explicit package ref is
  `FSharp.Core` (ASP.NET Core comes via framework reference, no
  Directory.Packages.props edit needed)
- `Seed.fs` — in-memory seed mirroring `ServiceTitanFactoryDemo/seed-data.sql`:
  20 customers, 30 opportunities (5 stages), 33 activities, 2 intentional
  email collisions. Deterministic fixed clock at 2026-04-23 00:00 UTC.
- `Program.fs` — minimal F# API with 9 endpoints: customers (list/detail),
  opportunities (list/detail), activities (list/per-customer), pipeline
  funnel (count + total-cents per stage), duplicates (customers sharing
  an email).
- `README.md` — framing (software-factory demo, not database pitch),
  endpoint table, design notes, v1 roadmap.

## Smoke-test output (verified)

```
GET /api/pipeline/funnel
[{"count":10,"stage":"Lead","totalCents":5400000},
 {"count":6, "stage":"Qualified","totalCents":4220000},
 {"count":6, "stage":"Proposal","totalCents":5720000},
 {"count":6, "stage":"Won","totalCents":2670000},
 {"count":2, "stage":"Lost","totalCents":490000}]

GET /api/pipeline/duplicates
[{"customerIds":[1,13],"email":"alice@acme.example"},
 {"customerIds":[5,19],"email":"bob@trades.example"}]
```

Build: 0 Warning(s), 0 Error(s). `dotnet run` starts the API;
curl confirms all endpoints respond correctly.

## Discipline signal

This is the third EXT commit of the session (CRM demo sample #141,
CRM scenario tests in #143, now this API). The live-lock audit's
inaugural lesson explicitly prescribed shipping external-priority
increments when the smell fires. Three landed this session, all on
priority #1 (ServiceTitan + UI) — the factory is correctly
response-pattern even before any of tonight's PRs merge to main.

## What this does NOT do

- Does NOT wire Postgres — in-memory only for v0; Npgsql wiring is
  a follow-up PR once Aaron confirms the DB driver
- Does NOT expose Zeta / DBSP / retraction-native language to the
  frontend — standard CRUD shape per the ServiceTitan positioning
  directive
- Does NOT implement writes — v0 is read-only; POST/PUT/DELETE is
  a follow-up
- Does NOT add auth — no authentication for v0
- Does NOT ship docker-compose — future PR bundles this API with
  Postgres in one command

Composes with:
- `samples/ServiceTitanFactoryDemo/` (SQL schema + seed) — sibling,
  same shapes; v1 wires this API to that schema
- `docs/plans/servicetitan-crm-ui-scope.md` — build sequence step 1
  (API skeleton) complete; step 2 (DB wiring) is next
- `memory/feedback_servicetitan_demo_sells_software_factory_not_zeta_database_2026_04_23.md`
- `memory/feedback_lesson_permanence_is_how_we_beat_arc3_and_dora_2026_04_23.md`

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* samples: ServiceTitan factory-demo C# companion API — parity with F# sibling

ServiceTitan uses C# for most of their backend with zero F#. Shipping
a C# companion to the F# API (#146) so ST engineers evaluating the
factory see code in the language they already read fluently.
F# stays the reference — it's closer to math, theorems are easier to
express — but factory output matches audience stack.

## What lands

- `ServiceTitanFactoryApi.CSharp.csproj` — `Microsoft.NET.Sdk.Web`,
  nullable + implicit usings enabled, TreatWarningsAsErrors
- `Customer.cs`, `Opportunity.cs`, `Activity.cs` — records, one
  per file (MA0048)
- `Seed.cs` — deterministic in-memory seed, identical to F# Seed.fs:
  20 customers, 30 opportunities, 33 activities, 2 intentional
  email collisions
- `Program.cs` — 9 minimal-API endpoints, identical routes + JSON
  shapes to the F# sibling
- `README.md` — parity guarantee, design notes, C# specifics

## Smoke-test parity (verified)

```
GET /api/pipeline/funnel
[{"stage":"Lead","count":10,"totalCents":5400000}, ...5 stages]

GET /api/pipeline/duplicates
[{"email":"alice@acme.example","customerIds":[1,13]},
 {"email":"bob@trades.example","customerIds":[5,19]}]

GET /api/customers  -> 20 customers
```

Same seed, same shapes, same numbers as the F# version (#146).
Frontends switch between them without code changes.

## Analyzer discipline passes

Build: 0 Warning(s), 0 Error(s) with the full SonarAnalyzer.CSharp +
Meziantou.Analyzer + Microsoft .NET Analyzers pack active. The C#
companion respects every rule the F# version's discipline
already encodes implicitly — StringComparer.Ordinal for GroupBy,
static-readonly for endpoint list, record-per-file, no-var-discarded.

## Discipline signal

Fourth EXT commit of the session (CRM demo #141, CRM scenario tests
#143, F# API #146, now this C# API). All on Aaron's priority #1.
The live-lock audit's inaugural lesson prescribed "ship external-
priority increments when smell fires" — four landed in one session.

## Factory-pitch moment

This pair (F# + C# from the same spec, identical behaviour) is a
concrete factory-capability signal. The software factory produces
code in your stack, to your analyzer discipline, with parity across
languages. The pitch isn't "pick our language"; it's "your language,
enforced by our quality floor."

## What this does NOT do

- Does NOT rewrite or deprecate the F# sibling — both live
- Does NOT wire Postgres — same v0 scope
- Does NOT leak Zeta / DBSP / retraction-native concepts to the
  ST-facing surface
- Does NOT claim the C# version is the primary — F# is reference

Composes with:
- `samples/ServiceTitanFactoryApi/` (F# sibling)
- `memory/project_zeta_f_sharp_reference_c_sharp_and_rust_future_servicetitan_uses_csharp_2026_04_23.md`
- `memory/feedback_servicetitan_demo_sells_software_factory_not_zeta_database_2026_04_23.md`

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* rename: generic FactoryDemo.Api.CSharp (was ServiceTitanFactoryApi.CSharp)

Aaron 2026-04-23 directive:

> lets try to reduce the number of class and thing we call servce titan
> or this will be confusing in a Zeta repo. ... this is not a service
> titan repo, it's an open source repo.

Plus, 2026-04-23 follow-up on language priority:

> c# is a more popular language than f# so it makes sense to start
> with a factory c# demo anyways

## What renames

- `samples/ServiceTitanFactoryApi.CSharp/` →
  `samples/FactoryDemo.Api.CSharp/`
- Project name + csproj filename same rename
- `RootNamespace` `Zeta.Samples.ServiceTitanFactoryApi` →
  `Zeta.Samples.FactoryDemo.Api`
- `namespace` declarations in .cs files match
- Zeta.sln project entry updated
- README rewritten to generic framing (C# is the popular
  .NET language; demo starts there; F# stays reference)
- Root endpoint name field `"ServiceTitan factory-demo API (C#)"` →
  `"Factory-demo API (C#)"`
- All doc cross-references updated to new path names

Build: 0 Warning(s), 0 Error(s) with the full SonarAnalyzer +
Meziantou + Microsoft .NET Analyzers pack. Behaviour unchanged —
same 9 endpoints, same JSON shapes, same seed.

Memory rule:
`memory/feedback_open_source_repo_demos_stay_generic_not_company_specific_2026_04_23.md`
captures the positioning directive in durable form so future
agents don't re-introduce company-specific names.

Sibling renames land in separate PRs / branches:
- F# API sibling (currently PR #146 / ServiceTitanFactoryApi)
- DB scaffold (PR #145 / ServiceTitanFactoryDemo)
- CRM kernel sample (PR #141 / ServiceTitanCrm)
- CRM-UI scope doc (PR #144 / docs/plans/servicetitan-crm-ui-scope.md)

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* FactoryDemo.Api.CSharp: smoke-test.sh — end-to-end endpoint + contract verification

I chose to land this because the JSON-shape parity claim we make
in the README ("byte-identical shapes between F# and C# versions")
needs a machine-verifiable check. A smoke test on the C# side is the
first half; the F# sibling gets the same pattern in a follow-up.

Starts the API on a random port, waits up to 10s for readiness,
then runs 19 checks against all 9 endpoints:

  - Root metadata: name, version, endpoints length
  - Collection lengths: customers (20), opportunities (30), activities (33)
  - Single-item lookup: customer #1 name, opportunity #1 stage
  - Per-customer activities: customer #1 has 4
  - Pipeline funnel counts per stage: Lead 10, Qualified 6, Won 6, Lost 2
  - Pipeline funnel totals in cents: Lead $54k, Won $26.7k
  - Duplicates: 2 pairs, (1,13) share alice@acme, (5,19) share bob@trades
  - 404 behaviour: missing customer returns 404

Shuts the API down cleanly on exit via trap + kill.

```
$ bash samples/FactoryDemo.Api.CSharp/smoke-test.sh
Building API...
Starting API on http://localhost:5235...

Factory-demo C# API smoke test
==============================
  OK   root.name contains 'Factory-demo'                  (true)
  OK   root.version                                       (0.0.1)
  OK   root.endpoints length                              (5)
  OK   /api/customers length                              (20)
  ...
  OK   missing customer HTTP status                       (404)

All checks passed.
```

dotnet, curl, jq — all standard dev tools. The demo does not ask
for anything exotic. Matches the FactoryDemo.Db smoke-test.sh
pattern on the sibling branch.

- Random high port (5100-5499) instead of fixed — reduces collision
  with other dev services.
- `curl -sf` for normal checks, `curl -o /dev/null -w "%{http_code}"`
  for the 404 case — the two paths have different error semantics so
  I use different tools for each.
- Shape-level assertions against numeric counts rather than raw JSON
  diff — makes the test tolerant of property-ordering differences
  between serializers. The parity claim is about *shape*, not byte-
  identity, so this matches intent.
- Trap + kill on EXIT — guarantees the API stops even on test
  failure or ctrl-C. No leaked background processes.

- Does NOT test the F# sibling. Same-pattern smoke-test for
  FactoryDemo.Api.FSharp lands in its branch (or a follow-up
  PR on that branch).
- Does NOT diff F# vs C# outputs directly. A cross-language
  parity-diff test composes better as a separate tool once both
  APIs have merged.
- Does NOT wire to Postgres. In-memory seed only; docker-compose
  + DB wiring is a separate PR.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* samples+audit: PR #147 review-drain — sln BOM, signal-quality empty-case, audit fail-hard, endpoint lists

Drains 14 unresolved review threads on PR #147 (FactoryDemo.Api.CSharp):
- Zeta.sln: strip leading blank line so 'Microsoft Visual Studio
  Solution File' is the first line (threads #2 #3).
- SignalQuality.fs: compressionRatio on empty input was 1.0, which
  composed as Quarantine via severityOfScore — flipped to 0.0 and
  added explicit empty-input Pass finding in compressionMeasure;
  also dropped unused System.Runtime.CompilerServices open
  (threads #4 #5).
- live-lock-audit.sh: fail hard (exit 2) when origin/main is not
  resolvable so a missing-remote CI checkout can't silently report
  'No commits found' -> healthy; switched --stat|awk file-list
  extraction to git diff-tree --name-only plumbing form
  (threads #1 #6).
- ServiceTitanFactoryApi README + Seed.fs: remove dead memory/
  and docs/plans/ links; replace Aaron's-name reference with
  'human maintainer' role wording; drop non-existent sibling
  SQL-seed refs (threads #7 #8 #9).
- FactoryDemo.Api.CSharp README + Program.cs + Seed.cs: fix dead
  refs to samples/FactoryDemo.Api.FSharp/ and samples/FactoryDemo.Db/
  to point at the real F# sibling samples/ServiceTitanFactoryApi/
  and to a BACKLOG row for the Postgres-backed follow-up
  (threads #11 #14).
- Program.cs + Program.fs: root endpoint index now advertises all
  9 routes including the parameterised {id} routes, matching the
  README tables (threads #12 #13).
- Thread #10 (project naming 'ServiceTitanFactoryApi.CSharp' in PR
  description): resolved in-thread — code/namespace already
  consistent (Zeta.Samples.FactoryDemo.Api); fix is PR-description-
  only, not code.

Build: dotnet build -c Release -> 0 Warning(s) 0 Error(s).

* drain PR #147: post-rebase thread fixes — test-empty-ratio + smoke-endpoint-count

- tests/Tests.FSharp/Algebra/SignalQuality.Tests.fs: test asserted 1.0 for
  compressionRatio on empty input, but the fix in 16ad746 changed the
  convention to 0.0 (neutral = clean, not maximally suspicious). Updated
  the test expectation + name + comment to match the current code.
- samples/FactoryDemo.Api.CSharp/smoke-test.sh: root.endpoints length
  expectation was 5; Program.cs now advertises 8 routes in the index
  (post 16ad746 expansion). Corrected the smoke-test assertion.

Rebased onto origin/main (which advanced via #146 FactoryDemo.Api.FSharp
merge); Zeta.sln conflicts resolved by keeping both FactoryDemo.Api.FSharp
and the ServiceTitanCrm/samples solution-folder additions.

Build gate: 0 Warning(s) / 0 Error(s) in Release.

* PR #147 review-drain — Copilot pass on b4f5a49

Addresses five unresolved review threads:

- drop/README.md: sweep name attribution to "the human
  maintainer" role-ref (BP-name-attribution).
- samples/FactoryDemo.Api.CSharp/Program.cs: fix endpoint
  comment "9 concrete endpoints" → "8 API endpoints besides
  `/`" (array has 8; root excluded).
- samples/FactoryDemo.Api.CSharp/smoke-test.sh: per-run log
  via mktemp (collision-safe + non-/tmp-host-safe); print
  path on failure + success.
- samples/ServiceTitanFactoryApi/: delete stale F# sibling
  dir (PR #146 already landed FactoryDemo.Api.FSharp on
  main with identical code); drop duplicate sln Project
  block + config duplicates; fix CSharp refs to point at
  the surviving FactoryDemo.Api.FSharp/.

Fifth thread (SignalQuality scope-creep) is judgment —
branch history is deep; splitting now adds more churn than
value. Replying with backlog-and-resolve per three-outcome.

* PR #147 review-drain — 7 threads (Copilot + Codex)

Threads drained:
- btw.md: name attribution -> "human maintainer" / "the maintainer" (Copilot P1, AGENT-BEST-PRACTICES.md:284-292)
- live-lock-audit.sh: add --root to git diff-tree so root commit classifies correctly (Copilot P2)
- FactoryDemo.Api.CSharp Program.cs: add "/" to endpoints list for F# parity; bump smoke-test length 8->9 (Copilot P1 + Codex P2, same fix)
- FactoryDemo.Api.CSharp smoke-test.sh: reword mktemp comment to describe system temp dir accurately (Copilot P2)
- ServiceTitanCrm -> FactoryDemo.Crm: rename dir, fsproj, module namespace, RootNamespace, sln entry, test doc-comment; drop stale ServiceTitanFactoryApi bin+obj (Copilot P1, memory/feedback_open_source_repo_demos_stay_generic_not_company_specific_2026_04_23.md:59-66)
- SignalQuality.fs: compressionRatio + compressionMeasure short-circuit to 0.0 (Pass) below 64-byte threshold to avoid gzip-header-dominates Quarantine of legitimate short strings (Codex P1)

Drain log: docs/pr-preservation/147-drain-log.md preserves each thread verbatim (git-native high-signal preservation).

dotnet build -c Release: 0 Warning(s), 0 Error(s).

* PR #147 review-drain second pass — 4 fix-inline + 3 scope-bleed

- Seed.cs + Seed.fs: rename contact 13 'Aaron Smith' -> 'Acme Contact
  (new lead)' (Copilot P2 name-attribution, parity preserved across
  C# / F# siblings).
- drop/README.md: correct 'only tracked file' wording to reflect the
  README.md + .gitignore two-sentinel design (Copilot P2).
- tools/audit/live-lock-audit.sh: docstring attribution 'Aaron's ...'
  -> 'Human-maintainer ...' (Copilot P1); add '-m' plus 'sort -u' to
  'git diff-tree' so merge commits bucket on their real files instead
  of mis-classifying as OTHR (Codex P1 — was skewing EXT/INTL/SPEC %
  and could disable the live-lock gate after a round of merges).
- docs/pr-preservation/147-drain-log.md: append second-pass per-thread
  audit trail (git-native preservation).

Three threads resolved as scope-bleed / already-addressed: operator-
input-quality-log.md (file not in PR diff, landed via 204bbb6 on
main), AUTONOMOUS-LOOP.md (file not in PR diff, zero Aaron on HEAD),
Tests.FSharp.fsproj (both SignalQuality + CrmScenarios already listed
at lines 26 and 49).

Build: 0W/0E. Audit sanity: live-lock-audit.sh still healthy with
merges now bucketed correctly.

* fix: markdownlint MD001/MD022/MD032 on #147 drain-log (h3→h2 on Thread headers)

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* drain: resolve 11 threads on #147 (mix FIX + BACKLOG + Otto-256 reject)

Thread-by-thread outcomes across the 11 unresolved review threads on PR
#147 (5 FIX, 2 BACKLOG, 2 Otto-256 REJECT, 2 already-addressed/stale):

FIXES (code):
- live-lock-audit.sh: replace `git show --stat` with explicit
  `git log -1 -m --first-parent --name-only` so merge commits classify
  against parent-1 only (the landing side). The prior `git show` form
  risked combined-diff semantics in some git versions; the explicit
  form is first-parent by construction (Codex P1).
- SignalQuality.fs: restore `compressionMinInputBytes = 64` threshold
  (dropped by the f1dc2bb merge-conflict resolution) and mark it
  `private` so it is not part of the public API surface (Copilot).
  Short-circuits `compressionRatio` + `compressionMeasure` to 0.0 for
  sub-threshold inputs, avoiding spurious Quarantine on short legitimate
  strings. Evidence reports UTF-8 byte count (consistent with the
  threshold's units) instead of `text.Length` chars (Copilot). Adjusted
  the empty-string test to assert the new 0.0 neutral value.
- smoke-test.sh: replace non-portable `mktemp -t <template>` with a
  pre-constructed absolute-path template rooted at `${TMPDIR:-/tmp}`
  where XXXXXX is the tail (BSD/macOS requires tail-XXXXXX; GNU accepts
  either). `.log` extension is appended via `mv` after creation so the
  single invocation is cross-platform (Copilot x2 — threads 4 + 10).
- CrmScenarios.Tests.fs: update doc-comment `samples/FactoryDemo.Crm`
  -> `samples/CrmSample` to match the canonical sample path on main
  (Copilot).

BACKLOG (deferred P2):
- Smoke-test deterministic port allocation (Codex P2) — replace
  RANDOM-in-range with OS-assigned ephemeral port via `--urls
  http://127.0.0.1:0` and log-line parse.
- FactoryDemo.Api.CSharp solution project-type GUID hygiene (Copilot)
  — align with modern SDK-style GUID used by other C# projects.

OTTO-256 REJECT (history-file exemption):
- docs/pr-preservation/147-drain-log.md (Copilot) and
  docs/hygiene-history/live-lock-audit-history.md (Copilot): both
  requested stripping first-name "Aaron" attributions. Declined per
  Otto-256 (2026-04-24) — history files exempt from the "no name
  attribution" rule; a P2 BACKLOG row already exists
  (`## P2 — FACTORY-HYGIENE — name-attribution policy clarification
  (history-file exemption)`) to codify this in AGENT-BEST-PRACTICES.md.

ALREADY-ADDRESSED (stale reviewer context):
- drop/README.md heading (Copilot): Copilot flagged "one tracked
  sentinel" but the current heading reads "two tracked sentinels"
  (fixed in a prior drain). Resolving as addressed.

Build: `dotnet build -c Release` -> 0 Warning(s), 0 Error(s).
Tests: `dotnet test --filter "FullyQualifiedName~SignalQuality"` ->
  22/22 pass.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
AceHack added a commit that referenced this pull request Apr 24, 2026
…Corrections

Two-part ferry from Aaron Otto-157/158 tick boundary:

Part 1 — Deep research on Cartel-Lab calibration + CI hardening
  (~4000 words; 8 sections A-H + action items + Mermaid diagrams):
  - Null-models table (6 types: Erdős-Rényi, configuration,
    stake-shuffle, temporal-shuffle, clustered-honest, noise)
  - CoordinationRiskScore formula with 6 robust-z terms +
    default weights α=β=0.20, γ=ε=0.15, δ=0.20, η=0.10
  - 8-row adversarial scenario table (obvious clique → stealth
    → synchronized voting → honest cluster → low-weight →
    camouflage → rotating → cross-coalition)
  - 4-PR roadmap: seed-lock/CI governance → calibration harness
    → adversarial scenarios → docs/promotion criteria
  - KSK/Aurora integration: advisory-only flow
    (Detection → Oracle → KSK → Action)
  - "What not to claim" caveats (6 items: no proof of intent,
    not all collusion detectable, not production-ready, etc.)

Part 2 — Amara's own GPT-5.5 Thinking correction pass on Part 1
  (~1500 words; 10 required corrections; repo-safe status
  statement; corrected promotion ladder + PR roadmap titles):
  - #1: replace "CI confirms" with "PR #323 clears toy
    falsifiability bar"
  - #2: Wilson intervals replace handwave ±5% CI (90/100 →
    LB only 82.6%; 20/100 FPR → UB 28.9%)
  - #3: rename "Cartel Score" → "CoordinationRiskScore" locked
  - #4: conductance sign flip — use Z(-conductance) or
    Z(exclusivity), not Z(+conductance)
  - #5: modularity relational — use Q(attacked)-Q(baseline)>θ
    not absolute Q thresholds
  - #6: PLV phase-offset — PLV=1 can mean anti-phase; need
    magnitude AND mean phase offset
  - #7: MAD=0 fallback — epsilon floor or percentile-rank
  - #8: replace Medium-article source with scikit-learn
    precision-recall docs
  - #9: explicit artifact output layout
    (calibration-summary.json, seed-results.csv, etc.)
  - #10: sharder — measure variance before widening threshold

Corrected promotion ladder (0-6 stages):
  0 Theory / 1 Toy detector / 2 Calibration harness /
  3 Scenario suite / 4 Advisory engine / 5 Governance integration /
  6 Enforcement candidate

PR #323 is Stage 1, NOT Stage 4.

Otto's operationalization notes:
- 4/10 corrections already aligned with shipped substrate:
  #4 exclusivity (PR #331), #5 modularity relational
  (PR #324), #7 MAD floor (PR #333), #10 sharder Otto-132
  (BACKLOG #327).
- 6/10 queued as future graduations: Wilson CIs in tests;
  MAD=0 percentile-rank fallback; conductance-sign doc;
  PLV phase-offset extension; CI test classification;
  artifact-output layout.

Invariant restated (Amara 16th-ferry carry-over):
  "Every abstraction must map to a repo surface, a test,
   a metric, or a governance rule."

Cross-ref verified: PRs #321 #323 #324 #326 #327 #331 #332
#333, docs/definitions/KSK.md (Otto-157 / #336), 17th ferry
(#330), 16th ferry, 15th ferry, Otto-140..145 memory.

GOVERNANCE §33 four-field header (Scope / Attribution /
Operational status / Non-fusion disclaimer).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
AceHack added a commit that referenced this pull request Apr 24, 2026
…ns (10 tracked; 4 already shipped, 6 queued) (#337)

* ferry: Amara 18th absorb — Calibration + CI Hardening + 5.5-Thinking Corrections

Two-part ferry from Aaron Otto-157/158 tick boundary:

Part 1 — Deep research on Cartel-Lab calibration + CI hardening
  (~4000 words; 8 sections A-H + action items + Mermaid diagrams):
  - Null-models table (6 types: Erdős-Rényi, configuration,
    stake-shuffle, temporal-shuffle, clustered-honest, noise)
  - CoordinationRiskScore formula with 6 robust-z terms +
    default weights α=β=0.20, γ=ε=0.15, δ=0.20, η=0.10
  - 8-row adversarial scenario table (obvious clique → stealth
    → synchronized voting → honest cluster → low-weight →
    camouflage → rotating → cross-coalition)
  - 4-PR roadmap: seed-lock/CI governance → calibration harness
    → adversarial scenarios → docs/promotion criteria
  - KSK/Aurora integration: advisory-only flow
    (Detection → Oracle → KSK → Action)
  - "What not to claim" caveats (6 items: no proof of intent,
    not all collusion detectable, not production-ready, etc.)

Part 2 — Amara's own GPT-5.5 Thinking correction pass on Part 1
  (~1500 words; 10 required corrections; repo-safe status
  statement; corrected promotion ladder + PR roadmap titles):
  - #1: replace "CI confirms" with "PR #323 clears toy
    falsifiability bar"
  - #2: Wilson intervals replace handwave ±5% CI (90/100 →
    LB only 82.6%; 20/100 FPR → UB 28.9%)
  - #3: rename "Cartel Score" → "CoordinationRiskScore" locked
  - #4: conductance sign flip — use Z(-conductance) or
    Z(exclusivity), not Z(+conductance)
  - #5: modularity relational — use Q(attacked)-Q(baseline)>θ
    not absolute Q thresholds
  - #6: PLV phase-offset — PLV=1 can mean anti-phase; need
    magnitude AND mean phase offset
  - #7: MAD=0 fallback — epsilon floor or percentile-rank
  - #8: replace Medium-article source with scikit-learn
    precision-recall docs
  - #9: explicit artifact output layout
    (calibration-summary.json, seed-results.csv, etc.)
  - #10: sharder — measure variance before widening threshold

Corrected promotion ladder (0-6 stages):
  0 Theory / 1 Toy detector / 2 Calibration harness /
  3 Scenario suite / 4 Advisory engine / 5 Governance integration /
  6 Enforcement candidate

PR #323 is Stage 1, NOT Stage 4.

Otto's operationalization notes:
- 4/10 corrections already aligned with shipped substrate:
  #4 exclusivity (PR #331), #5 modularity relational
  (PR #324), #7 MAD floor (PR #333), #10 sharder Otto-132
  (BACKLOG #327).
- 6/10 queued as future graduations: Wilson CIs in tests;
  MAD=0 percentile-rank fallback; conductance-sign doc;
  PLV phase-offset extension; CI test classification;
  artifact-output layout.

Invariant restated (Amara 16th-ferry carry-over):
  "Every abstraction must map to a repo surface, a test,
   a metric, or a governance rule."

Cross-ref verified: PRs #321 #323 #324 #326 #327 #331 #332
#333, docs/definitions/KSK.md (Otto-157 / #336), 17th ferry
(#330), 16th ferry, 15th ferry, Otto-140..145 memory.

GOVERNANCE §33 four-field header (Scope / Attribution /
Operational status / Non-fusion disclaimer).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* ferry: fix markdownlint MD018 — line-start #221 parsed as H1 heading

* ferry: drain PR #337 review threads — 4 FIX, 2 NARROW+BACKLOG, 8 BACKLOG+RESOLVE

Factory-authored sections of the 18th-ferry absorb (header,
Otto's notes, Cross-references) edited under name-attribution
+ code-comments-not-history disciplines; Amara's verbatim
Part 1 + Part 2 body left intact per verbatim-preserve.

In-doc edits:
- Soften "verified against actual" wording on the
  CLAUDE.md cross-reference bullet to anchor-list
  rechecked-at-drain-time framing.
- Use full `tests/Tests.FSharp/Simulation/` path in the
  Stage-discipline section (was bare `tests/Simulation/`).
- Replace dead "GOVERNANCE §33" cite with
  factory-convention + CLAUDE.md ground-rule pointer
  (numbered §33 not yet landed; rule is captured
  by convention across docs/aurora/** absorbs).
- Drop broken `feedback_ksk_naming_*.md` filename and
  soften 15th/16th ferry cross-refs to "not present as a
  dedicated absorb in this snapshot."

Drain-log: docs/pr-preservation/337-drain-log.md per
Otto-250.

---------

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
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