Skip to content

feat(B-0854): zeta-install.sh → ace install zeta migration trajectory — declarative package.json-style manifest like ../scratch and ../SQLSharp (Aaron 2026-05-27)#5405

Merged
AceHack merged 1 commit into
mainfrom
backlog/b-0854-ace-install-zeta-migration-trajectory-2026-05-27
May 27, 2026
Merged

feat(B-0854): zeta-install.sh → ace install zeta migration trajectory — declarative package.json-style manifest like ../scratch and ../SQLSharp (Aaron 2026-05-27)#5405
AceHack merged 1 commit into
mainfrom
backlog/b-0854-ace-install-zeta-migration-trajectory-2026-05-27

Conversation

@AceHack
Copy link
Copy Markdown
Member

@AceHack AceHack commented May 27, 2026

Summary

  • Operator-named migration trajectory: imperative bash installer → declarative Ace-package-manager-driven install
  • Reference shape from ../scratch + ../SQLSharp on operator's machine (package.json + bunfig.toml + bun.lock + Directory.Build.props)
  • 5-phase trajectory; Phase 0 + Phase 1 = smallest substrate slice (manifest stub at Zeta repo root)
  • 9 sub-rows enumerated (B-0854.1-9)
  • Composes with full Ace cluster: B-0288 CLI (parent dep) + B-0824 meta-PM + B-0816 ArgoCD-max + B-0742 distributable-POC + B-0821 dep-graph + B-0822 diamond-res + B-0777 ontology-negotiation + B-0247 lineage

Honors operator's "we just spoke about this earlier"

Existing Ace cluster substrate (B-0288 + 0742 + 0777 + 0816 + 0821 + 0822 + 0824 + 0247 + ace-package-manager agenda + skill-crystallization-pipeline trajectory) covers the architecture + CLI primitives but does NOT explicitly name "Zeta installs itself via Ace" migration. This row is the OPERATIONAL bridge that closes the dogfooding loop without minting redundant architecture.

Rule 0 preserved

Per .claude/rules/rule-0-no-sh-files.md: install-graph carve-out preserved through all phases. zeta-install.sh shrinks at Phase 4 (becomes thin bootstrap wrapping ace install zeta); full retirement only after ace install zeta is canonical entrypoint.

Composes with adjacent in-flight work

  • B-0852 — cred persistence (the Ace-driven install respects same cred-persistence flow)
  • B-0853 — sigstore signing (Ace verifies manifest signature before fetch)

