@devcxl/opencode-cabbage 1.3.0 → 2.0.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.
Files changed (89) hide show
  1. package/.codex-plugin/plugin.json +1 -1
  2. package/README.md +35 -23
  3. package/README.zh.md +22 -15
  4. package/assets/agents/dev-lifecycle.md +6 -0
  5. package/assets/prompts/bootstrap.md +4 -0
  6. package/assets/skills/flow-change/SKILL.md +109 -0
  7. package/assets/skills/flow-design/SKILL.md +15 -0
  8. package/assets/skills/flow-docs/SKILL.md +112 -0
  9. package/assets/skills/flow-incident/SKILL.md +98 -0
  10. package/assets/skills/flow-research/SKILL.md +9 -0
  11. package/assets/skills/flow-setup/SKILL.md +13 -0
  12. package/codex-skills/agent-dev-lifecycle/SKILL.md +2 -0
  13. package/codex-skills/flow-change/SKILL.md +109 -0
  14. package/codex-skills/flow-design/SKILL.md +18 -3
  15. package/codex-skills/flow-docs/SKILL.md +112 -0
  16. package/codex-skills/flow-incident/SKILL.md +98 -0
  17. package/codex-skills/flow-research/SKILL.md +12 -3
  18. package/codex-skills/flow-setup/SKILL.md +13 -0
  19. package/dist/index.d.ts +2 -5
  20. package/dist/index.js +1 -4
  21. package/dist/index.js.map +1 -1
  22. package/dist/plugin/agents.d.ts +20 -0
  23. package/dist/plugin/agents.js +79 -0
  24. package/dist/plugin/agents.js.map +1 -1
  25. package/dist/plugin/cabbage-cli.d.ts +28 -0
  26. package/dist/plugin/cabbage-cli.js +92 -0
  27. package/dist/plugin/cabbage-cli.js.map +1 -0
  28. package/dist/plugin/cabbage-tool.d.ts +103 -0
  29. package/dist/plugin/cabbage-tool.js +169 -0
  30. package/dist/plugin/cabbage-tool.js.map +1 -0
  31. package/dist/plugin/commands.d.ts +10 -0
  32. package/dist/plugin/commands.js +1 -1
  33. package/dist/plugin/commands.js.map +1 -1
  34. package/dist/plugin/continuation.d.ts +22 -0
  35. package/dist/plugin/continuation.js +233 -0
  36. package/dist/plugin/continuation.js.map +1 -0
  37. package/dist/plugin/goal-store.d.ts +42 -49
  38. package/dist/plugin/goal-store.js +35 -32
  39. package/dist/plugin/goal-store.js.map +1 -1
  40. package/dist/plugin/goal.d.ts +92 -28
  41. package/dist/plugin/goal.js +201 -158
  42. package/dist/plugin/goal.js.map +1 -1
  43. package/dist/plugin/install-dir.d.ts +13 -0
  44. package/dist/plugin/install-dir.js +46 -0
  45. package/dist/plugin/install-dir.js.map +1 -0
  46. package/dist/plugin/server.d.ts +4 -13
  47. package/dist/plugin/server.js +278 -423
  48. package/dist/plugin/server.js.map +1 -1
  49. package/dist/plugin/session-abort.d.ts +5 -0
  50. package/dist/plugin/session-abort.js +26 -0
  51. package/dist/plugin/session-abort.js.map +1 -0
  52. package/dist/plugin/skills.d.ts +15 -0
  53. package/dist/plugin/skills.js +47 -50
  54. package/dist/plugin/skills.js.map +1 -1
  55. package/dist/plugin.d.ts +2 -2
  56. package/dist/plugin.js +6 -2
  57. package/dist/plugin.js.map +1 -1
  58. package/dist/util/paths.d.ts +0 -6
  59. package/dist/util/paths.js +0 -15
  60. package/dist/util/paths.js.map +1 -1
  61. package/package.json +4 -7
  62. package/vendor/cabbage/MANIFEST.json +8 -0
  63. package/vendor/cabbage/cabbage_cli/__init__.py +1 -0
  64. package/vendor/cabbage/cabbage_cli/__main__.py +2 -0
  65. package/vendor/cabbage/cabbage_cli/assets/docs-site/.vitepress/config.ts +78 -0
  66. package/vendor/cabbage/cabbage_cli/assets/docs-site/README.md +31 -0
  67. package/vendor/cabbage/cabbage_cli/assets/docs-site/package.json +16 -0
  68. package/vendor/cabbage/cabbage_cli/assets/docs-site/pnpm-lock.yaml +2504 -0
  69. package/vendor/cabbage/cabbage_cli/assets/integrations/cabbage.yml +127 -0
  70. package/vendor/cabbage/cabbage_cli/assets/templates/adr.md +47 -0
  71. package/vendor/cabbage/cabbage_cli/assets/templates/api-design.md +45 -0
  72. package/vendor/cabbage/cabbage_cli/assets/templates/change-record.md +21 -0
  73. package/vendor/cabbage/cabbage_cli/assets/templates/database-design.md +37 -0
  74. package/vendor/cabbage/cabbage_cli/assets/templates/generic.md +20 -0
  75. package/vendor/cabbage/cabbage_cli/assets/templates/impact.md +41 -0
  76. package/vendor/cabbage/cabbage_cli/assets/templates/incident.md +48 -0
  77. package/vendor/cabbage/cabbage_cli/assets/templates/postmortem.md +43 -0
  78. package/vendor/cabbage/cabbage_cli/assets/templates/prd.md +71 -0
  79. package/vendor/cabbage/cabbage_cli/assets/templates/release-plan.md +45 -0
  80. package/vendor/cabbage/cabbage_cli/assets/templates/rfc.md +44 -0
  81. package/vendor/cabbage/cabbage_cli/assets/templates/security-review.md +35 -0
  82. package/vendor/cabbage/cabbage_cli/assets/templates/tasks.md +62 -0
  83. package/vendor/cabbage/cabbage_cli/assets/templates/tech-spec.md +87 -0
  84. package/vendor/cabbage/cabbage_cli/assets/templates/test-plan.md +44 -0
  85. package/vendor/cabbage/cabbage_cli/assets/workflows/change.yaml +11 -0
  86. package/vendor/cabbage/cabbage_cli/assets/workflows/incident.yaml +4 -0
  87. package/vendor/cabbage/cabbage_cli/cli.py +283 -0
  88. package/vendor/cabbage/cabbage_cli/core.py +606 -0
  89. package/vendor/cabbage/cabbage_cli/scaffold.py +313 -0
