offplan online
preview · offplan.online

Working drafts, live.

Latest plans, workstreams, design explorations, research, and reference docs from os/docs/rendered/. Filter by type, or open any card to read the full document. Older iterations of the same artefact fold into Earlier iterations.

Updated: 2026-05-11 23:04 UTC · Files: 126 · Source: github.com/offplan-online/os

Approved Sessions rt-260511-06
LATEST

RT-260511-06 — Idle-reflection R1–R8 + hook fixes + preview-site PF1/PF2/PF3

Eight-hour session ratcheted the idle-reflection workstream from R1 design → R8 dogfood-ready in a single push: 7 parallel worktree-isolated agents shipped R2–R7 (dispatcher + launchd + reflection script + cost envelope + /handoff merge mode + docs + 93 new tests; 334 total green), and the launchd LaunchAgent is now live on Roman's Mac firing every 10 min. Two related infrastructure bugs were root-caused + fixed in the same wave: post-commit hook now has a worktree-guard so agent worktrees can no longer drift main's HEAD, and a sibling post-merge hook now delegates so merge commits auto-push too. Preview-site fixes: PF2 went live (meta summary populated); PF1 source-fix empirically failed (CF scans <code> tags too) → Roman to toggle dashboard; PF3 mini-/plan ratified + shipped (mixed per-type empty state, 117 about-pages regenerated). Worker-deploy attempt halted cleanly when CF MCP returned [object Object] on every call — 140-line diagnosis doc explains the upstream serialiser bugs. 25 commits, 163 files, +5125/-610. Clean main at 9459a28.

ops · claude-code · automation · infra · ux RT-260511-06.html
Earlier iterations (5)
Earlier iterations (9)
Approved Plans repo-as-canonical-store
LATEST

Repo as canonical store

Invert the source of truth: the git repo becomes canonical for sessions, workstreams, plans, ADRs, and learnings; /handoff and /resume write only local files, with Notion as a downstream read-only mirror updated by a future async sync worker.

v1.2 — Phase 7 plan body schema adds ## Changelog convention; Phase 11b enumerates <meta> tags emitted by render_md.py; new Phase 11d for design-exploration gallery renderer (Tier 2).

ops · claude-code · notion · architecture · infra repo-as-canonical-store.html
Earlier iterations (2)
Earlier iterations (8)
Approved Sessions rt-260511-05
LATEST

RT-260511-05 — Vault P10–P13 + hardening + worker + idle-reflection plan + audits + Notion CONV import

Eight-hour push that took the vault polish workstream from blocked → all 9 phases done (P10–P13), shipped a Notion-zero hardening pre-commit gate, ported sync_to_notion_oneshot.py to a Cloudflare Worker (built, not deployed), onboarded Obsidian 1.12.7 + CLI to the Forge Mac mini over SSH, ratified plans for preview-search (P11f) and idle-session-reflection, backfilled 39 session titles/summaries + 17 ADR names + 5 brand-new ADRs (0018–0022), added 60 tests (171 → 231), wired Notion OAuth MCP and replaced the .env integration token, imported the full Notion Sessions DB to local files via CONV-INDEX.md, and fixed a Roman-reported link-stacking bug across 115 about-pages. ~15 subagents dispatched in 5 waves; clean main at d701662.

ops · claude-code · architecture · infra · ux · notion RT-260511-05.html
Approved Sessions sk-260511-03
LATEST

SK-260511-03 — admin Phase 4 unblocked: 14-team.html + Settings hub scope + per-module 4-step loop + brandbook on preview

Phase 4 admin-panel-rbac-audit unblocked out-of-order (Phase 3 project-editor untouched). 14-team.html shipped in brandbook v2 canon — Variant A 'Table-first' IA picked from 3-variant wireframe sweep; 5-role member table + sticky role legend rail + role-gated pending invites (M20) + Free Guest with Mered+H&deM Riviera narrative + View-as-Agent stub modal (H14) + studio-language tooltips (H1) + M19 hide-not-lock destructive. Settings hub added as 3rd Phase 4 deliverable (16-settings.html, 6 sections: Organisation/Billing/Integrations/Notifications/Security/Domains) — was implicit in plan but undelivered. New scripts/build-rendered-admin.py self-contained bundler — inlines admin.css + 4 @imports + bundle tokens + Google Fonts + Phosphor sprite + role-switch.js. Initial deploy surfaced 7 admin cards on preview index → Sergei pushed back, restructured to single-entry pattern (top-level admin-dashboard.html + sub-screens under /admin/ subfolder, absolute href paths). Brandbook v2 also copied to preview as canonical reference. Per-module 4-step design loop methodology adopted from sales-app-react plan and amended into admin-panel-project-editor + admin-panel-rbac-audit workstreams.

