Skip to main content
Read this first

This is the meta-architecture page, documentation of the documentation system itself. How knowledge flows, who owns what, and how decisions become reality at SEKEN. New team members read this on day one to understand the information ecosystem before diving into product specifics.

Roles vs people

Roles in this document refer to functional responsibilities, not specific people. Current role assignments live in the brain under wiki/team/, they change as the team grows. The lifecycle and ownership patterns are stable; the names attached to them are not.

Information Architecture

The system that keeps the system honest. SEKEN runs on a small team and a lot of AI tooling. That only works if there is a single, current, contradiction-free source of truth feeding every surface, Cursor, Copilot, Claude Code, the public docs, the ops portal, the help center. This page documents how that source of truth is structured and how it stays current.

Why a separate page for this

The other 13 architecture pages describe what SEKEN is. This one describes how SEKEN knows what it is. The distinction matters because:

  1. AI tools need a single canonical source. Cursor and Copilot answer questions by reading whatever documentation they can reach. If the brain says one thing and the repo CLAUDE.md says another, the next AI suggestion is a coin flip. The brain ingest on 2026-04-28, a reconciliation pass over the 2026-04-26 audit findings, surfaced three such conflicts (return window, auto-confirm window, finances schema), all resolved on the same day because the structure made them visible.
  2. Pre-launch verification depends on it. Before customers ever hit the system, the only way to find a 7-day-vs-24-hour drift is to compare layers explicitly. The architecture audit is not optional decoration; it is the launch readiness gate.
  3. It future-proofs scaling. When the team grows past three people, this is what new hires onboard from. Without a documented information system, every new hire has to reconstruct the map from scratch by interviewing whoever has been around longest.

Part 1, How information flows in SEKEN

Knowledge does not move in one direction. It cycles through a small set of stations: a trigger that motivates a change, the brain that captures the canonical decision, the projections that surface that decision (docs, CLAUDE.md, code), the audit that re-verifies the running system, and the brain ingest: a reconciliation pass, that catches drift in either direction and feeds resolutions back into the brain.

Read this diagram as a cycle, not a pipeline. The arrows mark the default direction during normal operations. Brain Ingest is rendered as a distinct hex node because it is the only step that catches drift, in either direction. A spec change that never made it into code, or a code change that never made it into the spec, both surface during the same reconciliation pass.

The eight stations:

