{
"schema_version": 3,
"export_version": "1.0.0",
"exported_at": "2026-01-29T00:00:00+00:00",
"exported_by": "task-graph-mcp template (browser-flat)",
"tables": {
"tasks": [
{
"id": "browser-flat-root",
"title": "Build a Web Browser",
"description": "Root task for a simulated web browser project. This flat template organizes all components as independent tasks with minimal dependencies, suitable for a single agent working through them sequentially.",
"status": "pending",
"priority": 8,
"worker_id": null,
"claimed_at": null,
"needed_tags": [],
"wanted_tags": [],
"tags": ["project", "browser"],
"points": null,
"time_estimate_ms": null,
"time_actual_ms": null,
"started_at": null,
"completed_at": null,
"current_thought": null,
"cost_usd": 0.0,
"metrics": [0, 0, 0, 0, 0, 0, 0, 0],
"created_at": 1769700000000,
"updated_at": 1769700000000
},
{
"id": "browser-flat-01-url-parser",
"title": "URL Parser",
"description": "Implement a URL parser that handles HTTP/HTTPS schemes, host extraction, port parsing, path normalization, query string parsing, and fragment identifiers. Should conform to the WHATWG URL specification for basic cases.",
"status": "pending",
"priority": 5,
"worker_id": null,
"claimed_at": null,
"needed_tags": [],
"wanted_tags": [],
"tags": ["networking", "parser"],
"points": 3,
"time_estimate_ms": 900000,
"time_actual_ms": null,
"started_at": null,
"completed_at": null,
"current_thought": null,
"cost_usd": 0.0,
"metrics": [0, 0, 0, 0, 0, 0, 0, 0],
"created_at": 1769700001000,
"updated_at": 1769700001000
},
{
"id": "browser-flat-02-http-client",
"title": "HTTP Client",
"description": "Build an HTTP/1.1 client capable of sending GET and POST requests, handling response status codes, parsing headers, following redirects, and reading chunked transfer encoding. Support basic keep-alive connections.",
"status": "pending",
"priority": 5,
"worker_id": null,
"claimed_at": null,
"needed_tags": [],
"wanted_tags": [],
"tags": ["networking", "http"],
"points": 5,
"time_estimate_ms": 1500000,
"time_actual_ms": null,
"started_at": null,
"completed_at": null,
"current_thought": null,
"cost_usd": 0.0,
"metrics": [0, 0, 0, 0, 0, 0, 0, 0],
"created_at": 1769700002000,
"updated_at": 1769700002000
},
{
"id": "browser-flat-03-html-tokenizer",
"title": "HTML Tokenizer",
"description": "Implement an HTML5 tokenizer that converts raw HTML text into a stream of tokens: start tags, end tags, self-closing tags, attributes, text content, comments, and doctype declarations. Handle character references and error recovery.",
"status": "pending",
"priority": 5,
"worker_id": null,
"claimed_at": null,
"needed_tags": [],
"wanted_tags": [],
"tags": ["html", "parser"],
"points": 5,
"time_estimate_ms": 1500000,
"time_actual_ms": null,
"started_at": null,
"completed_at": null,
"current_thought": null,
"cost_usd": 0.0,
"metrics": [0, 0, 0, 0, 0, 0, 0, 0],
"created_at": 1769700003000,
"updated_at": 1769700003000
},
{
"id": "browser-flat-04-html-parser",
"title": "HTML Tree Builder",
"description": "Build the HTML tree construction stage that takes tokens from the tokenizer and constructs a DOM tree. Handle implicit tag closures, foster parenting, formatting element reconstruction, and the basic insertion modes (initial, before-html, before-head, in-head, in-body).",
"status": "pending",
"priority": 5,
"worker_id": null,
"claimed_at": null,
"needed_tags": [],
"wanted_tags": [],
"tags": ["html", "parser", "dom"],
"points": 8,
"time_estimate_ms": 2400000,
"time_actual_ms": null,
"started_at": null,
"completed_at": null,
"current_thought": null,
"cost_usd": 0.0,
"metrics": [0, 0, 0, 0, 0, 0, 0, 0],
"created_at": 1769700004000,
"updated_at": 1769700004000
},
{
"id": "browser-flat-05-dom-tree",
"title": "DOM Tree Data Structure",
"description": "Define the core DOM tree data structure: Node, Element, Text, Comment, Document types. Implement parent/child/sibling traversal, node insertion/removal, attribute access, and getElementById/getElementsByTagName queries.",
"status": "pending",
"priority": 5,
"worker_id": null,
"claimed_at": null,
"needed_tags": [],
"wanted_tags": [],
"tags": ["dom", "core"],
"points": 5,
"time_estimate_ms": 1500000,
"time_actual_ms": null,
"started_at": null,
"completed_at": null,
"current_thought": null,
"cost_usd": 0.0,
"metrics": [0, 0, 0, 0, 0, 0, 0, 0],
"created_at": 1769700005000,
"updated_at": 1769700005000
},
{
"id": "browser-flat-06-css-tokenizer",
"title": "CSS Tokenizer",
"description": "Implement a CSS tokenizer that produces tokens from CSS source text: identifiers, functions, at-keywords, hashes, strings, numbers, dimensions, whitespace, delimiters, and CDO/CDC. Follow the CSS Syntax Module Level 3 tokenization algorithm.",
"status": "pending",
"priority": 5,
"worker_id": null,
"claimed_at": null,
"needed_tags": [],
"wanted_tags": [],
"tags": ["css", "parser"],
"points": 3,
"time_estimate_ms": 900000,
"time_actual_ms": null,
"started_at": null,
"completed_at": null,
"current_thought": null,
"cost_usd": 0.0,
"metrics": [0, 0, 0, 0, 0, 0, 0, 0],
"created_at": 1769700006000,
"updated_at": 1769700006000
},
{
"id": "browser-flat-07-css-parser",
"title": "CSS Rule Parser",
"description": "Parse CSS tokens into a structured stylesheet: style rules with selectors and declaration blocks, at-rules (@media, @import, @font-face), selector specificity calculation, and shorthand property expansion for common properties (margin, padding, border, background).",
"status": "pending",
"priority": 5,
"worker_id": null,
"claimed_at": null,
"needed_tags": [],
"wanted_tags": [],
"tags": ["css", "parser"],
"points": 5,
"time_estimate_ms": 1500000,
"time_actual_ms": null,
"started_at": null,
"completed_at": null,
"current_thought": null,
"cost_usd": 0.0,
"metrics": [0, 0, 0, 0, 0, 0, 0, 0],
"created_at": 1769700007000,
"updated_at": 1769700007000
},
{
"id": "browser-flat-08-selector-matching",
"title": "CSS Selector Matching",
"description": "Implement CSS selector matching against DOM elements: type selectors, class selectors, ID selectors, attribute selectors, pseudo-classes (:first-child, :hover, :focus), combinators (descendant, child, adjacent sibling), and universal selector. Include specificity calculation and cascade ordering.",
"status": "pending",
"priority": 5,
"worker_id": null,
"claimed_at": null,
"needed_tags": [],
"wanted_tags": [],
"tags": ["css", "dom", "matching"],
"points": 5,
"time_estimate_ms": 1500000,
"time_actual_ms": null,
"started_at": null,
"completed_at": null,
"current_thought": null,
"cost_usd": 0.0,
"metrics": [0, 0, 0, 0, 0, 0, 0, 0],
"created_at": 1769700008000,
"updated_at": 1769700008000
},
{
"id": "browser-flat-09-style-computation",
"title": "Computed Style Resolution",
"description": "Implement the cascade and computed style resolution: gather all matching rules for each element, sort by specificity and source order, apply inheritance for inherited properties, resolve relative units (em, rem, percentages) against parent values, and produce a final ComputedStyle per element.",
"status": "pending",
"priority": 5,
"worker_id": null,
"claimed_at": null,
"needed_tags": [],
"wanted_tags": [],
"tags": ["css", "style", "computation"],
"points": 5,
"time_estimate_ms": 1500000,
"time_actual_ms": null,
"started_at": null,
"completed_at": null,
"current_thought": null,
"cost_usd": 0.0,
"metrics": [0, 0, 0, 0, 0, 0, 0, 0],
"created_at": 1769700009000,
"updated_at": 1769700009000
},
{
"id": "browser-flat-10-layout-box-model",
"title": "Layout Box Model",
"description": "Implement the CSS box model for layout: content box, padding, border, and margin. Handle block-level and inline-level formatting contexts, width/height calculation with auto margins, min/max constraints, and box-sizing (content-box vs border-box).",
"status": "pending",
"priority": 5,
"worker_id": null,
"claimed_at": null,
"needed_tags": [],
"wanted_tags": [],
"tags": ["layout", "css", "box-model"],
"points": 5,
"time_estimate_ms": 1500000,
"time_actual_ms": null,
"started_at": null,
"completed_at": null,
"current_thought": null,
"cost_usd": 0.0,
"metrics": [0, 0, 0, 0, 0, 0, 0, 0],
"created_at": 1769700010000,
"updated_at": 1769700010000
},
{
"id": "browser-flat-11-block-layout",
"title": "Block Layout Algorithm",
"description": "Implement block layout: vertical stacking of block-level boxes, margin collapsing between siblings and parent-child, containing block resolution, static position for absolutely positioned elements, and float interaction (clear property).",
"status": "pending",
"priority": 5,
"worker_id": null,
"claimed_at": null,
"needed_tags": [],
"wanted_tags": [],
"tags": ["layout", "block"],
"points": 5,
"time_estimate_ms": 1500000,
"time_actual_ms": null,
"started_at": null,
"completed_at": null,
"current_thought": null,
"cost_usd": 0.0,
"metrics": [0, 0, 0, 0, 0, 0, 0, 0],
"created_at": 1769700011000,
"updated_at": 1769700011000
},
{
"id": "browser-flat-12-inline-layout",
"title": "Inline Layout and Text Shaping",
"description": "Implement inline layout: line box construction, inline box fragmentation across lines, text measurement and word wrapping, line-height and vertical-align, white-space handling (normal, nowrap, pre), and basic text-overflow (ellipsis).",
"status": "pending",
"priority": 5,
"worker_id": null,
"claimed_at": null,
"needed_tags": [],
"wanted_tags": [],
"tags": ["layout", "inline", "text"],
"points": 8,
"time_estimate_ms": 2400000,
"time_actual_ms": null,
"started_at": null,
"completed_at": null,
"current_thought": null,
"cost_usd": 0.0,
"metrics": [0, 0, 0, 0, 0, 0, 0, 0],
"created_at": 1769700012000,
"updated_at": 1769700012000
},
{
"id": "browser-flat-13-paint-display-list",
"title": "Paint and Display List",
"description": "Generate a display list from the layout tree: paint commands for backgrounds, borders, text, images, and box shadows. Implement paint order (background, float, foreground layers), opacity handling, and overflow clipping.",
"status": "pending",
"priority": 5,
"worker_id": null,
"claimed_at": null,
"needed_tags": [],
"wanted_tags": [],
"tags": ["rendering", "paint"],
"points": 5,
"time_estimate_ms": 1500000,
"time_actual_ms": null,
"started_at": null,
"completed_at": null,
"current_thought": null,
"cost_usd": 0.0,
"metrics": [0, 0, 0, 0, 0, 0, 0, 0],
"created_at": 1769700013000,
"updated_at": 1769700013000
},
{
"id": "browser-flat-14-rasterizer",
"title": "Rasterizer",
"description": "Implement a software rasterizer that executes the display list onto a pixel buffer: rectangle fills, border drawing (solid, dashed, dotted), text rasterization using glyph bitmaps, image scaling/compositing, and anti-aliased edge rendering.",
"status": "pending",
"priority": 5,
"worker_id": null,
"claimed_at": null,
"needed_tags": [],
"wanted_tags": [],
"tags": ["rendering", "rasterizer"],
"points": 8,
"time_estimate_ms": 2400000,
"time_actual_ms": null,
"started_at": null,
"completed_at": null,
"current_thought": null,
"cost_usd": 0.0,
"metrics": [0, 0, 0, 0, 0, 0, 0, 0],
"created_at": 1769700014000,
"updated_at": 1769700014000
},
{
"id": "browser-flat-15-js-lexer",
"title": "JavaScript Lexer",
"description": "Build a JavaScript lexer/tokenizer that recognizes: identifiers, keywords, numeric literals (integer, float, hex, binary, octal), string literals (single/double quotes, template literals), regex literals, punctuators, and automatic semicolon insertion markers.",
"status": "pending",
"priority": 5,
"worker_id": null,
"claimed_at": null,
"needed_tags": [],
"wanted_tags": [],
"tags": ["javascript", "parser"],
"points": 5,
"time_estimate_ms": 1500000,
"time_actual_ms": null,
"started_at": null,
"completed_at": null,
"current_thought": null,
"cost_usd": 0.0,
"metrics": [0, 0, 0, 0, 0, 0, 0, 0],
"created_at": 1769700015000,
"updated_at": 1769700015000
},
{
"id": "browser-flat-16-js-parser",
"title": "JavaScript Parser",
"description": "Implement a recursive descent JavaScript parser producing an AST: variable declarations (var, let, const), function declarations/expressions, control flow (if/else, for, while, switch), object/array literals, member access, binary/unary operators, and arrow functions.",
"status": "pending",
"priority": 5,
"worker_id": null,
"claimed_at": null,
"needed_tags": [],
"wanted_tags": [],
"tags": ["javascript", "parser", "ast"],
"points": 8,
"time_estimate_ms": 2400000,
"time_actual_ms": null,
"started_at": null,
"completed_at": null,
"current_thought": null,
"cost_usd": 0.0,
"metrics": [0, 0, 0, 0, 0, 0, 0, 0],
"created_at": 1769700016000,
"updated_at": 1769700016000
},
{
"id": "browser-flat-17-js-interpreter",
"title": "JavaScript Interpreter",
"description": "Build a tree-walking JavaScript interpreter: environment/scope chains, variable binding (var hoisting, let/const block scope), function calls with arguments, closures, prototype-based object system, basic built-in types (String, Number, Boolean, Array, Object), and exception handling (try/catch/finally).",
"status": "pending",
"priority": 5,
"worker_id": null,
"claimed_at": null,
"needed_tags": [],
"wanted_tags": [],
"tags": ["javascript", "interpreter", "runtime"],
"points": 13,
"time_estimate_ms": 3600000,
"time_actual_ms": null,
"started_at": null,
"completed_at": null,
"current_thought": null,
"cost_usd": 0.0,
"metrics": [0, 0, 0, 0, 0, 0, 0, 0],
"created_at": 1769700017000,
"updated_at": 1769700017000
},
{
"id": "browser-flat-18-dom-api",
"title": "DOM API Bindings",
"description": "Expose DOM manipulation to JavaScript: document.getElementById, document.createElement, element.appendChild, element.setAttribute, element.innerHTML, element.style property access, classList manipulation, and textContent/innerText.",
"status": "pending",
"priority": 5,
"worker_id": null,
"claimed_at": null,
"needed_tags": [],
"wanted_tags": [],
"tags": ["javascript", "dom", "api"],
"points": 5,
"time_estimate_ms": 1500000,
"time_actual_ms": null,
"started_at": null,
"completed_at": null,
"current_thought": null,
"cost_usd": 0.0,
"metrics": [0, 0, 0, 0, 0, 0, 0, 0],
"created_at": 1769700018000,
"updated_at": 1769700018000
},
{
"id": "browser-flat-19-event-system",
"title": "Event System",
"description": "Implement the DOM event system: Event interface, addEventListener/removeEventListener, event capturing and bubbling phases, stopPropagation/preventDefault, common event types (click, mouseover, keydown, load, DOMContentLoaded), and the event loop integration.",
"status": "pending",
"priority": 5,
"worker_id": null,
"claimed_at": null,
"needed_tags": [],
"wanted_tags": [],
"tags": ["events", "dom", "javascript"],
"points": 5,
"time_estimate_ms": 1500000,
"time_actual_ms": null,
"started_at": null,
"completed_at": null,
"current_thought": null,
"cost_usd": 0.0,
"metrics": [0, 0, 0, 0, 0, 0, 0, 0],
"created_at": 1769700019000,
"updated_at": 1769700019000
},
{
"id": "browser-flat-20-resource-loader",
"title": "Resource Loader",
"description": "Implement resource loading and caching: fetch CSS stylesheets linked in <link> tags, load images referenced by <img> src attributes, execute <script> tags (both inline and external), handle async/defer script loading semantics, and implement a basic in-memory resource cache.",
"status": "pending",
"priority": 5,
"worker_id": null,
"claimed_at": null,
"needed_tags": [],
"wanted_tags": [],
"tags": ["networking", "resources", "loader"],
"points": 5,
"time_estimate_ms": 1500000,
"time_actual_ms": null,
"started_at": null,
"completed_at": null,
"current_thought": null,
"cost_usd": 0.0,
"metrics": [0, 0, 0, 0, 0, 0, 0, 0],
"created_at": 1769700020000,
"updated_at": 1769700020000
},
{
"id": "browser-flat-21-page-lifecycle",
"title": "Page Lifecycle Orchestrator",
"description": "Wire all components together into the page loading pipeline: URL resolution, HTTP fetch, HTML parsing, resource discovery and loading, style computation, layout, paint, and display. Implement the main event loop that drives incremental rendering and script execution.",
"status": "pending",
"priority": 5,
"worker_id": null,
"claimed_at": null,
"needed_tags": [],
"wanted_tags": [],
"tags": ["integration", "lifecycle", "pipeline"],
"points": 8,
"time_estimate_ms": 2400000,
"time_actual_ms": null,
"started_at": null,
"completed_at": null,
"current_thought": null,
"cost_usd": 0.0,
"metrics": [0, 0, 0, 0, 0, 0, 0, 0],
"created_at": 1769700021000,
"updated_at": 1769700021000
}
],
"dependencies": [
{
"from_task_id": "browser-flat-root",
"to_task_id": "browser-flat-01-url-parser",
"dep_type": "contains"
},
{
"from_task_id": "browser-flat-root",
"to_task_id": "browser-flat-02-http-client",
"dep_type": "contains"
},
{
"from_task_id": "browser-flat-root",
"to_task_id": "browser-flat-03-html-tokenizer",
"dep_type": "contains"
},
{
"from_task_id": "browser-flat-root",
"to_task_id": "browser-flat-04-html-parser",
"dep_type": "contains"
},
{
"from_task_id": "browser-flat-root",
"to_task_id": "browser-flat-05-dom-tree",
"dep_type": "contains"
},
{
"from_task_id": "browser-flat-root",
"to_task_id": "browser-flat-06-css-tokenizer",
"dep_type": "contains"
},
{
"from_task_id": "browser-flat-root",
"to_task_id": "browser-flat-07-css-parser",
"dep_type": "contains"
},
{
"from_task_id": "browser-flat-root",
"to_task_id": "browser-flat-08-selector-matching",
"dep_type": "contains"
},
{
"from_task_id": "browser-flat-root",
"to_task_id": "browser-flat-09-style-computation",
"dep_type": "contains"
},
{
"from_task_id": "browser-flat-root",
"to_task_id": "browser-flat-10-layout-box-model",
"dep_type": "contains"
},
{
"from_task_id": "browser-flat-root",
"to_task_id": "browser-flat-11-block-layout",
"dep_type": "contains"
},
{
"from_task_id": "browser-flat-root",
"to_task_id": "browser-flat-12-inline-layout",
"dep_type": "contains"
},
{
"from_task_id": "browser-flat-root",
"to_task_id": "browser-flat-13-paint-display-list",
"dep_type": "contains"
},
{
"from_task_id": "browser-flat-root",
"to_task_id": "browser-flat-14-rasterizer",
"dep_type": "contains"
},
{
"from_task_id": "browser-flat-root",
"to_task_id": "browser-flat-15-js-lexer",
"dep_type": "contains"
},
{
"from_task_id": "browser-flat-root",
"to_task_id": "browser-flat-16-js-parser",
"dep_type": "contains"
},
{
"from_task_id": "browser-flat-root",
"to_task_id": "browser-flat-17-js-interpreter",
"dep_type": "contains"
},
{
"from_task_id": "browser-flat-root",
"to_task_id": "browser-flat-18-dom-api",
"dep_type": "contains"
},
{
"from_task_id": "browser-flat-root",
"to_task_id": "browser-flat-19-event-system",
"dep_type": "contains"
},
{
"from_task_id": "browser-flat-root",
"to_task_id": "browser-flat-20-resource-loader",
"dep_type": "contains"
},
{
"from_task_id": "browser-flat-root",
"to_task_id": "browser-flat-21-page-lifecycle",
"dep_type": "contains"
}
],
"task_tags": [
{"task_id": "browser-flat-root", "tag": "project"},
{"task_id": "browser-flat-root", "tag": "browser"},
{"task_id": "browser-flat-01-url-parser", "tag": "networking"},
{"task_id": "browser-flat-01-url-parser", "tag": "parser"},
{"task_id": "browser-flat-02-http-client", "tag": "networking"},
{"task_id": "browser-flat-02-http-client", "tag": "http"},
{"task_id": "browser-flat-03-html-tokenizer", "tag": "html"},
{"task_id": "browser-flat-03-html-tokenizer", "tag": "parser"},
{"task_id": "browser-flat-04-html-parser", "tag": "html"},
{"task_id": "browser-flat-04-html-parser", "tag": "parser"},
{"task_id": "browser-flat-04-html-parser", "tag": "dom"},
{"task_id": "browser-flat-05-dom-tree", "tag": "dom"},
{"task_id": "browser-flat-05-dom-tree", "tag": "core"},
{"task_id": "browser-flat-06-css-tokenizer", "tag": "css"},
{"task_id": "browser-flat-06-css-tokenizer", "tag": "parser"},
{"task_id": "browser-flat-07-css-parser", "tag": "css"},
{"task_id": "browser-flat-07-css-parser", "tag": "parser"},
{"task_id": "browser-flat-08-selector-matching", "tag": "css"},
{"task_id": "browser-flat-08-selector-matching", "tag": "dom"},
{"task_id": "browser-flat-08-selector-matching", "tag": "matching"},
{"task_id": "browser-flat-09-style-computation", "tag": "css"},
{"task_id": "browser-flat-09-style-computation", "tag": "style"},
{"task_id": "browser-flat-09-style-computation", "tag": "computation"},
{"task_id": "browser-flat-10-layout-box-model", "tag": "layout"},
{"task_id": "browser-flat-10-layout-box-model", "tag": "css"},
{"task_id": "browser-flat-10-layout-box-model", "tag": "box-model"},
{"task_id": "browser-flat-11-block-layout", "tag": "layout"},
{"task_id": "browser-flat-11-block-layout", "tag": "block"},
{"task_id": "browser-flat-12-inline-layout", "tag": "layout"},
{"task_id": "browser-flat-12-inline-layout", "tag": "inline"},
{"task_id": "browser-flat-12-inline-layout", "tag": "text"},
{"task_id": "browser-flat-13-paint-display-list", "tag": "rendering"},
{"task_id": "browser-flat-13-paint-display-list", "tag": "paint"},
{"task_id": "browser-flat-14-rasterizer", "tag": "rendering"},
{"task_id": "browser-flat-14-rasterizer", "tag": "rasterizer"},
{"task_id": "browser-flat-15-js-lexer", "tag": "javascript"},
{"task_id": "browser-flat-15-js-lexer", "tag": "parser"},
{"task_id": "browser-flat-16-js-parser", "tag": "javascript"},
{"task_id": "browser-flat-16-js-parser", "tag": "parser"},
{"task_id": "browser-flat-16-js-parser", "tag": "ast"},
{"task_id": "browser-flat-17-js-interpreter", "tag": "javascript"},
{"task_id": "browser-flat-17-js-interpreter", "tag": "interpreter"},
{"task_id": "browser-flat-17-js-interpreter", "tag": "runtime"},
{"task_id": "browser-flat-18-dom-api", "tag": "javascript"},
{"task_id": "browser-flat-18-dom-api", "tag": "dom"},
{"task_id": "browser-flat-18-dom-api", "tag": "api"},
{"task_id": "browser-flat-19-event-system", "tag": "events"},
{"task_id": "browser-flat-19-event-system", "tag": "dom"},
{"task_id": "browser-flat-19-event-system", "tag": "javascript"},
{"task_id": "browser-flat-20-resource-loader", "tag": "networking"},
{"task_id": "browser-flat-20-resource-loader", "tag": "resources"},
{"task_id": "browser-flat-20-resource-loader", "tag": "loader"},
{"task_id": "browser-flat-21-page-lifecycle", "tag": "integration"},
{"task_id": "browser-flat-21-page-lifecycle", "tag": "lifecycle"},
{"task_id": "browser-flat-21-page-lifecycle", "tag": "pipeline"}
],
"attachments": [],
"task_needed_tags": [],
"task_wanted_tags": [],
"task_sequence": []
}
}