@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.
- package/installer/motor-scripts.json +2 -6
- package/package.json +4 -2
- package/scripts/forge-harden-learning.cjs +5 -2
- package/scripts/validate-no-clone.cjs +31 -7
- package/scripts/__fixtures__/anti-path-demo/agents/ap-writer.md +0 -13
- package/scripts/__fixtures__/anti-path-demo/templates/write-tmpl.md +0 -7
- package/scripts/__fixtures__/anti-path-demo/workflows/wf-ap.smoke.json +0 -10
- package/scripts/__fixtures__/anti-path-demo/workflows/wf-ap.yaml +0 -25
- package/scripts/__fixtures__/assess-tier/retrofit-leve/pod/agents/content-chief.md +0 -1
- package/scripts/__fixtures__/assess-tier/retrofit-leve/pod/workflows/wf-criacao-redteam.yaml +0 -3
- package/scripts/__fixtures__/assess-tier/retrofit-leve/pod-spec.json +0 -13
- package/scripts/__fixtures__/fidelity/fake-green-average-in-band.yaml +0 -21
- package/scripts/__fixtures__/fidelity/fake-green-average.yaml +0 -18
- package/scripts/__fixtures__/fidelity/fake-green-denominator.yaml +0 -19
- package/scripts/__fixtures__/fidelity/fake-green-missing-evidence.yaml +0 -18
- package/scripts/__fixtures__/fidelity/fake-green-threshold.yaml +0 -18
- package/scripts/__fixtures__/fidelity/fake-green-weight.yaml +0 -18
- package/scripts/__fixtures__/fidelity/golden.yaml +0 -31
- package/scripts/__fixtures__/fidelity/trindade-incoherent.yaml +0 -15
- package/scripts/__fixtures__/forge-canonical/pod-spec-example.json +0 -37
- package/scripts/__fixtures__/migrate-squad/authored/agents/offer-engineer.md +0 -17
- package/scripts/__fixtures__/migrate-squad/authored/knowledge/no-source.md +0 -7
- package/scripts/__fixtures__/migrate-squad/authored/knowledge/value-stack-method.md +0 -8
- package/scripts/__fixtures__/migrate-squad/authored/specs/wf-sample.smoke.json +0 -24
- package/scripts/__fixtures__/migrate-squad/authored/specs/wf-sample.spec.json +0 -45
- package/scripts/__fixtures__/migrate-squad/legacy-squad/HEADLINE.md +0 -3
- package/scripts/__fixtures__/migrate-squad/legacy-squad/README.md +0 -4
- package/scripts/__fixtures__/migrate-squad/legacy-squad/agents/hormozi-offer.md +0 -14
- package/scripts/__fixtures__/migrate-squad/legacy-squad/checklists/dead-redundant.md +0 -4
- package/scripts/__fixtures__/migrate-squad/legacy-squad/checklists/method-guide.md +0 -6
- package/scripts/__fixtures__/migrate-squad/legacy-squad/checklists/veto-screen.md +0 -4
- package/scripts/__fixtures__/migrate-squad/legacy-squad/config/config.yaml +0 -2
- package/scripts/__fixtures__/migrate-squad/legacy-squad/data/case-library.md +0 -3
- package/scripts/__fixtures__/migrate-squad/legacy-squad/scripts/validate-mvn.py +0 -16
- package/scripts/__fixtures__/migrate-squad/legacy-squad/sops/sop-sample.md +0 -3
- package/scripts/__fixtures__/migrate-squad/legacy-squad/squad-io.yaml +0 -14
- package/scripts/__fixtures__/migrate-squad/legacy-squad/tasks/gather-context.md +0 -7
- package/scripts/__fixtures__/migrate-squad/legacy-squad/templates/output-tmpl.md +0 -5
- package/scripts/__fixtures__/migrate-squad/legacy-squad/workflows/wf-sample.yaml +0 -24
- package/scripts/__fixtures__/pipeline/pipelines/pipeline-checkpoint.yaml +0 -21
- package/scripts/__fixtures__/pipeline/pipelines/pipeline-demo.yaml +0 -22
- package/scripts/__fixtures__/pipeline/pods/pipe-a/agents/maker.md +0 -13
- package/scripts/__fixtures__/pipeline/pods/pipe-a/memory/learnings.consolidated.md +0 -8
- package/scripts/__fixtures__/pipeline/pods/pipe-a/memory/learnings.jsonl +0 -83
- package/scripts/__fixtures__/pipeline/pods/pipe-a/templates/make-tmpl.md +0 -8
- package/scripts/__fixtures__/pipeline/pods/pipe-a/workflows/wf-a.yaml +0 -16
- package/scripts/__fixtures__/pipeline/pods/pipe-b/agents/user.md +0 -13
- package/scripts/__fixtures__/pipeline/pods/pipe-b/memory/learnings.consolidated.md +0 -8
- package/scripts/__fixtures__/pipeline/pods/pipe-b/memory/learnings.jsonl +0 -14
- package/scripts/__fixtures__/pipeline/pods/pipe-b/templates/use-tmpl.md +0 -6
- package/scripts/__fixtures__/pipeline/pods/pipe-b/workflows/wf-b.yaml +0 -16
- package/scripts/__fixtures__/pod-run/agents/forge-chief.md +0 -13
- package/scripts/__fixtures__/pod-run/agents/pod-critic.md +0 -13
- package/scripts/__fixtures__/pod-run/templates/build-tmpl.md +0 -8
- package/scripts/__fixtures__/pod-run/templates/gate-tmpl.md +0 -6
- package/scripts/__fixtures__/pod-run/workflows/wf-min.yaml +0 -43
- package/scripts/__fixtures__/pod-run/workflows/wf-skip-modes.yaml +0 -50
- package/scripts/__fixtures__/pod-workflow/invalid-checkpoint-all-skippable.yaml +0 -30
- package/scripts/__fixtures__/pod-workflow/invalid-checkpoint-criteria-escalar-de-bloco.yaml +0 -40
- package/scripts/__fixtures__/pod-workflow/invalid-checkpoint-skip-mode-desconhecido.yaml +0 -30
- package/scripts/__fixtures__/pod-workflow/invalid-checkpoint-unknown-key.yaml +0 -29
- package/scripts/__fixtures__/pod-workflow/invalid-cycle.yaml +0 -26
- package/scripts/__fixtures__/pod-workflow/invalid-fix-loop-backedge.yaml +0 -29
- package/scripts/__fixtures__/pod-workflow/invalid-fix-loop-forward.yaml +0 -29
- package/scripts/__fixtures__/pod-workflow/invalid-handoff-open.yaml +0 -27
- package/scripts/__fixtures__/pod-workflow/invalid-knowledge-shape.yaml +0 -18
- package/scripts/__fixtures__/pod-workflow/invalid-missing-agent.yaml +0 -15
- package/scripts/__fixtures__/pod-workflow/invalid-missing-outputs.yaml +0 -15
- package/scripts/__fixtures__/pod-workflow/invalid-missing-template.yaml +0 -15
- package/scripts/__fixtures__/pod-workflow/invalid-missing-veto.yaml +0 -13
- package/scripts/__fixtures__/pod-workflow/invalid-template-not-on-disk.yaml +0 -16
- package/scripts/__fixtures__/pod-workflow/invalid-veto-prose.yaml +0 -17
- package/scripts/__fixtures__/pod-workflow/knowledge/a.md +0 -4
- package/scripts/__fixtures__/pod-workflow/knowledge/b.md +0 -4
- package/scripts/__fixtures__/pod-workflow/knowledge/c.md +0 -4
- package/scripts/__fixtures__/pod-workflow/templates/step-tmpl.md +0 -7
- package/scripts/__fixtures__/pod-workflow/valid-checkpoint-skip-modes.yaml +0 -29
- package/scripts/__fixtures__/pod-workflow/valid-fix-loop.yaml +0 -30
- package/scripts/__fixtures__/pod-workflow/valid-knowledge.yaml +0 -30
- package/scripts/__fixtures__/pod-workflow/valid-veto-always-true.yaml +0 -20
- package/scripts/__fixtures__/pod-workflow/valid.yaml +0 -27
- package/scripts/__fixtures__/sf17.3/criteria-baseline.json +0 -18
- package/scripts/__fixtures__/smoke-canary/agents/canary-reporter.md +0 -13
- package/scripts/__fixtures__/smoke-canary/agents/canary-researcher.md +0 -13
- package/scripts/__fixtures__/smoke-canary/agents/canary-synth.md +0 -13
- package/scripts/__fixtures__/smoke-canary/memory/learnings.consolidated.md +0 -10
- package/scripts/__fixtures__/smoke-canary/memory/learnings.jsonl +0 -448
- package/scripts/__fixtures__/smoke-canary/templates/report-tmpl.md +0 -9
- package/scripts/__fixtures__/smoke-canary/templates/research-tmpl.md +0 -7
- package/scripts/__fixtures__/smoke-canary/templates/synth-tmpl.md +0 -9
- package/scripts/__fixtures__/smoke-canary/workflows/wf-canary.smoke.json +0 -11
- package/scripts/__fixtures__/smoke-canary/workflows/wf-canary.yaml +0 -53
- package/scripts/__fixtures__/source-audit/fake-green-bronze-unsignaled.yaml +0 -10
- package/scripts/__fixtures__/source-audit/fake-green-counts.yaml +0 -9
- package/scripts/__fixtures__/source-audit/fake-green-missing-evidence.yaml +0 -9
- package/scripts/__fixtures__/source-audit/fake-green-unclassified.yaml +0 -10
- package/scripts/__fixtures__/source-audit/fake-green-verdict.yaml +0 -10
- package/scripts/__fixtures__/source-audit/golden-blocked.yaml +0 -10
- package/scripts/__fixtures__/source-audit/golden.yaml +0 -11
- package/scripts/__fixtures__/sweep-forms/agents/forms-count.md +0 -13
- package/scripts/__fixtures__/sweep-forms/agents/forms-field.md +0 -13
- package/scripts/__fixtures__/sweep-forms/agents/forms-fileref.md +0 -13
- package/scripts/__fixtures__/sweep-forms/agents/forms-json.md +0 -13
- package/scripts/__fixtures__/sweep-forms/agents/forms-section.md +0 -13
- package/scripts/__fixtures__/sweep-forms/specs/wf-forms.spec.json +0 -5
- package/scripts/__fixtures__/sweep-forms/templates/t_count.md +0 -5
- package/scripts/__fixtures__/sweep-forms/templates/t_field.md +0 -3
- package/scripts/__fixtures__/sweep-forms/templates/t_fileref.md +0 -3
- package/scripts/__fixtures__/sweep-forms/templates/t_json.md +0 -0
- package/scripts/__fixtures__/sweep-forms/templates/t_section.md +0 -3
- package/scripts/__fixtures__/sweep-forms/workflows/wf-forms.smoke.json +0 -13
- package/scripts/__fixtures__/sweep-forms/workflows/wf-forms.yaml +0 -67
- package/scripts/__fixtures__/validate-spec-coverage/cli-com-orfao.spec.md +0 -7
- package/scripts/__fixtures__/validate-spec-coverage/cli-sem-orfao.spec.md +0 -11
- package/scripts/__fixtures__/validate-spec-coverage/contract4-noorfao.spec.md +0 -11
- package/scripts/__fixtures__/validate-spec-coverage/contract4.spec.md +0 -11
- package/scripts/__fixtures__/validate-spec-coverage/contract4.story.md +0 -5
- package/scripts/__fixtures__/validate-spec-coverage/coverage3-a.story.md +0 -7
- package/scripts/__fixtures__/validate-spec-coverage/coverage3-b.story.md +0 -5
- package/scripts/__fixtures__/validate-spec-coverage/coverage3.spec.md +0 -9
- package/scripts/__fixtures__/validate-spec-coverage/deferido-mutant.spec.md +0 -7
- package/scripts/__fixtures__/validate-spec-coverage/deferido-positive.spec.md +0 -11
- package/scripts/__fixtures__/validate-spec-coverage/deferido-trip-a-no-marker.spec.md +0 -3
- package/scripts/__fixtures__/validate-spec-coverage/deferido-trip-b-empty.spec.md +0 -3
- package/scripts/__fixtures__/validate-spec-coverage/deferido-trip-c-badanchor.spec.md +0 -5
- package/scripts/__fixtures__/validate-spec-coverage/deferido-trip-d-fenced.spec.md +0 -11
- package/scripts/__fixtures__/validate-spec-coverage/deferido-trip-e-dangling.spec.md +0 -3
- package/scripts/__fixtures__/validate-spec-coverage/dup-fr3.spec.md +0 -11
- package/scripts/__fixtures__/validate-spec-coverage/fr6-semantic.spec.md +0 -5
- package/scripts/__fixtures__/validate-spec-coverage/fr6-semantic.story.md +0 -7
- package/scripts/__fixtures__/validate-spec-coverage/rastreio-precision.story.md +0 -19
- package/scripts/__fixtures__/validate-spec-coverage-corpus/sf17-fatia2-covered-786b82a/README.txt +0 -3
- package/scripts/__fixtures__/validate-spec-coverage-corpus/sf17-fatia2-covered-786b82a/SPEC-linguagem-clara-fatia2.md +0 -174
- package/scripts/__fixtures__/validate-spec-coverage-corpus/sf17-fatia2-covered-786b82a/sf17.2.story.md +0 -275
- package/scripts/__fixtures__/validate-spec-coverage-corpus/sf17-fatia2-covered-786b82a/sf17.3.story.md +0 -244
- package/scripts/__fixtures__/validate-spec-coverage-corpus/sf17-fatia2-frozen-786b82a/README.txt +0 -7
- package/scripts/__fixtures__/validate-spec-coverage-corpus/sf17-fatia2-frozen-786b82a/SPEC-linguagem-clara-fatia2.md +0 -174
- package/scripts/__fixtures__/validate-spec-coverage-corpus/sf17-fatia2-frozen-786b82a/sf17.2.story.md +0 -275
- package/scripts/__fixtures__/validate-spec-coverage-corpus/sf17-fatia2-frozen-786b82a/sf17.3.story.md +0 -242
- package/scripts/__fixtures__/validate-story-acs-corpus/corpus-1-noop-state-json.fixture.md +0 -18
- package/scripts/__fixtures__/validate-story-acs-corpus/corpus-2-crash-buildworkflowyaml.fixture.md +0 -26
- package/scripts/__fixtures__/validate-story-acs-corpus/corpus-3-nasce-verde-skip-modes.fixture.md +0 -29
- package/scripts/__fixtures__/validate-story-acs-corpus/corpus-4-guarda-sem-irmao.fixture.md +0 -17
- package/scripts/__fixtures__/validate-story-acs-corpus/corpus-5a-diff-stat-sem-guarda.fixture.md +0 -17
- package/scripts/__fixtures__/validate-story-acs-corpus/corpus-5b-test-f-sobre-diretorio.fixture.md +0 -20
- package/scripts/__fixtures__/veto-checks/copy-clean.md +0 -4
- package/scripts/__fixtures__/veto-checks/copy-dashes.md +0 -4
- package/scripts/__fixtures__/veto-checks/n8n-bad.md +0 -18
- package/scripts/__fixtures__/veto-checks/n8n-ok.md +0 -22
- package/scripts/__fixtures__/veto-checks/page-bad.html +0 -7
- package/scripts/__fixtures__/veto-checks/phash/copy.png +0 -0
- package/scripts/__fixtures__/veto-checks/phash/distinct.png +0 -0
- package/scripts/__fixtures__/veto-checks/phash/distinct2.png +0 -0
- package/scripts/__fixtures__/veto-checks/phash/make-fixtures.cjs +0 -203
- package/scripts/__fixtures__/veto-checks/phash/ref.png +0 -0
- package/scripts/__fixtures__/veto-checks/slide-ok.html +0 -15
- package/scripts/__fixtures__/veto-checks/slide-overflow.html +0 -14
- package/scripts/__fixtures__/veto-checks/sweep-pod/agents/vc-checker.md +0 -13
- package/scripts/__fixtures__/veto-checks/sweep-pod/templates/check-tmpl.md +0 -6
- package/scripts/__fixtures__/veto-checks/sweep-pod/workflows/wf-vc.smoke.json +0 -10
- package/scripts/__fixtures__/veto-checks/sweep-pod/workflows/wf-vc.yaml +0 -19
- package/scripts/__fixtures__/voz-do-dono/README.md +0 -23
- package/scripts/__fixtures__/voz-do-dono/dono-escalar.yaml +0 -9
- package/scripts/__fixtures__/voz-do-dono/dono-guia.yaml +0 -10
- package/scripts/__fixtures__/voz-do-dono/peca-3a-pessoa.md +0 -6
- package/scripts/__fixtures__/voz-do-dono/peca-com-lexico-proibido.md +0 -6
- package/scripts/__fixtures__/voz-do-dono/peca-limpa-1a-pessoa.md +0 -6
- package/scripts/__tests__/derive-ready-transitions.test.cjs +0 -269
- package/scripts/__tests__/enforce-cycle-authority.test.cjs +0 -869
- package/scripts/__tests__/enforce-git-push-authority.test.cjs +0 -988
- package/scripts/__tests__/enforce-ready-oracles.test.cjs +0 -745
- package/scripts/__tests__/forge-register-entry-point.test.cjs +0 -91
- package/scripts/__tests__/motor-scripts.test.cjs +0 -339
- package/scripts/__tests__/pc-run-pod-apply-production.test.cjs +0 -283
- package/scripts/__tests__/pc-run-pod-content-carousel-b2.test.cjs +0 -208
- package/scripts/__tests__/pc-run-pod-content-carousel.test.cjs +0 -219
- package/scripts/__tests__/pc-run-pod-counter.test.cjs +0 -58
- package/scripts/__tests__/pc-run-pod-describe.test.cjs +0 -158
- package/scripts/__tests__/pc-run-pod-non-carousel-b2.test.cjs +0 -227
- package/scripts/__tests__/pc-run-pod-render-criteria.test.cjs +0 -270
- package/scripts/__tests__/pc-run-pod-resolve.test.cjs +0 -150
- package/scripts/__tests__/pc-run-pod-tokens.test.cjs +0 -178
- package/scripts/__tests__/pc-run-pod.test.cjs +0 -607
- package/scripts/__tests__/spec-wf-criteria-sync.test.cjs +0 -171
- package/scripts/__tests__/validate-pod-workflow.test.cjs +0 -90
- package/scripts/__tests__/validate-spec-coverage.test.cjs +0 -239
- package/scripts/__tests__/validate-story-acs.test.cjs +0 -607
- package/scripts/anti-path.test.cjs +0 -163
- package/scripts/arena.test.cjs +0 -213
- package/scripts/brief-leitura-obrigatoria.test.cjs +0 -366
- package/scripts/build-public-tree.cjs +0 -372
- package/scripts/consolidate-knowledge-runner.test.cjs +0 -249
- package/scripts/default-funcional.test.cjs +0 -153
- package/scripts/derive-ready-transitions.cjs +0 -361
- package/scripts/forge-additive.test.cjs +0 -158
- package/scripts/forge-assess-tier.test.cjs +0 -114
- package/scripts/forge-canonical.test.cjs +0 -624
- package/scripts/forge-harden-learning.test.cjs +0 -242
- package/scripts/forge.test.cjs +0 -609
- package/scripts/harden-knowledge.test.cjs +0 -612
- package/scripts/harness-g5-lite.test.cjs +0 -134
- package/scripts/hn-carousel-contrato-entrada.test.cjs +0 -96
- package/scripts/migrate-squad-orchestration.test.cjs +0 -146
- package/scripts/migration-manifest-sf3.2.test.cjs +0 -382
- package/scripts/migration-manifest-sf3.3.test.cjs +0 -170
- package/scripts/migration-manifest-sf5.5.test.cjs +0 -189
- package/scripts/migration-manifest.test.cjs +0 -186
- package/scripts/npm-scope-invocation.test.cjs +0 -194
- package/scripts/owner-layer.cjs +0 -442
- package/scripts/owner-layer.test.cjs +0 -358
- package/scripts/pc-run-pipeline.test.cjs +0 -256
- package/scripts/pc-run-pod-countgte.test.cjs +0 -66
- package/scripts/phash-gate.test.cjs +0 -433
- package/scripts/pod-export-compile.test.cjs +0 -312
- package/scripts/pod-export-executor.test.cjs +0 -1344
- package/scripts/pod-export-hardening.test.cjs +0 -531
- package/scripts/pod-export-postprocess.test.cjs +0 -560
- package/scripts/pod-export-queue-race.test.cjs +0 -865
- package/scripts/pod-export-release.test.cjs +0 -267
- package/scripts/pod-export-service.test.cjs +0 -491
- package/scripts/pod-export-ui.test.cjs +0 -301
- package/scripts/pod-memory-budget.test.cjs +0 -309
- package/scripts/pod-memory-note.test.cjs +0 -452
- package/scripts/pod-memory.test.cjs +0 -951
- package/scripts/render-png.test.cjs +0 -307
- package/scripts/smoke-isolation.test.cjs +0 -100
- package/scripts/smoke-sweep.test.cjs +0 -170
- package/scripts/validate-adopt.js +0 -235
- package/scripts/validate-branding.js +0 -100
- package/scripts/validate-fidelity-output.test.cjs +0 -101
- package/scripts/validate-git-vetor.cjs +0 -99
- package/scripts/validate-install.js +0 -230
- package/scripts/validate-no-clone.test.cjs +0 -77
- package/scripts/validate-source-audit.test.cjs +0 -90
- package/scripts/validate-spec-coverage.cjs +0 -364
- package/scripts/validate-update-scope-motor.js +0 -421
- 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.
|
|
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
|
-
|
|
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
|
-
* - +
|
|
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
|
-
/**
|
|
69
|
-
|
|
70
|
-
|
|
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,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,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,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,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.
|