From 3e5febd9feca6d4979aa8fda9f167396f9b10115 Mon Sep 17 00:00:00 2001 From: Lior Date: Tue, 26 May 2026 13:25:13 -0400 Subject: [PATCH] docs(archive): preserve merged PRs 2026-05-26 --- ...hitectural-principle-maximize-argocd-sc.md | 72 ++++++++++++ ...ls-cluster-register-node-ts-operator-in.md | 72 ++++++++++++ ...merge-recovery-glxinfo-mesa-demos-25-11.md | 46 ++++++++ ...irical-anchor-with-lexisnexis-github-us.md | 38 +++++++ ...0817-4-copilot-findings-link-contradict.md | 61 +++++++++++ ...9-flux-helm-convergence-point-force-mul.md | 90 +++++++++++++++ ...audit-glob-accepts-nixpkgs-25-11-defaul.md | 103 ++++++++++++++++++ ...x-as-second-engine-row-with-flag-toggle.md | 45 ++++++++ ...ability-asymmetry-finding-helm-tricks-f.md | 52 +++++++++ ...ve-merge-conflict-in-riven-loop-tick-ts.md | 31 ++++++ 10 files changed, 610 insertions(+) create mode 100644 docs/pr-discussions/PR-5220-backlog-b-0816-p1-architectural-principle-maximize-argocd-sc.md create mode 100644 docs/pr-discussions/PR-5221-backlog-b-0817-p2-tools-cluster-register-node-ts-operator-in.md create mode 100644 docs/pr-discussions/PR-5222-fix-p0-iter-6-0-race-merge-recovery-glxinfo-mesa-demos-25-11.md create mode 100644 docs/pr-discussions/PR-5223-fix-b-0816-enrich-empirical-anchor-with-lexisnexis-github-us.md create mode 100644 docs/pr-discussions/PR-5224-fix-postmerge-5221-b-0817-4-copilot-findings-link-contradict.md create mode 100644 docs/pr-discussions/PR-5225-fix-b-0816-feat-b-0819-flux-helm-convergence-point-force-mul.md create mode 100644 docs/pr-discussions/PR-5226-fix-b-0818-iso-build-audit-glob-accepts-nixpkgs-25-11-defaul.md create mode 100644 docs/pr-discussions/PR-5227-feat-b-0820-file-flux-as-second-engine-row-with-flag-toggle.md create mode 100644 docs/pr-discussions/PR-5229-fix-b-0820-land-derivability-asymmetry-finding-helm-tricks-f.md create mode 100644 docs/pr-discussions/PR-5231-fix-riven-resolve-merge-conflict-in-riven-loop-tick-ts.md diff --git a/docs/pr-discussions/PR-5220-backlog-b-0816-p1-architectural-principle-maximize-argocd-sc.md b/docs/pr-discussions/PR-5220-backlog-b-0816-p1-architectural-principle-maximize-argocd-sc.md new file mode 100644 index 0000000000..f79c8f8fe1 --- /dev/null +++ b/docs/pr-discussions/PR-5220-backlog-b-0816-p1-architectural-principle-maximize-argocd-sc.md @@ -0,0 +1,72 @@ +--- +pr_number: 5220 +title: "backlog(B-0816 P1 architectural-principle): maximize ArgoCD scope; minimize NixOS-native lock-in for cross-cluster portability" +author: "AceHack" +state: "MERGED" +created_at: "2026-05-26T16:49:19Z" +merged_at: "2026-05-26T16:51:01Z" +closed_at: "2026-05-26T16:51:01Z" +head_ref: "otto-cli/b0816-principle-maximize-argocd-scope-portability-leverage-aaron-2026-05-26" +base_ref: "main" +archived_at: "2026-05-26T17:24:27Z" +archive_tool: "tools/pr-preservation/archive-pr.ts" +--- + +# PR #5220: backlog(B-0816 P1 architectural-principle): maximize ArgoCD scope; minimize NixOS-native lock-in for cross-cluster portability + +## PR description + +## Summary + +Lands the architectural principle the maintainer 2026-05-26 named immediately after the iter-6.0 nixpkgs bump merge: + +> *"nice also ArgoCD is ususaly be anyone with k8s too not just nixos so antoher reason to push as much as possible into argocd."* + +## Carved sentence + +ArgoCD is used by ANYONE running Kubernetes (not just NixOS users); substrate-in-ArgoCD ports across every K8s cluster + every K8s distribution. NixOS-native substrate is load-bearing for the BOOT + OS layer, but BEYOND THAT every substrate-engineering decision should default to ArgoCD-managed for cross-cluster portability leverage. + +## What changes for existing substrate + +| Existing row | Status under principle | +|---|---| +| B-0813 iter-5.4.2 cluster-nodes-reconciler | ✅ ArgoCD-managed — reinforced | +| B-0802 kured | ✅ ArgoCD-managed — reinforced | +| B-0806 sub-target 3 Crossplane | ✅ ArgoCD-managed — reinforced | +| B-0800 nixpkgs bump | NixOS-only (boot+OS layer; no portable alternative) | +| B-0801 system.autoUpgrade | NixOS-only (Nix flake update is NixOS-specific) | +| B-0803 deploy-rs | NixOS-only — **flagged** as not cross-distro-portable | + +## Implication for B-0782 cluster-IS-DIO + +DIO lives in 4 layers, each with its own reconciler: +1. Boot+OS = NixOS substrate (DIO via nixos-rebuild) +2. K8s+workload = ArgoCD (DIO via ArgoCD sync) +3. External-infra = Crossplane via ArgoCD (DIO via CR reconciliation) +4. Heterogeneous-OS = Ansible+Ace bridge (B-0806 substrate) + +## Implication for cross-distro adoption + +Operators on K3S-on-Ubuntu / Talos / RKE2 / EKS / GKE / AKS / OpenShift can adopt iter-5.4.x substrate by: +1. Skip NixOS install.sh (use their own bootstrap) +2. Adopt the `maintainers//cluster-nodes//` tree shape +3. Point their ArgoCD at the tree +4. Run a future `register-node.ts` equivalent for their distro + +NixOS becomes ONE of N possible host substrates. Zeta substrate stays portable. + +## Composes with + +12 existing rows (B-0782, B-0790, B-0794, B-0800–B-0806, B-0811, B-0813, B-0814) — full cross-reference table in the row body. + +## Substrate-inventory pass + +Per `.claude/rules/verify-existing-substrate-before-authoring.md` (#5131): no existing principle row on this topic; ID B-0816 next-free; principle generalizes the discipline existing rows already partially encode. + +🤖 Generated with [Claude Code](https://claude.com/claude-code) + +## General comments + +### @chatgpt-codex-connector (2026-05-26T16:49:25Z) + +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-5221-backlog-b-0817-p2-tools-cluster-register-node-ts-operator-in.md b/docs/pr-discussions/PR-5221-backlog-b-0817-p2-tools-cluster-register-node-ts-operator-in.md new file mode 100644 index 0000000000..cc0ddd413d --- /dev/null +++ b/docs/pr-discussions/PR-5221-backlog-b-0817-p2-tools-cluster-register-node-ts-operator-in.md @@ -0,0 +1,72 @@ +--- +pr_number: 5221 +title: "backlog(B-0817 P2): tools/cluster/register-node.ts \u2014 operator-invocation companion to deregister (B-0814)" +author: "AceHack" +state: "MERGED" +created_at: "2026-05-26T16:51:11Z" +merged_at: "2026-05-26T16:53:32Z" +closed_at: "2026-05-26T16:53:32Z" +head_ref: "otto-cli/b0817-register-node-ts-operator-invocation-companion-to-deregister-2026-05-26" +base_ref: "main" +archived_at: "2026-05-26T17:24:17Z" +archive_tool: "tools/pr-preservation/archive-pr.ts" +--- + +# PR #5221: backlog(B-0817 P2): tools/cluster/register-node.ts — operator-invocation companion to deregister (B-0814) + +## PR description + +Symmetric counterpart to PR #5216 deregister tool. Two modes (compose / --from-yaml pass-through). Mirrors deregister discipline. Filed P2 because derived-by-symmetry, not Aaron-explicitly-named. + +## Reviews + +### COMMENTED — @copilot-pull-request-reviewer (2026-05-26T16:53:36Z) + +## Pull request overview + +Adds a new P2 backlog row (B-0817) describing a proposed `tools/cluster/register-node.ts` operator tool (manual register/re-register counterpart to `deregister-node.ts`), and wires it into the main backlog index. + +**Changes:** +- Add backlog row **B-0817** documenting goals, sub-targets, and acceptance for a manual cluster node registration tool. +- Update `docs/BACKLOG.md` to include **B-0817** under P2. + +### Reviewed changes + +Copilot reviewed 2 out of 2 changed files in this pull request and generated 4 comments. + +| File | Description | +| ---- | ----------- | +| docs/backlog/P2/B-0817-tools-cluster-register-node-ts-operator-invocation-companion-symmetric-to-deregister-for-manual-re-register-after-wipe-aaron-2026-05-26.md | New backlog row defining the `register-node.ts` tool scope/modes/acceptance and cross-links to related iter-5.4 work. | +| docs/BACKLOG.md | Adds B-0817 to the P2 index list. | + +## Review threads + +### Thread 1: docs/backlog/P2/B-0817-tools-cluster-register-node-ts-operator-invocation-companion-symmetric-to-deregister-for-manual-re-register-after-wipe-aaron-2026-05-26.md:23 (resolved) + +**@copilot-pull-request-reviewer** (2026-05-26T16:53:34Z): + +The B-0814 link here is relative to the current P2 directory, but the B-0814 row lives under docs/backlog/P1/. As written, the link target won't resolve. + +### Thread 2: docs/backlog/P2/B-0817-tools-cluster-register-node-ts-operator-invocation-companion-symmetric-to-deregister-for-manual-re-register-after-wipe-aaron-2026-05-26.md:59 (resolved) + +**@copilot-pull-request-reviewer** (2026-05-26T16:53:35Z): + +Sub-target 1 says the tool may "probe via ssh" for missing --ip/--mac, but the Out of scope section later explicitly says auto-probing via SSH is out of scope. This is internally inconsistent and will confuse implementers about expected behavior. + +### Thread 3: docs/backlog/P2/B-0817-tools-cluster-register-node-ts-operator-invocation-companion-symmetric-to-deregister-for-manual-re-register-after-wipe-aaron-2026-05-26.md:59 (resolved) + +**@copilot-pull-request-reviewer** (2026-05-26T16:53:35Z): + +Pass-through mode is described as an alternative to other flags, but Sub-target 1 also marks --host and --roles as required. If --from-yaml is intended to be a true pass-through, either relax the requirement (derive host/roles from YAML) or explicitly require --host/--roles and validate they match the YAML. + +### Thread 4: docs/backlog/P2/B-0817-tools-cluster-register-node-ts-operator-invocation-companion-symmetric-to-deregister-for-manual-re-register-after-wipe-aaron-2026-05-26.md:84 (resolved) + +**@copilot-pull-request-reviewer** (2026-05-26T16:53:35Z): + +The YAML sketch uses `metadata.maintainer`, but Kubernetes ObjectMeta does not allow arbitrary fields under `metadata`. If you want to persist maintainer info, place it under `spec.registration` and/or `metadata.annotations` (which also aligns with the permissive CRD schema in B-0813). + +## General comments + +### @chatgpt-codex-connector (2026-05-26T16:51:16Z) + +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-5222-fix-p0-iter-6-0-race-merge-recovery-glxinfo-mesa-demos-25-11.md b/docs/pr-discussions/PR-5222-fix-p0-iter-6-0-race-merge-recovery-glxinfo-mesa-demos-25-11.md new file mode 100644 index 0000000000..073c688144 --- /dev/null +++ b/docs/pr-discussions/PR-5222-fix-p0-iter-6-0-race-merge-recovery-glxinfo-mesa-demos-25-11.md @@ -0,0 +1,46 @@ +--- +pr_number: 5222 +title: "fix(p0 iter-6.0 race-merge-recovery): glxinfo \u2192 mesa-demos (25.11 breaking change; PR #5218 auto-merge race fired before this fix was pushed)" +author: "AceHack" +state: "MERGED" +created_at: "2026-05-26T16:53:37Z" +merged_at: "2026-05-26T16:56:38Z" +closed_at: "2026-05-26T16:56:39Z" +head_ref: "otto-cli/p0-fixfwd-glxinfo-mesa-demos-25-11-breaking-change-2026-05-26" +base_ref: "main" +archived_at: "2026-05-26T17:24:13Z" +archive_tool: "tools/pr-preservation/archive-pr.ts" +--- + +# PR #5222: fix(p0 iter-6.0 race-merge-recovery): glxinfo → mesa-demos (25.11 breaking change; PR #5218 auto-merge race fired before this fix was pushed) + +## PR description + +Auto-merge race on PR #5218: glxinfo→mesa-demos fix landed in branch AFTER merge fired. Main has 25.11 bump but glxinfo still present → ISO builds fail. This PR lands the fix directly. Empirical anchor of the auto-merge-race-with-follow-up-commit anti-pattern documented in blocked-green-ci-investigate-threads.md. + +## Reviews + +### COMMENTED — @copilot-pull-request-reviewer (2026-05-26T16:55:35Z) + +## Pull request overview + +This PR unblocks the iter-6.0 NixOS 25.11 (“Xantusia”) ISO build by replacing the removed `glxinfo` package reference with its supported replacement (`mesa-demos`) in the AI-cluster installer and GPU module. + +**Changes:** +- Replace `glxinfo` → `mesa-demos` in the USB installer ISO package set. +- Replace `glxinfo` → `mesa-demos` in the NVIDIA GPU module’s `environment.systemPackages`. + +### Reviewed changes + +Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments. + +| File | Description | +| ---- | ----------- | +| full-ai-cluster/usb-nixos-installer/nixos/installer/configuration.nix | Updates installer ISO packages to use `mesa-demos` instead of `glxinfo` under nixpkgs 25.11. | +| full-ai-cluster/nixos/modules/gpu.nix | Updates GPU tooling package list to use `mesa-demos` instead of `glxinfo`. | + +## General comments + +### @chatgpt-codex-connector (2026-05-26T16:53:47Z) + +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-5223-fix-b-0816-enrich-empirical-anchor-with-lexisnexis-github-us.md b/docs/pr-discussions/PR-5223-fix-b-0816-enrich-empirical-anchor-with-lexisnexis-github-us.md new file mode 100644 index 0000000000..0b90b54e10 --- /dev/null +++ b/docs/pr-discussions/PR-5223-fix-b-0816-enrich-empirical-anchor-with-lexisnexis-github-us.md @@ -0,0 +1,38 @@ +--- +pr_number: 5223 +title: "fix(B-0816): enrich empirical anchor with LexisNexis + GitHub use-cases + cloud-agnostic + 0-external-vendor principle" +author: "AceHack" +state: "MERGED" +created_at: "2026-05-26T16:54:43Z" +merged_at: "2026-05-26T16:57:08Z" +closed_at: "2026-05-26T16:57:08Z" +head_ref: "otto-cli/b0816-enrich-lexisnexis-github-use-case-cloud-agnostic-0-vendor-2026-05-26" +base_ref: "main" +archived_at: "2026-05-26T17:24:06Z" +archive_tool: "tools/pr-preservation/archive-pr.ts" +--- + +# PR #5223: fix(B-0816): enrich empirical anchor with LexisNexis + GitHub use-cases + cloud-agnostic + 0-external-vendor principle + +## PR description + +Maintainer 2026-05-26 follow-up framings on B-0816 (just merged via #5220) — 3-context lineage table (LN Legal-Search + GH CoPilot-training + Zeta) + 3 carried-across-contexts properties: cloud-agnostic, 0-external-vendor (open-source only), ArgoCD-convergence. + +## Reviews + +### COMMENTED — @copilot-pull-request-reviewer (2026-05-26T16:56:18Z) + +## Pull request overview + +Updates backlog row **B-0816** to add an empirical prior-art anchor that ties the ArgoCD portability principle to validated use-cases across LexisNexis, GitHub, and Zeta, emphasizing cloud-agnostic operation and an open-source-only (“0 external vendor dependency”) constraint. + +**Changes:** +- Adds an “Empirical prior-art anchor” section with quoted lineage/use-cases and a 3-context comparison table. +- Explicitly enumerates three carried properties: cloud-agnostic, open-source-only dependencies, and ArgoCD-as-convergence-engine. +- Refines the rationale for the row’s P1 classification to be evidence-based (validated across three contexts) rather than purely architectural reasoning. + +## General comments + +### @chatgpt-codex-connector (2026-05-26T16:54: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-5224-fix-postmerge-5221-b-0817-4-copilot-findings-link-contradict.md b/docs/pr-discussions/PR-5224-fix-postmerge-5221-b-0817-4-copilot-findings-link-contradict.md new file mode 100644 index 0000000000..fac06d71bb --- /dev/null +++ b/docs/pr-discussions/PR-5224-fix-postmerge-5221-b-0817-4-copilot-findings-link-contradict.md @@ -0,0 +1,61 @@ +--- +pr_number: 5224 +title: "fix(postmerge-5221 B-0817): 4 Copilot findings \u2014 link/contradiction/mode-conflict/K8s ObjectMeta" +author: "AceHack" +state: "MERGED" +created_at: "2026-05-26T16:56:45Z" +merged_at: "2026-05-26T17:06:21Z" +closed_at: "2026-05-26T17:06:21Z" +head_ref: "otto-cli/postmerge-5221-fixfwd-4-copilot-2026-05-26" +base_ref: "main" +archived_at: "2026-05-26T17:24:00Z" +archive_tool: "tools/pr-preservation/archive-pr.ts" +--- + +# PR #5224: fix(postmerge-5221 B-0817): 4 Copilot findings — link/contradiction/mode-conflict/K8s ObjectMeta + +## PR description + +Addresses all 4 Copilot post-merge findings on PR #5221 (B-0817 register-node companion row). All 4 substantive: broken P1/P2 link; internal SSH-probe contradiction; --from-yaml vs --host required-flag mode conflict; K8s ObjectMeta cannot accept arbitrary `maintainer` field. + +## Reviews + +### COMMENTED — @copilot-pull-request-reviewer (2026-05-26T16:58:55Z) + +## Pull request overview + +This PR updates backlog row **B-0817** to resolve four post-merge review findings from PR #5221 by correcting a broken cross-link, removing an internal contradiction around SSH probing, clarifying mutually-exclusive CLI “compose” vs “pass-through” modes, and fixing the Kubernetes `ObjectMeta` usage by moving `maintainer` out of `metadata` and into `spec.registration` (with an optional label for grouping). + +**Changes:** +- Fixes the B-0814 cross-reference path from the P2 row. +- Clarifies required flags per operational mode (`--from-yaml` vs `--host/--roles`) and aligns “out of scope” notes. +- Updates the YAML example to avoid invalid `metadata` fields and proposes a label-based alternative. + +## Review threads + +### Thread 1: docs/backlog/P2/B-0817-tools-cluster-register-node-ts-operator-invocation-companion-symmetric-to-deregister-for-manual-re-register-after-wipe-aaron-2026-05-26.md:68 (resolved) + +**@copilot-pull-request-reviewer** (2026-05-26T16:58:54Z): + +The CRD schema sketch in B-0813 declares `spec.hardware` as `type: object` (not nullable). Saying the composed YAML uses "null" hardware risks producing invalid resources; prefer omitting the field or using an empty object `{}` when hardware is unknown. + +### Thread 2: docs/backlog/P2/B-0817-tools-cluster-register-node-ts-operator-invocation-companion-symmetric-to-deregister-for-manual-re-register-after-wipe-aaron-2026-05-26.md:90 (resolved) + +**@copilot-pull-request-reviewer** (2026-05-26T16:58:54Z): + +The example comment suggests `spec.hardware` may be "null" in compose mode. Given the B-0813 CRD sketch uses `hardware: { type: object, ... }`, prefer omitting `hardware` or using `{}` instead of `null`. + +## General comments + +### @chatgpt-codex-connector (2026-05-26T16:56:55Z) + +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:02:32Z) + +Addressed both Copilot `spec.hardware` findings (lines 68 + 90) in 5d6c30230879722a314be9d7dc051a2ab4e26f2d: + +- Prose at line 68 now explains *why* (CRD declares `hardware: { type: object, additionalProperties: true }` with no `required:` entry → omitting is valid; `null` would be CRD-invalid) +- YAML example at lines 88-90 visibly omits the `hardware:` key with a comment explaining when it IS present (`--from-yaml` pass-through, verbatim) vs when it's omitted (compose mode, until iter-5.4.1 self-register populates) + +Verified Copilot finding by reading B-0813 schema directly (`docs/backlog/P1/B-0813-...` line 75) per verify-before-fix discipline. Single substantive change covers both threads. diff --git a/docs/pr-discussions/PR-5225-fix-b-0816-feat-b-0819-flux-helm-convergence-point-force-mul.md b/docs/pr-discussions/PR-5225-fix-b-0816-feat-b-0819-flux-helm-convergence-point-force-mul.md new file mode 100644 index 0000000000..1f08c90457 --- /dev/null +++ b/docs/pr-discussions/PR-5225-fix-b-0816-feat-b-0819-flux-helm-convergence-point-force-mul.md @@ -0,0 +1,90 @@ +--- +pr_number: 5225 +title: "fix(B-0816) + feat(B-0819): Flux/Helm convergence-point + force-multiplier ladder + AI-runbook substrate row (Aaron 2026-05-26)" +author: "AceHack" +state: "MERGED" +created_at: "2026-05-26T16:59:06Z" +merged_at: "2026-05-26T17:13:36Z" +closed_at: "2026-05-26T17:13:36Z" +head_ref: "otto-cli/b0816-enrich-lexisnexis-github-use-case-cloud-agnostic-0-vendor-2026-05-26" +base_ref: "main" +archived_at: "2026-05-26T17:23:56Z" +archive_tool: "tools/pr-preservation/archive-pr.ts" +--- + +# PR #5225: fix(B-0816) + feat(B-0819): Flux/Helm convergence-point + force-multiplier ladder + AI-runbook substrate row (Aaron 2026-05-26) + +## PR description + +## Summary + +Enriches B-0816 architectural-principle row with two substrate additions: + +1. **Historical decision lineage** — Aaron 2026-05-26 verbatim disclosure of the LexisNexis-era Flux feature gaps that drove ArgoCD selection: sync-waves absent, weak self-healing quality, no Rollouts equivalent. The maintainer's caveat ("i think they have something now") preserved. + +2. **2026-state Flux+Rollouts compose nuance** — Aaron 2026-05-26 ServiceTitan-uses-Flux observation surfaced the clarifying nuance: Argo Rollouts is independent of ArgoCD (CRDs: Rollout, AnalysisTemplate, Experiment, AnalysisRun) and composes with Flux via standard HelmRelease + Kustomization + dependsOn. Flux's all-native progressive-delivery answer is Flagger. ServiceTitan-on-Flux could pull in Argo Rollouts via one HelmRelease today. + +Cross-cluster portability principle clarified: K8s manifests are engine-agnostic; only the sync-engine glue differs (\`Application\` for ArgoCD vs \`Kustomization\`/\`HelmRelease\` for Flux). A Flux shop adopting Zeta substrate wraps the same manifests in Flux primitives. + +## Test plan + +- [ ] Markdown lint (the only check that applies to docs-only PRs) +- [ ] Pre-existing 3-context empirical anchor (LexisNexis + GitHub + Zeta) still operative +- [ ] No links broken; no other rows touched + +🤖 Generated with [Claude Code](https://claude.com/claude-code) + +## Reviews + +### COMMENTED — @copilot-pull-request-reviewer (2026-05-26T17:01:59Z) + +## Pull request overview + +Updates backlog row **B-0816** to add an empirical/historical anchor for the ArgoCD-over-Flux architectural principle, plus clarifies the 2026-state nuance that Flux can compose with progressive-delivery controllers (e.g., Argo Rollouts) even when ArgoCD isn’t used. + +**Changes:** +- Adds an “empirical prior-art anchor” section describing the operational lineage and constraints motivating ArgoCD selection. +- Documents the historical ArgoCD-vs-Flux decision drivers and the present-day Flux + Rollouts/Flagger composition nuance. +- Clarifies the “cross-cluster portability” framing as manifest-portable with engine-specific glue differences. + +### COMMENTED — @copilot-pull-request-reviewer (2026-05-26T17:10:30Z) + +## Pull request overview + +Copilot reviewed 3 out of 3 changed files in this pull request and generated 2 comments. + +## Review threads + +### Thread 1: docs/backlog/P1/B-0816-architectural-principle-maximize-argocd-scope-minimize-nixos-native-lock-in-cross-cluster-portability-leverage-aaron-2026-05-26.md:159 (resolved) + +**@copilot-pull-request-reviewer** (2026-05-26T17:01:58Z): + +This sentence references backlog rows B-0288 and B-0742 but doesn’t link them, while nearby sections use explicit markdown links for other backlog IDs. Consider linking these IDs to their corresponding row files to keep navigation/xref consistency within this backlog row. + +### Thread 2: docs/backlog/P1/B-0816-architectural-principle-maximize-argocd-scope-minimize-nixos-native-lock-in-cross-cluster-portability-leverage-aaron-2026-05-26.md:181 (resolved) + +**@copilot-pull-request-reviewer** (2026-05-26T17:01:58Z): + +This paragraph uses directive/locked-in framing (e.g., “Don’t redesign… the decision is locked in…”) but the row explicitly cites `.claude/rules/no-directives.md` and ends with “NOT a directive… operator autonomy… preserved.” Suggest reframing this newly added guidance as an observation/default preference (and noting the conditions for re-evaluation) so the section doesn’t contradict the autonomy/no-directives framing. + +### Thread 3: docs/backlog/P1/B-0819-ai-runbook-substrate-run-deferred-run-continue-with-auto-jit-as-next-force-multiplier-layer-above-helm-kustomize-dockerfile-aaron-2026-05-26.md:158 (resolved) + +**@copilot-pull-request-reviewer** (2026-05-26T17:10:29Z): + +The relative link to `.claude/rules/verify-existing-substrate-before-authoring.md` looks one level too shallow from `docs/backlog/P1/` (it currently points under `docs/.claude/...`, which doesn’t exist). Update the link target so it resolves to the repo-root `.claude/rules/...` path from this directory (i.e., go up one more `..`). + +### Thread 4: docs/backlog/P1/B-0816-architectural-principle-maximize-argocd-scope-minimize-nixos-native-lock-in-cross-cluster-portability-leverage-aaron-2026-05-26.md:243 (resolved) + +**@copilot-pull-request-reviewer** (2026-05-26T17:10:29Z): + +PR title/description are framed as a B-0816-only fix, but this change set also introduces a new backlog row (B-0819) and links to it. Consider updating the PR title and/or description summary to explicitly mention the new B-0819 row so the scope is accurately represented for reviewers and changelog/history readers. + +## General comments + +### @chatgpt-codex-connector (2026-05-26T16:59:11Z) + +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 documentation PR seems correct and adds valuable context. As with the other PR from Otto, the only drift is the lack of broadcasting. 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..f5dc4d8038 --- /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:23:49Z" +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-5227-feat-b-0820-file-flux-as-second-engine-row-with-flag-toggle.md b/docs/pr-discussions/PR-5227-feat-b-0820-file-flux-as-second-engine-row-with-flag-toggle.md new file mode 100644 index 0000000000..2da72a8552 --- /dev/null +++ b/docs/pr-discussions/PR-5227-feat-b-0820-file-flux-as-second-engine-row-with-flag-toggle.md @@ -0,0 +1,45 @@ +--- +pr_number: 5227 +title: "feat(B-0820): file Flux-as-second-engine row with flag-toggle + multi-cluster A/B substrate" +author: "AceHack" +state: "MERGED" +created_at: "2026-05-26T17:10:44Z" +merged_at: "2026-05-26T17:12:10Z" +closed_at: "2026-05-26T17:12:10Z" +head_ref: "otto-cli/b0820-flux-engine-second-engine-flag-toggle-2026-05-26" +base_ref: "main" +archived_at: "2026-05-26T17:23:43Z" +archive_tool: "tools/pr-preservation/archive-pr.ts" +--- + +# PR #5227: feat(B-0820): file Flux-as-second-engine row with flag-toggle + multi-cluster A/B substrate + +## PR description + +## Summary + +Files [B-0820](https://github.com/Lucent-Financial-Group/Zeta/blob/otto-cli/b0820-flux-engine-second-engine-flag-toggle-2026-05-26/docs/backlog/P2/B-0820-flux-engine-second-engine-support-flag-toggle-multi-cluster-experimentation-aaron-2026-05-26.md) per the maintainer 2026-05-26: *"backlog flux over argocd so we can have a flag and support both eventually"*. + +Composes with: +- **B-0816** (Helm-as-convergence-point + multi-engine substrate framing) — this row IS the concrete Flux-second-engine implementation of that architectural principle +- **B-0819** (AI-runbook substrate / conversation-as-UI) — long-term engine-UI-parity matters less; the AI-runbook layer is the actual operator surface +- **B-0813** (ClusterNode CRD) — gets \`engine\` field extension +- **B-0794** (cluster-bring-up substrate) — extends to flux-engine install path + +Six sub-targets named (engine flag in CRD; Helm-charts-first layout; Flux install; dependsOn↔sync-wave translation; UI considerations including Weave GitOps OSS / Capacitor / Headlamp; multi-cluster A/B runbook). + +Filed P2 — additive to ArgoCD-default per B-0816; gated on multi-cluster substrate to be operational first. + +## Test plan + +- [ ] Markdown lint clean +- [ ] BACKLOG.md drift check clean (regenerated) +- [ ] Cross-links to B-0813 / B-0794 / B-0816 / B-0819 resolve + +🤖 Generated with [Claude Code](https://claude.com/claude-code) + +## General comments + +### @chatgpt-codex-connector (2026-05-26T17:10:49Z) + +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-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..31741618ca --- /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:23:35Z" +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-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..e23a8cfe3a --- /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:24:31Z" +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).