Skip to Content
EngineeringDecisions (ADRs)ADR 0010 Repository layout and deferred release

ADR 0010: Repository layout, local repositories without remotes, release deferred

Status
Accepted
Date
Deciders
Founder, product team

Context

The workspace holds one directory per surface (site/, docs/, api/, web/, agent/, deck/, infra/) plus workspace-level records (forge.config.json, plan, contract, decisions, claims register, changelog, shared/). No git hosting has been chosen, no cloud account, registry, cluster or DNS zone exists, and the domain trovensa.com is not verified. Ports 3000, 8000 and 5433 are occupied on the development machine by other projects (verified with lsof on 2026-09-13).

Decision

  • Each surface directory is its own git repository on main with no remote; the workspace root is also a repository that ignores the seven surface directories. org.gitHost is local and org.gitOrg is trovensa until a host is chosen.
  • The cloud release (forge moves 6 and 8) is deferred. Infra is written and validated statically (terraform validate, kustomize render, release.sh --dry-run, the release-script self-test); release.* values in forge.config.json stay placeholders; the first real release follows infra/RUNBOOK-first-release.md.
  • Live verification is substituted by a local pass: curl matrix over the dev servers and static exports, and a browser pass at 1440x900 and 390x844 in both themes with zero console errors, screenshots kept under docs/public/design/shots/ and the site root.
  • Local ports: web 3100, API 8100, Postgres 5434.

Consequences

  • Commits happen only in the main session with the user’s go-ahead; subagents never commit.
  • hosts.* are design targets; nothing answers on them yet, and the marketing copy says so.
  • The status banner on PRODUCT-PLAN.md will name this ADR for the deferred moves.

Alternatives considered

  • One monorepo: simpler locally, but the method deploys surfaces independently with their own tags; rejected.
  • Release to a throwaway AWS account now: needs credentials and a domain the user has not provided; rejected for this run.

Follow-ups

  • Choose a git host and add remotes; update org.gitHost / org.gitOrg and the contract repo line.
  • Provision the account, registry, cluster and zone with the runbook, then run moves 6 and 8 for real.