Item Types and Hierarchy
The Test & Accept platform uses a flexible item type system that separates high-level planning from specific execution while maintaining clear hierarchical relationships. This approach enables better project organization and more effective testing strategies.
The Item Type System
Core Philosophy
The item type system is built on the principle that different types of work require different behaviors:
- Strategic Planning needs broad organization and status aggregation
- Tactical Execution needs specific, testable outcomes
- Clear Separation between planning and execution prevents confusion
- Hierarchical Structure maintains logical relationships
Evolution from Task Items
Previously, the platform used a generic "task items" approach where all items were treated the same. The new system provides:
- Type-Specific Behaviors: Different rules and capabilities for different purposes
- Visual Differentiation: Clear icons and styling to distinguish item types
- Hierarchy Validation: Logical constraints that prevent confusing structures
- Future Extensibility: Foundation for additional item types (milestones, deliverables)
Item Types
Requirements (π·)
Purpose: High-level work organization and planning
- Name
Visual Identity
- Type
- design
- Description
Blue styling with diamond icon (π·) - represents high-level strategic planning
- Name
Containment Rules
- Type
- hierarchy
- Description
Can contain: other requirements, task items, future types (milestones, deliverables)
- Name
Testing Behavior
- Type
- functionality
- Description
Cannot have direct tests; status aggregated from child task items
- Name
Use Cases
- Type
- examples
- Description
Feature sets, work packages, deliverable categories, project phases
Examples of Good Requirements:
- "User Authentication System"
- "Payment Processing Module"
- "Admin Dashboard Features"
- "API Integration Layer"
- "Mobile App Features"
Task Items (π)
Purpose: Specific, actionable work with testable outcomes
- Name
Visual Identity
- Type
- design
- Description
Green styling with clipboard icon (π) - represents actionable work items
- Name
Containment Rules
- Type
- hierarchy
- Description
Can contain: other task items (sub-tasks only)
- Name
Testing Behavior
- Type
- functionality
- Description
Can have acceptance criteria and tests for verification
- Name
Use Cases
- Type
- examples
- Description
Specific features, bug fixes, implementations, configurations
Examples of Good Task Items:
- "Implement OAuth login flow"
- "Add password strength validation"
- "Create user registration API endpoint"
- "Design payment form UI"
- "Configure Stripe webhook handling"
Hierarchical Rules
Allowed Nesting Patterns
β
VALID HIERARCHIES:
π· Requirement
βββ π· Sub-requirement
βββ π Task item
βββ π Task item
βββ π Sub-task
π· Requirement
βββ π Task item
βββ π Task item
π Task item
βββ π Sub-task
βββ π Sub-task
Prohibited Nesting Patterns
β INVALID HIERARCHIES:
π Task item
βββ π· Requirement β Cannot nest requirement under task item
π· Requirement
βββ π· Requirement
βββ π Task item
βββ π· Requirement β Violates logical flow
Validation Logic
The system enforces these rules automatically:
- Requirements can contain any item type except dependencies
- Task Items can only contain other task items (sub-tasks)
- Circular References are prevented at all levels
- Logical Flow is maintained from planning β execution
Real-World Project Examples
E-commerce Platform
π· User Management (requirement)
βββ π User registration system (task_item)
β βββ π Email validation (task_item)
β βββ π Password strength checking (task_item)
β βββ π Email verification flow (task_item)
βββ π User authentication (task_item)
β βββ π Login form (task_item)
β βββ π Session management (task_item)
β βββ π Logout functionality (task_item)
βββ π· Profile Management (requirement)
βββ π Profile editing (task_item)
βββ π Avatar upload (task_item)
βββ π Account deletion (task_item)
π· Payment Processing (requirement)
βββ π Stripe integration (task_item)
β βββ π Payment form UI (task_item)
β βββ π Webhook handling (task_item)
β βββ π Receipt generation (task_item)
βββ π Subscription management (task_item)
βββ π Refund processing (task_item)
Software API Project
π· Authentication & Authorization (requirement)
βββ π JWT token system (task_item)
βββ π Role-based permissions (task_item)
βββ π API key management (task_item)
π· Core API Endpoints (requirement)
βββ π· User Operations (requirement)
β βββ π GET /users (task_item)
β βββ π POST /users (task_item)
β βββ π PUT /users/{id} (task_item)
βββ π· Data Operations (requirement)
βββ π GET /data (task_item)
βββ π POST /data (task_item)
βββ π DELETE /data/{id} (task_item)
π· Documentation & Testing (requirement)
βββ π OpenAPI specification (task_item)
βββ π Integration tests (task_item)
βββ π Performance tests (task_item)
Testing and Status Behavior
Requirements Testing
- No Direct Tests: Requirements cannot have acceptance criteria or tests
- Status Aggregation: Status is calculated from child task items
- Progress Tracking: Completion percentage based on child item completion
- Rollup Logic: All child task items must pass for requirement to be "complete"
Task Item Testing
- Direct Testing: Can have acceptance criteria and associated tests
- Pass/Fail Status: Binary outcomes based on test results
- Detailed Criteria: Multiple criteria per task item for comprehensive testing
- Verification: Each criterion must have clear pass/fail conditions
Migration from Legacy Task Items
Understanding the Transition
Before (Legacy):
π All items were "task items"
π No distinction between planning and execution
π Same behavior for all items regardless of purpose
π Testing available on all items
After (Current):
π· Requirements for planning and organization
π Task items for specific, testable work
Different behaviors for different purposes
Testing only where it makes logical sense
Backward Compatibility
- Existing Items: Legacy task items are preserved as
task_item
type - API Compatibility: Old endpoints continue to work
- Gradual Migration: Teams can adopt new types at their own pace
- No Data Loss: All existing content and relationships preserved
Best Practices
When to Use Requirements
- Organizing Work: Group related task items under common themes
- Project Phases: Major milestones or deliverable categories
- Feature Sets: Collections of related functionality
- Stakeholder Communication: High-level items for client/management visibility
When to Use Task Items
- Specific Work: Individual features, fixes, or implementations
- Testable Outcomes: Work that can be verified with acceptance criteria
- Developer Tasks: Items that developers will directly implement
- Detailed Planning: When you need to define specific acceptance criteria
Hierarchy Design
- Start High-Level: Begin with requirements to establish structure
- Progressive Detail: Break requirements into specific task items
- Logical Grouping: Group related work under appropriate requirements
- Balanced Depth: Avoid excessive nesting (typically 2-3 levels)
Naming Conventions
Requirements: Use noun phrases describing work areas
- β "User Authentication System"
- β "Payment Processing Module"
- β "Implement user login" (too specific)
Task Items: Use action phrases describing specific work
- β "Implement OAuth login flow"
- β "Add password validation"
- β "Authentication" (too broad)
Future Item Types
The system is designed for extensibility. Planned future types include:
Milestones (π―)
- Time-based project checkpoints
- Target dates and deliverable gates
- Critical path analysis
- Stakeholder notifications
Deliverables (π¦)
- Client-facing outputs
- Approval workflows
- Document management
- Version control
Dependencies (β οΈ)
- External blocking items
- Vendor coordination
- Risk management
- SLA tracking
API Integration
Type-Aware Queries
// Get only requirements
const requirements = await apiClient.get('/api/sow/123/items?type=requirement');
// Get only task items
const taskItems = await apiClient.get('/api/sow/123/items?type=task_item');
// Get items by parent
const childItems = await apiClient.get('/api/sow/123/items?parentId=item_456');
Creating Typed Items
// Create a requirement
const requirement = await apiClient.post('/api/sow/123/items', {
title: "User Management System",
description: "Complete user auth and profile management",
type: "requirement"
});
// Create a task item under the requirement
const taskItem = await apiClient.post('/api/sow/123/items', {
title: "Implement user registration",
description: "Create registration form and API endpoint",
type: "task_item",
parentId: requirement.id
});
For complete API details, refer to the API Reference.