ux · design · architecture · ops · infra SK-260511-03.html
Approved Sessions local-2026-05-11-2
LATEST

LOCAL-2026-05-11-2 — Repo as canonical store: ratification + amendments

Ratified plans/repo-as-canonical-store.md at 9.6/10 after 6-reviewer council pass; created flip + vault workstreams; superseded v1 plan; folded in three v1.2 amendments (Phase 7 plan-body changelog, Phase 11b render_md meta-emit, new Phase 11d gallery renderer); established docs/conventions/lifecycle.md with done/ subfolder + per-folder CHANGELOG.md + scale-forward design notes for 20-30 operators; backfilled <meta> tags into 16 existing docs/rendered/ HTMLs via subagent; dispatched coordinated prompts to a parallel session for build-rendered-index.py enhancement + kind-based index filter.

ops · claude-code · architecture · planning · council-review · lifecycle · rendering LOCAL-2026-05-11-2.html
Approved Sessions local-2026-05-11-3
LATEST

LOCAL-2026-05-11-3 — Repo as canonical store: P0 + P1 shipped

Shipped Phase 0 (shared frontmatter lib + 5 JSON schemas + validator + non-blocking pre-commit hook) AND Phase 1 (.claude/operators.yaml registry + scripts/session.py with whoami/claim subcommands, atomic O_CREAT|O_EXCL retry, mtime-busted JSON cache, iCloud-path warning, line-numbered YAML parser errors) in a single session. 60/60 unit tests pass. Two reviews — general-purpose audit + Anthropic /security-review — both clean. Work heavily parallelised via 5 sub-agents (3 for P0; 1 build + 1 review for P1). Drift discovery sized Phase 8 backfill: 97 files missing kind:, zero non-kind violations — pure mechanical work ahead. Next session resumes at P2 (PostToolUse hook with fcntl.flock + canonical-key aggregation).

ops · claude-code · architecture · tdd · sub-agent-parallelism · frontmatter · schemas · security-review LOCAL-2026-05-11-3.html
Approved Sessions rt-260511-02
LATEST

RT-260511-02 — repo-as-canonical-store-flip COMPLETE (P4–P9)

Closed out the repo-as-canonical-store-flip workstream — all 10 phases (P0–P9) shipped in a single working day. /handoff and /resume are Notion-silent at runtime (invariant verified); 102 legacy files backfilled idempotently preserving the CONV-30 trinity + pending-reconcile marker; interim Python sync script (Plan 2 reference impl, 776 lines stdlib urllib) ships ready for stakeholder runs on demand. Heavy sub-agent parallelism — 6 sub-agents dispatched.

ops · claude-code · architecture · infra RT-260511-02.html
Approved Sessions rt-260511-03
LATEST

RT-260511-03 — preview.offplan.online UX + status model + shared-memory migration

Built preview.offplan.online from a basic file listing into a stakeholder-ready surface: per-card creator+last-updater metadata, grouped iterations with a collapsible Earlier-Iterations fold, a two-axis filter row (kind × status) with URL-hash sync, the 6-state lifecycle model (draft/in_review/approved/superseded/parked/archived) with 14 files flipped to draft baseline, and a nested-anchor card-duplicate bug squashed. Surfaced the per-artefact about-page UX as task P11e in the vault workstream. Migrated memory from per-machine ~/.claude/projects/.../memory/ into .claude/memory/ inside the repo so Roman + Sergei share identical context via git pull; CLAUDE.md directive bypasses the personal location for offplan sessions. Project banner spec (📂 offplan.online · ...) added to /resume + /handoff as visual confirmation of repo context.

