feat(maint): upstream-replayable distribution model (immutable base, sync tool, self-update policy) #197

Merged
nsaspy merged 3 commits from feat/upstream-replayable-model into main 2026-09-10 06:30:44 +00:00
Owner

Summary

Makes a0-symbolics an upstream-replayable Agent Zero distribution instead of a conventional long-lived fork, per the maintenance-model redesign.

  • Canonical metadata: maint/upstream.toml pins the immutable upstream v2.10 base commit and the Symbolics distribution remotes; release identity is a0s-v<upstream-tag>.<series> resolved by helpers/symbolics_release.
  • Self-update safety: helpers/self_update.py and the durable updater now resolve update sources from the Symbolics distribution only; raw upstream sources and marker-less targets are refused; a0s- release tags replace bare upstream tags (WebUI + tests updated).
  • scripts/upstream-sync: status / plan / prepare / resume / verify / fork-surface — deterministic, isolated-worktree replays with rerere, range-diff, and machine reports.
  • Prompt overlay plugin: plugins/_a0s_prompts carries the Symbolics prompt deltas so upstream prompt files stay unmodified (fork surface shrinks).
  • Replay proof (real): 68/68 series commits replayed onto upstream v2.12 (b1cbd1f9) in an isolated worktree; 11 conflict stops resolved deliberately (tool_choice retry vs upstream transport rewrite, XML tool-call extraction vs upstream fast-fail guard, Responses-first default preserved); verify gate green (147 pytest, import/plugin/prolog smoke, docker compose, nix flake metadata, live /api/health boot). Evidence in maint/reports/prepare-v2.12/.
  • DOX: maint/AGENTS.md (new), root + scripts contracts, docs/guides/upstream-sync.md.

Verification

  • pytest focused set (main checkout): 141 passed.
  • pytest focused set (replayed v2.12 head): 147 passed + import/plugin/prolog smoke + docker compose config + nix flake metadata.
  • prolog-verify check: passed (machine-recorded observations).
  • Fork surface: vendor-modified 78 -> 77; 6 prompt files migrated out of core; budget tracked in maint/fork-surface.toml.

maint/upstream.toml still records v2.10 as the distributed base; bumping to the replayed v2.12 head is the upgrade-PR decision this prepares.

## Summary Makes a0-symbolics an upstream-replayable Agent Zero distribution instead of a conventional long-lived fork, per the maintenance-model redesign. - **Canonical metadata**: `maint/upstream.toml` pins the immutable upstream v2.10 base commit and the Symbolics distribution remotes; release identity is `a0s-v<upstream-tag>.<series>` resolved by `helpers/symbolics_release`. - **Self-update safety**: `helpers/self_update.py` and the durable updater now resolve update sources from the Symbolics distribution only; raw upstream sources and marker-less targets are refused; `a0s-` release tags replace bare upstream tags (WebUI + tests updated). - **`scripts/upstream-sync`**: `status` / `plan` / `prepare` / `resume` / `verify` / `fork-surface` — deterministic, isolated-worktree replays with rerere, range-diff, and machine reports. - **Prompt overlay plugin**: `plugins/_a0s_prompts` carries the Symbolics prompt deltas so upstream prompt files stay unmodified (fork surface shrinks). - **Replay proof (real)**: 68/68 series commits replayed onto upstream v2.12 (`b1cbd1f9`) in an isolated worktree; 11 conflict stops resolved deliberately (tool_choice retry vs upstream transport rewrite, XML tool-call extraction vs upstream fast-fail guard, Responses-first default preserved); verify gate green (147 pytest, import/plugin/prolog smoke, docker compose, nix flake metadata, live `/api/health` boot). Evidence in `maint/reports/prepare-v2.12/`. - **DOX**: `maint/AGENTS.md` (new), root + scripts contracts, `docs/guides/upstream-sync.md`. ## Verification - pytest focused set (main checkout): 141 passed. - pytest focused set (replayed v2.12 head): 147 passed + import/plugin/prolog smoke + docker compose config + nix flake metadata. - `prolog-verify check`: passed (machine-recorded observations). - Fork surface: vendor-modified 78 -> 77; 6 prompt files migrated out of core; budget tracked in `maint/fork-surface.toml`. `maint/upstream.toml` still records v2.10 as the distributed base; bumping to the replayed v2.12 head is the upgrade-PR decision this prepares.
- maint/upstream.toml pins the immutable upstream v2.10 base commit and the
  Symbolics distribution remotes; release identity is a0s-v<upstream>.<series>.
- helpers/symbolics_release resolves metadata and release identity.
- helpers/self_update + durable manager update from Symbolics distribution
  remotes only; raw upstream sources and marker-less targets are refused;
  a0s- release tags replace bare upstream tags (tests updated).
- scripts/upstream-sync: status/plan/prepare/resume/verify/fork-surface with
  isolated worktree replay, rerere, range-diff, and machine reports.
- plugins/_a0s_prompts carries the prompt debloat and persona overrides so
  upstream prompt files stay unmodified (fork surface shrinks).
- pytest: self-update policy, prompt overlay, upstream-sync contracts.
- scripts/upstream-sync: upstream-owned metric fix, verify --full (docker/nix),
  empty-pick skip, in-progress pick guard, worktree-log trust for resume
- maint/fork-surface.toml: generated classified budget
- maint/reports/prepare-v2.12/: replay evidence (plan, 11 conflict reports,
  range-diff, REPORT) proving the 68/68 v2.12 replay and green verify gate
- maint/AGENTS.md + root/scripts DOX: binding contracts for the upstream
  model; docs/guides/upstream-sync.md for maintainers
nsaspy merged commit 80eee46505 into main 2026-09-10 06:30:44 +00:00
Sign in to join this conversation.
No description provided.