Break the @alkdev/taskgraph architecture specs into dependency-ordered implementation tasks across 8 component directories: setup, schema, error, graph, analysis, cost-benefit, frontmatter, api, and review. Each task has clear acceptance criteria referencing specific architecture docs. Three review tasks serve as quality gates at critical junction points (schemas-and-errors, graph-complete, complete-library). The dependency graph is validated acyclic with 9 topological levels enabling significant parallelism across independent work streams.
1.6 KiB
1.6 KiB
id, name, status, depends_on, scope, risk, impact, level
| id | name | status | depends_on | scope | risk | impact | level | |
|---|---|---|---|---|---|---|---|---|
| schema/input-schemas | Define TaskInput, DependencyEdge, and Nullable helper | pending |
|
narrow | low | component | implementation |
Description
Define the TaskInput and DependencyEdge input schemas in src/schema/task.ts, plus the Nullable generic helper. TaskInput uses Type.Optional(Nullable(...)) for categorical fields to support both absent and explicitly-null values (YAML frontmatter distinction).
Acceptance Criteria
src/schema/task.tsexportsNullablehelper:const Nullable = <T extends TSchema>(T: T) => Type.Union([T, Type.Null()])TaskInputschema defined with all fields per schemas.md:id: Type.String(),name: Type.String(),dependsOn: Type.Array(Type.String())- Categorical fields:
Type.Optional(Nullable(TaskXxxEnum))for status, scope, risk, impact, level, priority - Metadata fields:
tags,assignee,due,created,modified
DependencyEdgeschema:from: Type.String(),to: Type.String(),qualityRetention: Type.Optional(Type.Number({ default: 0.9 }))- Type aliases derived:
type TaskInput = Static<typeof TaskInput>,type DependencyEdge = Static<typeof DependencyEdge> - Re-exported from
src/schema/index.ts
References
- docs/architecture/schemas.md — TaskInput, DependencyEdge, Nullable definitions
- docs/research/typebox-patterns.md — section 6 (Nullable helper pattern)
Notes
To be filled by implementation agent
Summary
To be filled on completion