bigpowers 2.73.0 → 2.73.2

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.73.0",
3
+ "version": "2.73.2",
4
4
  "description": "75 skills — 73 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.73.2](https://github.com/danielvm-git/bigpowers/compare/v2.73.1...v2.73.2) (2026-07-06)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * **ci:** close BUG-2026-07-04-python-interpreter-fragility — python-env.sh resolver verified ([1f4fd30](https://github.com/danielvm-git/bigpowers/commit/1f4fd301f9ec19b2eb60100d43d79ac57891bed6))
7
+
8
+ ## [2.73.1](https://github.com/danielvm-git/bigpowers/compare/v2.73.0...v2.73.1) (2026-07-06)
9
+
10
+
11
+ ### Bug Fixes
12
+
13
+ * **ci:** skip unimplemented P0 stories in trace --strict gate ([e7a56bf](https://github.com/danielvm-git/bigpowers/commit/e7a56bfd94d5dbebf0f7736383e2c381016616b9))
14
+
1
15
  # [2.73.0](https://github.com/danielvm-git/bigpowers/compare/v2.72.1...v2.73.0) (2026-07-06)
2
16
 
3
17
 
@@ -0,0 +1,49 @@
1
+ # Independent Compliance Audit (Unwaived Mode)
2
+
3
+ **Date**: 2026-07-06
4
+ **Mode**: Strict (All waivers disabled)
5
+ **Target**: `specs/verifications/features/`
6
+ **Result**: GATE: FAIL
7
+
8
+ ## Summary of Execution
9
+ I executed the verification gates by temporarily bypassing `waivers.yaml` to run an independent compliance audit against the `bigpowers` principles and conventions without any exceptions. The `audit-compliance.sh` and `validate-doctrine.sh` scripts were successfully executed.
10
+
11
+ ## Failed Verification Steps & Offending Scripts
12
+
13
+ By disabling the waivers, I isolated **4 failing verification steps**. Below is the mapping of each failure to its offending files and corresponding `bigpowers` skills:
14
+
15
+ ### 1. Unique Public Symbols (`grep` < 5 results)
16
+ **Feature**: `akita.feature` (sourced from `conventions.feature`)
17
+ - **Reason**: Duplicate function names across multiple files (e.g., `agent_dry_run`, `assign_tier`, `cleanup`, `emit_json`, `fail`, `parse_frontmatter`, `pass`, `show_help`, `usage`).
18
+ - **Affected Core/Skills**: Common shared scripts and lifecycle utilities.
19
+
20
+ ### 2. Context Window Constraint (< 300 lines)
21
+ **Feature**: `akita.feature`
22
+ - **Reason**: Scripts exceeding the 300-line limit for agent context windows.
23
+ - **Offending Files**:
24
+ - `scripts/sync-skills.sh` (Mapped to: `craft-skill`, `evolve-skill`, `maintain-wiki`)
25
+ - `scripts/migrate-version.sh` (Mapped to: `migrate-spec`)
26
+ - `scripts/run-verification-gates.sh` (Core harness)
27
+ - `scripts/validate-okf.sh` (Core harness)
28
+ - `scripts/audit-compliance.sh` (Core harness / `audit-code`)
29
+ - `scripts/run-golden-suite.sh` (Core harness)
30
+ - `scripts/lib/trace-matrix.py` (Mapped to: `gate-trace`)
31
+ - `scripts/lib/trace-stories.py` (Mapped to: `trace-requirement`)
32
+
33
+ ### 3. Newspaper Metaphor (< 500 lines)
34
+ **Feature**: `cleancode.feature`
35
+ - **Reason**: Critical scripts exceeding the absolute 500-line hard cap.
36
+ - **Offending Files**:
37
+ - `scripts/sync-skills.sh` (Mapped to: `craft-skill`, `evolve-skill`)
38
+ - `scripts/migrate-version.sh` (Mapped to: `migrate-spec`)
39
+ - `scripts/lib/trace-matrix.py` (Mapped to: `gate-trace`)
40
+
41
+ ### 4. Boolean Encapsulation (G28)
42
+ **Feature**: `cleancode.feature`
43
+ - **Reason**: Complex, multi-clause bash conditional logic not encapsulated in named functions.
44
+ - **Offending Files**:
45
+ - `scripts/migrate-version.sh` (Mapped to: `migrate-spec`)
46
+ - `scripts/check-spec-version-gap.sh` (Mapped to: `plan-release`)
47
+
48
+ ## Restoration
49
+ After the test run concluded, the original `waivers.yaml` was restored to preserve environment integrity. No actual code modifications were made.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bigpowers",
3
- "version": "2.73.0",
3
+ "version": "2.73.2",
4
4
  "description": "73 agent skills synthesizing 17 years of software engineering discipline into a prescriptive methodology for solo developers",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -11,6 +11,9 @@
11
11
 
12
12
  set -euo pipefail
13
13
  source "$(dirname "${BASH_SOURCE[0]}")/lib/python-env.sh"
14
+ source "$(dirname "${BASH_SOURCE[0]}")/lib/skill-common.sh"
15
+ resolve_repo_root
16
+
14
17
 
15
18
  BLIND_SPOTS_JSON="$REPO_ROOT/specs/blind-spots.json"
16
19
  EXEC_STATUS="$REPO_ROOT/specs/execution-status.yaml"
@@ -30,6 +30,7 @@ MODE = sys.argv[6]
30
30
  # 1. Parse YAML files → story inventory
31
31
  # -----------------------------------------------------------------------
32
32
  _MIN_STORY_BASELINE = 50 # floor assertion: --strict FAILs if story count drops below this
33
+ _STRICT_UNIMPLEMENTED_STATUSES = frozenset({"backlog", "todo", "planned"})
33
34
 
34
35
  def _load_yaml(path: Path) -> dict:
35
36
  """Load a YAML file with PyYAML. Exits with code 1 if parse fails."""
@@ -290,10 +291,10 @@ if STRICT:
290
291
  wsjf_sorted = sorted(set(s["wsjf"] for s in matrix_stories), reverse=True)
291
292
  cutoff_idx = max(0, len(wsjf_sorted) // 4 - 1)
292
293
  p0_threshold = wsjf_sorted[cutoff_idx] if cutoff_idx < len(wsjf_sorted) else 0
293
- # Only flag non-backlog stories — backlog stories haven't been implemented yet
294
+ # Only flag stories expected to have implementation — skip backlog/todo/planned
294
295
  uncovered_p0 = [s["id"] for s in matrix_stories
295
296
  if s["wsjf"] >= p0_threshold and len(s["links"]) == 0
296
- and s["status"] != "backlog"]
297
+ and s["status"] not in _STRICT_UNIMPLEMENTED_STATUSES]
297
298
  if uncovered_p0:
298
299
  print(f"trace-stories.sh: STRICT FAIL — P0 stories with 0% coverage: {', '.join(uncovered_p0)}", file=sys.stderr)
299
300
  sys.exit(2)
@@ -1,9 +1,9 @@
1
1
  #!/usr/bin/env bash
2
- # story: e45s03
3
2
  # sync-bugs-registry.sh — rebuild specs/bugs/registry.yaml + OKF concept bundles
4
3
  set -euo pipefail
5
4
  source "$(dirname "${BASH_SOURCE[0]}")/lib/python-env.sh"
6
5
  source "$(dirname "${BASH_SOURCE[0]}")/lib/skill-common.sh"
6
+ resolve_repo_root
7
7
  BUGS="$REPO_ROOT/specs/bugs"
8
8
  mkdir -p "$BUGS"
9
9
 
@@ -18,6 +18,8 @@ repo_root = Path(sys.argv[2])
18
18
  # ---- Phase 1: Build registry.yaml ----
19
19
  entries = []
20
20
  for path in sorted(bugs_dir.glob("BUG-*.md")):
21
+ if ".okf" in path.name:
22
+ continue
21
23
  text = path.read_text(encoding="utf-8")
22
24
  if not text.startswith("---"):
23
25
  continue
@@ -0,0 +1,132 @@
1
+ #!/usr/bin/env bash
2
+ # test-trace-strict.sh — strict mode must not block unimplemented P0 stories
3
+ #
4
+ # Covers BUG-2026-07-06T205700:
5
+ # - todo/planned/backlog P0 stories with 0 links do not fail --strict
6
+ # - done P0 stories with 0 links still fail --strict
7
+ #
8
+ # Usage: bash scripts/test-trace-strict.sh
9
+
10
+ set -euo pipefail
11
+ source "$(dirname "${BASH_SOURCE[0]}")/lib/python-env.sh"
12
+ source "$(dirname "${BASH_SOURCE[0]}")/lib/skill-common.sh"
13
+ resolve_repo_root
14
+
15
+ RED='\033[0;31m'
16
+ GREEN='\033[0;32m'
17
+ NC='\033[0m'
18
+
19
+ TRACE_ENGINE="$REPO_ROOT/scripts/lib/trace-stories.py"
20
+ FAILURES=0
21
+
22
+ pass() { echo -e "${GREEN}PASS${NC} $1"; }
23
+ fail() { echo -e "${RED}FAIL${NC} $1"; FAILURES=$((FAILURES + 1)); }
24
+
25
+ run_strict() {
26
+ local root="$1"
27
+ local matrix_json
28
+ local trace_md
29
+ local okf_dir
30
+ matrix_json=$(mktemp)
31
+ trace_md=$(mktemp)
32
+ okf_dir=$(mktemp -d)
33
+ set +e
34
+ local output
35
+ output=$($PYTHON "$TRACE_ENGINE" "$root" "$matrix_json" "$trace_md" "$okf_dir" 1 "" 2>&1)
36
+ local exit_code=$?
37
+ set -e
38
+ rm -f "$matrix_json" "$trace_md"
39
+ rm -rf "$okf_dir"
40
+ printf '%s\n' "$output"
41
+ return "$exit_code"
42
+ }
43
+
44
+ write_fixture() {
45
+ local root="$1"
46
+ local done_story="${2:-}"
47
+
48
+ mkdir -p "$root/specs/epics/e99-test"
49
+ cat >"$root/specs/release-plan.yaml" <<'EOF'
50
+ release:
51
+ version: "1.0.0"
52
+ codename: "Strict Test"
53
+ status: "proposed"
54
+ epics:
55
+ - id: e99
56
+ title: "Strict Test Epic"
57
+ wsjf: 5.0
58
+ bcps: 51
59
+ mode: capsule
60
+ status: proposed
61
+ capsule_dir: epics/e99-test
62
+ EOF
63
+
64
+ {
65
+ echo "stories:"
66
+ for i in $(seq 1 51); do
67
+ sid=$(printf 'e99s%02d' "$i")
68
+ printf ' - id: %s\n title: "Story %d"\n bcp: 1\n' "$sid" "$i"
69
+ done
70
+ } >"$root/specs/epics/e99-test/epic.yaml"
71
+
72
+ {
73
+ echo "development_status:"
74
+ for i in $(seq 1 51); do
75
+ sid=$(printf 'e99s%02d' "$i")
76
+ if [[ -n "$done_story" && "$sid" == "$done_story" ]]; then
77
+ echo " $sid: done"
78
+ else
79
+ echo " $sid: todo"
80
+ fi
81
+ done
82
+ } >"$root/specs/execution-status.yaml"
83
+ }
84
+
85
+ echo "=== trace-strict: integration (real repo) ==="
86
+ set +e
87
+ bash "$REPO_ROOT/scripts/trace-stories.sh" --strict --json >/dev/null 2>&1
88
+ repo_exit=$?
89
+ set -e
90
+ if [[ $repo_exit -eq 0 ]]; then
91
+ pass "trace-stories.sh --strict exits 0 on repo"
92
+ else
93
+ fail "trace-stories.sh --strict exits $repo_exit on repo (expected 0)"
94
+ fi
95
+
96
+ echo ""
97
+ echo "=== trace-strict: fixture — all todo P0, 0 links ==="
98
+ FIXTURE_ROOT=$(mktemp -d)
99
+ trap 'rm -rf "$FIXTURE_ROOT"' EXIT
100
+ write_fixture "$FIXTURE_ROOT"
101
+ set +e
102
+ todo_output=$(run_strict "$FIXTURE_ROOT")
103
+ todo_exit=$?
104
+ set -e
105
+ if [[ $todo_exit -eq 0 ]]; then
106
+ pass "strict passes when P0 stories are todo with 0 links"
107
+ else
108
+ fail "strict exits $todo_exit on all-todo fixture (expected 0)"
109
+ echo "$todo_output"
110
+ fi
111
+
112
+ echo ""
113
+ echo "=== trace-strict: fixture — done P0 with 0 links ==="
114
+ write_fixture "$FIXTURE_ROOT" "e99s01"
115
+ set +e
116
+ done_output=$(run_strict "$FIXTURE_ROOT")
117
+ done_exit=$?
118
+ set -e
119
+ if [[ $done_exit -eq 2 ]] && grep -q "P0 stories with 0% coverage" <<<"$done_output"; then
120
+ pass "strict fails when a done P0 story has 0 links"
121
+ else
122
+ fail "strict exits $done_exit on done-dark fixture (expected 2 with P0 message)"
123
+ echo "$done_output"
124
+ fi
125
+
126
+ echo ""
127
+ if [[ $FAILURES -eq 0 ]]; then
128
+ echo "test-trace-strict: PASS"
129
+ exit 0
130
+ fi
131
+ echo "test-trace-strict: FAIL ($FAILURES failure(s))"
132
+ exit 1