Skip to content

Commit 9768b2c

Browse files
committed
chore(release): add pre-tag gate and installer coverage roadmap
1 parent a551dec commit 9768b2c

4 files changed

Lines changed: 57 additions & 3 deletions

File tree

TODO.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,11 +48,20 @@ This list is prioritized for mission-critical readiness: secure-by-default behav
4848
- [ ] Fix failing `test/plugins-ipc.test.js` model payload shape expectation.
4949
- [ ] Keep `npm test` fully passing.
5050
- [ ] Reduce lint warnings to zero or explicitly codify allowed warnings.
51+
- [ ] Release/tag hygiene:
52+
- [ ] Only create release tags from commits that already passed CI on `main`.
53+
- [x] Add a pre-tag check script (`typecheck`, `test`, build smoke) and document required order.
54+
- [ ] If a tagged release fails, cut a new patch tag instead of reusing the failed tag.
5155
- [ ] Add pre-release gate script:
5256
- [ ] `check:loc`
5357
- [ ] `lint`
5458
- [ ] `test`
5559
- [ ] build smoke
60+
- [ ] Installer coverage:
61+
- [ ] Build and verify installer artifacts for each supported OS release:
62+
- [ ] Windows installer/portable
63+
- [ ] Linux AppImage + deb
64+
- [ ] macOS dmg + zip
5665

5766
## P2 - Architecture / Refactor (next session)
5867

docs/release.md

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@
2020
## Recommended Release Steps
2121

2222
1. Ensure CI passes on `main`.
23-
2. Bump version and changelog notes.
24-
3. Create and push a tag like `v1.0.1`.
25-
4. Verify release artifacts on GitHub Releases.
23+
2. Run local pre-tag checks in this order:
24+
- `npm run check:pretag` (runs: typecheck -> test -> build runtime smoke -> bundle smoke)
25+
3. Bump version and changelog notes.
26+
4. Create and push a tag like `v1.0.1`.
27+
5. Verify release artifacts on GitHub Releases.

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@
5151
"check:loc:desktop": "node scripts/check-file-loc.cjs --root src --warn 500 --fail 700",
5252
"typecheck": "tsc -p tsconfig.json --noEmit",
5353
"typecheck:strict": "tsc -p tsconfig.strict.json --noEmit",
54+
"check:pretag": "node scripts/pretag-check.cjs",
5455
"test:desktop": "node test/desktop-security.test.js && node test/path-guards.test.js",
5556
"test:ipc": "npm run check:ipc && node test/system-ipc.test.js && node test/skills-ipc.test.js && node test/plugins-ipc.test.js",
5657
"test": "npm run build:runtime && npm run test:desktop && npm run test:ipc",

scripts/pretag-check.cjs

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
#!/usr/bin/env node
2+
'use strict';
3+
4+
const { spawnSync } = require('node:child_process');
5+
6+
const npmBin = 'npm';
7+
8+
const checks = [
9+
{ name: 'Typecheck', args: ['run', 'typecheck'] },
10+
{ name: 'Tests', args: ['run', 'test'] },
11+
{ name: 'Build smoke', args: ['run', 'build:runtime'] },
12+
{ name: 'Bundle smoke', args: ['run', 'bundle-engine'] }
13+
];
14+
15+
function runCheck(check) {
16+
const pretty = `${npmBin} ${check.args.join(' ')}`;
17+
console.log(`\n[pretag] ${check.name}: ${pretty}`);
18+
const result = spawnSync(npmBin, check.args, {
19+
stdio: 'inherit',
20+
env: process.env,
21+
shell: process.platform === 'win32'
22+
});
23+
24+
if (result.error) {
25+
console.error(`[pretag] ${check.name} failed to start:`, result.error.message);
26+
process.exit(1);
27+
}
28+
29+
if (typeof result.status === 'number' && result.status !== 0) {
30+
console.error(`[pretag] ${check.name} failed with exit code ${result.status}`);
31+
process.exit(result.status);
32+
}
33+
34+
if (result.signal) {
35+
console.error(`[pretag] ${check.name} terminated by signal ${result.signal}`);
36+
process.exit(1);
37+
}
38+
}
39+
40+
console.log('[pretag] Running pre-tag checks...');
41+
checks.forEach(runCheck);
42+
console.log('\n[pretag] All pre-tag checks passed.');

0 commit comments

Comments
 (0)