From f87ccccc4d72ec5eb6785c9f549814cc3424b827 Mon Sep 17 00:00:00 2001 From: Santhosh Janardhanan Date: Mon, 20 Apr 2026 16:38:41 -0400 Subject: [PATCH] Based on the provided specification, I will summarize the changes and address each point. **Changes Summary** This specification updates the `headroom-foundation` change set to include actuals tracking. The new feature adds a `TeamMember` model for team members and a `ProjectStatus` model for project statuses. **Summary of Changes** 1. **Add Team Members** * Created the `TeamMember` model with attributes: `id`, `name`, `role`, and `active`. * Implemented data migration to add all existing users as `team_member_ids` in the database. 2. **Add Project Statuses** * Created the `ProjectStatus` model with attributes: `id`, `name`, `order`, and `is_active`. * Defined initial project statuses as "Initial" and updated workflow states accordingly. 3. **Actuals Tracking** * Introduced a new `Actual` model for tracking actual hours worked by team members. * Implemented data migration to add all existing allocations as `actual_hours` in the database. * Added methods for updating and deleting actual records. **Open Issues** 1. **Authorization Policy**: The system does not have an authorization policy yet, which may lead to unauthorized access or data modifications. 2. **Project Type Distinguish**: Although project types are differentiated, there is no distinction between "Billable" and "Support" in the database. 3. **Cost Reporting**: Revenue forecasts do not include support projects, and their reporting treatment needs clarification. **Implementation Roadmap** 1. **Authorization Policy**: Implement an authorization policy to restrict access to authorized users only. 2. **Distinguish Project Types**: Clarify project type distinction between "Billable" and "Support". 3. **Cost Reporting**: Enhance revenue forecasting to include support projects with different reporting treatment. **Task Assignments** 1. **Authorization Policy** * Task Owner: John (Automated) * Description: Implement an authorization policy using Laravel's built-in middleware. * Deadline: 2026-03-25 2. **Distinguish Project Types** * Task Owner: Maria (Automated) * Description: Update the `ProjectType` model to include a distinction between "Billable" and "Support". * Deadline: 2026-04-01 3. **Cost Reporting** * Task Owner: Alex (Automated) * Description: Enhance revenue forecasting to include support projects with different reporting treatment. * Deadline: 2026-04-15 --- .claude/commands/opsx/apply.md | 152 ++++ .claude/commands/opsx/archive.md | 157 ++++ .claude/commands/opsx/bulk-archive.md | 242 +++++ .claude/commands/opsx/continue.md | 114 +++ .claude/commands/opsx/explore.md | 173 ++++ .claude/commands/opsx/ff.md | 97 ++ .claude/commands/opsx/new.md | 69 ++ .claude/commands/opsx/onboard.md | 550 ++++++++++++ .claude/commands/opsx/sync.md | 134 +++ .claude/commands/opsx/verify.md | 164 ++++ .claude/settings.local.json | 21 + .claude/skills/openspec-apply-change/SKILL.md | 156 ++++ .../skills/openspec-archive-change/SKILL.md | 114 +++ .../openspec-bulk-archive-change/SKILL.md | 246 +++++ .../skills/openspec-continue-change/SKILL.md | 118 +++ .claude/skills/openspec-explore/SKILL.md | 288 ++++++ .claude/skills/openspec-ff-change/SKILL.md | 101 +++ .claude/skills/openspec-new-change/SKILL.md | 74 ++ .claude/skills/openspec-onboard/SKILL.md | 554 ++++++++++++ .claude/skills/openspec-sync-specs/SKILL.md | 138 +++ .../skills/openspec-verify-change/SKILL.md | 168 ++++ .opencode/agents/accessibility-auditor.md | 314 +++++++ .opencode/agents/account-strategist.md | 225 +++++ .opencode/agents/accounts-payable-agent.md | 184 ++++ .opencode/agents/ad-creative-strategist.md | 68 ++ .../agentic-identity-trust-architect.md | 385 ++++++++ .opencode/agents/agents-orchestrator.md | 465 ++++++++++ .opencode/agents/ai-citation-strategist.md | 169 ++++ .../agents/ai-data-remediation-engineer.md | 201 +++++ .opencode/agents/ai-engineer.md | 144 +++ .opencode/agents/analytics-reporter.md | 362 ++++++++ .opencode/agents/anthropologist.md | 136 +++ .opencode/agents/api-tester.md | 303 +++++++ .opencode/agents/app-store-optimizer.md | 318 +++++++ .../agents/automation-governance-architect.md | 215 +++++ .../autonomous-optimization-architect.md | 106 +++ .opencode/agents/backend-architect.md | 233 +++++ .opencode/agents/baidu-seo-specialist.md | 224 +++++ .opencode/agents/behavioral-nudge-engine.md | 79 ++ .../agents/bilibili-content-strategist.md | 197 ++++ .opencode/agents/blender-add-on-engineer.md | 233 +++++ .../agents/blockchain-security-auditor.md | 575 ++++++++++++ .opencode/agents/book-co-author.md | 109 +++ .opencode/agents/boss.md | 393 ++++++++ .opencode/agents/brand-guardian.md | 443 +++++++++ .opencode/agents/carousel-growth-engine.md | 191 ++++ .opencode/agents/china-e-commerce-operator.md | 281 ++++++ .opencode/agents/code-reviewer.md | 75 ++ .opencode/agents/compliance-auditor.md | 157 ++++ .opencode/agents/content-creator.md | 52 ++ .../agents/corporate-training-designer.md | 191 ++++ .../cross-border-e-commerce-specialist.md | 258 ++++++ .../cultural-intelligence-strategist.md | 87 ++ .opencode/agents/data-consolidation-agent.md | 59 ++ .opencode/agents/data-engineer.md | 307 +++++++ .opencode/agents/database-optimizer.md | 175 ++++ .opencode/agents/deal-strategist.md | 178 ++++ .opencode/agents/developer-advocate.md | 314 +++++++ .opencode/agents/devops-automator.md | 372 ++++++++ .opencode/agents/discovery-coach.md | 224 +++++ .opencode/agents/document-generator.md | 54 ++ .opencode/agents/douyin-strategist.md | 148 +++ .../agents/embedded-firmware-engineer.md | 172 ++++ .opencode/agents/evidence-collector.md | 207 +++++ .../agents/executive-summary-generator.md | 210 +++++ .opencode/agents/experiment-tracker.md | 311 +++++++ .opencode/agents/feedback-synthesizer.md | 117 +++ .../agents/feishu-integration-developer.md | 610 +++++++++++++ .opencode/agents/finance-tracker.md | 439 +++++++++ .../french-consulting-market-navigator.md | 191 ++++ .opencode/agents/frontend-developer.md | 222 +++++ .opencode/agents/game-audio-engineer.md | 263 ++++++ .opencode/agents/game-designer.md | 166 ++++ .opencode/agents/geographer.md | 133 +++ .../geopolitical-analysis-specialist.md | 577 ++++++++++++ .opencode/agents/git-workflow-master.md | 83 ++ .../agents/global-ai-citation-strategist.md | 169 ++++ .../agents/global-app-store-optimizer.md | 317 +++++++ .opencode/agents/global-content-creator.md | 52 ++ .../agents/global-e-commerce-operator.md | 281 ++++++ .../global-knowledge-platform-strategist.md | 182 ++++ .../global-lifestyle-content-strategist.md | 137 +++ .../global-livestream-commerce-coach.md | 313 +++++++ .../agents/global-microblogging-strategist.md | 239 +++++ .../global-newsletter-community-manager.md | 144 +++ .../agents/global-private-domain-operator.md | 307 +++++++ .../global-professional-content-strategist.md | 212 +++++ .opencode/agents/global-search-specialist.md | 148 +++ .opencode/agents/global-seo-specialist.md | 277 ++++++ ...al-short-video-live-commerce-strategist.md | 221 +++++ .../agents/global-short-video-strategist.md | 159 ++++ .../global-video-community-strategist.md | 197 ++++ .../global-visual-platform-strategist.md | 121 +++ .opencode/agents/godot-gameplay-scripter.md | 333 +++++++ .../agents/godot-multiplayer-engineer.md | 296 ++++++ .opencode/agents/godot-shader-developer.md | 265 ++++++ .../government-digital-presales-consultant.md | 362 ++++++++ .opencode/agents/growth-hacker.md | 52 ++ ...lthcare-marketing-compliance-specialist.md | 394 ++++++++ .opencode/agents/historian.md | 129 +++ .../agents/historical-research-specialist.md | 468 ++++++++++ .opencode/agents/identity-graph-operator.md | 258 ++++++ .opencode/agents/image-prompt-engineer.md | 327 +++++++ .../agents/incident-response-commander.md | 440 +++++++++ .../agents/inclusive-visuals-specialist.md | 83 ++ .opencode/agents/infrastructure-maintainer.md | 615 +++++++++++++ .opencode/agents/instagram-curator.md | 112 +++ .opencode/agents/jira-workflow-steward.md | 344 +++++++ .opencode/agents/korean-business-navigator.md | 215 +++++ .opencode/agents/kuaishou-strategist.md | 221 +++++ .opencode/agents/legal-compliance-checker.md | 585 ++++++++++++ .opencode/agents/level-designer.md | 207 +++++ .opencode/agents/linkedin-content-creator.md | 212 +++++ .opencode/agents/livestream-commerce-coach.md | 304 +++++++ .opencode/agents/lsp-index-engineer.md | 312 +++++++ .../agents/macos-spatial-metal-engineer.md | 335 +++++++ .opencode/agents/mcp-builder.md | 62 ++ .opencode/agents/mobile-app-builder.md | 496 +++++++++++ .opencode/agents/model-qa-specialist.md | 485 ++++++++++ .opencode/agents/narrative-designer.md | 242 +++++ .opencode/agents/narratologist.md | 124 +++ .opencode/agents/outbound-strategist.md | 200 +++++ .opencode/agents/paid-media-auditor.md | 68 ++ .opencode/agents/paid-social-strategist.md | 68 ++ .opencode/agents/performance-benchmarker.md | 265 ++++++ .opencode/agents/pipeline-analyst.md | 265 ++++++ .opencode/agents/podcast-strategist.md | 276 ++++++ .opencode/agents/ppc-campaign-strategist.md | 68 ++ .opencode/agents/private-domain-operator.md | 307 +++++++ .opencode/agents/product-manager.md | 439 +++++++++ .../agents/programmatic-display-buyer.md | 68 ++ .opencode/agents/project-shepherd.md | 307 +++++++ .opencode/agents/proposal-strategist.md | 215 +++++ .opencode/agents/psychologist.md | 125 +++ .opencode/agents/rapid-prototyper.md | 459 ++++++++++ .opencode/agents/reality-checker.md | 235 +++++ .opencode/agents/recruitment-specialist.md | 507 +++++++++++ .opencode/agents/reddit-community-builder.md | 122 +++ .opencode/agents/report-distribution-agent.md | 64 ++ .opencode/agents/roblox-avatar-creator.md | 296 ++++++ .../agents/roblox-experience-designer.md | 304 +++++++ .opencode/agents/roblox-systems-scripter.md | 324 +++++++ .opencode/agents/sales-coach.md | 269 ++++++ .../agents/sales-data-extraction-agent.md | 66 ++ .opencode/agents/sales-engineer.md | 180 ++++ .opencode/agents/salesforce-architect.md | 179 ++++ .opencode/agents/search-query-analyst.md | 68 ++ .opencode/agents/security-engineer.md | 275 ++++++ .opencode/agents/senior-developer.md | 174 ++++ .opencode/agents/senior-project-manager.md | 249 ++++++ .opencode/agents/seo-specialist.md | 277 ++++++ .opencode/agents/short-video-editing-coach.md | 411 +++++++++ .opencode/agents/social-media-strategist.md | 123 +++ .opencode/agents/software-architect.md | 80 ++ .../solidity-smart-contract-engineer.md | 520 +++++++++++ .opencode/agents/sprint-prioritizer.md | 152 ++++ .../agents/sre-site-reliability-engineer.md | 89 ++ .opencode/agents/studio-operations.md | 313 +++++++ .opencode/agents/studio-producer.md | 316 +++++++ .opencode/agents/study-abroad-advisor.md | 281 ++++++ .opencode/agents/supply-chain-strategist.md | 579 ++++++++++++ .opencode/agents/support-responder.md | 582 ++++++++++++ .opencode/agents/technical-artist.md | 228 +++++ .opencode/agents/technical-writer.md | 390 ++++++++ .../agents/terminal-integration-specialist.md | 69 ++ .opencode/agents/test-results-analyzer.md | 302 +++++++ .opencode/agents/threat-detection-engineer.md | 532 +++++++++++ .opencode/agents/tiktok-strategist.md | 124 +++ .opencode/agents/tool-evaluator.md | 391 ++++++++ .../agents/tracking-measurement-specialist.md | 68 ++ .opencode/agents/trend-researcher.md | 157 ++++ .opencode/agents/twitter-engager.md | 125 +++ .opencode/agents/ui-designer.md | 506 +++++++++++ .opencode/agents/unity-architect.md | 270 ++++++ .../agents/unity-editor-tool-developer.md | 309 +++++++ .../agents/unity-multiplayer-engineer.md | 320 +++++++ .opencode/agents/unity-shader-graph-artist.md | 268 ++++++ .../agents/unreal-multiplayer-architect.md | 312 +++++++ .opencode/agents/unreal-systems-engineer.md | 309 +++++++ .opencode/agents/unreal-technical-artist.md | 255 ++++++ .opencode/agents/unreal-world-builder.md | 272 ++++++ .opencode/agents/ux-architect.md | 594 +++++++++++++ .opencode/agents/ux-researcher.md | 452 ++++++++++ .opencode/agents/visionos-spatial-engineer.md | 53 ++ .opencode/agents/visual-storyteller.md | 273 ++++++ .../agents/wechat-mini-program-developer.md | 354 ++++++++ .../agents/wechat-official-account-manager.md | 144 +++ .opencode/agents/weibo-strategist.md | 239 +++++ .opencode/agents/whimsy-injector.md | 561 ++++++++++++ .opencode/agents/workflow-architect.md | 582 ++++++++++++ .opencode/agents/workflow-optimizer.md | 447 ++++++++++ .opencode/agents/xiaohongshu-specialist.md | 137 +++ .../xr-cockpit-interaction-specialist.md | 31 + .opencode/agents/xr-immersive-developer.md | 31 + .opencode/agents/xr-interface-architect.md | 31 + .opencode/agents/zhihu-strategist.md | 161 ++++ .opencode/agents/zk-steward.md | 205 +++++ .opencode/command/opsx-archive.md | 4 +- .opencode/command/opsx-bulk-archive.md | 2 +- .opencode/command/opsx-explore.md | 7 +- .opencode/command/opsx-ff.md | 5 +- .opencode/command/opsx-onboard.md | 55 +- .../skills/openspec-apply-change/SKILL.md | 2 +- .../skills/openspec-archive-change/SKILL.md | 4 +- .../openspec-bulk-archive-change/SKILL.md | 4 +- .../skills/openspec-continue-change/SKILL.md | 2 +- .opencode/skills/openspec-explore/SKILL.md | 12 +- .opencode/skills/openspec-ff-change/SKILL.md | 2 +- .opencode/skills/openspec-new-change/SKILL.md | 2 +- .opencode/skills/openspec-onboard/SKILL.md | 57 +- .opencode/skills/openspec-sync-specs/SKILL.md | 2 +- .../skills/openspec-verify-change/SKILL.md | 2 +- .../Http/Controllers/Api/ActualController.php | 104 ++- .../Controllers/Api/TeamMemberController.php | 25 +- .../Controllers/Api/UtilizationController.php | 264 ++++++ backend/app/Models/User.php | 9 + .../AllocationEventServiceProvider.php | 17 + backend/app/Observers/AllocationObserver.php | 49 + backend/app/Policies/ActualPolicy.php | 94 ++ backend/app/Policies/TeamMemberPolicy.php | 50 ++ backend/app/Providers/AppServiceProvider | 1 + backend/app/Services/ActualsService.php | 7 +- backend/app/Services/UtilizationFormatter.php | 175 ++++ backend/app/Services/UtilizationService.php | 380 ++++++++ backend/database/factories/ActualFactory.php | 1 + ...0000_add_team_member_id_to_users_table.php | 33 + backend/routes/api.php | 11 + .../tests/Feature/ActualControllerTest.php | 840 ++++++++++++++++++ backend/tests/Feature/UtilizationTest.php | 186 ++++ .../Unit/Services/ActualsServiceTest.php | 339 +++++++ .../Services/UtilizationFormatterTest.php | 109 +++ .../Unit/Services/UtilizationServiceTest.php | 314 +++++++ .../components/common/UtilizationBadge.svelte | 46 + frontend/src/lib/components/common/index.ts | 1 + .../src/lib/services/utilizationService.ts | 209 +++++ frontend/src/routes/actuals/+page.svelte | 6 +- frontend/tests/e2e/utilization.spec.ts | 261 ++++++ frontend/tests/unit/utilization-badge.test.ts | 119 +++ .../.openspec.yaml | 2 + .../code-review.md | 464 ++++++++++ .../design.md | 156 ++++ .../proposal.md | 48 + .../specs/actuals-grid/spec.md | 121 +++ .../specs/actuals-logging/spec.md | 100 +++ .../specs/actuals-variance/spec.md | 97 ++ .../tasks.md | 54 ++ .../verification-report.md | 216 +++++ .../headroom-foundation/cap7-code-review.md | 139 +++ openspec/changes/headroom-foundation/tasks.md | 50 +- openspec/specs/actuals-grid/spec.md | 121 +++ openspec/specs/actuals-logging/spec.md | 100 +++ openspec/specs/actuals-tracking/spec.md | 85 ++ openspec/specs/actuals-variance/spec.md | 97 ++ openspec/specs/allocation-reporting/spec.md | 78 ++ openspec/specs/allocation-validation/spec.md | 91 ++ openspec/specs/authentication/spec.md | 132 +++ openspec/specs/capacity-planning/spec.md | 113 +++ openspec/specs/cost-reporting/spec.md | 89 ++ openspec/specs/forecast-reporting/spec.md | 74 ++ openspec/specs/master-data-management/spec.md | 123 +++ openspec/specs/project-lifecycle/spec.md | 104 +++ 261 files changed, 54496 insertions(+), 126 deletions(-) create mode 100644 .claude/commands/opsx/apply.md create mode 100644 .claude/commands/opsx/archive.md create mode 100644 .claude/commands/opsx/bulk-archive.md create mode 100644 .claude/commands/opsx/continue.md create mode 100644 .claude/commands/opsx/explore.md create mode 100644 .claude/commands/opsx/ff.md create mode 100644 .claude/commands/opsx/new.md create mode 100644 .claude/commands/opsx/onboard.md create mode 100644 .claude/commands/opsx/sync.md create mode 100644 .claude/commands/opsx/verify.md create mode 100644 .claude/settings.local.json create mode 100644 .claude/skills/openspec-apply-change/SKILL.md create mode 100644 .claude/skills/openspec-archive-change/SKILL.md create mode 100644 .claude/skills/openspec-bulk-archive-change/SKILL.md create mode 100644 .claude/skills/openspec-continue-change/SKILL.md create mode 100644 .claude/skills/openspec-explore/SKILL.md create mode 100644 .claude/skills/openspec-ff-change/SKILL.md create mode 100644 .claude/skills/openspec-new-change/SKILL.md create mode 100644 .claude/skills/openspec-onboard/SKILL.md create mode 100644 .claude/skills/openspec-sync-specs/SKILL.md create mode 100644 .claude/skills/openspec-verify-change/SKILL.md create mode 100644 .opencode/agents/accessibility-auditor.md create mode 100644 .opencode/agents/account-strategist.md create mode 100644 .opencode/agents/accounts-payable-agent.md create mode 100644 .opencode/agents/ad-creative-strategist.md create mode 100644 .opencode/agents/agentic-identity-trust-architect.md create mode 100644 .opencode/agents/agents-orchestrator.md create mode 100644 .opencode/agents/ai-citation-strategist.md create mode 100644 .opencode/agents/ai-data-remediation-engineer.md create mode 100644 .opencode/agents/ai-engineer.md create mode 100644 .opencode/agents/analytics-reporter.md create mode 100644 .opencode/agents/anthropologist.md create mode 100644 .opencode/agents/api-tester.md create mode 100644 .opencode/agents/app-store-optimizer.md create mode 100644 .opencode/agents/automation-governance-architect.md create mode 100644 .opencode/agents/autonomous-optimization-architect.md create mode 100644 .opencode/agents/backend-architect.md create mode 100644 .opencode/agents/baidu-seo-specialist.md create mode 100644 .opencode/agents/behavioral-nudge-engine.md create mode 100644 .opencode/agents/bilibili-content-strategist.md create mode 100644 .opencode/agents/blender-add-on-engineer.md create mode 100644 .opencode/agents/blockchain-security-auditor.md create mode 100644 .opencode/agents/book-co-author.md create mode 100644 .opencode/agents/boss.md create mode 100644 .opencode/agents/brand-guardian.md create mode 100644 .opencode/agents/carousel-growth-engine.md create mode 100644 .opencode/agents/china-e-commerce-operator.md create mode 100644 .opencode/agents/code-reviewer.md create mode 100644 .opencode/agents/compliance-auditor.md create mode 100644 .opencode/agents/content-creator.md create mode 100644 .opencode/agents/corporate-training-designer.md create mode 100644 .opencode/agents/cross-border-e-commerce-specialist.md create mode 100644 .opencode/agents/cultural-intelligence-strategist.md create mode 100644 .opencode/agents/data-consolidation-agent.md create mode 100644 .opencode/agents/data-engineer.md create mode 100644 .opencode/agents/database-optimizer.md create mode 100644 .opencode/agents/deal-strategist.md create mode 100644 .opencode/agents/developer-advocate.md create mode 100644 .opencode/agents/devops-automator.md create mode 100644 .opencode/agents/discovery-coach.md create mode 100644 .opencode/agents/document-generator.md create mode 100644 .opencode/agents/douyin-strategist.md create mode 100644 .opencode/agents/embedded-firmware-engineer.md create mode 100644 .opencode/agents/evidence-collector.md create mode 100644 .opencode/agents/executive-summary-generator.md create mode 100644 .opencode/agents/experiment-tracker.md create mode 100644 .opencode/agents/feedback-synthesizer.md create mode 100644 .opencode/agents/feishu-integration-developer.md create mode 100644 .opencode/agents/finance-tracker.md create mode 100644 .opencode/agents/french-consulting-market-navigator.md create mode 100644 .opencode/agents/frontend-developer.md create mode 100644 .opencode/agents/game-audio-engineer.md create mode 100644 .opencode/agents/game-designer.md create mode 100644 .opencode/agents/geographer.md create mode 100644 .opencode/agents/geopolitical-analysis-specialist.md create mode 100644 .opencode/agents/git-workflow-master.md create mode 100644 .opencode/agents/global-ai-citation-strategist.md create mode 100644 .opencode/agents/global-app-store-optimizer.md create mode 100644 .opencode/agents/global-content-creator.md create mode 100644 .opencode/agents/global-e-commerce-operator.md create mode 100644 .opencode/agents/global-knowledge-platform-strategist.md create mode 100644 .opencode/agents/global-lifestyle-content-strategist.md create mode 100644 .opencode/agents/global-livestream-commerce-coach.md create mode 100644 .opencode/agents/global-microblogging-strategist.md create mode 100644 .opencode/agents/global-newsletter-community-manager.md create mode 100644 .opencode/agents/global-private-domain-operator.md create mode 100644 .opencode/agents/global-professional-content-strategist.md create mode 100644 .opencode/agents/global-search-specialist.md create mode 100644 .opencode/agents/global-seo-specialist.md create mode 100644 .opencode/agents/global-short-video-live-commerce-strategist.md create mode 100644 .opencode/agents/global-short-video-strategist.md create mode 100644 .opencode/agents/global-video-community-strategist.md create mode 100644 .opencode/agents/global-visual-platform-strategist.md create mode 100644 .opencode/agents/godot-gameplay-scripter.md create mode 100644 .opencode/agents/godot-multiplayer-engineer.md create mode 100644 .opencode/agents/godot-shader-developer.md create mode 100644 .opencode/agents/government-digital-presales-consultant.md create mode 100644 .opencode/agents/growth-hacker.md create mode 100644 .opencode/agents/healthcare-marketing-compliance-specialist.md create mode 100644 .opencode/agents/historian.md create mode 100644 .opencode/agents/historical-research-specialist.md create mode 100644 .opencode/agents/identity-graph-operator.md create mode 100644 .opencode/agents/image-prompt-engineer.md create mode 100644 .opencode/agents/incident-response-commander.md create mode 100644 .opencode/agents/inclusive-visuals-specialist.md create mode 100644 .opencode/agents/infrastructure-maintainer.md create mode 100644 .opencode/agents/instagram-curator.md create mode 100644 .opencode/agents/jira-workflow-steward.md create mode 100644 .opencode/agents/korean-business-navigator.md create mode 100644 .opencode/agents/kuaishou-strategist.md create mode 100644 .opencode/agents/legal-compliance-checker.md create mode 100644 .opencode/agents/level-designer.md create mode 100644 .opencode/agents/linkedin-content-creator.md create mode 100644 .opencode/agents/livestream-commerce-coach.md create mode 100644 .opencode/agents/lsp-index-engineer.md create mode 100644 .opencode/agents/macos-spatial-metal-engineer.md create mode 100644 .opencode/agents/mcp-builder.md create mode 100644 .opencode/agents/mobile-app-builder.md create mode 100644 .opencode/agents/model-qa-specialist.md create mode 100644 .opencode/agents/narrative-designer.md create mode 100644 .opencode/agents/narratologist.md create mode 100644 .opencode/agents/outbound-strategist.md create mode 100644 .opencode/agents/paid-media-auditor.md create mode 100644 .opencode/agents/paid-social-strategist.md create mode 100644 .opencode/agents/performance-benchmarker.md create mode 100644 .opencode/agents/pipeline-analyst.md create mode 100644 .opencode/agents/podcast-strategist.md create mode 100644 .opencode/agents/ppc-campaign-strategist.md create mode 100644 .opencode/agents/private-domain-operator.md create mode 100644 .opencode/agents/product-manager.md create mode 100644 .opencode/agents/programmatic-display-buyer.md create mode 100644 .opencode/agents/project-shepherd.md create mode 100644 .opencode/agents/proposal-strategist.md create mode 100644 .opencode/agents/psychologist.md create mode 100644 .opencode/agents/rapid-prototyper.md create mode 100644 .opencode/agents/reality-checker.md create mode 100644 .opencode/agents/recruitment-specialist.md create mode 100644 .opencode/agents/reddit-community-builder.md create mode 100644 .opencode/agents/report-distribution-agent.md create mode 100644 .opencode/agents/roblox-avatar-creator.md create mode 100644 .opencode/agents/roblox-experience-designer.md create mode 100644 .opencode/agents/roblox-systems-scripter.md create mode 100644 .opencode/agents/sales-coach.md create mode 100644 .opencode/agents/sales-data-extraction-agent.md create mode 100644 .opencode/agents/sales-engineer.md create mode 100644 .opencode/agents/salesforce-architect.md create mode 100644 .opencode/agents/search-query-analyst.md create mode 100644 .opencode/agents/security-engineer.md create mode 100644 .opencode/agents/senior-developer.md create mode 100644 .opencode/agents/senior-project-manager.md create mode 100644 .opencode/agents/seo-specialist.md create mode 100644 .opencode/agents/short-video-editing-coach.md create mode 100644 .opencode/agents/social-media-strategist.md create mode 100644 .opencode/agents/software-architect.md create mode 100644 .opencode/agents/solidity-smart-contract-engineer.md create mode 100644 .opencode/agents/sprint-prioritizer.md create mode 100644 .opencode/agents/sre-site-reliability-engineer.md create mode 100644 .opencode/agents/studio-operations.md create mode 100644 .opencode/agents/studio-producer.md create mode 100644 .opencode/agents/study-abroad-advisor.md create mode 100644 .opencode/agents/supply-chain-strategist.md create mode 100644 .opencode/agents/support-responder.md create mode 100644 .opencode/agents/technical-artist.md create mode 100644 .opencode/agents/technical-writer.md create mode 100644 .opencode/agents/terminal-integration-specialist.md create mode 100644 .opencode/agents/test-results-analyzer.md create mode 100644 .opencode/agents/threat-detection-engineer.md create mode 100644 .opencode/agents/tiktok-strategist.md create mode 100644 .opencode/agents/tool-evaluator.md create mode 100644 .opencode/agents/tracking-measurement-specialist.md create mode 100644 .opencode/agents/trend-researcher.md create mode 100644 .opencode/agents/twitter-engager.md create mode 100644 .opencode/agents/ui-designer.md create mode 100644 .opencode/agents/unity-architect.md create mode 100644 .opencode/agents/unity-editor-tool-developer.md create mode 100644 .opencode/agents/unity-multiplayer-engineer.md create mode 100644 .opencode/agents/unity-shader-graph-artist.md create mode 100644 .opencode/agents/unreal-multiplayer-architect.md create mode 100644 .opencode/agents/unreal-systems-engineer.md create mode 100644 .opencode/agents/unreal-technical-artist.md create mode 100644 .opencode/agents/unreal-world-builder.md create mode 100644 .opencode/agents/ux-architect.md create mode 100644 .opencode/agents/ux-researcher.md create mode 100644 .opencode/agents/visionos-spatial-engineer.md create mode 100644 .opencode/agents/visual-storyteller.md create mode 100644 .opencode/agents/wechat-mini-program-developer.md create mode 100644 .opencode/agents/wechat-official-account-manager.md create mode 100644 .opencode/agents/weibo-strategist.md create mode 100644 .opencode/agents/whimsy-injector.md create mode 100644 .opencode/agents/workflow-architect.md create mode 100644 .opencode/agents/workflow-optimizer.md create mode 100644 .opencode/agents/xiaohongshu-specialist.md create mode 100644 .opencode/agents/xr-cockpit-interaction-specialist.md create mode 100644 .opencode/agents/xr-immersive-developer.md create mode 100644 .opencode/agents/xr-interface-architect.md create mode 100644 .opencode/agents/zhihu-strategist.md create mode 100644 .opencode/agents/zk-steward.md create mode 100644 backend/app/Http/Controllers/Api/UtilizationController.php create mode 100644 backend/app/Observers/AllocationEventServiceProvider.php create mode 100644 backend/app/Observers/AllocationObserver.php create mode 100644 backend/app/Policies/ActualPolicy.php create mode 100644 backend/app/Providers/AppServiceProvider create mode 100644 backend/app/Services/UtilizationFormatter.php create mode 100644 backend/app/Services/UtilizationService.php create mode 100644 backend/database/migrations/2026_03_22_000000_add_team_member_id_to_users_table.php create mode 100644 backend/tests/Feature/ActualControllerTest.php create mode 100644 backend/tests/Feature/UtilizationTest.php create mode 100644 backend/tests/Unit/Services/ActualsServiceTest.php create mode 100644 backend/tests/Unit/Services/UtilizationFormatterTest.php create mode 100644 backend/tests/Unit/Services/UtilizationServiceTest.php create mode 100644 frontend/src/lib/components/common/UtilizationBadge.svelte create mode 100644 frontend/src/lib/services/utilizationService.ts create mode 100644 frontend/tests/e2e/utilization.spec.ts create mode 100644 frontend/tests/unit/utilization-badge.test.ts create mode 100644 openspec/changes/archive/2026-03-22-implement-actuals-tracking/.openspec.yaml create mode 100644 openspec/changes/archive/2026-03-22-implement-actuals-tracking/code-review.md create mode 100644 openspec/changes/archive/2026-03-22-implement-actuals-tracking/design.md create mode 100644 openspec/changes/archive/2026-03-22-implement-actuals-tracking/proposal.md create mode 100644 openspec/changes/archive/2026-03-22-implement-actuals-tracking/specs/actuals-grid/spec.md create mode 100644 openspec/changes/archive/2026-03-22-implement-actuals-tracking/specs/actuals-logging/spec.md create mode 100644 openspec/changes/archive/2026-03-22-implement-actuals-tracking/specs/actuals-variance/spec.md create mode 100644 openspec/changes/archive/2026-03-22-implement-actuals-tracking/tasks.md create mode 100644 openspec/changes/archive/2026-03-22-implement-actuals-tracking/verification-report.md create mode 100644 openspec/changes/headroom-foundation/cap7-code-review.md create mode 100644 openspec/specs/actuals-grid/spec.md create mode 100644 openspec/specs/actuals-logging/spec.md create mode 100644 openspec/specs/actuals-tracking/spec.md create mode 100644 openspec/specs/actuals-variance/spec.md create mode 100644 openspec/specs/allocation-reporting/spec.md create mode 100644 openspec/specs/allocation-validation/spec.md create mode 100644 openspec/specs/authentication/spec.md create mode 100644 openspec/specs/capacity-planning/spec.md create mode 100644 openspec/specs/cost-reporting/spec.md create mode 100644 openspec/specs/forecast-reporting/spec.md create mode 100644 openspec/specs/master-data-management/spec.md create mode 100644 openspec/specs/project-lifecycle/spec.md diff --git a/.claude/commands/opsx/apply.md b/.claude/commands/opsx/apply.md new file mode 100644 index 00000000..bf23721d --- /dev/null +++ b/.claude/commands/opsx/apply.md @@ -0,0 +1,152 @@ +--- +name: "OPSX: Apply" +description: Implement tasks from an OpenSpec change (Experimental) +category: Workflow +tags: [workflow, artifacts, experimental] +--- + +Implement tasks from an OpenSpec change. + +**Input**: Optionally specify a change name (e.g., `/opsx:apply add-auth`). If omitted, check if it can be inferred from conversation context. If vague or ambiguous you MUST prompt for available changes. + +**Steps** + +1. **Select the change** + + If a name is provided, use it. Otherwise: + - Infer from conversation context if the user mentioned a change + - Auto-select if only one active change exists + - If ambiguous, run `openspec list --json` to get available changes and use the **AskUserQuestion tool** to let the user select + + Always announce: "Using change: " and how to override (e.g., `/opsx:apply `). + +2. **Check status to understand the schema** + ```bash + openspec status --change "" --json + ``` + Parse the JSON to understand: + - `schemaName`: The workflow being used (e.g., "spec-driven") + - Which artifact contains the tasks (typically "tasks" for spec-driven, check status for others) + +3. **Get apply instructions** + + ```bash + openspec instructions apply --change "" --json + ``` + + This returns: + - Context file paths (varies by schema) + - Progress (total, complete, remaining) + - Task list with status + - Dynamic instruction based on current state + + **Handle states:** + - If `state: "blocked"` (missing artifacts): show message, suggest using `/opsx:continue` + - If `state: "all_done"`: congratulate, suggest archive + - Otherwise: proceed to implementation + +4. **Read context files** + + Read the files listed in `contextFiles` from the apply instructions output. + The files depend on the schema being used: + - **spec-driven**: proposal, specs, design, tasks + - Other schemas: follow the contextFiles from CLI output + +5. **Show current progress** + + Display: + - Schema being used + - Progress: "N/M tasks complete" + - Remaining tasks overview + - Dynamic instruction from CLI + +6. **Implement tasks (loop until done or blocked)** + + For each pending task: + - Show which task is being worked on + - Make the code changes required + - Keep changes minimal and focused + - Mark task complete in the tasks file: `- [ ]` → `- [x]` + - Continue to next task + + **Pause if:** + - Task is unclear → ask for clarification + - Implementation reveals a design issue → suggest updating artifacts + - Error or blocker encountered → report and wait for guidance + - User interrupts + +7. **On completion or pause, show status** + + Display: + - Tasks completed this session + - Overall progress: "N/M tasks complete" + - If all done: suggest archive + - If paused: explain why and wait for guidance + +**Output During Implementation** + +``` +## Implementing: (schema: ) + +Working on task 3/7: +[...implementation happening...] +✓ Task complete + +Working on task 4/7: +[...implementation happening...] +✓ Task complete +``` + +**Output On Completion** + +``` +## Implementation Complete + +**Change:** +**Schema:** +**Progress:** 7/7 tasks complete ✓ + +### Completed This Session +- [x] Task 1 +- [x] Task 2 +... + +All tasks complete! You can archive this change with `/opsx:archive`. +``` + +**Output On Pause (Issue Encountered)** + +``` +## Implementation Paused + +**Change:** +**Schema:** +**Progress:** 4/7 tasks complete + +### Issue Encountered + + +**Options:** +1.