Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
149 commits
Select commit Hold shift + click to select a range
0b153b0
docs: authoritative product spec, architecture, and 56-task build plan
winsznx Mar 21, 2026
ca3bc34
docs: project README
winsznx Mar 21, 2026
2e78ab4
docs: agent progress log and hackathon demo checklist
winsznx Mar 21, 2026
8205c58
design: global CSS variables, dark mode tokens, RGB channels for Tail…
winsznx Mar 21, 2026
0e4670b
app: root layout with Geist font, metadata, and provider tree
winsznx Mar 21, 2026
7c2e757
feat: landing page with hero, mesh gradient, pricing, FAQ, and Framer…
winsznx Mar 21, 2026
e038a28
feat: ThemeProvider with dark mode persistence and useForceDark hook
winsznx Mar 21, 2026
5488e71
feat: TanStack Query v5 client provider
winsznx Mar 21, 2026
ab556cc
feat: Privy wallet provider with Tempo Moderato chain and embedded wa…
winsznx Mar 21, 2026
6b02fd5
ui: button, input, card, and badge primitives
winsznx Mar 21, 2026
876ab55
ui: dialog, dropdown menu, select, and sheet overlay components
winsznx Mar 21, 2026
84938c7
ui: avatar, progress, separator, skeleton, tabs, toast, and tooltip p…
winsznx Mar 21, 2026
d9bd264
ui: data table with mobile scroll, empty state, page container, and c…
winsznx Mar 21, 2026
0bb6102
feat: Remlo logo component and public navbar with mobile menu
winsznx Mar 21, 2026
a323ea7
lib: utility functions, chain constants, and Supabase database types
winsznx Mar 21, 2026
1d02655
lib: Supabase browser client and server-side admin client
winsznx Mar 21, 2026
ec14764
lib: Privy JWT auth helper and ISO 20022 memo codec
winsznx Mar 21, 2026
07739b2
lib: Privy config with all login methods and Bridge.xyz API client
winsznx Mar 21, 2026
b3cada1
lib: mppx server instance and multi-rail MPP config for Tempo payments
winsznx Mar 21, 2026
a7989fc
lib: PayrollTreasury, PayrollBatcher, and EmployeeRegistry contract ABIs
winsznx Mar 21, 2026
5e08394
lib: StreamVesting, YieldRouter, TIP-403 ABIs and viem contract insta…
winsznx Mar 21, 2026
618104e
lib: Supabase query functions for employers, employees, payroll, and …
winsznx Mar 21, 2026
4aea11c
lib: TanStack Query hooks for employer dashboard, employee portal, an…
winsznx Mar 21, 2026
ec07fdf
feat: edge middleware with Privy JWT decode and role-based routing fo…
winsznx Mar 21, 2026
28eea07
feat: auth layout and login page with Privy modal integration
winsznx Mar 21, 2026
f109167
feat: employer registration form and employee invite acceptance FSM
winsznx Mar 21, 2026
0bdad64
feat: employer sidebar with collapsible nav, correct dashboard routes…
winsznx Mar 21, 2026
6f686bc
feat: employer header with search and notifications, dashboard layout…
winsznx Mar 21, 2026
fa14c96
feat: employer dashboard overview with metric cards, charts, and real…
winsznx Mar 21, 2026
ff75159
feat: team management pages with employee table, CSV upload, and 3-ta…
winsznx Mar 21, 2026
ea9b2b1
feat: run payroll page with React.lazy wizard and Suspense fallback
winsznx Mar 21, 2026
f7cdd1d
feat: treasury page with balance cards, yield tracking, and transacti…
winsznx Mar 21, 2026
8c6254f
feat: compliance dashboard with summary cards, policy panel, and even…
winsznx Mar 21, 2026
f17f133
feat: API access page with pricing table, agent key management, and M…
winsznx Mar 21, 2026
d4e8b01
feat: split-screen judge demo with SSE agent terminal and live dashbo…
winsznx Mar 21, 2026
6254fe0
feat: employee portal layout with top nav and mobile bottom tab navig…
winsznx Mar 21, 2026
83ae8b0
feat: employee portal home with balance card and payments list with m…
winsznx Mar 21, 2026
98fe3a3
feat: employee Visa card management and settings pages with 4 profile…
winsznx Mar 21, 2026
bf66138
feat: wallet display components for addresses, tx status, gas sponsor…
winsznx Mar 21, 2026
db9b437
feat: employee compliance badge, wallet status, and payroll status in…
winsznx Mar 21, 2026
0eb42e3
feat: employee table with TanStack Table sorting and CSV bulk import …
winsznx Mar 21, 2026
f53ea4d
feat: 4-step payroll wizard, run cards, batch tx progress, and ISO 20…
winsznx Mar 21, 2026
72cc7d0
feat: treasury balance card with animated counter, yield card, and de…
winsznx Mar 21, 2026
07def55
feat: transaction history table and real-time SSE balance ticker
winsznx Mar 21, 2026
5d44a2d
feat: employee Visa card display, activation flow, transaction list, …
winsznx Mar 21, 2026
dc89621
feat: MPP agent terminal with color-coded output, session panel, and …
winsznx Mar 21, 2026
a83679a
feat: employer API routes for registration, team management, payroll,…
winsznx Mar 21, 2026
019fba8
feat: employee creation and KYC status update API routes
winsznx Mar 21, 2026
ab34140
feat: MPP treasury endpoints — yield rates ($0.01), optimization ($0.…
winsznx Mar 21, 2026
9d53ff0
feat: MPP compliance check ($0.05) and marketplace listing endpoints
winsznx Mar 21, 2026
a3b1882
feat: MPP payroll execute ($1.00), advance ($0.50), SSE balance strea…
winsznx Mar 21, 2026
f3025b3
feat: MPP payslip delivery, memo decode ($0.01), and Bridge off-ramp …
winsznx Mar 21, 2026
fe46f6e
feat: transaction history, yield query, and Bridge/Tempo webhook hand…
winsznx Mar 21, 2026
69dc74f
feat: demo SSE route streaming 15-step agent payroll sequence with st…
winsznx Mar 21, 2026
20e3f43
feat: Solidity contracts for payroll treasury, batch execution, emplo…
winsznx Mar 21, 2026
10d007e
feat: Foundry deploy script and config for Tempo Moderato testnet
winsznx Mar 21, 2026
98b6d5b
deploy: contract deployment broadcast on Tempo Moderato chain 42431
winsznx Mar 21, 2026
084430b
chore: add forge-std library for Foundry contract testing
winsznx Mar 21, 2026
2524b63
scripts: demo agent walkthrough and Supabase schema migration SQL
winsznx Mar 21, 2026
0ee8cf9
assets: landing page product screenshots
winsznx Mar 21, 2026
e1f3cd7
chore(auth): limit Privy login methods
winsznx Mar 21, 2026
8579d30
refactor(login): align auth copy and passkey flow
winsznx Mar 21, 2026
6b21f30
chore(branding): add remlo png logo asset
winsznx Mar 21, 2026
9d16a25
chore(branding): add Privy png logo asset
winsznx Mar 21, 2026
ba0d5aa
docs(progress): log Privy auth cleanup
winsznx Mar 21, 2026
eef5651
Updated footer
TheWeirdDee Mar 21, 2026
019c93d
Merge pull request #1 from TheWeirdDee/edit-footer
winsznx Mar 21, 2026
e6e5c2b
Refactor route architecture, fix active highlight logic, and improve …
TheWeirdDee Mar 21, 2026
ae30ab7
Merge pull request #2 from TheWeirdDee/ui-fixes
winsznx Mar 21, 2026
40b6ced
Updated Build err
TheWeirdDee Mar 21, 2026
450a145
fix(qa): revert route drift, scaffold missing pages, restore table se…
TheWeirdDee Mar 21, 2026
c31e32b
Merge pull request #3 from TheWeirdDee/ui-fixes
winsznx Mar 21, 2026
23af472
fix(payroll): resolve next15 async params promise type constraint
TheWeirdDee Mar 21, 2026
6ecf969
Merge pull request #4 from TheWeirdDee/ui-fixes
winsznx Mar 21, 2026
17a556d
fix(qa): sync app SSE parameters, wire Stripe multirail, and correct …
TheWeirdDee Mar 21, 2026
b19fc72
style(ui): add horizontal padding to treasury deposit copy fields
TheWeirdDee Mar 21, 2026
ee64b0c
fix(auth): disable ssr on login page to prevent privy crash
TheWeirdDee Mar 21, 2026
66c6ae5
style(ui): fix mobile responsiveness of datatable pagination
TheWeirdDee Mar 22, 2026
467fa45
fix(core): remove dummy wc project id and loosen supabase queries
TheWeirdDee Mar 22, 2026
cf3d739
Merge pull request #5 from TheWeirdDee/ui-fixes
winsznx Mar 22, 2026
c393447
fix(mpp): restore payroll execute build compatibility
winsznx Mar 22, 2026
2974d73
fix(mpp): restore bridge offramp build compatibility
winsznx Mar 22, 2026
bddcbd4
docs(progress): log build recovery
winsznx Mar 22, 2026
bf2ebc3
feat(phase-3): mppx compose fix, session endpoints, route scaffold & …
TheWeirdDee Mar 22, 2026
4b67665
Merge branch 'main' into ui-fixes
winsznx Mar 22, 2026
8045bd5
Merge pull request #6 from TheWeirdDee/ui-fixes
winsznx Mar 22, 2026
2f3e398
feat(phase-3): expand public portal content & fix mobile table paddin…
TheWeirdDee Mar 22, 2026
60ff8e2
Merge pull request #7 from TheWeirdDee/ui-fixes
winsznx Mar 23, 2026
6513f2e
feat(layout): add shared public footer
winsznx Mar 23, 2026
fb8b252
refactor(landing): use shared public footer
winsznx Mar 23, 2026
685810e
refactor(public): share footer in public layout
winsznx Mar 23, 2026
dbc5fa0
fix(public): correct about page markup
winsznx Mar 23, 2026
22a7d07
fix(mpp): add stripe decimals to payroll execute
winsznx Mar 23, 2026
d3adad6
fix(mpp): add stripe decimals to bridge offramp
winsznx Mar 23, 2026
714ce19
chore(mpp): align treasury session semantics
winsznx Mar 23, 2026
40ab694
docs(mpp): align treasury optimize session copy
winsznx Mar 23, 2026
0bf8c8e
chore(repo): remove tmp_err debug artifact
winsznx Mar 23, 2026
d33718e
chore(repo): remove tmp_mpp scratch file
winsznx Mar 23, 2026
b671aa0
chore(repo): remove tmp_payroll scratch file
winsznx Mar 23, 2026
6878ed9
docs(progress): log audit cleanup and validation
winsznx Mar 23, 2026
1119415
style(footer): add ambient remlo wordmark
winsznx Mar 23, 2026
2983a8d
style(footer): tune background wordmark spacing
winsznx Mar 23, 2026
71bd6ff
fix(middleware): allow public footer routes
winsznx Mar 23, 2026
8f92c55
docs(progress): log footer and public route fixes
winsznx Mar 23, 2026
9bdbfad
feat(marketing): add social preview metadata
winsznx Mar 23, 2026
7c35410
docs(mintlify): add docs config and brand assets
winsznx Mar 23, 2026
455457f
docs(mintlify): add overview pages
winsznx Mar 23, 2026
f535732
docs(mintlify): add operations guides
winsznx Mar 23, 2026
1a2169b
docs(mintlify): add product surface guides
winsznx Mar 23, 2026
8a8f520
docs(mintlify): document contracts and memo design
winsznx Mar 23, 2026
d10e430
docs(mintlify): add integration references
winsznx Mar 23, 2026
3970ae9
docs(mintlify): add API and route reference pages
winsznx Mar 23, 2026
be27e49
fix(data): add authed dashboard APIs
winsznx Mar 23, 2026
4339f5c
fix(payroll): use live submission and memo bytes
winsznx Mar 23, 2026
d2a55f0
refactor(employer): wire dashboard surfaces to live data
winsznx Mar 23, 2026
afa5a3c
fix(employee): repair balance and bank transfer flow
winsznx Mar 23, 2026
132dc4d
docs(progress): log docs and integration fixes
winsznx Mar 23, 2026
a2dcee9
docs(spec): add source architecture and protocol guides
winsznx Mar 23, 2026
7967f99
docs(reconciliation): record gap report and master addenda
winsznx Mar 23, 2026
e5bf458
refactor(ui): reconcile wallet and treasury primitives
winsznx Mar 23, 2026
db14692
feat(portal): improve employee card activation and status
winsznx Mar 23, 2026
d2b962e
feat(portal): wire employee data, wallet, and payments
winsznx Mar 23, 2026
5d6c92a
feat(portal): add employee settings and off-ramp management
winsznx Mar 23, 2026
cb8f5aa
feat(onboarding): add employee invite and kyc flows
winsznx Mar 23, 2026
d76f348
feat(team): add ai-assisted csv employee import
winsznx Mar 23, 2026
979b6ec
feat(team): upgrade employer team management table
winsznx Mar 23, 2026
d5d7661
feat(team): add employer-scoped employee detail view
winsznx Mar 23, 2026
b09da3e
feat(dashboard): wire employer overview and treasury data
winsznx Mar 23, 2026
1b708cd
feat(dashboard): add compliance and api access surfaces
winsznx Mar 23, 2026
87bc5b6
feat(dashboard): add employer route tree and funding pages
winsznx Mar 23, 2026
59d0e60
feat(admin): add internal admin routes and data api
winsznx Mar 23, 2026
c130ff2
feat(ai): add anomaly detection and compliance explanation routes
winsznx Mar 23, 2026
92cc0be
feat(public): add press and status routes with guest access
winsznx Mar 23, 2026
ab97ab7
feat(marketing): refresh landing copy and hero presentation
winsznx Mar 23, 2026
2f0ebdd
fix(mpp): align balance stream and treasury optimize contracts
winsznx Mar 23, 2026
af2dfbc
fix(mpp): normalize marketplace and treasury session responses
winsznx Mar 23, 2026
ab4e50b
fix(webhooks): normalize bridge event handling
winsznx Mar 23, 2026
2b13485
fix(contracts): add payroll batcher reentrancy guard
winsznx Mar 23, 2026
b4cdd6b
test(contracts): add payroll, vesting, and yield coverage
winsznx Mar 23, 2026
115302d
docs(mintlify): move core docs pages and brand assets
winsznx Mar 23, 2026
1db6e17
docs(mintlify): move operations and platform guides
winsznx Mar 23, 2026
477dce7
docs(mintlify): move integration and protocol references
winsznx Mar 23, 2026
c95fb6b
docs(mintlify): move and refresh api reference pages
winsznx Mar 23, 2026
60a4a53
docs(progress): log reconciliation, docs, and landing refinements
winsznx Mar 23, 2026
910ae64
fix(marketing): reduce hero background rendering overhead
winsznx Mar 23, 2026
a0d0225
chore(deps): add hyperspeed rendering stack
winsznx Mar 23, 2026
1be43cc
feat(marketing): ship real hyperspeed hero
winsznx Mar 23, 2026
63894d3
docs(progress): log hyperspeed integration
winsznx Mar 23, 2026
cb87e6c
Commit
TheWeirdDee Mar 23, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -39,3 +39,4 @@ scripts/*.js

# macOS
.DS_Store
desktop.ini
1,051 changes: 1,051 additions & 0 deletions AGENT_PROGRESS.md

Large diffs are not rendered by default.

204 changes: 204 additions & 0 deletions DEMO_CHECKLIST.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,204 @@
# Remlo — 60-Second Demo Checklist

> **Setup**: `pnpm dev` running on `http://localhost:3000`. Open in Chrome. Use a second terminal for the agent script.

---

## Pre-Demo (30s before)

- [ ] `pnpm dev` running, no console errors
- [ ] Chrome open at `http://localhost:3000` — landing page visible (dark, animated mesh gradient)
- [ ] Terminal ready: `npx ts-node scripts/demo-agent.ts`
- [ ] Second browser tab open at `http://localhost:3000/dashboard/demo`

---

## Demo Flow

### 1. Landing Page — `http://localhost:3000`
**Expected state:**
- Dark background (`#0A0F1E`) with animated emerald/indigo mesh gradient orbs
- Hero: "Pay anyone, anywhere. Settle in half a second." — "half a second" in accent green
- 3 stat chips: `< 0.5s settlement`, `$0 wire fees`, `150+ countries`
- "Start free" and "View API docs" CTAs visible

**Scroll to:**
- Problem section: red `$47 wire cost`, `4 days`, `6.2% FX fees` with animated counters
- How It Works: 4-step flow (01 Employer Deposits → 02 AI Runs Payroll → 03 Smart Contract Batch → 04 Employee Receives)
- Pricing: 3-tier cards, Growth "Most Popular" highlighted with accent border

---

### 2. Auth / Login — `http://localhost:3000/login`
**Expected state:**
- Centered card with Remlo logo
- "Continue with email" / wallet connect options (Privy)
- Clean dark surface with border-default

---

### 3. Employer Dashboard Home — `http://localhost:3000/dashboard`
**Expected state:**
- Left sidebar: Remlo logo, nav links (Overview, Team, Payroll, Treasury, Compliance, API Access, Demo)
- 4 MetricTiles: Treasury Balance / Total Paid / Team Size / Avg Settlement
- Last 5 payroll runs list (mock data: 2–3 "Completed" runs)
- Recharts bar chart (30-day payment volume)
- Compliance donut (green/neutral)

---

### 4. Team Page — `http://localhost:3000/dashboard/team`
**Expected state:**
- Table: 3 mock employees (Sofia Mendez, James Okonkwo, Priya Sharma)
- Status badges: 2× "Approved" (green), 1× "Pending" (yellow)
- "Add Employee" + "Upload CSV" buttons in header
- Table scrolls horizontally on narrow viewport

**Actions to show:**
- Click "Upload CSV" → 4-step modal (drag-drop → column map → preview → done)
- Click employee row → navigates to `/dashboard/team/emp-1`

---

### 5. Employee Detail — `http://localhost:3000/dashboard/team/emp-1`
**Expected state:**
- 3-tab layout: Overview / Payment History / Compliance
- **Overview tab**: wallet address (truncated, font-mono), $95,000/yr salary, VisaCard display (front face), bridge bank account section
- **Payment History tab**: TxStatus chip + MemoDecoder with ISO 20022 fields decoded
- **Compliance tab**: TIP-403 status "CLEAR", policy ID, authorized wallet badge, audit log

---

### 6. Run Payroll Wizard — `http://localhost:3000/dashboard/payroll/new`
**Expected state:**
- 4-step wizard with animated `StepBar`
- Step 1 "Select Employees": 3 checkboxes (Sofia, Priya, Carlos)
- Step 2 "Edit Amounts": editable salary amounts with running total
- Step 3 "Review": read-only summary, total amount, recipient count
- Step 4 "Execute": BatchProgress component — 4 steps animate through signing → submitting → confirming → ✓ success

**Actions to show:**
- Select all → Next → Next → "Run Payroll" → watch BatchProgress animate to success
- Success state: confetti, tx hash link to Tempo Explorer, "Settled in 0.4s"

---

### 7. Treasury Page — `http://localhost:3000/dashboard/treasury`
**Expected state:**
- TreasuryCard: available balance + locked balance
- DepositPanel: wire instructions (IBAN, routing, SWIFT)
- YieldCard: current APY% (from YieldRouter), accrued yield counter
- TxHistoryTable: paginated history with type badges (Deposit/Payroll/Yield)

---

### 8. API Access + Agent Terminal — `http://localhost:3000/dashboard/api-access`
**Expected state:**
- 3-tier MPP pricing table (Micro-reads at $0.01, Operations at $0.50–$1.00, Premium at $0.50)
- AgentKeyPanel: "Generate API Key" button (800ms fake delay), copy-to-clipboard
- AgentTerminal: macOS-style terminal with "Run Demo" button
- Click "Run Demo" → terminal animates through 8 DEMO_LINES with type-colored output

---

### 9. Split-Screen Demo Page — `http://localhost:3000/dashboard/demo`
**Expected state:**
- Split view: terminal left, live state right
- **Right panel**: treasury $847,234.50 · StreamingBalanceTicker ticking · compliance ALL CLEAR · MPP cost table
- Click **"Run Demo Agent"** button:
- Terminal streams 15 lines over ~7 seconds
- Lines color-coded: system (muted) / request (cyan) / response (green) / payment (yellow)
- Payment total counter increments: $0.01 → $0.03 → $0.28 → $1.28 → $1.29
- Session complete line: "Session closed · $1.29 spent · $3.71 unspent returned"

---

### 10. Employee Portal — `http://localhost:3000/portal`
**Expected state:**
- Centered max-640px layout, "Good morning, Sofia." greeting
- Balance card with StreamingBalanceTicker (green pulsing dot = connected)
- Last payment card: amount, TxStatus chip, decoded memo label
- 4 quick-action tiles: View Payments / Manage Card / Off-ramp / Settings

---

### 11. Portal Payment History — `http://localhost:3000/portal/payments`
**Expected state:**
- Expandable payment cards grouped by month
- Expanded card: TxStatus, tx hash link, MemoDecoder (ISO 20022 fields), "Download payslip PDF" button
- Search input filters by label/amount/hash

---

### 12. CLI Demo Agent (Terminal)
```bash
npx ts-node scripts/demo-agent.ts
```

**Expected output:**
```
════════════════════════════════════════════════════════════
REMLO — Autonomous AI Treasury Agent
Machine-to-Machine Payroll via MPP (x402)
════════════════════════════════════════════════════════════

[STEP 1] Opening MPP session...
✓ Session initialized.

[STEP 2] Querying yield rates (MPP-1, $0.01)...
✓ $0.01 charged.

[STEP 3] Querying treasury balance (MPP-6, $0.02)...
✓ $0.02 charged.

[STEP 4] Running compliance checks on 5 employees...
✓ $0.25 charged. All 5 wallets verified.

[STEP 5] Executing payroll batch (MPP-3, $1.00)...
✓ $1.00 charged.

[STEP 6] Connecting to salary stream (MPP-5)...
[demo mode or live ticks if server running]

[STEP 7] Session Closed
deposited_usd: "5.00"
total_spent_usd: "1.29"
unspent_returned_usd: "3.71"
────────────────────────────────────────────────────────────
DEMO COMPLETE — Autonomous AI Treasury Agent ran in ~60s
Total MPP payments: $1.29
Chain: Tempo Moderato (ID: 42431)
Token: pathUSD (TIP-20)
────────────────────────────────────────────────────────────
```

**Exit code must be 0.** If server offline, all steps return demo stubs — still exits 0.

---

## Key Technical Talking Points

| Feature | Detail |
|---------|--------|
| Chain | Tempo Moderato (EVM, ID: 42431) |
| Token | pathUSD (TIP-20, 6 decimals) |
| Settlement | < 0.5s on-chain finality |
| Payment protocol | MPP (x402) — machine-to-machine micropayments |
| Compliance | TIP-403 registry — on-chain wallet authorization |
| Payroll memo | ISO 20022 encoded in 32-byte on-chain memo field |
| Salary streaming | `StreamVesting` contract — per-second accrual |
| Auth | Privy embedded wallets — no MetaMask needed |
| Yield | `YieldRouter` contract — treasury earns APY while idle |
| AI agent | Autonomous payroll run in ~60s, $1.29 total cost |

---

## Troubleshooting

| Issue | Fix |
|-------|-----|
| `pnpm dev` port in use | `lsof -ti:3000 \| xargs kill -9` |
| Demo agent crashes | Server offline is OK — stubs are returned, script still exits 0 |
| Build fails | Check `.env.local` has all placeholder values (see `.env.local`) |
| SSE not streaming | Check browser DevTools → Network → `run-agent` response is `text/event-stream` |
| Dark mode not enforced on landing | `useForceDark()` runs client-side — brief flash on first load is expected |
125 changes: 125 additions & 0 deletions GAPS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,125 @@
# GAPS

Reconciliation closure updated on March 23, 2026 against:

- `REMLO_MASTER.md`
- `remlo_architecture_spec.md` (Doc A)
- `remlo_build_guide.md` (Doc B)
- `remlo_mpp_blueprint.md` (Doc C)

Naming note: where older source material says `PayStream`, read it as `Remlo`.

## Resolved In This Closure Pass

### Doc A — Component props

All Doc A Section 5 prop drift recorded in the first reconciliation pass is now closed.

| Component | Closure status |
| --- | --- |
| `AddressDisplay` | Resolved with `label?: string` compatibility support. |
| `TxStatus` | Resolved with `hash` compatibility alias. |
| `ChainBadge` | Resolved with `chain?: string` support. |
| `TreasuryCard` | Resolved with doc-compatible balance and yield aliases. |
| `BalanceTicker` | Resolved with default-safe `ratePerSecond` and `currency` support. |
| `DepositPanel` | Resolved with `onClose` support. |
| `EmployeeTable` | Resolved with doc-compatible `employees` and `onSelect` while keeping richer action callbacks. |
| `CSVUpload` | Resolved with `onUpload(count)` compatibility callback. |
| `WalletStatus` | Resolved with `linked` compatibility alias. |
| `VisaCardDisplay` | Resolved with `card` object compatibility alias. |
| `CardActivation` | Resolved with `card` object compatibility alias. |
| `OffRampPanel` | Resolved with `onComplete` callback. |
| `MemoDecoder` | Resolved with `memo` compatibility alias. |
| `PayrollRunCard`, `PayrollWizard`, `BatchProgress` | Kept as implementation-supersedes-doc cases from the first pass; no regression introduced. |

### Doc A — Landing copy and footer shell

The copy drift recorded in the first reconciliation pass is now closed.

- Navbar labels and CTA are aligned.
- Landing hero, problem, solution, how-it-works, pricing, and FAQ copy are aligned.
- Footer tagline is aligned.
- Footer `Status` and `Press` destinations now exist as real public routes.
- LinkedIn remains intentionally hidden because no verified company URL has been provided. This is now an implementation-supersedes-doc safety choice, not an unresolved missing placeholder.

### Doc A — Screen wireframe gaps

The previously deferred wireframe items that were part of the approved gap-closure plan are now implemented.

| Surface | Closure status |
| --- | --- |
| `/dashboard/team` | Search, filter dropdowns, column visibility, and row actions including `Pause payments` are implemented. |
| `/dashboard/team/[id]` | Actions dropdown, payment pagination, issue-card CTA, and platform-admin manual review action are implemented. |
| `/portal/card` | Freeze, lost-card, and PIN controls are present as honest-disabled controls tied to current Bridge support limits. |
| `/portal/settings` | Editable profile, passkey linking, session/security copy, and bank-management entry path are implemented. |
| Public footer shell | `Status` and `Press` now resolve; LinkedIn remains intentionally hidden until verified. |

## Technical Patterns Closed

### Doc B — Bridge, security, and tests

The following Doc B gaps are now closed:

- Bridge webhook route now accepts canonical `x-webhook-signature` and canonical event families:
- `transfer.payment_processed`
- `card_transaction.created`
- `customer.updated`
- Legacy Bridge webhook names remain accepted for compatibility.
- `PayrollBatcher.sol` now uses `ReentrancyGuard`.
- Foundry coverage now includes payroll batching, vesting arithmetic, and yield-router math paths.
- The docs set now records that Mintlify content lives under `docs/` while `docs.json` remains at repo root.

### Doc C — MPP endpoint drift

The previously logged MPP response-contract drift is now closed for the external endpoint surface.

| Endpoint | Closure status |
| --- | --- |
| `GET /api/mpp/employee/balance/stream` | Canonical `employeeId` query supported and documented; legacy `address` remains accepted for compatibility. |
| `POST /api/mpp/treasury/optimize` | `question?: string` supported; richer response shape returned and documented. |
| `GET /api/mpp/marketplace/compliance-list/[employerId]` | Returns marketplace allowlist shape with `providerId`, `clearedWallets`, `list`, and `lastUpdated`. |
| `POST /api/mpp/agent/session/treasury` | Returns canonical `{ action, result, timestamp }` envelope. |

## Remaining Verified Gaps

These are the items still intentionally open after the closure pass because changing them safely requires a verified protocol decision rather than another surface-level patch.

| Area | Remaining gap | Why it is still open |
| --- | --- | --- |
| Tempo payroll execution transport | `components/payroll/PayrollWizard.tsx` still does not use the exact sponsored TempoTransaction `type: 'tempo'` flow with `calls`, `feeToken`, `feePayer`, and `feePayerSignature`. | The current Privy `useSendTransaction` hook only exposes a standard `UnsignedTransactionRequest` surface. Implementing the exact Tempo flow safely requires a verified EIP-1193 / Viem Tempo client path rather than another approximation. |
| Treasury identity mapping | `PayrollTreasury` keys employer balances by `keccak256(abi.encodePacked(employerAdminAddress))`, but several app routes still derive treasury and yield reads from the off-chain employer id string. | The current schema does not persist the canonical on-chain employer admin wallet address on the employer record. This needs a verified treasury identity design instead of another silent hash workaround. |

### Routes still affected by the treasury identity mismatch

The following routes still need that canonical on-chain employer treasury key before they can be called fully reconciled:

- `GET /api/employers/[id]/treasury`
- `GET /api/yield`
- `POST /api/employers/[id]/payroll`
- `POST /api/mpp/treasury/optimize`
- `POST /api/mpp/agent/session/treasury`

## Implementation Additions Not In The Original Specs

These remain in the codebase and are not being removed in reconciliation. They should stay unless you explicitly want a cleanup pass.

| Addition | Status |
| --- | --- |
| Mintlify docs bundle and `docs/` content tree | Kept and documented. You explicitly asked for the docs and for the folder reorganization. |
| Social preview routes (`app/opengraph-image.tsx`, `app/twitter-image.tsx`) | Kept unless you want a marketing cleanup pass. |
| Shared footer background wordmark treatment | Kept unless you want a design cleanup pass. |
| `usePrivyAuthedFetch` | Kept; this is part of the live auth implementation, not fluff. |
| `FundingReadinessCard` | Kept; useful product UX addition. |
| `Developers` footer column | Kept; useful navigation addition, though it was not in the earliest source docs. |

## Current Reconciliation Status

- Reconciliation audit: complete
- Gap report: updated to current codebase state
- High-priority spec drift: closed
- Public/footer route gaps: closed
- MPP response-contract drift: closed
- Bridge webhook drift: closed
- Contract reentrancy/test hardening: closed
- Mintlify docs move to `docs/`: closed
- Remaining open work: exact sponsored Tempo payroll transport and canonical on-chain employer treasury identity mapping
Loading