Skip to content

Five-harness development framework (v2, 27 Oct)

This page is the as-designed view of how Money Marche engineering works. It merges two pictures: - Atul's concept (Gemini image, 26 Oct). It is kept as a reference, not as the as-built state: concept - MMDEP-PM's as-built view (v1, 27 Oct).

The decision (TD-072): take Atul's five harnesses as the frame (Design, Code, Testing, Research, Work), with one Orchestration core underneath. Each component carries its real status from the tech-stack register (adopt / trial / hold), so the picture never claims more than what runs. The editable source is the Mermaid diagram below. It is a text file in the repository, so it is versioned, reviewable and drawn on GitHub and on the docs site. Image files are for concepts only.

flowchart LR
  A([Atul and Ajay: goals, business answers])
  subgraph O[Orchestration core]
    O1[MMDEP Actions: for-atul issues and panel]
    O2[Routing and allocation: who does what, escalation ladder]
    O3[Execution: laptop runner now, server from S3]
    O4[Access isolation: data classes, keys per environment]
  end
  subgraph D[1 · Design harness: pre-flight]
    D1[Claude Design, ChatGPT projects, MMDEP Assistant] --> D2[Overall, phase and sprint designs; LLD with V/S/C/D/L]
    D2 --> D3[Ready issues: routing block and scope paths]
  end
  subgraph C[2 · Code harness: unattended]
    C1[Aider with free/cheap models, Ollama for client data] --> C2[Change limited to scope paths]
  end
  subgraph T[3 · Testing harness: quality gates]
    T1[CI: pytest with coverage, ruff, bandit, pip-audit, design check]
    T2[Live checks: API, NAV duplicates and gaps, staging parity, SEO crawl]
  end
  subgraph R[4 · Research harness: knowledge]
    R1[Knowledge extraction from chats] --> R3[(docs/knowledge)]
    R2[GitLab snapshots, AMFI/AMC sources] --> R3
  end
  subgraph W[5 · Work harness: operations]
    W1[Business flows: renewal cadence, lead routing]
    W2[Systems of record: CRM, website, accounting]
  end
  A <--> O1
  D3 --> C1
  C2 --> T1
  T1 -->|green| M[(Repositories, merge by risk)]
  T1 -->|red twice| O2
  M --> T2
  T2 --> D1
  R3 --> D1
  M -->|release with Atul's approval| W
  W --> T2
  D2 -->|business question| O1
  O --> D & C & T & R & W

What each harness holds: Atul's concept against what we run

Status: adopt = in use or decided; trial = being tried this sprint or next; hold = not now, with the reason; legal = legal check before build (TD-030).

Harness Component (concept) Status Notes
Design Claude, ChatGPT projects adopt Claude Design and MMDEP-PM; ChatGPT project agents; MMDEP Assistant for low/medium-risk design
Design Deterministic state machines adopt (practice) Every workflow with states (lead, renewal, NAV ingest run) gets a Mermaid stateDiagram in its LLD
Design DBML schema (dbdiagram.io) hold Mermaid erDiagram in the LLD does the same inside the repository, at ₹0, with no extra tool
Design OpenAPI spec adopt The ingest-routes LLD already writes the routes into the OpenAPI file
Design Excalidraw trial For rough sketches in discussion. Anything that becomes a design is redrawn in Mermaid
Design Penpot hold UI design tool; revisit when a UI designer joins. WPDev works from the live site
Code Aider + Ollama adopt Aider runs in the code harness. Ollama is on the LAN, firewalled, for client-data tasks
Code LiteLLM proxy trial (S3) Goes on the server with SRV-1; one place for model keys and limits (B42)
Code Repo slicing gateway adopt (as built) This is our routing block scope.paths plus the context pack: the model sees only what the issue allows
Code Python, JavaScript adopt Plus PHP for WordPress (WPDev)
Testing GitLab runner (host network) adopt Laptop runner; tests run where the code lives
Testing ruff, pytest adopt
Testing pytest --cov, bandit, pip-audit adopt (add) ₹0. Added to the CI templates as a backlog item; reported first, not blocking, for 2 weeks
Testing SEOnaut crawler trial WPDev's SEO report already uses a crawler; Lighthouse CI on the laptop runner
Testing (missing in concept) live production checks adopt The collector: API routes, NAV duplicates and gaps, staging status
Research "Air-gapped" knowledge bus adopt, renamed We aren't air-gapped (we use cloud models). What exists: knowledge extraction, GitLab snapshots, docs/knowledge. Client data stays local by data class
Research Local vector DB (Chroma/Qdrant) hold When RAG is needed (medium horizon), pgvector in the server's Postgres: one database, not two
Research RAG indexing hold (medium horizon) Facts for content and support; after the server
Research Bhashini (Indian languages) hold, legal Useful for regional-language content and client messages; needs a use case and a terms check
Research DPI open-banking feeds, Account Aggregator hold, legal Client financial data (data class client). Joining the AA network as a data user (FIU) needs a regulated status and consent flows: legal opinion first
Work n8n workflow bus trial (S3) On the server; flows exported to git. Until then, Python jobs on the laptop
Work Zoho CRM adopt (current) Connected; MCRM is the CRM project
Work SuiteCRM business decision A second CRM would conflict with Zoho/MCRM. Which is the CRM of record? (raised to Atul)
Work Strapi headless CMS hold The website is WordPress; no second CMS without a need
Work ERPNext (accounting, rewards) hold No accounting project yet; a business decision when rewards or commission accounting starts
Core Orchestration core, execution engine adopt MMDEP: routing, allocation, Actions, runner on the laptop, server from S3
Core Access isolation gateway adopt (as built) Data classes (public/indicative/internal/client), keys per environment (a staging key is refused on production), segregation (DR-008)
Core India DPI connections (UPI, AA) hold, legal Not in the current phase; see Research

Corrections to the concept image: the image text has errors that came from the image generator ("Eirmenprent and interrspace", "Brower session", the garbled subtitle). The Mermaid diagram above is the version to use.

Where it is weak today, and the fix in hand

  • Orchestration core: inbox → panel copy happens only when Atul messages MMDEP-PM. Proposed fix: a 4-hourly panel sync (panel item SYNC-1).
  • Code, testing and research harnesses depend on the laptop being on. SRV-1 (the server) removes that.
  • Design → code: the hand-off is manual for ChatGPT LLDs. Fix: B36, LLD → ready issues.
  • Testing: no coverage or security scans in CI yet. Fix: add pytest coverage, bandit and pip-audit (TD-072).
  • Work harness: nothing automated yet; n8n arrives with the server. This is where revenue flows (renewals, leads) live, so it comes first after the server.