@daniellins/power-claude 0.16.4 → 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 (226) hide show
  1. package/installer/motor-scripts.json +195 -35
  2. package/package.json +4 -2
  3. package/scripts/forge-generate.cjs +39 -8
  4. package/scripts/forge-harden-learning.cjs +5 -2
  5. package/scripts/pc-run-pod.cjs +223 -40
  6. package/scripts/smoke-pod-workflow.cjs +3 -1
  7. package/scripts/validate-no-clone.cjs +31 -7
  8. package/template/pods/academy/pod-spec.json +1 -1
  9. package/template/pods/academy/workflows/wf-materiais-revisao.yaml +1 -1
  10. package/template/pods/authority-content/pod-spec.json +1 -1
  11. package/template/pods/authority-content/workflows/wf-criacao-redteam.yaml +1 -1
  12. package/template/pods/automation/pod-spec.json +3 -3
  13. package/template/pods/automation/specs/wf-langgraph-build.spec.json +3 -3
  14. package/template/pods/automation/workflows/wf-langgraph-build.yaml +3 -3
  15. package/template/pods/automation/workflows/wf-n8n-build.yaml +3 -3
  16. package/template/pods/content-carousel/pod-spec.json +9 -2
  17. package/template/pods/content-carousel/workflows/wf-content-carousel.yaml +2 -2
  18. package/template/pods/hormozi-method/specs/wf-full-launch-sequence.spec.json +4 -4
  19. package/template/pods/hormozi-method/specs/wf-lead-magnet-pipeline.spec.json +3 -3
  20. package/template/pods/hormozi-method/specs/wf-money-model-design.spec.json +2 -2
  21. package/template/pods/hormozi-method/specs/wf-paid-ads-campaign.spec.json +3 -3
  22. package/template/pods/hormozi-method/specs/wf-scaling-diagnostic.spec.json +3 -3
  23. package/template/pods/hormozi-method/workflows/wf-full-launch-sequence.yaml +4 -4
  24. package/template/pods/hormozi-method/workflows/wf-lead-magnet-pipeline.yaml +3 -3
  25. package/template/pods/hormozi-method/workflows/wf-money-model-design.yaml +2 -2
  26. package/template/pods/hormozi-method/workflows/wf-paid-ads-campaign.yaml +3 -3
  27. package/template/pods/hormozi-method/workflows/wf-scaling-diagnostic.yaml +3 -3
  28. package/template/pods/squad-forge/agents/forge-chief.md +1 -1
  29. package/template/pods/squad-forge/pod-spec.json +2 -2
  30. package/template/pods/squad-forge/tasks/pipeline.md +20 -8
  31. package/template/pods/squad-forge/templates/register-tmpl.md +5 -0
  32. package/template/pods/squad-forge/workflows/wf-forge.smoke.json +2 -2
  33. package/template/pods/squad-forge/workflows/wf-forge.yaml +2 -2
  34. package/scripts/__fixtures__/anti-path-demo/agents/ap-writer.md +0 -13
  35. package/scripts/__fixtures__/anti-path-demo/templates/write-tmpl.md +0 -7
  36. package/scripts/__fixtures__/anti-path-demo/workflows/wf-ap.smoke.json +0 -10
  37. package/scripts/__fixtures__/anti-path-demo/workflows/wf-ap.yaml +0 -25
  38. package/scripts/__fixtures__/assess-tier/retrofit-leve/pod/agents/content-chief.md +0 -1
  39. package/scripts/__fixtures__/assess-tier/retrofit-leve/pod/workflows/wf-criacao-redteam.yaml +0 -3
  40. package/scripts/__fixtures__/assess-tier/retrofit-leve/pod-spec.json +0 -13
  41. package/scripts/__fixtures__/fidelity/fake-green-average-in-band.yaml +0 -21
  42. package/scripts/__fixtures__/fidelity/fake-green-average.yaml +0 -18
  43. package/scripts/__fixtures__/fidelity/fake-green-denominator.yaml +0 -19
  44. package/scripts/__fixtures__/fidelity/fake-green-missing-evidence.yaml +0 -18
  45. package/scripts/__fixtures__/fidelity/fake-green-threshold.yaml +0 -18
  46. package/scripts/__fixtures__/fidelity/fake-green-weight.yaml +0 -18
  47. package/scripts/__fixtures__/fidelity/golden.yaml +0 -31
  48. package/scripts/__fixtures__/fidelity/trindade-incoherent.yaml +0 -15
  49. package/scripts/__fixtures__/forge-canonical/pod-spec-example.json +0 -37
  50. package/scripts/__fixtures__/migrate-squad/authored/agents/offer-engineer.md +0 -17
  51. package/scripts/__fixtures__/migrate-squad/authored/knowledge/no-source.md +0 -7
  52. package/scripts/__fixtures__/migrate-squad/authored/knowledge/value-stack-method.md +0 -8
  53. package/scripts/__fixtures__/migrate-squad/authored/specs/wf-sample.smoke.json +0 -24
  54. package/scripts/__fixtures__/migrate-squad/authored/specs/wf-sample.spec.json +0 -45
  55. package/scripts/__fixtures__/migrate-squad/legacy-squad/HEADLINE.md +0 -3
  56. package/scripts/__fixtures__/migrate-squad/legacy-squad/README.md +0 -4
  57. package/scripts/__fixtures__/migrate-squad/legacy-squad/agents/hormozi-offer.md +0 -14
  58. package/scripts/__fixtures__/migrate-squad/legacy-squad/checklists/dead-redundant.md +0 -4
  59. package/scripts/__fixtures__/migrate-squad/legacy-squad/checklists/method-guide.md +0 -6
  60. package/scripts/__fixtures__/migrate-squad/legacy-squad/checklists/veto-screen.md +0 -4
  61. package/scripts/__fixtures__/migrate-squad/legacy-squad/config/config.yaml +0 -2
  62. package/scripts/__fixtures__/migrate-squad/legacy-squad/data/case-library.md +0 -3
  63. package/scripts/__fixtures__/migrate-squad/legacy-squad/scripts/validate-mvn.py +0 -16
  64. package/scripts/__fixtures__/migrate-squad/legacy-squad/sops/sop-sample.md +0 -3
  65. package/scripts/__fixtures__/migrate-squad/legacy-squad/squad-io.yaml +0 -14
  66. package/scripts/__fixtures__/migrate-squad/legacy-squad/tasks/gather-context.md +0 -7
  67. package/scripts/__fixtures__/migrate-squad/legacy-squad/templates/output-tmpl.md +0 -5
  68. package/scripts/__fixtures__/migrate-squad/legacy-squad/workflows/wf-sample.yaml +0 -24
  69. package/scripts/__fixtures__/pipeline/pipelines/pipeline-checkpoint.yaml +0 -21
  70. package/scripts/__fixtures__/pipeline/pipelines/pipeline-demo.yaml +0 -22
  71. package/scripts/__fixtures__/pipeline/pods/pipe-a/agents/maker.md +0 -13
  72. package/scripts/__fixtures__/pipeline/pods/pipe-a/memory/learnings.consolidated.md +0 -8
  73. package/scripts/__fixtures__/pipeline/pods/pipe-a/memory/learnings.jsonl +0 -83
  74. package/scripts/__fixtures__/pipeline/pods/pipe-a/templates/make-tmpl.md +0 -8
  75. package/scripts/__fixtures__/pipeline/pods/pipe-a/workflows/wf-a.yaml +0 -16
  76. package/scripts/__fixtures__/pipeline/pods/pipe-b/agents/user.md +0 -13
  77. package/scripts/__fixtures__/pipeline/pods/pipe-b/memory/learnings.consolidated.md +0 -8
  78. package/scripts/__fixtures__/pipeline/pods/pipe-b/memory/learnings.jsonl +0 -14
  79. package/scripts/__fixtures__/pipeline/pods/pipe-b/templates/use-tmpl.md +0 -6
  80. package/scripts/__fixtures__/pipeline/pods/pipe-b/workflows/wf-b.yaml +0 -16
  81. package/scripts/__fixtures__/pod-run/agents/forge-chief.md +0 -13
  82. package/scripts/__fixtures__/pod-run/agents/pod-critic.md +0 -13
  83. package/scripts/__fixtures__/pod-run/templates/build-tmpl.md +0 -8
  84. package/scripts/__fixtures__/pod-run/templates/gate-tmpl.md +0 -6
  85. package/scripts/__fixtures__/pod-run/workflows/wf-min.yaml +0 -43
  86. package/scripts/__fixtures__/pod-run/workflows/wf-skip-modes.yaml +0 -50
  87. package/scripts/__fixtures__/pod-workflow/invalid-checkpoint-all-skippable.yaml +0 -30
  88. package/scripts/__fixtures__/pod-workflow/invalid-checkpoint-criteria-escalar-de-bloco.yaml +0 -40
  89. package/scripts/__fixtures__/pod-workflow/invalid-checkpoint-skip-mode-desconhecido.yaml +0 -30
  90. package/scripts/__fixtures__/pod-workflow/invalid-checkpoint-unknown-key.yaml +0 -29
  91. package/scripts/__fixtures__/pod-workflow/invalid-cycle.yaml +0 -26
  92. package/scripts/__fixtures__/pod-workflow/invalid-fix-loop-backedge.yaml +0 -29
  93. package/scripts/__fixtures__/pod-workflow/invalid-fix-loop-forward.yaml +0 -29
  94. package/scripts/__fixtures__/pod-workflow/invalid-handoff-open.yaml +0 -27
  95. package/scripts/__fixtures__/pod-workflow/invalid-knowledge-shape.yaml +0 -18
  96. package/scripts/__fixtures__/pod-workflow/invalid-missing-agent.yaml +0 -15
  97. package/scripts/__fixtures__/pod-workflow/invalid-missing-outputs.yaml +0 -15
  98. package/scripts/__fixtures__/pod-workflow/invalid-missing-template.yaml +0 -15
  99. package/scripts/__fixtures__/pod-workflow/invalid-missing-veto.yaml +0 -13
  100. package/scripts/__fixtures__/pod-workflow/invalid-template-not-on-disk.yaml +0 -16
  101. package/scripts/__fixtures__/pod-workflow/invalid-veto-prose.yaml +0 -17
  102. package/scripts/__fixtures__/pod-workflow/knowledge/a.md +0 -4
  103. package/scripts/__fixtures__/pod-workflow/knowledge/b.md +0 -4
  104. package/scripts/__fixtures__/pod-workflow/knowledge/c.md +0 -4
  105. package/scripts/__fixtures__/pod-workflow/templates/step-tmpl.md +0 -7
  106. package/scripts/__fixtures__/pod-workflow/valid-checkpoint-skip-modes.yaml +0 -29
  107. package/scripts/__fixtures__/pod-workflow/valid-fix-loop.yaml +0 -30
  108. package/scripts/__fixtures__/pod-workflow/valid-knowledge.yaml +0 -30
  109. package/scripts/__fixtures__/pod-workflow/valid-veto-always-true.yaml +0 -20
  110. package/scripts/__fixtures__/pod-workflow/valid.yaml +0 -27
  111. package/scripts/__fixtures__/smoke-canary/agents/canary-reporter.md +0 -13
  112. package/scripts/__fixtures__/smoke-canary/agents/canary-researcher.md +0 -13
  113. package/scripts/__fixtures__/smoke-canary/agents/canary-synth.md +0 -13
  114. package/scripts/__fixtures__/smoke-canary/memory/learnings.consolidated.md +0 -10
  115. package/scripts/__fixtures__/smoke-canary/memory/learnings.jsonl +0 -448
  116. package/scripts/__fixtures__/smoke-canary/templates/report-tmpl.md +0 -9
  117. package/scripts/__fixtures__/smoke-canary/templates/research-tmpl.md +0 -7
  118. package/scripts/__fixtures__/smoke-canary/templates/synth-tmpl.md +0 -9
  119. package/scripts/__fixtures__/smoke-canary/workflows/wf-canary.smoke.json +0 -11
  120. package/scripts/__fixtures__/smoke-canary/workflows/wf-canary.yaml +0 -53
  121. package/scripts/__fixtures__/source-audit/fake-green-bronze-unsignaled.yaml +0 -10
  122. package/scripts/__fixtures__/source-audit/fake-green-counts.yaml +0 -9
  123. package/scripts/__fixtures__/source-audit/fake-green-missing-evidence.yaml +0 -9
  124. package/scripts/__fixtures__/source-audit/fake-green-unclassified.yaml +0 -10
  125. package/scripts/__fixtures__/source-audit/fake-green-verdict.yaml +0 -10
  126. package/scripts/__fixtures__/source-audit/golden-blocked.yaml +0 -10
  127. package/scripts/__fixtures__/source-audit/golden.yaml +0 -11
  128. package/scripts/__fixtures__/sweep-forms/agents/forms-count.md +0 -13
  129. package/scripts/__fixtures__/sweep-forms/agents/forms-field.md +0 -13
  130. package/scripts/__fixtures__/sweep-forms/agents/forms-fileref.md +0 -13
  131. package/scripts/__fixtures__/sweep-forms/agents/forms-json.md +0 -13
  132. package/scripts/__fixtures__/sweep-forms/agents/forms-section.md +0 -13
  133. package/scripts/__fixtures__/sweep-forms/specs/wf-forms.spec.json +0 -5
  134. package/scripts/__fixtures__/sweep-forms/templates/t_count.md +0 -5
  135. package/scripts/__fixtures__/sweep-forms/templates/t_field.md +0 -3
  136. package/scripts/__fixtures__/sweep-forms/templates/t_fileref.md +0 -3
  137. package/scripts/__fixtures__/sweep-forms/templates/t_json.md +0 -0
  138. package/scripts/__fixtures__/sweep-forms/templates/t_section.md +0 -3
  139. package/scripts/__fixtures__/sweep-forms/workflows/wf-forms.smoke.json +0 -13
  140. package/scripts/__fixtures__/sweep-forms/workflows/wf-forms.yaml +0 -67
  141. package/scripts/__fixtures__/validate-story-acs-corpus/corpus-1-noop-state-json.fixture.md +0 -18
  142. package/scripts/__fixtures__/validate-story-acs-corpus/corpus-2-crash-buildworkflowyaml.fixture.md +0 -26
  143. package/scripts/__fixtures__/validate-story-acs-corpus/corpus-3-nasce-verde-skip-modes.fixture.md +0 -29
  144. package/scripts/__fixtures__/validate-story-acs-corpus/corpus-4-guarda-sem-irmao.fixture.md +0 -17
  145. package/scripts/__fixtures__/validate-story-acs-corpus/corpus-5a-diff-stat-sem-guarda.fixture.md +0 -17
  146. package/scripts/__fixtures__/validate-story-acs-corpus/corpus-5b-test-f-sobre-diretorio.fixture.md +0 -20
  147. package/scripts/__fixtures__/veto-checks/copy-clean.md +0 -4
  148. package/scripts/__fixtures__/veto-checks/copy-dashes.md +0 -4
  149. package/scripts/__fixtures__/veto-checks/n8n-bad.md +0 -18
  150. package/scripts/__fixtures__/veto-checks/n8n-ok.md +0 -22
  151. package/scripts/__fixtures__/veto-checks/page-bad.html +0 -7
  152. package/scripts/__fixtures__/veto-checks/phash/copy.png +0 -0
  153. package/scripts/__fixtures__/veto-checks/phash/distinct.png +0 -0
  154. package/scripts/__fixtures__/veto-checks/phash/distinct2.png +0 -0
  155. package/scripts/__fixtures__/veto-checks/phash/make-fixtures.cjs +0 -203
  156. package/scripts/__fixtures__/veto-checks/phash/ref.png +0 -0
  157. package/scripts/__fixtures__/veto-checks/slide-ok.html +0 -15
  158. package/scripts/__fixtures__/veto-checks/slide-overflow.html +0 -14
  159. package/scripts/__fixtures__/veto-checks/sweep-pod/agents/vc-checker.md +0 -13
  160. package/scripts/__fixtures__/veto-checks/sweep-pod/templates/check-tmpl.md +0 -6
  161. package/scripts/__fixtures__/veto-checks/sweep-pod/workflows/wf-vc.smoke.json +0 -10
  162. package/scripts/__fixtures__/veto-checks/sweep-pod/workflows/wf-vc.yaml +0 -19
  163. package/scripts/__fixtures__/voz-do-dono/README.md +0 -23
  164. package/scripts/__fixtures__/voz-do-dono/dono-escalar.yaml +0 -9
  165. package/scripts/__fixtures__/voz-do-dono/dono-guia.yaml +0 -10
  166. package/scripts/__fixtures__/voz-do-dono/peca-3a-pessoa.md +0 -6
  167. package/scripts/__fixtures__/voz-do-dono/peca-com-lexico-proibido.md +0 -6
  168. package/scripts/__fixtures__/voz-do-dono/peca-limpa-1a-pessoa.md +0 -6
  169. package/scripts/__tests__/derive-ready-transitions.test.cjs +0 -269
  170. package/scripts/__tests__/enforce-cycle-authority.test.cjs +0 -869
  171. package/scripts/__tests__/enforce-git-push-authority.test.cjs +0 -988
  172. package/scripts/__tests__/enforce-ready-oracles.test.cjs +0 -745
  173. package/scripts/__tests__/motor-scripts.test.cjs +0 -339
  174. package/scripts/__tests__/pc-run-pod-counter.test.cjs +0 -58
  175. package/scripts/__tests__/pc-run-pod.test.cjs +0 -578
  176. package/scripts/__tests__/validate-pod-workflow.test.cjs +0 -90
  177. package/scripts/__tests__/validate-story-acs.test.cjs +0 -607
  178. package/scripts/anti-path.test.cjs +0 -163
  179. package/scripts/arena.test.cjs +0 -213
  180. package/scripts/brief-leitura-obrigatoria.test.cjs +0 -364
  181. package/scripts/build-public-tree.cjs +0 -372
  182. package/scripts/consolidate-knowledge-runner.test.cjs +0 -249
  183. package/scripts/default-funcional.test.cjs +0 -153
  184. package/scripts/derive-ready-transitions.cjs +0 -361
  185. package/scripts/forge-additive.test.cjs +0 -158
  186. package/scripts/forge-assess-tier.test.cjs +0 -114
  187. package/scripts/forge-canonical.test.cjs +0 -624
  188. package/scripts/forge-harden-learning.test.cjs +0 -242
  189. package/scripts/forge.test.cjs +0 -609
  190. package/scripts/harden-knowledge.test.cjs +0 -612
  191. package/scripts/harness-g5-lite.test.cjs +0 -134
  192. package/scripts/hn-carousel-contrato-entrada.test.cjs +0 -96
  193. package/scripts/migrate-squad-orchestration.test.cjs +0 -146
  194. package/scripts/migration-manifest-sf3.2.test.cjs +0 -382
  195. package/scripts/migration-manifest-sf3.3.test.cjs +0 -170
  196. package/scripts/migration-manifest-sf5.5.test.cjs +0 -189
  197. package/scripts/migration-manifest.test.cjs +0 -186
  198. package/scripts/npm-scope-invocation.test.cjs +0 -194
  199. package/scripts/owner-layer.cjs +0 -442
  200. package/scripts/owner-layer.test.cjs +0 -358
  201. package/scripts/pc-run-pipeline.test.cjs +0 -256
  202. package/scripts/pc-run-pod-countgte.test.cjs +0 -66
  203. package/scripts/phash-gate.test.cjs +0 -433
  204. package/scripts/pod-export-compile.test.cjs +0 -312
  205. package/scripts/pod-export-executor.test.cjs +0 -1341
  206. package/scripts/pod-export-hardening.test.cjs +0 -531
  207. package/scripts/pod-export-postprocess.test.cjs +0 -558
  208. package/scripts/pod-export-queue-race.test.cjs +0 -865
  209. package/scripts/pod-export-release.test.cjs +0 -267
  210. package/scripts/pod-export-service.test.cjs +0 -489
  211. package/scripts/pod-export-ui.test.cjs +0 -301
  212. package/scripts/pod-memory-budget.test.cjs +0 -309
  213. package/scripts/pod-memory-note.test.cjs +0 -452
  214. package/scripts/pod-memory.test.cjs +0 -951
  215. package/scripts/render-png.test.cjs +0 -307
  216. package/scripts/smoke-isolation.test.cjs +0 -100
  217. package/scripts/smoke-sweep.test.cjs +0 -170
  218. package/scripts/validate-adopt.js +0 -235
  219. package/scripts/validate-branding.js +0 -100
  220. package/scripts/validate-fidelity-output.test.cjs +0 -101
  221. package/scripts/validate-git-vetor.cjs +0 -99
  222. package/scripts/validate-install.js +0 -230
  223. package/scripts/validate-no-clone.test.cjs +0 -77
  224. package/scripts/validate-source-audit.test.cjs +0 -90
  225. package/scripts/validate-update-scope-motor.js +0 -421
  226. package/scripts/veto-checks.test.cjs +0 -219
