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:

  1. Requirements can contain any item type except dependencies
  2. Task Items can only contain other task items (sub-tasks)
  3. Circular References are prevented at all levels
  4. 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.

Was this page helpful?