bigpowers 2.59.2 → 2.59.4

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/.pi/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bigpowers",
3
- "version": "2.59.2",
3
+ "version": "2.59.4",
4
4
  "description": "73 skills — 72 agent skills synthesizing 17 years of software engineering discipline into a prescriptive methodology for solo developers",
5
5
  "keywords": [
6
6
  "pi-package"
package/CHANGELOG.md CHANGED
@@ -1,3 +1,17 @@
1
+ ## [2.59.4](https://github.com/danielvm-git/bigpowers/compare/v2.59.3...v2.59.4) (2026-07-04)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * **ci:** recompile golden lock file, purge stale e37 ids ([646afc4](https://github.com/danielvm-git/bigpowers/commit/646afc4aefe8d88a4dfbc986fc5f29f79499da4a))
7
+
8
+ ## [2.59.3](https://github.com/danielvm-git/bigpowers/compare/v2.59.2...v2.59.3) (2026-07-04)
9
+
10
+
11
+ ### Bug Fixes
12
+
13
+ * **repo:** gitignore Python virtualenvs and add G-11 golden gate ([a0f2ff0](https://github.com/danielvm-git/bigpowers/commit/a0f2ff076978ad06bc4bfeecedfaa4ea3d460478))
14
+
1
15
  ## [2.59.2](https://github.com/danielvm-git/bigpowers/compare/v2.59.1...v2.59.2) (2026-07-04)
2
16
 
3
17
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bigpowers",
3
- "version": "2.59.2",
3
+ "version": "2.59.4",
4
4
  "description": "72 agent skills synthesizing 17 years of software engineering discipline into a prescriptive methodology for solo developers",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -0,0 +1,51 @@
1
+ #!/usr/bin/env bash
2
+ # golden-g11-gitignore-venv.sh — Python venv gitignore gate (G-11)
3
+ #
4
+ # Prevents recurrence of BUG-2026-07-03-venv-not-gitignored: a root .venv/
5
+ # must be ignored before `git add .` can accidentally commit vendored packages.
6
+ #
7
+ # Asserts:
8
+ # 1. .gitignore contains .venv/, venv/, __pycache__/, *.pyc
9
+ # 2. git check-ignore .venv succeeds (when .venv exists or as path rule)
10
+ #
11
+ # Exit 0 on all assertions passing; exit 1 on first failure.
12
+ #
13
+ # Usage: bash scripts/golden-g11-gitignore-venv.sh
14
+
15
+ set -euo pipefail
16
+
17
+ REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
18
+ cd "$REPO_ROOT"
19
+
20
+ RED='\033[0;31m'
21
+ GREEN='\033[0;32m'
22
+ NC='\033[0m'
23
+
24
+ PASS=0
25
+ FAIL=0
26
+
27
+ g11_pass() { echo -e "${GREEN}PASS${NC} $*"; PASS=$((PASS + 1)); }
28
+ g11_fail() { echo -e "${RED}FAIL${NC} $*"; FAIL=$((FAIL + 1)); }
29
+
30
+ required_patterns=( '.venv/' 'venv/' '__pycache__/' '*.pyc' )
31
+
32
+ for pattern in "${required_patterns[@]}"; do
33
+ if grep -qxF "$pattern" .gitignore; then
34
+ g11_pass ".gitignore contains $pattern"
35
+ else
36
+ g11_fail ".gitignore missing $pattern"
37
+ fi
38
+ done
39
+
40
+ if git check-ignore -q .venv 2>/dev/null; then
41
+ g11_pass "git check-ignore .venv"
42
+ else
43
+ g11_fail "git check-ignore .venv (path not ignored)"
44
+ fi
45
+
46
+ echo ""
47
+ echo "G-11 summary: $PASS passed, $FAIL failed"
48
+ if [[ "$FAIL" -gt 0 ]]; then
49
+ exit 1
50
+ fi
51
+ exit 0
@@ -35,6 +35,7 @@ GATES=(
35
35
  "g08-anti-vacuity:bash scripts/golden-g08-anti-vacuity.sh:false"
36
36
  "g09-yaml-roundtrip:bash scripts/golden-g09-yaml-roundtrip.sh:false"
37
37
  "g10-trace-anti-vacuity:bash scripts/golden-g10-trace-anti-vacuity.sh:false"
38
+ "g11-gitignore-venv:bash scripts/golden-g11-gitignore-venv.sh:false"
38
39
  "specs-parse:bash scripts/validate-specs-yaml.sh:false"
39
40
  )
40
41
 
@@ -67,7 +67,7 @@ sys.exit(0 if ($py_check) else 1)
67
67
  fi
68
68
  }
69
69
 
70
- need_key "$SPECS/state.yaml" "isinstance(d.get('active_flow'), str)" 'missing active_flow'
70
+ need_key "$SPECS/state.yaml" "'active_flow' in d and (d.get('active_flow') is None or isinstance(d.get('active_flow'), str))" 'missing or invalid active_flow'
71
71
  need_key "$SPECS/release-plan.yaml" "isinstance(d.get('release'), dict)" 'missing release block'
72
72
  need_key "$SPECS/release-plan.yaml" "isinstance(d.get('release'), dict) and 'version' in d['release']" 'missing release.version'
73
73
  need_key "$SPECS/release-plan.yaml" "isinstance(d.get('epics'), list) and len(d['epics']) > 0" 'missing epics list'