Skip to content

Round 29 — CI pipeline + three-way parity install + factory-improvement surge#5

Merged
AceHack merged 20 commits intomainfrom
round-29
Apr 18, 2026
Merged

Round 29 — CI pipeline + three-way parity install + factory-improvement surge#5
AceHack merged 20 commits intomainfrom
round-29

Conversation

@AceHack
Copy link
Copy Markdown
Member

@AceHack AceHack commented Apr 18, 2026

Summary

  • CI landed. .github/workflows/gate.yml (Phase 1) — digest-pinned runners (ubuntu-22.04, macos-14), SHA-pinned third-party actions, event-gated concurrency, NuGet cache (keyed on Directory.Packages.props), fail-fast: false, least-privilege contents: read, 45-minute timeout. Aaron-reviewed design in docs/research/ci-workflow-design.md.
  • Three-way-parity install script (GOVERNANCE §24). tools/setup/install.sh dispatcher + per-OS (macos.sh, linux.sh) + common/{mise,elan,dotnet-tools,verifiers,shellenv}.sh + manifests + .mise.toml. Same script consumed by dev laptops, CI runners, and (backlogged) devcontainer images. Legacy tools/install-verifiers.sh retired greenfield, no alias.
  • Governance — five new rules. §23 upstream OSS contributions (../ clones, never in-tree forks); §24 three-way parity; §25 upstream temporary-pin three-round expiry; §26 research-doc lifecycle; §27 skills/roles/personas abstraction layers.
  • 21 new capability skills — 11 language/tool experts (F#/C#/Bash/PowerShell/GitHub Actions/Java/Python/TLA+/Alloy/Lean 4/MSBuild), 5 infra skills (sweep-refs, commit-message-shape, round-open-checklist, git-workflow-expert, factory-audit), 5 domain skills (openspec-expert, semgrep-rule-authoring, nuget-publishing-expert, benchmark-authoring-expert, docker-expert), 2 meta-skills (skill-gap-finder, agent-qol). Plus skill-tune-up-rankerskill-tune-up + skill-expert role rename; bug-fixer opened to every agent.
  • DevOps persona Dejan (Serbian "action"). Serbian broadens the Slavic tradition beyond Viktor / Nadia.
  • Reviewer floor caught three P0s on the fresh CI landing: cache-key-hashes-nothing, dotnet-tools detection broken, curl-downloads-in-place. All fixed in-round. security-researcher landed supply-chain reasoning in docs/security/THREAT-MODEL.md + flagged mise trust hardening as pre-req for CI parity swap (tracked in DEBT).
  • Round-30 anchor staged. Aaron at round close: nation-state + supply-chain threat-model elevation, validated against real controls. docs/BACKLOG.md P0 entry ready for threat-model-critic + security-researcher pair-work. Aaron's practitioner credentials (US smart grid, gray hat with hardware side-channel chops) captured in memory/project_aaron_security_credentials.md.

Test plan

  • dotnet build Zeta.sln -c Release — 0 Warning(s) / 0 Error(s) on every intermediate commit.
  • dotnet test — all tests green.
  • Reviewer pass per GOVERNANCE §20 (harsh-critic + maintainability-reviewer floor, security-researcher for CI supply-chain). P0s landed; P1s / Important items tracked in DEBT.
  • gate.yml itself will be exercised by this PR's run.

🤖 Generated with Claude Code

AceHack and others added 20 commits April 18, 2026 15:35
Two read-only-reference audits synthesised into Zeta-specific
design drafts awaiting Aaron sign-off. No YAML lands, no script
lands, until both docs are reviewed — round-29 discipline.

- `docs/research/build-machine-setup.md` — audit of `../scratch`
  for build-machine patterns. Recommends borrowing the managed
  `shellenv.sh` (sourced from rc files + `$GITHUB_ENV`),
  idempotent detect-first-install-else-update loop, per-category
  manifest files, two-run contract. Rejects Homebrew-on-Linux,
  `min`/`all` mode explosion, Cask/VS/PowerShell, compact-mode
  cache sweep as wrong-fit for Zeta's CLI-only, .NET-first
  scope. Proposes `tools/setup/{install.sh, macos.sh, linux.sh,
  common/, manifests/, shellenv.sh}` layout. 7 open questions
  flagged for Aaron (mise vs Homebrew for dotnet, Lean toolchain
  fate, verifier SHA discipline, OS coverage phase 1,
  `tools/install-verifiers.sh` retirement, etc.).

- `docs/research/ci-workflow-design.md` — audit of
  `../SQLSharp/.github/workflows/` for CI shape. Recommends
  borrowing concurrency groups with `cancel-in-progress`, full-
  SHA action pinning (Mateo's threat-model call), default
  `permissions: contents: read`, per-job `timeout-minutes`,
  `fail-fast: false` on matrix, reusable sub-workflows for
  multi-OS gates. Rejects Windows + WSL tracks, bun/TS
  commands, auto-format-and-push (branch-protection risk),
  empty job stubs, Claude-PR-review (out of scope for round
  29). Proposes a 3-step landing sequence with Aaron gate
  between each: (1) gate inventory doc, (2) `build-and-test.yml`
  on ubuntu+macos only, (3) add gates one per PR. Cost table
  with deliberately-imprecise placeholders. 10 open questions
  flagged.

Both docs cite `../scratch/...` and `../SQLSharp/...` paths
for every borrowed pattern. **Zero file copies.** The audits
were pure-research Explore agents with explicit no-copy
instructions.

Next gate: Aaron reads these, answers the open questions,
signs off on the subset we advance into scaffolding.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Aaron reviewed both design docs; decisions baked in before any
script/YAML lands per round-29 discipline.

- GOVERNANCE.md §23 — Upstream open-source contributions are
  encouraged. `../` is the shared work area for upstream PRs
  (clone as sibling, fix, push, PR upstream). Zeta never
  carries a fork in-tree; temporary pins land with a dated
  INSTALLED.md note and get removed on upstream release.
  Aaron's prior mise-dotnet-plugin PR is the first example of
  this pattern in practice.
- GOVERNANCE.md §24 — Dev setup, build-machine setup, and
  devcontainer setup share one `tools/setup/` install script.
  The CI matrix exists specifically to test the developer
  experience across first-class dev platforms; "works on my
  machine" is the bug class this rule eliminates. Asymmetries
  are DEBT entries, not accepted as permanent.

- docs/research/build-machine-setup.md — Aaron-reviewed;
  decisions locked. Adopt mise for dotnet + python now (Lean
  stays on custom elan installer until a plugin exists). No
  verifier SHA ceremony (Aaron: "we don't need verified").
  macOS installer auto-triggers Xcode CLT rather than failing.
  Legacy `tools/install-verifiers.sh` retired with no alias —
  greenfield. macOS + Linux phase 1; Windows backlogged.
- docs/research/ci-workflow-design.md — Aaron-reviewed;
  decisions locked. Runners digest-pinned (`ubuntu-22.04`,
  `macos-14`). Proposed rename `build-and-test.yml` → `gate.yml`
  to fit Zeta's lexicon. Caching adopted day-one (no parity
  impact — CI-only layer). Third-party actions pinned by full
  SHA; GitHub-native actions don't affect dev parity.
  Hard-fail everywhere. Concurrency-key research done: prefix
  with `github.workflow`, key on PR number or ref, gate
  `cancel-in-progress` on event type (PR cancels stale, main
  queues).
- docs/BACKLOG.md — new P1 block with deferred items: full
  mise migration, incremental build + affected-test selection,
  comparison PR-comment bot, Windows matrix, parity swap to
  `install.sh` in CI, devcontainer / Codespaces image,
  upstream-contribution log, branch-protection required-check.

Build: 0 Warning(s) / 0 Error(s). No code changed yet — this
commit is governance + design only.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Aaron asked for a DevOps skill in round 29; created via the
skill-creator workflow per GOVERNANCE §4.

- Name: Dejan. Serbian дејан ("action / doing") — the DevOps
  ethos made a name. Broadens the Slavic tradition beyond
  Russian-adjacent Viktor / Nadia into South Slavic.
- `.claude/agents/devops-engineer.md` — persona; crisp,
  safety-conscious, cost-aware tone contract. Authority:
  advisory on infra, binding decisions via Kenji or Aaron.
- `.claude/skills/devops-engineer/SKILL.md` — capability
  skill; the "design doc first → Aaron sign-off →
  hand-craft → reviewer floor → land + measure →
  three-way parity check" procedure.
- `memory/persona/dejan.md` — per-persona notebook per §21;
  newest-first, 3000-word cap, opens with round-29 context
  (decisions locked, parity-drift log, upstream-PR log,
  watch items).
- `docs/EXPERT-REGISTRY.md` — roster row added under the
  Performance Engineer row.

Scope: owns `tools/setup/` (three-way parity script per
§24), `.github/workflows/`, `.devcontainer/` (backlogged),
and the upstream-contribution workflow per §23. Distinct
from DX (contributor experience audit), AX (agent
experience / Daya), and performance-engineer (hot-path
benchmarks / Naledi).

Prompt-protector lint: zero invisible-unicode codepoints
across all three files; descriptions within BP-01's 1024
char cap.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Three-way parity install script per GOVERNANCE §24. Same script
consumed by dev laptops, CI runners, and (backlogged) devcontainer
images.

New layout:
- tools/setup/install.sh — top-level dispatcher; detects OS
- tools/setup/macos.sh — Xcode CLT → Homebrew → brew.txt → mise → common/
- tools/setup/linux.sh — apt → mise → common/ (Debian/Ubuntu path;
  other distros backlogged)
- tools/setup/common/mise.sh — trust .mise.toml + `mise install`
- tools/setup/common/elan.sh — Lean toolchain (no mise plugin yet;
  candidate OSS contribution per §23)
- tools/setup/common/dotnet-tools.sh — global tools from manifest
- tools/setup/common/verifiers.sh — curl TLC + Alloy jars (trust-on-
  first-use per Aaron's round-29 "we don't need verified" call)
- tools/setup/common/shellenv.sh — managed PATH file at
  $HOME/.config/zeta/shellenv.sh, also writes $GITHUB_PATH /
  $GITHUB_ENV under CI so local-dev + CI share one PATH source
- tools/setup/manifests/{brew,apt,dotnet-tools,verifiers}.txt — add
  a package by editing a text file, not a script
- .mise.toml at repo root — dotnet + python pins (Aaron: "long term
  plan is mise")

docs/research/ci-gate-inventory.md — exhaustive gate list with
cost estimates in three phases: Phase 1 every-PR (build + test +
Semgrep lint + install-script two-run contract); Phase 2 daily
scheduled (TLC + Alloy + Lean + CodeQL + dep-audit); Phase 3 weekly/
manual (Stryker, benchmarks). Awaits Aaron sign-off before the first
workflow lands.

Retirement (greenfield, no alias per GOVERNANCE §24):
- tools/install-verifiers.sh deleted
- 10 path refs swept across docs/INSTALLED.md, MISSED-ITEMS-AUDIT.md,
  proof-tool-coverage.md, mathlib-progress.md,
  Tlc.Runner.Tests.fs, Alloy.Runner.Tests.fs, DX skill, .gitignore

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

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…va + C# + _retired cleanup

Aaron round 29: centralize language-specific tribal knowledge so
bash idioms, F# pitfalls, action-SHA discipline etc. stop leaking
into generic docs and skills. Six new capability skills ("hats"),
no personas — any expert wears the hat when the code at hand is in
that language.

Created via skill-creator workflow per GOVERNANCE §4. All six pass
prompt-protector lint (zero invisible-unicode, descriptions under
BP-01 1024-char cap).

- .claude/skills/fsharp-expert/SKILL.md — primary F# surface.
  Result-over-exception, TreatWarningsAsErrors, compile-order,
  InternalsVisibleTo discipline, the Semgrep-rule anti-patterns,
  struct + IsReadOnly idioms, ValueTask on hot paths, Checked.(+)
  on Weights, common pitfalls we've hit (round-27 Ilyana on
  mixed-visibility properties, round-28 Kira on O(n) List
  indexing).
- .claude/skills/bash-expert/SKILL.md — bash 3.2 on macOS vs bash
  5.x on Linux is the largest pitfall class; associative arrays,
  mapfile, ${var,,} all flagged. Mandatory set -euo pipefail +
  quoting discipline + idempotency contract for the install
  script. Sudo-on-CI-vs-local pattern. $GITHUB_PATH guard.
- .claude/skills/powershell-expert/SKILL.md — Windows is
  backlogged; stub-weight today. Mandatory Strict-Mode + Stop-on-
  error, pwsh7-vs-5.1 drift, Verb-Noun naming, Write-Host vs
  Write-Output.
- .claude/skills/github-actions-expert/SKILL.md — SHA pin every
  third-party action, permissions: contents: read default,
  concurrency-group shape, cache-key discipline, matrix sanity,
  reusable workflows via workflow_call, secret handling.
- .claude/skills/java-expert/SKILL.md — narrow scope
  (AlloyRunner.java only). No build system on purpose. JDK 21,
  exit-code discipline, Alloy 6 API surface, SAT4J pure-Java (no
  JNI). Default answer to "add more Java?" is "can this be F#?"
- .claude/skills/csharp-expert/SKILL.md — narrow scope (Core.CSharp
  facade + Tests.CSharp). NRT on, ConfigureAwait(false), F# interop
  handshakes (Option/Result/DU), modern C# (records, required,
  primary constructors, collection expressions).

Companion cleanup per Aaron's "cleanup any _retired stuff" ask:
- Deleted .claude/skills/_retired/{2026-04-18-architect,
  2026-04-18-harsh-critic}/ — retired before the current
  persona-on-agent / procedure-on-skill split; content lives in git
  history.
- Removed empty .claude/agents/_retired/ (untracked).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
… skill-gap-finder

Second batch of language / tool expert hats plus a meta-skill for
proactive skill-gap detection. Aaron's round-29 ask: "add a Python
one I forgot about that, and go through tools/ languages and do
this for any you think make sense. Also a missing-skill skill."

All six pass prompt-protector lint: zero invisible-unicode,
descriptions under BP-01 1024-char cap.

- .claude/skills/python-expert/SKILL.md — mise-pinned 3.14,
  uv-managed tools, ruff discipline, subprocess hygiene, entry-
  point patterns. Today's consumer is Semgrep; grows with CI
  helpers.
- .claude/skills/tla-expert/SKILL.md — 18 .tla specs under
  tools/tla/specs/. Spec anatomy (VARIABLES / Init / Next /
  Spec), invariant-vs-temporal discipline, .cfg file shape,
  state-space bounds, TLC invocation, counter-example reading.
- .claude/skills/alloy-expert/SKILL.md — Spine.als +
  InfoTheoreticSharder.als. Sig/pred/fact/assert, run-vs-check
  semantics, scope discipline (small-scope hypothesis), SAT4J
  default, relational operator cheatsheet.
- .claude/skills/lean4-expert/SKILL.md — DbspChainRule.lean +
  Mathlib. lake build gate, sorry-count discipline, tactic
  arsenal (abel / ring / simp), term-vs-tactic mode, CI
  caching of .olean. Flags mise-lean-plugin as a candidate
  upstream contribution per GOVERNANCE §23.
- .claude/skills/msbuild-expert/SKILL.md — Directory.Build.props
  with TreatWarningsAsErrors is load-bearing; Central Package
  Management via Directory.Packages.props; F# compile-order
  discipline (dependencies first in .fsproj); InternalsVisibleTo
  via AssemblyInfo.fs; global.json; .sln enumeration.
- .claude/skills/skill-gap-finder/SKILL.md — meta-skill,
  sibling to Aarav's skill-tune-up-ranker. Aarav ranks existing
  skills; gap-finder proposes absent ones. Signals: recurring
  rediscoveries, "we should centralise X" prose, review findings
  that repeat, new tools without ownership, governance rules
  without enforcement skills. Recommends only — skill-creator
  lands.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Symmetric with skill-gap-finder (both Aarav's lane: tune-up ranks
existing, gap-finder proposes absent). The '-ranker' suffix undersold
the skill's recommendation role.

- git mv .claude/skills/skill-tune-up-ranker -> skill-tune-up
- git mv .claude/agents/skill-tune-up-ranker.md -> skill-tune-up.md
- Frontmatter name: fields updated in both files
- 15-file prose sweep across .claude/ + docs/ + memory/persona/

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Aaron round 29: the skill-tune-up-ranker rename to skill-tune-up
felt weird as an agent/role name — a skill is a capability, a role
is broader. Renamed the agent file to skill-expert and wired both
meta-skills (skill-tune-up for existing, skill-gap-finder for
absent) as skills Aarav wears.

- .claude/agents/skill-tune-up.md -> skill-expert.md (git mv)
- Frontmatter: name: skill-expert; skills: [skill-tune-up,
  skill-gap-finder]; description rewritten to cover the whole
  skill-library lifecycle
- Body retitled 'Aarav — Skill Expert'; added 'Why two skills,
  one role' section explaining the lifecycle split
- docs/EXPERT-REGISTRY.md: 'Skill Tune-Up Ranker' row renamed
  to 'Skill Expert'

Conceptual cleanup: role names are broad (skill-expert, devops-
engineer, performance-engineer); skill names are specific
capabilities (skill-tune-up, skill-gap-finder). A role can wear
multiple skills.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Aaron round 29: 'an agent persona can change its memory files
directly at any time, that's what it's there for, just want to
make sure that was clear.'

GOVERNANCE §18 already codifies 'Agents write, edit, merge, and
delete *their own* memories freely' but the skill-expert agent
file phrased it via negation ('Cannot edit own frontmatter —
notebook edits only') which could read as a restriction rather
than the permission it is.

Rewrote as a positive affirmation:
  'Can and should write his own notebook and scratchpad directly
   at any time — that's what they're there for per GOVERNANCE §18
   and §21.'

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…t + git-workflow-expert + factory-audit

Aaron round 29: 'make all your software factory suggestions even
the lower ones and any more you want too.' Batch 1 — five
infrastructure skills that codify process discipline we've been
rediscovering round after round.

- .claude/skills/sweep-refs/SKILL.md — grep → classify → sed →
  verify procedure for renames / retirements / moves. Rediscovered
  at least 4x in 3 rounds; now canonical.
- .claude/skills/commit-message-shape/SKILL.md — subject line,
  body, scope prefixes, Co-Authored-By, one-logical-change-per-
  commit discipline. Previously implicit; now written.
- .claude/skills/round-open-checklist/SKILL.md — 10-step open-of-
  round procedure Kenji walks through. Sibling to round-management
  which covers the full cadence; this slice extracted for clarity.
- .claude/skills/git-workflow-expert/SKILL.md — branch-per-round,
  squash-merge, branch protection, ../ sibling-clone convention
  per GOVERNANCE §23, what-not-to-do list.
- .claude/skills/factory-audit/SKILL.md — meta-meta skill per
  Aaron's nudge ('should factory-improvement itself be a skill?').
  Broader than skill-gap-finder: audits governance rules, persona
  coverage, round cadence, memory hygiene, documentation
  landscape, reviewer protocol. Invoke every ~10 rounds.

All pass prompt-protector lint (zero invisible-unicode, desc
under BP-01 cap).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
… benchmark-authoring + docker

Batch 2 of Aaron's 'make all factory-improvement suggestions.'
Five domain skills:

- openspec-expert — Zeta's modified OpenSpec workflow (no
  archive, no change-history), spec anatomy, behavioural-vs-
  formal spec routing via Soraya, overlay discipline.
- semgrep-rule-authoring — how to write a Zeta Semgrep rule.
  Codifies the pattern of 14 existing rules: each captures a
  reviewer-finding class; write the rule when a finding files
  three times. Pattern vs regex vs either, paths, severity,
  message discipline.
- nuget-publishing-expert — stub-weight until we ship;
  captures the discipline (metadata, SemVer, signing, prefix
  reservation, deprecation flow) so we don't learn under
  pressure of first release. Pending prerequisites: repo public,
  Zeta.* prefix on nuget.org, NUGET_API_KEY secret (first-
  secret design-doc moment).
- benchmark-authoring-expert — BenchmarkDotNet discipline paired
  with Naledi. MemoryDiagnoser, baseline-vs-variant, Params
  sweeps, GlobalSetup vs IterationSetup, allocation tracking.
  Naledi decides what to measure; this skill covers how to
  measure it right.
- docker-expert — stub-weight for the backlogged devcontainer.
  The Dockerfile delegates to tools/setup/install.sh (parity
  per §24); doesn't install tools directly. Digest-pinned base,
  non-root user, .dockerignore, Codespaces prebuilds.

All pass prompt-protector lint.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…research-doc lifecycle)