@@ -0,0 +1,127 @@
1
+ # Generated template for cabbage projects. If this project does not publish a
2
+ # documentation site, delete the `deploy-pages` job (and the documentation steps
3
+ # of `validate-and-test`); CI stays green because those steps are conditional.
4
+ # The test step below runs Python's unittest when tests/ exists; adapt it to your
5
+ # project's test runner so a missing test run is surfaced instead of silent.
6
+ name: CI & Docs Deployment
7
+
8
+ on:
9
+ push:
10
+ branches:
11
+ - master
12
+ - main
13
+ pull_request:
14
+ branches:
15
+ - master
16
+ - main
17
+
18
+ permissions:
19
+ contents: read
20
+
21
+ concurrency:
22
+ group: ${{ github.workflow }}-${{ github.ref }}
23
+ cancel-in-progress: false
24
+
25
+ jobs:
26
+ validate-and-test:
27
+ name: Test & Validate
28
+ runs-on: ubuntu-latest
29
+ steps:
30
+ - name: Checkout repository
31
+ uses: actions/checkout@v4
32
+ with:
33
+ fetch-depth: 0
34
+
35
+ - name: Set up Python
36
+ uses: actions/setup-python@v5
37
+ with:
38
+ python-version: '3.12'
39
+
40
+ - name: Install Python dependencies
41
+ run: |
42
+ python -m pip install --upgrade pip
43
+ if [ -f requirements.txt ]; then
44
+ python -m pip install -r requirements.txt
45
+ else
46
+ echo "No requirements.txt; skipping project dependencies."
47
+ fi
48
+ python -m pip install PyYAML
49
+
50
+ - name: Run Test Suite
51
+ run: |
52
+ if [ -d tests ]; then
53
+ python -m unittest discover tests
54
+ else
55
+ echo "::warning title=Test suite skipped::no tests/ directory found; adapt the Run Test Suite step to this project's test runner so the test stage actually runs."
56
+ fi
57
+
58
+ - name: Validate Cabbage Changes
59
+ run: |
60
+ if [ -d ".cabbage/tooling" ]; then
61
+ export PYTHONPATH=".cabbage/tooling${PYTHONPATH:+:$PYTHONPATH}"
62
+ python -m cabbage_cli validate --all
63
+ elif command -v cabbage >/dev/null 2>&1; then
64
+ cabbage validate --all
65
+ else
66
+ echo "Error: cabbage CLI not found. Expected a vendored .cabbage/tooling or an installed 'cabbage' command." >&2
67
+ exit 1
68
+ fi
69
+
70
+ - name: Validate PR Workflow & Doc Binding
71
+ if: github.event_name == 'pull_request'
72
+ run: |
73
+ if [ -d ".cabbage/tooling" ]; then
74
+ export PYTHONPATH=".cabbage/tooling${PYTHONPATH:+:$PYTHONPATH}"
75
+ python -m cabbage_cli ci --base origin/${{ github.base_ref }}
76
+ elif command -v cabbage >/dev/null 2>&1; then
77
+ cabbage ci --base origin/${{ github.base_ref }}
78
+ else
79
+ echo "Error: cabbage CLI not found. Expected a vendored .cabbage/tooling or an installed 'cabbage' command." >&2
80
+ exit 1
81
+ fi
82
+
83
+ - name: Set up pnpm
84
+ if: ${{ hashFiles('docs/package.json') != '' }}
85
+ uses: pnpm/action-setup@v4
86
+ with:
87
+ version: 10
88
+
89
+ - name: Set up Node.js
90
+ if: ${{ hashFiles('docs/package.json') != '' }}
91
+ uses: actions/setup-node@v4
92
+ with:
93
+ node-version: 22
94
+ cache: 'pnpm'
95
+ cache-dependency-path: 'docs/pnpm-lock.yaml'
96
+
97
+ - name: Install documentation dependencies
98
+ if: ${{ hashFiles('docs/package.json') != '' }}
99
+ working-directory: docs
100
+ run: pnpm install --frozen-lockfile
101
+
102
+ - name: Build documentation site
103
+ if: ${{ hashFiles('docs/package.json') != '' }}
104
+ working-directory: docs
105
+ run: pnpm run build
106
+
107
+ - name: Upload Pages artifact
108
+ if: ${{ hashFiles('docs/package.json') != '' && github.event_name == 'push' && (github.ref == 'refs/heads/master' || github.ref == 'refs/heads/main') }}
109
+ uses: actions/upload-pages-artifact@v3
110
+ with:
111
+ path: docs/.vitepress/dist
112
+
113
+ deploy-pages:
114
+ name: Deploy to GitHub Pages
115
+ if: github.event_name == 'push' && (github.ref == 'refs/heads/master' || github.ref == 'refs/heads/main')
116
+ needs: validate-and-test
117
+ runs-on: ubuntu-latest
118
+ permissions:
119
+ pages: write
120
+ id-token: write
121
+ environment:
122
+ name: github-pages
123
+ url: ${{ steps.deployment.outputs.page_url }}
124
+ steps:
125
+ - name: Deploy to GitHub Pages
126
+ id: deployment
127
+ uses: actions/deploy-pages@v4
@@ -0,0 +1,47 @@
1
+ ---
2
+ change: {{CHANGE_ID}}
3
+ cabbage_stage: {{STAGE_ID}}
4
+ change_type: {{CHANGE_TYPE}}
5
+ ---
6
+
7
+ <!-- Replace every marked prompt before verifying this stage. -->
8
+
9
+ # Status
10
+
11
+ <!-- CABBAGE: Set Proposed, Accepted, Superseded, or Deprecated, with the decision date and owners. -->
12
+
13
+ # Context
14
+
15
+ <!-- CABBAGE: Describe the forces, constraints, and architectural problem that require a decision. -->
16
+
17
+ # Decision Drivers
18
+
19
+ - <!-- CABBAGE: List a criterion used to compare options. -->
20
+
21
+ # Considered Options
22
+
23
+ | Option | Benefits | Drawbacks | Outcome |
24
+ |---|---|---|---|
25
+ | <!-- CABBAGE: Name an option, including the status quo. --> | <!-- CABBAGE: List the benefits. --> | <!-- CABBAGE: List costs and risks. --> | <!-- CABBAGE: State why it was selected or rejected. --> |
26
+
27
+ # Decision
28
+
29
+ <!-- CABBAGE: State the chosen option and the boundaries of the decision. -->
30
+
31
+ # Consequences
32
+
33
+ ## Positive
34
+
35
+ - <!-- CABBAGE: Record an expected benefit. -->
36
+
37
+ ## Negative
38
+
39
+ - <!-- CABBAGE: Record a cost, constraint, or accepted trade-off. -->
40
+
41
+ ## Risks
42
+
43
+ - <!-- CABBAGE: Record a residual risk and mitigation. -->
44
+
45
+ # Validation
46
+
47
+ <!-- CABBAGE: Define how and when the decision will be reviewed or measured. -->
@@ -0,0 +1,45 @@
1
+ ---
2
+ change: {{CHANGE_ID}}
3
+ cabbage_stage: {{STAGE_ID}}
4
+ change_type: {{CHANGE_TYPE}}
5
+ ---
6
+
7
+ <!-- Replace every marked prompt before verifying this stage. Use N/A with a reason when a section does not apply. -->
8
+
9
+ # Overview
10
+
11
+ <!-- CABBAGE: Identify the API purpose, protocol, owners, and consumers. -->
12
+
13
+ # Contract
14
+
15
+ ## Operations
16
+
17
+ | Method or event | Path or topic | Purpose | Authentication | Idempotency |
18
+ |---|---|---|---|---|
19
+ | <!-- CABBAGE: Name the method or event. --> | <!-- CABBAGE: Provide the path or topic. --> | <!-- CABBAGE: Describe the operation. --> | <!-- CABBAGE: State the required identity and permission. --> | <!-- CABBAGE: Describe retry and deduplication behavior. --> |
20
+
21
+ ## Inputs and Outputs
22
+
23
+ | Name | Location | Type | Required | Validation or semantics |
24
+ |---|---|---|---|---|
25
+ | <!-- CABBAGE: Name a field. --> | <!-- CABBAGE: Path, query, header, or body. --> | <!-- CABBAGE: State the type. --> | <!-- CABBAGE: Yes or No. --> | <!-- CABBAGE: State constraints and meaning. --> |
26
+
27
+ <!-- CABBAGE: Provide representative request, response, or event examples without secrets. -->
28
+
29
+ # Error Model
30
+
31
+ | Code or condition | Meaning | Client action | Retryable |
32
+ |---|---|---|---|
33
+ | <!-- CABBAGE: Name an error. --> | <!-- CABBAGE: Explain the failure. --> | <!-- CABBAGE: Describe recovery. --> | <!-- CABBAGE: Yes or No, with policy. --> |
34
+
35
+ # Compatibility
36
+
37
+ <!-- CABBAGE: Describe versioning, backward compatibility, deprecation, and consumer migration. -->
38
+
39
+ # Security
40
+
41
+ <!-- CABBAGE: Describe authorization, input validation, sensitive fields, rate limits, and abuse controls. -->
42
+
43
+ # Observability
44
+
45
+ <!-- CABBAGE: Define logs, metrics, traces, audit events, SLOs, and alerts for the contract. -->
@@ -0,0 +1,21 @@
1
+ ---
2
+ change: {{CHANGE_ID}}
3
+ cabbage_stage: {{STAGE_ID}}
4
+ change_type: {{CHANGE_TYPE}}
5
+ ---
6
+
7
+ # Goal
8
+
9
+ <!-- CABBAGE: Describe the goal or reproduced problem, scope, and observable acceptance criteria. -->
10
+
11
+ # Design
12
+
13
+ <!-- CABBAGE: Describe the minimal change and risks. Before implementation, declare architecture/API/database/security/design/RFC/high-risk deployment impacts with cabbage impact. -->
14
+
15
+ # Tasks
16
+
17
+ - [ ] <!-- CABBAGE: Implement the change and cover the affected behavior with tests. -->
18
+
19
+ # Verification
20
+
21
+ <!-- CABBAGE: Record exact commands and actual results. For a bugfix include the failing reproduction and passing regression. -->
@@ -0,0 +1,37 @@
1
+ ---
2
+ change: {{CHANGE_ID}}
3
+ cabbage_stage: {{STAGE_ID}}
4
+ change_type: {{CHANGE_TYPE}}
5
+ ---
6
+
7
+ <!-- Replace every marked prompt before verifying this stage. Use N/A with a reason when a section does not apply. -->
8
+
9
+ # Summary
10
+
11
+ <!-- CABBAGE: Describe the data change, affected stores, ownership, and expected scale. -->
12
+
13
+ # Schema
14
+
15
+ | Object and field | Type | Nullable | Default | Constraint or index | Rationale |
16
+ |---|---|---|---|---|---|
17
+ | <!-- CABBAGE: Name the table, collection, and field. --> | <!-- CABBAGE: State the type. --> | <!-- CABBAGE: Yes or No. --> | <!-- CABBAGE: State the default. --> | <!-- CABBAGE: Describe keys, checks, or indexes. --> | <!-- CABBAGE: Explain the design choice. --> |
18
+
19
+ <!-- CABBAGE: Record invariants, relationships, retention, and ownership rules. -->
20
+
21
+ # Migration
22
+
23
+ | Phase | Operation | Batching or lock risk | Verification | Owner |
24
+ |---|---|---|---|---|
25
+ | <!-- CABBAGE: Name expand, backfill, switch, or contract phase. --> | <!-- CABBAGE: Describe the operation. --> | <!-- CABBAGE: Describe load, duration, and concurrency risk. --> | <!-- CABBAGE: Define pass criteria. --> | <!-- CABBAGE: Name the owner. --> |
26
+
27
+ # Data Verification
28
+
29
+ <!-- CABBAGE: Define row counts, checksums, invariants, reconciliation, and post-migration sampling. -->
30
+
31
+ # Compatibility and Operations
32
+
33
+ <!-- CABBAGE: Describe mixed-version behavior, query performance, capacity, replication, backups, and observability. -->
34
+
35
+ # Rollback
36
+
37
+ <!-- CABBAGE: Define rollback triggers, ordering, recovery commands, and irreversible data impact. -->
@@ -0,0 +1,20 @@
1
+ ---
2
+ change: {{CHANGE_ID}}
3
+ cabbage_stage: {{STAGE_ID}}
4
+ change_type: {{CHANGE_TYPE}}
5
+ ---
6
+
7
+ <!-- Replace every marked prompt before verifying this stage. -->
8
+
9
+ # Summary
10
+
11
+ <!-- CABBAGE: State the artifact's purpose, audience, and expected outcome. -->
12
+
13
+ # Content
14
+
15
+ <!-- CABBAGE: Provide the information required by this workflow stage. -->
16
+
17
+ # Decisions and Follow-up
18
+
19
+ - Decision: <!-- CABBAGE: Record a decision or state N/A. -->
20
+ - Follow-up: <!-- CABBAGE: Record an owner and due date or state N/A. -->
@@ -0,0 +1,41 @@
1
+ ---
2
+ change: {{CHANGE_ID}}
3
+ cabbage_stage: {{STAGE_ID}}
4
+ change_type: {{CHANGE_TYPE}}
5
+ ---
6
+
7
+ <!-- Replace every marked prompt before verifying this stage. Keep the matrix aligned with change.yaml. -->
8
+
9
+ # Change Summary
10
+
11
+ <!-- CABBAGE: Summarize what changes and which users, systems, or teams are affected. -->
12
+
13
+ # Impact Matrix
14
+
15
+ | Area | Impact | Notes |
16
+ |---|---|---|
17
+ | Product | No | |
18
+ | Design | No | |
19
+ | Architecture | No | |
20
+ | RFC | No | |
21
+ | API | No | |
22
+ | Database | No | |
23
+ | Security | No | |
24
+ | Testing | Yes | |
25
+ | Deployment | No | |
26
+ | Operations | No | |
27
+ | Performance | No | |
28
+
29
+ # Impact Details
30
+
31
+ <!-- CABBAGE: For each area marked Yes, describe affected components, consumers, data, and operational processes. -->
32
+
33
+ # Risks
34
+
35
+ | Risk | Likelihood | Impact | Mitigation | Owner |
36
+ |---|---|---|---|---|
37
+ | <!-- CABBAGE: Describe a material risk. --> | <!-- CABBAGE: Low, Medium, or High. --> | <!-- CABBAGE: Describe the consequence. --> | <!-- CABBAGE: Describe prevention or recovery. --> | <!-- CABBAGE: Name the accountable owner. --> |
38
+
39
+ # Documentation Updates
40
+
41
+ - <!-- CABBAGE: List current-state documents, runbooks, API references, or release notes to update. -->
@@ -0,0 +1,48 @@
1
+ ---
2
+ change: {{CHANGE_ID}}
3
+ cabbage_stage: {{STAGE_ID}}
4
+ change_type: {{CHANGE_TYPE}}
5
+ ---
6
+
7
+ <!-- Replace every marked prompt before verifying this stage. Use UTC or include the timezone for every timestamp. -->
8
+
9
+ # Incident Metadata
10
+
11
+ | Field | Value |
12
+ |---|---|
13
+ | Severity | <!-- CABBAGE: State the severity level. --> |
14
+ | Status | <!-- CABBAGE: Investigating, Mitigated, Resolved, or Monitoring. --> |
15
+ | Started / Detected / Resolved | <!-- CABBAGE: Record timestamps and timezone. --> |
16
+ | Incident commander | <!-- CABBAGE: Name the accountable responder. --> |
17
+
18
+ # Impact
19
+
20
+ <!-- CABBAGE: Quantify affected users, duration, regions, features, data, revenue, and SLO or SLA impact. -->
21
+
22
+ # Detection
23
+
24
+ <!-- CABBAGE: Describe the first signal, detection delay, and why existing alerts did or did not work. -->
25
+
26
+ # Timeline
27
+
28
+ | Time | Event or observation | Action and owner |
29
+ |---|---|---|
30
+ | <!-- CABBAGE: Record a timestamp. --> | <!-- CABBAGE: Record a material event. --> | <!-- CABBAGE: Record the response and actor. --> |
31
+
32
+ # Mitigation
33
+
34
+ ## Containment
35
+
36
+ <!-- CABBAGE: Describe how impact was stopped or limited. -->
37
+
38
+ ## Recovery
39
+
40
+ <!-- CABBAGE: Describe restoration steps and any remaining degraded behavior. -->
41
+
42
+ # Recovery Verification
43
+
44
+ <!-- CABBAGE: Record the metrics, checks, and observation window that prove recovery. -->
45
+
46
+ # Communications
47
+
48
+ <!-- CABBAGE: Record customer, stakeholder, support, and status-page updates with timestamps. -->
@@ -0,0 +1,43 @@
1
+ ---
2
+ change: {{CHANGE_ID}}
3
+ cabbage_stage: {{STAGE_ID}}
4
+ change_type: {{CHANGE_TYPE}}
5
+ ---
6
+
7
+ <!-- Replace every marked prompt before verifying this stage. Keep the analysis blameless and evidence based. -->
8
+
9
+ # Summary
10
+
11
+ <!-- CABBAGE: Summarize what happened, the duration, resolution, and principal lesson. -->
12
+
13
+ # Impact and Detection
14
+
15
+ <!-- CABBAGE: Quantify impact and explain how the incident was detected, including detection gaps. -->
16
+
17
+ # Root Cause
18
+
19
+ <!-- CABBAGE: State the causal chain with supporting evidence; distinguish the trigger from the root cause. -->
20
+
21
+ # Contributing Factors
22
+
23
+ - <!-- CABBAGE: Record a systemic condition that increased likelihood, impact, or recovery time. -->
24
+
25
+ # Response Assessment
26
+
27
+ ## What Went Well
28
+
29
+ - <!-- CABBAGE: Record an effective safeguard or response action. -->
30
+
31
+ ## What Went Poorly
32
+
33
+ - <!-- CABBAGE: Record a response or process gap. -->
34
+
35
+ # Corrective Actions
36
+
37
+ | Action | Type | Owner | Due date | Verification | Status |
38
+ |---|---|---|---|---|---|
39
+ | <!-- CABBAGE: Define a specific preventive or detective action. --> | <!-- CABBAGE: Prevent, Detect, or Mitigate. --> | <!-- CABBAGE: Name one owner. --> | <!-- CABBAGE: Set a date. --> | <!-- CABBAGE: Define evidence of completion. --> | Open |
40
+
41
+ # Lessons Learned
42
+
43
+ <!-- CABBAGE: Record reusable technical or organizational learning and where it will be shared. -->
@@ -0,0 +1,71 @@
1
+ ---
2
+ change: {{CHANGE_ID}}
3
+ cabbage_stage: {{STAGE_ID}}
4
+ change_type: {{CHANGE_TYPE}}
5
+ ---
6
+
7
+ <!-- Replace every marked prompt before verifying this stage. Use N/A with a reason when a section does not apply. -->
8
+
9
+ # Goal
10
+
11
+ <!-- CABBAGE: State the user or business problem, the desired outcome, and why it matters now. -->
12
+
13
+ ## Grill-Me Alignment Summary
14
+
15
+ - **Core Problem & Value**: <!-- CABBAGE: Summarize the clarified business intent and primary value hypothesis from pre-flight grilling. -->
16
+ - **Assumptions Validated**: <!-- CABBAGE: Record validated assumptions and eliminated ambiguities. -->
17
+
18
+ # Users and Use Cases
19
+
20
+ | User or actor | Need | Primary use case |
21
+ |---|---|---|
22
+ | <!-- CABBAGE: Identify the affected user or system. --> | <!-- CABBAGE: Describe the need. --> | <!-- CABBAGE: Describe the observable workflow. --> |
23
+
24
+ # Scope
25
+
26
+ ## In Scope
27
+
28
+ - <!-- CABBAGE: List behavior delivered by this change. -->
29
+
30
+ ## Out of Scope
31
+
32
+ - <!-- CABBAGE: List adjacent behavior intentionally excluded. -->
33
+
34
+ ## Decision Boundaries
35
+
36
+ - **AI Autonomous Decisions**: <!-- CABBAGE: Technical details, internal naming, local refactoring, and test fixtures decided directly by AI. -->
37
+ - **Human Gate Decisions**: <!-- CABBAGE: Business rules, breaking interface/data model changes, scope expansion, and domain trade-offs requiring explicit human approval. -->
38
+
39
+ # Requirements
40
+
41
+ | ID | Requirement (SHALL/MUST) | Priority | Rationale |
42
+ |---|---|---|---|
43
+ | R-1 | <!-- CABBAGE: Write a testable requirement using SHALL/MUST. --> | Must | <!-- CABBAGE: Explain why it is needed. --> |
44
+
45
+ # Acceptance Criteria
46
+
47
+ ### Scenario 1: <!-- CABBAGE: Scenario title -->
48
+ - **GIVEN**: <!-- CABBAGE: Initial context / precondition -->
49
+ - **WHEN**: <!-- CABBAGE: Action or event triggered -->
50
+ - **THEN**: <!-- CABBAGE: Observable expected outcome -->
51
+ - [ ] <!-- CABBAGE: Acceptance verification checkbox -->
52
+
53
+ # Success Metrics
54
+
55
+ | Metric | Baseline | Target | Measurement window |
56
+ |---|---|---|---|
57
+ | <!-- CABBAGE: Name the outcome metric. --> | <!-- CABBAGE: Record the current value. --> | <!-- CABBAGE: Record the target value. --> | <!-- CABBAGE: Define when it is evaluated. --> |
58
+
59
+ # Dependencies and Constraints
60
+
61
+ - <!-- CABBAGE: Record external dependencies, policy constraints, deadlines, or compatibility requirements. -->
62
+
63
+ # Risks
64
+
65
+ | Risk | Impact | Mitigation |
66
+ |---|---|---|
67
+ | <!-- CABBAGE: Describe a product or delivery risk. --> | <!-- CABBAGE: Describe the consequence. --> | <!-- CABBAGE: Describe the mitigation. --> |
68
+
69
+ # Open Questions
70
+
71
+ - <!-- CABBAGE: Record unresolved decisions and an owner, or state N/A. -->
@@ -0,0 +1,45 @@
1
+ ---
2
+ change: {{CHANGE_ID}}
3
+ cabbage_stage: {{STAGE_ID}}
4
+ change_type: {{CHANGE_TYPE}}
5
+ ---
6
+
7
+ <!-- Replace every marked prompt before verifying this stage. Use N/A with a reason when a section does not apply. -->
8
+
9
+ # Release Summary
10
+
11
+ <!-- CABBAGE: Identify the release, affected services or clients, release window, and accountable owner. -->
12
+
13
+ # Preconditions
14
+
15
+ - [ ] <!-- CABBAGE: List an approval, dependency, backup, migration, capacity, or compatibility prerequisite. -->
16
+
17
+ # Deployment
18
+
19
+ | Order | Action | Owner | Success signal |
20
+ |---|---|---|---|
21
+ | 1 | <!-- CABBAGE: Describe a concrete deployment step. --> | <!-- CABBAGE: Name the owner. --> | <!-- CABBAGE: Define the expected signal. --> |
22
+
23
+ # Rollback
24
+
25
+ ## Triggers
26
+
27
+ - <!-- CABBAGE: Define a measurable rollback trigger. -->
28
+
29
+ ## Steps
30
+
31
+ 1. <!-- CABBAGE: Describe rollback ordering, ownership, and data handling. -->
32
+
33
+ # Verification
34
+
35
+ | Check | Method | Expected result | Owner |
36
+ |---|---|---|---|
37
+ | <!-- CABBAGE: Name a functional or operational check. --> | <!-- CABBAGE: Provide a command, dashboard, or procedure. --> | <!-- CABBAGE: Define pass criteria. --> | <!-- CABBAGE: Name the verifier. --> |
38
+
39
+ # Monitoring
40
+
41
+ <!-- CABBAGE: List dashboards, alerts, logs, observation duration, and escalation thresholds. -->
42
+
43
+ # Communication
44
+
45
+ <!-- CABBAGE: Describe stakeholder notification, support readiness, status updates, and release notes. -->
@@ -0,0 +1,44 @@
1
+ ---
2
+ change: {{CHANGE_ID}}
3
+ cabbage_stage: {{STAGE_ID}}
4
+ change_type: {{CHANGE_TYPE}}
5
+ ---
6
+
7
+ <!-- Replace every marked prompt before verifying this stage. -->
8
+
9
+ # Summary
10
+
11
+ <!-- CABBAGE: Summarize the proposed direction and decision requested from reviewers. -->
12
+
13
+ # Problem
14
+
15
+ <!-- CABBAGE: Describe the current problem, evidence, affected parties, and cost of doing nothing. -->
16
+
17
+ # Goals and Non-goals
18
+
19
+ - Goal: <!-- CABBAGE: State an outcome the proposal must achieve. -->
20
+ - Non-goal: <!-- CABBAGE: State an adjacent concern intentionally excluded. -->
21
+
22
+ # Proposal
23
+
24
+ <!-- CABBAGE: Explain the approach, key components, boundaries, and operational model at decision level. -->
25
+
26
+ # Alternatives
27
+
28
+ | Option | Benefits | Costs and risks | Outcome |
29
+ |---|---|---|---|
30
+ | <!-- CABBAGE: Name an alternative, including the status quo. --> | <!-- CABBAGE: List advantages. --> | <!-- CABBAGE: List disadvantages. --> | <!-- CABBAGE: State why it is preferred or rejected. --> |
31
+
32
+ # Compatibility and Migration
33
+
34
+ <!-- CABBAGE: Describe consumer impact, transition phases, compatibility window, and deprecation. -->
35
+
36
+ # Risks
37
+
38
+ | Risk | Impact | Mitigation |
39
+ |---|---|---|
40
+ | <!-- CABBAGE: Describe a proposal risk. --> | <!-- CABBAGE: Describe the consequence. --> | <!-- CABBAGE: Describe mitigation or recovery. --> |
41
+
42
+ # Open Questions
43
+
44
+ - <!-- CABBAGE: Record an unresolved decision, owner, and target date. -->
@@ -0,0 +1,35 @@
1
+ ---
2
+ change: {{CHANGE_ID}}
3
+ cabbage_stage: {{STAGE_ID}}
4
+ change_type: {{CHANGE_TYPE}}
5
+ ---
6
+
7
+ <!-- Replace every marked prompt before verifying this stage. -->
8
+
9
+ # Scope and Assets
10
+
11
+ | Asset or trust boundary | Sensitivity | Actor or owner |
12
+ |---|---|---|
13
+ | <!-- CABBAGE: Identify data, credentials, service, or boundary. --> | <!-- CABBAGE: State sensitivity and business impact. --> | <!-- CABBAGE: Name users, systems, and owner. --> |
14
+
15
+ # Threats
16
+
17
+ | ID | Threat or abuse case | Preconditions | Impact | Likelihood |
18
+ |---|---|---|---|---|
19
+ | S-1 | <!-- CABBAGE: Describe a credible threat. --> | <!-- CABBAGE: State what enables it. --> | <!-- CABBAGE: Describe the consequence. --> | <!-- CABBAGE: Low, Medium, or High. --> |
20
+
21
+ # Controls
22
+
23
+ | Threat ID | Preventive or detective control | Verification evidence | Owner |
24
+ |---|---|---|---|
25
+ | S-1 | <!-- CABBAGE: Describe authorization, validation, secrets, audit, or another control. --> | <!-- CABBAGE: Name a test, scan, log, or review. --> | <!-- CABBAGE: Name the owner. --> |
26
+
27
+ # Residual Risks
28
+
29
+ | Risk | Reason accepted | Approver | Review date |
30
+ |---|---|---|---|
31
+ | <!-- CABBAGE: Describe remaining exposure, or state N/A. --> | <!-- CABBAGE: Explain the trade-off. --> | <!-- CABBAGE: Name the risk owner. --> | <!-- CABBAGE: Set the review date. --> |
32
+
33
+ # Verification
34
+
35
+ - <!-- CABBAGE: List required security tests, privacy checks, and release-blocking evidence. -->