@@ -1,39 +1,199 @@
1
1
  {
2
2
  "scripts": [
3
- { "path": "scripts/pc-run-pod.cjs", "owner": "skill:pc-run-pod", "reason": "referenced" },
4
- { "path": "scripts/pod-memory.cjs", "owner": "skill:pc-run-pod", "reason": "referenced" },
5
- { "path": "scripts/pod-memory-note.cjs", "owner": "skill:pc-run-pod", "reason": "referenced", "requiredBy": "skill:pc-run-pod" },
6
- { "path": "scripts/validate-pod-workflow.cjs", "owner": "pod:squad-forge", "reason": "referenced" },
7
- { "path": "scripts/smoke-pod-workflow.cjs", "owner": "pod:squad-forge", "reason": "referenced" },
8
- { "path": "scripts/harness-g5-lite.cjs", "owner": "pod:squad-forge", "reason": "referenced" },
9
- { "path": "scripts/migration-manifest.cjs", "owner": "pod:squad-forge", "reason": "referenced" },
10
- { "path": "scripts/watcher-audit.cjs", "owner": "pod:squad-forge", "reason": "referenced" },
11
- { "path": "scripts/validate-no-clone.cjs", "owner": "pod:squad-forge", "reason": "referenced" },
12
- { "path": "scripts/forge-assess-tier.cjs", "owner": "pod:squad-forge", "reason": "referenced" },
13
- { "path": "scripts/validate-fidelity-output.cjs", "owner": "squad-forge/mind-extractor", "reason": "referenced" },
14
- { "path": "scripts/validate-source-audit.cjs", "owner": "squad-forge/mind-extractor", "reason": "referenced" },
15
- { "path": "scripts/arena.cjs", "owner": "skill:pc-arena", "reason": "referenced" },
16
- { "path": "scripts/forge-generate.cjs", "owner": "pod:squad-forge", "reason": "referenced" },
17
- { "path": "scripts/forge-ingest-memory.cjs", "owner": "pod:squad-forge", "reason": "referenced" },
18
- { "path": "scripts/forge-upgrade-pod.cjs", "owner": "pod:squad-forge", "reason": "referenced" },
19
- { "path": "scripts/forge-harden-learning.cjs", "owner": "pod:squad-forge", "reason": "referenced" },
20
- { "path": "scripts/validate-branding.js", "owner": "pod:squad-forge", "reason": "require-dependency", "requiredBy": "scripts/validate-no-clone.cjs" },
21
- { "path": "scripts/validate-budgets.js", "owner": "pods:*", "reason": "referenced" },
22
- { "path": "scripts/veto-checks/lexical-check.cjs", "owner": "veto:command_check", "reason": "referenced", "requiredBy": "scripts/pc-run-pod.cjs" },
23
- { "path": "scripts/veto-checks/html-valid.cjs", "owner": "veto:command_check", "reason": "referenced", "requiredBy": "scripts/pc-run-pod.cjs" },
24
- { "path": "scripts/veto-checks/render-gate.cjs", "owner": "veto:command_check", "reason": "referenced", "requiredBy": "scripts/pc-run-pod.cjs" },
25
- { "path": "scripts/veto-checks/phash-gate.cjs", "owner": "veto:command_check", "reason": "referenced", "requiredBy": "scripts/pc-run-pod.cjs" },
26
- { "path": "scripts/veto-checks/render-png.cjs", "owner": "veto:command_check", "reason": "referenced", "requiredBy": "scripts/pc-run-pod.cjs" },
27
- { "path": "scripts/pc-run-pipeline.cjs", "owner": "skill:pc-pipeline", "reason": "referenced", "requiredBy": "skill:pc-pipeline" },
28
- { "path": "scripts/validate-pipeline.cjs", "owner": "skill:pc-pipeline", "reason": "require-dependency", "requiredBy": "scripts/pc-run-pipeline.cjs" },
29
- { "path": "scripts/pod-export-compile.cjs", "owner": "skill:pc-export", "reason": "referenced", "requiredBy": "skill:pc-export" },
30
- { "path": "scripts/pod-export-executor.cjs", "owner": "skill:pc-export", "reason": "referenced", "requiredBy": "skill:pc-export" },
31
- { "path": "scripts/pod-export-release.cjs", "owner": "skill:pc-export", "reason": "referenced", "requiredBy": "skill:pc-export" },
32
- { "path": "scripts/pod-export-tools.cjs", "owner": "skill:pc-export", "reason": "require-dependency", "requiredBy": "scripts/pod-export-executor.cjs" },
33
- { "path": "scripts/pod-export-postprocess.cjs", "owner": "skill:pc-export", "reason": "require-dependency", "requiredBy": "scripts/pod-export-executor.cjs" },
34
- { "path": "scripts/pod-export-service.cjs", "owner": "skill:pc-export", "reason": "referenced", "requiredBy": "skill:pc-export" },
35
- { "path": "scripts/pod-export-ui.cjs", "owner": "skill:pc-export", "reason": "referenced", "requiredBy": "skill:pc-export" },
36
- { "path": "scripts/validate-story-acs.cjs", "owner": "skill:pc-validate-story", "reason": "referenced" }
3
+ {
4
+ "path": "scripts/pc-run-pod.cjs",
5
+ "owner": "skill:pc-run-pod",
6
+ "reason": "referenced"
7
+ },
8
+ {
9
+ "path": "scripts/pod-memory.cjs",
10
+ "owner": "skill:pc-run-pod",
11
+ "reason": "referenced"
12
+ },
13
+ {
14
+ "path": "scripts/pod-memory-note.cjs",
15
+ "owner": "skill:pc-run-pod",
16
+ "reason": "referenced",
17
+ "requiredBy": "skill:pc-run-pod"
18
+ },
19
+ {
20
+ "path": "scripts/validate-pod-workflow.cjs",
21
+ "owner": "pod:squad-forge",
22
+ "reason": "referenced"
23
+ },
24
+ {
25
+ "path": "scripts/smoke-pod-workflow.cjs",
26
+ "owner": "pod:squad-forge",
27
+ "reason": "referenced"
28
+ },
29
+ {
30
+ "path": "scripts/harness-g5-lite.cjs",
31
+ "owner": "pod:squad-forge",
32
+ "reason": "referenced"
33
+ },
34
+ {
35
+ "path": "scripts/migration-manifest.cjs",
36
+ "owner": "pod:squad-forge",
37
+ "reason": "referenced"
38
+ },
39
+ {
40
+ "path": "scripts/watcher-audit.cjs",
41
+ "owner": "pod:squad-forge",
42
+ "reason": "referenced"
43
+ },
44
+ {
45
+ "path": "scripts/validate-no-clone.cjs",
46
+ "owner": "pod:squad-forge",
47
+ "reason": "referenced"
48
+ },
49
+ {
50
+ "path": "scripts/forge-assess-tier.cjs",
51
+ "owner": "pod:squad-forge",
52
+ "reason": "referenced"
53
+ },
54
+ {
55
+ "path": "scripts/validate-fidelity-output.cjs",
56
+ "owner": "squad-forge/mind-extractor",
57
+ "reason": "referenced"
58
+ },
59
+ {
60
+ "path": "scripts/validate-source-audit.cjs",
61
+ "owner": "squad-forge/mind-extractor",
62
+ "reason": "referenced"
63
+ },
64
+ {
65
+ "path": "scripts/arena.cjs",
66
+ "owner": "skill:pc-arena",
67
+ "reason": "referenced"
68
+ },
69
+ {
70
+ "path": "scripts/forge-generate.cjs",
71
+ "owner": "pod:squad-forge",
72
+ "reason": "referenced"
73
+ },
74
+ {
75
+ "path": "scripts/forge-ingest-memory.cjs",
76
+ "owner": "pod:squad-forge",
77
+ "reason": "referenced"
78
+ },
79
+ {
80
+ "path": "scripts/forge-upgrade-pod.cjs",
81
+ "owner": "pod:squad-forge",
82
+ "reason": "referenced"
83
+ },
84
+ {
85
+ "path": "scripts/forge-harden-learning.cjs",
86
+ "owner": "pod:squad-forge",
87
+ "reason": "referenced"
88
+ },
89
+ {
90
+ "path": "scripts/validate-budgets.js",
91
+ "owner": "pods:*",
92
+ "reason": "referenced"
93
+ },
94
+ {
95
+ "path": "scripts/veto-checks/lexical-check.cjs",
96
+ "owner": "veto:command_check",
97
+ "reason": "referenced",
98
+ "requiredBy": "scripts/pc-run-pod.cjs"
99
+ },
100
+ {
101
+ "path": "scripts/veto-checks/html-valid.cjs",
102
+ "owner": "veto:command_check",
103
+ "reason": "referenced",
104
+ "requiredBy": "scripts/pc-run-pod.cjs"
105
+ },
106
+ {
107
+ "path": "scripts/veto-checks/render-gate.cjs",
108
+ "owner": "veto:command_check",
109
+ "reason": "referenced",
110
+ "requiredBy": "scripts/pc-run-pod.cjs"
111
+ },
112
+ {
113
+ "path": "scripts/veto-checks/phash-gate.cjs",
114
+ "owner": "veto:command_check",
115
+ "reason": "referenced",
116
+ "requiredBy": "scripts/pc-run-pod.cjs"
117
+ },
118
+ {
119
+ "path": "scripts/veto-checks/render-png.cjs",
120
+ "owner": "veto:command_check",
121
+ "reason": "referenced",
122
+ "requiredBy": "scripts/pc-run-pod.cjs"
123
+ },
124
+ {
125
+ "path": "scripts/pc-run-pipeline.cjs",
126
+ "owner": "skill:pc-pipeline",
127
+ "reason": "referenced",
128
+ "requiredBy": "skill:pc-pipeline"
129
+ },
130
+ {
131
+ "path": "scripts/validate-pipeline.cjs",
132
+ "owner": "skill:pc-pipeline",
133
+ "reason": "require-dependency",
134
+ "requiredBy": "scripts/pc-run-pipeline.cjs"
135
+ },
136
+ {
137
+ "path": "scripts/pod-export-compile.cjs",
138
+ "owner": "skill:pc-export",
139
+ "reason": "referenced",
140
+ "requiredBy": "skill:pc-export"
141
+ },
142
+ {
143
+ "path": "scripts/pod-export-executor.cjs",
144
+ "owner": "skill:pc-export",
145
+ "reason": "referenced",
146
+ "requiredBy": "skill:pc-export"
147
+ },
148
+ {
149
+ "path": "scripts/pod-export-release.cjs",
150
+ "owner": "skill:pc-export",
151
+ "reason": "referenced",
152
+ "requiredBy": "skill:pc-export"
153
+ },
154
+ {
155
+ "path": "scripts/pod-export-tools.cjs",
156
+ "owner": "skill:pc-export",
157
+ "reason": "require-dependency",
158
+ "requiredBy": "scripts/pod-export-executor.cjs"
159
+ },
160
+ {
161
+ "path": "scripts/pod-export-postprocess.cjs",
162
+ "owner": "skill:pc-export",
163
+ "reason": "require-dependency",
164
+ "requiredBy": "scripts/pod-export-executor.cjs"
165
+ },
166
+ {
167
+ "path": "scripts/pod-export-service.cjs",
168
+ "owner": "skill:pc-export",
169
+ "reason": "referenced",
170
+ "requiredBy": "skill:pc-export"
171
+ },
172
+ {
173
+ "path": "scripts/pod-export-ui.cjs",
174
+ "owner": "skill:pc-export",
175
+ "reason": "referenced",
176
+ "requiredBy": "skill:pc-export"
177
+ },
178
+ {
179
+ "path": "scripts/validate-story-acs.cjs",
180
+ "owner": "skill:pc-validate-story",
181
+ "reason": "referenced"
182
+ }
37
183
  ],
38
- "exclude": ["*.test.cjs", "__tests__/", "__fixtures__/", "validate-install.js", "validate-adopt.js", "validate-update-scope-motor.js", "owner-layer.cjs", "derive-ready-transitions.cjs", "validate-git-vetor.cjs", "build-public-tree.cjs"]
184
+ "exclude": [
185
+ "*.test.cjs",
186
+ "__tests__/",
187
+ "__fixtures__/",
188
+ "validate-install.js",
189
+ "validate-adopt.js",
190
+ "validate-update-scope-motor.js",
191
+ "owner-layer.cjs",
192
+ "derive-ready-transitions.cjs",
193
+ "validate-git-vetor.cjs",
194
+ "validate-branding.js",
195
+ "build-public-tree.cjs",
196
+ "gen-dist-ignore.cjs",
197
+ "validate-spec-coverage.cjs"
198
+ ]
39
199
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@daniellins/power-claude",
3
- "version": "0.16.4",
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-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/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__/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
  }
