Files
taskgraph_ts/tasks/implementation/schema/enums.md

2.3 KiB

id, name, status, depends_on, scope, risk, impact, level
id name status depends_on scope risk impact level
schema/enums Define TypeBox categorical enum schemas and type aliases completed
setup/project-init
narrow trivial component implementation

Description

Define all categorical enum schemas using Type.Union([Type.Literal(...)]) pattern per schemas.md. Each enum gets a schema constant (PascalCase + Enum suffix) and a Static<typeof> type alias (PascalCase, no suffix).

The six enums: TaskScopeEnum, TaskRiskEnum, TaskImpactEnum, TaskLevelEnum, TaskPriorityEnum, TaskStatusEnum.

Acceptance Criteria

  • src/schema/enums.ts exports all six enum schemas and their type aliases
  • Each enum uses Type.Union([Type.Literal("value"), ...]) pattern per typebox-patterns.md
  • TaskScopeEnum: "single" | "narrow" | "moderate" | "broad" | "system"
  • TaskRiskEnum: "trivial" | "low" | "medium" | "high" | "critical"
  • TaskImpactEnum: "isolated" | "component" | "phase" | "project"
  • TaskLevelEnum: "planning" | "decomposition" | "implementation" | "review" | "research"
  • TaskPriorityEnum: "low" | "medium" | "high" | "critical"
  • TaskStatusEnum: "pending" | "in-progress" | "completed" | "failed" | "blocked"
  • Type aliases derived via Static<typeof>: TaskScope, TaskRisk, TaskImpact, TaskLevel, TaskPriority, TaskStatus
  • Naming convention matches spec: Enum suffix on schema constants only, never on type aliases
  • src/schema/index.ts re-exports all schemas and types

References

  • docs/architecture/schemas.md — enum definitions, naming convention
  • docs/research/typebox-patterns.md — TypeBox enum patterns, naming convention

Notes

Also exported the Nullable helper generic (used by downstream schemas) and added JSDoc comments on each type alias.

Summary

Implemented all six categorical enum schemas using Type.Union([Type.Literal(...)]) pattern with Static<typeof> type aliases.

  • Created: src/schema/enums.ts (6 enum schemas + 6 type aliases + Nullable helper)
  • Modified: test/schema.test.ts (21 enum-specific tests: Value.Check validation, Nullable helper, compile-time type alias verification)
  • Tests: 21 enum tests + 4 placeholders, all passing; tsc --noEmit clean