File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff 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
Original file line number Diff line number Diff line change 2020## Recommended Release Steps
2121
22221 . 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.
Original file line number Diff line number Diff line change 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" ,
Original file line number Diff line number Diff line change 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.' ) ;
You can’t perform that action at this time.
0 commit comments