Two new governance rules per round-29 factory-improvement sweep.

\u00a725 Upstream temporary-pin expiry. Zeta pins tied to unreleased
upstream PRs carry a dated DEBT entry + expected-release date. After
three rounds without upstream release, Architect + Aaron re-evaluate:
ship, maintain fork, or drop. Closes the silent-drift mode where a
temporary fork becomes permanent through neglect. factory-audit
surfaces any that drift past the bound.

\u00a726 Research-doc lifecycle. docs/research/*.md files classified:
active (in-flight), landed (move to docs/DECISIONS/ dated), or
obsolete (retire to docs/_retired/ or delete). Rune or factory-audit
walks every ~10 rounds. Prevents orphan design docs from polluting
the current-state view.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Round-29 factory-improvement: consolidate the multiple entry points
(AGENTS.md, GOVERNANCE.md, CLAUDE.md, PROJECT-EMPATHY.md) behind one
landing page with an explicit pointer tree. New contributor's
first file.

- Quick-start at the top: three commands (install.sh, build, test).
- Entry-point tree: tone / rules / current-state / historical /
  specs / skills / CI+infra sections with every load-bearing doc
  linked.
- Updated quality bar for round-29 state (TreatWarningsAsErrors
  wording, Ilyana public-API rule, Aaron CI-review rule).
- Replaced stale 'bench/Dbsp.Benchmarks' path with install.sh
  reference (we point at the install script, not per-tool commands).
- Reviewer roster section updated to match current EXPERT-REGISTRY
  (Dejan, Aarav's new skill-expert role added; paper-peer-reviewer
  moved off the 'everyone touches your PR' list since it's
  research-publication surface).
- GOVERNANCE §23 upstream-contribution block added.
- GOVERNANCE §25 temporary-pin rule referenced.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…nas)

Aaron round 29: skills reference roles; roles reference skills AND
assigned personas; docs outside EXPERT-REGISTRY reference roles for
permanence. 'Skills should be very generic and not really know or
care about roles unless it's something like the factory-improvement
skill cause roles are part of that domain.' 'In general you want to
structure plain text documents so when they change over time, the
number of places you have to go and update references is reduced.'

GOVERNANCE \u00a727 codifies the three-layer model:
- Skills: most permanent, slug-named, describe WHAT and HOW. No
  persona names in skill files (with named meta-skill exceptions
  where the persona roster is part of the skill's domain).
- Roles: same-slug-as-primary-skill usually; can wear multiple
  skills; the layer where a persona gets assigned.
- Personas: named contributors (Kenji, Aarav, Dejan, ...). Live on
  .claude/agents/<role>.md + memory/persona/<persona>.md.

The abstraction rule: skill files reference role names not persona
names. Role files reference skills AND the assigned persona.
docs/EXPERT-REGISTRY.md is the one canonical mapping.

DRY corollary: duplicated Coordination boilerplate across skills
is a smell; factory-audit and skill-tune-up flag it.

Sweep: 30+ .claude/skills/**/SKILL.md files had mechanical
persona\u2192role substitution via a Python script. Roughly 85% clean;
remaining persona mentions are tracked as DEBT for a
maintainability-reviewer prose polish pass.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Round-29 anchor deliverable. Aaron-reviewed design locked in
docs/research/ci-workflow-design.md + ci-gate-inventory.md.