ops · infra · ux · design-system · memory · claude-code RT-260511-03.html
Approved Sessions rt-260511-04
LATEST

RT-260511-04 — P11f search-index brief: task + rationale + /plan-first directive

Tail-end follow-up to RT-260511-03 (which closed at e9318c1). Coordinated with peer 0c61x7jq via the claude-peers MCP before touching the vault workstream file (they were mid-merging three agent branches into main); landed two small additions to workstreams/repo-as-canonical-store-vault.md: P11f search-index task bullet + inline UX brief (42cc34b), then expansion with rationale (search-vs-memory-vs-navigation distinction, keyword-vs-embedding tradeoff math, 70/30 matcher-vs-rows insight) + 8 open questions for the /plan interview + explicit 'MUST run /plan before /build' directive on the task bullet (312a472, after rebase from 538044c). Also diagnosed an old failed-deploy GitHub notification for f936f72 — already fixed in ca31b12; no further action needed.

ops · planning · design · coordination RT-260511-04.html
Approved Sessions sk-260511-01
LATEST

SK-260511-01 — ADR 0011 + ADR 0014 compact ratifications — Phase 1.2 + Phase 1.5.6 gates closed; HTML fragment sweep

Two compact /plan ratifications back-to-back same session: ADR 0011 Email sender architecture (Resend Stage 1 ESP + 2 own domains audience split offplan.online customer-facing primary / offplanonline.com buyer-facing reserved-dormant; D1 verify-both-now phasing; Decision #2 Tier 2+ white-label deferred к Phase 1.7.10 follow-up) and ADR 0014 MCP wrapper auth + sanitisation + RBAC + OAuth 2.1 PKCE (Iter 1 read-only fully ratified Stage 1 + Iter 2 interface stub; defense-in-depth sanitisation envelopes+tags+system-prompt-hardening mandatory + moderation API deferred Stage 2 escalation; Owner-controlled RBAC с External SA opt-in audit marker, Free Guest + Buyer hard block; tiered rate-limit proposed numbers TBD by ops). Both flipped to accepted status; workstreams/onboarding-trial-implementation.md blocked_by shrunk 4 to 2 (only legal-entity-lock + phase-1-3-implementation remaining). HTML sweep applied to 6 Stage 1 fragments + master HTML regenerated via scripts/build-launch-plan-master.py. Mid-session diagnosed parallel-claude-sessions collision (3 concurrent claude processes were silently reverting writes via git pull merges); resolved by user /exit'ing 2 of 3 processes. Memory entry feedback_recognize_planning_done.md created.

architecture · vendor · security · ux SK-260511-01.html
Approved Sessions sk-260511-02
LATEST

SK-260511-02 — Ilya designer brief + Stage 1 plan rendering refactor (brandbook v2 + nav cleanup + critical hero-div typo fix)

Two parallel tracks shipped end-to-end. (1) Ilya designer brief for 7 React Email trial cascade templates (per ADR 0011 T5) — docs/briefs/ilya-email-templates.md. (2) Long iterative cleanup of the Stage 1 plan rendering pipeline: renamed legacy launch-plan-v3-full.html → launch-plan-stage-2.html (post-CONV-19/37 splits had left it dominated by Stage 2 content); applied brandbook v2 tokens (sand/gold/navy → Skeleton White / stone / oxidised severity) across 21 rendered files; restored Exec Summary section with companion-docs cards prepended to master via slice_marker; trimmed Exec/Goal/Method chrome + Stage 1 stub + phase-nav grid per iterative user review. Critical late find: a stage1_hero typo (close-paragraph instead of close-div) left .hero unclosed across the entire page body, so the navy gradient painted the whole page dark — initially misdiagnosed as Firefox/Safari auto-dark-mode (4 commits of CSS overrides) before tracing to the actual HTML bug. Parallel claude session (Roman, P4-P11f) shipped a massive amount during the same window; multiple rebase rounds normal.

ux · tooling · architecture · ops SK-260511-02.html
Draft Workstreams idle-session-reflection
LATEST

Idle session reflection — in-turn memory hook + LLM-driven reflection cron

Two-part automation so sessions self-record without operator effort: (1) lightweight Stop-event hook updates `.claude/memory/` per turn when something notable happens; (2) launchd timer detects idle sessions and runs an LLM-driven reflection pass that decides what was newly learned, what was important, what this session was about, then drafts a /handoff entry.

ops · claude-code · automation idle-session-reflection.html
Earlier iterations (2)
Approved Reference brandbook
LATEST

The frame for architectural sales.

offplan.online Brandbook v2 — visual register, colour system, typography, spacing, shadows, radii, status palette, role badge scale, component primitives. The single source of truth that every admin / sales-app screen consumes via @import.

Canonical visual register — Skeleton White surface, Helvetica Neue 200-300 display, Inter body, JetBrains Mono metadata, oxidised status palette, 5-stop role-badge scale.

brandbook · visual-register · design-system · tokens brandbook-v2.html
Earlier iterations (5)
Draft Design client-dashboard
LATEST

Review menu

Client Dashboard — offplan.online admin panel for rendering studios. 18-screen product surface with 6 live mockups (welcome / onboarding / quick-build / overview / guest / team) and 12 pending (project editor + activity + settings). Start here for the full presentation.

Client Dashboard menu page — entry point for the full admin panel walk-through. 6 live screens clickable; 12 pending placeholders show the product roadmap.

admin-panel · client-dashboard · menu · mockup · brandbook-v2 admin-dashboard.html

═══ 2026-05-11 ═══

22:13
Approved Sessions rt-260511-06

RT-260511-06 — Idle-reflection R1–R8 + hook fixes + preview-site PF1/PF2/PF3

Eight-hour session ratcheted the idle-reflection workstream from R1 design → R8 dogfood-ready in a single push: 7 parallel worktree-isolated agents shipped R2–R7 (dispatcher + launchd + reflection script + cost envelope + /handoff merge mode + docs + 93 new tests; 334 total green), and the launchd LaunchAgent is now live on Roman's Mac firing every 10 min. Two related infrastructure bugs were root-caused + fixed in the same wave: post-commit hook now has a worktree-guard so agent worktrees can no longer drift main's HEAD, and a sibling post-merge hook now delegates so merge commits auto-push too. Preview-site fixes: PF2 went live (meta summary populated); PF1 source-fix empirically failed (CF scans <code> tags too) → Roman to toggle dashboard; PF3 mini-/plan ratified + shipped (mixed per-type empty state, 117 about-pages regenerated). Worker-deploy attempt halted cleanly when CF MCP returned [object Object] on every call — 140-line diagnosis doc explains the upstream serialiser bugs. 25 commits, 163 files, +5125/-610. Clean main at 9459a28.

RT-260511-06.html
20:54
Approved Sessions rt-260511-05

RT-260511-05 — Vault P10–P13 + hardening + worker + idle-reflection plan + audits + Notion CONV import

Eight-hour push that took the vault polish workstream from blocked → all 9 phases done (P10–P13), shipped a Notion-zero hardening pre-commit gate, ported sync_to_notion_oneshot.py to a Cloudflare Worker (built, not deployed), onboarded Obsidian 1.12.7 + CLI to the Forge Mac mini over SSH, ratified plans for preview-search (P11f) and idle-session-reflection, backfilled 39 session titles/summaries + 17 ADR names + 5 brand-new ADRs (0018–0022), added 60 tests (171 → 231), wired Notion OAuth MCP and replaced the .env integration token, imported the full Notion Sessions DB to local files via CONV-INDEX.md, and fixed a Roman-reported link-stacking bug across 115 about-pages. ~15 subagents dispatched in 5 waves; clean main at d701662.

RT-260511-05.html
18:25
Approved Sessions sk-260511-03

SK-260511-03 — admin Phase 4 unblocked: 14-team.html + Settings hub scope + per-module 4-step loop + brandbook on preview

Phase 4 admin-panel-rbac-audit unblocked out-of-order (Phase 3 project-editor untouched). 14-team.html shipped in brandbook v2 canon — Variant A 'Table-first' IA picked from 3-variant wireframe sweep; 5-role member table + sticky role legend rail + role-gated pending invites (M20) + Free Guest with Mered+H&deM Riviera narrative + View-as-Agent stub modal (H14) + studio-language tooltips (H1) + M19 hide-not-lock destructive. Settings hub added as 3rd Phase 4 deliverable (16-settings.html, 6 sections: Organisation/Billing/Integrations/Notifications/Security/Domains) — was implicit in plan but undelivered. New scripts/build-rendered-admin.py self-contained bundler — inlines admin.css + 4 @imports + bundle tokens + Google Fonts + Phosphor sprite + role-switch.js. Initial deploy surfaced 7 admin cards on preview index → Sergei pushed back, restructured to single-entry pattern (top-level admin-dashboard.html + sub-screens under /admin/ subfolder, absolute href paths). Brandbook v2 also copied to preview as canonical reference. Per-module 4-step design loop methodology adopted from sales-app-react plan and amended into admin-panel-project-editor + admin-panel-rbac-audit workstreams.

SK-260511-03.html
18:24
Approved Sessions local-2026-05-11-2

LOCAL-2026-05-11-2 — Repo as canonical store: ratification + amendments

Ratified plans/repo-as-canonical-store.md at 9.6/10 after 6-reviewer council pass; created flip + vault workstreams; superseded v1 plan; folded in three v1.2 amendments (Phase 7 plan-body changelog, Phase 11b render_md meta-emit, new Phase 11d gallery renderer); established docs/conventions/lifecycle.md with done/ subfolder + per-folder CHANGELOG.md + scale-forward design notes for 20-30 operators; backfilled <meta> tags into 16 existing docs/rendered/ HTMLs via subagent; dispatched coordinated prompts to a parallel session for build-rendered-index.py enhancement + kind-based index filter.

LOCAL-2026-05-11-2.html
18:24
Approved Sessions local-2026-05-11-3

LOCAL-2026-05-11-3 — Repo as canonical store: P0 + P1 shipped

Shipped Phase 0 (shared frontmatter lib + 5 JSON schemas + validator + non-blocking pre-commit hook) AND Phase 1 (.claude/operators.yaml registry + scripts/session.py with whoami/claim subcommands, atomic O_CREAT|O_EXCL retry, mtime-busted JSON cache, iCloud-path warning, line-numbered YAML parser errors) in a single session. 60/60 unit tests pass. Two reviews — general-purpose audit + Anthropic /security-review — both clean. Work heavily parallelised via 5 sub-agents (3 for P0; 1 build + 1 review for P1). Drift discovery sized Phase 8 backfill: 97 files missing kind:, zero non-kind violations — pure mechanical work ahead. Next session resumes at P2 (PostToolUse hook with fcntl.flock + canonical-key aggregation).

LOCAL-2026-05-11-3.html
18:24
Approved Sessions rt-260511-02

RT-260511-02 — repo-as-canonical-store-flip COMPLETE (P4–P9)

Closed out the repo-as-canonical-store-flip workstream — all 10 phases (P0–P9) shipped in a single working day. /handoff and /resume are Notion-silent at runtime (invariant verified); 102 legacy files backfilled idempotently preserving the CONV-30 trinity + pending-reconcile marker; interim Python sync script (Plan 2 reference impl, 776 lines stdlib urllib) ships ready for stakeholder runs on demand. Heavy sub-agent parallelism — 6 sub-agents dispatched.

RT-260511-02.html
18:24
Approved Sessions rt-260511-03

RT-260511-03 — preview.offplan.online UX + status model + shared-memory migration

Built preview.offplan.online from a basic file listing into a stakeholder-ready surface: per-card creator+last-updater metadata, grouped iterations with a collapsible Earlier-Iterations fold, a two-axis filter row (kind × status) with URL-hash sync, the 6-state lifecycle model (draft/in_review/approved/superseded/parked/archived) with 14 files flipped to draft baseline, and a nested-anchor card-duplicate bug squashed. Surfaced the per-artefact about-page UX as task P11e in the vault workstream. Migrated memory from per-machine ~/.claude/projects/.../memory/ into .claude/memory/ inside the repo so Roman + Sergei share identical context via git pull; CLAUDE.md directive bypasses the personal location for offplan sessions. Project banner spec (📂 offplan.online · ...) added to /resume + /handoff as visual confirmation of repo context.

RT-260511-03.html
18:24
Approved Sessions rt-260511-04

RT-260511-04 — P11f search-index brief: task + rationale + /plan-first directive

Tail-end follow-up to RT-260511-03 (which closed at e9318c1). Coordinated with peer 0c61x7jq via the claude-peers MCP before touching the vault workstream file (they were mid-merging three agent branches into main); landed two small additions to workstreams/repo-as-canonical-store-vault.md: P11f search-index task bullet + inline UX brief (42cc34b), then expansion with rationale (search-vs-memory-vs-navigation distinction, keyword-vs-embedding tradeoff math, 70/30 matcher-vs-rows insight) + 8 open questions for the /plan interview + explicit 'MUST run /plan before /build' directive on the task bullet (312a472, after rebase from 538044c). Also diagnosed an old failed-deploy GitHub notification for f936f72 — already fixed in ca31b12; no further action needed.

RT-260511-04.html
18:24
Approved Sessions sk-260511-01

SK-260511-01 — ADR 0011 + ADR 0014 compact ratifications — Phase 1.2 + Phase 1.5.6 gates closed; HTML fragment sweep

Two compact /plan ratifications back-to-back same session: ADR 0011 Email sender architecture (Resend Stage 1 ESP + 2 own domains audience split offplan.online customer-facing primary / offplanonline.com buyer-facing reserved-dormant; D1 verify-both-now phasing; Decision #2 Tier 2+ white-label deferred к Phase 1.7.10 follow-up) and ADR 0014 MCP wrapper auth + sanitisation + RBAC + OAuth 2.1 PKCE (Iter 1 read-only fully ratified Stage 1 + Iter 2 interface stub; defense-in-depth sanitisation envelopes+tags+system-prompt-hardening mandatory + moderation API deferred Stage 2 escalation; Owner-controlled RBAC с External SA opt-in audit marker, Free Guest + Buyer hard block; tiered rate-limit proposed numbers TBD by ops). Both flipped to accepted status; workstreams/onboarding-trial-implementation.md blocked_by shrunk 4 to 2 (only legal-entity-lock + phase-1-3-implementation remaining). HTML sweep applied to 6 Stage 1 fragments + master HTML regenerated via scripts/build-launch-plan-master.py. Mid-session diagnosed parallel-claude-sessions collision (3 concurrent claude processes were silently reverting writes via git pull merges); resolved by user /exit'ing 2 of 3 processes. Memory entry feedback_recognize_planning_done.md created.

SK-260511-01.html
18:24
Approved Sessions sk-260511-02

SK-260511-02 — Ilya designer brief + Stage 1 plan rendering refactor (brandbook v2 + nav cleanup + critical hero-div typo fix)

Two parallel tracks shipped end-to-end. (1) Ilya designer brief for 7 React Email trial cascade templates (per ADR 0011 T5) — docs/briefs/ilya-email-templates.md. (2) Long iterative cleanup of the Stage 1 plan rendering pipeline: renamed legacy launch-plan-v3-full.html → launch-plan-stage-2.html (post-CONV-19/37 splits had left it dominated by Stage 2 content); applied brandbook v2 tokens (sand/gold/navy → Skeleton White / stone / oxidised severity) across 21 rendered files; restored Exec Summary section with companion-docs cards prepended to master via slice_marker; trimmed Exec/Goal/Method chrome + Stage 1 stub + phase-nav grid per iterative user review. Critical late find: a stage1_hero typo (close-paragraph instead of close-div) left .hero unclosed across the entire page body, so the navy gradient painted the whole page dark — initially misdiagnosed as Firefox/Safari auto-dark-mode (4 commits of CSS overrides) before tracing to the actual HTML bug. Parallel claude session (Roman, P4-P11f) shipped a massive amount during the same window; multiple rebase rounds normal.

SK-260511-02.html
18:24
Draft Workstreams idle-session-reflection

Idle session reflection — in-turn memory hook + LLM-driven reflection cron

Two-part automation so sessions self-record without operator effort: (1) lightweight Stop-event hook updates `.claude/memory/` per turn when something notable happens; (2) launchd timer detects idle sessions and runs an LLM-driven reflection pass that decides what was newly learned, what was important, what this session was about, then drafts a /handoff entry.

idle-session-reflection.html