Skip to content

Decision index

Architecture decision records live in the repo they affect, as docs/decisions/NNNN-kebab-slug.md. This page is only an index. It exists so you can answer “what have we decided” without already knowing which repo to look in.

It deliberately does not restate any decision. Follow the link — the ADR is the record, and a summary here would be a second copy to keep in sync. Status shows the canonical token only; where an ADR adds a sentence of rationale to its status line, read it there.

This site. All records

ADR Title Date Status
0001 Rebuild docs.ajomark.dev as a Starlight site on Cloudflare Pages 2026-09-01 Accepted
0002 Keep the site code minimal, and move it to pnpm 2026-09-09 Accepted

The Mobility One web application and its monorepo. All records

ADR Title Date Status
0001 ECS Fargate over SST/OpenNext (Lambda) 2026-02-20 Accepted
0002 Turborepo monorepo 2026-02-20 Accepted
0003 context-mode integration 2026-03-16 Accepted
0004 Superpowers + SDD merged workflow 2026-03-16 Superseded by ADR-0014
0005 Multi-Tenant Shared Apps for Posting and Search 2026-03-17 Accepted
0006 Internal Admin Dashboard — Stack and Architecture 2026-05-12 Accepted
0007 Admin compute — Cloudflare Containers vs. ECS Fargate 2026-05-15 Rejected
0008 shadcn/ui + Tailwind CSS over MUI for the UI primitive layer 2026-05-15 Superseded by ADR-0009
0009 Adopt MUI as the enterprise UI component library (reverses ADR-0008) 2026-06-29 Superseded by ADR-0015
0010 Migrate the monorepo from npm to pnpm (supply-chain hardening) 2026-06-30 Accepted
0011 GitHub OIDC three-role CI/CD for AWS 2026-07-13 Accepted
0012 Adopt the shared Ajomark Header package for vertical headers 2026-07-16 Accepted
0013 next-intl for consumer-app localization 2026-07-29 Accepted
0014 Spec-driven development and skill distribution 2026-08-23 Accepted
0015 shadcn/ui on Base UI as the UI primitive layer (reverses ADR-0009) 2026-08-24 Accepted
0016 Extract api-server into the m1-api repository 2026-09-11 Accepted

The Mobility One REST API, extracted from the m1-web monorepo. All records

ADR Title Date Status
0001 develop as the default branch, with staging and main reserved 2026-09-14 Accepted

Database schema and the data model behind Mobility One. All records

ADR Title Date Status
0001 PostgreSQL over the legacy MySQL 2026-07-02 Accepted
0002 Database-as-code with Atlas 2026-07-02 Accepted
0003 UUID primary keys, not auto-increment 2026-07-02 Accepted
0004 numeric for money 2026-07-02 Accepted
0005 Location embedded on listings, not normalised 2026-07-02 Accepted
0006 Exactly one seller via a CHECK 2026-07-02 Accepted
0007 varchar + CHECK for enumerations, not Postgres enum 2026-07-02 Accepted
0008 updated_at maintained by the application, no trigger 2026-07-02 Accepted
0009 Introduce vehicles / organizations / users + foreign keys 2026-07-02 Accepted
0010 Vertical-agnostic vehicle — typed core + JSONB attributes 2026-07-02 Accepted
0011 Vertical on the listing; cross-listing = one vehicle → many listings 2026-07-02 Accepted
0012 Canonical UPPERCASE category codes, shared with the reference dataset 2026-07-02 Accepted
0013 OpenSearch as the read side; Postgres as the system of record 2026-07-02 Accepted
0014 Foreign-key delete semantics — CASCADE sellers, RESTRICT vehicle 2026-07-02 Accepted
0015 Official Atlas edition; lint via a free login 2026-07-02 Accepted
0016 OpenSearch sync mechanism 2026-07-02 Proposed
0017 CI migration linting via Squawk (Atlas lint is Pro-only) 2026-07-02 Accepted
0018 Co-locate the dev-database Terraform in m1-atlas (not the infra repo) 2026-07-06 Accepted
0019 Trunk-based branching; environments via gated promotion, not branches 2026-07-07 Accepted
0020 Vehicle reference taxonomy (mirror of ajo-reference-data-maintenance) 2026-08-13 Accepted
0021 Declarative apply for local iteration; versioned migrations stay the deploy artifact 2026-08-19 Proposed
0022 Multilingual content support 2026-07-09 Proposed
0023 Multilingual content storage mechanism 2026-07-09 Proposed
0024 Media storage and source provenance for ingested dealer listings 2026-07-10 Proposed
0025 Commercial listing fields — financing, delivery, campaign, VAT deductibility 2026-07-10 Proposed

