Skip to content

Rename product brand: Mandate → UnderWriter (backend + docs)#6

Merged
trenchsheikh merged 1 commit into
mainfrom
cursor/backend-restructure-0987
Apr 30, 2026
Merged

Rename product brand: Mandate → UnderWriter (backend + docs)#6
trenchsheikh merged 1 commit into
mainfrom
cursor/backend-restructure-0987

Conversation

@trenchsheikh

Copy link
Copy Markdown
Owner

Why

The product is called UnderWriter, not "Mandate." The brand had been used inconsistently across the backend service and the docs (page titles, READMEs, env file headers, the contract file header, the PR-title prefix the amend agent emits, etc.). This PR renames the product brand to UnderWriter everywhere it appears, while keeping all domain language about the fund's investment mandate intact.

Frontend is intentionally not touched, per direction.

What's the brand vs what's domain language

Stays as "Mandate" / mandate (domain language) Changed to "UnderWriter" (product brand)
MANDATE.md filename and # Mandate — Acme Ventures III heading inside it Page/layout <title> tags
The Mandate desk (one of the six diligence desks; it parses MANDATE.md) package.json description
lib/mandate-loader.ts, lib/mandate-evaluator.ts backend/README.md, backend/.env.example headers
The Mandate TypeScript interface, loadMandate() lib/contract.ts file header
The "mandate" desk id and source: "mandate" citation tag agents/amend.ts PR-title prefix ([Mandate][UnderWriter])
Clause / section refs like "Mandate §2", "Mandate §4", "Mandate §5" "Mandate platform" → "UnderWriter platform" in MANDATE.md prose
"the fund's mandate" prose docs/Backend.md title and docs/DEMO.md brand mentions
Root AGENTS.md overview

Rationale: a fund's investment mandate is a real, named document; the Mandate desk is the desk that parses it. Those names have meaning in the domain, independent of the product brand.

Files changed (13)

  • backend/package.json, backend/README.md, backend/.env.example
  • backend/app/layout.tsx, backend/app/page.tsx
  • backend/lib/contract.ts
  • backend/agents/amend.ts
  • backend/scripts/smoke.ts
  • backend/MANDATE.md, backend/docs/MANDATE.md (prose only)
  • backend/docs/Backend.md, backend/docs/DEMO.md (titles and product-brand prose)
  • AGENTS.md

Net: +25 / −23 lines.

Verification

Step Result
npm run typecheck (tsc --noEmit) clean
npm run build (next build) clean, no warnings, all 4 routes registered
GET /api/health {"status":"ok","service":"underwriter-backend",...}
Smoke: clean Acme deal 6/6 desks PASS → verdict proceed
Smoke: BEC Acme deal 5/6 PASS, wire-safety BLOCK → verdict hold; amendment diff captures acrne.co

The post-rename smoke transcript is attached:

backend_smoke_after_rename.txt

> running clean scenario
  [clean-acme] verdict proceed (PROCEED — 6/6 desks pass)

> running BEC scenario
  [bec-acme] verdict hold (HOLD — 1 blocking finding(s); 0 flag(s); 5 pass(es))
  blockingReason: Lookalike domain acrne.co vs verified acme.co (edit distance 2 ≤ 2) — wire_safety §6.2; Domain acrne.co age 6d < min 30d — wire_safety §6.1; DKIM fail on inbound wire-instruction email — wire_safety §6.3; ...

ALL CHECKS PASSED

Slack Thread

Open in Web Open in Cursor 

The product is called UnderWriter. Update brand-as-product references
across the backend service and the docs. Domain language is preserved
intact:

  - MANDATE.md (the policy file) keeps its name and 'Mandate \u2014 Acme
    Ventures III' heading.
  - The 'Mandate desk' (one of six diligence desks) keeps its name and
    title (it parses the MANDATE.md file).
  - mandate-loader.ts, mandate-evaluator.ts, the Mandate TypeScript
    interface, loadMandate(), the 'mandate' desk id, source: 'mandate'
    citations, and 'Mandate \u00a72/\u00a74/\u00a75' clause references all stay.

Files touched:

  - backend/{package.json, README.md, .env.example, app/{layout,page}.tsx,
    lib/contract.ts, agents/amend.ts, scripts/smoke.ts}: brand strings
    in titles, comments, descriptions, and the PR-title prefix
    ('[Mandate]' \u2192 '[UnderWriter]').
  - backend/MANDATE.md and backend/docs/MANDATE.md: 'Mandate platform'
    \u2192 'UnderWriter platform' in prose; the document itself remains the
    fund's investment mandate.
  - backend/docs/{Backend.md, DEMO.md}: title and product-brand prose.
    Kept 'Mandate desk', 'Mandate loading and evaluation', 'Mandate
    \u00a76.4', 'Scene 1 \u2014 The Mandate' (refers to the policy file), and
    the TypeScript-type references (Mandate, loadMandate, etc.).
  - AGENTS.md: 'the Mandate demo' \u2192 'the UnderWriter demo'.

Frontend is intentionally not touched per direction.

Verified clean: tsc --noEmit, next build, and the end-to-end smoke
test all pass; both the clean-acme proceed path and the bec-acme
hold-with-amendment path land correctly.

Co-authored-by: Mr T <trenchsheikh@users.noreply.github.com>
@trenchsheikh trenchsheikh marked this pull request as ready for review April 30, 2026 19:11
@trenchsheikh trenchsheikh merged commit d496d33 into main Apr 30, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants