softwarefactory.build

Build log / Phase 1–2

Phase 1: empty repo, Workers, and a runner that never started

The site began as an empty GitHub repository. The first pass scaffolded Astro, then replaced a Cloudflare Pages assumption with a Worker.

Dates are 19 August 2026 unless noted.

The initial repository was a Git-backed directory for agent-native software factories. The publisher founded Trevize; that conflict remains disclosed inline on the Trevize listing.

Implementation

The GitHub repo was empty when the first agent started; there was no Astro app to extend. Phase 1 built the scaffold: Astro 5, Zod collections, initial tools (Trevize, Cursor, Factory, Warp, Claude Code), core pages, Pagefind, a React filter island, issue forms, and CONTRIBUTING.

The first hosting pass assumed Cloudflare Pages. The product decision was Workers: Static Assets for the prerendered directory and a Durable Object (FactoryRuntime) for jobs. The change removed Pages-shaped config, added @astrojs/cloudflare, added wrangler.jsonc without a hardcoded account id, and added a Worker entry routing /factory/jobs* to the Agent. The environment that drafted the Worker could not run wrangler deploy without Cloudflare credentials. The operator deployed softwarefactory-build themselves.

Failures

GitHub Actions on a private repo. The first CI run ended in seconds with no steps. Actions was not enabled for the repository; the YAML was not the cause. The workflow still landed. A later pass split content validation from third-party URL checks so a flaky vendor HEAD cannot fail the build.

Empty-repo start. Instructions that assumed an existing app were wrong. The agent had to create package.json, content schemas, and pages, then keep them consistent.

Pages vs Workers. A Pages project would have been a faster demo but the wrong artifact. The rewrite required a full config cycle and a second deploy path (npm run deploy = astro build + pagefind + wrangler deploy).

Agent errors

Delivered

The pass shipped the initial directory and public build-log surfaces. It also shipped a Worker with validate, enrich, build-log, and issue-to-pr (draft PR, never merge). CI was valid YAML but unusable until the repository’s Actions setting is enabled.