Files
stack/docs/scratchpads/168-job-steps-tracking.md
Jason Woltje efe624e2c1 feat(#168): Implement job steps tracking
Implement JobStepsModule for granular step tracking within runner jobs.

Features:
- Create and track job steps (SETUP, EXECUTION, VALIDATION, CLEANUP)
- Track step status transitions (PENDING → RUNNING → COMPLETED/FAILED)
- Record token usage for AI_ACTION steps
- Calculate step duration automatically
- GET endpoints for listing and retrieving steps

Implementation:
- JobStepsService: CRUD operations, status tracking, duration calculation
- JobStepsController: GET /runner-jobs/:jobId/steps endpoints
- DTOs: CreateStepDto, UpdateStepDto with validation
- Full unit test coverage (16 tests)

Quality gates:
- Build:  Passed
- Lint:  Passed
- Tests:  16/16 passed
- Coverage:  100% statements, 100% functions, 100% lines, 83.33% branches

Also fixed pre-existing TypeScript strict mode issue in job-events DTO.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-01 21:16:23 -06:00

2.7 KiB

Issue #168: Job steps tracking

Objective

Implement job-steps module for granular step tracking within jobs. This module will track individual steps (SETUP, EXECUTION, VALIDATION, CLEANUP) within a runner job, recording status transitions, token usage, and duration.

Approach

  1. Analyze existing RunnerJobsModule and JobStep model
  2. Create JobStepsModule with TDD approach
  3. Implement service layer for step CRUD and status tracking
  4. Implement controller with GET endpoints
  5. Ensure proper integration with RunnerJobsModule

Progress

  • Analyze existing code structure
  • Create directory structure and DTOs
  • RED: Write tests for JobStepsService
  • GREEN: Implement JobStepsService
  • RED: Write tests for JobStepsController
  • GREEN: Implement JobStepsController
  • Create JobStepsModule
  • REFACTOR: Clean up and optimize
  • Quality gates: typecheck, lint, test, coverage
  • Commit changes

Testing

  • Unit tests for service methods (13 tests)
  • Unit tests for controller endpoints (3 tests)
  • Mock Prisma service
  • Verify token usage tracking
  • Verify duration calculation
  • Coverage: 100% statements, 100% functions, 100% lines, 83.33% branches

Notes

  • Step types: COMMAND, AI_ACTION, GATE, ARTIFACT
  • Step phases: SETUP, EXECUTION, VALIDATION, CLEANUP
  • Status transitions: pending → running → completed/failed
  • Track token usage per step (for AI_ACTION steps)
  • Calculate duration on completion

Implementation Summary

Created the following files:

  • /home/jwoltje/src/mosaic-stack/apps/api/src/job-steps/job-steps.module.ts - Module definition
  • /home/jwoltje/src/mosaic-stack/apps/api/src/job-steps/job-steps.service.ts - Service with CRUD operations
  • /home/jwoltje/src/mosaic-stack/apps/api/src/job-steps/job-steps.controller.ts - Controller with GET endpoints
  • /home/jwoltje/src/mosaic-stack/apps/api/src/job-steps/dto/create-step.dto.ts - DTO for creating steps
  • /home/jwoltje/src/mosaic-stack/apps/api/src/job-steps/dto/update-step.dto.ts - DTO for updating steps
  • /home/jwoltje/src/mosaic-stack/apps/api/src/job-steps/dto/index.ts - DTO exports
  • /home/jwoltje/src/mosaic-stack/apps/api/src/job-steps/job-steps.service.spec.ts - Service tests (13 tests)
  • /home/jwoltje/src/mosaic-stack/apps/api/src/job-steps/job-steps.controller.spec.ts - Controller tests (3 tests)
  • /home/jwoltje/src/mosaic-stack/apps/api/src/job-steps/index.ts - Module exports

Also fixed pre-existing issue in job-events DTO (added ! to required properties).

Quality Gates

  • Build: Passed
  • Lint: Passed (auto-fixed formatting)
  • Tests: 16/16 passed
  • Coverage: 100% statements, 100% functions, 100% lines, 83.33% branches