orbital-command 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +396 -0
- package/bin/orbital.js +362 -0
- package/dist/assets/WorkflowVisualizer-BZ21PIIF.js +84 -0
- package/dist/assets/WorkflowVisualizer-BZV40eAE.css +1 -0
- package/dist/assets/charts-D__PA1zp.js +72 -0
- package/dist/assets/index-D1G6i0nS.css +1 -0
- package/dist/assets/index-DpItvKpf.js +419 -0
- package/dist/assets/ui-BvF022GT.js +53 -0
- package/dist/assets/vendor-Dzv9lrRc.js +59 -0
- package/dist/index.html +19 -0
- package/dist/scanner-sweep.png +0 -0
- package/dist/server/server/adapters/index.js +34 -0
- package/dist/server/server/adapters/iterm2-adapter.js +29 -0
- package/dist/server/server/adapters/subprocess-adapter.js +21 -0
- package/dist/server/server/adapters/terminal-adapter.js +1 -0
- package/dist/server/server/config.js +156 -0
- package/dist/server/server/database.js +90 -0
- package/dist/server/server/index.js +372 -0
- package/dist/server/server/init.js +811 -0
- package/dist/server/server/parsers/event-parser.js +64 -0
- package/dist/server/server/parsers/scope-parser.js +188 -0
- package/dist/server/server/routes/config-routes.js +163 -0
- package/dist/server/server/routes/data-routes.js +461 -0
- package/dist/server/server/routes/dispatch-routes.js +215 -0
- package/dist/server/server/routes/git-routes.js +92 -0
- package/dist/server/server/routes/scope-routes.js +215 -0
- package/dist/server/server/routes/sprint-routes.js +116 -0
- package/dist/server/server/routes/version-routes.js +130 -0
- package/dist/server/server/routes/workflow-routes.js +185 -0
- package/dist/server/server/schema.js +90 -0
- package/dist/server/server/services/batch-orchestrator.js +253 -0
- package/dist/server/server/services/claude-session-service.js +352 -0
- package/dist/server/server/services/config-service.js +132 -0
- package/dist/server/server/services/deploy-service.js +51 -0
- package/dist/server/server/services/event-service.js +63 -0
- package/dist/server/server/services/gate-service.js +83 -0
- package/dist/server/server/services/git-service.js +309 -0
- package/dist/server/server/services/github-service.js +145 -0
- package/dist/server/server/services/readiness-service.js +184 -0
- package/dist/server/server/services/scope-cache.js +72 -0
- package/dist/server/server/services/scope-service.js +424 -0
- package/dist/server/server/services/sprint-orchestrator.js +312 -0
- package/dist/server/server/services/sprint-service.js +293 -0
- package/dist/server/server/services/workflow-service.js +397 -0
- package/dist/server/server/utils/cc-hooks-parser.js +49 -0
- package/dist/server/server/utils/dispatch-utils.js +305 -0
- package/dist/server/server/utils/logger.js +86 -0
- package/dist/server/server/utils/terminal-launcher.js +388 -0
- package/dist/server/server/utils/worktree-manager.js +98 -0
- package/dist/server/server/watchers/event-watcher.js +81 -0
- package/dist/server/server/watchers/scope-watcher.js +33 -0
- package/dist/server/shared/api-types.js +5 -0
- package/dist/server/shared/default-workflow.json +616 -0
- package/dist/server/shared/workflow-config.js +44 -0
- package/dist/server/shared/workflow-engine.js +353 -0
- package/index.html +15 -0
- package/package.json +110 -0
- package/postcss.config.js +6 -0
- package/schemas/orbital.config.schema.json +83 -0
- package/scripts/postinstall.js +24 -0
- package/scripts/start.sh +20 -0
- package/server/adapters/index.ts +41 -0
- package/server/adapters/iterm2-adapter.ts +37 -0
- package/server/adapters/subprocess-adapter.ts +25 -0
- package/server/adapters/terminal-adapter.ts +24 -0
- package/server/config.ts +234 -0
- package/server/database.ts +107 -0
- package/server/index.ts +452 -0
- package/server/init.ts +891 -0
- package/server/parsers/event-parser.ts +74 -0
- package/server/parsers/scope-parser.ts +240 -0
- package/server/routes/config-routes.ts +182 -0
- package/server/routes/data-routes.ts +548 -0
- package/server/routes/dispatch-routes.ts +275 -0
- package/server/routes/git-routes.ts +112 -0
- package/server/routes/scope-routes.ts +262 -0
- package/server/routes/sprint-routes.ts +142 -0
- package/server/routes/version-routes.ts +156 -0
- package/server/routes/workflow-routes.ts +198 -0
- package/server/schema.ts +90 -0
- package/server/services/batch-orchestrator.ts +286 -0
- package/server/services/claude-session-service.ts +441 -0
- package/server/services/config-service.ts +151 -0
- package/server/services/deploy-service.ts +98 -0
- package/server/services/event-service.ts +98 -0
- package/server/services/gate-service.ts +126 -0
- package/server/services/git-service.ts +391 -0
- package/server/services/github-service.ts +183 -0
- package/server/services/readiness-service.ts +250 -0
- package/server/services/scope-cache.ts +81 -0
- package/server/services/scope-service.ts +476 -0
- package/server/services/sprint-orchestrator.ts +361 -0
- package/server/services/sprint-service.ts +415 -0
- package/server/services/workflow-service.ts +461 -0
- package/server/utils/cc-hooks-parser.ts +70 -0
- package/server/utils/dispatch-utils.ts +395 -0
- package/server/utils/logger.ts +109 -0
- package/server/utils/terminal-launcher.ts +462 -0
- package/server/utils/worktree-manager.ts +104 -0
- package/server/watchers/event-watcher.ts +100 -0
- package/server/watchers/scope-watcher.ts +38 -0
- package/shared/api-types.ts +20 -0
- package/shared/default-workflow.json +616 -0
- package/shared/workflow-config.ts +170 -0
- package/shared/workflow-engine.ts +427 -0
- package/src/App.tsx +33 -0
- package/src/components/AgentBadge.tsx +40 -0
- package/src/components/BatchPreflightModal.tsx +115 -0
- package/src/components/CardDisplayToggle.tsx +74 -0
- package/src/components/ColumnHeaderActions.tsx +55 -0
- package/src/components/ColumnMenu.tsx +99 -0
- package/src/components/DeployHistory.tsx +141 -0
- package/src/components/DispatchModal.tsx +164 -0
- package/src/components/DispatchPopover.tsx +139 -0
- package/src/components/DragOverlay.tsx +25 -0
- package/src/components/DriftSidebar.tsx +140 -0
- package/src/components/EnvironmentStrip.tsx +88 -0
- package/src/components/ErrorBoundary.tsx +62 -0
- package/src/components/FilterChip.tsx +105 -0
- package/src/components/GateIndicator.tsx +33 -0
- package/src/components/IdeaDetailModal.tsx +190 -0
- package/src/components/IdeaFormDialog.tsx +113 -0
- package/src/components/KanbanColumn.tsx +201 -0
- package/src/components/MarkdownRenderer.tsx +114 -0
- package/src/components/NeonGrid.tsx +128 -0
- package/src/components/PromotionQueue.tsx +89 -0
- package/src/components/ScopeCard.tsx +234 -0
- package/src/components/ScopeDetailModal.tsx +255 -0
- package/src/components/ScopeFilterBar.tsx +152 -0
- package/src/components/SearchInput.tsx +102 -0
- package/src/components/SessionPanel.tsx +335 -0
- package/src/components/SprintContainer.tsx +303 -0
- package/src/components/SprintDependencyDialog.tsx +78 -0
- package/src/components/SprintPreflightModal.tsx +138 -0
- package/src/components/StatusBar.tsx +168 -0
- package/src/components/SwimCell.tsx +67 -0
- package/src/components/SwimLaneRow.tsx +94 -0
- package/src/components/SwimlaneBoardView.tsx +108 -0
- package/src/components/VersionBadge.tsx +139 -0
- package/src/components/ViewModeSelector.tsx +114 -0
- package/src/components/config/AgentChip.tsx +53 -0
- package/src/components/config/AgentCreateDialog.tsx +321 -0
- package/src/components/config/AgentEditor.tsx +175 -0
- package/src/components/config/DirectoryTree.tsx +582 -0
- package/src/components/config/FileEditor.tsx +550 -0
- package/src/components/config/HookChip.tsx +50 -0
- package/src/components/config/StageCard.tsx +198 -0
- package/src/components/config/TransitionZone.tsx +173 -0
- package/src/components/config/UnifiedWorkflowPipeline.tsx +216 -0
- package/src/components/config/WorkflowPipeline.tsx +161 -0
- package/src/components/source-control/BranchList.tsx +93 -0
- package/src/components/source-control/BranchPanel.tsx +105 -0
- package/src/components/source-control/CommitLog.tsx +100 -0
- package/src/components/source-control/CommitRow.tsx +47 -0
- package/src/components/source-control/GitHubPanel.tsx +110 -0
- package/src/components/source-control/GitHubSetupGuide.tsx +52 -0
- package/src/components/source-control/GitOverviewBar.tsx +101 -0
- package/src/components/source-control/PullRequestList.tsx +69 -0
- package/src/components/source-control/WorktreeList.tsx +80 -0
- package/src/components/ui/badge.tsx +41 -0
- package/src/components/ui/button.tsx +55 -0
- package/src/components/ui/card.tsx +78 -0
- package/src/components/ui/dialog.tsx +94 -0
- package/src/components/ui/popover.tsx +33 -0
- package/src/components/ui/scroll-area.tsx +54 -0
- package/src/components/ui/separator.tsx +28 -0
- package/src/components/ui/tabs.tsx +52 -0
- package/src/components/ui/toggle-switch.tsx +35 -0
- package/src/components/ui/tooltip.tsx +27 -0
- package/src/components/workflow/AddEdgeDialog.tsx +217 -0
- package/src/components/workflow/AddListDialog.tsx +201 -0
- package/src/components/workflow/ChecklistEditor.tsx +239 -0
- package/src/components/workflow/CommandPrefixManager.tsx +118 -0
- package/src/components/workflow/ConfigSettingsPanel.tsx +189 -0
- package/src/components/workflow/DirectionSelector.tsx +133 -0
- package/src/components/workflow/DispatchConfigPanel.tsx +180 -0
- package/src/components/workflow/EdgeDetailPanel.tsx +236 -0
- package/src/components/workflow/EdgePropertyEditor.tsx +251 -0
- package/src/components/workflow/EditToolbar.tsx +138 -0
- package/src/components/workflow/HookDetailPanel.tsx +250 -0
- package/src/components/workflow/HookExecutionLog.tsx +24 -0
- package/src/components/workflow/HookSourceModal.tsx +129 -0
- package/src/components/workflow/HooksDashboard.tsx +363 -0
- package/src/components/workflow/ListPropertyEditor.tsx +251 -0
- package/src/components/workflow/MigrationPreviewDialog.tsx +237 -0
- package/src/components/workflow/MovementRulesPanel.tsx +188 -0
- package/src/components/workflow/NodeDetailPanel.tsx +245 -0
- package/src/components/workflow/PresetSelector.tsx +414 -0
- package/src/components/workflow/SkillCommandBuilder.tsx +174 -0
- package/src/components/workflow/WorkflowEdgeComponent.tsx +145 -0
- package/src/components/workflow/WorkflowNode.tsx +147 -0
- package/src/components/workflow/graphLayout.ts +186 -0
- package/src/components/workflow/mergeHooks.ts +85 -0
- package/src/components/workflow/useEditHistory.ts +88 -0
- package/src/components/workflow/useWorkflowEditor.ts +262 -0
- package/src/components/workflow/validateConfig.ts +70 -0
- package/src/hooks/useActiveDispatches.ts +198 -0
- package/src/hooks/useBoardSettings.ts +170 -0
- package/src/hooks/useCardDisplay.ts +57 -0
- package/src/hooks/useCcHooks.ts +24 -0
- package/src/hooks/useConfigTree.ts +51 -0
- package/src/hooks/useEnforcementRules.ts +46 -0
- package/src/hooks/useEvents.ts +59 -0
- package/src/hooks/useFileEditor.ts +165 -0
- package/src/hooks/useGates.ts +57 -0
- package/src/hooks/useIdeaActions.ts +53 -0
- package/src/hooks/useKanbanDnd.ts +410 -0
- package/src/hooks/useOrbitalConfig.ts +54 -0
- package/src/hooks/usePipeline.ts +47 -0
- package/src/hooks/usePipelineData.ts +338 -0
- package/src/hooks/useReconnect.ts +25 -0
- package/src/hooks/useScopeFilters.ts +125 -0
- package/src/hooks/useScopeSessions.ts +44 -0
- package/src/hooks/useScopes.ts +67 -0
- package/src/hooks/useSearch.ts +67 -0
- package/src/hooks/useSettings.tsx +187 -0
- package/src/hooks/useSocket.ts +25 -0
- package/src/hooks/useSourceControl.ts +105 -0
- package/src/hooks/useSprintPreflight.ts +55 -0
- package/src/hooks/useSprints.ts +154 -0
- package/src/hooks/useStatusBarHighlight.ts +18 -0
- package/src/hooks/useSwimlaneBoardSettings.ts +104 -0
- package/src/hooks/useTheme.ts +9 -0
- package/src/hooks/useTransitionReadiness.ts +53 -0
- package/src/hooks/useVersion.ts +155 -0
- package/src/hooks/useViolations.ts +65 -0
- package/src/hooks/useWorkflow.tsx +125 -0
- package/src/hooks/useZoomModifier.ts +19 -0
- package/src/index.css +797 -0
- package/src/layouts/DashboardLayout.tsx +113 -0
- package/src/lib/collisionDetection.ts +20 -0
- package/src/lib/scope-fields.ts +61 -0
- package/src/lib/swimlane.ts +146 -0
- package/src/lib/utils.ts +15 -0
- package/src/main.tsx +19 -0
- package/src/socket.ts +11 -0
- package/src/types/index.ts +497 -0
- package/src/views/AgentFeed.tsx +339 -0
- package/src/views/DeployPipeline.tsx +59 -0
- package/src/views/EnforcementView.tsx +378 -0
- package/src/views/PrimitivesConfig.tsx +500 -0
- package/src/views/QualityGates.tsx +1012 -0
- package/src/views/ScopeBoard.tsx +454 -0
- package/src/views/SessionTimeline.tsx +516 -0
- package/src/views/Settings.tsx +183 -0
- package/src/views/SourceControl.tsx +95 -0
- package/src/views/WorkflowVisualizer.tsx +382 -0
- package/tailwind.config.js +161 -0
- package/templates/agents/AUTO-INVOKE.md +180 -0
- package/templates/agents/CONFLICT-RESOLUTION.md +128 -0
- package/templates/agents/QUICK-REFERENCE.md +122 -0
- package/templates/agents/README.md +188 -0
- package/templates/agents/SKILL-TRIGGERS.md +100 -0
- package/templates/agents/blue-team/frontend-designer.md +424 -0
- package/templates/agents/green-team/architect.md +526 -0
- package/templates/agents/green-team/rules-enforcer.md +131 -0
- package/templates/agents/red-team/attacker-learned.md +24 -0
- package/templates/agents/red-team/attacker.md +486 -0
- package/templates/agents/red-team/chaos.md +548 -0
- package/templates/agents/reference/component-registry.md +82 -0
- package/templates/agents/workflows/full-mode.md +218 -0
- package/templates/agents/workflows/quick-mode.md +118 -0
- package/templates/agents/workflows/security-mode.md +283 -0
- package/templates/anti-patterns/dangerous-shortcuts.md +427 -0
- package/templates/config/agent-triggers.json +92 -0
- package/templates/hooks/agent-team-gate.sh +31 -0
- package/templates/hooks/agent-trigger.sh +97 -0
- package/templates/hooks/block-push.sh +66 -0
- package/templates/hooks/block-workarounds.sh +61 -0
- package/templates/hooks/blocker-check.sh +28 -0
- package/templates/hooks/completion-checklist.sh +28 -0
- package/templates/hooks/decision-capture.sh +15 -0
- package/templates/hooks/dependency-check.sh +27 -0
- package/templates/hooks/end-session.sh +31 -0
- package/templates/hooks/exploration-logger.sh +37 -0
- package/templates/hooks/files-changed-summary.sh +37 -0
- package/templates/hooks/get-session-id.sh +49 -0
- package/templates/hooks/git-commit-guard.sh +34 -0
- package/templates/hooks/init-session.sh +93 -0
- package/templates/hooks/orbital-emit.sh +79 -0
- package/templates/hooks/orbital-report-deploy.sh +78 -0
- package/templates/hooks/orbital-report-gates.sh +40 -0
- package/templates/hooks/orbital-report-violation.sh +36 -0
- package/templates/hooks/orbital-scope-update.sh +53 -0
- package/templates/hooks/phase-verify-reminder.sh +26 -0
- package/templates/hooks/review-gate-check.sh +82 -0
- package/templates/hooks/scope-commit-logger.sh +37 -0
- package/templates/hooks/scope-create-cleanup.sh +36 -0
- package/templates/hooks/scope-create-gate.sh +80 -0
- package/templates/hooks/scope-create-tracker.sh +17 -0
- package/templates/hooks/scope-file-sync.sh +53 -0
- package/templates/hooks/scope-gate.sh +35 -0
- package/templates/hooks/scope-helpers.sh +188 -0
- package/templates/hooks/scope-lifecycle-gate.sh +139 -0
- package/templates/hooks/scope-prepare.sh +244 -0
- package/templates/hooks/scope-transition.sh +172 -0
- package/templates/hooks/session-enforcer.sh +143 -0
- package/templates/hooks/time-tracker.sh +33 -0
- package/templates/lessons-learned.md +15 -0
- package/templates/orbital.config.json +35 -0
- package/templates/presets/development.json +42 -0
- package/templates/presets/gitflow.json +712 -0
- package/templates/presets/minimal.json +23 -0
- package/templates/quick/rules.md +218 -0
- package/templates/scopes/_template.md +255 -0
- package/templates/settings-hooks.json +98 -0
- package/templates/skills/git-commit/SKILL.md +85 -0
- package/templates/skills/git-dev/SKILL.md +99 -0
- package/templates/skills/git-hotfix/SKILL.md +223 -0
- package/templates/skills/git-main/SKILL.md +84 -0
- package/templates/skills/git-production/SKILL.md +165 -0
- package/templates/skills/git-staging/SKILL.md +112 -0
- package/templates/skills/scope-create/SKILL.md +81 -0
- package/templates/skills/scope-fix-review/SKILL.md +168 -0
- package/templates/skills/scope-implement/SKILL.md +110 -0
- package/templates/skills/scope-post-review/SKILL.md +144 -0
- package/templates/skills/scope-pre-review/SKILL.md +211 -0
- package/templates/skills/scope-verify/SKILL.md +201 -0
- package/templates/skills/session-init/SKILL.md +62 -0
- package/templates/skills/session-resume/SKILL.md +201 -0
- package/templates/skills/test-checks/SKILL.md +171 -0
- package/templates/skills/test-code-review/SKILL.md +252 -0
- package/tsconfig.json +25 -0
- package/vite.config.ts +38 -0
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: git-dev
|
|
3
|
+
description: Merges feature branch into dev with direct merge (no PR). Use when feature work is committed and ready to integrate into the dev branch.
|
|
4
|
+
user-invocable: true
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# /git-dev — Merge Feature Branch into Dev
|
|
8
|
+
|
|
9
|
+
Direct merge from feature branch into dev. The review gate already provides the quality gate, so no PR is needed for this step.
|
|
10
|
+
|
|
11
|
+
## Prerequisites
|
|
12
|
+
|
|
13
|
+
- On a feature branch (not main/staging/dev)
|
|
14
|
+
- All changes committed (clean working tree)
|
|
15
|
+
- Feature branch has scope work committed via `/git-commit`
|
|
16
|
+
|
|
17
|
+
## Workflow
|
|
18
|
+
|
|
19
|
+
### Step 0: Record Session ID
|
|
20
|
+
|
|
21
|
+
1. Run: `bash .claude/hooks/get-session-id.sh`
|
|
22
|
+
2. For each scope in `scopes/completed/`:
|
|
23
|
+
- Append session UUID to `sessions.prDev` in frontmatter
|
|
24
|
+
|
|
25
|
+
### Step 1: Verify Ready State
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
# Check you're on a feature branch
|
|
29
|
+
BRANCH=$(git branch --show-current)
|
|
30
|
+
|
|
31
|
+
# Block if on main/staging/dev
|
|
32
|
+
if [[ "$BRANCH" == "main" || "$BRANCH" == "staging" || "$BRANCH" == "dev" ]]; then
|
|
33
|
+
echo "Must be on a feature branch, not $BRANCH"
|
|
34
|
+
exit 1
|
|
35
|
+
fi
|
|
36
|
+
|
|
37
|
+
# Check for uncommitted changes
|
|
38
|
+
git status --porcelain
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### Step 2: Scope Transition (local only)
|
|
42
|
+
|
|
43
|
+
Find scopes in `scopes/completed/`:
|
|
44
|
+
1. For each scope file in `scopes/completed/*.md`:
|
|
45
|
+
- `mv scopes/completed/{file} scopes/dev/`
|
|
46
|
+
- Update frontmatter: `status: dev`
|
|
47
|
+
- Update DASHBOARD: `🔀 **Status**: Merged to Dev`
|
|
48
|
+
|
|
49
|
+
If BATCH_SCOPE_IDS is set, only transition those specific scopes.
|
|
50
|
+
|
|
51
|
+
### Step 3: Merge into Dev
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
# Save current branch name
|
|
55
|
+
FEATURE_BRANCH=$(git branch --show-current)
|
|
56
|
+
|
|
57
|
+
# Fetch latest dev
|
|
58
|
+
git fetch origin dev
|
|
59
|
+
|
|
60
|
+
# Checkout dev and merge
|
|
61
|
+
git checkout dev
|
|
62
|
+
git merge "$FEATURE_BRANCH"
|
|
63
|
+
git push origin dev
|
|
64
|
+
|
|
65
|
+
# Return to feature branch
|
|
66
|
+
git checkout "$FEATURE_BRANCH"
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
If merge conflicts occur, resolve them before continuing.
|
|
70
|
+
|
|
71
|
+
### Step 4: Signal Completion
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
bash .claude/hooks/orbital-emit.sh AGENT_COMPLETED '{"outcome":"success","action":"pr_dev"}' --scope "{NNN}"
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
## Output
|
|
78
|
+
|
|
79
|
+
```
|
|
80
|
+
╔═══════════════════════════════════════════════════════════════╗
|
|
81
|
+
║ Merged feature branch into dev ║
|
|
82
|
+
╠═══════════════════════════════════════════════════════════════╣
|
|
83
|
+
║ Branch: feat/my-feature → dev ║
|
|
84
|
+
║ Scopes transitioned: 093, 094 → dev ║
|
|
85
|
+
║ ║
|
|
86
|
+
║ Next: /git-staging to create a PR from dev to staging ║
|
|
87
|
+
╚═══════════════════════════════════════════════════════════════╝
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
## Batch Support
|
|
91
|
+
|
|
92
|
+
When dispatched by the batch orchestrator with `BATCH_SCOPE_IDS`:
|
|
93
|
+
- Only transition the specified scope IDs
|
|
94
|
+
- The batch orchestrator tracks completion via `onScopeStatusChanged`
|
|
95
|
+
|
|
96
|
+
## Related
|
|
97
|
+
|
|
98
|
+
- `/git-commit` — Commit work to feature branch (previous step)
|
|
99
|
+
- `/git-staging` — Create PR from dev to staging (next step)
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: git-hotfix
|
|
3
|
+
description: Applies emergency fixes by branching from main with expedited workflow. Use only for critical production issues, genuine emergencies, or urgent security fixes.
|
|
4
|
+
user-invocable: true
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# /git-hotfix
|
|
8
|
+
|
|
9
|
+
Emergency workflow for critical production fixes.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## When to Use Hotfix
|
|
14
|
+
|
|
15
|
+
**Only for production emergencies:**
|
|
16
|
+
|
|
17
|
+
- [ ] Users affected right now
|
|
18
|
+
- [ ] Money/funds at risk
|
|
19
|
+
- [ ] Security vulnerability active
|
|
20
|
+
- [ ] Core functionality broken
|
|
21
|
+
|
|
22
|
+
**NOT for:**
|
|
23
|
+
- Performance improvements
|
|
24
|
+
- Minor bugs
|
|
25
|
+
- Features that were missed
|
|
26
|
+
- "Nice to have" fixes
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## Hotfix Rules
|
|
31
|
+
|
|
32
|
+
1. **Branch from main** (not staging)
|
|
33
|
+
2. **Minimal fix only** - no refactoring, no "while I'm here"
|
|
34
|
+
3. **Direct PR to main** - bypasses staging for speed
|
|
35
|
+
4. **Backport to staging** - sync after production is fixed
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## Execution
|
|
40
|
+
|
|
41
|
+
### Step 0: Detect Branching Mode
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
BRANCHING_MODE=$(grep '^WORKFLOW_BRANCHING_MODE=' .claude/config/workflow-manifest.sh 2>/dev/null | cut -d'"' -f2)
|
|
45
|
+
[ -z "$BRANCHING_MODE" ] && BRANCHING_MODE="trunk"
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### Step 1: Create Hotfix Branch
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
# Start from main (production code)
|
|
52
|
+
git checkout main
|
|
53
|
+
git pull origin main
|
|
54
|
+
|
|
55
|
+
# Create hotfix branch
|
|
56
|
+
git checkout -b hotfix/brief-description
|
|
57
|
+
|
|
58
|
+
# Example: hotfix/api-auth-race-condition
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### Step 2: Implement Minimal Fix
|
|
62
|
+
|
|
63
|
+
**Rules:**
|
|
64
|
+
- Fix ONLY the broken thing
|
|
65
|
+
- No cleanup, no refactoring
|
|
66
|
+
- No "improvements" while you're there
|
|
67
|
+
- Keep the diff as small as possible
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
# Make your fix
|
|
71
|
+
# ...edit files...
|
|
72
|
+
|
|
73
|
+
# Verify quality gates — run configured commands from orbital.config.json
|
|
74
|
+
# Run commands.typeCheck, commands.lint, commands.test (skip any that are null)
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
### Step 3: Create PR to Main
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
# Push hotfix branch
|
|
81
|
+
git push -u origin hotfix/brief-description
|
|
82
|
+
|
|
83
|
+
# Create PR directly to main
|
|
84
|
+
gh pr create --base main \
|
|
85
|
+
--title "hotfix: brief description of fix" \
|
|
86
|
+
--body "## Emergency Hotfix
|
|
87
|
+
|
|
88
|
+
**Issue:** [Brief description of production issue]
|
|
89
|
+
|
|
90
|
+
**Root Cause:** [What caused it]
|
|
91
|
+
|
|
92
|
+
**Fix:** [What this PR does]
|
|
93
|
+
|
|
94
|
+
## Verification
|
|
95
|
+
|
|
96
|
+
- [ ] Fix verified locally
|
|
97
|
+
- [ ] Quality gates pass
|
|
98
|
+
- [ ] Minimal changes only
|
|
99
|
+
|
|
100
|
+
## Post-Merge
|
|
101
|
+
|
|
102
|
+
- [ ] Monitor production logs
|
|
103
|
+
- [ ] Backport to staging
|
|
104
|
+
- [ ] Document in lessons-learned.md"
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
### Step 4: Fast-Track Review and Merge
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
# Check CI
|
|
111
|
+
gh pr checks
|
|
112
|
+
|
|
113
|
+
# If CI passes and fix is verified, merge
|
|
114
|
+
# Use MERGE commit (not squash) for main
|
|
115
|
+
gh pr merge --merge
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
### Step 5: Verify Production
|
|
119
|
+
|
|
120
|
+
```bash
|
|
121
|
+
# Wait 3 min for deploy
|
|
122
|
+
|
|
123
|
+
# Health check (read healthChecks.production from orbital.config.json, skip if not configured)
|
|
124
|
+
# curl -s <healthChecks.production URL> | jq
|
|
125
|
+
|
|
126
|
+
# Watch logs using your deployment platform's CLI
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
### Step 6: Backport to Staging (Gitflow Only)
|
|
130
|
+
|
|
131
|
+
**Skip this step if `BRANCHING_MODE=trunk`** (no staging branch in trunk mode).
|
|
132
|
+
|
|
133
|
+
**Critical:** Staging must stay in sync with main.
|
|
134
|
+
|
|
135
|
+
```bash
|
|
136
|
+
# Get the merge commit SHA from main
|
|
137
|
+
git checkout main
|
|
138
|
+
git pull origin main
|
|
139
|
+
HOTFIX_SHA=$(git rev-parse HEAD)
|
|
140
|
+
|
|
141
|
+
# Switch to staging
|
|
142
|
+
git checkout staging
|
|
143
|
+
git pull origin staging
|
|
144
|
+
|
|
145
|
+
# Cherry-pick the hotfix
|
|
146
|
+
git cherry-pick $HOTFIX_SHA
|
|
147
|
+
|
|
148
|
+
# Push to staging
|
|
149
|
+
git push origin staging
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
If cherry-pick has conflicts:
|
|
153
|
+
```bash
|
|
154
|
+
# Resolve conflicts
|
|
155
|
+
git add .
|
|
156
|
+
git cherry-pick --continue
|
|
157
|
+
|
|
158
|
+
# Or if too messy, create a regular PR
|
|
159
|
+
git cherry-pick --abort
|
|
160
|
+
git checkout -b backport/hotfix-description
|
|
161
|
+
# ... apply fix manually ...
|
|
162
|
+
gh pr create --base staging
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
---
|
|
166
|
+
|
|
167
|
+
## Hotfix Checklist
|
|
168
|
+
|
|
169
|
+
```
|
|
170
|
+
Pre-Merge:
|
|
171
|
+
[ ] Hotfix branches from main (not staging)
|
|
172
|
+
[ ] Fix is minimal - no extras
|
|
173
|
+
[ ] Quality gates pass
|
|
174
|
+
[ ] CI checks pass
|
|
175
|
+
|
|
176
|
+
Post-Merge:
|
|
177
|
+
[ ] Production health verified
|
|
178
|
+
[ ] Issue confirmed resolved
|
|
179
|
+
[ ] Backported to staging
|
|
180
|
+
[ ] Documented in lessons-learned.md
|
|
181
|
+
[ ] Team notified
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
---
|
|
185
|
+
|
|
186
|
+
## Post-Mortem
|
|
187
|
+
|
|
188
|
+
After the emergency is handled:
|
|
189
|
+
|
|
190
|
+
1. **Document what happened** in `.claude/lessons-learned.md`
|
|
191
|
+
2. **Identify root cause** - why wasn't this caught on staging?
|
|
192
|
+
3. **Create follow-up ticket** - proper fix if hotfix was a band-aid
|
|
193
|
+
4. **Update monitoring** - add alerting for this scenario
|
|
194
|
+
|
|
195
|
+
Template for lessons-learned.md:
|
|
196
|
+
```markdown
|
|
197
|
+
## [Date] Hotfix: [Title]
|
|
198
|
+
|
|
199
|
+
**Issue:** What broke
|
|
200
|
+
**Impact:** Who was affected, for how long
|
|
201
|
+
**Root Cause:** Why it happened
|
|
202
|
+
**Fix:** What we did
|
|
203
|
+
**Prevention:** How to prevent similar issues
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
---
|
|
207
|
+
|
|
208
|
+
## Common Hotfix Scenarios
|
|
209
|
+
|
|
210
|
+
| Scenario | Approach |
|
|
211
|
+
|----------|----------|
|
|
212
|
+
| API returning 500s | Add error handling, return graceful error |
|
|
213
|
+
| Database query timeout | Add index, simplify query |
|
|
214
|
+
| Rate limit too aggressive | Increase limit temporarily |
|
|
215
|
+
| Environment variable wrong | Fix in deployment platform dashboard (no deploy needed) |
|
|
216
|
+
| Critical business logic bug | Minimal targeted fix, revert if necessary |
|
|
217
|
+
|
|
218
|
+
---
|
|
219
|
+
|
|
220
|
+
## Related
|
|
221
|
+
|
|
222
|
+
- `/git-production` — Production release PR
|
|
223
|
+
- `/git-staging` — Staging PR workflow
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: git-main
|
|
3
|
+
description: Push or PR scope work to the main branch. Mode-aware - detects trunk vs worktree branching from workflow manifest.
|
|
4
|
+
user-invocable: true
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# /git-main — Push/PR to Main
|
|
8
|
+
|
|
9
|
+
Push or create a PR to merge scope work into the main branch.
|
|
10
|
+
|
|
11
|
+
## Workflow
|
|
12
|
+
|
|
13
|
+
### Step 0: Detect Branching Mode
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
BRANCHING_MODE=$(grep '^WORKFLOW_BRANCHING_MODE=' .claude/config/workflow-manifest.sh 2>/dev/null | cut -d'"' -f2)
|
|
17
|
+
[ -z "$BRANCHING_MODE" ] && BRANCHING_MODE="trunk"
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
### Step 1: Record Session ID
|
|
21
|
+
|
|
22
|
+
1. Run: `bash .claude/hooks/get-session-id.sh` — capture the UUID output
|
|
23
|
+
2. For each scope in `scopes/completed/`:
|
|
24
|
+
- Append session UUID to `sessions.pushToMain` in frontmatter
|
|
25
|
+
|
|
26
|
+
### Step 2: Check Current Branch
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
CURRENT_BRANCH=$(git branch --show-current)
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
### Step 3: Execute (Mode-Dependent)
|
|
33
|
+
|
|
34
|
+
#### Trunk Mode (`BRANCHING_MODE=trunk`)
|
|
35
|
+
|
|
36
|
+
**If on `main`:**
|
|
37
|
+
```bash
|
|
38
|
+
git push origin main
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
**If on a feature branch:**
|
|
42
|
+
- Ask the user: "You're on branch `$CURRENT_BRANCH`. Create a PR to main, or merge directly?"
|
|
43
|
+
- **PR**: `gh pr create --base main --title "scope(NNN): title" --body "..."`
|
|
44
|
+
- **Direct merge**: `git checkout main && git merge $CURRENT_BRANCH && git push origin main`
|
|
45
|
+
|
|
46
|
+
#### Worktree Mode (`BRANCHING_MODE=worktree`)
|
|
47
|
+
|
|
48
|
+
Always on a feature branch in worktree mode:
|
|
49
|
+
```bash
|
|
50
|
+
gh pr create --base main \
|
|
51
|
+
--title "scope(NNN): title" \
|
|
52
|
+
--body "## Summary
|
|
53
|
+
Merges scope NNN work into main.
|
|
54
|
+
|
|
55
|
+
## Scopes
|
|
56
|
+
- NNN: title"
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### Step 4: Scope Transition
|
|
60
|
+
|
|
61
|
+
For each completed scope being pushed:
|
|
62
|
+
```bash
|
|
63
|
+
bash .claude/hooks/scope-transition.sh --from completed --to main --scope NNN
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### Step 5: Signal Completion
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
bash .claude/hooks/orbital-emit.sh AGENT_COMPLETED '{"outcome":"success","action":"pr_main"}' --scope "NNN"
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## Batch Support
|
|
73
|
+
|
|
74
|
+
When `BATCH_SCOPE_IDS` and `MERGE_MODE` env vars are set:
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
MERGE_MODE=${MERGE_MODE:-push} # push, pr, or direct
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
- **push**: `git push origin main`
|
|
81
|
+
- **pr**: `gh pr create --base main`
|
|
82
|
+
- **direct**: `git checkout main && git merge ... && git push origin main`
|
|
83
|
+
|
|
84
|
+
Transition all scopes in `BATCH_SCOPE_IDS` (comma-separated).
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: git-production
|
|
3
|
+
description: Creates release pull requests from staging to main for production deployment. Use when staging is validated, ready for production release, or creating release PRs.
|
|
4
|
+
user-invocable: true
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# /git-production
|
|
8
|
+
|
|
9
|
+
Workflow for creating a release PR from staging to main.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Prerequisites
|
|
14
|
+
|
|
15
|
+
**Critical:** This creates a production release. Verify:
|
|
16
|
+
|
|
17
|
+
- [ ] Changes have been on staging for at least 1 hour
|
|
18
|
+
- [ ] Staging has been manually verified
|
|
19
|
+
- [ ] No critical issues reported on staging
|
|
20
|
+
- [ ] Appropriate deployment window (avoid peak hours)
|
|
21
|
+
- [ ] Rollback plan identified
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## Execution
|
|
26
|
+
|
|
27
|
+
### Step 1: Verify Staging Health
|
|
28
|
+
|
|
29
|
+
> **Automated:** The `scope-lifecycle-gate.sh` hook records the session UUID
|
|
30
|
+
> and transitions staging scopes to production when BATCH_SCOPE_IDS is set.
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
# Check staging is healthy (read healthChecks.staging from orbital.config.json, skip if not configured)
|
|
34
|
+
# curl -s <healthChecks.staging URL> | jq
|
|
35
|
+
|
|
36
|
+
# See what will be released
|
|
37
|
+
git fetch origin
|
|
38
|
+
git log origin/main..origin/staging --oneline
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
**Review these commits carefully.** Understand what's being released.
|
|
42
|
+
|
|
43
|
+
### Step 2: Scope Status Transition
|
|
44
|
+
|
|
45
|
+
> **Automated:** The `scope-lifecycle-gate.sh` hook transitions staging scopes to production when BATCH_SCOPE_IDS is set.
|
|
46
|
+
|
|
47
|
+
### Step 3: Create Release PR
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
# Create the release PR
|
|
51
|
+
gh pr create \
|
|
52
|
+
--base main \
|
|
53
|
+
--head staging \
|
|
54
|
+
--title "release: $(date +%Y-%m-%d) deployment" \
|
|
55
|
+
--body "## Release Contents
|
|
56
|
+
|
|
57
|
+
$(git log origin/main..origin/staging --oneline)
|
|
58
|
+
|
|
59
|
+
## Pre-Release Checklist
|
|
60
|
+
|
|
61
|
+
- [ ] Staging stable for 1+ hours
|
|
62
|
+
- [ ] Manual verification completed
|
|
63
|
+
- [ ] No critical issues on staging
|
|
64
|
+
- [ ] Rollback plan identified
|
|
65
|
+
|
|
66
|
+
## Post-Release Verification
|
|
67
|
+
|
|
68
|
+
- [ ] Health check passes
|
|
69
|
+
- [ ] Version endpoint shows correct commit
|
|
70
|
+
- [ ] No error spikes in logs
|
|
71
|
+
- [ ] Key functionality verified
|
|
72
|
+
|
|
73
|
+
## Rollback
|
|
74
|
+
|
|
75
|
+
If issues occur, follow your project's rollback procedure."
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
### Step 4: Review and Approve
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
# View the PR
|
|
82
|
+
gh pr view --web
|
|
83
|
+
|
|
84
|
+
# Check CI status
|
|
85
|
+
gh pr checks
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
**MANUAL STEP:** Get team review/approval if required.
|
|
89
|
+
|
|
90
|
+
### Step 5: Merge (Triggers Deploy)
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
# Use MERGE commit for production releases (preserves history)
|
|
94
|
+
gh pr merge --merge
|
|
95
|
+
|
|
96
|
+
# Your CI/CD pipeline auto-deploys main to production (if configured)
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
### Step 6: Signal Completion
|
|
100
|
+
|
|
101
|
+
After the merge succeeds, emit the agent completion event if working on a dispatched scope:
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
bash .claude/hooks/orbital-emit.sh AGENT_COMPLETED '{"outcome":"success","action":"pr_production"}' --scope "{NNN}"
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
### Step 7: Verify Production
|
|
108
|
+
|
|
109
|
+
Wait for deployment to complete (timing depends on your CI/CD pipeline), then:
|
|
110
|
+
|
|
111
|
+
```bash
|
|
112
|
+
# Health check (read healthChecks.production from orbital.config.json, skip if not configured)
|
|
113
|
+
# curl -s <healthChecks.production URL> | jq
|
|
114
|
+
|
|
115
|
+
# Version check (read healthChecks.version from orbital.config.json, skip if not configured)
|
|
116
|
+
# curl -s <healthChecks.version URL> | jq
|
|
117
|
+
|
|
118
|
+
# Watch logs using your deployment platform's CLI
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
---
|
|
122
|
+
|
|
123
|
+
## Production Release Checklist
|
|
124
|
+
|
|
125
|
+
After merge:
|
|
126
|
+
|
|
127
|
+
- [ ] Health check returns 200 (if configured)
|
|
128
|
+
- [ ] Version matches expected commit (if configured)
|
|
129
|
+
- [ ] No new errors in logs (watch 5 min)
|
|
130
|
+
- [ ] Database migrations completed (if any)
|
|
131
|
+
- [ ] Key functionality verified
|
|
132
|
+
- [ ] Team notified of successful deployment
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
## If Something Goes Wrong
|
|
137
|
+
|
|
138
|
+
Follow your project's rollback procedure. Common approaches:
|
|
139
|
+
```bash
|
|
140
|
+
# Via your deployment platform's dashboard (fastest)
|
|
141
|
+
# Go to Deployments → Previous deployment → Redeploy
|
|
142
|
+
|
|
143
|
+
# Or via git revert
|
|
144
|
+
git revert HEAD
|
|
145
|
+
git push origin main
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
---
|
|
149
|
+
|
|
150
|
+
## Important Differences: Staging vs Production
|
|
151
|
+
|
|
152
|
+
| Aspect | Staging PR | Production PR |
|
|
153
|
+
|--------|-----------|---------------|
|
|
154
|
+
| Merge strategy | Squash | Merge (preserves history) |
|
|
155
|
+
| Source | Feature branch | staging branch |
|
|
156
|
+
| Target | staging | main |
|
|
157
|
+
| Review required | Optional | Recommended |
|
|
158
|
+
| Wait after deploy | 3 min | 5+ min monitoring |
|
|
159
|
+
|
|
160
|
+
---
|
|
161
|
+
|
|
162
|
+
## Related
|
|
163
|
+
|
|
164
|
+
- `/git-staging` — Create PR from dev to staging (previous step)
|
|
165
|
+
- `/git-hotfix` — Emergency fix workflow
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: git-staging
|
|
3
|
+
description: Creates GitHub PR from dev to staging for release visibility and CI gate. Use when dev branch work is ready for staging review.
|
|
4
|
+
user-invocable: true
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# /git-staging — GitHub PR from Dev to Staging
|
|
8
|
+
|
|
9
|
+
Creates a GitHub PR from dev to staging. Staging is a release candidate — the PR provides an audit trail, CI gate, and selective promotion visibility.
|
|
10
|
+
|
|
11
|
+
## Prerequisites
|
|
12
|
+
|
|
13
|
+
- Changes merged into dev (via `/git-dev`)
|
|
14
|
+
- Dev branch is up to date with remote
|
|
15
|
+
- No merge conflicts with staging
|
|
16
|
+
|
|
17
|
+
## Workflow
|
|
18
|
+
|
|
19
|
+
### Step 1: Scope Transition (local only)
|
|
20
|
+
|
|
21
|
+
Find scopes in `scopes/dev/`:
|
|
22
|
+
1. For each scope file in `scopes/dev/*.md`:
|
|
23
|
+
- `mv scopes/dev/{file} scopes/staging/`
|
|
24
|
+
- Update frontmatter: `status: staging`
|
|
25
|
+
- Update DASHBOARD: `🚀 **Status**: Staging PR Created`
|
|
26
|
+
|
|
27
|
+
If BATCH_SCOPE_IDS is set, only transition those specific scopes.
|
|
28
|
+
|
|
29
|
+
### Step 2: Ensure Remote is Up to Date
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
git push origin dev
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### Step 3: Create GitHub PR
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
gh pr create --base staging --head dev \
|
|
39
|
+
--title "release: <summary of scopes>" \
|
|
40
|
+
--body "## Summary
|
|
41
|
+
|
|
42
|
+
- Scope NNN: <title>
|
|
43
|
+
- Scope NNN: <title>
|
|
44
|
+
|
|
45
|
+
## Changes
|
|
46
|
+
|
|
47
|
+
<bullet list of key changes>
|
|
48
|
+
|
|
49
|
+
## Testing
|
|
50
|
+
|
|
51
|
+
- [ ] Quality gates pass on dev
|
|
52
|
+
- [ ] No regressions in staging tests
|
|
53
|
+
- [ ] Deployment verified healthy
|
|
54
|
+
|
|
55
|
+
## Checklist
|
|
56
|
+
|
|
57
|
+
- [ ] No console.log statements
|
|
58
|
+
- [ ] No any types added
|
|
59
|
+
- [ ] Files under 400 lines"
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### Step 4: Signal Completion
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
bash .claude/hooks/orbital-emit.sh AGENT_COMPLETED '{"outcome":"success","action":"pr_staging"}' --scope "{NNN}"
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### Step 5: Monitor CI
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
gh pr checks
|
|
72
|
+
gh pr view --web
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## Output
|
|
76
|
+
|
|
77
|
+
```
|
|
78
|
+
╔═══════════════════════════════════════════════════════════════╗
|
|
79
|
+
║ PR created: dev → staging ║
|
|
80
|
+
╠═══════════════════════════════════════════════════════════════╣
|
|
81
|
+
║ PR: #NNN — release: <summary> ║
|
|
82
|
+
║ Scopes transitioned: 093, 094 → staging ║
|
|
83
|
+
║ ║
|
|
84
|
+
║ Next: Review PR, merge, then /git-production ║
|
|
85
|
+
╚═══════════════════════════════════════════════════════════════╝
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
## If PR Checks Fail
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
# See what failed
|
|
92
|
+
gh pr checks
|
|
93
|
+
|
|
94
|
+
# Fix locally on dev, push
|
|
95
|
+
git checkout dev
|
|
96
|
+
# ... make fixes ...
|
|
97
|
+
git add <files>
|
|
98
|
+
git commit -m "fix: address CI feedback"
|
|
99
|
+
git push origin dev
|
|
100
|
+
# PR updates automatically
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
## Batch Support
|
|
104
|
+
|
|
105
|
+
When dispatched by the batch orchestrator with `BATCH_SCOPE_IDS`:
|
|
106
|
+
- Only transition the specified scope IDs
|
|
107
|
+
- The batch orchestrator tracks completion via `onScopeStatusChanged`
|
|
108
|
+
|
|
109
|
+
## Related
|
|
110
|
+
|
|
111
|
+
- `/git-dev` — Merge feature→dev (previous step)
|
|
112
|
+
- `/git-production` — Release PR staging→main (next step)
|