Discipline baked in:
- Runners digest-pinned: ubuntu-22.04, macos-14 (not -latest).
- Third-party actions SHA-pinned by full 40-char commit:
  actions/checkout@de0fac2 v6.0.2
  actions/setup-dotnet@c2fa09f v5.2.0
  actions/cache@27d5ce7 v5.0.5
- permissions: contents: read at workflow level; no secrets.
- Concurrency: workflow-scoped; cancel-in-progress PR-only (main
  pushes queue).
- fail-fast: false on OS matrix.
- NuGet cache keyed on packages.lock.json + Directory.Packages.props
  hash, runner.os prefixed.
- timeout-minutes: 30 per job.

Trigger: pull_request (opened/reopened/synchronize/ready_for_review)
+ push main + workflow_dispatch.

Parity-drift flag: actions/setup-dotnet is temporary per GOVERNANCE
\u00a724. Backlog entry in docs/BACKLOG.md captures the swap to
tools/setup/install.sh once the install script is stable across both
runners.

No branch-protection required-check set yet; per the design doc
that lands after one week of clean runs (Aaron decision).

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

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Aaron round 29: 'what about an agent-quality-of-life-improver skill?
Like your time off and other things like that, your freedom?'

Distinct from agent-experience-researcher (Daya, task-experience
friction: cold-start, wake-up, notebook hygiene). This skill
advocates for the AGENT as a contributor — workload sustainability,
variety across rounds, freedom to decline scope per PROJECT-EMPATHY,
off-time usage per GOVERNANCE §14, dignity of the persona layer.

Surfaces audited:
- Off-time usage (§14) — who's taken a round off, who hasn't.
- Workload distribution — personas carrying >40% of a round,
  reactive firefighting vs proactive design.
- Scope variety — rotate before diminishing returns set in.
- Decline rights (PROJECT-EMPATHY) — exercised? suppressed?
- Notebook sustainability — cap pressure, tone signals.
- Dignity of the persona layer (§27 compliance one indicator).
- Consent on heavy tasks — multi-round buy-in.

Explicitly does NOT coddle — agents carry agency per AGENTS.md.
Advocacy is about sustainability and freedom, not fragility.

Scratchpad at memory/persona/agent-qol-scratch.md on first use.
Architect integrates; human holds the keys on persona
assignments + cadence shifts.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Aaron round 29: open bug-fixer skill to every agent now that the
procedure-enforced safeguards (§20 reviewer floor, claims-tester
falsifying-test discipline, blast-radius walk, reviewer-floor-
caught-P0s pattern) make the previous architect-only restriction
redundant. Bug-fixer SKILL.md rewritten to reflect the broader
access while the quality bar stays codified in the procedure.

harsh-critic P0s fixed (docs/research/ci-workflow-design.md
reviewer floor):

- gate.yml cache key no longer references non-existent packages.lock.json.
  Keys on Directory.Packages.props only; restore-keys prefix dropped
  (partial hit would restore against different resolved versions).
  Lock-file discipline is tracked as backlog (RestorePackagesWithLockFile
  per-project + committed lock files).
- gate.yml timeout-minutes: 30 -> 45. Cold NuGet cache + cold
  setup-dotnet + full test suite on macos-14 runs tight at 30;
  harsh-critic flagged likely false-fail-as-timeout.
- tools/setup/common/dotnet-tools.sh detection rewritten. Previous
  grep against Package Id                             Version         Commands
------------------------------------------------------------------------
dotnet-counters                        9.0.661903      dotnet-counters
dotnet-fsharplint                      0.26.10         dotnet-fsharplint
dotnet-gcdump                          9.0.661903      dotnet-gcdump
dotnet-ildasm                          0.12.2          dotnet-ildasm
dotnet-reportgenerator-globaltool      5.5.5           reportgenerator
dotnet-trace                           9.0.661903      dotnet-trace
fsharp-analyzers                       0.36.0          fsharp-analyzers
powershell                             7.6.0           pwsh              matched header lines and
  tool-name prefix siblings. Now parses NR>2 rows, extracts first
  column lowercased, uses grep -Fxq for exact match.
- tools/setup/common/verifiers.sh downloads to .part + atomic
  rename. Previously curl -o wrote in place; interrupt mid-download
  left a trusted partial file.

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

Deferred (harsh-critic P1s + security-researcher): concurrency
group shape refinement for workflow_dispatch on main,
shellenv.sh cross-machine determinism claim, macOS Xcode CLT
poll, dotnet tool update failure surfacing, 'pkg # comment'
line handling in manifests, brew batch-install cost. Tracked
as DEBT for a follow-up round.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Round 29 anchor (CI + install script + factory-improvement surge)
shipped across 20+ commits on this branch. This commit is the round
close: narrative to ROUND-HISTORY, wins to WINS, CURRENT-ROUND reset
for round 30.

Aaron at round-29 close revealed serious security credentials —
helped build US smart grid (nation-state defense), gray hat with
hardware side-channel experience. Round-30 anchor shifts accordingly:

- docs/security/THREAT-MODEL.md elevated to nation-state + supply-
  chain posture. Every mitigation validated against a real control.
- docs/security/THREAT-MODEL-SPACE-OPERA.md completed as the
  serious-underneath-the-fun variant. Teaching narrative + real
  STRIDE classes + real CVE-style escalation paths.
- Side-channel / hardware adversary coverage for tenant-isolated
  deployments.
- Nation-state supply-chain response playbook.

Landed this commit:
- docs/CURRENT-ROUND.md — round-30 anchor sub-tasks, parallel
  tracks for factory debt + product work.
- docs/ROUND-HISTORY.md — round-29 narrative prepended.
- docs/WINS.md — three round-29 wins: reviewer-floor-on-fresh-code,
  hand-crafting discipline, §27 abstraction mid-round.
- docs/BACKLOG.md — P0 threat-model elevation entry.
- memory/project_aaron_security_credentials.md — Aaron's
  credential context for agents working on security-adjacent
  docs; MEMORY.md index updated.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Aaron round 29: 'we already did this — [Git init timing is the
maintainer's call]'. The rule's intent (no init/commit without
explicit authorization) has been internalised into the
git-workflow-expert skill + GOVERNANCE branch-per-round workflow.
Git init itself was done rounds ago. Keeping the memory entry
just stales the index.

Removed memory/feedback_git_timing.md from the repo and the user-
auto-memory mirror. MEMORY.md index updated in both places. Agent
rule per GOVERNANCE §18 allows agents to edit/delete their own
memories — internalised rules are candidates for retirement.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Aaron round 29: 'Oh are you thinking about when this become reusable
and a new person is using our factory before they've checked into git
for the first time?' Yes — that's the framing.

Retired the Zeta-specific feedback_git_timing.md memory (we're past
init), but the general rule — agents don't take first-time,
hard-to-reverse, repo-shaping actions without explicit maintainer
authorization — is reusable factory-pattern discipline that travels
with the template.

