Skip to main content

Functional Specification Document: TaskPilot

Formal Specification: Personal & Team Task Management Foundation (v2.0)

A task management system designed for immediate personal use with foundational multi-tenant architecture for ChainAlign team scaling. Features FSD-aware task generation, session continuity through checkpointing, and live progress dashboards for demos and standups.

Feature NameTaskPilot
Component LayerInternal Productivity Tool + Product Foundation
StatusFinal Design (Ready for Implementation)
Core GoalProvide immediate personal task management while building foundational system for team collaboration and demo visibility
Primary MetricsSession resume time <30s, zero manual task-FSD sync, live milestone dashboard, team-ready architecture

1. Executive Summary & Strategic Context

TaskPilot solves three immediate problems:

  1. Personal Productivity Crisis: You're blocked without a proper task manager (tasks.md at 3000+ lines, unmanageable)
  2. Session Continuity: Context reloading consumes 50% of session tokens reading FSD/docs
  3. Demo Readiness: Need "show my process" dashboard for investor/stakeholder presentations

The system is designed with forward vision for ChainAlign team scaling:

  • Multi-tenant architecture from day 1
  • FSD ↔ Task bidirectional linking (foundation for future Judgment Engine)
  • Live milestone progress visibility (demo + internal dashboard)
  • Milestone-scoped document storage (FSD, dev summary, TDD summary)

Design Decisions (Validated Nov 2, 2025)

Decision 1: Judgment Engine integration deferred to Phase 2+ ✅ Decision 2: Demo-ready milestone progress dashboard included in Phase 1 ✅ Decision 3: Tasks link to Milestones as primary ChainAlign entity


2. System Architecture

2.1 High-Level Data Flow

[Web UI (React)]          [CLI Wrapper]           [File Upload]
(text, forms, files) (task commands) (.md, .txt)
| | |
└─────────────────┬───────┴───────────────────────┘
V
[API Gateway + Auth (Better Auth)]
|
V
[GraphQL Server (Apollo Server)]
| |
┌─────┴────────┐ ┌────┴─────┐
V V V V
[Task Service] [Session [Milestone [Search &
Manager] Documents] Analytics]
| | | |
└──────┬───────┴──────────┴───────────┘
V
[Unified Data Plane]
| |
[PostgreSQL] [pgvector]
- tasks - semantic search
- milestones - session context
- sessions
- documents

2.2 Core Components

Client Layer:

  • Web UI (React): Primary interface for task management, milestone views, session resume
  • CLI Tool: For quick task ops (task add, task done, task list)
  • File Ingestion: Upload markdown/text files as task context

Backend Layer:

  • GraphQL Server: Task CRUD, milestone aggregation, session management
  • FSD Parser Service: Extract tasks from FSD documents (Phase 2+)
  • Session Manager: Checkpoint/resume context preservation

Data Layer:

  • PostgreSQL: All structured data (tasks, milestones, sessions, documents)
  • Vector Storage: Semantic search on task content (Phase 2+)

3. Database Schema (MVP)

3.1 Core Tables

tasks

CREATE TABLE tasks (
task_id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
tenant_id UUID NOT NULL REFERENCES tenants(tenant_id),
pseudo_id VARCHAR(50) UNIQUE, -- M56-001, M56-002, etc.

-- Content
title TEXT NOT NULL,
description TEXT,

-- Organization
project VARCHAR(255) NOT NULL,
milestone VARCHAR(100) NOT NULL, -- M56, M57, etc.
status VARCHAR(50) NOT NULL DEFAULT 'pending',
priority VARCHAR(20),

-- Hierarchy
parent_task_id UUID REFERENCES tasks(task_id),
depends_on UUID[],

-- Implementation Tracking
implementation_status JSONB DEFAULT '{
"files_modified": [],
"fsd_sections_completed": [],
"last_checkpoint": null,
"verified": false
}',

-- Scheduling
due_date TIMESTAMPTZ,
started_at TIMESTAMPTZ,
completed_at TIMESTAMPTZ,

-- Effort
estimated_hours NUMERIC(5,2),
actual_hours NUMERIC(5,2),

-- Metadata
tags TEXT[] DEFAULT '{}',
created_by_user_id UUID NOT NULL,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),

CONSTRAINT valid_status CHECK (status IN (
'pending', 'in_progress', 'completed', 'blocked', 'cancelled'
))
);

CREATE INDEX idx_tasks_tenant_id ON tasks(tenant_id);
CREATE INDEX idx_tasks_milestone ON tasks(milestone);
CREATE INDEX idx_tasks_status ON tasks(status);
CREATE INDEX idx_tasks_pseudo_id ON tasks(pseudo_id);