StationWhat lives hereWhy it exists
TriggerA KPI signal, an audit finding, a customer ticket, founder intuitionThe reason any change starts
BrainDECISIONS.md, architecture pages, strategy, brand, finance models, agent runbooksThe single canonical source AI tools reference
Docs projectiondocs.pasarseken.id (via the SEKENDocs repo)Public-readable mirror of the brain's architecture pages
CLAUDE.mdpasarseken/CLAUDE.md + 9 imported docs/claude/*.md filesBridge from brain to AI coding tools (Cursor, Copilot, Claude Code)
CodeThe pasarseken repo on main and the running systemThe only thing customers actually experience
Auditraw/data/architecture-audit-*.mdQuarterly snapshot of the live system compared to brain claims
Brain IngestThe reconciliation pass when audits or external sources are absorbed back into the brainThe self-correction step, catches drift in both directions
SignalSupport tickets, ops dashboards, KPIsTells the brain what to update next

This meta-system is now visible on the master map at /architecture/map under the Meta-System (Information Architecture) cluster, five nodes (Brain, CLAUDE.md bridge, docs.pasarseken.id, Quarterly Audit, Brain Ingest) sitting in the operations band, edged into the existing system clusters they govern.

The CLAUDE.md bridge

The brain doesn't directly reach AI coding tools. CLAUDE.md does.

CLAUDE.md is a single file that lives at the root of the pasarseken repo. It is a curated subset of the brain's most operationally relevant content, the architectural decisions, business rules, brand vocabulary, and current state, formatted for Cursor, Claude Code, and Copilot to read on every coding session.

When the brain updates, CLAUDE.md does not auto-update. It is regenerated manually (typically Sunday evening, when the brain has accumulated enough new decisions to justify a refresh) by running a small export pipeline. This is intentional, sudden CLAUDE.md changes mid-week could surprise AI tools that were running on cached context.

So the flow is:

brain → CLAUDE.md → AI tools → code → audit → brain ingest → brain

CLAUDE.md is the system's "eventual consistency" between the brain and the codebase. Strong consistency would require auto-regeneration on every brain change, which would be more brittle than helpful at this team size.

Part 2, How decisions become reality

A decision is not real until the running system behaves according to it. SEKEN's decision lifecycle has eight steps and at least four artifacts touched per decision. Skipping a step is the most common way for drift to enter the system.

The eight steps in plain English:

  1. Trigger. A decision starts somewhere, founder intuition, a user complaint, an audit finding caught during brain ingest, a KPI moving the wrong way. The trigger is logged so future-you can see why the decision happened.
  2. Capture in brain. Real-time. The decision goes into the locked decisions log (or the relevant strategy/finance/marketing file) with the date it was locked.
  3. Cross-link. Every page that references the old behaviour gets updated, not just the canonical one. Indices, taxonomies, and trackers are touched in the same pass.
  4. Architecture page update. If the decision is structural, touches an order state, a fee, a permission, a flow, the relevant wiki/architecture/NN-*.md is updated and synced to SEKENDocs.
  5. Code change. If the decision is implementational, an entry goes into the open-questions tracker under "Pending code changes" with file/line and an owner. Engineering picks it up.
  6. Audit verification. The next quarterly audit re-checks the decision against the codebase, and the brain ingest pass over that audit reconciles the findings. If reality matches the brain, the decision is live. If not, it stays drift until reconciled.
  7. Map status flag update. The corresponding node in map-data.json flips from drift or pending to live. The interactive map at /architecture/map reflects this.
  8. Open questions tracker update. If the decision closed an open question, that question moves from "Currently open" to "Recently resolved" in the open-questions tracker.

Worked example, the 24h return window

The cleanest demonstration of this lifecycle is the return window decision that closed on 2026-04-28.

StepArtifactWhat changed
Triggerraw/data/architecture-audit-2026-04-26.md ingested into brain on 2026-04-28Reconciliation pass surfaced that routes-orders.tsx:1734 returned a 7-day window while spec said 24 hours
CaptureLocked decisions log"Return window: 24 hours, locked 2026-04-28"
Cross-link05-order-statesTime-windows table updated; alignment note added
Cross-link06-returns-disputesLocked-decisions callout updated
Code changepasarseken/routes-orders.tsx:1734Pending: Dev owns; tracked in open-questions
AuditNext quarterly (due 2026-07-28)Will verify code change merged via brain ingest
Mapmap-data.json node oq-return-window-canonicalFlipped drift → resolved
TrackerOpen-questions trackerQuestion moved into "Recently resolved 2026-04-28 cycle"

Every same-day artifact flipped on 2026-04-28, DECISIONS, both cross-linked architecture pages, the map node, and the open-questions tracker. Only the code change is still in flight, and because it is tracked explicitly with file and line, it cannot get lost.

Reverse flow example, code-first change caught by audit

The same lifecycle runs in reverse when the code moves first. Imagine a hotfix lands in production changing the auto-confirm timer from 48h to 72h. No spec change, no DECISIONS.md entry, just a code change that has drifted from the documented 48h.

The next quarterly audit catches the drift:

  1. Audit script compares the pasarseken codebase against the architecture pages.
  2. Reports: "auto-confirm: code says 72h, docs say 48h."
  3. Decision required: revert code OR update docs to match.
  4. Decision made: update docs to 72h (assume the hotfix was correct).
  5. DECISIONS.md captures: "Auto-confirm raised from 48h to 72h, 2026-XX-XX."
  6. Architecture pages 05 and 06 are updated to reflect 72h.
  7. Map status flag stays green; nothing was "broken", just out of sync.

This shows the system catches drift in both directions: spec-first changes (the 24h return window above) and code-first changes (this auto-confirm example). Brain ingest is the single step where both kinds of drift converge and get reconciled.

Part 3, Information layers taxonomy

SEKEN's information lives in seven layers, each with a clear physical home and a clear owner. The layers are not strictly hierarchical, they reference each other, but each piece of information has exactly one canonical layer.

The full taxonomy with ownership and audience:

LayerPurposeLives inOwnerAudience
StrategicDecisions, brand, KPIs, roadmap, finance modelsPasarseken-AI-Brain/wiki/{DECISIONS,STRATEGY,BRAND,strategy/*,finance/*}CEOAI tools + founders + investors
ArchitecturalSystem design, flows, integrations, schemawiki/architecture/* (canonical) + docs.pasarseken.id (public)Shared (CEO writes, Dev verifies)Engineers + onboarding + AI tools
Code-levelImplementation truth, the running systempasarseken repo + pasarseken/CLAUDE.md + 9 imported docsDevAI coding tools (Cursor, Copilot, Claude Code)
OperationalRunbooks, SOPs, internal processeswiki/agents/* + ops portal modules + internal SOPsOpsInternal staff
Customer-facingHelp center articles, marketing copy, FAQ, email/WA templateshelp.pasarseken.id + ops portal templates + marketing assetsSocial Media Manager + OpsBuyers + sellers
AuditVerification snapshots that compare brain to coderaw/data/architecture-audit-*.mdQuarterly review (Dev + Claude)All, ground truth check
Live stateWhat is happening right nowmap-data.json status flags + ops dashboards + KPI dashboardMap maintainer (CEO) + OpsAll

A layer's job is to be authoritative for one thing. The brand colours are owned by Strategic, neither the architectural pages nor the customer-facing site invents a new colour. The order state machine is owned by Architectural, the help center quotes it but does not redefine it. When two layers disagree, the canonical layer wins and the other gets corrected.

How Live state stays accurate

Map node statuses are updated manually when status changes (e.g. mobile push goes live, an integration completes, a feature ships). The quarterly audit is the safety net, it catches drift between live state and reality whenever the manual update was missed or wrong. Live state is therefore eventually consistent, not real-time consistent; the map can lag reality by hours but never by quarters.

Part 4, Synchronization patterns

Layers stay in sync through four named patterns. Each has a frequency, a trigger, and an owner.

The four patterns:

1. Brain → Docs (manual, per change)

When a brain architecture page changes, sync to SEKENDocs in the same session. Edit brain first, convert frontmatter and links, push SEKENDocs to main, Vercel auto-deploys.

2. Brain → Code (via CLAUDE.md, per change)

When a strategic or architectural decision lands, the relevant section of pasarseken/CLAUDE.md (or its imported docs/claude/*.md) is updated. The full CLAUDE.md surface is 11 files: the lean root CLAUDE.md, plus 9 @-imported docs/claude/*.md files, plus 1 in-repo-only file (ddd-tracker.md, used by Dev as a local working tracker, not imported). Of those 11: brain owns 9 (lean root + 8 detail docs covering database, schemas, business, integrations, brand, mobile, status, testing); Dev owns 2 (architecture-ddd.md, which is imported, and ddd-tracker.md, which is not). The deploy.sh script keeps brain's 9 files in sync from brain to repo on a Sunday cadence and never touches Dev's 2.

3. Code → Brain (audit + brain ingest, quarterly)

Once a quarter, Claude reads the live pasarseken codebase and produces a fresh architecture-audit-YYYY-MM-DD.md in raw/data/. The audit compares every brain claim to actual code. The brain ingest pass that follows reconciles findings into open questions or pending code changes. As noted in Part 1, the 2026-04-28 brain ingest, not the 2026-04-26 audit, was the step that surfaced the three resolved conflicts.

4. Ops + customer signal → Brain (continuous + Friday review)

Support tickets, dispute trends, and KPI movement feed back into the brain. The Friday review is the formal touchpoint, anything from the week that should change a decision gets captured then. Case-by-case for urgent items.

Sync frequencies summarised:

PatternFrequencyTriggerOwner
Brain → DocsPer changeBrain page editedCEO
Brain → Code (CLAUDE.md)Per changeDecision or architecture edit landsCEO (writes), Dev (consumes)
Code → Brain (audit + ingest)QuarterlyCalendar (next due 2026-07-28)Dev + Claude
Ops/customer → BrainContinuous + weeklyTicket trend, KPI signal, Friday reviewCEO
Help center → OpsCase-by-caseRepeated support questionSocial Media Manager

Part 5, Why this matters

Three points worth repeating loudly.

1. AI tools need a single canonical source

Without one, Cursor and Copilot make conflicting suggestions. Cursor reads the brain via CLAUDE.md. Copilot reads the repo. If those two layers say different things, the AI suggestion that lands in the editor is whichever the model rolled the dice on. Locking the brain as canonical and propagating mechanically downstream is the only way to keep AI tooling honest at this team size.

2. Pre-launch verification caught real problems

The three conflicts caught by the 2026-04-28 ingest:

  • Return window: code returned 7 days, spec said 24 hours
  • Auto-confirm window: older docs said "24 hours" or "3 days", canonical was 48 hours
  • Finances schema: multiple pages disagreed on whether fin_* tables should migrate to a finances schema or stay in public

None of these would have been visible without the explicit brain-ingest reconciliation between audit and brain.

3. Future-proofs scaling beyond three

SEKEN's team is currently three people, holding the CEO, Dev, and Social Media Manager roles. Onboarding the fourth person without an information system means making them ask everyone where each piece of knowledge lives. Onboarding the fourth person with an information system means handing them this page and the architecture index and saying "read these in order." The information system is what makes Tier 2 ops staffing (3-5 people) and Tier 3 ops staffing (5-10 people) tractable, see 13-scalability for the staffing tier plan.

Part 6, Tooling and automation

This system runs on a small set of tools, each owning one specific responsibility. Nothing is hidden behind magic, every sync, validation, and deploy is reproducible.

ToolPurposeLives in
Obsidian + GitHubBrain editing and version controlpasarseken-AI-Brain repo
Cursor / Claude Code CLIBrain ↔ docs syncBoth repos
CLAUDE.mdBridge from brain to AI coding toolspasarseken repo root
qa-check.jsSchema validation for map-data.jsonSEKENDocs/scripts/
qa-layout-audit.jsPosition + cluster overlap validationSEKENDocs/scripts/
qa-interactive-tests.jsPlaywright UI tests for live mapSEKENDocs/scripts/
VercelAuto-deploy on push to mainSEKENDocs → docs.pasarseken.id
Quarterly auditDrift detection between brain and codeManual via Claude CLI extraction prompts

Automation roadmap by tier

The system is mostly manual today. That is deliberate at Tier 1, the cost of automation outweighs the cost of running this for three people. Each tool below has a planned automation upgrade that triggers at a specific tier.

ConcernToday (Tier 1)Planned upgradeTier trigger
Brain editingObsidian (CEO) + GitHubSame, no upgrade needed,
Brain → Docs syncManual via Cursor or Claude Code (single-session edit of both repos)Sync script that watches wiki/architecture/*.md and copies to SEKENDocs with frontmatter conversionTier 2
Brain → Code (CLAUDE.md)deploy.sh script copies 9 brain-owned files into pasarseken repoSame script + CI check that flags driftTier 2
Validationscripts/qa-check.js, scripts/qa-layout-audit.js, scripts/qa-interactive-tests.js (run manually)Same scripts on Vercel preview deploys, blocking merge if QA failsTier 2
AuditManual quarterly via Claude CLI extraction promptsSame, audits stay manual; the value is in human review of findings,
DeploymentVercel auto-deploy on push to SEKENDocs mainSame,
Map regenerationnode architecture-extraction-input/generate-map.mjs (manual)Triggered by code changes touching identified surfacesTier 3

The pattern is "automate the sync once it has been done by hand five times and the steps are stable." Premature automation makes the brain feel like a build system instead of a living document.

Part 7, Failure modes and recoveries

Each layer can fail in a characteristic way. The recoveries below are not theoretical, most have been exercised at least once.

FailureSymptomRecovery
Brain stops being canonicalAI tools give stale or contradictory advice; new code references behaviour that brain says is deprecatedRe-run the architecture audit; reconcile findings into the locked-decisions log and the relevant architecture pages via brain ingest; rebuild any drifted CLAUDE.md sections
Docs drift from codedocs.pasarseken.id describes a behaviour the running system no longer hasQuarterly audit + brain ingest catches this; until then, drift is flagged as ❌ on the architecture page status legend so readers know not to trust it
Ops knowledge stays isolatedSame support question gets answered three different ways by three different ops staffMigrate the answer into the brain (under wiki/agents/* or help.pasarseken.id), link from ops portal macros, deprecate the ad-hoc answers
Customer-facing content goes stalehelp.pasarseken.id shows wrong fee, wrong window, or removed featureMarketing + Ops weekly review checks last-edited dates on KB articles; brand or fee changes in the locked-decisions log trigger a help-center sweep
Map status flags go staleRisk zones in map-data.json no longer reflect reality (drift shown for resolved item, or vice versa)Re-run the extraction prompts against the current codebase; regenerate map-data.json; sync to brain copy with $meta.synced_at refreshed
Open-questions tracker accumulates without resolutionThe tracker grows but nothing closes; questions older than a quarter become invisibleTreat any question older than the quarterly audit cycle as a forced-decision date; force resolution at the next Friday review

End of architecture documentation.

For questions, contact the CEO or refer to the canonical brain wiki at Pasarseken-AI-Brain.

This documentation is verified as of 2026-07-07 and regenerated weekly from the brain. Next quarterly audit due 2026-07-28.