# Vendored factory core — overdeck-owned

Upstream: https://github.com/disler/super-simple-software-factory @ de31374882e7a4e3e5b7bb9bd09e69dc2f779356 (MIT).
Vendored from `modules/harness/reference/sssf/templates/` per `docs/plans/2026-08-05-sssf-v3-adoption.md`.

This is the single copy. Projects never get their own; they supply only config,
their own ADWs, and prompt overrides.

Local deltas against upstream:
- `adw_modules/agent_pi.py` `context_window()` — tolerate a missing
  `~/.pi/agent/models.json` so the existing `_pi_catalog()` CLI fallback is
  reachable. pi does not guarantee that file exists.
- `adw_modules/agents.py` `load_config()` — resolve relative `prompt_engineering`
  and `harness_engineering` paths against the config file's own directory. Upstream
  reads them verbatim, which resolves them against the TARGET repo's cwd; the factory
  core is not in the target repo, so every path had to be absolute and therefore
  broke in any checkout but one.
- `sssf.config.yaml` — models point at `openai-codex` ids pi resolves; `db` and
  `data_dir` are absolute global paths, so a run leaves nothing in the repo it
  targets; prompt/harness paths are relative to this file; `protected_files`
  names the core's real location, since it no longer sits inside the target repo.

## Model registry

The 5.6 families are registered in `modules/workstation/pi/agent/models.json`
(symlinked from `~/.pi/agent/models.json`), not here — pi's built-in catalog is
static and predates them. That file is a supported merge point, so no pi code and
no vendored code is patched to reach 5.6.

Its `cost` rates are GPT-5.5's, used as a proxy: 5.6 rates are not published in
any local source. Token counts in the trace db are measured; dollar figures are
estimates derived from those proxy rates.
