sequant 1.16.0 → 1.16.1

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.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "sequant",
3
3
  "description": "Structured workflow system for Claude Code - GitHub issue resolution with spec, exec, test, and QA phases",
4
- "version": "1.16.0",
4
+ "version": "1.16.1",
5
5
  "author": {
6
6
  "name": "sequant-io",
7
7
  "email": "hello@sequant.io"
package/README.md CHANGED
@@ -128,6 +128,7 @@ npx sequant run 123 # Single issue
128
128
  npx sequant run 1 2 3 # Batch (parallel)
129
129
  npx sequant run 123 --quality-loop
130
130
  npx sequant run 123 --base feature/dashboard # Custom base branch
131
+ npx sequant merge --check # Verify batch before merging
131
132
  ```
132
133
 
133
134
  ---
@@ -155,6 +156,7 @@ npx sequant run 123 --base feature/dashboard # Custom base branch
155
156
 
156
157
  | Command | Purpose |
157
158
  |---------|---------|
159
+ | `/merger` | Multi-issue merge coordination |
158
160
  | `/testgen` | Generate test stubs from spec |
159
161
  | `/verify` | CLI/script execution verification |
160
162
  | `/setup` | Initialize Sequant in a project |
@@ -180,12 +182,13 @@ npx sequant update # Update skill templates
180
182
  npx sequant doctor # Check installation
181
183
  npx sequant status # Show version and config
182
184
  npx sequant run <issues...> # Execute workflow
185
+ npx sequant merge <issues...> # Batch integration QA before merging
183
186
  npx sequant state <cmd> # Manage workflow state (init/rebuild/clean)
184
187
  npx sequant stats # View local workflow analytics
185
188
  npx sequant dashboard # Launch real-time workflow dashboard
186
189
  ```
187
190
 
188
- See [Run Command Options](docs/reference/run-command.md), [State Command](docs/reference/state-command.md), and [Analytics](docs/reference/analytics.md) for details.
191
+ See [Run Command Options](docs/reference/run-command.md), [Merge Command](docs/reference/merge-command.md), [State Command](docs/reference/state-command.md), and [Analytics](docs/reference/analytics.md) for details.
189
192
 
190
193
  ---
191
194
 
@@ -2105,6 +2105,12 @@ export async function runCommand(issues, options) {
2105
2105
  console.log(colors.muted(` 📝 Log: ${logPath}`));
2106
2106
  console.log("");
2107
2107
  }
2108
+ // Suggest merge checks for multi-issue batches
2109
+ if (results.length > 1 && passed > 0 && !config.dryRun) {
2110
+ console.log(colors.muted(" 💡 Verify batch integration before merging:"));
2111
+ console.log(colors.muted(" sequant merge --check"));
2112
+ console.log("");
2113
+ }
2108
2114
  if (config.dryRun) {
2109
2115
  console.log(colors.warning(" â„šī¸ This was a dry run. Use without --dry-run to execute."));
2110
2116
  console.log("");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sequant",
3
- "version": "1.16.0",
3
+ "version": "1.16.1",
4
4
  "description": "Quantize your development workflow - Sequential AI phases with quality gates",
5
5
  "type": "module",
6
6
  "bin": {
@@ -62,9 +62,9 @@
62
62
  "chokidar": "^5.0.0",
63
63
  "cli-table3": "^0.6.5",
64
64
  "commander": "^12.1.0",
65
- "diff": "^7.0.0",
65
+ "diff": "^8.0.3",
66
66
  "gradient-string": "^3.0.0",
67
- "hono": "^4.11.4",
67
+ "hono": "^4.12.1",
68
68
  "inquirer": "^12.3.2",
69
69
  "open": "^11.0.0",
70
70
  "ora": "^8.2.0",
@@ -73,7 +73,6 @@
73
73
  },
74
74
  "devDependencies": {
75
75
  "@eslint/js": "^9.39.2",
76
- "@types/diff": "^7.0.0",
77
76
  "@types/gradient-string": "^1.1.6",
78
77
  "@types/inquirer": "^9.0.7",
79
78
  "@types/node": "^22.10.5",
@@ -636,6 +636,20 @@ For multiple issues, run `/fullsolve` on each sequentially:
636
636
 
637
637
  Each issue gets its own worktree, PR, and quality validation.
638
638
 
639
+ ### Post-Batch: Merge Verification
640
+
641
+ After processing a batch, run `sequant merge` to catch cross-issue integration gaps before merging:
642
+
643
+ ```bash
644
+ /fullsolve 218
645
+ /fullsolve 219
646
+ /fullsolve 220
647
+ sequant merge --check # Verify no cross-issue conflicts
648
+ /merger 218 219 220 # Merge all issues
649
+ ```
650
+
651
+ `sequant merge --check` detects merge conflicts, template mirroring gaps, and file overlaps at zero AI cost. See `docs/reference/merge-command.md`.
652
+
639
653
  ---
640
654
 
641
655
  ## Output Verification
@@ -477,6 +477,28 @@ npx sequant run 152 --quality-loop --max-iterations 5
477
477
  npx sequant run 152 --dry-run
478
478
  ```
479
479
 
480
+ ### Post-Run: Merge Verification
481
+
482
+ After batch execution, run merge checks before merging:
483
+
484
+ ```bash
485
+ # Verify feature branches are safe to merge (auto-detects issues from last run)
486
+ npx sequant merge --check
487
+
488
+ # Full scan including residual pattern detection
489
+ npx sequant merge --scan
490
+
491
+ # Post results to each PR
492
+ npx sequant merge --check --post
493
+ ```
494
+
495
+ **Recommended workflow:**
496
+ ```bash
497
+ npx sequant run 152 153 154 # implement
498
+ npx sequant merge --check # verify cross-issue integration
499
+ /merger 152 153 154 # merge
500
+ ```
501
+
480
502
  ### Custom Base Branch
481
503
 
482
504
  The `--base` flag specifies which branch to create worktrees from:
@@ -91,8 +91,8 @@ When called like `/spec <freeform description>`:
91
91
  ```bash
92
92
  # Extract AC from issue body and store in state
93
93
  npx tsx -e "
94
- import { extractAcceptanceCriteria } from './src/lib/ac-parser.js';
95
- import { StateManager } from './src/lib/workflow/state-manager.js';
94
+ import { extractAcceptanceCriteria } from './src/lib/ac-parser.ts';
95
+ import { StateManager } from './src/lib/workflow/state-manager.ts';
96
96
 
97
97
  const issueBody = \`<ISSUE_BODY_HERE>\`;
98
98
  const issueNumber = <ISSUE_NUMBER>;
@@ -103,13 +103,14 @@ console.log('Extracted AC:', JSON.stringify(ac, null, 2));
103
103
 
104
104
  if (ac.items.length > 0) {
105
105
  const manager = new StateManager();
106
- // Initialize issue if not exists
107
- const existing = await manager.getIssueState(issueNumber);
108
- if (!existing) {
109
- await manager.initializeIssue(issueNumber, issueTitle);
110
- }
111
- await manager.updateAcceptanceCriteria(issueNumber, ac);
112
- console.log('AC stored in state for issue #' + issueNumber);
106
+ (async () => {
107
+ const existing = await manager.getIssueState(issueNumber);
108
+ if (!existing) {
109
+ await manager.initializeIssue(issueNumber, issueTitle);
110
+ }
111
+ await manager.updateAcceptanceCriteria(issueNumber, ac);
112
+ console.log('AC stored in state for issue #' + issueNumber);
113
+ })();
113
114
  }
114
115
  "
115
116
  ```
@@ -136,8 +137,8 @@ The parser supports multiple formats:
136
137
  ```bash
137
138
  # Lint AC for quality issues (skip if --skip-ac-lint flag is set)
138
139
  npx tsx -e "
139
- import { parseAcceptanceCriteria } from './src/lib/ac-parser.js';
140
- import { lintAcceptanceCriteria, formatACLintResults } from './src/lib/ac-linter.js';
140
+ import { parseAcceptanceCriteria } from './src/lib/ac-parser.ts';
141
+ import { lintAcceptanceCriteria, formatACLintResults } from './src/lib/ac-linter.ts';
141
142
 
142
143
  const issueBody = \`<ISSUE_BODY_HERE>\`;
143
144