Test plan

  • Backlog index regen verified (BACKLOG.md shows B-0854 at P1)
  • Composes_with reciprocity check (whole Ace cluster gets reciprocal back-ref when this row's implementation work begins)
  • Phase 0 sub-row (B-0854.1 inventory) first concrete substrate when implementation work claims parent row

🤖 Generated with Claude Code

…ry (Aaron 2026-05-27)

Operator-named migration trajectory: imperative bash installer →
declarative Ace-package-manager-driven install (like ../scratch +
../SQLSharp already do). Composes with existing Ace cluster:
B-0288 CLI (parent dep) + B-0824 meta-PM + B-0816 ArgoCD-max +
B-0742 distributable-POC + B-0821 dep-graph + B-0822 diamond-res +
B-0777 ontology-negotiation + B-0247 Ace lineage.

5-phase trajectory:
- Phase 0: inventory + manifest design (this row's smallest slice)
- Phase 1: package.json + bunfig.toml + bun.lock stub (like ../scratch)
- Phase 2: ace.yaml Ace-package manifest
- Phase 3: `ace install zeta` works from fresh USB
- Phase 4: zeta-install.sh retires (Rule 0 carve-out shrinks)
- Phase 5: Zeta becomes Ace POC #2 (after k8s-local-stack per B-0742)

9 sub-rows B-0854.1-9 enumerated. Honors operator's "we just spoke
about this earlier" via explicit composes_with chain back to prior
Ace cluster substrate (no redundancy minted).

Per Rule 0 (.claude/rules/rule-0-no-sh-files.md): install-graph
carve-out preserved through all phases; only shrinks at Phase 4
when ace install zeta becomes canonical.
Copilot AI review requested due to automatic review settings May 27, 2026 06:02
@AceHack AceHack enabled auto-merge (squash) May 27, 2026 06:02
@chatgpt-codex-connector
Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@AceHack AceHack merged commit 95fa4ae into main May 27, 2026
30 checks passed
@AceHack AceHack deleted the backlog/b-0854-ace-install-zeta-migration-trajectory-2026-05-27 branch May 27, 2026 06:05
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a new P1 backlog row for migrating Zeta installation from zeta-install.sh toward a declarative Ace-managed ace install zeta flow, and updates the generated backlog index to include it.

Changes:

  • Adds B-0854 with phased migration plan and Ace-cluster cross-references.
  • Updates docs/BACKLOG.md with the new P1 entry.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.

File Description
docs/backlog/P1/B-0854-zeta-install-sh-to-ace-install-zeta-migration-trajectory-package-json-style-declarative-manifest-like-scratch-and-sqlsharp-aaron-2026-05-27.md New backlog row describing the Ace install migration trajectory.
docs/BACKLOG.md Generated backlog index entry for B-0854.

- B-0822
- B-0777
- B-0247
- B-0852
### Phase 3 — `ace install zeta` works from a fresh USB

- Live USB boots → Ace CLI present in live overlay → `ace install zeta` runs the declarative install
- Existing `zeta-install.sh` becomes a thin bootstrap that does `curl ... | ace install zeta` OR `nix run github:.../ace -- install zeta`
AceHack added a commit that referenced this pull request May 27, 2026
…0 substrate for Ace migration trajectory (14 sub-steps; 12 declarative-input categories; substrate-anchor for B-0852/0853/0855/0856 cross-refs) (#5420)

* docs(B-0854.1): zeta-install.sh step-state-machine inventory — Phase 0 substrate for Ace migration trajectory

B-0854 sub-row .1 (Phase 0; smallest pure-analysis slice). Documents
the EXISTING imperative bash state-machine in zeta-install.sh so the
B-0854 Phase 2 declarative-Ace-manifest schema can express the same
surface.

Inventory covers:
- Top-level entry (REPO_URL, HOST, ZETA_AUTO_CONFIRM env semantics)
- Step-by-step state machine for all 14 sub-steps (1, 2, 3, 4, 5, 6,
  6.5, 6.55, 6.6, 6.7, 6.8, 6.9, 6.95, 7) with inputs/outputs/side-
  effects/failure-modes/declarative-equivalent per step
- Cross-cutting: operator-prompt accumulation count (7 prompts today;
  B-0852 phase-split target = 1 passphrase prompt)
- Idempotency surface table — informs B-0855 architectural fix scope
- 12 distinct declarative-input categories the Ace manifest must
  capture (Phase 2 sub-row scope)
- Files-generated-during-install table mapping to B-0852.5 cred-
  manifest entries (6 mapped, 3 candidate-expansion items named)

Snapshot date: 2026-05-27 (origin/main 70596a8; PR #5417 cosign
merge). Future refreshes should re-snapshot when zeta-install.sh
changes substantially.

Composes with already-landed substrate-engineering arc:
- B-0852 + sub-rows (cred persistence) — PR #5403/#5411/#5414
- B-0853.1 (cosign signing) — PR #5417 + fix-fwd #5419
- B-0855 (self-register architectural fix) — PR #5412
- B-0856 Path A (deferred /tmp coordination) — PR #5413
- B-0854 parent (Ace migration trajectory) — PR #5405

No code change; pure documentation. Doesn't affect ISO substrate;
batches into substrate-engineering history independent of next ISO
build cycle.

* fix(B-0854.1): escape | inside code spans for MD056 table-column-count compliance

* fix(B-0854.1): 10 Copilot accuracy corrections — verified against actual zeta-install.sh content

PR #5420 Copilot review caught 10 substantive accuracy issues in the
B-0854.1 inventory doc. All 10 verified against origin/main 70596a8's
actual zeta-install.sh content + corrected.

Corrections:
- Name attribution → role-ref ("the human maintainer")
- Step 1 inputs: actual `lsblk -d -p -n -o NAME,TYPE,RM,RO,TRAN` + awk
  filter (not made-up NAME,SIZE,MODEL,TRAN,ROTA)
- Step 3 side effects: `sgdisk --zap-all` only (not `wipefs -af` too)
- Step 4: actual `sgdisk` (NOT `parted`); GPT layout via -n + -t flags;
  whole-disk longhorn partitions on DATA_DISKS too
- Step 6: `nixos-generate-config --root /mnt --force` (NOT
  --no-filesystems; --force overwrites existing config)
- Step 6.5: no MAGIC_NUMBER (didn't exist in script); INJECT_OK gate
  flag; iter-4 v1 manual-config-edit fallback path
- Step 6.9: SELF_REG_OK flag; documented graceful-skip path lines 731+
- nixos-install: actual line ~1004 (NOT 1096-1340); section renamed
  to "nixos-install (the actual build; ~line 1004)" since the prior
  range was wrong
- Step 7: actual lines 1261-1336 (NOT 1341-1352); banner driven by
  GH_AUTH_OK/GH_KEY_COUNT/INJECT_OK/SELF_REG_OK (NOT MAGIC_NUMBER);
  conditional sections listed in declarative equivalent

Resolves 10 Copilot threads on PR #5420.

Root cause of the inaccuracies: original draft was written from
`grep -E "^# ── Step"` summaries + recollection of script behavior,
not careful per-step body reads. Discipline lesson: when authoring
substrate-anchor docs claiming to inventory existing code, the read
must be careful per-line, not skim-grep summary. Composes with
.claude/rules/verify-existing-substrate-before-authoring.md at the
inventory-substrate scope (verify-content-of-thing-being-inventoried
before authoring claims about its content).

---------

Co-authored-by: Lior <lior@zeta.dev>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants