System 8b3209fab5 Phase 3: release script, container limits, rehearsed rollback
Adds the deployment mechanism for the portfolio site. The site itself is not
deployed yet: Phase 2 has not produced a binary.

- deploy/deploy.sh: build + test (fail fast) -> releases/<ts> -> atomic
  `current` symlink flip -> docker compose up -d -> /healthz gate ->
  flip back to `previous` and exit non-zero on failure. `--rollback`
  restores the previous release in one command. Auto-detects the Go
  toolchain in /nix/store when `go` is not on PATH.
- deploy/docker-compose.yml: 127.0.0.1:8096, mem_limit == memswap_limit ==
  120m, capped json-file logs (10m x 3), restart unless-stopped.
- deploy/Dockerfile: runtime image only (alpine + prebuilt payload), so a
  release needs no toolchain, no network and no package install.
- deploy/rehearse.sh: repeatable proof (21 assertions, exit 0) of deploy,
  build fail-fast, health-gate rollback, --rollback and N3 restart.
- deploy/README.md + docs/phase-3-evidence.md: how it works, the build
  contract Phase 2 must satisfy, the Caddy block for Sam, and the open
  bind-address question (loopback-only vs reachable from .35).

Satisfies DoD items 1, 3 (container), 4, 8. Items 2, 5, 6, 7 need the Phase 2
binary and Sam's Caddy change; recorded as deferred with owners, not claimed.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-26 17:31:13 +11:00

Ai Resume — Paperclip build directory

This is the working directory for the Paperclip project Resume Ai. Paperclip builds here. Everything needed to build is in this folder; nothing outside it is required.

Relationship to the planning folder

Folder Holds Status
/home/sam/paseo/projects/resume_ai_system/ The why — research, cull decisions, stack rationale, evidence notes, content drafts Planning. Not the build. Sam works here
/home/sam/paseo/projects/resume_ai_system_paperclip_build/ The what — build spec, phase documents, reference material, and the site itself This folder. Paperclip works here

The planning folder is read-only reference. Do not edit it from here, and do not make the build depend on it — anything needed must be copied in.

Start here

  1. AGENTS.md — the build spec. Constraints, conventions, and the phase list. Read it before anything else.
  2. docs/phase-N-*.md — one document per phase: work, Definition of Done, out of scope, risks.
  3. reference/ — frozen decisions, stack and budgets, content map, acceptance tests.

Phases

# Phase Ships
1 Content source of truth content/ + validator
2 Mode A static site Browsable pre-rendered site, no AI
3 Public deployment Live URL behind Caddy
4 Corpus and retrieval content/ → Qdrant
5 Mode B console Streaming, cited answers
6 Guardrails, cost, kill switch Safe to leave public
7 Polish Logos, diagrams, code exhibits

Order is deliberate. Content first (both renderers need it). Deploy at Phase 3, not last — a live half-built URL is worth more than a perfect site that never ships. AI after deployment so it can never block launch.

Repository

This folder is the git working copy of sam/ai-resume. One repo, one product.

Previously held an abandoned Vite/React scaffold. It was replaced by this build spec; the history is retained because it honestly records the false start, and it is referenced in the site's "alternatives considered" content.

Ground rules

  • Do not touch other systems. No stopping containers, no editing other projects, no nixos-rebuild, no Caddy changes except the single block specified in Phase 3 — and that one Sam applies.
  • Mode A must work with every AI service stopped. Hard gate.
  • Never invent facts about Sam's career. If it is not in reference/ or content/, ask.
  • Secrets live in ~/.config/environment.d/ only.
  • All models go through OmniRoute.

Current state

  • Repo prepared, scaffold retired, build spec written
  • Phase 1 — content source of truth
  • Phase 2 — static site
  • Phase 3 — public deployment
  • Phase 4 — corpus
  • Phase 5 — AI overlay
  • Phase 6 — guardrails
  • Phase 7 — polish
Description
AI-powered resume showcase — React 19, terminal UI, Markdown rendering
Readme 868 KiB
Languages
Python 44.2%
Go 35.2%
CSS 5.6%
templ 5.2%
Shell 4%
Other 5.8%