The multi-tenant image service. All records

ADR Title Date Status
0001 Unified multi-tenant image Lambda 2026-07-03 Accepted
0002 Custom origin header vertical routing 2026-07-03 Accepted
0003 URL path scheme — prefix over suffix 2026-07-03 Accepted
0004 Zip Lambda + sharp runtime 2026-07-03 Accepted
0005 Caching, abuse-prevention, IAM & response delivery 2026-07-03 Accepted
0006 Infrastructure defined in the infra repo 2026-07-03 Accepted
0007 Function URL origin authentication 2026-07-08 Accepted
0008 Size policy — open cap vs. per-vertical whitelist 2026-07-03 Accepted
0009 Encoding parity 2026-07-10 Superseded by ADR-0016
0010 EXIF orientation vs. explicit rotation 2026-07-03 Proposed
0011 Source-bucket ownership model 2026-07-07 Accepted
0012 Watermarking model 2026-07-03 Accepted
0013 Dimension reporting & observability 2026-07-03 Proposed
0014 AVIF output & format negotiation 2026-07-03 Proposed
0015 Explicit rotation direction — clockwise 2026-07-09 Accepted
0016 Encoding matches nettix exactly (q88, 4:4:4) 2026-07-23 Accepted
0017 Source-image size guard 2026-07-27 Accepted
0018 Vertical routing header is named x-vertical-id 2026-08-17 Accepted
0019 Cache invalidation by tag 2026-08-24 Proposed
0020 enlarge token — opt-in upscaling 2026-09-07 Accepted
0021 30-day TTL with wildcard invalidation for takedowns 2026-09-04 Accepted
0022 Listing-level (ad) cache tags for folder-wide takedowns 2026-09-07 Proposed

The supply-chain security dashboard behind scorecard.ajomark.dev. All records

ADR Title Date Status
0001 GitHub App for cross-repo artifact access 2026-07-03 Accepted
0002 AWS authentication via OIDC 2026-07-03 Accepted
0003 Static single-file HTML output (no SPA framework) 2026-07-03 Accepted
0004 Scorecard data format is JSON, not SARIF 2026-07-03 Accepted
0005 Thin-caller workflows over a reusable workflow, rolled out by script 2026-07-03 Accepted
0006 S3 history snapshots on every run 2026-07-03 Accepted
0007 No PR gating on Scorecard regressions — informational only 2026-07-03 Accepted
0008 CodeQL tracked separately — SARIF diffed into its own namespace 2026-07-03 Accepted
0009 Additional SARIF scanners — Semgrep CE and Trivy alongside CodeQL 2026-07-03 Proposed

The organisation’s special repository — the reusable workflows every other repo calls. All records

ADR Title Date Status
0001 Caller rules for internal reusable workflows 2026-09-10 Accepted

Terraform-managed GitHub organisation configuration. All records

ADR Title Date Status
0001 Manage m1-web branch protection with imported rulesets 2026-08-23 Superseded by ADR-0003
0002 Enable a merge queue on m1-web’s default branch 2026-08-31 Accepted
0003 Limit repository management to the org’s management repos 2026-09-10 Accepted
0004 Add m1-infra to the managed list, protection-only 2026-09-14 Accepted