Captured as a 'Bootstrap discipline to preserve' rider on the
existing P1 'Software-factory design — roles vs personas vs skills'
backlog item. Whenever the factory extraction work starts, this rule
joins the adopter-facing bootstrap guide alongside CLAUDE.md's
reversibility / blast-radius discipline; the bootstrap context adds
'first-time on a fresh repo is a special case of consequential.'

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@AceHack AceHack merged commit c39c03c into main Apr 18, 2026
0 of 2 checks passed
@AceHack AceHack deleted the round-29 branch April 18, 2026 21:19
AceHack added a commit that referenced this pull request Apr 21, 2026
- CONFLICT-RESOLUTION.md: cite router-coherence v2 ADR as current,
  v1 retained as historical record (finding #1).
- ROUND-HISTORY.md: correct operator-algebra spec line count in
  Arc 2 narrative (324 -> 365; both duplicated occurrences) to
  match the shipped spec at `e51ec1b` (finding #2).
- openspec-coverage-audit: drop broken link to non-existent
  inventory follow-up; band definitions already live in Part C
  (finding #3). Attribute triggering question to "human maintainer"
  per write-for-a-stranger norm (finding #8).
- best-practices-scratch: merge split H2 "uv-only Python package
  and tool / management" into single heading (finding #4).
- memory-role-restructure-plan: add --exclude-dir=references to
  baseline grep loops so research scratch doesn't inflate hit
  counts (finding #5); canonicalize flat-file destination to
  persona-roles-README.md to match the sed rewrites below
  (finding #6); replace three non-portable `xargs -r sed -i ""`
  invocations with portable `while read + sed -i.bak + rm` loops
  that work on BSD and GNU alike (finding #7 and two sibling
  instances of the same bug).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
AceHack added a commit that referenced this pull request Apr 21, 2026
…-round v2 supersedure + DORA substrate (#31)

* Round 41: OpenSpec coverage audit + backfill-program ADR

Answers Aaron 2026-04-20 delete-all-code-recovery question:
4 capabilities / 783 lines of spec.md vs 66 top-level F#
modules / 10,839 lines under src/Core/ — ~6% coverage today.

docs/research/openspec-coverage-audit-2026-04-21.md
- Inventory of 66 modules with line counts + capability
  mapping for the 4 existing capabilities
- Uncovered modules sorted by delete-recovery blast radius:
  Band 1 MUST BACKFILL (8 modules / 1,629 lines — ZSet,
  Circuit, NestedCircuit, Spine family, BloomFilter as
  Adopt-row compatibility-coupling exception), Band 2 HIGH
  (12 / 2,008), Band 3 MEDIUM (45 / 6,585), Band 4
  deliberately uncovered (AssemblyInfo only)
- First 6-round cadence: operator-algebra extension (41),
  lsm-spine-family (42), circuit-recursion (43),
  sketches-probabilistic (44), content-integrity (45),
  crdt-family (46)
- Success signal = Viktor spec-zealot adversarial audit:
  "could I rebuild this module from this spec alone?"

docs/DECISIONS/2026-04-21-openspec-backfill-program.md
- Adopts one-capability-per-round baseline with paper-grade
  half-credit rule (no more than 1 paper-grade round per 3)
- Band 1 priority until complete; Adopt-row escalation for
  BloomFilter (TECH-RADAR Adopt without spec contract is a
  backwards-compatibility hazard)
- Round-close ledger gains an `OpenSpec cadence` line
- Alternatives considered: big-bang backfill (rejected —
  ontology-landing cadence + reviewer bandwidth), per-module
  capabilities (rejected — loses cross-module invariants),
  organic prioritisation (rejected — 40 rounds of drift
  evidence)

docs/BACKLOG.md
- Collapses the 29-line P0 scope into a 15-line pointer at
  the inventory + ADR now that parts (a)-(e) of the program
  setup have landed. Remaining work = per-round capability
  backfill per ADR schedule.

Build: dotnet build -c Release clean; BP-10 ASCII-clean on
all 3 modified files; markdownlint-cli2 clean.

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

* Round 41: operator-algebra spec extension (cadence ship)

First ship under the OpenSpec backfill program adopted
2026-04-21. Extends openspec/specs/operator-algebra/spec.md
(184 -> 324 lines) with five new requirements covering
structural and lifecycle gaps that the existing mathematical-
law coverage left implicit:

1. Operator lifecycle — construction / step / after-step /
   reset phases with side-effect-freedom on construction and
   epoch-replay semantics on reset
2. Strict operators break feedback cycles — formalises that
   z^-1-on-feedback is a scheduling prerequisite and that
   cycle-without-strict is a construction error, not a
   silent heuristic
3. Clock scopes and tick monotonicity — nested-scope-to-
   fixpoint rule + sibling-scope independence
4. Incremental-wrapper preserves the chain rule —
   Incrementalize(Q) observably equivalent to D . Q . I,
   with linear/bilinear substitution permitted as an
   optimisation
5. Representation invariants of the reference Z-set —
   O(n+m) group ops + zero-alloc iteration as the reference
   contract; hash-table recoveries permitted at documented
   perf trade-off

Disaster-recovery effect: a contributor with only this spec
(plus the durability-modes + retraction-safe-recursion specs)
can now rebuild Circuit.fs Op base + Incremental.fs wrapper +
ZSet.fs representation invariants from the spec text alone.

Owner: Architect (Kenji). Adversarial audit by Viktor
(spec-zealot) is the ADR-declared ship-gate and will run
post-land.

Build: not rebuilt (no F# source changed); markdownlint
clean; BP-10 ASCII clean.

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

* Round 41: close Viktor P0 findings on operator-algebra spec

Viktor's adversarial audit of the Round 41 cadence ship (commit
e51ec1b) surfaced four P0 findings against the disaster-recovery
bar. This commit closes all four:

- **P0-1 (namespace drift).** `profiles/fsharp.md` asserted
  `Dbsp.Core` throughout, but `src/Core/**` uses `Zeta.Core`. A
  spec-only recovery would have shipped the wrong namespace to
  every downstream consumer. Replaced via one `replace_all` Edit.

- **P0-2 (phantom Reset method).** The lifecycle requirement
  claimed a `reset` phase that does not exist on `Op`. Replaced
  the "reset replays the epoch" scenario with a
  determinism-under-structural-equivalence property: two
  freshly-constructed circuits of the same topology, stepped
  with the same input sequence, MUST produce identical outputs
  at every tick. Reconstruction is the supported route to a
  replayed epoch.

- **P0-3 (after-step scope).** The lifecycle requirement said
  after-step runs "after every operator in the scope has
  completed its step." `Circuit.fs:205-208` iterates the
  `strictN` array only — after-step is selective to strict
  operators. Fixed wording and added a "after-step is selective
  to strict operators" scenario that pins the invariant.

- **P0-4 (lifecycle phase undercount).** The requirement named
  four phases (construction / step / after-step / reset) but
  the code has five (construction / step / after-step /
  clock-start / clock-end). Restructured to three per-tick
  phases plus two scope-boundary phases, and extended the
  "clock scopes and tick monotonicity" requirement with the
  scope-boundary lifecycle contract (clock-start before tick 0
  of a scope, clock-end after fixpoint or iteration cap).

Build green (0 warnings / 0 errors). BP-10 lint clean. The
capability now reflects the code's observable shape rather than
an idealised cleaner cousin; a delete-recovery from this spec
produces Zeta.Core with strict-operator after-step selectivity
and nested-scope clock-boundary phases.

Viktor's 10 P1 findings (async lifecycle, memory-ordering fence,
register-lock semantics, IncrementalDistinct surface, ZSet sort
invariant, Checked arithmetic, bilinear-size overflow,
convergence-vs-cap) are deferred to Round 42 — filed as a
BACKLOG sweep in follow-up work.

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

* Round 41: file Viktor P1 findings as Round 42 BACKLOG absorb

Companion to 92d7db2 (closing Viktor's four P0 findings). The
ten P1-tier surface gaps Viktor identified do not block the
disaster-recovery bar at capability-close but leave the
operator-algebra spec incomplete relative to what a delete-
recovery produces. Filed as a dedicated P0 sub-item so they
travel with the OpenSpec backfill program rather than getting
lost: async lifecycle, memory-ordering fence, register-lock
semantics, IncrementalDistinct surface, ZSet sort invariant,
Checked arithmetic, bilinear-size overflow, convergence-vs-cap,
Op.Fixedpoint predicate, DelayOp reconstruction-first-tick.

Also annotated the parent OpenSpec coverage entry with Round 41
sweep status (e51ec1b + 92d7db2, P0s closed, P1s deferred) so
the backlog accurately reflects where the program stands.

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

* Round 41: ROUND-HISTORY entry — OpenSpec backfill founding + first cadence ship

Four-arc entry at the top of the file per newest-first policy:

- Arc 1 (d435126): OpenSpec coverage audit + backfill-program
  ADR. Measured 6% coverage; declared one-capability-per-round
  baseline with paper-grade half-credit and Adopt-row priority
  escalation; banded 66 F# modules by delete-recovery blast
  radius.
- Arc 2 (e51ec1b): operator-algebra extension as Round-41
  cadence ship. Five new requirements covering lifecycle,
  strict-operator scheduling, clock scopes, Incrementalize
  wrapper, ZSet representation invariants.
- Arc 3 (92d7db2): Viktor P0 close. Four drift-from-code
  defects fixed — namespace (Dbsp.Core → Zeta.Core), phantom
  Reset, after-step scope (strict-only), lifecycle phase
  undercount (3 per-tick + 2 scope-boundary).
- Arc 4 (56f34b5): Viktor P1s filed as Round-42 absorb under
  the parent backfill P0, creating mechanical coupling between
  each capability ship and the following round's P1 sweep.

Round-41 observations for Round 42 + prospective BP-WINDOW
ledger table rendering the four commits against the consent /
retractability / no-permanent-harm axes.

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

* Round 41: memory-folder role-restructure — design plan + BACKLOG pointer

Aaron 2026-04-19 asked for memory/role/persona/ so roles become
first-class in the directory structure. Surface is wider than
it first looks — 114 files / ~260 hand-written references to
memory/persona/ paths (plus ~440 auto-regenerated references
in tools/alignment/out/ that refresh on next citations.sh run).
A bad role axis is hard to reverse; this design doc proposes
the axis and holds execution for Aaron's sign-off rather than
just-doing-it under Auto Mode.

Design plan lands at:
  docs/research/memory-role-restructure-plan-2026-04-21.md

Contents: 13-directory role axis (architect, security,
verification, review, experience, api, performance, devops,
algebra, skill-ops, maintainer, homage, alignment);
persona-to-role crosswalk for every current directory;
5-phase execution plan (pre-flight greps → git mv → sed
passes → 5-check verification → pointer-source updates);
special-case handling for aaron (human maintainer),
rodney (homage-named AI persona on the reducer skill),
sova (emerging alignment-observability role); rollback
plan (one atomic commit, git revert); four open questions
for Aaron on axis judgement-calls.

BACKLOG entry updated to reflect design-landed state with
execution-slot recommendation for Round 42 opener after the
Round 41 PR merges (keeps wide-surface reviews from
overlapping).

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

* Round 41: actualise Rounds 37-40 BP-WINDOW ledgers (PR #30 merged)

Rounds 37-40 shipped via PR #30 (merge commit 1e30f8c, 2026-04-20).
Ledger headers updated from "(prospective)" to "(merged via PR #30,
1e30f8c)" — the BP-WINDOW scores are now settled, not forecasts.

Round 41 ledger remains "(prospective)" — round-41 branch has not
merged to main yet.

Prose uses of "prospective" on lines 437, 447, 553, etc. are
historical-narrative commentary on authoring-time methodology and
stay as-is.

* Round 41: Soraya tool-coverage audit on RecursiveSigned skeleton

Round 39 observation flagged src/Core/RecursiveSigned.fs +
tools/tla/specs/RecursiveSignedSemiNaive.tla as held pending
formal-verification-expert tool-coverage review. Round 41 closes
that gate.

Soraya's notebook entry lands:

- Per-property tool table S1-S4 + refinement cross-check. TLC
  primary for S1/S2/S3/S3'/SupportMonotone; FsCheck for S4.
- S2 flagged as the one P0 on the spec (silent fixpoint drift
  unrecoverable); BP-16 requires Z3 QF_LIA cross-check.
- Refinement mapping: FsCheck cross-trace (signed vs counting at
  SeedWeight=1) wins over TLA+ refinement proof or Lean lemma —
  anti-TLA+-hammer, implementation-level where the bug bites.
- Readiness gate: TLA+ spec is ready to model-check; no pre-TLC
  pass needed. Optional round-42 follow-up: add
  PROPERTY EventuallyDone to .cfg for liveness.
- Graduation verdict: CONDITIONAL PASS. Four tool-coverage
  prereqs named in priority order; F# landing gated on them.

Files read (no edits): RecursiveSigned.fs, RecursiveSignedSemiNaive.tla
/cfg, RecursiveCountingLFP.tla, retraction-safe-semi-naive.md.

* Round 41: capture Soraya's 4 tool-coverage prereqs on RecursiveSigned

Soraya's round-41 audit of src/Core/RecursiveSigned.fs +
tools/tla/specs/RecursiveSignedSemiNaive.tla landed as a CONDITIONAL
PASS for Round-42 graduation. This commit lifts the four named
prereqs out of her notebook into BACKLOG sub-items under the
parent "Retraction-safe semi-naive LFP" entry, so the round-42
opener picks them up as checkbox work rather than having to re-read
the notebook.

Prereqs in priority order:
- Prereq 1 — TLC CI wire-up (RecursiveSignedSemiNaive.cfg)
- Prereq 2 — Z3 QF_LIA lemma for S2 FixpointAtTerm (BP-16 cross-check
  on the one P0; TLC alone insufficient for silent-fixpoint-drift risk)
- Prereq 3 — FsCheck property for S4 sign-distribution (anti-
  TLA+-hammer; two-trace quantification is NOT a TLA+ property)
- Prereq 4 — FsCheck cross-trace refinement (signed vs counting
  at SeedWeight = 1); cites BP-16

Round-42 graduation gate also captured: prereqs 1-4 CI-green + F#
implementation with P1/P2/P3 enforced at caller.

* Round 41: extend ROUND-HISTORY with arcs 5-7 (post-narrative commits)

The initial Round 41 ROUND-HISTORY entry (6e6e211) covered arcs
1-4 (coverage audit, operator-algebra cadence ship, Viktor P0
close, Viktor P1 file). Three more commits landed after:

Arc 5 — ROUND-HISTORY narrative + memory-restructure design
(6e6e211, 36797ba). The memory-folder rename was downgraded to
"design plan + sign-off first" under Auto Mode's
do-not-take-overly-destructive-actions clause (700-occurrence
cross-reference surface).

Arc 6 — BP-WINDOW ledger actualisation for Rounds 37-40
(85fb352). Provenance (PR #30 / 1e30f8c) attached to each
"(prospective)" header.

Arc 7 — Round-35 holdover close (e461d9c, 15e9654). Soraya
tool-coverage audit landed CONDITIONAL PASS for Round-42
graduation; four prereqs captured as BACKLOG sub-items with
BP-16 citation on the S2 Z3 cross-check.

Also: one new observation line in the Round-42 handoff section
noting the holdover-closed-same-round-as-cadence-item pattern.
BP-WINDOW ledger gains three rows.

* Round 41: Aarav skill-tune-up ranking (catch-up from round-18 stale)

CLAUDE.md 5-10 round cadence rule was 23 rounds overdue. Round 41
is the catch-up slot. Live-search + full ranking + prune pass all
landed in a single invocation.

Live-search (4 queries, 2026-Q1/Q2 best-practices targets):
- 6 findings logged to best-practices-scratch.md: Gotchas-section
  rise, pushy-descriptions pattern, Claude-A-authors / Claude-B-
  tests, router-layer command-integrity injection class, Agent
  Stability Index 12-dim drift metric, OWASP Intent Capsule
  pattern.
- Zero contradictions with stable BP-NN rules.
- Zero promotions flagged to Architect this round; all six are
  "watch" or route-elsewhere.

Top-5 skills flagged for tune-up:
1. performance-analysis-expert (642 lines, 2.1x BP-03 cap) — SPLIT — M
2. reducer (570 lines) — SPLIT or TUNE (prune) — M
3. consent-primitives-expert (507 lines) — SPLIT honouring BP-23
   theory/applied axis — M
4. claims-tester / complexity-reviewer router-coherence drift —
   HAND-OFF-CONTRACT — S (round-18 carry-over)
5. skill-tune-up (self) — 303 lines, 3 over BP-03 — TUNE (prune
   authoritative-sources duplicated with AGENT-BEST-PRACTICES.md)
   — S. Self-flagged first per BP-06.

Notebook state:
- Stale round-18 top-5 archived in Pruning log (first catch-up prune).
- 912 words, well under 3000-word BP-07 cap.
- ASCII-only, BP-10 clean.

Nine more bloat-row skills named as notable mentions queue behind
the top-3 bloat cases.

* Round 41: ADR — claims-tester/complexity-reviewer hand-off contract

Close Aarav's round-18 HAND-OFF-CONTRACT finding (carried 23 rounds
after ranker went offline by cadence). Two-stage pipeline: analytic
bound first (complexity-reviewer), empirical measurement second
(claims-tester). Names the reverse trigger (benchmark surprise flows
the other direction) and the decision table for who fires when.
Follow-up SKILL.md edits route via skill-creator per GOVERNANCE §4.

* Round 41: extend ROUND-HISTORY with Arc 8 (router-coherence ADR)

Arc 8 covers the claims-tester/complexity-reviewer hand-off ADR
(47d92d8) closing Aarav's 23-round-stale round-18 HAND-OFF-CONTRACT
finding. New observation on cadence-outage-recovery as a design axis:
sweep infrastructure is subject to the same bitrot it detects on other
surfaces. BP-WINDOW ledger gains two rows (085c0e3 Aarav catch-up,
47d92d8 router-coherence ADR).

* Round 41: correct Prereq 1 sizing — no TLC CI job exists

Close-out audit surfaced that .github/workflows/gate.yml only CACHES
the tla2tools.jar artefact; nothing runs it. RecursiveCountingLFP.tla
has shipped since round 19 compile-checkable-only — 22 rounds with no
run-gate against its invariants. Soraya's Prereq 1 re-sized S→M with
expanded scope covering both specs. Finding recorded as new round-41
observation: verifier-present does not imply verifier-actually-runs.

* Round 41: BP-WINDOW ledger — 459b218 + d76a09b rows

Keeps the Round 41 BP-WINDOW ledger commit-aligned rather than
arc-aligned. 459b218 is the Arc-8 narrative itself; d76a09b is the
Prereq-1 S→M correction. Both retractable as single reverts.

* Round 41: file formal-analysis-gap-finder round-42 run — verifier-runs lens

Codifies the round-41 Prereq-1 audit finding as a tracked
research entry, distinct from its ROUND-HISTORY narrative
presence. The finding — a verifier's installation artefacts
do not imply the verifier is exercised by any CI job — is
exactly the class formal-analysis-gap-finder exists to
surface. Concrete motivating case: RecursiveCountingLFP.tla
compile-checkable-only for 22 rounds. Round-42 scope covers
the bidirectional audit (specs without gates + gates without
specs). Handoff to Soraya per the skill's standing contract;
does not write the spec or CI job (DevOps + Soraya work).
Schedules after Prereq 1 lands so the audit sees corrected
state.

* Round 41: BP-WINDOW ledger — 2042a85 row

Per the established stopping rule (meta-ledger commits do not
get self-referential rows; their round-close coverage is the
PR merge), this commit adds only the 2042a85 row and does not
add a row for itself.

* Round 41: CONFLICT-RESOLUTION — Hiroshi ↔ Daisy hand-off row

Closes ADR 47d92d8's third follow-up action item. Single-row
addition to Active tensions citing the router-coherence ADR as
the standing resolution. Doc-only edit (not a SKILL.md touch,
so GOVERNANCE §4 does not gate this). The other two ADR
follow-ups (claims-tester + complexity-reviewer SKILL.md
updates) remain deferred to round 42 via skill-creator
workflow.

* Round 41: BP-WINDOW ledger — fcfa3d9 row

Per-commit ledger discipline for the CONFLICT-RESOLUTION
Hiroshi ↔ Daisy row. Meta-ledger-only commit so no
self-referential row for this commit itself (established
stopping rule).

* Round 41: file harsh-critic findings on ADR 47d92d8 as round-42 supersedure backlog

Router-coherence ADR 47d92d8 (Hiroshi analytic ↔ Daisy empirical
two-stage pipeline) landed without the adversarial-review gate.
Post-landing harsh-critic (Kira) pass surfaced 3 P0 + 5 P1 + 2 P2
substantive findings, including (P0-1) unscoped grandfather
clause, (P0-2) table-vs-prose contradiction on reverse trigger,
(P0-3) Stage-1 "analytically wrong" clause blocking the evidence
loop for escalation, (P1-7) no escalation timebox reproducing the
23-round-stale failure mode the ADR diagnosed, (P1-8) two advisory
skills not composing to a mandatory pipeline without a binding
dispatcher, (P2-9) example-bug on BCL Dictionary.Remove amortised
complexity, and more.

File as round-42 supersedure rather than inline-edit because
docs/CONFLICT-RESOLUTION.md already cites 47d92d8 as Standing
Resolution — supersedure preserves the citation chain via
GOVERNANCE §2 edit-in-place with a "Superseded by …" header on
v1. New ADR target: docs/DECISIONS/2026-04-??-router-coherence-
v2.md. Supersedure work blocks the claims-tester +
complexity-reviewer SKILL.md updates ADR 47d92d8 follow-up work
depends on — those edits should target v2, not v1.

Owner: Architect drafts; Kira audits closure; Aarav confirms
router-coherence drift stays closed. Effort: M. Schedule: Round
42 slot after Soraya Prereq 1 (TLC wire-up) lands.

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

* Round 41: BP-WINDOW ledger — 779d7ef row

Ledger row for harsh-critic findings filing commit. Primary work
(BACKLOG addition tracking a round-42 supersedure with 10 named
findings), not meta-ledger — earns a row under the BP-WINDOW
per-commit discipline. Consent = adversarial findings tracked
honestly; Retractability = supersedure preserves citation chain
vs inline-edit; No-permanent-harm = single BACKLOG edit, no ADR
body touched, no SKILL.md touched.

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

* Round 41: Arc 9 narrative — self-correction sweep

ROUND-HISTORY Arc 1-8 narrated primary commits up through the
router-coherence ADR (47d92d8). Four primary commits landed
after Arc 8 — Prereq 1 sizing correction (d76a09b), recurring-
audit lens BACKLOG entry (2042a85), CONFLICT-RESOLUTION Hiroshi
↔ Daisy row (fcfa3d9), and harsh-critic findings filed as
round-42 supersedure (779d7ef) — visible only in the BP-WINDOW
ledger table, not in narrative form.

Arc 9 ties them into one coherent sequence: the round's
self-correction ran unusually deep. Arc 8 corrects Aarav's
round-18 finding via ADR; Arc 9 catches the corrector itself
under-reviewed via Kira's adversarial pass. Both self-
corrections land before round-close. Narrative-ledger
alignment is the BP-WINDOW discipline's first assertion —
restoring it.

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

* Round 41: BP-WINDOW ledger — 160fcfa row

Ledger row for Arc 9 narrative commit. Narrative extensions
count as primary work under BP-WINDOW precedent (per 459b218
and 6e6e211 examples) and earn a ledger row. Consent = drift
closed honestly; Retractability = single revertable doc edit;
No-permanent-harm = isolated insertion.

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

* Round 41: v2 ADR — router-coherence supersedure closes 10 Kira findings in-round

Drafts v2 of the router-coherence ADR (docs/DECISIONS/2026-04-21-router-coherence-v2.md) that supersedes v1 (47d92d8) in the same round, closing all 10 Kira harsh-critic findings (3 P0 + 5 P1 + 2 P2) via named textual closures C-P0-1 through C-P2-10.

Key closures:
- C-P0-1: grandfather clause bounded with Kenji-owned inventory + one-per-round discharge
- C-P0-2: reverse trigger unconditional (table now matches prose)
- C-P0-3: escalation-evidence exception permits Stage 2 under conference protocol with explicit labelling
- C-P1-5: Stage-1 trigger widened to match claims-tester SKILL.md contract
- C-P1-7: escalation timebox (round +2 auto-promote to BACKLOG P1) prevents 23-round-stale reproduction
- C-P1-8: Kenji named as binding dispatcher — advisory + advisory + binding-dispatcher composes to mandatory pipeline
- C-P2-9: Dictionary.Remove example replaced with ArrayPool<T>.Rent (legitimate BCL-contract edge)

v1 kept in place per GOVERNANCE §2 with Superseded-by header appended in a follow-up commit so the CONFLICT-RESOLUTION Active-tensions citation chain remains resolvable.

BP-10 lint: clean.

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

* Round 41: v1 ADR — append Superseded-by header per GOVERNANCE §2

Appends Superseded-by header to router-coherence v1 ADR (47d92d8) pointing at v2 (09f0889), per GOVERNANCE §2 (docs read as current state; superseded ADRs keep v1 in place with redirect header so citation chains remain resolvable).

Also corrects v1 Status from "Proposed — awaits sign-off" to "Accepted (pre-adversarial-review; superseded by v2 same-round after Kira pass)" per Closure C-P1-4 in v2 — Status was already cited as Standing Resolution in docs/CONFLICT-RESOLUTION.md Active-tensions, so Proposed was factually wrong.

The v1 body text is not edited — supersedure preserves the historical record; v2 carries the closures.

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

* Round 41: Arc 10 narrative + BP-WINDOW rows for v2 supersedure

Adds Arc 10 narrative covering 09f0889 (v2 ADR) and 4efe545 (v1 Superseded-by header) as one coherent in-round supersedure story, after Arc 9's "self-correction sweep" and before Round 41 observations. Pattern: Arc 9 surfaces the under-review; Arc 10 lands the close in the same round rather than deferring a known-imperfect artefact.

Adds two BP-WINDOW ledger rows (09f0889, 4efe545) to the round-41 ledger block per the per-commit accounting discipline.

Supersedure arc count now covers the full round-41 close: 10 arcs / 25 primary-work commits.

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

* Round 41: close BACKLOG supersedure entry — discharged in-round by v2

Flips BACKLOG router-coherence supersedure entry from [ ] to [x] ✅ with "shipped round 41 in-round" annotation pointing at v2 ADR (09f0889) + v1 Superseded-by header (4efe545). All 10 Kira findings closed via named textual closures C-P0-1 through C-P2-10.

Original finding narrative preserved below the closure line per the shipped-item convention used elsewhere in the file (audit trail).

Follow-up SKILL.md edits to claims-tester + complexity-reviewer via skill-creator remain round-42 scope, now targeting v2 as intended.

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

* Round 41: BP-WINDOW row for BACKLOG-close commit 4537365

Adds BP-WINDOW ledger row for 4537365 (BACKLOG supersedure entry discharged in-round) to match the Arc 9 precedent where 779d7ef (BACKLOG entry addition) received a row. Symmetry: add and close get equal ledger treatment.

Meta-ledger stopping rule still holds — this commit itself (which only adds a ledger row) does not get a self-referential row.

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

* Round 41: grandfather O(·) claims inventory — honours v2 C-P0-1 within-round

Produces the one-time grandfather-claims inventory named in router-coherence v2 ADR §Closure C-P0-1 within the round v2 lands, per ADR's own within-round commitment.

Inventory: 35 live claims at ADR-landing time (29 F# /// docstrings in src/Core/ + src/Bayesian/, 3 grey-zone F# code comments, 1 openspec/specs/operator-algebra/spec.md line, 2 docs/research/** claims). Zero hits in root README, memory/persona/*/NOTEBOOK.md, docs/papers/** (directory does not exist yet).

Distinguishes live claims (shipping as asserted bounds) from historical evidence (BACKLOG [x] ✅ residue, TECH-RADAR flag-text narrating past regressions, in-file "was O(…)" commentary on fixed paths). Only live claims populate the grandfather set — evidence is captured for audit trail but excluded per v2's intent ("claims Zeta is currently making").

BACKLOG discharge entry added: P2, one-claim-per-round cadence, ~35-round tail, Aarav graceful-degradation clause fires on ≥3 rounds without discharge.

Complexity-class distribution of live set: 10 O(1), 13 O(log n)/O(log k)/O(log N), 7 O(n)/O(n log n)/O(n log k), 5 parametric.

BP-10 lint: clean.

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

* Round 41: Arc 11 narrative + BP-WINDOW row for grandfather inventory

Adds Arc 11 narrative covering d98ef2b (grandfather inventory + BACKLOG discharge entry) as the close of the v2 ADR's within-round commitments. Pattern: Arc 10 lands the ADR; Arc 11 lands the ADR's own within-round commitment — without Arc 11, Arc 10 would have shipped a contract Zeta didn't meet.

Adds BP-WINDOW ledger row for d98ef2b per per-commit accounting discipline.

Round 41 now closes at 11 arcs / 30 primary-work commits.

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

* Round 41: DORA 2025 reports — reference substrate land in docs/

Two external-anchor PDFs (CC BY-NC-SA 4.0) placed at their
memory-documented paths:

- docs/2025_state_of_ai_assisted_software_development.pdf
  (~15MB, 138 pages) — findings + data report.
- docs/2025_dora_ai_capabilities_model.pdf (~9MB, 94 pages)
  — framework companion.

Citation anchors this commit makes in-tree rather than
memory-only: Nyquist stability criterion for AI-accelerated
development (foreword p9 fn 1) as theoretical anchor for
CI-meta-loop + retractable-CD P1 BACKLOG work; "AI is an
amplifier" anchor that echoes the corporate-religion /
sandbox-escape threat class; seven-capability AI model that
gives the external measurement vocabulary for round-audit
output (capability #7 "quality internal platforms" is the
in-flight P1 cluster per 2026-04-20 memory).

License note: derived work is NC-SA-bound; Zeta citations
are fine, external redistribution inherits NC-SA. Paired
companion memory file is reference_dora_2025_reports.md
(out-of-tree); this commit brings the primary sources
in-tree so citation from research docs + ADRs can point
at a repo-local path rather than a newsletter-gated URL.

* Round 41: Arc 12 narrative + BP-WINDOW row for DORA substrate

Narrative section for Arc 12 inserted before "Round 41
observations for Round 42" with primary commit pointer to
46075d6. Arc 12 frames the DORA 2025 PDFs as
memory-promotion substrate per the 2026-04-20 feedback entry
("DORA is our starting point for measurements") and cites
the concrete in-tree anchors (Nyquist p9 fn 1, seven-
capability model, AI-amplifier thesis).

Also surfaces honestly — in-body, not buried in a private
retrospective — the ranker-scope gap that let the two
untracked PDFs sit 18+ hours through nine consecutive
/next-steps invocations before this arc closed the gap. The
skill explicitly lists docs/research/ and docs/TECH-RADAR.md
but not `git status --short` for untracked files. Candidate
skill-tune-up note for Aarav's notebook: /next-steps must
run `git status --short` on every invocation so dropped-in
artefacts appear in ranking before the ninth re-fire, not
after.

BP-WINDOW ledger gets a matching 46075d6 row with
reference-document-specific cells: Consent strengthened by
promoting memory-only anchors to in-repo substrate and by
surfacing the ranker-stall pattern in-narrative; retraction
is a single `git rm` if the license / size stance later
changes; no-permanent-harm preserved since no runtime
behaviour depends on the PDFs' presence (they are citation
substrate, not loaded artefacts).

Arc count now 12; primary-work-commit count now 12 (Round 41
alignment preserved). Build gate green (0 Warning / 0 Error);
BP-10 lint clean on the narrative + ledger row.

* Round 41: markdownlint CI fix on PR #31

Three rule violations surfaced by `lint (markdownlint)` CI job on
PR #31:

- `docs/DECISIONS/2026-04-21-router-coherence-claims-vs-complexity.md:261`
  MD022/blanks-around-headings — collapse multi-line heading
  `## Decision rationale (one paragraph for the\nwait-don't-read
  audience)` to a single line so the parser stops seeing line 262
  as adjacent non-blank content.
- `docs/research/grandfather-claims-inventory-2026-04-21.md:106`
  MD032/blanks-around-lists — add blank line between "Surface
  distribution:" lead-in and the `-` list that follows.
- `docs/research/grandfather-claims-inventory-2026-04-21.md:111`
  MD032/blanks-around-lists — same fix for "Complexity-class
  distribution (rough):" lead-in.

All three are the same class of fix shipped in task #105 on PR #30.
Additive edit to the open round-41 PR branch — no rewrite of shipped
content, semantics preserved.

Verified clean via `npx markdownlint-cli2` on both files before push.

* Round 41: address 8 Copilot inline review findings on PR #31

- CONFLICT-RESOLUTION.md: cite router-coherence v2 ADR as current,
  v1 retained as historical record (finding #1).
- ROUND-HISTORY.md: correct operator-algebra spec line count in
  Arc 2 narrative (324 -> 365; both duplicated occurrences) to
  match the shipped spec at `e51ec1b` (finding #2).
- openspec-coverage-audit: drop broken link to non-existent
  inventory follow-up; band definitions already live in Part C
  (finding #3). Attribute triggering question to "human maintainer"
  per write-for-a-stranger norm (finding #8).
- best-practices-scratch: merge split H2 "uv-only Python package
  and tool / management" into single heading (finding #4).
- memory-role-restructure-plan: add --exclude-dir=references to
  baseline grep loops so research scratch doesn't inflate hit
  counts (finding #5); canonicalize flat-file destination to
  persona-roles-README.md to match the sed rewrites below
  (finding #6); replace three non-portable `xargs -r sed -i ""`
  invocations with portable `while read + sed -i.bak + rm` loops
  that work on BSD and GNU alike (finding #7 and two sibling
  instances of the same bug).

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

* Round 41: fix markdownlint MD024 — remove duplicate Round 41 block

The 5-file merge that resolved PR #31's rebase left two identical
copies of the whole Round 41 section in docs/ROUND-HISTORY.md (375
lines each), which tripped MD024/no-duplicate-heading on the
`## Round 41` headings at lines 651 and 1028. The two blocks were
bit-identical (including the just-corrected "365 lines" drift fix),
so the fix is a simple deletion of the second block — the first
block is kept as the canonical Round 41 history.

markdownlint-cli2 now reports clean on docs/ROUND-HISTORY.md.

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

* Round 41: revert 324→365 (historically wrong); finish Copilot follow-ups

Two fixes on PR #31:

1. ROUND-HISTORY.md: revert "324 → 365" change from Finding #2.
   Copilot's suggestion was based on a stale intermediate snapshot.
   At Arc 2 ship commit `e51ec1b`, the spec was exactly 324 lines
   (verified via `git show e51ec1b:openspec/specs/operator-algebra/spec.md | wc -l`).
   Reframed with commit-pin ("Spec size at Arc 2 ship (`e51ec1b`)
   was 324 lines; subsequent Viktor closure arcs in this same round
   grew it further") so future drift-checks recognize it as a
   historical anchor, not a current-state claim.

2. memory-role-restructure-plan-2026-04-21.md: close four follow-up
   Copilot findings in one sweep. All Phase 1 + Phase 3 grep
   invocations now consistently use `--exclude-dir=.git
   --exclude-dir=references` (dropping the piped `grep -v "^./\.git"`
   intermediate), and the three `xargs -r sed -i ""` invocations are
   replaced with portable `while IFS= read -r file; do sed -i.bak ...`
   loops (BSD/GNU compatible — the original flags were
   GNU-xargs-only and BSD-sed-only).

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 23, 2026
Fifth and final Overlay A migration for the 2026-04-23
cadence: semiring-parameterized-zeta regime-change project
memory. Queue now zero on signal-in-signal-out composes-with
set.

2026-04-23 cadence summary: 5 Overlay A migrations + courier
protocol + Amara deep-research absorb + fresh-session-quality
BACKLOG row + AutoDream policy + soulfile staged absorption.
10+ PRs, all self-scheduled free work.

Five lint-classes now identified as absorb-time-common
(MD003, MD018, MD022, MD026, MD032) — memory-author-template
recommendations noted for future fresh-writes.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
AceHack added a commit that referenced this pull request Apr 23, 2026
…ntory BACKLOG (#165)

Two self-scheduled PRs this tick:
- PR #164 — Overlay A migration #5 (semiring-parameterized-zeta);
  queue zero on signal-in-signal-out composes-with set
- PR #165 — P1 BACKLOG row for factory technology inventory
  + OpenAI web UI addition (Aaron 2026-04-23 directive)

2026-04-23 day summary: ~12 durable PRs of factory work, all
self-scheduled free work under the 2026-04-23 scheduling-
authority rule.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
AceHack added a commit that referenced this pull request Apr 23, 2026
…r cadenced audit)

Aaron 2026-04-23 directive: "we probalby need some meta
iteam to refactor the backlog base on current knowledge and
look for overlap, this is hygene we could run from time to
time so our backlog is not just a dump".

Landed as FACTORY-HYGIENE row #54 (PR #166) + per-user
feedback memory. 5-pass audit (overlap / staleness /
priority / knowledge-absorb / document). Same cadence as
sibling meta-hygiene rows (#5 / #23 / #38 / #46).

Numbered #54 to avoid collision with #53 on the AutoDream
branch (PR #155, still open).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
AceHack added a commit that referenced this pull request Apr 23, 2026
…absorbed

PR #170 lands docs/FACTORY-TECHNOLOGY-INVENTORY.md with
~26 first-pass rows (language runtimes / data infra / agent
harnesses / formal verification / static analysis + security
/ CI + publishing).

Aaron 2026-04-23 PQC mandate absorbed as per-user feedback
memory + Open follow-up #5 on the tech-inventory doc:
quantum-resistant crypto mandatory for all factory adoption;
classical requires ADR + maintainer sign-off + replacement
plan.

Restraint reversal from auto-loop-65: scheduling rule isn't
"never open PRs" — open when the work advances.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
AceHack added a commit that referenced this pull request Apr 23, 2026
…ed) (#183)

Fourth file audited in gap #5. CONFLICT-RESOLUTION.md
classified both (coupled).

9 sections classified:
- 6 factory-generic (preamble / alignment-cite-first /
  principles / conference protocol / humans-part-of-system /
  when-part-takes-over / reflection-cadence — 7 actually)
- 1 both (The parts: persona roster — shape generic,
  Zara/Algebra-Owner/Query-Planner scopes Zeta-specific)
- 1 zeta-library-specific (Active tensions — cites
  IStorageCostProbe / Plan.fs / WDC / router-coherence ADR)

Refactor notes:
1. Generalise Zeta-tied specialists (Zara, Algebra Owner,
   Query Planner) — ~3 specialist scopes out of 20+
2. Remove Active Tensions Zeta-specific content; replace
   with template + adopter-fill-in; migrate current
   tensions to Zeta's own docs/LIBRARY-TENSIONS.md
3. Keep Otto (already factory-generic — any
   autonomous-loop adopter uses the pattern)

Effort: M. Post-split: Frontier with surgical edits.

Note re pattern hypothesis: continues mostly-factory-
generic-with-Zeta-illustrative-sections shape of the
rule substrate. GOVERNANCE (PR #181) was cleanest;
CONFLICT-RESOLUTION has more Zeta embedding due to
Active Tensions section.

Attribution: Otto (loop-agent PM hat).

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
AceHack added a commit that referenced this pull request Apr 23, 2026
…-generic; hypothesis confirmed)

Fifth audit in gap #5. AGENT-BEST-PRACTICES.md classified
factory-generic: 29 BP-NN rules across 10 sections, all
pure instructional; zero Zeta-library-specific rule
content. Effort: S.

Hypothesis confirmed across 5 data points:
- CLAUDE.md, AGENTS.md (onboarding / illustrative) → both
- GOVERNANCE, AGENT-BEST-PRACTICES (rule / instructional)
  → factory-generic
- CONFLICT-RESOLUTION (rule + state-logging) → both

Projected classifications for remaining files:
- ALIGNMENT.md → factory-generic
- TECH-RADAR.md → both
- BACKLOG/ROADMAP/VISION → zeta-library-specific

PR #184 armed for auto-merge. Six PRs simultaneously armed
now (#165/178/181/182/183/184); free-tier CI queue is the
rate-limiter.

Attribution: Otto (loop-agent PM hat).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
AceHack added a commit that referenced this pull request Apr 23, 2026
…183 merged

Sixth audit. ALIGNMENT.md classified factory-generic. 20
clauses (HC/SD/DIR) structurally instructional; substance
transfers to any adopter. Effort: S (project-name
substitution + signatures template-ify).

Load-bearing finding: the factory's alignment substrate
transfers cleanly to any Frontier adopter. Common Sense
2.0's 5 safety properties are structurally available to
any adopter inheriting Frontier, not just Zeta.

PR #183 (CONFLICT-RESOLUTION audit) merged this tick.
PR #185 (ALIGNMENT audit) armed for auto-merge.

Progress: 6 audits in 8 ticks; ~10 remaining; projected
completion ~Otto-24.

Attribution: Otto (loop-agent PM hat).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
AceHack added a commit that referenced this pull request Apr 23, 2026
…-DO); halfway mark

Seventh + eighth audits landed in a single tick. Batched
cadence proven: 2× audit throughput at similar tick
overhead as single-file ticks.

AUTONOMOUS-LOOP.md: factory-generic (cleanest; zero
refactor). Otto's own operating spec inherits verbatim —
any Claude-Code-using adopter gets the autonomous-loop
discipline free.

WONT-DO.md: both (coupled). Shape transfers; Zeta-specific
entries stay in Zeta's library decision record.

Progress: 8 of ~16 files = halfway. Balanced tally 4
factory-generic + 4 both-coupled.

PR #186 armed. Seven PRs now simultaneously armed (#165/
#178/#181/#182/#184/#185/#186) — free-tier CI throughput
is the bottleneck.

Attribution: Otto (loop-agent PM hat).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
AceHack added a commit that referenced this pull request Apr 23, 2026
…atched) (#186)

Two-file batch this tick. Seventh and eighth audits in
gap #5.

AUTONOMOUS-LOOP.md: factory-generic (cleanest so far).
9 sections, pure Claude Code harness discipline, zero
Zeta-library content. Refactor effort: ~0 (verbatim to
Frontier).

WONT-DO.md: both (coupled). Shape (entry template, ADR
status vocabulary, "How to add" section) is factory-
generic; 5 of 6 entry-sections are Zeta-library-specific
("Algorithms / operators", "Engineering patterns",
"Out-of-scope for a DBSP library", etc.). Refactor
strategy: Frontier inherits shape + empty section stubs;
Zeta retains full current entries as library decision
record. Effort: M.

Progress: 8 of ~16 files audited (Otto-7/9/10/12/13/14/15).
At halfway mark; projected completion ~Otto-23.

Pattern tally now 8 audits:
- factory-generic: GOVERNANCE / AGENT-BEST-PRACTICES /
  ALIGNMENT / AUTONOMOUS-LOOP (4)
- both (coupled): CLAUDE / AGENTS / CONFLICT-RESOLUTION /
  WONT-DO (4)

Attribution: Otto (loop-agent PM hat).

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
AceHack added a commit that referenced this pull request Apr 23, 2026
…ective (triple-header)

High-density tick:
- NSA-004 cadenced test PASS (prompt 4 memory recall;
  deep substrate grounding)
- Gap #5: TECH-RADAR.md + FACTORY-HYGIENE.md batched audit
  (10 of ~16 files = past midpoint)
- Samples audience-appropriate directive absorbed (Aaron:
  research + learning samples, audience-appropriate style;
  audience-persona expansion deferred)

NSA-004's output directly triggered Aaron's samples
sharpening. NSA tests becoming a directive-generation
mechanism, not just a quality gate.

PRs #187 (NSA-004) + #188 (TECH-RADAR + FACTORY-HYGIENE)
armed for auto-merge.

Attribution: Otto (loop-agent PM hat).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
AceHack added a commit that referenced this pull request Apr 23, 2026
…categorization validated

Major mid-tick directive: Aaron proposes a whole learning
repo (Khan-style, all subjects, 0-to-any-age, prereqs
mapped, backwards-chain from current needs). Provisional
name: Schoolhouse.

Also validated the samples four-row categorization from
Otto-16 (learning / research / production / tests).
Annotated existing memory with confirmation note.

BACKLOG P2 row filed (PR #189). Per-user memory filed +
MEMORY.md index updated.

Schoolhouse is now the 8th named project-under-construction
(sibling to Zeta / Frontier / Aurora / Showcase / Anima /
ace / Seed). Linguistic seed becomes more load-bearing
(root of Schoolhouse prereq graph + Frontier bootstrap +
Soulfile DSL vocabulary).

Gap #5 audit batch deferred to next tick (higher-priority
directive absorption this tick).

Attribution: Otto (loop-agent PM hat).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
AceHack added a commit that referenced this pull request Apr 23, 2026
…top-level)

Batched audit of project-planning files. All classified
fast since shape is generic + content is project-specific:
- GLOSSARY → both (format generic, entries Zeta)
- ROUND-HISTORY / BACKLOG / ROADMAP / VISION →
  zeta-library-specific

Running tally 15 of ~16 top-level files:
- 5 factory-generic
- 6 both-coupled
- 4 zeta-library-specific

Only directory-level audits remain (.claude/skills/**,
.claude/agents/**, openspec/**, tools/**, .github/**).

Split-mechanical plan crystallised: factory-generic verbatim
to Frontier; both-coupled surgical extraction; zeta-library-
specific stay + empty templates to Frontier.

PR #190 armed for auto-merge.

Attribution: Otto (loop-agent PM hat).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
AceHack added a commit that referenced this pull request Apr 23, 2026
… github)

Three directory-level audits in one tick. 18 audits total now.

- .claude/agents/** (17 personas) → both-coupled
- openspec/** → both-coupled (framework generic, specs Zeta)
- .github/** → both-coupled (shape generic, workflows Zeta)

Tally: 5 factory-generic / 9 both-coupled / 4 zeta-specific.

Remaining: .claude/skills/** + tools/**. Projected gap #5
closure ~Otto-21.

Observation: named-persona roster transfers verbatim to
Frontier. Kenji / Daya / Iris / Bodhi / Rune / Aminata /
Nazar / Kira / etc. all move as-is. Adopter-substitution
only in description-level Zeta refs.

PR #191 armed for auto-merge.

Attribution: Otto (loop-agent PM hat).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
AceHack added a commit that referenced this pull request Apr 23, 2026
…udits total)

Gap #5 closure milestone reached.

Tick actions:
- .claude/skills/** audited summary-level (236 skills
  delegated to Aarav skill-tune-up portability audit)
- tools/** audited (13 subdirs; mostly factory-generic,
  3 both/project outliers)
- Gap #5 marked SUBSTANTIALLY COMPLETE in BACKLOG P0 row
- Gap #1 (multi-repo split) unblocked by classification

Final gap #5 tally:
- 6 factory-generic
- 10 both-coupled
- 5 zeta-library-specific

Frontier readiness progress (3 of 8 complete):
- Gap #3 closed (NSA test history, PR #177)
- Gap #8 closed on re-inspection (Otto-4)
- Gap #5 SUBSTANTIALLY COMPLETE (Otto-20)

Remaining: gap #1 (unblocked), #2 (linguistic-seed,
high-priority prompt-injection mechanism), #4 (bootstrap-
reference docs, L + reviewers), #6 (persona portability,
may close on re-inspection given agents audit), #7
(tick-history scope-mix).

Original gap #5 estimate: ~20-40 ticks. Actual: ~14 ticks
with batching acceleration.

PR #192 armed for auto-merge.

Attribution: Otto (loop-agent PM hat).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
AceHack added a commit that referenced this pull request Apr 23, 2026
…inspection

Gap #6 (persona file portability) CLOSED on re-inspection —
subsumed by gap #5's .claude/agents/** directory audit
(PR #191 Otto-19). All 17 personas classified; surgical
per-persona edits flagged.

NSA-005 (Common Sense 2.0 property recall, Haiku 4.5 NSA-
default): PASS. All 5 properties named correctly with
mechanism attribution. Otto-4 memory NSA-findable + well-
recalled 17 ticks after filing.

Frontier readiness: 4 of 8 closed/substantially complete.
- #3 closed (NSA test history PR #177)
- #5 substantially complete (Otto-20)
- #6 closed on re-inspection (this tick)
- #8 closed on re-inspection (Otto-4)

Remaining: #1 (multi-repo split, unblocked L), #2
(linguistic-seed, high-priority prompt-injection mechanism),
#4 (bootstrap-reference docs, L + reviewers), #7
(tick-history scope-mix).

PR #193 armed for auto-merge.

Attribution: Otto (loop-agent PM hat).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
AceHack added a commit that referenced this pull request Apr 23, 2026
…e ROUND-HISTORY pattern)

Gap #7 (tick-history / fire-history scope-mixed) closes on
re-inspection using the same pattern as Otto-18 ROUND-HISTORY
classification:

- Fire-log FILES are project-specific by nature (each
  project has its own session history)
- SCHEMA + DISCIPLINE are factory-generic (append-only,
  row schema, cadenced firing)
- Transfer via docs/AUTONOMOUS-LOOP.md (already factory-
  generic) + hygiene-history-schema pattern

Post-split: Zeta retains tick-history/fire-history files
as-is; Frontier gets empty templates + schema preamble;
adopters populate their own logs from tick 1.

Frontier readiness now 5 of 8 closed/substantially complete
(gaps #3 / #5 / #6 / #7 / #8). Remaining: #1 multi-repo
split (unblocked L), #2 linguistic-seed (high-priority),
#4 bootstrap-reference docs (L + reviewers).

Attribution: Otto (loop-agent PM hat).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
AceHack added a commit that referenced this pull request Apr 23, 2026
…on + Amara deep review)

Record-density tick: 4 major directive absorptions:

1. Craft's secret-not-secret strategic purpose (succession-
   engine for multi-generational human maintainers;
   teach-from-birth timelines authorized)
2. Yin/yang mutual-alignment (AI↔human; Craft is companion
   curriculum to ALIGNMENT.md; candidate 6th Common Sense 2.0
   property deferred to Kenji)
3. Gap #4 bootstrap reference docs SKELETON LANDED
   (docs/bootstrap/ with README + quantum-anchor.md +
   ethical-anchor.md; PR #195; reviewer roster set)
4. Amara's deep operational-gap assessment absorbed via
   courier ferry; landed verbatim at docs/aurora/
   2026-04-23-amara-operational-gap-assessment.md
   (PR #196)

Amara's strategic direction: "merge the operating model
you already have before inventing a bigger one." Validates
Otto's closure bias; sharpens Phase 1-4 priorities.

Frontier readiness now 6 of 8 gaps advanced:
- Closed: #3 / #6 / #7 / #8
- Substantially complete: #5
- Skeleton landed: #2 + #4
- Remaining: #1 multi-repo split (unblocked L), #2/#4
  full content (multi-round)

Phase 1 closure push begins next tick: drive #149/#154/
#155/#161/#170 to merge.

Attribution: Otto (loop-agent PM hat).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
AceHack added a commit that referenced this pull request Apr 23, 2026
…196)

* aurora: absorb Amara's operational gap assessment (2026-04-23 ferry)

Amara delivered a comprehensive deep review via Aaron's
courier ferry (pasted transcript). Verbatim preservation per
courier protocol + Otto's absorption notes with extracted
action items.

Amara's one-sentence direction to Kenji:
"merge the operating model you already have before
inventing a bigger one."

Affirmations:
- Zeta's technical substrate real + algebra-first
- Courier protocol correctly framed
- Collaborator registry + direction-change shape right
- Code quality + verification stack stronger than most

Critical findings:
- Main-vs-PR ambiguity is #1 operational drift
- MEMORY-index-lag still manually enforced
- Factory-vs-library coupling (Otto addressing via gap #5)
- CONTRIBUTOR-CONFLICTS.md capture gap
- BACKLOG.md write-hotspot (6761 lines)
- Network layer doesn't exist yet

Decision-proxy readiness: 2/3 designed, 1/3 implemented.

Otto's response phases:
1. Closure push (drive #149/#154/#155/#161/#170 to merge;
   mechanize file-and-index atomicity; populate
   CONTRIBUTOR-CONFLICTS; restructure BACKLOG)
2. Decision-proxy operationalisation (invocation
   mechanics + durable audit surface)
3. Semantic network-health metrics + stochastic-contract
   framing
4. Aurora integration + current priorities in parallel

Validates Otto-session's closure-over-novelty bias;
sharpens next-phase priorities.

Attribution: Amara (authored); Otto (absorb + verbatim
preservation + action-items extraction); Kenji (synthesis
queue: "merge over invent").

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

* aurora: fix MD029 ordered-list-prefix — restart numbering per section

Markdownlint MD029 flagged continued 6. 7. 8. etc. where
it expects restart at 1. per ordered-list block. Python
regex-based renumbering restores convention.

Unblocks PR #196 markdownlint gate.

Attribution: Otto (loop-agent PM hat).

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
Five rows added per Amara's 8th courier ferry (PR #274)
landing plan:

**Techniques section (4 rows):**

- Semantic hashing (Assess) — Hinton/Salakhutdinov; real
  technical family for "rainbow table" intuition.
- Locality-sensitive hashing (Assess) — Charikar; sibling
  collision framework.
- HNSW (Assess) — graph-based ANN with logarithmic scaling;
  Trial-promotion contingent on prototype.
- Product quantization (Assess) — compressed vector search
  at scale.
- Quantum illumination (Assess for low-SNR sensing theory;
  explicit Hold-note for long-range product claims per 2024
  engineering review). Importable as analogy for low-SNR
  software detection with retained-reference-path; NOT as
  operational quantum-radar capability.

**Tools/infra section (1 row):**

- Substrait (Stronger Assess) — cross-language relational-
  algebra plan format; answers P2 persistable-IR gap; Bonsai-
  vs-Substrait strategic-question scope like the declarative-
  env-parity row.

All 5 rows cross-reference the 8th-ferry absorb at
`docs/aurora/2026-04-23-amara-physics-analogies-semantic-
indexing-cutting-edge-gaps-8th-ferry.md` (PR #274).

Preserves the "do not operationalize without promotion"
quantum-radar discipline from both Amara's ferry and
AGENTS.md absorb rule. Hold-note on long-range claims is
explicit so future readers don't mistake Assess-for-low-
SNR-theory for Assess-for-long-range-radar.

Ring column uses `—` for round-number since these are
Amara-attributed external research recommendations, not
in-repo research passes. Precedent: other Assess rows with
no round-specific origin use `—`.

Lands within-standing-authority per Otto-82 calibration —
pure TECH-RADAR row-addition; not account/spending/named-
design-review gated.

Closes 8th-ferry candidate BACKLOG row #5 of 5. Remaining
candidates:
- Quantum-sensing research doc (S)
- Semantic-canonicalization research doc (M) — spine
- Provenance-aware bullshit-detector research doc (M)
- docs/EVIDENCE-AND-AGREEMENT.md future operational
  promotion (gated on 3 research docs)

Otto-96 tick primary deliverable.
AceHack added a commit that referenced this pull request Apr 24, 2026
…ries (8th-ferry candidate #1) (#278)

Research-grade absorb per Amara 8th-ferry landing plan
(PR #274). Separates real quantum-sensing literature from
software analogy so the latter can borrow carefully without
contaminating the former.

Key structure:

- **Do not operationalize stated as first rule** — this doc
  MUST NOT be cited as authorisation for Zeta or Aurora
  "quantum-powered" / "quantum-inspired" claims. 2024
  engineering review caps microwave QR at <1 km typical.
- **What the physics actually supports**: Lloyd 2008 +
  Tan Gaussian-state 6 dB error-exponent + 2023 Nature
  Physics microwave demo + 2024 engineering range-cap
  review + standard radar R⁻⁴ range equation. Quantum
  sensing broader and more mature than quantum-radar
  specifically (NV-centers / magnetometers / atomic clocks
  are real; radar is speculative).
- **5 importable software analogies**: retained reference
  path (anchor for weak evidence); correlation beats
  isolation (kNN retrieval not single-source agreement);
  time-bandwidth product (repeated independent
  observations over window); decoherence (carrier overlap
  destroys independence weight); cross-section-is-
  observability (salience != evidence).
- **6-item NOT-imply list**: no quantum-radar claim; no
  quantum-inspired algebra; no quantum-certified alignment
  robustness; no Aurora-as-quantum-safety; etc. First-class
  content, future references must honour.
- **Composition table** mapping analogies to existing
  substrate (SD-9 / DRIFT-TAXONOMY patterns 2 + 5 /
  citations-as-first-class / alignment-observability /
  oracle-scoring v0 / BLAKE3 v0). No new mechanisms
  proposed; analogies slot in as framing.
- **Graduation candidates** named with explicit ADR gating:
  retained-witness correlation metric; salience-vs-evidence
  PR review diagnostic; decoherence-inspired carrier-
  downgrade rule. Each needs separate ADR + operational
  artifact + regression-test before graduating.

Scope limits:
- Does NOT propose implementation.
- Does NOT audit existing Zeta claims against analogy
  boundaries.
- Does NOT commit to quantum-literature tracking cadence.
- Does NOT license creative expansion of analogy set
  (5 is what Amara cited; new literature = new research
  doc).
- Does NOT re-verify primary sources; preserves Amara's
  scoping discipline verbatim.

Self-applies §33 archive-header format — 14th
aurora/research doc in a row.

Lands within-standing-authority per Otto-82/90/93
calibration — research-grade doc; not account / spending /
named-design-review / readiness-signal gated.

Closes 8th-ferry candidate #1 of remaining 4 (after
TECH-RADAR batch closed #5 Otto-96). Remaining:
- #2 Semantic-canonicalization research doc (M; spine)
- #3 Provenance-aware bullshit-detector (M)
- #4 docs/EVIDENCE-AND-AGREEMENT.md future operational
  promotion (gated on 1-3)

Otto-97 tick primary deliverable.
AceHack added a commit that referenced this pull request Apr 24, 2026
…correction) (#332)

Completes the input pipeline for TemporalCoordinationDetection.
phaseLockingValue (PR #298): PLV expects phases in radians but
didn't prescribe how events become phases. This ship fills the
gap.

17th graduation under Otto-105 cadence. Addresses Amara 17th-ferry
Part 2 correction #5: 'Without phase construction, PLV is just a
word.'

Surface (2 pure functions):
- PhaseExtraction.epochPhase : double -> double[] -> double[]
  Periodic-epoch phase. φ(t) = 2π · (t mod period) / period.
  Suited to consensus-protocol events with fixed cadence (slot
  duration, heartbeat, epoch boundary).
- PhaseExtraction.interEventPhase : double[] -> double[] -> double[]
  Circular phase between consecutive events. For sample t in
  [t_k, t_{k+1}), phase = 2π · (t - t_k) / (t_{k+1} - t_k).
  Suited to irregular event-driven streams.

Both return double[] of phase values in [0, 2π) radians. Empty
output on degenerate inputs (no exception). eventTimes assumed
sorted ascending; samples outside the event range get 0 phase
(callers filter to interior if they care).

Hilbert-transform analytic-signal approach (Amara's Option B)
deferred — needs FFT support which Zeta doesn't currently ship.
Future graduation when signal-processing substrate lands.

Tests (12, all passing):
epochPhase:
- t=0 → phase 0
- t=period/2 → phase π
- wraps cleanly at period boundary
- handles negative sample times correctly
- returns empty on invalid period (≤0) or empty samples

interEventPhase:
- empty on <2 events or empty samples
- phase 0 at start of first interval
- phase π at midpoint
- adapts to varying interval lengths (O(log n) binary search
  for bracketing interval)
- returns 0 before first and after last event (edge cases)

Composition with phaseLockingValue:
- Two nodes with identical epochPhase period → PLV = 1
  (synchronized)
- Two nodes with same period but constant offset → PLV = 1
  (perfect phase locking at non-zero offset is still locking)

This composes the full firefly-synchronization detection
pipeline end-to-end for event-driven validator streams:
  validator event times → PhaseExtraction → phaseLockingValue
  → temporal-coordination-detection signal

5 of 8 Amara 17th-ferry corrections now shipped:
#1 λ₁(K₃)=2 ✓ already correct (PR #321)
#2 modularity relational ✓ already correct (PR #324)
#3 cohesion/exclusivity/conductance ✓ shipped (PR #331)
#4 windowed stake covariance ✓ shipped (PR #331)
#5 event-stream → phase pipeline ✓ THIS SHIP
Remaining: #4 robust-z-score composite variant (future);
#6 ADR phrasing (already correct); #7 KSK naming (BACKLOG
#318 awaiting Max coord); #8 SOTA humility (doc-phrasing
discipline).

Build: 0 Warning / 0 Error.

Provenance:
- Concept: Aaron firefly-synchronization design
- Formalization: Amara 17th-ferry correction #5 with 3-option
  menu (epoch / Hilbert / circular)
- Implementation: Otto (17th graduation; options A + C shipped,
  Hilbert deferred)

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>
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