@@ -385,6 +385,17 @@ function countGteFields(veto) {
385
385
  return out;
386
386
  }
387
387
 
388
+ /**
389
+ * SF19.1 — a etapa declara um veto `file_referenced_exists` sobre o campo `entry_point`?
390
+ * `entry_point` é o nome canônico ÚNICO da referência cross-pod do register do squad-forge
391
+ * (pod-spec.json:147); pods genéricos usam `entregavel` (não alcançado por este predicado).
392
+ * Só dispara em `field === 'entry_point'` — ortogonal ao mecanismo extraFields (Blocos G/H).
393
+ */
394
+ function hasEntryPointRef(veto) {
395
+ return Array.isArray(veto)
396
+ && veto.some((a) => a && a.type === 'file_referenced_exists' && a.field === 'entry_point');
397
+ }
398
+
388
399
  /**
389
400
  * SF12.4a/ADR-030 Blocos G/H (AC20a/AC23a) — campos de máquina extras dos padrões
390
401
  * `contrato_entrada`/`entregavel`, quando declarados. Emitidos ANTES de `confianca`
@@ -408,6 +419,16 @@ function stepTemplate(stepId, agent, output, sections, veto, extraFields) {
408
419
  const extras = (Array.isArray(extraFields) && extraFields.length)
409
420
  ? `${extraFields.map((e) => `${e.field}: <${e.placeholder}>`).join('\n')}\n`
410
421
  : '';
422
+ // SF19.1 — quando a etapa tem `file_referenced_exists field: entry_point`, injeta o campo
423
+ // guiado + comentário do formato (zona ortogonal, antes de `confianca`, fora dos headings).
424
+ // O motor resolve `entry_point` a partir de podRoot (= pods/squad-forge), então o pod NOVO
425
+ // fica em `../<pod-slug>/...` — sem esta guia o veto trava sem pista de como preencher.
426
+ const entryPoint = hasEntryPointRef(veto)
427
+ ? '<!-- Campo de máquina do veto file_referenced_exists (field: entry_point) — NÃO é heading. -->\n'
428
+ + 'entry_point: <../<pod-slug>/agents/<agente-dono>.md>\n'
429
+ + '<!-- relativo à raiz do squad-forge: o motor resolve entry_point a partir de pods/squad-forge,\n'
430
+ + ' então use ../<pod-slug>/... para apontar o pod NOVO (não pods/<pod-slug>/...). -->\n'
431
+ : '';
411
432
  return `# Template de saída — etapa \`${stepId}\` (agente \`${agent}\`, artefato \`${output}\`)
412
433
 
413
434
  > Gerado por forge-generate.cjs (SF1.4 + ADR-005). Preencher com o artefato real da etapa.
@@ -416,7 +437,7 @@ function stepTemplate(stepId, agent, output, sections, veto, extraFields) {
416
437
 
417
438
  ${body}
418
439
  <!-- Campo(s) de máquina do(s) padrão(ões) declarado(s) (SF12.4a/ADR-030 Blocos G/H), quando aplicável — NÃO é heading. -->
419
- ${extras}<!-- Campo de máquina do veto default (ADR-005) — NÃO é heading. Troque o placeholder por alta|media|baixa. -->
440
+ ${extras}${entryPoint}<!-- Campo de máquina do veto default (ADR-005) — NÃO é heading. Troque o placeholder por alta|media|baixa. -->
420
441
  confianca: <alta|media|baixa>
421
442
  `;
422
443
  }
@@ -763,7 +784,17 @@ function synthesizeArtifactText(step, opts = {}) {
763
784
  const broken = opts.breakAssertion === a;
764
785
  // O agente-stub do AC26 garante existência real de agents/<agent>.md sob podRoot
765
786
  // (base de resolução confirmada pelo `*review` — pc-run-pod.cjs:466).
766
- fieldLines.push(`${a.field}: ${broken ? 'arquivo-inexistente-smoke.md' : `agents/${step.agent}.md`}`);
787
+ // SF19.1 — para `field: entry_point` (referência cross-pod do register), emite a forma
788
+ // `../<basename(podDir)>/agents/<agent>.md`: sobe ao pai de podRoot e volta pelo mesmo
789
+ // nome, exercitando EXATAMENTE o `path.resolve(podRoot, '..', <pod>, ...)` que a produção
790
+ // usa para apontar um pod IRMÃO — e resolvendo a um arquivo que o AC26 garante existir.
791
+ // Sem podDir (rota direta sem generatePod) ou para os demais campos (`entregavel`,
792
+ // in-pod), mantém `agents/<agent>.md` — não regride o smoke de nenhum outro pod.
793
+ const crossPod = a.field === 'entry_point' && opts.podDir;
794
+ const ref = broken
795
+ ? 'arquivo-inexistente-smoke.md'
796
+ : (crossPod ? `../${path.basename(opts.podDir)}/agents/${step.agent}.md` : `agents/${step.agent}.md`);
797
+ fieldLines.push(`${a.field}: ${ref}`);
767
798
  seen.add(a.field);
768
799
  }
769
800
  }
@@ -778,14 +809,14 @@ function synthesizeArtifactText(step, opts = {}) {
778
809
  * `veto_violation` da etapa-alvo. `breakField`, quando dado, nomeia a assertion a quebrar
779
810
  * (AC27b — mecanismo específico); default: a 1ª assertion da etapa-alvo (AC27 — base).
780
811
  */
