7.2 KiB
7.2 KiB
Non-Linear: Scope & Roadmap
Milestone Structure
| Milestone | Purpose |
|---|---|
| v0.1-alpha | Minimum viable validation — see 06a-ALPHA-SCOPE.md |
| v0.1-full | Complete v0.1 vision (this document) — ships after alpha validates the thesis |
| v0.2 | Expand agent capabilities + cross-project |
| v0.3+ | Integrations & intelligence |
v0.1-full Validation Goal
Can a team of 3-5 people use this to run an actual project for two weeks without falling back to another tool?
If yes, the core thesis holds. If they keep opening Linear or a spreadsheet for certain tasks, those gaps tell us what v0.2 needs.
v0.1-full Scope: What Ships (after alpha validates)
Core Data Model
- Two node types (alpha): components (skeleton, map to code) and issues (work, flow through statuses). Artifacts (Layer 4) are introduced post-alpha.
- Decomposition tree: strict parent→child hierarchy, single root per project
- Lateral links: blocks, blocked_by, relates_to, duplicates, depends_on (inter-component)
- Component health: derived from children's statuses (no status field on components)
- Single project (no cross-project features)
- Complete change history: every mutation is a stored event with actor + timestamp
Alpha note: Alpha ships
blocksandrelates_toonly.duplicatesanddepends_on(Layer 3) are post-alpha.
Repository Integration
- Multi-repo support: connect multiple GitHub/GitLab repos to one project
- Repo ↔ component linking: each repo or subdirectory maps to a component node
- Monorepo support: one repo → multiple components (per package/service)
- Skeleton inference (fast-start): connect repos → scan structure → AI proposes component tree → user adjusts → skeleton committed
- Automatic commit/PR association: code activity auto-surfaces in the right component's feed
- New directory detection: suggest adding new components when code structure changes
Views
- Layered overview: rows by depth, edges visible, lateral links as overlay, collapse/expand, filtering, backlink count badges, component vs. issue visual distinction
- Focus widget: node + parent + children, detail panel, quick actions, backlinks, breadcrumbs, change history, repo link info for components
- Flat list/board: Kanban by status (issues only), sorting, grouping, bulk actions, search
- Cycle view: current cycle issues, grouped by component or status
Interaction Model
- Keyboard-first: every action has a shortcut, graph navigation via
Alt+↑/↓/←/→ - Command palette (
Cmd+K): fuzzy search across nodes, actions, views; context-aware - Natural language node creation: parse tree path, labels, assignment from text
- Plan-then-apply: structural changes show preview of consequences before committing
Triage
- Rootless inbox: issues without a parent land here
- Smart triage: system suggests which component an issue belongs to based on keywords, file paths, or related commits
- Triage = assigning a parent, placing the issue in the tree
- Agents can triage via API
Cycles
- Cycle: named set of issue references + date range
- Cycle membership shown as color highlight/tag in all views
- Only issues join cycles (not components)
- Agent scoping: policies can restrict agents to "current cycle only"
Notifications
- Scoped watching: single node, subtree, or project-wide
- Event type filters: status changes, comments, new children, link changes, agent actions, code activity
- Defaults: watch nodes you created or are assigned to
- Mute: temporarily silence a subtree
Code Integration
- Node ID format: short, typeable (
NL-42for issues,NL-C12for components) - Commit message parsing:
fixes NL-42triggers status change - PR linkage: PR appears in relevant node's activity feed (auto via component path, or explicit via ID)
- Branch naming support:
feature/NL-42-login-flow - Webhooks from GitHub/GitLab trigger node updates
Policy Engine
- Full granular engine: policy = actor + action + resource scope + effect
- Three resource scopes: global, subtree, single node
- Three default presets: owner, member, agent-reader (all editable)
- Custom role creation: via settings panel
- Resolution order: direct > role, deny > allow, narrow > broad, default deny
Agent API
- Authentication: API tokens tied to agent actor accounts
- Read operations: node, children, subtree, parent, links, backlinks, path, history, root, inbox, component repo info
- Write operations: comment, change status, triage (assign parent)
- Queries: filter by status, assignee, labels, unblocked, cycle, node type
- Permission-aware responses: include effective permissions, opaque link targets
- Webhooks: node.status_changed, node.comment_added, node.created, node.link_created, node.reparented, node.cycle_added, repo.commit_associated
Entry Experience — Three Paths
- Connect your code (new): OAuth to GitHub/GitLab → select repos → AI scans and proposes component skeleton → user adjusts → start adding issues
- Clean start: Create project → root node → add components and issues manually
- Import from tracker (v0.2+): Import from Linear/Jira/GitHub Issues → infer hierarchy
What's Deferred
v0.2: Expand Agent Capabilities + Cross-Project
- Agent creates child nodes (task decomposition)
- Agent creates lateral links
- Agent proposes reparenting (submit as "plan" for human review)
- Cross-project lateral links
- Cross-project agent scoping
- Multi-root projects
- Import from Linear / Jira / GitHub Issues (infer tree levels)
- Dependency inference from code (import graphs →
depends_onlinks)
v0.3+: Integrations & Intelligence
- Auto-link external signals (Sentry/PagerDuty errors → right component subtree)
- MCP server exposure
- Agent autonomous task pickup (self-assign from backlog)
- Time tracking
- Custom views / saved filters
- Export (PDF, CSV)
Deliberately Not Building
- Rich document blocks (Notion-style) — stay focused on tracking
- Multiplayer presence / cursors — overkill for small teams
- Canvas sketch-to-structure — cool demo, unclear daily value
Open Questions
- Graph rendering library: D3 vs Cytoscape vs custom WebGL?
- Real-time updates: WebSocket via FastAPI or dedicated service (Centrifugo)?
- Cycle UX: How to add/remove issues from cycles?
- Natural language parsing: LLM-powered or rule-based for v0.1?
- Git integration depth: Webhook-only, or GitHub App with deeper permissions?
- Skeleton inference depth: How deep should auto-scan go? Top-level packages only, or nested modules?
- Component health aggregation: Simple ratios, or weighted by priority/blockers?
Success Metrics
- Adoption: Team uses Non-Linear as sole tracker for 2+ weeks
- Retention: No fallback to Linear/spreadsheet for any workflow
- Repo connection rate: >50% of projects connect at least one repo
- Agent utility: Agent produces at least 1 useful action per day
- Graph value: Users create trees with 3+ depth levels
- Speed: Command palette action <200ms, view transitions <100ms