milestones

CREATE TABLE milestones (
milestone_id VARCHAR(50) PRIMARY KEY, -- M56
project VARCHAR(255) NOT NULL,
tenant_id UUID NOT NULL REFERENCES tenants(tenant_id),

-- Document Links (Phase 1 schema prep, Phase 2 implementation)
fsd_document_id UUID REFERENCES source_documents(id),
dev_summary_id UUID REFERENCES source_documents(id),
tdd_summary_id UUID REFERENCES source_documents(id),

-- Approval Status
fsd_approved_at TIMESTAMPTZ,
fsd_approved_by UUID REFERENCES users(user_id),

-- Progress Tracking
tasks_completed INT DEFAULT 0,
tasks_total INT DEFAULT 0,

created_at TIMESTAMPTZ DEFAULT NOW(),
updated_at TIMESTAMPTZ DEFAULT NOW()
);

CREATE INDEX idx_milestones_tenant_id ON milestones(tenant_id);

work_sessions

CREATE TABLE work_sessions (
session_id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
user_id UUID NOT NULL REFERENCES users(user_id),
task_id UUID REFERENCES tasks(task_id),
milestone VARCHAR(50),

-- Context Preservation
fsd_section TEXT,
files_in_progress TEXT[],
last_command TEXT,
cursor_position JSONB,
git_branch VARCHAR(255),
git_commit_sha VARCHAR(40),

-- Summary
session_summary TEXT,
token_budget_used INT,
context_preserved JSONB,

-- Timing
started_at TIMESTAMPTZ DEFAULT NOW(),
ended_at TIMESTAMPTZ,
ended_reason VARCHAR(50)
);

CREATE INDEX idx_work_sessions_user_id ON work_sessions(user_id);
CREATE INDEX idx_work_sessions_active ON work_sessions(user_id, ended_at)
WHERE ended_at IS NULL;

task_comments

CREATE TABLE task_comments (
comment_id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
task_id UUID NOT NULL REFERENCES tasks(task_id) ON DELETE CASCADE,
user_id UUID NOT NULL REFERENCES users(user_id),
content TEXT NOT NULL,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);

CREATE INDEX idx_task_comments_task_id ON task_comments(task_id);

4. Implementation Roadmap

Phase 1: MVP Web Backend + UI + Dashboard (2 weeks)

Deliverables:

  • PostgreSQL schema (tasks, milestones, sessions, comments)
  • Pseudo-ID generation (M56-001, M56-002, etc.)
  • GraphQL API (task CRUD, milestone views, session management)
  • React Web UI with:
    • Task list/board/tree views
    • Create/edit/complete tasks
    • Session resume banner
    • Live Milestone Progress Dashboard (new: shows M56: 10/23 tasks, etc.)
  • CLI wrapper for quick task ops
  • Better Auth integration
  • Pseudo-ID generation function
  • Document schema prep (milestones table with *_document_id fields)

What you'll have by end of Week 1:

  • Working task manager for personal use
  • Live demo dashboard showing your process
  • Ready for team onboarding (multi-tenant ready)

Success Criteria:

  • ✅ Create, edit, complete 20+ tasks in milestone
  • ✅ Session resume <30 seconds
  • ✅ Dashboard accurately reflects milestone progress
  • ✅ CLI commands work for rapid entry

Phase 2: Document Linking + FSD Import (Weeks 3-4)

New Capabilities:

  • Milestone documents (FSD, dev summary, TDD summary)
  • FSD parser to auto-generate tasks from markdown
  • Gap detection (which FSD sections lack tasks)
  • Document linking UI (view/edit milestone documents)

Implementation:

  • FSD parser service
  • Milestone document endpoints
  • Gap detection GraphQL queries
  • Document upload/linking UI

Phase 3: iOS App + Offline Sync (Weeks 5-6)

Deferred to later. When needed for mobile capture, add:

  • SwiftUI iOS app
  • Core Data offline storage
  • Bidirectional sync
  • Push notifications

Phase 4+: Future (Post-MVP)

  • Judgment Engine integration (decisions as meta-layer)
  • Advanced AI analysis (entity extraction, intent classification)
  • Graph store for decision lineage
  • Team collaboration features (assignments, comments, @mentions)
  • Integration APIs (Slack, GitHub, Zoom)

5. GraphQL Schema (MVP)

Core Types

