bigpowers 2.57.0 → 2.58.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.
package/.pi/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bigpowers",
3
- "version": "2.57.0",
3
+ "version": "2.58.1",
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.58.1](https://github.com/danielvm-git/bigpowers/compare/v2.58.0...v2.58.1) (2026-07-03)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * **specs:** sync epic capsule release labels to release trains ([15b18f4](https://github.com/danielvm-git/bigpowers/commit/15b18f4a45f43cade81e19250458e404eea1b24f))
7
+
8
+ # [2.58.0](https://github.com/danielvm-git/bigpowers/compare/v2.57.0...v2.58.0) (2026-07-03)
9
+
10
+
11
+ ### Features
12
+
13
+ * **compliance:** add G-07 negative-path self-test for step scripts ([43a05b7](https://github.com/danielvm-git/bigpowers/commit/43a05b756cb0313cb52aba3d40ac77c1bce0bc56))
14
+
1
15
  # [2.57.0](https://github.com/danielvm-git/bigpowers/compare/v2.56.1...v2.57.0) (2026-07-03)
2
16
 
3
17
 
package/README.md CHANGED
@@ -324,7 +324,9 @@ npm run validate-specs
324
324
 
325
325
  ### Changelog
326
326
 
327
- See [CHANGELOG.md](CHANGELOG.md) or [Releases](https://github.com/danielvm-git/bigpowers/releases).
327
+ See [CHANGELOG.md](CHANGELOG.md) for the auto-generated commit history, or [Releases](https://github.com/danielvm-git/bigpowers/releases) for GitHub release notes.
328
+
329
+ For an executive narrative of the project's history — 98 releases across 41 days, 4 phases, 19 epics delivered — read [RELEASE-HISTORY.md](docs/RELEASE-HISTORY.md).
328
330
 
329
331
  ### Links
330
332
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bigpowers",
3
- "version": "2.57.0",
3
+ "version": "2.58.1",
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,87 @@
1
+ #!/usr/bin/env bash
2
+ # golden-g07-negative-path.sh — Step Script Negative-Path Self-Test (G-07)
3
+ #
4
+ # Proves that compliance step scripts CAN detect violations (GAP-1 bug class).
5
+ # Each step script is run against a deliberately broken fixture and MUST
6
+ # return a non-zero exit code (i.e., detect the violation).
7
+ #
8
+ # If any step script exits 0 on the broken fixture, it may be failing-open
9
+ # (passing vacuously) — the same class of bug that caused GAP-1.
10
+ #
11
+ # Usage: bash scripts/golden-g07-negative-path.sh
12
+ # Exit 0: all step scripts detected their violations (negative path verified)
13
+ # Exit 1: at least one step script failed to detect a violation (fail-open risk)
14
+
15
+ set -euo pipefail
16
+
17
+ RED='\033[0;31m'
18
+ GREEN='\033[0;32m'
19
+ YELLOW='\033[0;33m'
20
+ NC='\033[0m'
21
+
22
+ PASS=0
23
+ FAIL=0
24
+
25
+ g07_pass() { echo -e " ${GREEN}PASS${NC} $*"; PASS=$((PASS + 1)); }
26
+ g07_fail() { echo -e " ${RED}FAIL${NC} $*"; FAIL=$((FAIL + 1)); }
27
+
28
+ REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
29
+ FIXTURE_DIR="$REPO_ROOT/specs/verifications/fixtures/negative-path"
30
+ STEPS_DIR="$REPO_ROOT/specs/verifications/steps"
31
+
32
+ if [[ ! -d "$FIXTURE_DIR" ]]; then
33
+ echo "ERROR: Fixture directory not found: $FIXTURE_DIR"
34
+ exit 1
35
+ fi
36
+
37
+ echo "=== G-07: Negative-Path Self-Test ==="
38
+ echo "Fixture: $FIXTURE_DIR"
39
+ echo ""
40
+
41
+ # Each entry: "step_script|violation_description"
42
+ TESTS=(
43
+ "and-files-should-be-small-enough-to-avoid-context-window-truncation-300-lines.sh|300-line cap: fixture has a 350-line script"
44
+ "and-files-should-remain-under-500-lines-newspaper-metaphor.sh|500-line cap: fixture has a 550-line step script"
45
+ "and-it-must-mandate-file-size-limits-300-lines.sh|CONVENTIONS.md: missing '300 lines' mandate"
46
+ "then-it-must-mandate-conventional-commits-1-0-0-and-semver-2-0-0.sh|CONVENTIONS.md: missing Conventional Commits mandate"
47
+ "then-skills-should-include-bold-hard-gate-callout-blocks.sh|SKILL.md: missing HARD GATE blocks"
48
+ )
49
+
50
+ for entry in "${TESTS[@]}"; do
51
+ step_script="${entry%%|*}"
52
+ description="${entry##*|}"
53
+
54
+ script_path="$STEPS_DIR/$step_script"
55
+ if [[ ! -f "$script_path" ]]; then
56
+ g07_fail "$step_script: step script not found"
57
+ continue
58
+ fi
59
+
60
+ # Run the step script from the fixture directory so it finds fixture files
61
+ # (scripts/, CONVENTIONS.md, SKILL.md) instead of the real repo files.
62
+ # Use set +e temporarily because the step script IS expected to exit non-zero.
63
+ set +e
64
+ actual_output=$(cd "$FIXTURE_DIR" && bash "$script_path" 2>&1)
65
+ actual_exit=$?
66
+ set -e
67
+
68
+ if [[ $actual_exit -ne 0 ]]; then
69
+ g07_pass "$step_script ($description) — correctly detected violation"
70
+ else
71
+ g07_fail "$step_script ($description) — FAILED TO DETECT violation (exit 0 on broken fixture, possible fail-open)"
72
+ echo " output: $actual_output"
73
+ fi
74
+ done
75
+
76
+ echo ""
77
+ echo "──────────────────────────────────────────"
78
+ echo -e "Results: ${GREEN}${PASS} passed${NC}, ${RED}${FAIL} failed${NC}"
79
+ echo "──────────────────────────────────────────"
80
+
81
+ if [[ "$FAIL" -gt 0 ]]; then
82
+ echo "G-07: FAIL — $FAIL step script(s) may be failing-open (GAP-1 bug class)"
83
+ exit 1
84
+ fi
85
+
86
+ echo "G-07: PASS — all step scripts correctly detect violations on negative-path fixture"
87
+ exit 0
@@ -31,6 +31,7 @@ done
31
31
  GATES=(
32
32
  "compliance:npm run compliance:false"
33
33
  "g04-selftest:bash scripts/golden-g04-selftest.sh:true"
34
+ "g07-negative-path:bash scripts/golden-g07-negative-path.sh:false"
34
35
  )
35
36
 
36
37
  GREEN='\033[0;32m'