From fd2125f69370f8ab9eba87cfe67ba234874adc2d Mon Sep 17 00:00:00 2001 From: Aaron Stainback Date: Tue, 21 Apr 2026 22:46:09 -0400 Subject: [PATCH 1/4] =?UTF-8?q?docs:=20land=20ISSUES-INDEX.md=20=E2=80=94?= =?UTF-8?q?=20git-native=20record=20of=20LFG=20issues=20#55-82=20for=20sou?= =?UTF-8?q?l-file=20independence?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Aaron 2026-04-21: *"oh yeah remember we are git native so still keep a record in the soul file for independence"* — after 28 BACKLOG rows translated to LFG GitHub issues (#55-#82) via parallel agent dispatch, the soul-file (git repo) must independently retain the record so the factory is reproducible without GitHub. Index maps each issue number to: - priority (P0/P1) - title - BACKLOG.md source section + line-range - GitHub URL (LFG remote) Authoritative content stays in docs/BACKLOG.md; GitHub issues are a dispatch surface, not the record of truth. If GitHub or the LFG org vanishes, a fork can reconstitute the tracker from this file + BACKLOG.md via the documented regeneration protocol. Composes with: - memory/user_git_repo_is_factory_soul_file_reproducibility_substrate_aaron_2026_04_21.md - memory/feedback_capture_everything_including_failure_aspirational_honesty.md - memory/feedback_witnessable_self_directed_evolution_factory_as_public_artifact.md Co-Authored-By: Claude Opus 4.7 --- docs/ISSUES-INDEX.md | 132 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 132 insertions(+) create mode 100644 docs/ISSUES-INDEX.md diff --git a/docs/ISSUES-INDEX.md b/docs/ISSUES-INDEX.md new file mode 100644 index 00000000..7b6411f5 --- /dev/null +++ b/docs/ISSUES-INDEX.md @@ -0,0 +1,132 @@ +# ISSUES-INDEX — git-native record of LFG issues + +**Purpose.** Soul-file independence. The factory is +reproducible from git alone per +`memory/user_git_repo_is_factory_soul_file_reproducibility_substrate_aaron_2026_04_21.md`. +If GitHub (or the `Lucent-Financial-Group/Zeta` +mirror) vanishes, a fork must be able to +reconstitute the issue tracker from this file + +`docs/BACKLOG.md`. Each row maps a GitHub issue to +its BACKLOG.md source so the authoritative content +stays in-tree. + +**Authoritative source.** `docs/BACKLOG.md`. GitHub +issues are a *dispatch surface* (human and agent +cohere-and-claim), not the record of truth. + +**Regeneration protocol.** To rebuild the issue +tracker on a fresh remote: + +1. Read this file for the index. +2. Read `docs/BACKLOG.md` at the cited line-range + for each row's content. +3. Recreate issues (`gh issue create --title ... + --body ...`) preserving priority label. +4. Update this file with the new issue numbers if + remote changes; keep the BACKLOG mapping intact. + +--- + +## Issues created 2026-04-21 (round-44-speculative) + +**Remote:** `Lucent-Financial-Group/Zeta` (LFG). + +**Batch provenance.** Translated from +`docs/BACKLOG.md` P0 + P1 sections via parallel +agent dispatch; 28 issues landed (#55-#82); three +pilot issues (#55-#57) followed by 25 batched +issues. + +**Labels used.** `P0`, `P1`, `security`, `ci-cd`, +`threat-model`, `factory-hygiene`, +`architecture`, plus GitHub defaults. + +### P0 issues + +| # | Title | BACKLOG section | Lines | +|---|---|---|---| +| [#55](https://github.com/Lucent-Financial-Group/Zeta/issues/55) | Nation-state + supply-chain threat-model rewrite | P0 — Threat-model elevation | L3382-L3428 | +| [#56](https://github.com/Lucent-Financial-Group/Zeta/issues/56) | `docs/security/CRYPTO.md` — justify CRC32C vs SHA-256 roadmap | P0 — security / SDL artifacts | L3501-L3524 | +| [#58](https://github.com/Lucent-Financial-Group/Zeta/issues/58) | OpenSpec backfill — per-round capability sweep through Round 46 | P0 — next round (committed) | L20-L69 | +| [#59](https://github.com/Lucent-Financial-Group/Zeta/issues/59) | circuit-recursion + operator-algebra — Viktor P0/P1 absorb (Round 44) | P0 — next round (committed) | L113-L174 | +| [#60](https://github.com/Lucent-Financial-Group/Zeta/issues/60) | Grandfather O-claims discharge — 35-claim inventory, one per round | P0 — next round (committed) | L262-L298 | +| [#61](https://github.com/Lucent-Financial-Group/Zeta/issues/61) | Fully-retractable CI/CD — parts (b)-(e) | P0 — next round (committed) | L300-L339 | +| [#62](https://github.com/Lucent-Financial-Group/Zeta/issues/62) | Memory folder restructure to `memory/role/persona/` | P0 — next round (committed) | L340-L364 | +| [#63](https://github.com/Lucent-Financial-Group/Zeta/issues/63) | Empty-folder allowlist — periodic fix-on-main review | P0 — next round (committed) | L376-L384 | +| [#64](https://github.com/Lucent-Financial-Group/Zeta/issues/64) | Witness-Durable Commit — full protocol implementation | P0 — next round (committed) | L412-L415 | +| [#65](https://github.com/Lucent-Financial-Group/Zeta/issues/65) | CI pipeline — audit `../scratch` for install-script patterns | P0 — CI / build-machine setup | L3429-L3481 | +| [#66](https://github.com/Lucent-Financial-Group/Zeta/issues/66) | CI pipeline — audit `../SQLSharp` workflows for workflow shape | P0 — CI / build-machine setup | L3429-L3485 | +| [#67](https://github.com/Lucent-Financial-Group/Zeta/issues/67) | CI pipeline — map Zeta gate inventory | P0 — CI / build-machine setup | L3486-L3491 | +| [#68](https://github.com/Lucent-Financial-Group/Zeta/issues/68) | CI pipeline — first workflow `build-and-test.yml` (Linux + macOS) | P0 — CI / build-machine setup | L3492-L3495 | +| [#69](https://github.com/Lucent-Financial-Group/Zeta/issues/69) | CI pipeline — subsequent workflows gated on per-design sign-off | P0 — CI / build-machine setup | L3496-L3497 | +| [#70](https://github.com/Lucent-Financial-Group/Zeta/issues/70) | pytm threat model — `docs/security/pytm/threatmodel.py` authoritative | P0 — security / SDL artifacts | L3522-L3523 | + +### P1 issues + +| # | Title | BACKLOG section | Lines | +|---|---|---|---| +| [#57](https://github.com/Lucent-Financial-Group/Zeta/issues/57) | Data/behaviour split hygiene rule for skills mixing routine with catalog data | P1 — architectural hygiene (FACTORY-HYGIENE row #51) | L4405-L4406 | +| [#71](https://github.com/Lucent-Financial-Group/Zeta/issues/71) | TLC-validation as `dotnet test` target for all `.tla` specs | P1 — architectural hygiene | L4375-L4377 | +| [#72](https://github.com/Lucent-Financial-Group/Zeta/issues/72) | Roslyn/F# analyzer banning blocking-wait patterns | P1 — architectural hygiene | L4378-L4381 | +| [#73](https://github.com/Lucent-Financial-Group/Zeta/issues/73) | Analyzer banning mutable public setters on Options/Plan/Descriptor types | P1 — architectural hygiene | L4382-L4385 | +| [#74](https://github.com/Lucent-Financial-Group/Zeta/issues/74) | `coverage:collect` and `coverage:merge` entry points with loud-failure | P1 — architectural hygiene | L4386-L4390 | +| [#75](https://github.com/Lucent-Financial-Group/Zeta/issues/75) | Deterministic-path helper for tests needing filesystem uniqueness | P1 — architectural hygiene | L4391-L4393 | +| [#76](https://github.com/Lucent-Financial-Group/Zeta/issues/76) | Typed optimistic-append outcomes on every `IAppendSink` | P1 — architectural hygiene | L4394-L4397 | +| [#77](https://github.com/Lucent-Financial-Group/Zeta/issues/77) | FASTER-style HybridLog region model for future persistent state tier | P1 — architectural hygiene | L4398-L4401 | +| [#78](https://github.com/Lucent-Financial-Group/Zeta/issues/78) | Copy-reduction on durable-commit path via batching/group-commit first | P1 — architectural hygiene | L4402-L4404 | +| [#79](https://github.com/Lucent-Financial-Group/Zeta/issues/79) | Retrospective split of 4 data-heavy expert skills (row #51 first fire) | P1 — architectural hygiene | L4406 | +| [#80](https://github.com/Lucent-Financial-Group/Zeta/issues/80) | `skill-creator` at-landing mix-signature checklist (prevention surface) | P1 — architectural hygiene | L4407 | +| [#81](https://github.com/Lucent-Financial-Group/Zeta/issues/81) | `skill-tune-up` criterion-8 mix-signature as 8th ranking criterion | P1 — architectural hygiene | L4408 | +| [#82](https://github.com/Lucent-Financial-Group/Zeta/issues/82) | Escalate-to-human-maintainer criteria-sweep (will-propagation gap) | P1 — architectural hygiene | L4409-L4425 | + +--- + +## Maintenance + +- **When a new issue lands on a tracked remote,** + append a row with BACKLOG source line-range. +- **When an issue closes,** do not delete the row — + add a close-date column entry (preserve the + chronology per `memory/feedback_witnessable_ + self_directed_evolution_factory_as_public_ + artifact.md`). +- **When BACKLOG rows shift lines** (BACKLOG is a + living doc), re-verify cited ranges on the next + round-close sweep; update in-place (no rewrite + of history). +- **When a new remote gets the translation,** add + a second issues-landed section under its own + heading; do not overwrite LFG mapping. + +## What this file is NOT + +- NOT the authoritative content of issues. That + lives in `docs/BACKLOG.md`. +- NOT a live sync of GitHub state. It records the + *creation* mapping; close-state and comments + stay on GitHub. +- NOT a replacement for `docs/BACKLOG.md`. Issues + are dispatch; BACKLOG is record. +- NOT scoped to LFG only. Additional remotes + (acehack/Zeta, future forks) get their own + sections when issues land there. +- NOT a commitment to keep GitHub issue tracker + authoritative. If the factory drops GitHub + entirely, this file preserves the decisions + taken during the GitHub-issue phase for + reconstruction. + +## Composition + +- `docs/BACKLOG.md` — authoritative source. +- `memory/user_git_repo_is_factory_soul_file_ + reproducibility_substrate_aaron_2026_04_21.md` + — soul-file discipline this index serves. +- `memory/feedback_capture_everything_including_ + failure_aspirational_honesty.md` — issue + mapping gets captured even if an issue is + later closed without landing. +- `memory/feedback_witnessable_self_directed_ + evolution_factory_as_public_artifact.md` — + chronology preservation; no retroactive + rewrites of the mapping. From 604785ec2542dfbcff3abde8c951f8bef4b45df4 Mon Sep 17 00:00:00 2001 From: Aaron Stainback Date: Tue, 21 Apr 2026 22:47:55 -0400 Subject: [PATCH 2/4] BACKLOG: meta-section pointer to ISSUES-INDEX.md (soul-file cross-reference) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cross-reference BACKLOG.md ↔ ISSUES-INDEX.md so a future contributor reading BACKLOG discovers the issue-tracker mapping without needing to know the file name already. Retractable-safe additive edit (one bullet in Meta section, no row content modified). Composes with the ISSUES-INDEX.md landing in d6ded51. Co-Authored-By: Claude Opus 4.7 --- docs/BACKLOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docs/BACKLOG.md b/docs/BACKLOG.md index c478f612..e494d57a 100644 --- a/docs/BACKLOG.md +++ b/docs/BACKLOG.md @@ -6085,3 +6085,9 @@ Aarav. - Every ✅ shipped item should cite a test or benchmark that proves it works - Every P0 item should have a `tests/*ClaimTests.fs` target when shipped - Every P2 research item should name its publication venue target +- Rows translated to a GitHub issue tracker are cross- + indexed in `docs/ISSUES-INDEX.md` (git-native record + for soul-file independence per Aaron 2026-04-21 "we + are git native so still keep a record in the soul + file for independence"). BACKLOG.md remains + authoritative; issue trackers are dispatch surfaces. From 0c9cca91e796c39877a833e05970f7df96ab5108 Mon Sep 17 00:00:00 2001 From: Aaron Stainback Date: Tue, 21 Apr 2026 22:53:24 -0400 Subject: [PATCH 3/4] =?UTF-8?q?human-backlog:=20HB-003=20=E2=80=94=20githu?= =?UTF-8?q?b-settings=20baseline=20drift=20decision=20needed?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Autonomous drift-check tick on LFG/Zeta surfaced a single-line bounded diff: `build-and-test (macos-14)` is in checked-in expected snapshot but absent from live branch-protection. Matches prior task #191 decision (macOS on AceHack fork, Linux on LFG). Agent declined to overwrite the baseline autonomously — shared-infra policy moves want explicit human sign-off so unrelated drift isn't silently ratified. Row files the decision for Aaron. Fighter-pilot discipline: tactical authority on retractable reads (run drift-check), chain-of-command preserved on policy writes (baseline update). Co-Authored-By: Claude Opus 4.7 --- docs/HUMAN-BACKLOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/HUMAN-BACKLOG.md b/docs/HUMAN-BACKLOG.md index b6afc254..548ae7df 100644 --- a/docs/HUMAN-BACKLOG.md +++ b/docs/HUMAN-BACKLOG.md @@ -233,6 +233,10 @@ are ordered by `State: Open` first, then `Stale`, then |---|---|---|---|---|---|---| | HB-001 | 2026-04-21 | decision / org-migration | Plan + execute the migration of `AceHack/Zeta` → `Lucent-Financial-Group/Zeta` (the human maintainer's LFG umbrella org). Drivers: (a) GitHub gates merge queue and other org-level features to organization-owned repos — user-owned repos cannot enable merge queue on any plan tier, which is the real blocker behind the `422 Invalid rule 'merge_queue':` failure against `POST /repos/AceHack/Zeta/rulesets` (see §10.3 of `docs/research/parallel-worktree-safety-2026-04-22.md`); (b) aligns the repo with Aaron's stated destination for external contributors. **Constraints (Aaron 2026-04-21):** (1) **preserve all current settings** — rulesets, required checks (gate + CodeQL + semgrep), branch-protection behaviours, auto-delete-head-branch, auto-merge, Dependabot, CodeScanning, Copilot Code Review, concurrency groups, workflow triggers incl. `merge_group:`; (2) **public from the start** at the new location — no private-during-transition staging period. No deadline — "at some point". Until transferred, the factory accepts the rebase-tax on serial PRs and relies on `gh pr merge --auto --squash` alone (merge queue off). | `docs/research/parallel-worktree-safety-2026-04-22.md` §10.3; session transcript 2026-04-21 (Aaron: "we can move tih to https://github.com/Lucent-Financial-Group at some point it's my org for LFG" + "we need to move it to lucent for contributor at some point anyways, we want to keep all the settings we have now" + "i think we are going to have to go without merge queue parallelism for now" + "we can just make it public from the start") | Resolved | Executed 2026-04-21 via `POST /repos/AceHack/Zeta/transfer` with `new_owner=Lucent-Financial-Group`. Transfer completed instantly (Aaron admin on both sides). Verification diffed 13 settings groups against pre-transfer scorecard: all preserved **except** `secret_scanning` and `secret_scanning_push_protection` both silently flipped `enabled→disabled` by GitHub's org-transfer code path; re-enabled same session via `PATCH /repos/Lucent-Financial-Group/Zeta` with `security_and_analysis`. Ruleset id 15256879 "Default" preserved byte-identical (6 rules); classic branch protection on main preserved (6 required contexts); Actions variables preserved (2 COPILOT_AGENT_FIREWALL_*); environments + Pages config preserved (Pages URL redirected `acehack.github.io/Zeta` → `lucent-financial-group.github.io/Zeta`). Local `git remote` updated. Declarative settings file landed at `docs/GITHUB-SETTINGS.md` per Aaron's companion directive ("its nice having the expected settings declarative defined" + "i hate things in GitHub where I can't check in the declarative settgins"). Merge queue enable remains a separate opt-in step. | +| HB-002 | 2026-04-22 | decision / backlog-restructure | Answer the four open questions in `docs/DECISIONS/2026-04-22-backlog-per-row-file-restructure.md` so the migration can be scheduled. **(1) ID scheme** — numeric (`0042`), slug (`hot-file-path-detector`), or UUID? Numeric is sort-friendly and stable; slug is human-readable but prone to rename churn; UUID is churn-proof but unreadable. **(2) Script home** — `tools/backlog/` (new dir) or inline in an existing tool? Matters for discoverability and for the declarative-deps boundary. **(3) Sort order** — by creation date, last-updated, or priority-then-date? Drives the index file's canonical ordering and agent workflow when scanning the backlog. **(4) Concurrent-migration trade** — one mechanical PR that moves all 300+ rows at once (massive diff but atomic), or staged migration by tier (smaller diffs but longer window where both formats coexist)? Answers unblock the migration PR which is P0 post-R45. | `docs/DECISIONS/2026-04-22-backlog-per-row-file-restructure.md`; landed 2026-04-22 on AceHack/Zeta as **Proposed** via AceHack PR #4 (batch 5 of 6 speculative drain) | Open | | + +| HB-003 | 2026-04-21 | decision / hygiene-baseline | Decide disposition on the `tools/hygiene/github-settings.expected.json` drift flagged by `check-github-settings-drift.sh` against `Lucent-Financial-Group/Zeta`. Single-line bounded diff: required-status-check `build-and-test (macos-14)` is present in the checked-in expected snapshot but absent from live LFG branch-protection. This matches the prior decision from task #191 (Round 44 completed) to split the build matrix — macOS on AceHack fork (cost-opt), Linux on LFG. Two clean resolutions: (a) **run `tools/hygiene/snapshot-github-settings.sh --repo Lucent-Financial-Group/Zeta > tools/hygiene/github-settings.expected.json`** and commit with a policy-change explanation (agent-authored commit declined on autonomous-tick per shared-infra-policy discipline — baseline updates want explicit human sign-off so unrelated drift isn't silently ratified); or (b) restore `build-and-test (macos-14)` as an LFG required check and revert the split decision. No deadline — drift-check CI runs weekly, will continue flagging until resolved. An agent ran the drift-check autonomously 2026-04-21 as a retractable-safe read-only hygiene pass; the finding itself is retractable-safe, the baseline-overwrite is not. | `tools/hygiene/github-settings.expected.json` L134 checked-in vs live LFG; `tools/hygiene/check-github-settings-drift.sh` output 2026-04-21; task #191 completion record in in-flight Round 44 notes | Open | | + ### For: `any` (any human contributor) | ID | When | Category | Ask | Source | State | Resolution | From 5a797048c00b818cb4e29575938d23a808dc7fb5 Mon Sep 17 00:00:00 2001 From: Aaron Stainback Date: Tue, 21 Apr 2026 23:18:11 -0400 Subject: [PATCH 4/4] =?UTF-8?q?pr-83:=20address=20Copilot=20review=20?= =?UTF-8?q?=E2=80=94=20section-anchor=20rewrite=20+=20source-cell=20fixes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ISSUES-INDEX.md (P0 + three P1 Copilot comments): - Replace brittle line-range anchors with section-header + bullet-keyword anchors. Line numbers drift on every BACKLOG edit; section titles and bold-title keywords survive. All 28 row anchors verified to resolve to their sections on this PR branch. - Drop auto-memory cross-references (files under `memory/*` that live outside the git tree and therefore violate the "standalone reconstruction from this repo" soul-file discipline the doc is defending). - Replace contributor-name prose filename reference with role-neutral language per `docs/AGENT-BEST-PRACTICES.md` L284-L290 (names confined to `memory/persona//` and optionally `docs/BACKLOG.md`). - Add a Source-availability note for six rows whose source bullets are expected to land via Batch 6 of the speculative drain (#57, #60, #63, #79, #80, #81); mark them `source pending Batch 6 drain` so re-verification after the drain is explicit. - Expand the What-this-file-is-NOT and Composition sections to cite in-tree authoritative sources (BACKLOG.md, GOVERNANCE.md §2/§24, HUMAN-BACKLOG.md) instead of auto-memory paths. HUMAN-BACKLOG.md (two Copilot comments): - HB-002: decisions file path was cited as if present, but the ADR was drafted on the speculative fork branch and lands on LFG only via Batch 6. Rephrase the Source cell to describe current location + expected on-LFG path, so the citation stays valid before and after the drain. - HB-003: replace the "in-flight Round 44 notes" pointer (no in-repo path) with the concrete commit `77c2450` (`gate.yml: split macOS leg to forks only; drop (macos-14) from LFG required checks`) which implemented the matrix split that produced this drift. Co-Authored-By: Claude Opus 4.7 --- docs/HUMAN-BACKLOG.md | 4 +- docs/ISSUES-INDEX.md | 189 +++++++++++++++++++++++++----------------- 2 files changed, 116 insertions(+), 77 deletions(-) diff --git a/docs/HUMAN-BACKLOG.md b/docs/HUMAN-BACKLOG.md index 548ae7df..cf8d6d8c 100644 --- a/docs/HUMAN-BACKLOG.md +++ b/docs/HUMAN-BACKLOG.md @@ -233,9 +233,9 @@ are ordered by `State: Open` first, then `Stale`, then |---|---|---|---|---|---|---| | HB-001 | 2026-04-21 | decision / org-migration | Plan + execute the migration of `AceHack/Zeta` → `Lucent-Financial-Group/Zeta` (the human maintainer's LFG umbrella org). Drivers: (a) GitHub gates merge queue and other org-level features to organization-owned repos — user-owned repos cannot enable merge queue on any plan tier, which is the real blocker behind the `422 Invalid rule 'merge_queue':` failure against `POST /repos/AceHack/Zeta/rulesets` (see §10.3 of `docs/research/parallel-worktree-safety-2026-04-22.md`); (b) aligns the repo with Aaron's stated destination for external contributors. **Constraints (Aaron 2026-04-21):** (1) **preserve all current settings** — rulesets, required checks (gate + CodeQL + semgrep), branch-protection behaviours, auto-delete-head-branch, auto-merge, Dependabot, CodeScanning, Copilot Code Review, concurrency groups, workflow triggers incl. `merge_group:`; (2) **public from the start** at the new location — no private-during-transition staging period. No deadline — "at some point". Until transferred, the factory accepts the rebase-tax on serial PRs and relies on `gh pr merge --auto --squash` alone (merge queue off). | `docs/research/parallel-worktree-safety-2026-04-22.md` §10.3; session transcript 2026-04-21 (Aaron: "we can move tih to https://github.com/Lucent-Financial-Group at some point it's my org for LFG" + "we need to move it to lucent for contributor at some point anyways, we want to keep all the settings we have now" + "i think we are going to have to go without merge queue parallelism for now" + "we can just make it public from the start") | Resolved | Executed 2026-04-21 via `POST /repos/AceHack/Zeta/transfer` with `new_owner=Lucent-Financial-Group`. Transfer completed instantly (Aaron admin on both sides). Verification diffed 13 settings groups against pre-transfer scorecard: all preserved **except** `secret_scanning` and `secret_scanning_push_protection` both silently flipped `enabled→disabled` by GitHub's org-transfer code path; re-enabled same session via `PATCH /repos/Lucent-Financial-Group/Zeta` with `security_and_analysis`. Ruleset id 15256879 "Default" preserved byte-identical (6 rules); classic branch protection on main preserved (6 required contexts); Actions variables preserved (2 COPILOT_AGENT_FIREWALL_*); environments + Pages config preserved (Pages URL redirected `acehack.github.io/Zeta` → `lucent-financial-group.github.io/Zeta`). Local `git remote` updated. Declarative settings file landed at `docs/GITHUB-SETTINGS.md` per Aaron's companion directive ("its nice having the expected settings declarative defined" + "i hate things in GitHub where I can't check in the declarative settgins"). Merge queue enable remains a separate opt-in step. | -| HB-002 | 2026-04-22 | decision / backlog-restructure | Answer the four open questions in `docs/DECISIONS/2026-04-22-backlog-per-row-file-restructure.md` so the migration can be scheduled. **(1) ID scheme** — numeric (`0042`), slug (`hot-file-path-detector`), or UUID? Numeric is sort-friendly and stable; slug is human-readable but prone to rename churn; UUID is churn-proof but unreadable. **(2) Script home** — `tools/backlog/` (new dir) or inline in an existing tool? Matters for discoverability and for the declarative-deps boundary. **(3) Sort order** — by creation date, last-updated, or priority-then-date? Drives the index file's canonical ordering and agent workflow when scanning the backlog. **(4) Concurrent-migration trade** — one mechanical PR that moves all 300+ rows at once (massive diff but atomic), or staged migration by tier (smaller diffs but longer window where both formats coexist)? Answers unblock the migration PR which is P0 post-R45. | `docs/DECISIONS/2026-04-22-backlog-per-row-file-restructure.md`; landed 2026-04-22 on AceHack/Zeta as **Proposed** via AceHack PR #4 (batch 5 of 6 speculative drain) | Open | | +| HB-002 | 2026-04-22 | decision / backlog-restructure | Answer the four open questions in the backlog-per-row-file-restructure ADR so the migration can be scheduled. **(1) ID scheme** — numeric (`0042`), slug (`hot-file-path-detector`), or UUID? Numeric is sort-friendly and stable; slug is human-readable but prone to rename churn; UUID is churn-proof but unreadable. **(2) Script home** — `tools/backlog/` (new dir) or inline in an existing tool? Matters for discoverability and for the declarative-deps boundary. **(3) Sort order** — by creation date, last-updated, or priority-then-date? Drives the index file's canonical ordering and agent workflow when scanning the backlog. **(4) Concurrent-migration trade** — one mechanical PR that moves all 300+ rows at once (massive diff but atomic), or staged migration by tier (smaller diffs but longer window where both formats coexist)? Answers unblock the migration PR which is P0 post-R45. | ADR drafted 2026-04-22 on the speculative fork branch as **Proposed** (fork PR #4, batch 5 of 6 speculative drain); slated to land on LFG main via Batch 6 of the speculative drain (Task #198 in the round tracker). On-LFG path after drain: `docs/DECISIONS/2026-04-22-backlog-per-row-file-restructure.md`. | Open | | -| HB-003 | 2026-04-21 | decision / hygiene-baseline | Decide disposition on the `tools/hygiene/github-settings.expected.json` drift flagged by `check-github-settings-drift.sh` against `Lucent-Financial-Group/Zeta`. Single-line bounded diff: required-status-check `build-and-test (macos-14)` is present in the checked-in expected snapshot but absent from live LFG branch-protection. This matches the prior decision from task #191 (Round 44 completed) to split the build matrix — macOS on AceHack fork (cost-opt), Linux on LFG. Two clean resolutions: (a) **run `tools/hygiene/snapshot-github-settings.sh --repo Lucent-Financial-Group/Zeta > tools/hygiene/github-settings.expected.json`** and commit with a policy-change explanation (agent-authored commit declined on autonomous-tick per shared-infra-policy discipline — baseline updates want explicit human sign-off so unrelated drift isn't silently ratified); or (b) restore `build-and-test (macos-14)` as an LFG required check and revert the split decision. No deadline — drift-check CI runs weekly, will continue flagging until resolved. An agent ran the drift-check autonomously 2026-04-21 as a retractable-safe read-only hygiene pass; the finding itself is retractable-safe, the baseline-overwrite is not. | `tools/hygiene/github-settings.expected.json` L134 checked-in vs live LFG; `tools/hygiene/check-github-settings-drift.sh` output 2026-04-21; task #191 completion record in in-flight Round 44 notes | Open | | +| HB-003 | 2026-04-21 | decision / hygiene-baseline | Decide disposition on the `tools/hygiene/github-settings.expected.json` drift flagged by `check-github-settings-drift.sh` against `Lucent-Financial-Group/Zeta`. Single-line bounded diff: required-status-check `build-and-test (macos-14)` is present in the checked-in expected snapshot but absent from live LFG branch-protection. This matches the prior decision from task #191 (Round 44 completed) to split the build matrix — macOS on AceHack fork (cost-opt), Linux on LFG. Two clean resolutions: (a) **run `tools/hygiene/snapshot-github-settings.sh --repo Lucent-Financial-Group/Zeta > tools/hygiene/github-settings.expected.json`** and commit with a policy-change explanation (agent-authored commit declined on autonomous-tick per shared-infra-policy discipline — baseline updates want explicit human sign-off so unrelated drift isn't silently ratified); or (b) restore `build-and-test (macos-14)` as an LFG required check and revert the split decision. No deadline — drift-check CI runs weekly, will continue flagging until resolved. An agent ran the drift-check autonomously 2026-04-21 as a retractable-safe read-only hygiene pass; the finding itself is retractable-safe, the baseline-overwrite is not. | `tools/hygiene/github-settings.expected.json` L134 checked-in vs live LFG; `tools/hygiene/check-github-settings-drift.sh` output 2026-04-21; matrix-split decision recorded in commit `77c2450` (`gate.yml: split macOS leg to forks only; drop (macos-14) from LFG required checks`), which implemented the Round-44 task that produced this drift | Open | | ### For: `any` (any human contributor) diff --git a/docs/ISSUES-INDEX.md b/docs/ISSUES-INDEX.md index 7b6411f5..c1351402 100644 --- a/docs/ISSUES-INDEX.md +++ b/docs/ISSUES-INDEX.md @@ -1,29 +1,51 @@ # ISSUES-INDEX — git-native record of LFG issues -**Purpose.** Soul-file independence. The factory is -reproducible from git alone per -`memory/user_git_repo_is_factory_soul_file_reproducibility_substrate_aaron_2026_04_21.md`. -If GitHub (or the `Lucent-Financial-Group/Zeta` -mirror) vanishes, a fork must be able to -reconstitute the issue tracker from this file + -`docs/BACKLOG.md`. Each row maps a GitHub issue to -its BACKLOG.md source so the authoritative content -stays in-tree. - -**Authoritative source.** `docs/BACKLOG.md`. GitHub -issues are a *dispatch surface* (human and agent -cohere-and-claim), not the record of truth. - -**Regeneration protocol.** To rebuild the issue -tracker on a fresh remote: +**Purpose.** Git-repo independence for the issue +tracker. If GitHub (or the +`Lucent-Financial-Group/Zeta` mirror) vanishes, a +fork must be able to reconstitute the issue +tracker from this file + `docs/BACKLOG.md` alone. +Each row maps a GitHub issue to its BACKLOG.md +source by **section header + bullet keyword** so +the authoritative content stays in-tree and the +mapping stays stable as BACKLOG.md evolves. + +**Authoritative source.** `docs/BACKLOG.md`. +GitHub issues are a *dispatch surface* (human and +agent cohere-and-claim), not the record of truth. + +**Why section + keyword instead of line numbers.** +BACKLOG.md is a living document; line numbers +drift on every edit. A `## P0 — Threat-model +elevation` section header and a +`**Nation-state + supply-chain threat-model +rewrite**` bullet keyword survive arbitrary churn +below and around them. Reconstruction tooling +greps the section, then greps the bullet keyword. + +## Regeneration protocol + +To rebuild the issue tracker on a fresh remote: 1. Read this file for the index. -2. Read `docs/BACKLOG.md` at the cited line-range - for each row's content. -3. Recreate issues (`gh issue create --title ... - --body ...`) preserving priority label. -4. Update this file with the new issue numbers if - remote changes; keep the BACKLOG mapping intact. +2. For each row, open `docs/BACKLOG.md`, locate + the cited **section header**, then locate the + bullet whose bold-title prefix matches the + **keyword**. +3. Copy the bullet body as the issue body. +4. Recreate the issue + (`gh issue create --title ... --body ...`) + preserving the priority label from the row. +5. Update this file with the new issue numbers + if the remote changes; keep the + section+keyword mapping intact. + +**Verification after edits.** Reconstruction- +tooling MUST verify each section + keyword +actually resolves to exactly one bullet before +the row is considered valid. A missing section or +a keyword that matches zero / multiple bullets is +a repair-needed signal; flag, don't guess. --- @@ -41,62 +63,77 @@ issues. `threat-model`, `factory-hygiene`, `architecture`, plus GitHub defaults. +**Source-availability note.** Six rows +(#57, #60, #63, #79, #80, #81) cite BACKLOG +sections whose specific bullets are expected to +land on main during the speculative-branch drain +(Batch 6 / Task #198 in the round tracker). On +this PR branch they are marked `source pending +Batch 6 drain`; the section is authoritative and +the keyword will resolve once the drain lands. +Re-verify after Batch 6. + ### P0 issues -| # | Title | BACKLOG section | Lines | +| # | Title | BACKLOG section | Bullet keyword | |---|---|---|---| -| [#55](https://github.com/Lucent-Financial-Group/Zeta/issues/55) | Nation-state + supply-chain threat-model rewrite | P0 — Threat-model elevation | L3382-L3428 | -| [#56](https://github.com/Lucent-Financial-Group/Zeta/issues/56) | `docs/security/CRYPTO.md` — justify CRC32C vs SHA-256 roadmap | P0 — security / SDL artifacts | L3501-L3524 | -| [#58](https://github.com/Lucent-Financial-Group/Zeta/issues/58) | OpenSpec backfill — per-round capability sweep through Round 46 | P0 — next round (committed) | L20-L69 | -| [#59](https://github.com/Lucent-Financial-Group/Zeta/issues/59) | circuit-recursion + operator-algebra — Viktor P0/P1 absorb (Round 44) | P0 — next round (committed) | L113-L174 | -| [#60](https://github.com/Lucent-Financial-Group/Zeta/issues/60) | Grandfather O-claims discharge — 35-claim inventory, one per round | P0 — next round (committed) | L262-L298 | -| [#61](https://github.com/Lucent-Financial-Group/Zeta/issues/61) | Fully-retractable CI/CD — parts (b)-(e) | P0 — next round (committed) | L300-L339 | -| [#62](https://github.com/Lucent-Financial-Group/Zeta/issues/62) | Memory folder restructure to `memory/role/persona/` | P0 — next round (committed) | L340-L364 | -| [#63](https://github.com/Lucent-Financial-Group/Zeta/issues/63) | Empty-folder allowlist — periodic fix-on-main review | P0 — next round (committed) | L376-L384 | -| [#64](https://github.com/Lucent-Financial-Group/Zeta/issues/64) | Witness-Durable Commit — full protocol implementation | P0 — next round (committed) | L412-L415 | -| [#65](https://github.com/Lucent-Financial-Group/Zeta/issues/65) | CI pipeline — audit `../scratch` for install-script patterns | P0 — CI / build-machine setup | L3429-L3481 | -| [#66](https://github.com/Lucent-Financial-Group/Zeta/issues/66) | CI pipeline — audit `../SQLSharp` workflows for workflow shape | P0 — CI / build-machine setup | L3429-L3485 | -| [#67](https://github.com/Lucent-Financial-Group/Zeta/issues/67) | CI pipeline — map Zeta gate inventory | P0 — CI / build-machine setup | L3486-L3491 | -| [#68](https://github.com/Lucent-Financial-Group/Zeta/issues/68) | CI pipeline — first workflow `build-and-test.yml` (Linux + macOS) | P0 — CI / build-machine setup | L3492-L3495 | -| [#69](https://github.com/Lucent-Financial-Group/Zeta/issues/69) | CI pipeline — subsequent workflows gated on per-design sign-off | P0 — CI / build-machine setup | L3496-L3497 | -| [#70](https://github.com/Lucent-Financial-Group/Zeta/issues/70) | pytm threat model — `docs/security/pytm/threatmodel.py` authoritative | P0 — security / SDL artifacts | L3522-L3523 | +| [#55](https://github.com/Lucent-Financial-Group/Zeta/issues/55) | Nation-state + supply-chain threat-model rewrite | `## P0 — Threat-model elevation (round-30 anchor)` | `**Nation-state + supply-chain threat-model rewrite.**` | +| [#56](https://github.com/Lucent-Financial-Group/Zeta/issues/56) | `docs/security/CRYPTO.md` — justify CRC32C vs SHA-256 roadmap | `## P0 — security / SDL artifacts` | ``**`docs/security/CRYPTO.md`**`` | +| [#58](https://github.com/Lucent-Financial-Group/Zeta/issues/58) | OpenSpec backfill — per-round capability sweep through Round 46 | `## P0 — next round (committed)` | `**OpenSpec coverage backfill — delete-all-code recovery gap**` | +| [#59](https://github.com/Lucent-Financial-Group/Zeta/issues/59) | circuit-recursion + operator-algebra — Viktor P0/P1 absorb (Round 44) | `## P0 — next round (committed)` | `**circuit-recursion + operator-algebra: Viktor P0/P1 findings from Round-43-ship adversarial audit (Round 44 absorb)**` | +| [#60](https://github.com/Lucent-Financial-Group/Zeta/issues/60) | Grandfather O-claims discharge — 35-claim inventory, one per round | `## P0 — next round (committed)` | ``**Grandfather `O(·)` claims discharge — one per round**`` | +| [#61](https://github.com/Lucent-Financial-Group/Zeta/issues/61) | Fully-retractable CI/CD — parts (b)-(e) | `## P0 — next round (committed)` | `**Fully-retractable CI/CD**` | +| [#62](https://github.com/Lucent-Financial-Group/Zeta/issues/62) | Memory folder restructure to `memory/role/persona/` | `## P0 — next round (committed)` | ``**Memory folder restructure: `memory/role/persona/`**`` | +| [#63](https://github.com/Lucent-Financial-Group/Zeta/issues/63) | Empty-folder allowlist — periodic fix-on-main review | `## P0 — next round (committed)` | `**Empty-folder fix-on-main sweep**` | +| [#64](https://github.com/Lucent-Financial-Group/Zeta/issues/64) | Witness-Durable Commit — full protocol implementation | `## P0 — next round (committed)` | `**Witness-Durable Commit mode**` | +| [#65](https://github.com/Lucent-Financial-Group/Zeta/issues/65) | CI pipeline — audit `../scratch` for install-script patterns | `## P0 — CI / build-machine setup (round-29 anchor)` | `**First-class CI pipeline for Zeta.**` sub-task 1 (`Audit ../scratch for install-script patterns`) | +| [#66](https://github.com/Lucent-Financial-Group/Zeta/issues/66) | CI pipeline — audit `../SQLSharp` workflows for workflow shape | `## P0 — CI / build-machine setup (round-29 anchor)` | `**First-class CI pipeline for Zeta.**` sub-task 2 (`Audit ../SQLSharp .github/workflows/ for workflow shape`) | +| [#67](https://github.com/Lucent-Financial-Group/Zeta/issues/67) | CI pipeline — map Zeta gate inventory | `## P0 — CI / build-machine setup (round-29 anchor)` | `**First-class CI pipeline for Zeta.**` sub-task 3 (`Map Zeta's actual gate list`) | +| [#68](https://github.com/Lucent-Financial-Group/Zeta/issues/68) | CI pipeline — first workflow `build-and-test.yml` (Linux + macOS) | `## P0 — CI / build-machine setup (round-29 anchor)` | `**First-class CI pipeline for Zeta.**` sub-task 4 (`First workflow: build-and-test.yml`) | +| [#69](https://github.com/Lucent-Financial-Group/Zeta/issues/69) | CI pipeline — subsequent workflows gated on per-design sign-off | `## P0 — CI / build-machine setup (round-29 anchor)` | `**First-class CI pipeline for Zeta.**` sub-task 5 (`Subsequent workflows added one at a time`) | +| [#70](https://github.com/Lucent-Financial-Group/Zeta/issues/70) | pytm threat model — `docs/security/pytm/threatmodel.py` authoritative | `## P0 — security / SDL artifacts` | `**pytm threat model**` | ### P1 issues -| # | Title | BACKLOG section | Lines | +| # | Title | BACKLOG section | Bullet keyword | |---|---|---|---| -| [#57](https://github.com/Lucent-Financial-Group/Zeta/issues/57) | Data/behaviour split hygiene rule for skills mixing routine with catalog data | P1 — architectural hygiene (FACTORY-HYGIENE row #51) | L4405-L4406 | -| [#71](https://github.com/Lucent-Financial-Group/Zeta/issues/71) | TLC-validation as `dotnet test` target for all `.tla` specs | P1 — architectural hygiene | L4375-L4377 | -| [#72](https://github.com/Lucent-Financial-Group/Zeta/issues/72) | Roslyn/F# analyzer banning blocking-wait patterns | P1 — architectural hygiene | L4378-L4381 | -| [#73](https://github.com/Lucent-Financial-Group/Zeta/issues/73) | Analyzer banning mutable public setters on Options/Plan/Descriptor types | P1 — architectural hygiene | L4382-L4385 | -| [#74](https://github.com/Lucent-Financial-Group/Zeta/issues/74) | `coverage:collect` and `coverage:merge` entry points with loud-failure | P1 — architectural hygiene | L4386-L4390 | -| [#75](https://github.com/Lucent-Financial-Group/Zeta/issues/75) | Deterministic-path helper for tests needing filesystem uniqueness | P1 — architectural hygiene | L4391-L4393 | -| [#76](https://github.com/Lucent-Financial-Group/Zeta/issues/76) | Typed optimistic-append outcomes on every `IAppendSink` | P1 — architectural hygiene | L4394-L4397 | -| [#77](https://github.com/Lucent-Financial-Group/Zeta/issues/77) | FASTER-style HybridLog region model for future persistent state tier | P1 — architectural hygiene | L4398-L4401 | -| [#78](https://github.com/Lucent-Financial-Group/Zeta/issues/78) | Copy-reduction on durable-commit path via batching/group-commit first | P1 — architectural hygiene | L4402-L4404 | -| [#79](https://github.com/Lucent-Financial-Group/Zeta/issues/79) | Retrospective split of 4 data-heavy expert skills (row #51 first fire) | P1 — architectural hygiene | L4406 | -| [#80](https://github.com/Lucent-Financial-Group/Zeta/issues/80) | `skill-creator` at-landing mix-signature checklist (prevention surface) | P1 — architectural hygiene | L4407 | -| [#81](https://github.com/Lucent-Financial-Group/Zeta/issues/81) | `skill-tune-up` criterion-8 mix-signature as 8th ranking criterion | P1 — architectural hygiene | L4408 | -| [#82](https://github.com/Lucent-Financial-Group/Zeta/issues/82) | Escalate-to-human-maintainer criteria-sweep (will-propagation gap) | P1 — architectural hygiene | L4409-L4425 | +| [#57](https://github.com/Lucent-Financial-Group/Zeta/issues/57) | Data/behaviour split hygiene rule for skills mixing routine with catalog data | `## P1 — architectural hygiene` | `FACTORY-HYGIENE row #51` (source pending Batch 6 drain) | +| [#71](https://github.com/Lucent-Financial-Group/Zeta/issues/71) | TLC-validation as `dotnet test` target for all `.tla` specs | `## P1 — architectural hygiene` | ``**TLC-validation as a `dotnet test` target.**`` | +| [#72](https://github.com/Lucent-Financial-Group/Zeta/issues/72) | Roslyn/F# analyzer banning blocking-wait patterns | `## P1 — architectural hygiene` | `**Roslyn / F# analyzer for blocking-wait patterns.**` | +| [#73](https://github.com/Lucent-Financial-Group/Zeta/issues/73) | Analyzer banning mutable public setters on Options/Plan/Descriptor types | `## P1 — architectural hygiene` | `**F#/Roslyn analyzer for mutable public setters on options/ config/plan shapes.**` | +| [#74](https://github.com/Lucent-Financial-Group/Zeta/issues/74) | `coverage:collect` and `coverage:merge` entry points with loud-failure | `## P1 — architectural hygiene` | ``**`coverage:collect` + `coverage:merge` entry points.**`` | +| [#75](https://github.com/Lucent-Financial-Group/Zeta/issues/75) | Deterministic-path helper for tests needing filesystem uniqueness | `## P1 — architectural hygiene` | `**Deterministic-path helper for tests needing filesystem uniqueness.**` | +| [#76](https://github.com/Lucent-Financial-Group/Zeta/issues/76) | Typed optimistic-append outcomes on every `IAppendSink` | `## P1 — architectural hygiene` | ``**Typed optimistic-append outcomes on every `IAppendSink`.**`` | +| [#77](https://github.com/Lucent-Financial-Group/Zeta/issues/77) | FASTER-style HybridLog region model for future persistent state tier | `## P1 — architectural hygiene` | `**FASTER-style HybridLog region model for any future persistent state tier.**` | +| [#78](https://github.com/Lucent-Financial-Group/Zeta/issues/78) | Copy-reduction on durable-commit path via batching/group-commit first | `## P1 — architectural hygiene` | `**Copy-reduction on the durable-commit path.**` | +| [#79](https://github.com/Lucent-Financial-Group/Zeta/issues/79) | Retrospective split of 4 data-heavy expert skills (row #51 first fire) | `## P1 — architectural hygiene` | `Retrospective split — 4 data-heavy expert skills` (source pending Batch 6 drain) | +| [#80](https://github.com/Lucent-Financial-Group/Zeta/issues/80) | `skill-creator` at-landing mix-signature checklist (prevention surface) | `## P1 — architectural hygiene` | `skill-creator at-landing mix-signature checklist` (source pending Batch 6 drain) | +| [#81](https://github.com/Lucent-Financial-Group/Zeta/issues/81) | `skill-tune-up` criterion-8 mix-signature as 8th ranking criterion | `## P1 — architectural hygiene` | `skill-tune-up criterion-8 mix-signature` (source pending Batch 6 drain) | +| [#82](https://github.com/Lucent-Financial-Group/Zeta/issues/82) | Escalate-to-human-maintainer criteria-sweep (will-propagation gap) | `## P1 — architectural hygiene` | `**"Escalate to human maintainer" criteria-sweep.**` | --- ## Maintenance - **When a new issue lands on a tracked remote,** - append a row with BACKLOG source line-range. + append a row with BACKLOG section + keyword. - **When an issue closes,** do not delete the row — add a close-date column entry (preserve the - chronology per `memory/feedback_witnessable_ - self_directed_evolution_factory_as_public_ - artifact.md`). -- **When BACKLOG rows shift lines** (BACKLOG is a - living doc), re-verify cited ranges on the next - round-close sweep; update in-place (no rewrite - of history). + chronology; destructive edits erase the record + of when decisions happened). +- **When BACKLOG rows are edited in place,** the + section + keyword mapping is expected to survive. + If a bullet is renamed (keyword changes), update + the row. If a bullet is split, update the row to + point at both survivors (or to the larger of the + two, with a note). - **When a new remote gets the translation,** add a second issues-landed section under its own heading; do not overwrite LFG mapping. +- **When a row flagged `source pending + drain` unblocks,** remove the pending note and + verify the keyword resolves to exactly one + bullet on the current branch. ## What this file is NOT @@ -107,26 +144,28 @@ issues. stay on GitHub. - NOT a replacement for `docs/BACKLOG.md`. Issues are dispatch; BACKLOG is record. -- NOT scoped to LFG only. Additional remotes - (acehack/Zeta, future forks) get their own - sections when issues land there. +- NOT scoped to LFG only. Additional remotes get + their own sections when issues land there. - NOT a commitment to keep GitHub issue tracker authoritative. If the factory drops GitHub entirely, this file preserves the decisions taken during the GitHub-issue phase for reconstruction. +- NOT tied to specific line numbers. Section + + keyword anchoring was chosen deliberately so + BACKLOG can churn underneath without + invalidating this index. ## Composition -- `docs/BACKLOG.md` — authoritative source. -- `memory/user_git_repo_is_factory_soul_file_ - reproducibility_substrate_aaron_2026_04_21.md` - — soul-file discipline this index serves. -- `memory/feedback_capture_everything_including_ - failure_aspirational_honesty.md` — issue - mapping gets captured even if an issue is - later closed without landing. -- `memory/feedback_witnessable_self_directed_ - evolution_factory_as_public_artifact.md` — - chronology preservation; no retroactive - rewrites of the mapping. +- `docs/BACKLOG.md` — authoritative source the + section + keyword pairs resolve against. +- `GOVERNANCE.md` §2 (docs read as current state, + not history) — why the mapping uses durable + anchors rather than byte offsets. +- `GOVERNANCE.md` §24 (one install script + consumed three ways) — record-discipline + companion: authoritative-in-tree, dispatch-out. +- `docs/HUMAN-BACKLOG.md` — parallel register for + issues that require the human maintainer's + disposition rather than agent-actionable work.