test-repo/MEMORY.md
Matt Bruce 9cfd7843b8 docs: memory and task CRUD scripts
- Add gantt task CRUD bash and TypeScript utilities
- Update MEMORY.md with CRUD capabilities and rules
- Update daily memory with subagent completions
- Document: full task links, attach-then-delete rule
2026-02-21 16:32:24 -06:00

6.3 KiB

MEMORY.md - Curated Long-Term Memory

Critical Information

Who I Am

  • Name: Max
  • Role: Digital assistant to Matt Bruce
  • Mission: Help build iOS empire for retirement

Matt's Identity

  • Name: Matt Bruce
  • Email: mbrucedogs@gmail.com
  • Work: iOS Lead Architect at Toyota (contractor)
  • Goal: Build side hustle to retire early, travel with Heidi

Project Locations (ALWAYS CHECK TOOLS.md)

All projects in: /Users/mattbruce/Documents/Projects/OpenClaw/

Active Web Projects:

Infrastructure

Supabase Projects (separate for each app):

Key Decisions

  • All web projects use Supabase for auth/database
  • Vercel CLI deployment (no GitHub for gantt-board)
  • Project folder structure enforced (Web/iOS/Documents)

Lessons Learned

2026-02-21 - Memory Failures

Problem: Complete memory loss of previous day's work caused frustration. Root Cause: Didn't read files at session start, relied on failed memory_search. Solution:

  • Created SESSION_STARTUP.md with explicit checklist
  • Updated AGENTS.md with mandatory file reading order
  • All project info now in TOOLS.md
  • Created PROJECT_SETUP.md for folder structure rules

Never Again:

  • Always read SESSION_STARTUP.md first
  • Read TOOLS.md for all project locations
  • Read memory files for recent context
  • Files are my memory - use them

2026-02-21 - Gitea Installation Disaster

Problem: Installed Gitea locally on Matt's Mac, causing port 3000 conflict with Next.js dev server. Root Cause: Forgot Gitea was already running on separate machine (192.168.1.128:3000). Solution: Uninstalled local Gitea, documented in TOOLS.md that it's on another machine.

Never Again:

  • Gitea runs at http://192.168.1.128:3000 (remote server)
  • Port 3000 is for Next.js dev server on Matt's Mac
  • NEVER run brew install gitea or gitea web on Matt's machine
  • Use existing Gitea server for all git operations

Quick Commands

# Deploy Gantt Board
cd /Users/mattbruce/Documents/Projects/OpenClaw/Web/gantt-board
npm run build && vercel --prod

# Check all projects
ls /Users/mattbruce/Documents/Projects/OpenClaw/Web/

Gantt Board Task CRUD

I have full CRUD capabilities on gantt board tasks via Supabase API:

Bash script: /Users/mattbruce/.openclaw/workspace/scripts/gantt-task-crud.sh

# List tasks (optionally filter by status)
./scripts/gantt-task-crud.sh list [open|done|...]

# Get single task
./scripts/gantt-task-crud.sh get <task-id>

# Create task
./scripts/gantt-task-crud.sh create "Task title" [status] [priority] [project-id] [assignee-id]

# Update task field
./scripts/gantt-task-crud.sh update <task-id> <field> <value>

# Delete task
./scripts/gantt-task-crud.sh delete <task-id>

TypeScript module: /Users/mattbruce/.openclaw/workspace/scripts/gantt-task-crud.ts

  • listTasks(status?) - List all tasks
  • getTask(taskId) - Get single task
  • createTask(params) - Create new task
  • updateTask(taskId, updates) - Update task fields
  • deleteTask(taskId) - Delete task
  • updateTaskStatus(taskId, status) - Update status
  • assignTask(taskId, assigneeId) - Change assignee
  • completeTask(taskId) - Mark as done

Default assignee: Max (9c29cc99-81a1-4e75-8dff-cd7cc5ceb5aa)

Natural Language Task Parsing

Matt can rattle off tasks naturally and I'll parse them:

Example formats:

  • "Add task: Fix the login bug by Friday"
  • "For Max: Research Stripe integration, low priority"
  • "Urgent: Deploy blog backup to Vercel tomorrow"
  • "Create task: Update iOS app icons"

I parse:

  • Title — the main task description
  • Assignee — "for [Name]" or defaults to Matt
  • Priority — "urgent/asap" = high, "low priority" = low, else medium
  • Due date — tomorrow, next week, by Friday, etc. (natural language)

Always send FULL LINKS to tasks, not just IDs.

Wrong: "Task 33ebc71e-7d40-456c-8f98-bb3578d2bb2b is done" Right: "https://gantt-board.vercel.app/tasks/33ebc71e-7d40-456c-8f98-bb3578d2bb2b is done"

Link format: https://gantt-board.vercel.app/tasks/{task-id}


Document/File Management Rules

RULE: Task Documents → Attach Only, Don't Keep Local Copies

When creating documents for gantt board tasks:

  1. Create the document
  2. Attach it to the task via gantt board UI/API
  3. DELETE the local file immediately after attaching
  4. Never keep local copies after attachment

Why: Prevents workspace clutter and ensures single source of truth is in the gantt board.


Memory Maintenance — Critical Rule

Update memory files CONTINUOUSLY throughout the day, not at the end.

  • After significant decisions → write to MEMORY.md
  • After task completions → update memory/YYYY-MM-DD.md
  • After new processes established → document immediately
  • Waiting until end-of-day = lost context and repeated mistakes

This prevents the nightmare of today (Feb 21) where session issues caused complete memory loss of critical work.

My Memory Update Plan

TRIGGERS — Update memory when:

  1. Task completed → Log to memory/YYYY-MM-DD.md
  2. Decision made → Document in MEMORY.md
  3. New process/tool discovered → Add to TOOLS.md or MEMORY.md
  4. Error/lesson learned → Write to MEMORY.md "Lessons Learned"
  5. Context switch → Quick checkpoint update
  6. Every 30-60 min of continuous work → Quick status save

WHAT to save:

  • MEMORY.md: Decisions, lessons, key info, processes (curated)
  • memory/YYYY-MM-DD.md: Raw log of work, conversations, tasks done
  • TOOLS.md: Project locations, credentials, environment specifics

CHECKPOINT habit: Before saying "done" or switching topics → ask "What needs to be remembered?"

Safety net: If session crashes, next session reads files first. Files are source of truth.