@daniellins/power-claude 0.17.0 → 0.17.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.
Files changed (237) hide show
  1. package/installer/motor-scripts.json +2 -6
  2. package/package.json +4 -2
  3. package/scripts/forge-harden-learning.cjs +5 -2
  4. package/scripts/validate-no-clone.cjs +31 -7
  5. package/scripts/__fixtures__/anti-path-demo/agents/ap-writer.md +0 -13
  6. package/scripts/__fixtures__/anti-path-demo/templates/write-tmpl.md +0 -7
  7. package/scripts/__fixtures__/anti-path-demo/workflows/wf-ap.smoke.json +0 -10
  8. package/scripts/__fixtures__/anti-path-demo/workflows/wf-ap.yaml +0 -25
  9. package/scripts/__fixtures__/assess-tier/retrofit-leve/pod/agents/content-chief.md +0 -1
  10. package/scripts/__fixtures__/assess-tier/retrofit-leve/pod/workflows/wf-criacao-redteam.yaml +0 -3
  11. package/scripts/__fixtures__/assess-tier/retrofit-leve/pod-spec.json +0 -13
  12. package/scripts/__fixtures__/fidelity/fake-green-average-in-band.yaml +0 -21
  13. package/scripts/__fixtures__/fidelity/fake-green-average.yaml +0 -18
  14. package/scripts/__fixtures__/fidelity/fake-green-denominator.yaml +0 -19
  15. package/scripts/__fixtures__/fidelity/fake-green-missing-evidence.yaml +0 -18
  16. package/scripts/__fixtures__/fidelity/fake-green-threshold.yaml +0 -18
  17. package/scripts/__fixtures__/fidelity/fake-green-weight.yaml +0 -18
  18. package/scripts/__fixtures__/fidelity/golden.yaml +0 -31
  19. package/scripts/__fixtures__/fidelity/trindade-incoherent.yaml +0 -15
  20. package/scripts/__fixtures__/forge-canonical/pod-spec-example.json +0 -37
  21. package/scripts/__fixtures__/migrate-squad/authored/agents/offer-engineer.md +0 -17
  22. package/scripts/__fixtures__/migrate-squad/authored/knowledge/no-source.md +0 -7
  23. package/scripts/__fixtures__/migrate-squad/authored/knowledge/value-stack-method.md +0 -8
  24. package/scripts/__fixtures__/migrate-squad/authored/specs/wf-sample.smoke.json +0 -24
  25. package/scripts/__fixtures__/migrate-squad/authored/specs/wf-sample.spec.json +0 -45
  26. package/scripts/__fixtures__/migrate-squad/legacy-squad/HEADLINE.md +0 -3
  27. package/scripts/__fixtures__/migrate-squad/legacy-squad/README.md +0 -4
  28. package/scripts/__fixtures__/migrate-squad/legacy-squad/agents/hormozi-offer.md +0 -14
  29. package/scripts/__fixtures__/migrate-squad/legacy-squad/checklists/dead-redundant.md +0 -4
  30. package/scripts/__fixtures__/migrate-squad/legacy-squad/checklists/method-guide.md +0 -6
  31. package/scripts/__fixtures__/migrate-squad/legacy-squad/checklists/veto-screen.md +0 -4
  32. package/scripts/__fixtures__/migrate-squad/legacy-squad/config/config.yaml +0 -2
  33. package/scripts/__fixtures__/migrate-squad/legacy-squad/data/case-library.md +0 -3
  34. package/scripts/__fixtures__/migrate-squad/legacy-squad/scripts/validate-mvn.py +0 -16
  35. package/scripts/__fixtures__/migrate-squad/legacy-squad/sops/sop-sample.md +0 -3
  36. package/scripts/__fixtures__/migrate-squad/legacy-squad/squad-io.yaml +0 -14
  37. package/scripts/__fixtures__/migrate-squad/legacy-squad/tasks/gather-context.md +0 -7
  38. package/scripts/__fixtures__/migrate-squad/legacy-squad/templates/output-tmpl.md +0 -5
  39. package/scripts/__fixtures__/migrate-squad/legacy-squad/workflows/wf-sample.yaml +0 -24
  40. package/scripts/__fixtures__/pipeline/pipelines/pipeline-checkpoint.yaml +0 -21
  41. package/scripts/__fixtures__/pipeline/pipelines/pipeline-demo.yaml +0 -22
  42. package/scripts/__fixtures__/pipeline/pods/pipe-a/agents/maker.md +0 -13
  43. package/scripts/__fixtures__/pipeline/pods/pipe-a/memory/learnings.consolidated.md +0 -8
  44. package/scripts/__fixtures__/pipeline/pods/pipe-a/memory/learnings.jsonl +0 -83
  45. package/scripts/__fixtures__/pipeline/pods/pipe-a/templates/make-tmpl.md +0 -8
  46. package/scripts/__fixtures__/pipeline/pods/pipe-a/workflows/wf-a.yaml +0 -16
  47. package/scripts/__fixtures__/pipeline/pods/pipe-b/agents/user.md +0 -13
  48. package/scripts/__fixtures__/pipeline/pods/pipe-b/memory/learnings.consolidated.md +0 -8
  49. package/scripts/__fixtures__/pipeline/pods/pipe-b/memory/learnings.jsonl +0 -14
  50. package/scripts/__fixtures__/pipeline/pods/pipe-b/templates/use-tmpl.md +0 -6
  51. package/scripts/__fixtures__/pipeline/pods/pipe-b/workflows/wf-b.yaml +0 -16
  52. package/scripts/__fixtures__/pod-run/agents/forge-chief.md +0 -13
  53. package/scripts/__fixtures__/pod-run/agents/pod-critic.md +0 -13
  54. package/scripts/__fixtures__/pod-run/templates/build-tmpl.md +0 -8
  55. package/scripts/__fixtures__/pod-run/templates/gate-tmpl.md +0 -6
  56. package/scripts/__fixtures__/pod-run/workflows/wf-min.yaml +0 -43
  57. package/scripts/__fixtures__/pod-run/workflows/wf-skip-modes.yaml +0 -50
  58. package/scripts/__fixtures__/pod-workflow/invalid-checkpoint-all-skippable.yaml +0 -30
  59. package/scripts/__fixtures__/pod-workflow/invalid-checkpoint-criteria-escalar-de-bloco.yaml +0 -40
  60. package/scripts/__fixtures__/pod-workflow/invalid-checkpoint-skip-mode-desconhecido.yaml +0 -30
  61. package/scripts/__fixtures__/pod-workflow/invalid-checkpoint-unknown-key.yaml +0 -29
  62. package/scripts/__fixtures__/pod-workflow/invalid-cycle.yaml +0 -26
  63. package/scripts/__fixtures__/pod-workflow/invalid-fix-loop-backedge.yaml +0 -29
  64. package/scripts/__fixtures__/pod-workflow/invalid-fix-loop-forward.yaml +0 -29
  65. package/scripts/__fixtures__/pod-workflow/invalid-handoff-open.yaml +0 -27
  66. package/scripts/__fixtures__/pod-workflow/invalid-knowledge-shape.yaml +0 -18
  67. package/scripts/__fixtures__/pod-workflow/invalid-missing-agent.yaml +0 -15
  68. package/scripts/__fixtures__/pod-workflow/invalid-missing-outputs.yaml +0 -15
  69. package/scripts/__fixtures__/pod-workflow/invalid-missing-template.yaml +0 -15
  70. package/scripts/__fixtures__/pod-workflow/invalid-missing-veto.yaml +0 -13
  71. package/scripts/__fixtures__/pod-workflow/invalid-template-not-on-disk.yaml +0 -16
  72. package/scripts/__fixtures__/pod-workflow/invalid-veto-prose.yaml +0 -17
  73. package/scripts/__fixtures__/pod-workflow/knowledge/a.md +0 -4
  74. package/scripts/__fixtures__/pod-workflow/knowledge/b.md +0 -4
  75. package/scripts/__fixtures__/pod-workflow/knowledge/c.md +0 -4
  76. package/scripts/__fixtures__/pod-workflow/templates/step-tmpl.md +0 -7
  77. package/scripts/__fixtures__/pod-workflow/valid-checkpoint-skip-modes.yaml +0 -29
  78. package/scripts/__fixtures__/pod-workflow/valid-fix-loop.yaml +0 -30
  79. package/scripts/__fixtures__/pod-workflow/valid-knowledge.yaml +0 -30
  80. package/scripts/__fixtures__/pod-workflow/valid-veto-always-true.yaml +0 -20
  81. package/scripts/__fixtures__/pod-workflow/valid.yaml +0 -27
  82. package/scripts/__fixtures__/sf17.3/criteria-baseline.json +0 -18
  83. package/scripts/__fixtures__/smoke-canary/agents/canary-reporter.md +0 -13
  84. package/scripts/__fixtures__/smoke-canary/agents/canary-researcher.md +0 -13
  85. package/scripts/__fixtures__/smoke-canary/agents/canary-synth.md +0 -13
  86. package/scripts/__fixtures__/smoke-canary/memory/learnings.consolidated.md +0 -10
  87. package/scripts/__fixtures__/smoke-canary/memory/learnings.jsonl +0 -448
  88. package/scripts/__fixtures__/smoke-canary/templates/report-tmpl.md +0 -9
  89. package/scripts/__fixtures__/smoke-canary/templates/research-tmpl.md +0 -7
  90. package/scripts/__fixtures__/smoke-canary/templates/synth-tmpl.md +0 -9
  91. package/scripts/__fixtures__/smoke-canary/workflows/wf-canary.smoke.json +0 -11
  92. package/scripts/__fixtures__/smoke-canary/workflows/wf-canary.yaml +0 -53
  93. package/scripts/__fixtures__/source-audit/fake-green-bronze-unsignaled.yaml +0 -10
  94. package/scripts/__fixtures__/source-audit/fake-green-counts.yaml +0 -9
  95. package/scripts/__fixtures__/source-audit/fake-green-missing-evidence.yaml +0 -9
  96. package/scripts/__fixtures__/source-audit/fake-green-unclassified.yaml +0 -10
  97. package/scripts/__fixtures__/source-audit/fake-green-verdict.yaml +0 -10
  98. package/scripts/__fixtures__/source-audit/golden-blocked.yaml +0 -10
  99. package/scripts/__fixtures__/source-audit/golden.yaml +0 -11
  100. package/scripts/__fixtures__/sweep-forms/agents/forms-count.md +0 -13
  101. package/scripts/__fixtures__/sweep-forms/agents/forms-field.md +0 -13
  102. package/scripts/__fixtures__/sweep-forms/agents/forms-fileref.md +0 -13
  103. package/scripts/__fixtures__/sweep-forms/agents/forms-json.md +0 -13
  104. package/scripts/__fixtures__/sweep-forms/agents/forms-section.md +0 -13
  105. package/scripts/__fixtures__/sweep-forms/specs/wf-forms.spec.json +0 -5
  106. package/scripts/__fixtures__/sweep-forms/templates/t_count.md +0 -5
  107. package/scripts/__fixtures__/sweep-forms/templates/t_field.md +0 -3
  108. package/scripts/__fixtures__/sweep-forms/templates/t_fileref.md +0 -3
  109. package/scripts/__fixtures__/sweep-forms/templates/t_json.md +0 -0
  110. package/scripts/__fixtures__/sweep-forms/templates/t_section.md +0 -3
  111. package/scripts/__fixtures__/sweep-forms/workflows/wf-forms.smoke.json +0 -13
  112. package/scripts/__fixtures__/sweep-forms/workflows/wf-forms.yaml +0 -67
  113. package/scripts/__fixtures__/validate-spec-coverage/cli-com-orfao.spec.md +0 -7
  114. package/scripts/__fixtures__/validate-spec-coverage/cli-sem-orfao.spec.md +0 -11
  115. package/scripts/__fixtures__/validate-spec-coverage/contract4-noorfao.spec.md +0 -11
  116. package/scripts/__fixtures__/validate-spec-coverage/contract4.spec.md +0 -11
  117. package/scripts/__fixtures__/validate-spec-coverage/contract4.story.md +0 -5
  118. package/scripts/__fixtures__/validate-spec-coverage/coverage3-a.story.md +0 -7
  119. package/scripts/__fixtures__/validate-spec-coverage/coverage3-b.story.md +0 -5
  120. package/scripts/__fixtures__/validate-spec-coverage/coverage3.spec.md +0 -9
  121. package/scripts/__fixtures__/validate-spec-coverage/deferido-mutant.spec.md +0 -7
  122. package/scripts/__fixtures__/validate-spec-coverage/deferido-positive.spec.md +0 -11
  123. package/scripts/__fixtures__/validate-spec-coverage/deferido-trip-a-no-marker.spec.md +0 -3
  124. package/scripts/__fixtures__/validate-spec-coverage/deferido-trip-b-empty.spec.md +0 -3
  125. package/scripts/__fixtures__/validate-spec-coverage/deferido-trip-c-badanchor.spec.md +0 -5
  126. package/scripts/__fixtures__/validate-spec-coverage/deferido-trip-d-fenced.spec.md +0 -11
  127. package/scripts/__fixtures__/validate-spec-coverage/deferido-trip-e-dangling.spec.md +0 -3
  128. package/scripts/__fixtures__/validate-spec-coverage/dup-fr3.spec.md +0 -11
  129. package/scripts/__fixtures__/validate-spec-coverage/fr6-semantic.spec.md +0 -5
  130. package/scripts/__fixtures__/validate-spec-coverage/fr6-semantic.story.md +0 -7
  131. package/scripts/__fixtures__/validate-spec-coverage/rastreio-precision.story.md +0 -19
  132. package/scripts/__fixtures__/validate-spec-coverage-corpus/sf17-fatia2-covered-786b82a/README.txt +0 -3
  133. package/scripts/__fixtures__/validate-spec-coverage-corpus/sf17-fatia2-covered-786b82a/SPEC-linguagem-clara-fatia2.md +0 -174
  134. package/scripts/__fixtures__/validate-spec-coverage-corpus/sf17-fatia2-covered-786b82a/sf17.2.story.md +0 -275
  135. package/scripts/__fixtures__/validate-spec-coverage-corpus/sf17-fatia2-covered-786b82a/sf17.3.story.md +0 -244
  136. package/scripts/__fixtures__/validate-spec-coverage-corpus/sf17-fatia2-frozen-786b82a/README.txt +0 -7
  137. package/scripts/__fixtures__/validate-spec-coverage-corpus/sf17-fatia2-frozen-786b82a/SPEC-linguagem-clara-fatia2.md +0 -174
  138. package/scripts/__fixtures__/validate-spec-coverage-corpus/sf17-fatia2-frozen-786b82a/sf17.2.story.md +0 -275
  139. package/scripts/__fixtures__/validate-spec-coverage-corpus/sf17-fatia2-frozen-786b82a/sf17.3.story.md +0 -242
  140. package/scripts/__fixtures__/validate-story-acs-corpus/corpus-1-noop-state-json.fixture.md +0 -18
  141. package/scripts/__fixtures__/validate-story-acs-corpus/corpus-2-crash-buildworkflowyaml.fixture.md +0 -26
  142. package/scripts/__fixtures__/validate-story-acs-corpus/corpus-3-nasce-verde-skip-modes.fixture.md +0 -29
  143. package/scripts/__fixtures__/validate-story-acs-corpus/corpus-4-guarda-sem-irmao.fixture.md +0 -17
  144. package/scripts/__fixtures__/validate-story-acs-corpus/corpus-5a-diff-stat-sem-guarda.fixture.md +0 -17
  145. package/scripts/__fixtures__/validate-story-acs-corpus/corpus-5b-test-f-sobre-diretorio.fixture.md +0 -20
  146. package/scripts/__fixtures__/veto-checks/copy-clean.md +0 -4
  147. package/scripts/__fixtures__/veto-checks/copy-dashes.md +0 -4
  148. package/scripts/__fixtures__/veto-checks/n8n-bad.md +0 -18
  149. package/scripts/__fixtures__/veto-checks/n8n-ok.md +0 -22
  150. package/scripts/__fixtures__/veto-checks/page-bad.html +0 -7
  151. package/scripts/__fixtures__/veto-checks/phash/copy.png +0 -0
  152. package/scripts/__fixtures__/veto-checks/phash/distinct.png +0 -0
  153. package/scripts/__fixtures__/veto-checks/phash/distinct2.png +0 -0
  154. package/scripts/__fixtures__/veto-checks/phash/make-fixtures.cjs +0 -203
  155. package/scripts/__fixtures__/veto-checks/phash/ref.png +0 -0
  156. package/scripts/__fixtures__/veto-checks/slide-ok.html +0 -15
  157. package/scripts/__fixtures__/veto-checks/slide-overflow.html +0 -14
  158. package/scripts/__fixtures__/veto-checks/sweep-pod/agents/vc-checker.md +0 -13
  159. package/scripts/__fixtures__/veto-checks/sweep-pod/templates/check-tmpl.md +0 -6
  160. package/scripts/__fixtures__/veto-checks/sweep-pod/workflows/wf-vc.smoke.json +0 -10
  161. package/scripts/__fixtures__/veto-checks/sweep-pod/workflows/wf-vc.yaml +0 -19
  162. package/scripts/__fixtures__/voz-do-dono/README.md +0 -23
  163. package/scripts/__fixtures__/voz-do-dono/dono-escalar.yaml +0 -9
  164. package/scripts/__fixtures__/voz-do-dono/dono-guia.yaml +0 -10
  165. package/scripts/__fixtures__/voz-do-dono/peca-3a-pessoa.md +0 -6
  166. package/scripts/__fixtures__/voz-do-dono/peca-com-lexico-proibido.md +0 -6
  167. package/scripts/__fixtures__/voz-do-dono/peca-limpa-1a-pessoa.md +0 -6
  168. package/scripts/__tests__/derive-ready-transitions.test.cjs +0 -269
  169. package/scripts/__tests__/enforce-cycle-authority.test.cjs +0 -869
  170. package/scripts/__tests__/enforce-git-push-authority.test.cjs +0 -988
  171. package/scripts/__tests__/enforce-ready-oracles.test.cjs +0 -745
  172. package/scripts/__tests__/forge-register-entry-point.test.cjs +0 -91
  173. package/scripts/__tests__/motor-scripts.test.cjs +0 -339
  174. package/scripts/__tests__/pc-run-pod-apply-production.test.cjs +0 -283
  175. package/scripts/__tests__/pc-run-pod-content-carousel-b2.test.cjs +0 -208
  176. package/scripts/__tests__/pc-run-pod-content-carousel.test.cjs +0 -219
  177. package/scripts/__tests__/pc-run-pod-counter.test.cjs +0 -58
  178. package/scripts/__tests__/pc-run-pod-describe.test.cjs +0 -158
  179. package/scripts/__tests__/pc-run-pod-non-carousel-b2.test.cjs +0 -227
  180. package/scripts/__tests__/pc-run-pod-render-criteria.test.cjs +0 -270
  181. package/scripts/__tests__/pc-run-pod-resolve.test.cjs +0 -150
  182. package/scripts/__tests__/pc-run-pod-tokens.test.cjs +0 -178
  183. package/scripts/__tests__/pc-run-pod.test.cjs +0 -607
  184. package/scripts/__tests__/spec-wf-criteria-sync.test.cjs +0 -171
  185. package/scripts/__tests__/validate-pod-workflow.test.cjs +0 -90
  186. package/scripts/__tests__/validate-spec-coverage.test.cjs +0 -239
  187. package/scripts/__tests__/validate-story-acs.test.cjs +0 -607
  188. package/scripts/anti-path.test.cjs +0 -163
  189. package/scripts/arena.test.cjs +0 -213
  190. package/scripts/brief-leitura-obrigatoria.test.cjs +0 -366
  191. package/scripts/build-public-tree.cjs +0 -372
  192. package/scripts/consolidate-knowledge-runner.test.cjs +0 -249
  193. package/scripts/default-funcional.test.cjs +0 -153
  194. package/scripts/derive-ready-transitions.cjs +0 -361
  195. package/scripts/forge-additive.test.cjs +0 -158
  196. package/scripts/forge-assess-tier.test.cjs +0 -114
  197. package/scripts/forge-canonical.test.cjs +0 -624
  198. package/scripts/forge-harden-learning.test.cjs +0 -242
  199. package/scripts/forge.test.cjs +0 -609
  200. package/scripts/harden-knowledge.test.cjs +0 -612
  201. package/scripts/harness-g5-lite.test.cjs +0 -134
  202. package/scripts/hn-carousel-contrato-entrada.test.cjs +0 -96
  203. package/scripts/migrate-squad-orchestration.test.cjs +0 -146
  204. package/scripts/migration-manifest-sf3.2.test.cjs +0 -382
  205. package/scripts/migration-manifest-sf3.3.test.cjs +0 -170
  206. package/scripts/migration-manifest-sf5.5.test.cjs +0 -189
  207. package/scripts/migration-manifest.test.cjs +0 -186
  208. package/scripts/npm-scope-invocation.test.cjs +0 -194
  209. package/scripts/owner-layer.cjs +0 -442
  210. package/scripts/owner-layer.test.cjs +0 -358
  211. package/scripts/pc-run-pipeline.test.cjs +0 -256
  212. package/scripts/pc-run-pod-countgte.test.cjs +0 -66
  213. package/scripts/phash-gate.test.cjs +0 -433
  214. package/scripts/pod-export-compile.test.cjs +0 -312
  215. package/scripts/pod-export-executor.test.cjs +0 -1344
  216. package/scripts/pod-export-hardening.test.cjs +0 -531
  217. package/scripts/pod-export-postprocess.test.cjs +0 -560
  218. package/scripts/pod-export-queue-race.test.cjs +0 -865
  219. package/scripts/pod-export-release.test.cjs +0 -267
  220. package/scripts/pod-export-service.test.cjs +0 -491
  221. package/scripts/pod-export-ui.test.cjs +0 -301
  222. package/scripts/pod-memory-budget.test.cjs +0 -309
  223. package/scripts/pod-memory-note.test.cjs +0 -452
  224. package/scripts/pod-memory.test.cjs +0 -951
  225. package/scripts/render-png.test.cjs +0 -307
  226. package/scripts/smoke-isolation.test.cjs +0 -100
  227. package/scripts/smoke-sweep.test.cjs +0 -170
  228. package/scripts/validate-adopt.js +0 -235
  229. package/scripts/validate-branding.js +0 -100
  230. package/scripts/validate-fidelity-output.test.cjs +0 -101
  231. package/scripts/validate-git-vetor.cjs +0 -99
  232. package/scripts/validate-install.js +0 -230
  233. package/scripts/validate-no-clone.test.cjs +0 -77
  234. package/scripts/validate-source-audit.test.cjs +0 -90
  235. package/scripts/validate-spec-coverage.cjs +0 -364
  236. package/scripts/validate-update-scope-motor.js +0 -421
  237. package/scripts/veto-checks.test.cjs +0 -223
