diff --git a/FACTORY.md b/FACTORY.md index a863309..d5cdc18 100644 --- a/FACTORY.md +++ b/FACTORY.md @@ -193,7 +193,7 @@ factory* — that swap is still pending, so steady-state Forge does not yet run | toon-meta | npm (docs) | `parallel-planner-with-review` | markdownlint / link-check / JSON-validate (`npm run gate`) | Live — scaffolded, gate proven, **merged agent PR** | [toon-meta#201](https://github.com/toon-protocol/toon-meta/pull/201) (merged) | Docs factory, sequenced last; no `package.json` before scaffolding. Markdownlint baseline is real-but-lenient (`.markdownlint-cli2.jsonc`) — ~40 structural rules enforced, noisy stylistic rules disabled by policy pending a cleanup slice. | | Forge | pnpm | `parallel-planner-with-review` | eslint / typecheck / vitest / build | Live (stage-0) — image builds, dry-run plan proven, **2 merged agent PRs** on raw `@ai-hero/sandcastle`; self-host swap to `forge-core` still pending ([Forge#15](https://github.com/toon-protocol/Forge/issues/15)) | [Forge#20](https://github.com/toon-protocol/Forge/pull/20), [Forge#21](https://github.com/toon-protocol/Forge/pull/21) (merged) — under stage-0 raw sandcastle; the forge-core parity proof is [Forge#15](https://github.com/toon-protocol/Forge/issues/15) | **9th row, hand-added at bootstrap** per [#198](https://github.com/toon-protocol/toon-meta/issues/198). The factory *manager* is itself a factory *consumer*. The **only `forge-core`-driven row** at steady state (raw `@ai-hero/sandcastle` at stage-0, swaps to forge-core at self-host). Holds **zero org state** — a stateless client of this repo. Scaffold [Forge#1](https://github.com/toon-protocol/Forge/pull/1); `FACTORY_SPEC.md` [Forge#2](https://github.com/toon-protocol/Forge/pull/2); stage-0 [Forge#3](https://github.com/toon-protocol/Forge/pull/3). | | fractal | pnpm | `parallel-planner-with-review` | eslint / typecheck / vitest / build (+ `format:check`) | Scaffolded — gate green (local); image-build + dry-run plan proofs pending; no merged-PR proof required (pnpm repetition) | — | **10th row, hand-added at bootstrap** from founding spec [toon-meta#245](https://github.com/toon-protocol/toon-meta/issues/245) (Fractal — agent-grown dimensions on TOON; seed → spec → ditto loop → NIP gate → relay → portal). `.sandcastle/` is the proven relay/Forge stage-0 recipe verbatim (deterministic push+PR, fail-loud verification, sandbox-secrets passthrough). Domain glossary lives in-repo (`CONTEXT.md`, migrated from toon-meta `docs/fractal/`). The factory **builds** fractal; it never **runs** dimensions — fractal's own ditto loop closes through the NIP gate, not a CI provider. | -| buzz | cargo + pnpm (Justfile-driven) | `parallel-planner-with-review` | `just fmt-check` / `just desktop-tauri-fmt-check` / `just clippy` (`-D warnings`) / `just test-unit` (infra-free nextest) / `just desktop-check\|test\|build` / `just web-check\|build` | Scaffolded — image builds (local + Actions), in-image gate proven (zero pre-existing debt, no soft-gates); dry-run plan + first merged agent PR pending (new variant — needs its own merged-PR proof) | — (scaffold PR [buzz#24](https://github.com/toon-protocol/buzz/pull/24), merged `52629ee` — scaffold + stage-A capture-baseline, **not** an `agent:implement` proof) | **11th row** ([#257](https://github.com/toon-protocol/toon-meta/issues/257), epic [#256](https://github.com/toon-protocol/toon-meta/issues/256)); the **only fork row** (fork of `block/buzz`) and first polyglot/Rust variant. 26-member cargo workspace (rust 1.95.0 via `rust-toolchain.toml`; `desktop/src-tauri` excluded from the workspace) + pnpm@11.4.0 workspace (desktop/web/admin-web, node 24.15.0) + Flutter 3.41.7 mobile; toolchains Hermit-pinned (`bin/`); the Justfile is the single gate driver (upstream `ci.yml` = 1085 lines / 20 paths-filtered jobs calling `just` targets). Stage-A capture-baseline **done**: `.sandcastle/gate-baseline.json` (relay#77/store#59 shape) at main@`4d47aa8`; CI-side numbers sampled from upstream `block/buzz` (fork had zero Actions history) and labeled as such; known upstream gap: no admin-web CI job. Documented exclusions (still run in upstream `ci.yml`; KEEP rule — no upstream workflow touched): Flutter/mobile, src-tauri compile-level checks (GTK/WebKit + sidecar stubs), Playwright e2e, Postgres/Redis integration, cargo-deny, cross-compile, signing/canary/release. Engine `@ai-hero/sandcastle@0.12.0` exact pin; nested `.sandcastle/package.json` `{"type":"module"}` (root has no `type` field — connector#392/#393 gotcha preempted); `.sandcastle/.gitignore` + `.env.example` included (fractal#15 gotcha avoided); labels `agent:implement`/`agent:review` created. Dry-run is unblocked CI-side only (org `CLAUDE_CODE_OAUTH_TOKEN` visible to the repo; no token in any local `.sandcastle/.env`). Fork noise: `docker.yml` jobs fail on the fork with ghcr `permission_denied` (App installation exists only on `block/buzz`) — pre-existing, may warrant gating off later. | +| buzz | cargo + pnpm (Justfile-driven) | `parallel-planner-with-review` | `just fmt-check` / `just desktop-tauri-fmt-check` / `just clippy` (`-D warnings`) / `just test-unit` (infra-free nextest) / `just desktop-check\|test\|build` / `just web-check\|build` | Live — scaffolded, image builds (local + Actions), in-image gate proven (zero pre-existing debt, no soft-gates), dry-run plan proven, **merged agent PR** (the new-variant proof) | [buzz#65](https://github.com/toon-protocol/buzz/pull/65) (merged 2026-08-03, closes buzz#56 — thread-focus-mode anchor deflake). Scaffold PR [buzz#24](https://github.com/toon-protocol/buzz/pull/24) (merged `52629ee`) was scaffold + stage-A capture-baseline only, not the proof | **11th row** ([#257](https://github.com/toon-protocol/toon-meta/issues/257), epic [#256](https://github.com/toon-protocol/toon-meta/issues/256)); the **only fork row** (fork of `block/buzz`) and first polyglot/Rust variant. 26-member cargo workspace (rust 1.95.0 via `rust-toolchain.toml`; `desktop/src-tauri` excluded from the workspace) + pnpm@11.4.0 workspace (desktop/web/admin-web, node 24.15.0) + Flutter 3.41.7 mobile; toolchains Hermit-pinned (`bin/`); the Justfile is the single gate driver (upstream `ci.yml` = 1085 lines / 20 paths-filtered jobs calling `just` targets). Stage-A capture-baseline **done**: `.sandcastle/gate-baseline.json` (relay#77/store#59 shape) at main@`4d47aa8`; CI-side numbers sampled from upstream `block/buzz` (fork had zero Actions history) and labeled as such; known upstream gap: no admin-web CI job. Documented exclusions (still run in upstream `ci.yml`; KEEP rule — no upstream workflow touched): Flutter/mobile, src-tauri compile-level checks (GTK/WebKit + sidecar stubs), Playwright e2e, Postgres/Redis integration, cargo-deny, cross-compile, signing/canary/release. Engine `@ai-hero/sandcastle@0.12.0` exact pin; nested `.sandcastle/package.json` `{"type":"module"}` (root has no `type` field — connector#392/#393 gotcha preempted); `.sandcastle/.gitignore` + `.env.example` included (fractal#15 gotcha avoided); labels `agent:implement`/`agent:review` created. Dry-run plan proven 2026-08-02 (local run, empty-backlog valid pass; token via the gitignored `.sandcastle/.env`). First live `agent:implement` run (buzz#56) exposed a **scaffold drift**: buzz's `onSandboxReady` hook had `gh auth setup-git` but was missing the org-wide `git config --unset-all 'http.https://github.com/.extraheader'` that every other factory repo pairs with it — actions/checkout persists a read-only-token `AUTHORIZATION` extraheader in the repo-local git config, the engine bind-mounts `.git` into the sandbox, and an explicit header beats the credential helper, so the in-sandbox `git push` was rejected (while in-sandbox `gh` API calls, which read `GH_TOKEN` directly, worked — the fail-loud open-pr verification caught it). Fixed in [buzz#61](https://github.com/toon-protocol/buzz/pull/61), which also ported connector's redact-then-upload agent-log artifact steps (buzz previously uploaded no agent logs, making the first failure undiagnosable; redaction gained an `nsec1…` Nostr-key pattern). Retry then produced the merged proof PR buzz#65. Fork noise: `docker.yml` jobs fail on the fork with ghcr `permission_denied` (App installation exists only on `block/buzz`) — pre-existing, may warrant gating off later. | **Forge (9th — [#198](https://github.com/toon-protocol/toon-meta/issues/198)):** the factory *manager* is itself a factory *consumer* — it runs its own `.sandcastle/` like every