Skip to content

Pending Implementation — Index

This file lists every ADR or spec that has been decided / designed but not yet implemented in code. It's the single place to look when you want to know "what's the latest un-implemented feature that's been discussed?"

How something gets on this list:

  • An ADR with implementation-status: pending (or in-progress) lives here until its code ships.
  • A spec with status: proposed lives here until it's authored as active against shipping code.

How something leaves this list:

  • The paired code PR merges. In the same PR, the ADR flips to implementation-status: implemented (and any superseded older ADRs get their status: superseded + superseded-by set). Move the row to the Recently shipped section at the bottom of this file (kept for ~6 weeks as historical context, then pruned).

This file is hand-maintained in the same PR as any ADR/spec status change. Future work may script generation from frontmatter — for now, the human-written list is small enough that keeping it in sync is trivial.

See CHANGE-MANAGEMENT.md for the full protocol and the doc change protocol in contributing.md §"Doc change protocol" for the operative rules.


Currently pending (newest first)

ADR / Spec What it ships Implementation status Date queued Owner
(none) All accepted ADRs are implemented. New entries land here when a docs-only ADR PR merges ahead of its paired code PR.

Recently shipped (last ~6 weeks; older entries are pruned)

ADR / Spec What it shipped Date shipped Branch
ADR-0006 Backend internal/margin/ evaluator + tick-replayer. WS reconnect hook (user:reconnect pub/sub) replays price_ticks since last_seen:{userId} and closes any positions that breached 50% at the breach price. 5-minute backstop sweeper catches stranded offline users. Pre-FT replay closes pre-FT washouts at their breach price before the FT snapshot. 2026-05-24 feat/amm-cfd-redesign-v1 (backend), feat/amm-cfd-redesign-v1-impl (docs)
ADR-0005 internal/sportmonks/postmatch.go extended with CFDCloser + MarginReplayer interfaces. positions.Service.CloseAtFTSnapshot enumerates every open position for the FT'd instrument and closes each at the snapshot current_price with reason=auto_exit_ft. Legacy buy-and-hold path runs alongside during rollout. 2026-05-24 feat/amm-cfd-redesign-v1 (backend), feat/amm-cfd-redesign-v1-impl (docs)
ADR-0004 Migrations 000024–000026 (cfd_positions, margin_events, instrument imbalance/k_mod cols). Two new Lua scripts (position_open.lua, position_close.lua) with atomic equity walk + cross-instrument margin checks. New REST surface POST/GET/PATCH/POST /api/positions/... via internal/positions/. SL/TP worker (internal/positions/stopwatch.go) tails price:*. Per-system-close push notifications (washout, SL/TP, FT auto-exit, margin call). FE BookPositionModal + PositionsPage + portfolio WS consumer + API client. 2026-05-24 feat/amm-cfd-redesign-v1 (backend + frontend), feat/amm-cfd-redesign-v1-impl (docs)
ADR-0010 Partial UNIQUE index on users.phone (legacy empty rows allowed); 409 phone_taken error path on duplicate. Closes the "one phone, N accounts" abuse vector. No SMS OTP — explicit cost/UX trade-off. 2026-05-22 feat/pre-reg-backend, feat/pre-reg-frontend, feat/pre-reg-docs
ADR-0009 Frontend: fixed 3 misleading "+500 bonus" strings to match v2 economics (referrer-only, on first trade). Removed the fake WelcomeCelebration referee toast. Wired ?invite=<id> end-to-end alongside ?ref= so per-link analytics works. Backend already correct — pure FE work + comment tightening in bonus.go. 2026-05-22 feat/pre-reg-backend, feat/pre-reg-frontend, feat/pre-reg-docs
ADR-0008 Single-name registrations allowed (BE drops empty-lastName check; FE tightens nameLock to split.first && split.last). Age min 18, no upper bound (both tiers). New public route GET /api/public/referral/validate that the form calls on debounce. 2026-05-22 feat/pre-reg-backend, feat/pre-reg-frontend, feat/pre-reg-docs
ADR-0007 New Fiber middleware ComingSoonGate(store, allowAdmin=true) on the protected route group (returns 503). Frontend gate stays as UX layer. Closes the curl-around-frontend gap and resolves the tutorial-vs-coming-soon redirect loop as a free consequence (FE guards added in Register.tsx, TutorialOverlay.tsx, App.tsx). 2026-05-22 feat/pre-reg-backend, feat/pre-reg-frontend, feat/pre-reg-docs

Why this file exists

The change-management system (Living Spec + ADR + per-commit walkthrough) is excellent at capturing the history of what was decided and the current truth of what runs. It was less good at answering the question: "what's been designed but not yet built?" A contributor browsing architecture/decisions/ could see ADRs with status: accepted but couldn't tell from the status alone whether the code reflecting them had landed yet.

PENDING.md is the answer. One place to look. The frontmatter field implementation-status: pending on each ADR is the source of truth; this file is the index.