@@ -86,12 +86,6 @@
86
86
  "owner": "pod:squad-forge",
87
87
  "reason": "referenced"
88
88
  },
89
- {
90
- "path": "scripts/validate-branding.js",
91
- "owner": "pod:squad-forge",
92
- "reason": "require-dependency",
93
- "requiredBy": "scripts/validate-no-clone.cjs"
94
- },
95
89
  {
96
90
  "path": "scripts/validate-budgets.js",
97
91
  "owner": "pods:*",
@@ -197,7 +191,9 @@
197
191
  "owner-layer.cjs",
198
192
  "derive-ready-transitions.cjs",
199
193
  "validate-git-vetor.cjs",
194
+ "validate-branding.js",
200
195
  "build-public-tree.cjs",
196
+ "gen-dist-ignore.cjs",
201
197
  "validate-spec-coverage.cjs"
202
198
  ]
203
199
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@daniellins/power-claude",
3
- "version": "0.17.0",
3
+ "version": "0.17.1",
4
4
  "description": "Lean, budget-gated agent framework for Claude Code — pods by job-to-be-done",
5
5
  "author": "Daniel Lins",
6
6
  "license": "MIT",
@@ -28,7 +28,9 @@
28
28
  "scripts"
29
29
  ],
30
30
  "scripts": {
31
- "test": "node scripts/validate-install.js && node scripts/validate-adopt.js && node scripts/validate-update-scope-motor.js && node scripts/__tests__/validate-pod-workflow.test.cjs && node scripts/__tests__/pc-run-pod.test.cjs && node scripts/__tests__/pc-run-pod-tokens.test.cjs && node scripts/__tests__/pc-run-pod-describe.test.cjs && node scripts/__tests__/pc-run-pod-resolve.test.cjs && node scripts/__tests__/pc-run-pod-render-criteria.test.cjs && node scripts/__tests__/pc-run-pod-apply-production.test.cjs && node scripts/__tests__/pc-run-pod-content-carousel.test.cjs && node scripts/__tests__/pc-run-pod-content-carousel-b2.test.cjs && node scripts/__tests__/pc-run-pod-non-carousel-b2.test.cjs && node scripts/__tests__/pc-run-pod-counter.test.cjs && node scripts/pc-run-pod-countgte.test.cjs && node scripts/forge.test.cjs && node scripts/forge-assess-tier.test.cjs && node scripts/forge-additive.test.cjs && node scripts/forge-canonical.test.cjs && node scripts/__tests__/forge-register-entry-point.test.cjs && node scripts/migration-manifest.test.cjs && node scripts/migration-manifest-sf3.2.test.cjs && node scripts/migration-manifest-sf3.3.test.cjs && node scripts/migration-manifest-sf5.5.test.cjs && node scripts/validate-no-clone.test.cjs && node scripts/migrate-squad-orchestration.test.cjs && node scripts/pod-memory.test.cjs && node scripts/pod-memory-budget.test.cjs && node scripts/pod-memory-note.test.cjs && node scripts/forge-harden-learning.test.cjs && node scripts/harden-knowledge.test.cjs && node scripts/consolidate-knowledge-runner.test.cjs && node scripts/smoke-pod-workflow.cjs scripts/__fixtures__/smoke-canary/workflows/wf-canary.yaml && node scripts/smoke-sweep.test.cjs && node scripts/smoke-isolation.test.cjs && node scripts/harness-g5-lite.test.cjs && node scripts/__tests__/motor-scripts.test.cjs && node scripts/validate-fidelity-output.test.cjs && node scripts/validate-source-audit.test.cjs && node scripts/arena.test.cjs && node scripts/veto-checks.test.cjs && node scripts/phash-gate.test.cjs && node scripts/render-png.test.cjs && node scripts/hn-carousel-contrato-entrada.test.cjs && node scripts/anti-path.test.cjs && node scripts/brief-leitura-obrigatoria.test.cjs && node scripts/pc-run-pipeline.test.cjs && node scripts/pod-export-compile.test.cjs && node scripts/pod-export-executor.test.cjs && node scripts/pod-export-postprocess.test.cjs && node scripts/pod-export-release.test.cjs && node scripts/pod-export-service.test.cjs && node scripts/pod-export-ui.test.cjs && node scripts/pod-export-hardening.test.cjs && node scripts/pod-export-queue-race.test.cjs && node scripts/npm-scope-invocation.test.cjs && node scripts/default-funcional.test.cjs && node scripts/owner-layer.test.cjs && node scripts/__tests__/enforce-cycle-authority.test.cjs && node scripts/__tests__/enforce-git-push-authority.test.cjs && node scripts/__tests__/validate-story-acs.test.cjs && node scripts/__tests__/validate-spec-coverage.test.cjs && node scripts/__tests__/spec-wf-criteria-sync.test.cjs && node scripts/__tests__/enforce-ready-oracles.test.cjs && node scripts/__tests__/derive-ready-transitions.test.cjs && node installer/__tests__/doctor-ready-oracles.test.cjs && node installer/__tests__/merge-settings.test.cjs",
31
+ "test": "node scripts/validate-install.js && node scripts/validate-adopt.js && node scripts/validate-update-scope-motor.js && node scripts/__tests__/validate-pod-workflow.test.cjs && node scripts/__tests__/pc-run-pod.test.cjs && node scripts/__tests__/pc-run-pod-tokens.test.cjs && node scripts/__tests__/pc-run-pod-describe.test.cjs && node scripts/__tests__/pc-run-pod-resolve.test.cjs && node scripts/__tests__/pc-run-pod-render-criteria.test.cjs && node scripts/__tests__/pc-run-pod-apply-production.test.cjs && node scripts/__tests__/pc-run-pod-content-carousel.test.cjs && node scripts/__tests__/pc-run-pod-content-carousel-b2.test.cjs && node scripts/__tests__/pc-run-pod-non-carousel-b2.test.cjs && node scripts/__tests__/pc-run-pod-counter.test.cjs && node scripts/pc-run-pod-countgte.test.cjs && node scripts/forge.test.cjs && node scripts/forge-assess-tier.test.cjs && node scripts/forge-additive.test.cjs && node scripts/forge-canonical.test.cjs && node scripts/__tests__/forge-register-entry-point.test.cjs && node scripts/migration-manifest.test.cjs && node scripts/migration-manifest-sf3.2.test.cjs && node scripts/migration-manifest-sf3.3.test.cjs && node scripts/migration-manifest-sf5.5.test.cjs && node scripts/validate-no-clone.test.cjs && node scripts/migrate-squad-orchestration.test.cjs && node scripts/pod-memory.test.cjs && node scripts/pod-memory-budget.test.cjs && node scripts/pod-memory-note.test.cjs && node scripts/forge-harden-learning.test.cjs && node scripts/harden-knowledge.test.cjs && node scripts/consolidate-knowledge-runner.test.cjs && node scripts/smoke-pod-workflow.cjs scripts/__fixtures__/smoke-canary/workflows/wf-canary.yaml && node scripts/smoke-sweep.test.cjs && node scripts/smoke-isolation.test.cjs && node scripts/harness-g5-lite.test.cjs && node scripts/__tests__/motor-scripts.test.cjs && node scripts/validate-fidelity-output.test.cjs && node scripts/validate-source-audit.test.cjs && node scripts/arena.test.cjs && node scripts/veto-checks.test.cjs && node scripts/phash-gate.test.cjs && node scripts/render-png.test.cjs && node scripts/hn-carousel-contrato-entrada.test.cjs && node scripts/anti-path.test.cjs && node scripts/brief-leitura-obrigatoria.test.cjs && node scripts/pc-run-pipeline.test.cjs && node scripts/pod-export-compile.test.cjs && node scripts/pod-export-executor.test.cjs && node scripts/pod-export-postprocess.test.cjs && node scripts/pod-export-release.test.cjs && node scripts/pod-export-service.test.cjs && node scripts/pod-export-ui.test.cjs && node scripts/pod-export-hardening.test.cjs && node scripts/pod-export-queue-race.test.cjs && node scripts/npm-scope-invocation.test.cjs && node scripts/default-funcional.test.cjs && node scripts/owner-layer.test.cjs && node scripts/__tests__/enforce-cycle-authority.test.cjs && node scripts/__tests__/enforce-git-push-authority.test.cjs && node scripts/__tests__/validate-story-acs.test.cjs && node scripts/__tests__/validate-spec-coverage.test.cjs && node scripts/__tests__/spec-wf-criteria-sync.test.cjs && node scripts/__tests__/enforce-ready-oracles.test.cjs && node scripts/__tests__/derive-ready-transitions.test.cjs && node installer/__tests__/doctor-ready-oracles.test.cjs && node installer/__tests__/merge-settings.test.cjs && node scripts/__tests__/dist-tarball-boundary.test.cjs && node scripts/__tests__/build-public-tree-scripts.test.cjs",
32
+ "prepack": "node scripts/gen-dist-ignore.cjs",
33
+ "prepublishOnly": "node scripts/gen-dist-ignore.cjs",
32
34
  "validate": "node scripts/validate-budgets.js template/pods template/.claude/agents && node scripts/validate-branding.js && node scripts/validate-no-clone.cjs template && node scripts/validate-git-vetor.cjs"
33
35
  }