type Task {
taskId: ID!
pseudoId: String
title: String!
description: String
project: String!
milestone: String!
status: TaskStatus!
priority: TaskPriority

parentTask: Task
subtasks: [Task!]!
dependencies: [Task!]!

dueDate: DateTime
startedAt: DateTime
completedAt: DateTime

estimatedHours: Float
actualHours: Float

tags: [String!]!
comments: [TaskComment!]!

createdAt: DateTime!
updatedAt: DateTime!
}

type Milestone {
milestoneId: String!
project: String!
tasks: [Task!]!
taskCount: Int!
completedCount: Int!
progress: Float!

fsdDocument: Document
devSummary: Document
tddSummary: Document
fsdApprovedAt: DateTime
}

type WorkSession {
sessionId: ID!
task: Task
milestone: String
fsdSection: String
filesInProgress: [String!]!
lastWorked: String!
lastSummary: String
suggestedNext: [String!]!
summary: String!
tokenEstimate: Int!
}

enum TaskStatus {
PENDING
IN_PROGRESS
COMPLETED
BLOCKED
CANCELLED
}

enum TaskPriority {
LOW
MEDIUM
HIGH
CRITICAL
}

Key Queries

type Query {
tasks(project: String, milestone: String, status: TaskStatus): [Task!]!
task(taskId: ID!): Task
taskByPseudoId(pseudoId: String!): Task

milestones(project: String!): [Milestone!]!
milestone(milestoneId: String!): Milestone

resumeContext: WorkSession
sessionHistory(limit: Int): [WorkSession!]!
}

Key Mutations

type Mutation {
createTask(input: CreateTaskInput!): Task!
updateTask(taskId: ID!, input: UpdateTaskInput!): Task!
completeTask(taskId: ID!, actualHours: Float): Task!

checkpointSession(input: CheckpointInput!): WorkSession!
}

6. CLI Interface

# Task Management
task add -p chainalign -m M56 "Implement GraphQL schema"
task list -m M56
task done M56-001 --hours 4
task start M56-002
task modify M56-003 --priority high

# Resume
task resume

# Document Linking (Phase 2)
task link-fsd M56 docs/M56-architecture.md
task gaps M56

7. UI Mockup Components

Primary Views:

  1. Task List (with filtering by milestone, status, priority)
  2. Milestone Board (showing M56: 10/23 tasks, progress bar)
  3. Task Detail (with comments, history, related docs)
  4. Session Resume Banner (top of dashboard)
  5. Dashboard (live milestone progress for demos)

ChainAlign Brand Integration:

  • Navy (#0B1D3A) headers
  • Signal Green (#00D084) for actions
  • Inter font
  • 8px spacing grid
  • Clean, data-focused layout

8. Authentication & Multi-Tenancy

  • Auth Provider: Better Auth (self-hosted, OAuth ready)
  • Token Exchange: Secure endpoint for internal token generation
  • Tenant Isolation: All queries filtered by tenant_id immutably
  • Audit Logging: All task changes logged to system_audit_log

9. Success Criteria (Phase 1)

  • ✅ You use it daily for actual M56+ task management
  • ✅ Session resume time <30 seconds
  • ✅ Can show live milestone progress in demos
  • ✅ Web UI is responsive and intuitive
  • ✅ Can onboard team member with zero changes to codebase (multi-tenant ready)
  • ✅ Zero data loss during normal operation

10. Risk Mitigation

RiskMitigation
Token limit during implementationSession checkpointing + resume banner keeps context <500 tokens
Multi-tenant data leakageRow-level security via PostgreSQL policies + immutable tenant_id scoping
Performance at scaleIndexed queries, pagination, pagination on all list endpoints
Scope creepPhase boundaries enforced; document linking & iOS deferred to Phases 2-3

11. Deployment & Integration

Hosting:

  • PostgreSQL: Supabase (existing ChainAlign database)
  • GraphQL: Same Node backend as ChainAlign (port 4000 new path)
  • Web UI: Embedded in ChainAlign frontend under /admin/tasks or standalone

Future ChainAlign Integration:

  • Embed task widget in dashboard
  • Link to M36 Judgment Engine (Phase 2+)
  • Team member onboarding without code changes
  • Notification integration via existing WebSocket layer

Approval & Sign-off

RoleNameStatus
AuthorPramod Prasanth✅ Approved
Validated DesignBrainstorming Session✅ Nov 2, 2025
Ready for ImplementationPhase 1✅ GO

Document Version History

VersionDateStatus
1.0Nov 2, 2025Research & Planning
2.0Nov 2, 2025Final Design (Validated)