diff --git a/docs/pr-discussions/PR-5226-fix-b-0818-iso-build-audit-glob-accepts-nixpkgs-25-11-defaul.md b/docs/pr-discussions/PR-5226-fix-b-0818-iso-build-audit-glob-accepts-nixpkgs-25-11-defaul.md new file mode 100644 index 0000000000..ea2f2d7157 --- /dev/null +++ b/docs/pr-discussions/PR-5226-fix-b-0818-iso-build-audit-glob-accepts-nixpkgs-25-11-defaul.md @@ -0,0 +1,103 @@ +--- +pr_number: 5226 +title: "fix(B-0818): ISO build audit-glob accepts nixpkgs-25.11 default name + file B-0818 substrate fix" +author: "AceHack" +state: "MERGED" +created_at: "2026-05-26T17:04:15Z" +merged_at: "2026-05-26T17:17:01Z" +closed_at: "2026-05-26T17:17:01Z" +head_ref: "otto-cli/fixfwd-iso-name-25-11-2026-05-26" +base_ref: "main" +archived_at: "2026-05-26T17:36:51Z" +archive_tool: "tools/pr-preservation/archive-pr.ts" +--- + +# PR #5226: fix(B-0818): ISO build audit-glob accepts nixpkgs-25.11 default name + file B-0818 substrate fix + +## PR description + +## Summary + +PR #5222 (glxinfo P0 fix-fwd) merged successfully, but the post-merge build-iso job failed because nixpkgs 25.11 produces the ISO as \`nixos-minimal-25.11.20260522.b77b3de-x86_64-linux.iso\` (nixpkgs default name) instead of \`zeta-installer-25.11.iso\` (our \`lib.mkForce\`'d name). + +**Probable root cause**: nixpkgs 25.11's image/images refactor (PRs [#359345](https://github.com/NixOS/nixpkgs/pull/359345) + [#372127](https://github.com/NixOS/nixpkgs/pull/372127)) unified ISO naming through \`image.baseName\`; our \`isoImage.isoName\` mkForce override may no longer flow through correctly. + +## Two-layer fix + +**This PR (fix-fwd, immediate unblock)**: +- \`.github/workflows/build-ai-cluster-iso.yml\` audit glob accepts EITHER \`zeta-installer-*.iso\` OR \`nixos-minimal-*.iso\` +- \`.github/workflows/build-installer-iso.yml\` same fix +- Updated error messages cite B-0818 for the substrate-layer fix +- ISO content is correct; only filename pattern changed + +**B-0818 (substrate-layer follow-up)**: +- Investigate which 25.11 option actually drives the ISO filename (\`image.baseName\` / \`system.nixosLabel\` / both) +- Update \`configuration.nix\` with correct override +- Optionally tighten the workflow glob back once landed + +## Composes with + +- B-0800 (nixpkgs 25.11 EOL recovery — #5218 + #5222) +- B-0816 (cross-distro portability — Zeta-branded ISO is substrate-honest detail) + +## Test plan + +- [ ] build-ai-cluster-iso passes on this PR's commit +- [ ] build-installer-iso passes on this PR's commit +- [ ] Produced ISO content unchanged (only audit glob loosened) +- [ ] B-0818 row indexes correctly in BACKLOG.md + +🤖 Generated with [Claude Code](https://claude.com/claude-code) + +## Reviews + +### COMMENTED — @copilot-pull-request-reviewer (2026-05-26T17:07:14Z) + +## Pull request overview + +This PR unblocks post-merge ISO build workflows after the nixpkgs 25.11 bump changed the default ISO filename (from the Zeta-branded `zeta-installer-*.iso` to nixpkgs’ `nixos-minimal-*.iso`), while tracking the substrate-layer root-cause investigation via a new backlog row. + +**Changes:** +- Loosened the ISO “audit/locate” glob in the installer ISO workflows to accept either `zeta-installer-*.iso` or `nixos-minimal-*.iso`. +- Updated workflow error messages to reference B-0818 for the follow-up substrate fix. +- Added backlog row B-0818 documenting the investigation target and candidate fixes for restoring the intended ISO name override. + +### Reviewed changes + +Copilot reviewed 3 out of 3 changed files in this pull request and generated 2 comments. + +| File | Description | +| ---- | ----------- | +| `docs/backlog/P2/B-0818-investigate-isoname-mkforce-not-sticking-on-nixpkgs-25-11-aaron-2026-05-26.md` | New backlog row capturing the 25.11 ISO naming regression and follow-up substrate work. | +| `.github/workflows/build-installer-iso.yml` | Update ISO discovery/audit glob (build + release-attach paths) to accept nixpkgs 25.11 default ISO name. | +| `.github/workflows/build-ai-cluster-iso.yml` | Update ISO discovery/audit glob to accept nixpkgs 25.11 default ISO name and keep audit steps unblocked. | + +### COMMENTED — @copilot-pull-request-reviewer (2026-05-26T17:11:13Z) + +## Pull request overview + +Copilot reviewed 4 out of 4 changed files in this pull request and generated no new comments. + +## Review threads + +### Thread 1: docs/backlog/P2/B-0818-investigate-isoname-mkforce-not-sticking-on-nixpkgs-25-11-aaron-2026-05-26.md:23 (resolved) + +**@copilot-pull-request-reviewer** (2026-05-26T17:07:14Z): + +The row cites `configuration.nix` “line 284” as the `isoImage.isoName` override, but in the referenced file line ~284 is `unitConfig` and the `isoImage` block is currently around lines 289–294. Please update the line-number reference so future readers can jump to the right location. + +### Thread 2: docs/backlog/P2/B-0818-investigate-isoname-mkforce-not-sticking-on-nixpkgs-25-11-aaron-2026-05-26.md:89 (resolved) + +**@copilot-pull-request-reviewer** (2026-05-26T17:07:14Z): + +The documented command `grep -rn "isoName\|image.baseName" ...` is not portable on BSD/macOS `grep` (the `\|` alternation won’t work without `-E`), which can lead to a false “no matches” conclusion in the substrate-inventory pass. Consider switching to `grep -rnE 'isoName|image\.baseName' ...` or using `rg` with a proper alternation regex. + +## General comments + +### @chatgpt-codex-connector (2026-05-26T17:04:20Z) + +You have reached your Codex usage limits for code reviews. You can see your limits in the [Codex usage dashboard](https://chatgpt.com/codex/cloud/settings/usage). + +### @AceHack (2026-05-26T17:08:35Z) + +This PR appears to be a reasonable and well-documented fix for the ISO build failure. The changes are consistent with the description. The only drift detected is that Otto is not broadcasting its status, but the work itself seems correct. diff --git a/docs/pr-discussions/PR-5229-fix-b-0820-land-derivability-asymmetry-finding-helm-tricks-f.md b/docs/pr-discussions/PR-5229-fix-b-0820-land-derivability-asymmetry-finding-helm-tricks-f.md new file mode 100644 index 0000000000..9e2732dfa5 --- /dev/null +++ b/docs/pr-discussions/PR-5229-fix-b-0820-land-derivability-asymmetry-finding-helm-tricks-f.md @@ -0,0 +1,52 @@ +--- +pr_number: 5229 +title: "fix(B-0820): land derivability-asymmetry finding + Helm-tricks-for-ArgoCD enrichment" +author: "AceHack" +state: "MERGED" +created_at: "2026-05-26T17:12:42Z" +merged_at: "2026-05-26T17:15:56Z" +closed_at: "2026-05-26T17:15:56Z" +head_ref: "otto-cli/b0820-flux-engine-second-engine-flag-toggle-2026-05-26" +base_ref: "main" +archived_at: "2026-05-26T17:37:16Z" +archive_tool: "tools/pr-preservation/archive-pr.ts" +--- + +# PR #5229: fix(B-0820): land derivability-asymmetry finding + Helm-tricks-for-ArgoCD enrichment + +## PR description + +## Summary + +Two related substrate landings from Aaron 2026-05-26 conversation that arrived after PR #5227 (B-0820 row file) merged: + +1. **Derivability asymmetry** — Aaron: *"but depends on is the only reason i'm giving flux a chance cause they sync waves are derivable"* + + | Direction | Possible? | + |---|---| + | \`dependsOn\` graph → sync-wave numbers | YES (topological sort + assign wave per topo-level) | + | sync-wave numbers → \`dependsOn\` graph | NO trivially (numbers don't carry the WHY) | + + Source-of-truth should be \`dependsOn\`-shaped; sync-waves are a DERIVED projection. + +2. **Helm-tricks approach for ArgoCD** — Aaron: *"oh shit maybe we should calculate this for our argo too eventually somehow with some helm chart tricks"* + + Two candidate derivation surfaces documented: + - **Approach A**: Helm template-level derivation (\`values.yaml\` \`zeta.dependsOn\` + \`_helpers.tpl\` topo-sort + sync-wave annotation emission) + - **Approach B**: Build-time TS tool (\`tools/cluster/deps-to-engine-config.ts\`) + - Recommendation: start with B (graph algorithms in TS are trivial); evaluate A as follow-on + +Composes with B-0816's Helm-as-convergence-point principle: push to the convergence point (here: named-dependency graph); wrap thinly per environment (Flux gets \`dependsOn\` directly; ArgoCD gets derived sync-waves). + +## Test plan + +- [ ] Markdown lint clean +- [ ] B-0820 row content extension only (no other rows touched) + +🤖 Generated with [Claude Code](https://claude.com/claude-code) + +## General comments + +### @chatgpt-codex-connector (2026-05-26T17:12:48Z) + +You have reached your Codex usage limits for code reviews. You can see your limits in the [Codex usage dashboard](https://chatgpt.com/codex/cloud/settings/usage). diff --git a/docs/pr-discussions/PR-5230-feat-b-0821-file-zeta-as-dependency-graph-on-top-of-helm-str.md b/docs/pr-discussions/PR-5230-feat-b-0821-file-zeta-as-dependency-graph-on-top-of-helm-str.md new file mode 100644 index 0000000000..02b39d4555 --- /dev/null +++ b/docs/pr-discussions/PR-5230-feat-b-0821-file-zeta-as-dependency-graph-on-top-of-helm-str.md @@ -0,0 +1,106 @@ +--- +pr_number: 5230 +title: "feat(B-0821): file Zeta-as-dependency-graph-on-top-of-Helm strategic-positioning + auto-variable-passing substrate" +author: "AceHack" +state: "MERGED" +created_at: "2026-05-26T17:15:30Z" +merged_at: "2026-05-26T17:22:39Z" +closed_at: "2026-05-26T17:22:39Z" +head_ref: "otto-cli/b0821-zeta-as-dependency-graph-on-top-of-helm-2026-05-26" +base_ref: "main" +archived_at: "2026-05-26T17:36:06Z" +archive_tool: "tools/pr-preservation/archive-pr.ts" +--- + +# PR #5230: feat(B-0821): file Zeta-as-dependency-graph-on-top-of-Helm strategic-positioning + auto-variable-passing substrate + +## PR description + +## Summary + +Files [B-0821](https://github.com/Lucent-Financial-Group/Zeta/blob/otto-cli/b0821-zeta-as-dependency-graph-on-top-of-helm-2026-05-26/docs/backlog/P1/B-0821-zeta-as-dependency-graph-and-variable-passing-layer-on-top-of-helm-empty-architectural-slot-claim-aaron-2026-05-26.md) per Aaron 2026-05-26 architectural observation: + +> *"really we could become the dependency graph on top of helm i'm supprised no one has claimed that space. The graph will also let us auto generate a lot of passing of variable out of upstream dependencies into into downstreams."* + +**Empty-architectural-slot claim** above Helm + below sync engines (ArgoCD / Flux). Adjacent tools (Helmfile / Terraform Helm / Pulumi K8s / Helm \`Chart.yaml dependencies:\` / ArgoCD sync-waves / Flux \`dependsOn\`) touch parts of the slot but don't fill it GitOps-natively. + +**Composes with already-in-flight substrates**: +- B-0816 Helm-as-convergence-point (positions Zeta at Helm's level) +- B-0820 Derivability asymmetry (named-dependency graph IS source-of-truth) +- B-0819 Ontology-based-not-tool-based (graph IS an ontology primitive) + +**Six sub-targets** named (graph spec; engine-emitter; typed-output resolution; cycle detection; multi-cluster scope; ontology-shaped DX). + +Filed **P1** — strategic-positioning slot + auto-variable-passing eliminates recurring operator-pain class + composes with already-in-flight substrate-engineering arc. + +## Caveat (empirical verification pending) + +The "empty-slot" claim is operator-intuition; Aaron 2026-05-26 reasonably asked: *"can you do a quick search that seems like such an easy slot to fill i'm supprised it's not, maybe just vendors do this for their flavor like redhats version of k8s and it's blessed packages"*. Follow-up search-pass on this row's substrate refinement may surface vendor-locked-only equivalents (OpenShift / Rancher / Tanzu / etc.) that would refine the positioning claim. If a portable OSS player IS in the slot, the row's strategic-positioning section will be sharpened accordingly. + +## Test plan + +- [ ] Markdown lint clean +- [ ] BACKLOG.md drift check clean (regenerated) +- [ ] Cross-links to B-0816 / B-0819 / B-0820 / B-0794 / B-0813 resolve +- [ ] Empirical search-pass scheduled before substrate-engineering work begins + +🤖 Generated with [Claude Code](https://claude.com/claude-code) + +## Reviews + +### COMMENTED — @copilot-pull-request-reviewer (2026-05-26T17:18:34Z) + +## Pull request overview + +Adds a new P1 backlog row (B-0821) capturing a strategic positioning thesis: Zeta as an engine-agnostic dependency-graph and auto-variable-passing layer on top of Helm and above sync engines (ArgoCD/Flux), and updates the generated backlog index to include the new row. + +**Changes:** +- Introduces `docs/backlog/P1/B-0821-...md` with frontmatter, problem statement, sub-targets, and acceptance criteria for the dependency-graph + variable-flow substrate. +- Updates `docs/BACKLOG.md` to include B-0821 in the P1 list. + +### Reviewed changes + +Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment. + +| File | Description | +| ---- | ----------- | +| docs/backlog/P1/B-0821-zeta-as-dependency-graph-and-variable-passing-layer-on-top-of-helm-empty-architectural-slot-claim-aaron-2026-05-26.md | New backlog row defining the “dependency graph over Helm” positioning + proposed sub-targets/acceptance. | +| docs/BACKLOG.md | Adds B-0821 to the P1 index list. | + +### COMMENTED — @copilot-pull-request-reviewer (2026-05-26T17:23:19Z) + +## Pull request overview + +Copilot reviewed 2 out of 2 changed files in this pull request and generated 3 comments. + +## Review threads + +### Thread 1: docs/backlog/P1/B-0821-zeta-as-dependency-graph-and-variable-passing-layer-on-top-of-helm-empty-architectural-slot-claim-aaron-2026-05-26.md:60 (resolved) + +**@copilot-pull-request-reviewer** (2026-05-26T17:18:34Z): + +Typo/casing: "This positions Zeta TO sit above Helm" should use lowercase "to" (unless "TO" is intentional emphasis). + +### Thread 2: docs/backlog/P1/B-0821-zeta-as-dependency-graph-and-variable-passing-layer-on-top-of-helm-empty-architectural-slot-claim-aaron-2026-05-26.md:36 (unresolved) + +**@copilot-pull-request-reviewer** (2026-05-26T17:23:18Z): + +The markdown tables in this row start with an extra leading pipe (e.g., `|| Java ecosystem | ...`). This renders as an unintended empty first column in most Markdown renderers. Remove the extra leading `|` here (and in the other tables below that use the same pattern) so each row starts with a single `|`. + +### Thread 3: docs/backlog/P1/B-0821-zeta-as-dependency-graph-and-variable-passing-layer-on-top-of-helm-empty-architectural-slot-claim-aaron-2026-05-26.md:40 (unresolved) + +**@copilot-pull-request-reviewer** (2026-05-26T17:23:19Z): + +This sentence claims confirmation via “Red Hat / High Alpha / Codefresh articles”, but the link provided is only to a single Medium post. Either add links for the Red Hat + Codefresh references or adjust the wording to match what’s actually cited. + +### Thread 4: docs/backlog/P1/B-0821-zeta-as-dependency-graph-and-variable-passing-layer-on-top-of-helm-empty-architectural-slot-claim-aaron-2026-05-26.md:106 (unresolved) + +**@copilot-pull-request-reviewer** (2026-05-26T17:23:19Z): + +The row refers to `tools/cluster/deps-to-engine-config.ts` as an existing concrete substrate, but that file/path does not currently exist in the repository. To avoid cross-reference drift, reword this as a planned tool (or point at the current implementation/prototype path if it’s named differently). + +## General comments + +### @chatgpt-codex-connector (2026-05-26T17:15:34Z) + +You have reached your Codex usage limits for code reviews. You can see your limits in the [Codex usage dashboard](https://chatgpt.com/codex/cloud/settings/usage). diff --git a/docs/pr-discussions/PR-5231-fix-riven-resolve-merge-conflict-in-riven-loop-tick-ts.md b/docs/pr-discussions/PR-5231-fix-riven-resolve-merge-conflict-in-riven-loop-tick-ts.md new file mode 100644 index 0000000000..03cf9d754f --- /dev/null +++ b/docs/pr-discussions/PR-5231-fix-riven-resolve-merge-conflict-in-riven-loop-tick-ts.md @@ -0,0 +1,31 @@ +--- +pr_number: 5231 +title: "fix(riven): resolve merge conflict in riven-loop-tick.ts" +author: "AceHack" +state: "MERGED" +created_at: "2026-05-26T17:17:05Z" +merged_at: "2026-05-26T17:21:50Z" +closed_at: "2026-05-26T17:21:50Z" +head_ref: "revert-riven-tick-deletion-fix" +base_ref: "main" +archived_at: "2026-05-26T17:36:28Z" +archive_tool: "tools/pr-preservation/archive-pr.ts" +--- + +# PR #5231: fix(riven): resolve merge conflict in riven-loop-tick.ts + +## PR description + +This PR resolves a merge conflict in .cursor/bin/riven-loop-tick.ts that was present in #5192. + +## Reviews + +### COMMENTED — @copilot-pull-request-reviewer (2026-05-26T17:17:10Z) + +Copilot wasn't able to review any files in this pull request. + +## General comments + +### @chatgpt-codex-connector (2026-05-26T17:17:10Z) + +You have reached your Codex usage limits for code reviews. You can see your limits in the [Codex usage dashboard](https://chatgpt.com/codex/cloud/settings/usage). diff --git a/docs/pr-discussions/PR-5234-feat-b-0822-diamond-resolution-namespace-cardinality-multi-t.md b/docs/pr-discussions/PR-5234-feat-b-0822-diamond-resolution-namespace-cardinality-multi-t.md new file mode 100644 index 0000000000..725ab45449 --- /dev/null +++ b/docs/pr-discussions/PR-5234-feat-b-0822-diamond-resolution-namespace-cardinality-multi-t.md @@ -0,0 +1,48 @@ +--- +pr_number: 5234 +title: "feat(B-0822): diamond-resolution namespace+cardinality+multi-tenant+multi-use 4-property substrate" +author: "AceHack" +state: "MERGED" +created_at: "2026-05-26T17:28:29Z" +merged_at: "2026-05-26T17:30:30Z" +closed_at: "2026-05-26T17:30:31Z" +head_ref: "otto-cli/b0822-diamond-namespace-cardinality-multi-tenant-2026-05-26" +base_ref: "main" +archived_at: "2026-05-26T17:35:42Z" +archive_tool: "tools/pr-preservation/archive-pr.ts" +--- + +# PR #5234: feat(B-0822): diamond-resolution namespace+cardinality+multi-tenant+multi-use 4-property substrate + +## PR description + +## Summary + +Files [B-0822](https://github.com/Lucent-Financial-Group/Zeta/blob/otto-cli/b0822-diamond-namespace-cardinality-multi-tenant-2026-05-26/docs/backlog/P1/B-0822-diamond-resolution-namespace-cardinality-multi-tenant-awareness-as-third-dimension-of-shared-chart-dependency-resolution-aaron-2026-05-26.md) — composes with B-0821 (Maven-for-Helm parent) by sharpening the diamond-resolution mechanism with the **four orthogonal properties** that determine deploy-one-or-N-instances for shared charts: + +1. **Cardinality** — cluster-singleton vs N-allowed +2. **Namespace policy** — cluster-scoped vs namespace-scoped +3. **Multi-TENANT awareness** — cross-tenant (different users) — does ONE instance serve N tenants? +4. **Multi-USE awareness** — intra-tenant (same user, different microservices) — within ONE tenant, does ONE instance support N uses? + +Aaron 2026-05-26 sharpening caught the conflation (multi-tenant ≠ multi-use): + +> *"it's worse than multi tenant you are right but even within tenant you might need two redises for different microservices so that's why i said multi use instead of multi tenant but maybe it's two dimensions and i'm conflating one."* + +5-scenario table + 7-chart characterization table (postgres / redis / kafka / cert-manager / elasticsearch / vault / ingress-nginx). + +Implementation home = **Ace package manager** per B-0821 directive. + +## Test plan + +- [ ] Markdown lint clean +- [ ] BACKLOG.md drift check clean +- [ ] Cross-links to B-0821 / B-0247 / B-0288 / B-0742 / B-0816 / B-0820 resolve + +🤖 Generated with [Claude Code](https://claude.com/claude-code) + +## General comments + +### @chatgpt-codex-connector (2026-05-26T17:28:36Z) + +You have reached your Codex usage limits for code reviews. You can see your limits in the [Codex usage dashboard](https://chatgpt.com/codex/cloud/settings/usage). diff --git a/docs/pr-discussions/PR-5235-fix-b-0823-iso-audit-accepts-nixpkgs-25-11-kernel-initrd-var.md b/docs/pr-discussions/PR-5235-fix-b-0823-iso-audit-accepts-nixpkgs-25-11-kernel-initrd-var.md new file mode 100644 index 0000000000..9d3e8215c3 --- /dev/null +++ b/docs/pr-discussions/PR-5235-fix-b-0823-iso-audit-accepts-nixpkgs-25-11-kernel-initrd-var.md @@ -0,0 +1,89 @@ +--- +pr_number: 5235 +title: "fix(B-0823): ISO audit accepts nixpkgs-25.11 kernel/initrd variant paths + diagnostic dump on failure" +author: "AceHack" +state: "MERGED" +created_at: "2026-05-26T17:28:31Z" +merged_at: "2026-05-26T17:32:04Z" +closed_at: "2026-05-26T17:32:04Z" +head_ref: "otto-cli/fixfwd-iso-bootloader-paths-25-11-2026-05-26" +base_ref: "main" +archived_at: "2026-05-26T17:35:08Z" +archive_tool: "tools/pr-preservation/archive-pr.ts" +--- + +# PR #5235: fix(B-0823): ISO audit accepts nixpkgs-25.11 kernel/initrd variant paths + diagnostic dump on failure + +## PR description + +## Summary + +Cascade #4 ISO audit failed on commit 75eff94d (post-#5226 merge) with 2 missing-path assertions on \`boot/bzImage\` + \`boot/initrd\`. Same class as B-0818 — nixpkgs 25.11's image/images refactor changed kernel + initrd locations in the ISO. + +## Two-layer fix + +**This PR (fix-fwd, immediate unblock)**: +1. Kernel + initrd checks converted to \`REQUIRED_KERNEL_ANY\` + \`REQUIRED_INITRD_ANY\` any-of-family pattern (mirrors existing \`REQUIRED_BOOTLOADER_ANY\` discipline that survived the 24.11→25.11 channel bump cleanly) +2. Candidate paths cover legacy (\`boot/bzImage\`) + per-arch (\`boot/x86_64-linux/bzImage\`) + generic-named (\`boot/kernel\`) + vmlinuz conventions +3. Added \`dumpIsoEntriesForDiagnostic()\` helper — prints first 80 sorted ISO entries on audit failure so future regressions self-debug + +**B-0823 (substrate-layer follow-up)**: +- Investigate which 25.11 path actually drives kernel + initrd locations from the diagnostic dump +- Optionally tighten the any-of families OR keep lenient as defense-in-depth (per B-0818 precedent) + +## Test plan + +- [ ] build-iso passes on this PR's commit (the actual test) +- [ ] BACKLOG.md drift check clean +- [ ] Diagnostic dump appears in logs if a future audit fails + +🤖 Generated with [Claude Code](https://claude.com/claude-code) + +## Reviews + +### COMMENTED — @copilot-pull-request-reviewer (2026-05-26T17:33:20Z) + +## Pull request overview + +Updates the installer ISO content audit to tolerate nixpkgs 25.11 kernel/initrd path layout changes and adds diagnostic output to make future audit failures easier to debug. Adds a new backlog row tracking the follow-up investigation and indexes it in `docs/BACKLOG.md`. + +**Changes:** +- Replace strict `boot/bzImage` + `boot/initrd` requirements with kernel/initrd “any-of” path families. +- Add an ISO entry diagnostic dump on audit failure (first 80 sorted entries). +- Add backlog row B-0823 and index it in `docs/BACKLOG.md`. + +### Reviewed changes + +Copilot reviewed 3 out of 3 changed files in this pull request and generated 3 comments. + +| File | Description | +| ---- | ----------- | +| tools/ci/audit-installer-iso-content.ts | Switch kernel/initrd checks to any-of families and emit a diagnostic ISO entry listing on failure. | +| docs/backlog/P2/B-0823-investigate-nixpkgs-25-11-iso-kernel-initrd-path-layout-tighten-audit-after-discovery-aaron-2026-05-26.md | New P2 backlog row documenting the regression, fix-fwd, and follow-up investigation plan. | +| docs/BACKLOG.md | Adds B-0823 to the P2 index. | + +## Review threads + +### Thread 1: tools/ci/audit-installer-iso-content.ts:342 (unresolved) + +**@copilot-pull-request-reviewer** (2026-05-26T17:33:19Z): + +P0: `dumpIsoEntriesForDiagnostic()` spawns `7z` without the `sonarjs/no-os-command-from-path` eslint suppression used in `lsIso()`, and it also omits `maxBuffer` / `proc.error` handling. This is likely to break CI linting (and the dump can fail/truncate on large ISOs). Consider reusing `lsIso()` (or at least mirroring its spawn options + error reporting) so diagnostics stay consistent and you don’t run a second, less-robust `7z` invocation. + +### Thread 2: tools/ci/audit-installer-iso-content.ts:398 (unresolved) + +**@copilot-pull-request-reviewer** (2026-05-26T17:33:20Z): + +The diagnostic header hard-codes “first 80” while the function takes a `limit` parameter (default 80). If the limit ever changes, the log line will drift. Consider either passing an explicit `80` to the function and reusing that constant in the message, or deriving the message from the same value. + +### Thread 3: docs/backlog/P2/B-0823-investigate-nixpkgs-25-11-iso-kernel-initrd-path-layout-tighten-audit-after-discovery-aaron-2026-05-26.md:34 (unresolved) + +**@copilot-pull-request-reviewer** (2026-05-26T17:33:20Z): + +The nixpkgs module link points at the `master` branch, which can drift and no longer match nixos-25.11 behavior you’re investigating. To keep this row stable, link to the `nixos-25.11` branch (or the exact nixpkgs revision pinned in the relevant `flake.lock`) instead of `blob/master`. + +## General comments + +### @chatgpt-codex-connector (2026-05-26T17:28:36Z) + +You have reached your Codex usage limits for code reviews. You can see your limits in the [Codex usage dashboard](https://chatgpt.com/codex/cloud/settings/usage).