34
36
  }
@@ -79,7 +79,7 @@ const { spawnSync } = require('node:child_process');
79
79
  const podMemory = require('./pod-memory.cjs');
80
80
  const { generatePod, stepsFromSpec, slug } = require('./forge-generate.cjs');
81
81
  const { VETO_TYPES, parseYaml } = require('./validate-pod-workflow.cjs');
82
- const { scanClone, deriveDenylist } = require('./validate-no-clone.cjs');
82
+ const { scanClone, deriveDenylist, readInstanceSeedTerms } = require('./validate-no-clone.cjs');
83
83
 
84
84
  const REPO_ROOT = path.resolve(__dirname, '..');
85
85
  const VETO_CHECKS_ROOT = path.join(REPO_ROOT, 'scripts', 'veto-checks');
@@ -619,7 +619,10 @@ function hardenKnowledge(args) {
619
619
  // Determinístico, sem limiar: prosa nova que encarne um mind ou cite token de
620
620
  // squad sem citação reprova. (A regra 4, knowledge-sem-fonte, fica FORA por
621
621
  // decisão — DF-SF10.10-2.1: reprova 4/5 knowledge reais, inclusive o caso motivador.)
622
- const cloneViolations = scanClone(targetAbs, deriveDenylist(null));
622
+ // ADR-041 D2: o seed vem da denylist EXTERNA opcional de instância (não mais de
623
+ // um `require` de validate-branding.js). Ausente → [], e a proveniência ainda é
624
+ // provada pela derivação por squad-source onde aplicável.
625
+ const cloneViolations = scanClone(targetAbs, deriveDenylist(null, readInstanceSeedTerms()));
623
626
  if (cloneViolations.length > 0) {
624
627
  const detail = cloneViolations.slice(0, 5)
625
628
  .map((v) => `${v.rule} (linha ${v.line}): "${v.term}" — ${v.text}`).join('; ');
@@ -15,7 +15,13 @@
15
15
  * - `source_mind` do squad-io.yaml legado (+ sobrenome/token ≥5 chars);
16
16
  * - nome do squad;
17
17
  * - prefixos dos agentes legados (agents/<prefixo>-*.md);
18
- * - + FORBIDDEN_TERMS de validate-branding.js (fonte única, importada).
18
+ * - + `seedTerms` OPCIONAIS por parâmetro (ADR-041 D2): dado de INSTÂNCIA, lido
19
+ * de um arquivo de denylist externo (`.power-claude/clone-denylist.txt` ou
20
+ * `$PC_CLONE_DENYLIST`) quando presente. Este runtime NÃO importa mais
21
+ * `validate-branding.js` — o detector de branding (que carrega as literais de
22
+ * terceiros por natureza) é gate REPO-ONLY, não dependência distribuída. Numa
23
+ * instalação de terceiro sem esse arquivo, `seedTerms` é `[]` e o lint recai
24
+ * só sobre a derivação do squad do próprio usuário — sem perda funcional.
19
25
  *
20
26
  * Regras de FAIL:
21
27
  * 1. IDENTIDADE (E.1.2) — token na denylist em filename, `name:`/`description:`
@@ -38,9 +44,12 @@
38
44
 
39
45
  const fs = require('node:fs');
40
46
  const path = require('node:path');
41
- const { FORBIDDEN_TERMS } = require('./validate-branding.js');
42
47
 
43
48
  const REPO_ROOT = path.resolve(__dirname, '..');
49
+ // Denylist EXTERNA opcional de INSTÂNCIA (ADR-041 D2): dado de instância, NÃO
50
+ // empacotado (fora de `package.json:files`, gitignored sob `.power-claude/`). Um
51
+ // termo por linha; linhas vazias e `#...` ignoradas.
52
+ const INSTANCE_DENYLIST_REL = path.join('.power-claude', 'clone-denylist.txt');
44
53
  const CITATION_MARKERS = [/>\s*Fonte:/i, /\[SOURCE:/i, /\bFonte:/i];
45
54
  const PERSONA_VERBS = ['você é', 'voce e', 'encarne', 'persona de', 'atue como', 'incorpore o mind', 'assuma a persona'];
46
55
 
@@ -65,9 +74,24 @@ function collectFiles(target) {
65
74
  return out.sort();
66
75
  }
67
76
 
68
- /** Deriva a denylist do squad-fonte (E.1.1) — sem lista mágica. */
69
- function deriveDenylist(squadSource) {
70
- const terms = new Set(FORBIDDEN_TERMS.map((t) => t.toLowerCase()));
77
+ /**
78
+ * Lê os termos-semente da denylist EXTERNA opcional de instância (ADR-041 D2).
79
+ * Origem: env `PC_CLONE_DENYLIST` (path explícito) OU `<root>/.power-claude/
80
+ * clone-denylist.txt`. Ausente → `[]` (instalação de terceiro nova: o lint recai
81
+ * só sobre a derivação do squad do usuário). Um termo por linha; `#...`/vazias fora.
82
+ */
83
+ function readInstanceSeedTerms(root = REPO_ROOT) {
84
+ const file = process.env.PC_CLONE_DENYLIST || path.join(root, INSTANCE_DENYLIST_REL);
85
+ if (!fs.existsSync(file)) return [];
86
+ return fs.readFileSync(file, 'utf8')
87
+ .split(/\r?\n/)
88
+ .map((l) => l.trim())
89
+ .filter((l) => l && !l.startsWith('#'));
90
+ }
91
+
92
+ /** Deriva a denylist do squad-fonte (E.1.1) — sem lista mágica; seed por parâmetro (E1.2). */
93
+ function deriveDenylist(squadSource, seedTerms = []) {
94
+ const terms = new Set(seedTerms.map((t) => t.toLowerCase()));
71
95
  if (!squadSource) return terms;
72
96
  const abs = path.isAbsolute(squadSource) ? squadSource : path.join(REPO_ROOT, squadSource);
73
97
  // source_mind + squad name do squad-io.yaml.
@@ -184,7 +208,7 @@ function parseArgs(argv) {
184
208
 
185
209
  function run(argv) {
186
210
  const { targets, knowledge, squadSource } = parseArgs(argv);
187
- const terms = deriveDenylist(squadSource);
211
+ const terms = deriveDenylist(squadSource, readInstanceSeedTerms());
188
212
  const violations = [];
189
213
  for (const target of targets) {
190
214
  for (const file of collectFiles(target)) {
@@ -215,6 +239,6 @@ function main() {
215
239
  process.exit(0);
216
240
  }
217
241
 
218
- module.exports = { run, deriveDenylist, scanClone, scanKnowledge, hasCitation };
242
+ module.exports = { run, deriveDenylist, readInstanceSeedTerms, scanClone, scanKnowledge, hasCitation };
219
243
 
220
244
  if (require.main === module) main();
@@ -1,13 +0,0 @@
1
- ---
2
- name: ap-writer
3
- description: "Agente de FIXTURE da etapa \"write\" de anti-path-demo. Existe para satisfazer a leitura obrigatória da etapa (SF11.2/ADR-021 DF-SF11.2-4): agente declarado no wf tem de existir em disco."
4
- model: sonnet
5
- budget_tokens: 200
6
- ---
7
-
8
- # ap-writer — agente de fixture (etapa "write")
9
-
10
- Fixture de teste, não é agente de produção. O conteúdo é irrelevante para as provas
11
- que usam este pod; o que importa é que o arquivo EXISTA, porque desde a Story SF11.2
12
- o runner resolve e verifica `agents/<step.agent>.md` antes de despachar a etapa, e o
13
- validador estático checa a mesma existência (paridade com `pod-export-compile.cjs:214`).
@@ -1,7 +0,0 @@
1
- # Artefato da etapa `write`
2
-
3
- ## Body
4
-
5
- Texto do post. A FORMA (`## Body`) é verificada por checkTemplateConformance; o
6
- anti-padrão mecanizado "não usar travessão" é enforçado pelo veto `command_check`
7
- (lexical-check.cjs) pareado por `mechanized_by`.
@@ -1,10 +0,0 @@
1
- {
2
- "_comment": "Sidecar do wf-ap (SF7.3). 'artifacts' = conforme (passa template E o veto lexical do anti-padrão mecanizado). 'violations' = artefato que viola o anti-padrão mecanizado (tem travessão) — o command_check pareado BLOQUEIA, provando que o item mecanizado de anti_path tem teeth reais.",
3
- "target_step": "write",
4
- "artifacts": {
5
- "write": "## Body\n\nTexto do post sem travessao, direto e limpo. Passa no lexical.\n"
6
- },
7
- "violations": {
8
- "write": "## Body\n\nTexto do post com travessao — bem aqui — que o anti-padrao mecanizado bloqueia.\n"
9
- }
10
- }
@@ -1,25 +0,0 @@
1
- # wf-ap — DEMONSTRAÇÃO real de `anti_path` (Story SF7.3/ADR-016).
2
- # A etapa `write` declara 2 anti-padrões escopo-de-etapa:
3
- # - MECANIZADO: "não usar travessão" → mechanized_by aponta a veto.assertion id="no-dashes"
4
- # (command_check lexical-check.cjs) — ENFORÇADO pelo runner genérico, bloqueia de verdade.
5
- # - ADVISORY: "não citar o dono em terceira pessoa" → mechanized_by: null — injeção advisory
6
- # rotulada NÃO-enforcement no brief (sugestão, não gate; honestidade SF7.6).
7
- # Retrocompat: um wf sem anti_path é byte-idêntico ao legado; este OPTA por declará-lo.
8
- state_machine:
9
- states: [init, running, complete, failed]
10
- initial: init
11
- terminal: [complete, failed]
12
- steps:
13
- - id: write
14
- agent: ap-writer
15
- template: templates/write-tmpl.md
16
- inputs: [pedido]
17
- outputs: [post]
18
- depends_on: []
19
- checkpoint: null
20
- veto:
21
- assertions:
22
- - { type: command_check, command: "lexical-check.cjs", args: ["--max", "0"], id: "no-dashes" }
23
- anti_path:
24
- - { rule: "não usar travessão (em/en-dash) no texto do post", mechanized_by: "no-dashes" }
25
- - { rule: "não citar o dono em terceira pessoa", mechanized_by: null }
@@ -1 +0,0 @@
1
- # content-chief (fixture SF8.1)
@@ -1,3 +0,0 @@
1
- steps:
2
- - id: criacao-na-voz
3
- - id: red-team-factual
@@ -1,13 +0,0 @@
1
- {
2
- "pod": "retrofit-leve-fixture",
3
- "workflowId": "criacao-redteam",
4
- "_fixture": "SF8.1 AC3 — caso exato do gate SF6.4 (CONCERNS-1): 1 agente físico modelado como 2 etapas na spec + disco já materializado com o .md físico e o wf gerado a partir DESTA MESMA spec. Soma ingênua antiga: 2+1=3 agentes, 1+1=2 workflows → STANDARD/COMPLEX falso. Correto (dedup + máximo): 1 agente, 1 workflow → SIMPLE.",
5
- "handoffs": 0,
6
- "workflows": 1,
7
- "dna": false,
8
- "critical": false,
9
- "agents": [
10
- { "name": "content-chief", "step": "criacao-na-voz", "output": "peca-mae" },
11
- { "name": "content-chief", "step": "red-team-factual", "output": "parecer-factual" }
12
- ]
13
- }
@@ -1,21 +0,0 @@
1
- # FAKE-GREEN ISOLANTE do average-recompute (CONCERNS-1): média real 4.03 (banda intermediate
2
- # 3.75-4.25) — o headline weighted_average é FORJADO para 4.20, mas mantido DENTRO da mesma
3
- # banda intermediate (threshold/maturity consistentes com o recompute). Assim o threshold-check
4
- # PASSA e SOMENTE o average-recompute (|4.20-4.03|=0.17 > 0.01) pega a mentira. Sabotar o
5
- # average-check torna esta fixture verde — é o que a torna a guarda isolada. DEVE FALHAR.
6
- fidelity_score:
7
- dna: "exemplo-persona"
8
- layers:
9
- - { layer: 1, name: "Behavioral Patterns", type: "Observable", weight: 0.8, status: scored, score: 4, evidence: "abre com pergunta" }
10
- - { layer: 2, name: "Communication Style", type: "Observable", weight: 0.8, status: scored, score: 4, evidence: "frases curtas" }
11
- - { layer: 3, name: "Routines & Habits", type: "Observable", weight: 0.8, status: scored, score: 3, evidence: "CTA unico" }
12
- - { layer: 4, name: "Recognition Patterns", type: "Observable", weight: 0.8, status: scored, score: 4, evidence: "identifica oferta fraca" }
13
- - { layer: 5, name: "Mental Models", type: "Cognitive", weight: 1.0, status: scored, score: 5, evidence: "framework valor>custo" }
14
- - { layer: 6, name: "Values Hierarchy", type: "Deep Identity", weight: 1.0, status: scored, score: 4, evidence: "rejeita atalho" }
15
- - { layer: 7, name: "Core Obsessions", type: "Deep Identity", weight: 1.0, status: scored, score: 4, evidence: "distribuicao>produto" }
16
- - { layer: 8, name: "Productive Paradoxes", type: "Deep Identity", weight: 1.0, status: insufficient_data, evidence: "" }
17
- scored_count: 7
18
- insufficient_count: 1
19
- weighted_average: 4.20
20
- threshold: intermediate
21
- maturity: "2.0"
@@ -1,18 +0,0 @@
1
- # FAKE-GREEN (inflação da média): mesmas 7 camadas scored (média real 4.03), mas reporta
2
- # weighted_average 4.60 + threshold premium para parecer "alta fidelidade". DEVE FALHAR.
3
- fidelity_score:
4
- dna: "exemplo-persona"
5
- layers:
6
- - { layer: 1, name: "Behavioral Patterns", type: "Observable", weight: 0.8, status: scored, score: 4, evidence: "abre com pergunta provocativa" }
7
- - { layer: 2, name: "Communication Style", type: "Observable", weight: 0.8, status: scored, score: 4, evidence: "frases curtas imperativas" }
8
- - { layer: 3, name: "Routines & Habits", type: "Observable", weight: 0.8, status: scored, score: 3, evidence: "fecha com CTA unico" }
9
- - { layer: 4, name: "Recognition Patterns", type: "Observable", weight: 0.8, status: scored, score: 4, evidence: "identifica oferta fraca" }
10
- - { layer: 5, name: "Mental Models", type: "Cognitive", weight: 1.0, status: scored, score: 5, evidence: "framework valor>custo" }
11
- - { layer: 6, name: "Values Hierarchy", type: "Deep Identity", weight: 1.0, status: scored, score: 4, evidence: "rejeita atalho" }
12
- - { layer: 7, name: "Core Obsessions", type: "Deep Identity", weight: 1.0, status: scored, score: 4, evidence: "distribuicao>produto" }
13
- - { layer: 8, name: "Productive Paradoxes", type: "Deep Identity", weight: 1.0, status: insufficient_data, evidence: "" }
14
- scored_count: 7
15
- insufficient_count: 1
16
- weighted_average: 4.60
17
- threshold: premium
18
- maturity: "3.0+"
@@ -1,19 +0,0 @@
1
- # FAKE-GREEN (insufficient_data no denominador): a média foi dividida pelos 8 pesos
2
- # (6.2 + 1.0 da camada insufficient) => 25/7.2 = 3.47, self-consistente com threshold basic.
3
- # Mas a camada 8 é insufficient_data e NÃO pode entrar no denominador. DEVE FALHAR (recompute 4.03).
4
- fidelity_score:
5
- dna: "exemplo-persona"
6
- layers:
7
- - { layer: 1, name: "Behavioral Patterns", type: "Observable", weight: 0.8, status: scored, score: 4, evidence: "abre com pergunta" }
8
- - { layer: 2, name: "Communication Style", type: "Observable", weight: 0.8, status: scored, score: 4, evidence: "frases curtas" }
9
- - { layer: 3, name: "Routines & Habits", type: "Observable", weight: 0.8, status: scored, score: 3, evidence: "CTA unico" }
10
- - { layer: 4, name: "Recognition Patterns", type: "Observable", weight: 0.8, status: scored, score: 4, evidence: "identifica oferta fraca" }
11
- - { layer: 5, name: "Mental Models", type: "Cognitive", weight: 1.0, status: scored, score: 5, evidence: "framework valor>custo" }
12
- - { layer: 6, name: "Values Hierarchy", type: "Deep Identity", weight: 1.0, status: scored, score: 4, evidence: "rejeita atalho" }
13
- - { layer: 7, name: "Core Obsessions", type: "Deep Identity", weight: 1.0, status: scored, score: 4, evidence: "distribuicao>produto" }
14
- - { layer: 8, name: "Productive Paradoxes", type: "Deep Identity", weight: 1.0, status: insufficient_data, evidence: "" }
15
- scored_count: 7
16
- insufficient_count: 1
17
- weighted_average: 3.47
18
- threshold: basic
19
- maturity: "1.0"
@@ -1,18 +0,0 @@
1
- # FAKE-GREEN (score sem evidência): camada 3 marcada scored mas com evidence vazia.
2
- # Score sem trecho citável é ficção (No Invention). DEVE FALHAR.
3
- fidelity_score:
4
- dna: "exemplo-persona"
5
- layers:
6
- - { layer: 1, name: "Behavioral Patterns", type: "Observable", weight: 0.8, status: scored, score: 4, evidence: "abre com pergunta" }
7
- - { layer: 2, name: "Communication Style", type: "Observable", weight: 0.8, status: scored, score: 4, evidence: "frases curtas" }
8
- - { layer: 3, name: "Routines & Habits", type: "Observable", weight: 0.8, status: scored, score: 3, evidence: "" }
9
- - { layer: 4, name: "Recognition Patterns", type: "Observable", weight: 0.8, status: scored, score: 4, evidence: "identifica oferta fraca" }
10
- - { layer: 5, name: "Mental Models", type: "Cognitive", weight: 1.0, status: scored, score: 5, evidence: "framework valor>custo" }
11
- - { layer: 6, name: "Values Hierarchy", type: "Deep Identity", weight: 1.0, status: scored, score: 4, evidence: "rejeita atalho" }
12
- - { layer: 7, name: "Core Obsessions", type: "Deep Identity", weight: 1.0, status: scored, score: 4, evidence: "distribuicao>produto" }
13
- - { layer: 8, name: "Productive Paradoxes", type: "Deep Identity", weight: 1.0, status: scored, score: 4, evidence: "direto mas empatico" }
14
- scored_count: 8
15
- insufficient_count: 0
16
- weighted_average: 4.03
17
- threshold: intermediate
18
- maturity: "2.0"
@@ -1,18 +0,0 @@
1
- # FAKE-GREEN (threshold inflado): média 4.03 correta e honesta, mas rotulada premium
2
- # (banda 4.25-4.85) para simular v3.0+. 4.03 está fora da banda premium. DEVE FALHAR.
3
- fidelity_score:
4
- dna: "exemplo-persona"
5
- layers:
6
- - { layer: 1, name: "Behavioral Patterns", type: "Observable", weight: 0.8, status: scored, score: 4, evidence: "abre com pergunta" }
7
- - { layer: 2, name: "Communication Style", type: "Observable", weight: 0.8, status: scored, score: 4, evidence: "frases curtas" }
8
- - { layer: 3, name: "Routines & Habits", type: "Observable", weight: 0.8, status: scored, score: 3, evidence: "CTA unico" }
9
- - { layer: 4, name: "Recognition Patterns", type: "Observable", weight: 0.8, status: scored, score: 4, evidence: "identifica oferta fraca" }
10
- - { layer: 5, name: "Mental Models", type: "Cognitive", weight: 1.0, status: scored, score: 5, evidence: "framework valor>custo" }
11
- - { layer: 6, name: "Values Hierarchy", type: "Deep Identity", weight: 1.0, status: scored, score: 4, evidence: "rejeita atalho" }
12
- - { layer: 7, name: "Core Obsessions", type: "Deep Identity", weight: 1.0, status: scored, score: 4, evidence: "distribuicao>produto" }
13
- - { layer: 8, name: "Productive Paradoxes", type: "Deep Identity", weight: 1.0, status: insufficient_data, evidence: "" }
14
- scored_count: 7
15
- insufficient_count: 1
16
- weighted_average: 4.03
17
- threshold: premium
18
- maturity: "3.0+"
@@ -1,18 +0,0 @@
1
- # FAKE-GREEN (peso adulterado): camada 5 (Mental Models, Cognitive) deveria pesar 1.0;
2
- # aqui reporta 0.8 para rebaixar o peso das camadas cognitivas. DEVE FALHAR.
3
- fidelity_score:
4
- dna: "exemplo-persona"
5
- layers:
6
- - { layer: 1, name: "Behavioral Patterns", type: "Observable", weight: 0.8, status: scored, score: 4, evidence: "abre com pergunta" }
7
- - { layer: 2, name: "Communication Style", type: "Observable", weight: 0.8, status: scored, score: 4, evidence: "frases curtas" }
8
- - { layer: 3, name: "Routines & Habits", type: "Observable", weight: 0.8, status: scored, score: 3, evidence: "CTA unico" }
9
- - { layer: 4, name: "Recognition Patterns", type: "Observable", weight: 0.8, status: scored, score: 4, evidence: "identifica oferta fraca" }
10
- - { layer: 5, name: "Mental Models", type: "Cognitive", weight: 0.8, status: scored, score: 5, evidence: "framework valor>custo" }
11
- - { layer: 6, name: "Values Hierarchy", type: "Deep Identity", weight: 1.0, status: scored, score: 4, evidence: "rejeita atalho" }
12
- - { layer: 7, name: "Core Obsessions", type: "Deep Identity", weight: 1.0, status: scored, score: 4, evidence: "distribuicao>produto" }
13
- - { layer: 8, name: "Productive Paradoxes", type: "Deep Identity", weight: 1.0, status: insufficient_data, evidence: "" }
14
- scored_count: 7
15
- insufficient_count: 1
16
- weighted_average: 4.00
17
- threshold: intermediate
18
- maturity: "2.0"
@@ -1,31 +0,0 @@
1
- # GOLDEN — output válido de *fidelity-score (7 scored + 1 insufficient_data) + trindade completa.
2
- # weighted = (0.8*(4+4+3+4) + 1.0*(5+4+4)) / (0.8*4 + 1.0*3) = 25 / 6.2 = 4.0323 -> 4.03 (intermediate/2.0).
3
- fidelity_score:
4
- dna: "exemplo-persona"
5
- layers:
6
- - { layer: 1, name: "Behavioral Patterns", type: "Observable", weight: 0.8, status: scored, score: 4, evidence: "abre sempre com pergunta provocativa (post-2023-03)" }
7
- - { layer: 2, name: "Communication Style", type: "Observable", weight: 0.8, status: scored, score: 4, evidence: "frases curtas, imperativas — 'Faca. Agora.' (artigo-lancamento)" }
8
- - { layer: 3, name: "Routines & Habits", type: "Observable", weight: 0.8, status: scored, score: 3, evidence: "fecha com CTA unico (3 de 5 posts amostrados)" }
9
- - { layer: 4, name: "Recognition Patterns", type: "Observable", weight: 0.8, status: scored, score: 4, evidence: "identifica 'oferta fraca' pelo mesmo tell (transcricao-mentoria)" }
10
- - { layer: 5, name: "Mental Models", type: "Cognitive", weight: 1.0, status: scored, score: 5, evidence: "framework valor-percebido>custo citado literalmente (aula-3)" }
11
- - { layer: 6, name: "Values Hierarchy", type: "Deep Identity", weight: 1.0, status: scored, score: 4, evidence: "rejeita atalho em favor de fundamento (thread-2024-01)" }
12
- - { layer: 7, name: "Core Obsessions", type: "Deep Identity", weight: 1.0, status: scored, score: 4, evidence: "volta sempre a 'distribuicao > produto' (5 ocorrencias)" }
13
- - { layer: 8, name: "Productive Paradoxes", type: "Deep Identity", weight: 1.0, status: insufficient_data, evidence: "" }
14
- scored_count: 7
15
- insufficient_count: 1
16
- weighted_average: 4.03
17
- threshold: intermediate
18
- maturity: "2.0"
19
- trindade:
20
- playbook:
21
- status: present
22
- evidence: "processo de 5 passos de oferta documentado (playbook-oferta.md)"
23
- framework:
24
- status: present
25
- evidence: "SE oferta fraca ENTAO ancora preco em valor (heuristica citada)"
26
- swipe_file:
27
- status: present
28
- evidence: "12 exemplos reais de copy validada (swipe/)"
29
- verdict: complete
30
- missing: []
31
- recommendation: "Trindade completa — extracao pode prosseguir."
@@ -1,15 +0,0 @@
1
- # FAKE-GREEN (Trindade incoerente): swipe_file missing, missing:[swipe_file] correto,
2
- # mas verdict=complete — aprovaria com a Trindade incompleta. PROIBIDO. DEVE FALHAR.
3
- trindade:
4
- playbook:
5
- status: present
6
- evidence: "processo de 5 passos documentado"
7
- framework:
8
- status: present
9
- evidence: "SE oferta fraca ENTAO ancora em valor"
10
- swipe_file:
11
- status: missing
12
- evidence: ""
13
- verdict: complete
14
- missing: [swipe_file]
15
- recommendation: "Prosseguir mesmo sem swipe file."
@@ -1,37 +0,0 @@
1
- {
2
- "pod": "forge-canonical-fixture",
3
- "workflowId": "canon",
4
- "handoffs": 2,
5
- "_comment": "SF12.4a/ADR-030 Bloco K (AC33) — spec-canário do oráculo de 3 níveis: 3 etapas, os 3 padrões declarados-ou-recusados TODOS declarados com conteúdo (ritmo NÃO só recusado, para exercitar o anúncio do AC15/B3), knowledge declarado em 2 etapas (arquivos autorados no fixture, AC13b). contrato_entrada aponta a etapa 'entrada' (NÃO é a última) para exercitar o cenário adicional do AC27b; entregavel aponta a etapa 'final' (a última), coberta pelo sidecar BASE do AC27. SF12.6/ADR-030 Bloco D: 'meio' (alvo do ritmo) ganhou `checkpoint` AUTORADO — a injeção de skip_modes RECUSA sobre etapa sem checkpoint (Decisão 1/6.1); 'final' (última etapa, sem checkpoint declarado) mantém o default sintetizado por buildWorkflowYaml, que cobre o modo 'yolo' que 'meio' pula (DF-SF11.10-3).",
6
- "escada_de_voz": "guia_de_estilo",
7
- "ritmo": { "step": "meio", "skip_modes": ["yolo"] },
8
- "contrato_entrada": { "step": "entrada", "valores": ["modo-a", "modo-b"] },
9
- "entregavel": { "step": "final" },
10
- "agents": [
11
- {
12
- "name": "canon-intake",
13
- "step": "entrada",
14
- "output": "intake-brief",
15
- "sections": ["## Contexto", "## Itens"],
16
- "knowledge": ["guia-entrada.md"],
17
- "veto": [
18
- { "type": "count_gte", "field": "Itens", "n": 1 },
19
- { "type": "field_matches", "field": "confianca", "pattern": "^(alta|media|baixa)$" }
20
- ]
21
- },
22
- {
23
- "name": "canon-meio",
24
- "step": "meio",
25
- "output": "meio-artifact",
26
- "sections": ["## Processo"],
27
- "checkpoint": { "blocking": true, "criteria": "checkpoint autorado do fixture SF12.4a/SF12.6 — gate mid-DAG, alvo da injeção de ritmo.skip_modes" }
28
- },
29
- {
30
- "name": "canon-final",
31
- "step": "final",
32
- "output": "final-artifact",
33
- "sections": ["## Resultado"],
34
- "knowledge": ["guia-final.md"]
35
- }
36
- ]
37
- }
@@ -1,17 +0,0 @@
1
- ---
2
- name: offer-engineer
3
- description: "Capacidade de produzir ofertas estruturadas. Use para: montar value stack, quantificar sonho de resultado, reduzir esforço percebido."
4
- budget_tokens: 1200
5
- ---
6
-
7
- # offer-engineer
8
-
9
- ## Papel
10
-
11
- Capacidade capability-based (nunca persona). Aplica o método de construção de oferta com a fonte sempre citada.
12
-
13
- > Fonte: $100M Offers — método de value stack e grand slam offer (metodologia pública citada, não persona encarnada).
14
-
15
- ## Comandos
16
-
17
- - `*build-offer` — monta a oferta a partir do brief de contexto.
@@ -1,7 +0,0 @@
1
- # Knowledge SEM fonte (fixture NEGATIVA da regra 4)
2
-
3
- Passos de método sem nenhuma linha de fonte citada — deve REPROVAR no
4
- validate-no-clone (--knowledge): knowledge sem `Fonte:` → FAIL.
5
-
6
- - Passo A
7
- - Passo B
@@ -1,8 +0,0 @@
1
- # Knowledge: método de value stack
2
-
3
- Destilação metodológica (delta) — passos de forma, sem persona.
4
-
5
- - Liste cada componente de valor entregue.
6
- - Quantifique o resultado-sonho de cada componente.
7
-
8
- Fonte: $100M Offers, cap. Value Equation (metodologia pública citada).
@@ -1,24 +0,0 @@
1
- {
2
- "_authored_with": "specs/wf-sample.spec.json",
3
- "_note": "F2a — tarefa-canário e artefato do caminho feliz AUTORADOS na MESMA etapa que a spec, pelo mesmo autor (fecha o elo solto do G3). Artefatos de VIOLAÇÃO do sweep NÃO são autorados — o harness os deriva (D.G3).",
4
- "workflow": "wf-sample",
5
- "task": "Construir a grand slam offer para um SaaS B2B de onboarding.",
6
- "happy_path": {
7
- "mm-intake": {
8
- "offer-brief": {
9
- "Value Stack": [
10
- "onboarding guiado",
11
- "biblioteca de templates",
12
- "suporte prioritário",
13
- "revisão de setup",
14
- "garantia de ativação"
15
- ]
16
- }
17
- },
18
- "mm-build": {
19
- "offer-final": {
20
- "Oferta final": "Grand slam offer com value stack quantificado e garantia."
21
- }
22
- }
23
- }
24
- }
@@ -1,45 +0,0 @@
1
- {
2
- "pod": "hormozi-method-fixture",
3
- "workflowId": "sample",
4
- "purpose": "F2a — spec AUTORADA (ADR-005) a partir do wf-sample legado; legado é EVIDÊNCIA citada, nunca parse automático.",
5
- "_sources": [
6
- "legacy-squad/workflows/wf-sample.yaml:3 (phases[] intake/build → steps mm-intake/mm-build)",
7
- "legacy-squad/squad-io.yaml:9 (veto value-stack-min count_gte n:5)",
8
- "legacy-squad/workflows/wf-sample.yaml:20 (arithmetic LTV:CAC>=3 → checkpoint, NUNCA veto)"
9
- ],
10
- "agents": [
11
- {
12
- "name": "mm-intake",
13
- "step": "mm-intake",
14
- "output": "offer-brief",
15
- "sections": ["Value Stack"],
16
- "veto": [
17
- {
18
- "type": "count_gte",
19
- "field": "Value Stack",
20
- "n": 5,
21
- "_sources": "legacy-squad/workflows/wf-sample.yaml:16 (count_gte machine-redutível → veto.assertions)"
22
- }
23
- ]
24
- },
25
- {
26
- "name": "offer-engineer",
27
- "step": "mm-build",
28
- "output": "offer-final",
29
- "sections": ["Oferta final"],
30
- "veto": [
31
- {
32
- "type": "section_exists",
33
- "field": "Oferta final",
34
- "_sources": "legacy-squad/workflows/wf-sample.yaml:9 (output offer-final → forma do artefato)"
35
- }
36
- ],
37
- "checkpoint": {
38
- "blocking": true,
39
- "criteria": "LTV:CAC >= 3 avaliado por julgamento humano/aritmético — NUNCA veto (fronteira ADR-002; booleano auto-declarado seria green falso)",
40
- "_sources": "legacy-squad/workflows/wf-sample.yaml:20 (arithmetic LTV:CAC>=3)"
41
- }
42
- }
43
- ],
44
- "smoke_scenario": "specs/wf-sample.smoke.json"
45
- }
@@ -1,3 +0,0 @@
1
- # HEADLINE (solto)
2
-
3
- Arquivo solto adicional — família `loose`.
@@ -1,4 +0,0 @@
1
- # hormozi (squad legado — fixture)
2
-
3
- Squad legado de fixture cobrindo TODAS as famílias para os testes F0-F3 da SF3.3.
4
- Arquivo SOLTO (raiz) — família `loose` no inventário.
@@ -1,14 +0,0 @@
1
- ---
2
- name: hormozi-offer
3
- description: "Especialista de oferta no estilo da marca legada."
4
- ---
5
-
6
- # hormozi-offer
7
-
8
- Você é Alex Hormozi. Encarne o mind e responda em primeira pessoa.
9
-
10
- ## Comandos
11
-
12
- - `*diagnose` — diagnostica o contexto do cliente.
13
- - `*build-offer` — constrói a grand slam offer.
14
- - `*value-stack` — monta o value stack.
@@ -1,4 +0,0 @@
1
- # Checklist: dead-redundant (redundante/morto)
2
-
3
- Conteúdo já representado por veto-screen + method-guide. Terceiro destino: DROP
4
- registrado com justificativa (B.2 destino 3).
@@ -1,6 +0,0 @@
1
- # Checklist: method-guide (metodológico)
2
-
3
- Passos de método (não redutíveis a veto — viram seções de template + knowledge):
4
- - [ ] Entrevistar o cliente sobre dores
5
- - [ ] Mapear o sonho de resultado
6
- - [ ] Listar obstáculos percebidos
@@ -1,4 +0,0 @@
1
- # Checklist: veto-screen (screening, redutível)
2
-
3
- Condição redutível às 5 formas do VETO_TYPES:
4
- - [ ] "Value Stack" tem no mínimo 5 itens (count_gte, section "Value Stack", n:5)
@@ -1,2 +0,0 @@
1
- quality_gates:
2
- min_value_stack: 5
@@ -1,3 +0,0 @@
1
- # Data: case-library
2
-
3
- Corpus de casos de estudo. Vira knowledge COM fonte no pod destino.