bigpowers 2.87.0 → 2.87.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/README.md CHANGED
@@ -43,15 +43,17 @@ After installing, ask your agent to run the `using-bigpowers` skill — it is th
43
43
 
44
44
  ```bash
45
45
  # Global install (no lifecycle scripts — npm v10+ safe)
46
- npm install -g bigpowers
46
+ npm install -g bigpowers@latest
47
47
  bigpowers setup # runs sync + install, links skills to your tools
48
48
 
49
- # Or one-shot with npx
50
- npx bigpowers setup
49
+ # Or one-shot with npx (always fetches the newest release)
50
+ npx bigpowers@latest setup
51
51
  ```
52
52
 
53
53
  Both commands sync skill artifacts and link them to Claude Code, Gemini CLI, and Cursor (see [Prerequisites](#-prerequisites)).
54
54
 
55
+ > **Always pin `@latest`.** With bigpowers already installed globally, a bare `npx bigpowers setup` reuses the stale global binary and `npm update -g bigpowers` doesn't reliably cross to the newest release. `npm install -g bigpowers@latest` and `npx bigpowers@latest setup` force a registry fetch every time.
56
+
55
57
  ### Interactive Installer
56
58
 
57
59
  The `npx bigpowers setup` command launches an interactive menu where you can:
@@ -269,10 +271,11 @@ Or add manually to `.claude/settings.json`:
269
271
  **npm install:**
270
272
 
271
273
  ```bash
272
- npm update -g bigpowers
273
- bigpowers update # re-sync and refresh symlinks
274
+ bigpowers update # fetches bigpowers@latest (global installs), then re-syncs + refreshes symlinks
274
275
  ```
275
276
 
277
+ `bigpowers update` now runs `npm install -g bigpowers@latest` for you when bigpowers is installed globally, so running it alone is enough to reach the newest release. Prefer to do it by hand? `npm install -g bigpowers@latest && bigpowers update`. (Avoid `npm update -g bigpowers` — it does not reliably cross to `@latest`.)
278
+
276
279
  **git clone:**
277
280
 
278
281
  ```bash
@@ -301,9 +304,9 @@ bash scripts/install.sh --uninstall
301
304
  ### Reinstall
302
305
 
303
306
  ```bash
304
- npx bigpowers setup
307
+ npx bigpowers@latest setup
305
308
  # or, if installed globally:
306
- bigpowers setup
309
+ bigpowers update
307
310
  ```
308
311
 
309
312
  ---
@@ -0,0 +1,321 @@
1
+ # Validação Cruzada: Bigpowers vs. GSD (Get Shit Done)
2
+
3
+ **Data:** 2026-05-18
4
+ **Scope:** Comparar consolidação proposta com arquitetura de artefatos de GSD
5
+
6
+ ---
7
+
8
+ ## 1. Comparação de Estrutura
9
+
10
+ ### GSD (Get Shit Done)
11
+ ```
12
+ .planning/
13
+ ├── PROJECT.md ← Contexto do projeto (validado vs. em escopo)
14
+ ├── ROADMAP.md ← Fases + plans + success criteria
15
+ ├── STATE.md ← Estado atual (< 100 linhas)
16
+ ├── {phase}-{plan}-PLAN.md ← Planos individuais
17
+ └── todos/pending/ ← Ideias capturadas
18
+
19
+ templates/ ← 30+ templates
20
+ references/ ← 60+ docs de referência técnica
21
+ workflows/ ← 93+ workflows (comandos CLI)
22
+ ```
23
+
24
+ ### Bigpowers (Proposta de Consolidação)
25
+ ```
26
+ specs/
27
+ ├── STATE.md ← Estado atual (59 linhas) ✅
28
+ ├── RELEASE-PLAN.md ← Roadmap vivo ✅
29
+ ├── PLAN-v*.md ← Histórico → archive/ ✅
30
+ ├── archive/releases/ ← Novo: histórico consolidado
31
+ ├── CONTEXT.md, UBIQUITOUS_LANGUAGE.md, etc.
32
+ └── ...
33
+
34
+ SKILL-INDEX.md ← Novo: tabela canônica
35
+ README.md ← Simplificado
36
+ CONVENTIONS.md ← Existente
37
+ ```
38
+
39
+ ---
40
+
41
+ ## 2. Gap Analysis: O Que Falta em Bigpowers
42
+
43
+ ### 2.1 Falta: PROJECT.md (Contexto do Projeto)
44
+
45
+ **GSD tem:**
46
+ ```markdown
47
+ # PROJECT.md
48
+
49
+ ## What This Is
50
+ [Descrição atual do projeto]
51
+
52
+ ## Core Value
53
+ [Uma coisa que importa mais]
54
+
55
+ ## Requirements
56
+ - Validated (já enviado, comprovado)
57
+ - Active (em construção)
58
+ - Out of Scope (com razão do exclusão)
59
+
60
+ ## Context
61
+ [Background técnico e de usuário]
62
+
63
+ ## Constraints
64
+ [Limitações: stack, timeline, etc.]
65
+
66
+ ## Key Decisions
67
+ [Histórico de decisões significativas]
68
+ ```
69
+
70
+ **Bigpowers não tem equivalente.** Tem CLAUDE.md (comandos, stack, arquitetura), mas não tem:
71
+ - ❌ Requisitos (Validated/Active/Out of Scope)
72
+ - ❌ Core Value (a uma coisa que importa)
73
+ - ❌ Decisões significativas rastreadas
74
+ - ❌ Constraints formalizadas
75
+
76
+ **Recomendação:** Criar `specs/PROJECT.md` para bigpowers com:
77
+ - What This Is: "38 agent skills for spec-driven TDD by solo developers"
78
+ - Core Value: "Maintain quality (audit score) while scaling skill count"
79
+ - Active Requirements: Feature completeness, testing mandates, etc.
80
+ - Out of Scope: Domain-specific skills (scaffold-exercises), plugins, marketplace
81
+ - Key Decisions: verb-noun naming, local-first (sem GitHub issues), BMAD phases, etc.
82
+
83
+ ---
84
+
85
+ ### 2.2 ROADMAP.md vs. RELEASE-PLAN.md
86
+
87
+ **GSD usa ROADMAP.md:**
88
+ - Fases numeradas (1, 2, 3, ...)
89
+ - Decimal phases para inserts (2.1 = "critical fix inserted between 2 and 3")
90
+ - Success Criteria (observable behaviors)
91
+ - Plans count per phase
92
+ - Progress table com milestone column
93
+
94
+ **Bigpowers usa RELEASE-PLAN.md:**
95
+ - Releases (v1.11, v1.12, ...)
96
+ - WSJF scoring
97
+ - Status (✅, ⏳)
98
+ - Focus area (Benchmarks, Auditor, Karpathy, etc.)
99
+ - Detailed action items per release
100
+
101
+ **Análise:**
102
+ - ✅ RELEASE-PLAN.md é mais rico que ROADMAP (tem WSJF, status, detalhes)
103
+ - ✅ Ambas rastreiam progresso
104
+ - ⚠️ Bigpowers não tem "Success Criteria" formalizados (deveriam estar em STATE ou PROJECT)
105
+
106
+ **Recomendação:** Manter RELEASE-PLAN.md, mas adicionar "Success Criteria" por release:
107
+ ```markdown
108
+ ### v1.17.0 — Guardrails (WSJF 3.2) ⏳
109
+
110
+ **Success Criteria:**
111
+ - [ ] "Zoom-out mandate" implemented in plan-work as HARD-GATE
112
+ - [ ] Surgical changes checklist in audit-code passes 100% of tests
113
+ - [ ] CONVENTIONS.md explicitly forbids "touch unrelated code"
114
+ ```
115
+
116
+ ---
117
+
118
+ ### 2.3 Artefatos Intermediários (Templates)
119
+
120
+ **GSD tem 30+ templates:**
121
+ - AI-SPEC.md, DEBUG.md, VALIDATION.md
122
+ - discovery.md, research.md, spec.md
123
+ - planner-subagent-prompt.md
124
+ - continue-here.md
125
+
126
+ **Bigpowers tem:**
127
+ - Implícitos em cada skill (não há templates separados)
128
+ - Rely em CONVENTIONS.md
129
+
130
+ **Recomendação:** Criar `templates/` subdir em bigpowers:
131
+ ```
132
+ templates/
133
+ ├── spec.md (→ specs/PLAN.md output format)
134
+ ├── phase-discussion.md (→ output de elaborate-spec)
135
+ ├── diagnosis.md (→ output de investigate-bug)
136
+ └── ...
137
+ ```
138
+
139
+ ---
140
+
141
+ ### 2.4 Referências Técnicas (References)
142
+
143
+ **GSD tem 60+ references:**
144
+ - gates.md (quais gates bloquear, quais permitir)
145
+ - planner-antipatterns.md (o que não fazer)
146
+ - verification-patterns.md (como testar)
147
+ - thinking-models-*.md (modelos de pensamento por agente)
148
+ - tdd.md, executor-examples.md
149
+
150
+ **Bigpowers tem:**
151
+ - AUDIT.md (auditoria de cobertura de Clean Code)
152
+ - COMPARISON.md (comparação com superpowers, BMAD, etc.)
153
+ - Skills source em SKILL.md (inline docs)
154
+
155
+ **Recomendação:** Segregar em `references/`:
156
+ ```
157
+ references/
158
+ ├── clean-code-mapping.md (como cada skill implementa Clean Code)
159
+ ├── gates-and-guardrails.md (HARD-GATEs em cada skill)
160
+ ├── skill-antipatterns.md (o que não fazer em cada skill)
161
+ ├── bmad-lifecycle.md (phases BMAD detalhadas)
162
+ └── ...
163
+ ```
164
+
165
+ ---
166
+
167
+ ## 3. Validação: Minha Proposta vs. GSD
168
+
169
+ ### O Que Está Certo em Minha Proposta
170
+
171
+ ✅ **Hierarquia de artefatos**
172
+ - STATE → RELEASE-PLAN → SKILL-INDEX → README
173
+ - GSD faz: PROJECT → ROADMAP → STATE → PLAN
174
+ - Abordagens equivalentes, estilos diferentes
175
+
176
+ ✅ **Consolidação de redundância**
177
+ - Deletar PLAN.md (stale) ← mesma que GSD faria
178
+ - Arquivar PLAN-v*.md ← GSD collapsa em `<details>` tags
179
+ - Single skill index ← GSD não tem equivalent, é um win para bigpowers
180
+
181
+ ✅ **Nomes simples (verb-noun)**
182
+ - Bigpowers: `develop-tdd`, `validate-fix`, etc.
183
+ - GSD: `/gsd-new-project`, `/gsd-plan-phase`, etc. (verb-noun style)
184
+ - ✓ Bigpowers está bem aqui
185
+
186
+ ✅ **Clareza de fases (BMAD)**
187
+ - Bigpowers: Discover → Elaborate → Plan → Build → Sustain
188
+ - GSD: Phase 1, 2, 3, ... (fases numeradas)
189
+ - Ambas funcionam; BMAD é mais descritivo
190
+
191
+ ### O Que Está Incompleto em Minha Proposta
192
+
193
+ ❌ **Falta PROJECT.md**
194
+ - GSD começa aqui: "What This Is", "Core Value", "Requirements"
195
+ - Bigpowers tem CLAUDE.md, mas não `specs/PROJECT.md`
196
+ - **Ação:** Adicionar PROJECT.md como canônico de contexto do projeto
197
+
198
+ ❌ **Falta Success Criteria formalizados**
199
+ - GSD em ROADMAP: "Observable behaviors that must be TRUE"
200
+ - Bigpowers em RELEASE-PLAN: Apenas "Focus Area" e "Objective"
201
+ - **Ação:** Adicionar Success Criteria por release em RELEASE-PLAN.md
202
+
203
+ ❌ **Falta templates/ e references/**
204
+ - GSD segrega templates (30+) e references (60+)
205
+ - Bigpowers tem tudo inline em SKILL.md
206
+ - **Ação:** Opcional; se fizer, criar `templates/` e `references/` como em GSD
207
+
208
+ ❌ **Falta "Skill Antipatterns" ou "Gates"**
209
+ - GSD tem gates.md (quais gates bloquear)
210
+ - Bigpowers tem mandates em prose, não formalizados
211
+ - **Ação:** Criar `references/gates-and-guardrails.md`
212
+
213
+ ---
214
+
215
+ ## 4. Recomendação: Incorporar Melhores Práticas de GSD
216
+
217
+ ### Fase 1: Imediato (Incorporar em Análise/SKILL-INDEX)
218
+
219
+ - [ ] Criar `specs/PROJECT.md` com:
220
+ - What This Is
221
+ - Core Value
222
+ - Active Requirements
223
+ - Out of Scope
224
+ - Key Decisions (a tabela de ADRs existentes)
225
+
226
+ - [ ] Atualizar RELEASE-PLAN.md com Success Criteria por release
227
+
228
+ - [ ] Manter SKILL-INDEX.md como proposto (similar a nada em GSD, é um win único)
229
+
230
+ ### Fase 2: Médio Prazo (30 min de trabalho)
231
+
232
+ - [ ] Criar `templates/` com estruturas esperadas (spec.md, diagnosis.md, etc.)
233
+
234
+ - [ ] Criar `references/bmad-phases.md` (ciclo BMAD detalhado)
235
+
236
+ - [ ] Criar `references/gates-and-guardrails.md` (HARD-GATEs por skill)
237
+
238
+ ### Fase 3: Longo Prazo (Nice-to-Have)
239
+
240
+ - [ ] Criar `references/skill-antipatterns.md` (o que não fazer)
241
+
242
+ - [ ] Criar `references/clean-code-mapping.md` (como cada skill implementa Clean Code)
243
+
244
+ ---
245
+
246
+ ## 5. Tabela: Estrutura Final Recomendada
247
+
248
+ | Nível | Artefato | Propósito | GSD Equivalente |
249
+ |---|---|---|---|
250
+ | **Visão** | specs/PROJECT.md | Contexto, requisitos, decisões | PROJECT.md |
251
+ | **Roadmap** | specs/RELEASE-PLAN.md | Sequência de releases + success criteria | ROADMAP.md |
252
+ | **Estado** | specs/STATE.md | Posição atual (< 100 linhas) | STATE.md |
253
+ | **Skill Catalog** | SKILL-INDEX.md | Tabela canônica de 38 skills | (N/A em GSD) |
254
+ | **Templates** | templates/*.md | Estruturas esperadas | templates/ |
255
+ | **Referência** | references/*.md | Gates, antipatterns, ciclo BMAD | references/ |
256
+ | **Documentação** | README.md | Install, quickstart | README.md |
257
+ | **Convênios** | CONVENTIONS.md | Code, test, git, specs/ standards | CONVENTIONS.md |
258
+ | **Histórico** | specs/archive/releases/PLAN-v*.md | Planos completados | (Collapsed em ROADMAP) |
259
+
260
+ ---
261
+
262
+ ## 6. Validação Final: Aplicar ao Projeto Skills
263
+
264
+ **Antes (Atual):**
265
+ ```
266
+ PLAN.md (stale, 453 linhas)
267
+ ↓
268
+ specs/RELEASE-PLAN.md (vivo, 104 linhas)
269
+ ↓
270
+ specs/STATE.md (59 linhas) ✓
271
+ ↓
272
+ specs/PLAN-v*.md (16 arquivos, dispersos)
273
+ ↓
274
+ README.md (191 linhas, copia RELEASE-PLAN)
275
+ ```
276
+
277
+ **Depois (Proposto + GSD Best Practice):**
278
+ ```
279
+ specs/PROJECT.md (novo) ← Core Value, Requirements, Decisions
280
+ ↓
281
+ specs/RELEASE-PLAN.md (revisado) ← Roadmap + Success Criteria
282
+ ↓
283
+ specs/STATE.md (mantém) ← Current Position
284
+ ↓
285
+ SKILL-INDEX.md (novo) ← Tabela canônica
286
+ ↓
287
+ README.md (simplificado) ← Install, quickstart, link a SKILL-INDEX
288
+ ↓
289
+ templates/ (novo, opcional) ← Estruturas esperadas
290
+ references/ (novo, opcional) ← Gates, antipatterns, BMAD phases
291
+ ```
292
+
293
+ **Resultado:**
294
+ - ✅ Sem redundância entre PLAN.md, RELEASE-PLAN, README
295
+ - ✅ Hierarquia clara: PROJECT → RELEASE-PLAN → STATE → SKILL-INDEX
296
+ - ✅ Incorpora melhores práticas de GSD sem copiar excessivamente
297
+ - ✅ Nomes simples (verb-noun) mantidos
298
+ - ✅ Fases BMAD explícitas em PROJECT.md ou documento separado
299
+
300
+ ---
301
+
302
+ ## 7. Checklist Final
303
+
304
+ - [x] Minha análise identificou redundâncias corretas (PLAN.md, PLAN-v*.md, skill index)
305
+ - [x] Minha hierarquia proposta é consistente com GSD (STATE → ROADMAP → skills)
306
+ - [x] Faltou: PROJECT.md (contexto do projeto)
307
+ - [x] Faltou: Success Criteria formalizados
308
+ - [x] Faltou: templates/ e references/ (nice-to-have)
309
+ - [x] SKILL-INDEX.md é único valor adicionado vs. GSD (bom!)
310
+ - [x] Nomes simples e ciclo BMAD estão corretos
311
+ - [x] Recomendação: Incorporar PROJECT.md + Success Criteria antes de executar
312
+
313
+ ---
314
+
315
+ ## 8. Próximos Passos Imediatos
316
+
317
+ 1. ✅ Criar `specs/PROJECT.md` com estrutura de GSD
318
+ 2. ✅ Atualizar `specs/RELEASE-PLAN.md` com Success Criteria
319
+ 3. ✅ Finalmente: Deletar `PLAN.md`, arquivar `PLAN-v*.md`, simplificar README
320
+ 4. 📝 Opcional: Criar `templates/` e `references/` conforme GSD
321
+
package/bin/bigpowers.js CHANGED
@@ -29,6 +29,43 @@ function run(cmd, cwd = ROOT) {
29
29
  }
30
30
  }
31
31
 
32
+ // True when this copy runs from the global npm install (not a git clone or npx temp dir).
33
+ function isGlobalInstall() {
34
+ try {
35
+ const globalRoot = execSync('npm root -g', { encoding: 'utf8' }).trim();
36
+ return globalRoot && ROOT.startsWith(globalRoot);
37
+ } catch {
38
+ return false;
39
+ }
40
+ }
41
+
42
+ // `bigpowers update` used to only re-sync the already-installed files, so it never fetched
43
+ // a newer release. When we're the global install, pull the latest from npm first; the reinstall
44
+ // overwrites ROOT in place, so the setup.js required afterwards is the freshly installed one.
45
+ function selfUpdateGlobalPackage() {
46
+ if (!isGlobalInstall()) {
47
+ console.log('bigpowers: not a global npm install — skipping package self-update.');
48
+ console.log(' git clone → `git pull && npm run sync && bash scripts/install.sh`');
49
+ console.log(' one-shot → `npx bigpowers@latest setup`');
50
+ return;
51
+ }
52
+ console.log('bigpowers: fetching the latest release from npm (npm install -g bigpowers@latest)...');
53
+ try {
54
+ execSync('npm install -g bigpowers@latest', { stdio: 'inherit' });
55
+ } catch {
56
+ console.error('bigpowers: `npm install -g bigpowers@latest` failed — re-syncing the installed version instead.');
57
+ }
58
+ }
59
+
60
+ // Best-effort registry check; silent on any failure so offline/slow networks never block a command.
61
+ function latestPublishedVersion() {
62
+ try {
63
+ return execSync('npm view bigpowers version', { encoding: 'utf8', timeout: 4000 }).trim();
64
+ } catch {
65
+ return null;
66
+ }
67
+ }
68
+
32
69
  const cmd = process.argv[2];
33
70
 
34
71
  if (cmd === 'setup' || cmd === 'install') {
@@ -39,7 +76,8 @@ if (cmd === 'setup' || cmd === 'install') {
39
76
  }
40
77
 
41
78
  if (cmd === 'update') {
42
- // Delegate to interactive installer (same as setup)
79
+ // Pull the newest release first (global installs), then re-sync + refresh symlinks.
80
+ selfUpdateGlobalPackage();
43
81
  const setupScript = path.join(ROOT, 'bin', 'setup.js');
44
82
  require(setupScript);
45
83
  return;
@@ -51,6 +89,11 @@ if (cmd === 'status') {
51
89
  .filter(d => fs.lstatSync(path.join(os.homedir(), '.claude', 'skills', d)).isSymbolicLink())
52
90
  .length;
53
91
  console.log(`bigpowers v${pkg.version} — ${count} skills installed`);
92
+ const latest = latestPublishedVersion();
93
+ if (latest && latest !== pkg.version) {
94
+ console.log(`\n⬆️ A newer release is available: v${latest} (you have v${pkg.version}).`);
95
+ console.log(' Upgrade: npm install -g bigpowers@latest && bigpowers update');
96
+ }
54
97
  } else {
55
98
  console.log('bigpowers not installed. Run: bigpowers setup');
56
99
  }
@@ -63,8 +106,8 @@ bigpowers — agent skills for spec-driven, test-first development
63
106
 
64
107
  Commands:
65
108
  bigpowers setup Install skills into ~/.claude/skills/
66
- bigpowers update Re-run sync and install (after npm update -g bigpowers)
67
- bigpowers status Show installed version and skill count
109
+ bigpowers update Fetch the latest release (global installs) + re-sync and refresh symlinks
110
+ bigpowers status Show installed version and skill count (warns if a newer release exists)
68
111
  bigpowers help This message
69
112
  `);
70
113
  process.exit(0);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bigpowers",
3
- "version": "2.87.0",
3
+ "version": "2.87.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": {
@@ -18,7 +18,7 @@ partition() {
18
18
  git -C "$ROOT" log --no-merges "$range" \
19
19
  --pretty=format:"%at%x1f%H%x1f%(trailers:key=${key},valueonly,separator=%x2C)" \
20
20
  | sort -n \
21
- | awk -F '\x1f' -v IDLE="$IDLE_SECONDS" -v PAD="$PAD_SECONDS" '
21
+ | awk -v FS="$(printf '\037')" -v IDLE="$IDLE_SECONDS" -v PAD="$PAD_SECONDS" '
22
22
  {
23
23
  ts = $1 + 0; story = $3
24
24
  gsub(/[[:space:]]/, "", story)
@@ -90,7 +90,7 @@ cmd_report() {
90
90
  }
91
91
 
92
92
  cmd_append() {
93
- local range="HEAD" key="$STORY_KEY" story="" bcps="" merged_at="" file="$ROOT/specs/metrics/cycle-times.yaml"
93
+ local range="HEAD" key="$STORY_KEY" story="" bcps="" bcp_plus="" merged_at="" file="$ROOT/specs/metrics/cycle-times.yaml"
94
94
  local telemetry="" # path to harness telemetry JSON (GSD-2/gsd-pi format, optional)
95
95
  while [ $# -gt 0 ]; do
96
96
  case "$1" in
@@ -143,6 +143,8 @@ cmd_append() {
143
143
  agent_compression="null"; agent_tool_calls="null"; agent_api_requests="null"
144
144
  agent_duration_ms="null"; agent_model="null"; agent_tier="null"
145
145
  agent_downgraded="null"; agent_skills="[]"
146
+ agent_tokens_in="null"; agent_tokens_out="null"
147
+ agent_tokens_cache_read="null"; agent_tokens_cache_write="null"
146
148
 
147
149
  if [ -n "$telemetry" ] && [ -f "$telemetry" ]; then
148
150
  # GSD-2/gsd-pi snapshotUnitMetrics JSON format:
@@ -79,7 +79,13 @@ ste_extract_prose() {
79
79
 
80
80
  ste_count_words() {
81
81
  # shellcheck disable=SC2207
82
- local words=($1)
82
+ local words
83
+ # BUG-2026-08-05-ste-glob-wordcount: ($1) globs each word — a bare ** (markdown
84
+ # bold opener) expands to every file in cwd and inflates the count. Disable
85
+ # pathname expansion; safe here because this function only runs inside $( ).
86
+ set -f
87
+ words=($1)
88
+ set +f
83
89
  echo "${#words[@]}"
84
90
  }
85
91
 
@@ -168,6 +174,14 @@ name: fixture-long
168
174
  description: Long sentence fixture.
169
175
  ---
170
176
  Run the full local green stack including compliance verification gates sync skills trace stories and catalog drift check before any forward implementation work on this repository.
177
+ EOF
178
+
179
+ cat > "$tmp/good-bold.md" <<'EOF'
180
+ ---
181
+ name: fixture-bold
182
+ description: Bold markdown list fixture (BUG-2026-08-05-ste-glob-wordcount).
183
+ ---
184
+ 1. **Check dependencies first.** DO inspect what your current dependencies already do before writing your own code.
171
185
  EOF
172
186
 
173
187
  local saved_strict=$STRICT saved_audit=$AUDIT
@@ -181,6 +195,13 @@ EOF
181
195
  return 1
182
196
  fi
183
197
 
198
+ VIOLATIONS=0
199
+ ste_audit_file "$tmp/good-bold.md"
200
+ if (( VIOLATIONS > 0 )); then
201
+ echo "SELF-TEST FAIL: bold-markdown fixture should pass (glob word-count bug, BUG-2026-08-05)" >&2
202
+ return 1
203
+ fi
204
+
184
205
  VIOLATIONS=0
185
206
  ste_audit_file "$tmp/bad-hedge.md"
186
207
  if (( VIOLATIONS == 0 )); then