781
- function buildSmokeSidecar(steps, targetStepId, breakField) {
812
+ function buildSmokeSidecar(steps, targetStepId, breakField, podDir) {
782
813
  const artifacts = {};
783
- for (const step of steps) artifacts[step.id] = synthesizeArtifactText(step);
814
+ for (const step of steps) artifacts[step.id] = synthesizeArtifactText(step, { podDir });
784
815
  const targetStep = steps.find((s) => s.id === targetStepId);
785
- const templateViolation = synthesizeArtifactText(targetStep, { dropFirstSection: true });
816
+ const templateViolation = synthesizeArtifactText(targetStep, { dropFirstSection: true, podDir });
786
817
  const assertions = stepAssertions(targetStep);
787
818
  const breakAssertion = (breakField && assertions.find((a) => a.field === breakField)) || assertions[0];
788
- const vetoViolation = synthesizeArtifactText(targetStep, { breakAssertion });
819
+ const vetoViolation = synthesizeArtifactText(targetStep, { breakAssertion, podDir });
789
820
  return {
790
821
  _comment: 'Cenário de smoke SINTETIZADO por forge-generate.cjs (SF12.4a/ADR-030 Bloco I) — canário ' +
791
822
  'ESTRUTURAL (satisfaz a forma das veto.assertions declaradas), não redação de conteúdo (fronteira ADR-002). ' +
@@ -1105,7 +1136,7 @@ function generatePod(spec, podDir, opts = {}) {
1105
1136
  const basePath = path.join(podDir, 'workflows', `wf-${workflowId}.smoke.json`);
1106
1137
  if (!fs.existsSync(basePath)) {
1107
1138
  // AC28 já foi checado ANTES de qualquer escrita (ver acima, hoisted com `wantsWorkflow`).
1108
- emit(basePath, `${JSON.stringify(buildSmokeSidecar(steps, lastStep.id), null, 2)}\n`);
1139
+ emit(basePath, `${JSON.stringify(buildSmokeSidecar(steps, lastStep.id, undefined, podDir), null, 2)}\n`);
1109
1140
  written.push(basePath);
1110
1141
  }
1111
1142
 
@@ -1126,7 +1157,7 @@ function generatePod(spec, podDir, opts = {}) {
1126
1157
  if (!steps.some((s) => s.id === m.stepId)) continue;
1127
1158
  const scenarioPath = path.join(podDir, 'workflows', `wf-${workflowId}.${m.stepId}.smoke.json`);
1128
1159
  if (!fs.existsSync(scenarioPath)) {
1129
- emit(scenarioPath, `${JSON.stringify(buildSmokeSidecar(steps, m.stepId, m.field), null, 2)}\n`);
1160
+ emit(scenarioPath, `${JSON.stringify(buildSmokeSidecar(steps, m.stepId, m.field, podDir), null, 2)}\n`);
1130
1161
  written.push(scenarioPath);
1131
1162
  }
1132
1163
  }
@@ -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('; ');