@daniellins/power-claude 0.16.3
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.
Potentially problematic release.
This version of @daniellins/power-claude might be problematic. Click here for more details.
- package/LICENSE +21 -0
- package/README.md +121 -0
- package/bin/cli.js +124 -0
- package/installer/__tests__/doctor-ready-oracles.test.cjs +140 -0
- package/installer/__tests__/merge-settings.test.cjs +330 -0
- package/installer/adopt.js +161 -0
- package/installer/copy.js +203 -0
- package/installer/doctor.js +266 -0
- package/installer/install.js +155 -0
- package/installer/manifest.js +102 -0
- package/installer/motor-scripts.js +50 -0
- package/installer/motor-scripts.json +39 -0
- package/installer/uninstall.js +99 -0
- package/installer/update.js +376 -0
- package/installer/util.js +113 -0
- package/installer/wizard.js +64 -0
- package/package.json +26 -0
- package/scripts/__fixtures__/anti-path-demo/agents/ap-writer.md +13 -0
- package/scripts/__fixtures__/anti-path-demo/templates/write-tmpl.md +7 -0
- package/scripts/__fixtures__/anti-path-demo/workflows/wf-ap.smoke.json +10 -0
- package/scripts/__fixtures__/anti-path-demo/workflows/wf-ap.yaml +25 -0
- package/scripts/__fixtures__/assess-tier/retrofit-leve/pod/agents/content-chief.md +1 -0
- package/scripts/__fixtures__/assess-tier/retrofit-leve/pod/workflows/wf-criacao-redteam.yaml +3 -0
- package/scripts/__fixtures__/assess-tier/retrofit-leve/pod-spec.json +13 -0
- package/scripts/__fixtures__/fidelity/fake-green-average-in-band.yaml +21 -0
- package/scripts/__fixtures__/fidelity/fake-green-average.yaml +18 -0
- package/scripts/__fixtures__/fidelity/fake-green-denominator.yaml +19 -0
- package/scripts/__fixtures__/fidelity/fake-green-missing-evidence.yaml +18 -0
- package/scripts/__fixtures__/fidelity/fake-green-threshold.yaml +18 -0
- package/scripts/__fixtures__/fidelity/fake-green-weight.yaml +18 -0
- package/scripts/__fixtures__/fidelity/golden.yaml +31 -0
- package/scripts/__fixtures__/fidelity/trindade-incoherent.yaml +15 -0
- package/scripts/__fixtures__/forge-canonical/pod-spec-example.json +37 -0
- package/scripts/__fixtures__/migrate-squad/authored/agents/offer-engineer.md +17 -0
- package/scripts/__fixtures__/migrate-squad/authored/knowledge/no-source.md +7 -0
- package/scripts/__fixtures__/migrate-squad/authored/knowledge/value-stack-method.md +8 -0
- package/scripts/__fixtures__/migrate-squad/authored/specs/wf-sample.smoke.json +24 -0
- package/scripts/__fixtures__/migrate-squad/authored/specs/wf-sample.spec.json +45 -0
- package/scripts/__fixtures__/migrate-squad/legacy-squad/HEADLINE.md +3 -0
- package/scripts/__fixtures__/migrate-squad/legacy-squad/README.md +4 -0
- package/scripts/__fixtures__/migrate-squad/legacy-squad/agents/hormozi-offer.md +14 -0
- package/scripts/__fixtures__/migrate-squad/legacy-squad/checklists/dead-redundant.md +4 -0
- package/scripts/__fixtures__/migrate-squad/legacy-squad/checklists/method-guide.md +6 -0
- package/scripts/__fixtures__/migrate-squad/legacy-squad/checklists/veto-screen.md +4 -0
- package/scripts/__fixtures__/migrate-squad/legacy-squad/config/config.yaml +2 -0
- package/scripts/__fixtures__/migrate-squad/legacy-squad/data/case-library.md +3 -0
- package/scripts/__fixtures__/migrate-squad/legacy-squad/scripts/validate-mvn.py +16 -0
- package/scripts/__fixtures__/migrate-squad/legacy-squad/sops/sop-sample.md +3 -0
- package/scripts/__fixtures__/migrate-squad/legacy-squad/squad-io.yaml +14 -0
- package/scripts/__fixtures__/migrate-squad/legacy-squad/tasks/gather-context.md +7 -0
- package/scripts/__fixtures__/migrate-squad/legacy-squad/templates/output-tmpl.md +5 -0
- package/scripts/__fixtures__/migrate-squad/legacy-squad/workflows/wf-sample.yaml +24 -0
- package/scripts/__fixtures__/pipeline/pipelines/pipeline-checkpoint.yaml +21 -0
- package/scripts/__fixtures__/pipeline/pipelines/pipeline-demo.yaml +22 -0
- package/scripts/__fixtures__/pipeline/pods/pipe-a/agents/maker.md +13 -0
- package/scripts/__fixtures__/pipeline/pods/pipe-a/memory/learnings.consolidated.md +8 -0
- package/scripts/__fixtures__/pipeline/pods/pipe-a/memory/learnings.jsonl +83 -0
- package/scripts/__fixtures__/pipeline/pods/pipe-a/templates/make-tmpl.md +8 -0
- package/scripts/__fixtures__/pipeline/pods/pipe-a/workflows/wf-a.yaml +16 -0
- package/scripts/__fixtures__/pipeline/pods/pipe-b/agents/user.md +13 -0
- package/scripts/__fixtures__/pipeline/pods/pipe-b/memory/learnings.consolidated.md +8 -0
- package/scripts/__fixtures__/pipeline/pods/pipe-b/memory/learnings.jsonl +14 -0
- package/scripts/__fixtures__/pipeline/pods/pipe-b/templates/use-tmpl.md +6 -0
- package/scripts/__fixtures__/pipeline/pods/pipe-b/workflows/wf-b.yaml +16 -0
- package/scripts/__fixtures__/pod-run/agents/forge-chief.md +13 -0
- package/scripts/__fixtures__/pod-run/agents/pod-critic.md +13 -0
- package/scripts/__fixtures__/pod-run/templates/build-tmpl.md +8 -0
- package/scripts/__fixtures__/pod-run/templates/gate-tmpl.md +6 -0
- package/scripts/__fixtures__/pod-run/workflows/wf-min.yaml +43 -0
- package/scripts/__fixtures__/pod-run/workflows/wf-skip-modes.yaml +50 -0
- package/scripts/__fixtures__/pod-workflow/invalid-checkpoint-all-skippable.yaml +30 -0
- package/scripts/__fixtures__/pod-workflow/invalid-checkpoint-criteria-escalar-de-bloco.yaml +40 -0
- package/scripts/__fixtures__/pod-workflow/invalid-checkpoint-skip-mode-desconhecido.yaml +30 -0
- package/scripts/__fixtures__/pod-workflow/invalid-checkpoint-unknown-key.yaml +29 -0
- package/scripts/__fixtures__/pod-workflow/invalid-cycle.yaml +26 -0
- package/scripts/__fixtures__/pod-workflow/invalid-fix-loop-backedge.yaml +29 -0
- package/scripts/__fixtures__/pod-workflow/invalid-fix-loop-forward.yaml +29 -0
- package/scripts/__fixtures__/pod-workflow/invalid-handoff-open.yaml +27 -0
- package/scripts/__fixtures__/pod-workflow/invalid-knowledge-shape.yaml +18 -0
- package/scripts/__fixtures__/pod-workflow/invalid-missing-agent.yaml +15 -0
- package/scripts/__fixtures__/pod-workflow/invalid-missing-outputs.yaml +15 -0
- package/scripts/__fixtures__/pod-workflow/invalid-missing-template.yaml +15 -0
- package/scripts/__fixtures__/pod-workflow/invalid-missing-veto.yaml +13 -0
- package/scripts/__fixtures__/pod-workflow/invalid-template-not-on-disk.yaml +16 -0
- package/scripts/__fixtures__/pod-workflow/invalid-veto-prose.yaml +17 -0
- package/scripts/__fixtures__/pod-workflow/knowledge/a.md +4 -0
- package/scripts/__fixtures__/pod-workflow/knowledge/b.md +4 -0
- package/scripts/__fixtures__/pod-workflow/knowledge/c.md +4 -0
- package/scripts/__fixtures__/pod-workflow/templates/step-tmpl.md +7 -0
- package/scripts/__fixtures__/pod-workflow/valid-checkpoint-skip-modes.yaml +29 -0
- package/scripts/__fixtures__/pod-workflow/valid-fix-loop.yaml +30 -0
- package/scripts/__fixtures__/pod-workflow/valid-knowledge.yaml +30 -0
- package/scripts/__fixtures__/pod-workflow/valid-veto-always-true.yaml +20 -0
- package/scripts/__fixtures__/pod-workflow/valid.yaml +27 -0
- package/scripts/__fixtures__/smoke-canary/agents/canary-reporter.md +13 -0
- package/scripts/__fixtures__/smoke-canary/agents/canary-researcher.md +13 -0
- package/scripts/__fixtures__/smoke-canary/agents/canary-synth.md +13 -0
- package/scripts/__fixtures__/smoke-canary/memory/learnings.consolidated.md +10 -0
- package/scripts/__fixtures__/smoke-canary/memory/learnings.jsonl +448 -0
- package/scripts/__fixtures__/smoke-canary/templates/report-tmpl.md +9 -0
- package/scripts/__fixtures__/smoke-canary/templates/research-tmpl.md +7 -0
- package/scripts/__fixtures__/smoke-canary/templates/synth-tmpl.md +9 -0
- package/scripts/__fixtures__/smoke-canary/workflows/wf-canary.smoke.json +11 -0
- package/scripts/__fixtures__/smoke-canary/workflows/wf-canary.yaml +53 -0
- package/scripts/__fixtures__/source-audit/fake-green-bronze-unsignaled.yaml +10 -0
- package/scripts/__fixtures__/source-audit/fake-green-counts.yaml +9 -0
- package/scripts/__fixtures__/source-audit/fake-green-missing-evidence.yaml +9 -0
- package/scripts/__fixtures__/source-audit/fake-green-unclassified.yaml +10 -0
- package/scripts/__fixtures__/source-audit/fake-green-verdict.yaml +10 -0
- package/scripts/__fixtures__/source-audit/golden-blocked.yaml +10 -0
- package/scripts/__fixtures__/source-audit/golden.yaml +11 -0
- package/scripts/__fixtures__/sweep-forms/agents/forms-count.md +13 -0
- package/scripts/__fixtures__/sweep-forms/agents/forms-field.md +13 -0
- package/scripts/__fixtures__/sweep-forms/agents/forms-fileref.md +13 -0
- package/scripts/__fixtures__/sweep-forms/agents/forms-json.md +13 -0
- package/scripts/__fixtures__/sweep-forms/agents/forms-section.md +13 -0
- package/scripts/__fixtures__/sweep-forms/specs/wf-forms.spec.json +5 -0
- package/scripts/__fixtures__/sweep-forms/templates/t_count.md +5 -0
- package/scripts/__fixtures__/sweep-forms/templates/t_field.md +3 -0
- package/scripts/__fixtures__/sweep-forms/templates/t_fileref.md +3 -0
- package/scripts/__fixtures__/sweep-forms/templates/t_json.md +0 -0
- package/scripts/__fixtures__/sweep-forms/templates/t_section.md +3 -0
- package/scripts/__fixtures__/sweep-forms/workflows/wf-forms.smoke.json +13 -0
- package/scripts/__fixtures__/sweep-forms/workflows/wf-forms.yaml +67 -0
- package/scripts/__fixtures__/validate-story-acs-corpus/corpus-1-noop-state-json.fixture.md +18 -0
- package/scripts/__fixtures__/validate-story-acs-corpus/corpus-2-crash-buildworkflowyaml.fixture.md +26 -0
- package/scripts/__fixtures__/validate-story-acs-corpus/corpus-3-nasce-verde-skip-modes.fixture.md +29 -0
- package/scripts/__fixtures__/validate-story-acs-corpus/corpus-4-guarda-sem-irmao.fixture.md +17 -0
- package/scripts/__fixtures__/validate-story-acs-corpus/corpus-5a-diff-stat-sem-guarda.fixture.md +17 -0
- package/scripts/__fixtures__/validate-story-acs-corpus/corpus-5b-test-f-sobre-diretorio.fixture.md +20 -0
- package/scripts/__fixtures__/veto-checks/copy-clean.md +4 -0
- package/scripts/__fixtures__/veto-checks/copy-dashes.md +4 -0
- package/scripts/__fixtures__/veto-checks/n8n-bad.md +18 -0
- package/scripts/__fixtures__/veto-checks/n8n-ok.md +22 -0
- package/scripts/__fixtures__/veto-checks/page-bad.html +7 -0
- 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 +203 -0
- package/scripts/__fixtures__/veto-checks/phash/ref.png +0 -0
- package/scripts/__fixtures__/veto-checks/slide-ok.html +15 -0
- package/scripts/__fixtures__/veto-checks/slide-overflow.html +14 -0
- package/scripts/__fixtures__/veto-checks/sweep-pod/agents/vc-checker.md +13 -0
- package/scripts/__fixtures__/veto-checks/sweep-pod/templates/check-tmpl.md +6 -0
- package/scripts/__fixtures__/veto-checks/sweep-pod/workflows/wf-vc.smoke.json +10 -0
- package/scripts/__fixtures__/veto-checks/sweep-pod/workflows/wf-vc.yaml +19 -0
- package/scripts/__fixtures__/voz-do-dono/README.md +23 -0
- package/scripts/__fixtures__/voz-do-dono/dono-escalar.yaml +9 -0
- package/scripts/__fixtures__/voz-do-dono/dono-guia.yaml +10 -0
- package/scripts/__fixtures__/voz-do-dono/peca-3a-pessoa.md +6 -0
- package/scripts/__fixtures__/voz-do-dono/peca-com-lexico-proibido.md +6 -0
- package/scripts/__fixtures__/voz-do-dono/peca-limpa-1a-pessoa.md +6 -0
- package/scripts/__tests__/derive-ready-transitions.test.cjs +269 -0
- package/scripts/__tests__/enforce-cycle-authority.test.cjs +869 -0
- package/scripts/__tests__/enforce-git-push-authority.test.cjs +701 -0
- package/scripts/__tests__/enforce-ready-oracles.test.cjs +745 -0
- package/scripts/__tests__/motor-scripts.test.cjs +339 -0
- package/scripts/__tests__/pc-run-pod-counter.test.cjs +58 -0
- package/scripts/__tests__/pc-run-pod.test.cjs +578 -0
- package/scripts/__tests__/validate-pod-workflow.test.cjs +90 -0
- package/scripts/__tests__/validate-story-acs.test.cjs +607 -0
- package/scripts/anti-path.test.cjs +163 -0
- package/scripts/arena.cjs +514 -0
- package/scripts/arena.test.cjs +213 -0
- package/scripts/brief-leitura-obrigatoria.test.cjs +364 -0
- package/scripts/consolidate-knowledge-runner.test.cjs +249 -0
- package/scripts/default-funcional.test.cjs +153 -0
- package/scripts/derive-ready-transitions.cjs +325 -0
- package/scripts/forge-additive.test.cjs +158 -0
- package/scripts/forge-assess-tier.cjs +205 -0
- package/scripts/forge-assess-tier.test.cjs +114 -0
- package/scripts/forge-canonical.test.cjs +624 -0
- package/scripts/forge-generate.cjs +1303 -0
- package/scripts/forge-harden-learning.cjs +921 -0
- package/scripts/forge-harden-learning.test.cjs +242 -0
- package/scripts/forge-ingest-memory.cjs +136 -0
- package/scripts/forge-upgrade-pod.cjs +368 -0
- package/scripts/forge.test.cjs +609 -0
- package/scripts/harden-knowledge.test.cjs +612 -0
- package/scripts/harness-g5-lite.cjs +243 -0
- package/scripts/harness-g5-lite.test.cjs +134 -0
- package/scripts/hn-carousel-contrato-entrada.test.cjs +96 -0
- package/scripts/migrate-squad-orchestration.test.cjs +146 -0
- package/scripts/migration-manifest-sf3.2.test.cjs +382 -0
- package/scripts/migration-manifest-sf3.3.test.cjs +170 -0
- package/scripts/migration-manifest-sf5.5.test.cjs +189 -0
- package/scripts/migration-manifest.cjs +1146 -0
- package/scripts/migration-manifest.test.cjs +186 -0
- package/scripts/npm-scope-invocation.test.cjs +194 -0
- package/scripts/owner-layer.cjs +442 -0
- package/scripts/owner-layer.test.cjs +358 -0
- package/scripts/pc-run-pipeline.cjs +289 -0
- package/scripts/pc-run-pipeline.test.cjs +256 -0
- package/scripts/pc-run-pod-countgte.test.cjs +66 -0
- package/scripts/pc-run-pod.cjs +1355 -0
- package/scripts/phash-gate.test.cjs +433 -0
- package/scripts/pod-export-compile.cjs +487 -0
- package/scripts/pod-export-compile.test.cjs +312 -0
- package/scripts/pod-export-executor.cjs +678 -0
- package/scripts/pod-export-executor.test.cjs +1341 -0
- package/scripts/pod-export-hardening.test.cjs +531 -0
- package/scripts/pod-export-postprocess.cjs +427 -0
- package/scripts/pod-export-postprocess.test.cjs +558 -0
- package/scripts/pod-export-queue-race.test.cjs +865 -0
- package/scripts/pod-export-release.cjs +473 -0
- package/scripts/pod-export-release.test.cjs +267 -0
- package/scripts/pod-export-service.cjs +1297 -0
- package/scripts/pod-export-service.test.cjs +489 -0
- package/scripts/pod-export-tools.cjs +470 -0
- package/scripts/pod-export-ui.cjs +805 -0
- package/scripts/pod-export-ui.test.cjs +301 -0
- package/scripts/pod-memory-budget.test.cjs +309 -0
- package/scripts/pod-memory-note.cjs +357 -0
- package/scripts/pod-memory-note.test.cjs +452 -0
- package/scripts/pod-memory.cjs +1252 -0
- package/scripts/pod-memory.test.cjs +951 -0
- package/scripts/render-png.test.cjs +307 -0
- package/scripts/smoke-isolation.test.cjs +100 -0
- package/scripts/smoke-pod-workflow.cjs +755 -0
- package/scripts/smoke-sweep.test.cjs +170 -0
- package/scripts/validate-adopt.js +235 -0
- package/scripts/validate-branding.js +84 -0
- package/scripts/validate-budgets.js +140 -0
- package/scripts/validate-fidelity-output.cjs +267 -0
- package/scripts/validate-fidelity-output.test.cjs +101 -0
- package/scripts/validate-install.js +230 -0
- package/scripts/validate-no-clone.cjs +220 -0
- package/scripts/validate-no-clone.test.cjs +77 -0
- package/scripts/validate-pipeline.cjs +145 -0
- package/scripts/validate-pod-workflow.cjs +878 -0
- package/scripts/validate-source-audit.cjs +170 -0
- package/scripts/validate-source-audit.test.cjs +90 -0
- package/scripts/validate-story-acs.cjs +862 -0
- package/scripts/validate-update-scope-motor.js +421 -0
- package/scripts/veto-checks/html-valid.cjs +92 -0
- package/scripts/veto-checks/lexical-check.cjs +62 -0
- package/scripts/veto-checks/phash-gate.cjs +589 -0
- package/scripts/veto-checks/render-gate.cjs +165 -0
- package/scripts/veto-checks/render-png.cjs +358 -0
- package/scripts/veto-checks.test.cjs +219 -0
- package/scripts/watcher-audit.cjs +178 -0
- package/template/.claude/CLAUDE.md +103 -0
- package/template/.claude/agents/pc-analyst.md +100 -0
- package/template/.claude/agents/pc-architect.md +32 -0
- package/template/.claude/agents/pc-dev.md +27 -0
- package/template/.claude/agents/pc-devops.md +45 -0
- package/template/.claude/agents/pc-planner.md +32 -0
- package/template/.claude/agents/pc-po.md +25 -0
- package/template/.claude/agents/pc-qa.md +25 -0
- package/template/.claude/commands/power/academy.md +9 -0
- package/template/.claude/commands/power/automation.md +9 -0
- package/template/.claude/commands/power/content-carousel.md +267 -0
- package/template/.claude/commands/power/content.md +9 -0
- package/template/.claude/commands/power/dev.md +9 -0
- package/template/.claude/commands/power/forge.md +224 -0
- package/template/.claude/commands/power/hormozi.md +221 -0
- package/template/.claude/commands/power/modo.md +57 -0
- package/template/.claude/hooks/README.md +114 -0
- package/template/.claude/hooks/context-budget.cjs +64 -0
- package/template/.claude/hooks/enforce-cycle-authority.cjs +457 -0
- package/template/.claude/hooks/enforce-git-push-authority.cjs +925 -0
- package/template/.claude/hooks/enforce-ready-oracles.cjs +502 -0
- package/template/.claude/rules/authority.md +76 -0
- package/template/.claude/rules/curadoria-de-conhecimento.md +30 -0
- package/template/.claude/rules/model-matrix.md +34 -0
- package/template/.claude/rules/orchestration.md +133 -0
- package/template/.claude/settings.json +50 -0
- package/template/.claude/skills/pc-apply-qa-fixes/SKILL.md +108 -0
- package/template/.claude/skills/pc-apply-qa-fixes/references/fix-loop.md +40 -0
- package/template/.claude/skills/pc-apply-qa-fixes/references/fix-request-template.md +70 -0
- package/template/.claude/skills/pc-arena/SKILL.md +96 -0
- package/template/.claude/skills/pc-close-story/SKILL.md +105 -0
- package/template/.claude/skills/pc-commit/SKILL.md +108 -0
- package/template/.claude/skills/pc-develop-story/SKILL.md +116 -0
- package/template/.claude/skills/pc-full-cycle/SKILL.md +150 -0
- package/template/.claude/skills/pc-pipeline/SKILL.md +63 -0
- package/template/.claude/skills/pc-pipeline/references/gate-templates.md +46 -0
- package/template/.claude/skills/pc-review-story/SKILL.md +129 -0
- package/template/.claude/skills/pc-review-story/references/false-positive-detection.md +50 -0
- package/template/.claude/skills/pc-review-story/references/nfr-assess.md +47 -0
- package/template/.claude/skills/pc-review-story/references/risk-profile.md +75 -0
- package/template/.claude/skills/pc-review-story/references/security-checklist.md +69 -0
- package/template/.claude/skills/pc-review-story/references/test-design.md +37 -0
- package/template/.claude/skills/pc-review-story/references/trace-requirements.md +46 -0
- package/template/.claude/skills/pc-run-pod/SKILL.md +123 -0
- package/template/.claude/skills/pc-validate-story/SKILL.md +114 -0
- package/template/.claude/skills/pc-wave/SKILL.md +133 -0
- package/template/.env.example +10 -0
- package/template/knowledge/analyst/brainstorming.md +40 -0
- package/template/knowledge/analyst/brief-skeleton.md +32 -0
- package/template/knowledge/analyst/competitor-skeleton.md +39 -0
- package/template/knowledge/analyst/elicitation-menu.md +49 -0
- package/template/knowledge/analyst/market-research-skeleton.md +36 -0
- package/template/knowledge/analyst/research-prompt-structure.md +48 -0
- package/template/knowledge/analyst/roi-skeleton.md +51 -0
- package/template/knowledge/voice-dna/README.md +99 -0
- package/template/knowledge/voice-dna/voice-dna.example.yaml +157 -0
- package/template/pods/README.md +64 -0
- package/template/pods/academy/README.md +37 -0
- package/template/pods/academy/agents/academy-chief.md +27 -0
- package/template/pods/academy/examples/palestra.example.md +142 -0
- package/template/pods/academy/pod-spec.json +44 -0
- package/template/pods/academy/templates/materiais-tmpl.md +17 -0
- package/template/pods/academy/templates/revisao-didatica-tmpl.md +20 -0
- package/template/pods/academy/workflows/wf-materiais-revisao.yaml +30 -0
- package/template/pods/authority-content/README.md +43 -0
- package/template/pods/authority-content/agents/content-chief.md +28 -0
- package/template/pods/authority-content/pod-spec.json +45 -0
- package/template/pods/authority-content/templates/criacao-na-voz-tmpl.md +17 -0
- package/template/pods/authority-content/templates/red-team-factual-tmpl.md +23 -0
- package/template/pods/authority-content/workflows/wf-criacao-redteam.yaml +30 -0
- package/template/pods/automation/README.md +37 -0
- package/template/pods/automation/agents/langgraph-architect.md +30 -0
- package/template/pods/automation/agents/n8n-architect.md +30 -0
- package/template/pods/automation/examples/README.md +46 -0
- package/template/pods/automation/examples/n8n-content-radar.example.json +380 -0
- package/template/pods/automation/knowledge/langgraph-patterns.md +126 -0
- package/template/pods/automation/knowledge/n8n-patterns.md +131 -0
- package/template/pods/automation/memory/README.md +16 -0
- package/template/pods/automation/memory/learnings.consolidated.md +8 -0
- package/template/pods/automation/memory/learnings.jsonl +0 -0
- package/template/pods/automation/pod-spec.json +109 -0
- package/template/pods/automation/specs/wf-langgraph-build.spec.json +107 -0
- package/template/pods/automation/squad-io.yaml +28 -0
- package/template/pods/automation/templates/lg-build-tmpl.md +17 -0
- package/template/pods/automation/templates/lg-design-tmpl.md +23 -0
- package/template/pods/automation/templates/lg-discover-tmpl.md +20 -0
- package/template/pods/automation/templates/lg-handoff-tmpl.md +20 -0
- package/template/pods/automation/templates/lg-test-tmpl.md +20 -0
- package/template/pods/automation/templates/n8n-build-tmpl.md +14 -0
- package/template/pods/automation/templates/n8n-design-tmpl.md +23 -0
- package/template/pods/automation/templates/n8n-discover-tmpl.md +20 -0
- package/template/pods/automation/templates/n8n-handoff-tmpl.md +20 -0
- package/template/pods/automation/templates/n8n-test-tmpl.md +20 -0
- package/template/pods/automation/workflows/wf-langgraph-build.smoke.json +11 -0
- package/template/pods/automation/workflows/wf-langgraph-build.yaml +64 -0
- package/template/pods/automation/workflows/wf-n8n-build.smoke.json +11 -0
- package/template/pods/automation/workflows/wf-n8n-build.yaml +65 -0
- package/template/pods/content-carousel/README.md +91 -0
- package/template/pods/content-carousel/agents/carousel-builder.md +28 -0
- package/template/pods/content-carousel/agents/carousel-visual.md +24 -0
- package/template/pods/content-carousel/agents/hn-curator.md +74 -0
- package/template/pods/content-carousel/config/heuristic-watcher-rubric.yaml +59 -0
- package/template/pods/content-carousel/knowledge/aquisicao-ancora.md +443 -0
- package/template/pods/content-carousel/knowledge/cta-brief.md +25 -0
- package/template/pods/content-carousel/knowledge/dono.example.yaml +45 -0
- package/template/pods/content-carousel/knowledge/identidade-visual-mascote.md +62 -0
- package/template/pods/content-carousel/knowledge/image-generation.md +62 -0
- package/template/pods/content-carousel/knowledge/selecao-de-ancora.md +60 -0
- package/template/pods/content-carousel/knowledge/slides-html.md +56 -0
- package/template/pods/content-carousel/memory/README.md +18 -0
- package/template/pods/content-carousel/memory/learnings.consolidated.md +6 -0
- package/template/pods/content-carousel/memory/learnings.jsonl +0 -0
- package/template/pods/content-carousel/pod-spec.json +100 -0
- package/template/pods/content-carousel/squad-io.yaml +10 -0
- package/template/pods/content-carousel/templates/assembly-tmpl.md +23 -0
- package/template/pods/content-carousel/templates/digest-tmpl.md +29 -0
- package/template/pods/content-carousel/templates/visuals-tmpl.md +20 -0
- package/template/pods/content-carousel/workflows/wf-content-carousel.smoke.json +23 -0
- package/template/pods/content-carousel/workflows/wf-content-carousel.yaml +80 -0
- package/template/pods/dev-ia/README.md +45 -0
- package/template/pods/dev-ia/agents/db-architect.md +33 -0
- package/template/pods/dev-ia/agents/ux-architect.md +29 -0
- package/template/pods/dev-ia/knowledge/db/migration-protocol.md +95 -0
- package/template/pods/dev-ia/knowledge/db/rls-patterns.md +101 -0
- package/template/pods/dev-ia/knowledge/db/schema-review-checklist.md +76 -0
- package/template/pods/dev-ia/memory/README.md +16 -0
- package/template/pods/dev-ia/memory/learnings.consolidated.md +8 -0
- package/template/pods/dev-ia/memory/learnings.jsonl +0 -0
- package/template/pods/dev-ia/pod-spec.json +34 -0
- package/template/pods/dev-ia/templates/schema-review-tmpl.md +23 -0
- package/template/pods/dev-ia/templates/ux-flow-review-tmpl.md +23 -0
- package/template/pods/dev-ia/tools/db-ops/backup-manager.sh +321 -0
- package/template/pods/dev-ia/tools/db-ops/best-practices-auditor.sh +534 -0
- package/template/pods/dev-ia/tools/db-ops/bootstrap-runner.sh +255 -0
- package/template/pods/dev-ia/tools/db-ops/data-loader.sh +616 -0
- package/template/pods/dev-ia/tools/db-ops/detect-database.sh +113 -0
- package/template/pods/dev-ia/tools/db-ops/explain-analyzer.sh +285 -0
- package/template/pods/dev-ia/tools/db-ops/health-checker.sh +323 -0
- package/template/pods/dev-ia/tools/db-ops/migration-runner.sh +308 -0
- package/template/pods/dev-ia/tools/db-ops/postgresql-schema-loader.sh +334 -0
- package/template/pods/dev-ia/tools/db-ops/query-runner.sh +171 -0
- package/template/pods/dev-ia/tools/db-ops/rls-policy-installer.sh +480 -0
- package/template/pods/dev-ia/tools/db-ops/rls-test-suite.sh +172 -0
- package/template/pods/dev-ia/tools/db-ops/schema-context-loader.sh +176 -0
- package/template/pods/hormozi-method/README.md +52 -0
- package/template/pods/hormozi-method/agents/acquisition-strategist.md +33 -0
- package/template/pods/hormozi-method/agents/conversion-copywriter.md +34 -0
- package/template/pods/hormozi-method/agents/monetization-architect.md +35 -0
- package/template/pods/hormozi-method/agents/offer-engineer.md +37 -0
- package/template/pods/hormozi-method/knowledge/core-four-leads.md +51 -0
- package/template/pods/hormozi-method/knowledge/grand-slam-offer.md +66 -0
- package/template/pods/hormozi-method/knowledge/growth-decision.md +38 -0
- package/template/pods/hormozi-method/knowledge/hooks-and-ads.md +56 -0
- package/template/pods/hormozi-method/knowledge/launch-email.md +31 -0
- package/template/pods/hormozi-method/knowledge/money-model.md +46 -0
- package/template/pods/hormozi-method/knowledge/opportunity-screening.md +44 -0
- package/template/pods/hormozi-method/knowledge/pages.md +25 -0
- package/template/pods/hormozi-method/knowledge/pos-lancamento-leads.md +56 -0
- package/template/pods/hormozi-method/knowledge/pricing.md +36 -0
- package/template/pods/hormozi-method/knowledge/retention-ltv.md +37 -0
- package/template/pods/hormozi-method/knowledge/scale-roadmap.md +35 -0
- package/template/pods/hormozi-method/knowledge/swipefiles-curados.md +44 -0
- package/template/pods/hormozi-method/knowledge/value-equation-diagnostic.md +77 -0
- package/template/pods/hormozi-method/memory/README.md +16 -0
- package/template/pods/hormozi-method/memory/learnings.consolidated.md +6 -0
- package/template/pods/hormozi-method/memory/learnings.jsonl +0 -0
- package/template/pods/hormozi-method/pod-spec.json +50 -0
- package/template/pods/hormozi-method/specs/wf-full-launch-sequence.spec.json +149 -0
- package/template/pods/hormozi-method/specs/wf-lead-magnet-pipeline.spec.json +125 -0
- package/template/pods/hormozi-method/specs/wf-money-model-design.spec.json +117 -0
- package/template/pods/hormozi-method/specs/wf-paid-ads-campaign.spec.json +132 -0
- package/template/pods/hormozi-method/specs/wf-scaling-diagnostic.spec.json +121 -0
- package/template/pods/hormozi-method/squad-io.yaml +43 -0
- package/template/pods/hormozi-method/templates/conversion-copywriter-tmpl.md +20 -0
- package/template/pods/hormozi-method/templates/launch-execucao-tmpl.md +17 -0
- package/template/pods/hormozi-method/templates/launch-fechamento-tmpl.md +17 -0
- package/template/pods/hormozi-method/templates/launch-pos-tmpl.md +17 -0
- package/template/pods/hormozi-method/templates/launch-preparacao-tmpl.md +17 -0
- package/template/pods/hormozi-method/templates/lm-copy-tmpl.md +17 -0
- package/template/pods/hormozi-method/templates/lm-distribuicao-tmpl.md +18 -0
- package/template/pods/hormozi-method/templates/lm-estrategia-tmpl.md +17 -0
- package/template/pods/hormozi-method/templates/mm-arquitetura-tmpl.md +18 -0
- package/template/pods/hormozi-method/templates/mm-copy-tmpl.md +17 -0
- package/template/pods/hormozi-method/templates/mm-diagnostico-tmpl.md +14 -0
- package/template/pods/hormozi-method/templates/monetization-architect-tmpl.md +17 -0
- package/template/pods/hormozi-method/templates/offer-engineer-tmpl.md +20 -0
- package/template/pods/hormozi-method/templates/paid-criativos-tmpl.md +19 -0
- package/template/pods/hormozi-method/templates/paid-fundacao-tmpl.md +17 -0
- package/template/pods/hormozi-method/templates/paid-teste-escala-tmpl.md +17 -0
- package/template/pods/hormozi-method/templates/scaling-diagnostico-tmpl.md +17 -0
- package/template/pods/hormozi-method/templates/scaling-priorizacao-tmpl.md +17 -0
- package/template/pods/hormozi-method/templates/scaling-roadmap-tmpl.md +17 -0
- package/template/pods/hormozi-method/workflows/wf-full-launch-sequence.smoke.json +12 -0
- package/template/pods/hormozi-method/workflows/wf-full-launch-sequence.yaml +56 -0
- package/template/pods/hormozi-method/workflows/wf-grand-slam-offer.smoke.json +11 -0
- package/template/pods/hormozi-method/workflows/wf-grand-slam-offer.yaml +45 -0
- package/template/pods/hormozi-method/workflows/wf-lead-magnet-pipeline.smoke.json +9 -0
- package/template/pods/hormozi-method/workflows/wf-lead-magnet-pipeline.yaml +45 -0
- package/template/pods/hormozi-method/workflows/wf-money-model-design.smoke.json +11 -0
- package/template/pods/hormozi-method/workflows/wf-money-model-design.yaml +45 -0
- package/template/pods/hormozi-method/workflows/wf-paid-ads-campaign.smoke.json +9 -0
- package/template/pods/hormozi-method/workflows/wf-paid-ads-campaign.yaml +46 -0
- package/template/pods/hormozi-method/workflows/wf-scaling-diagnostic.smoke.json +11 -0
- package/template/pods/hormozi-method/workflows/wf-scaling-diagnostic.yaml +44 -0
- package/template/pods/squad-forge/README.md +53 -0
- package/template/pods/squad-forge/agents/forge-chief.md +31 -0
- package/template/pods/squad-forge/agents/mind-extractor.md +29 -0
- package/template/pods/squad-forge/agents/pod-critic.md +26 -0
- package/template/pods/squad-forge/config/heuristic-watcher-rubric.yaml +74 -0
- package/template/pods/squad-forge/knowledge/fidelity-rubric.yaml +176 -0
- package/template/pods/squad-forge/knowledge/g6-memory-check.md +17 -0
- package/template/pods/squad-forge/knowledge/memory-ingest.md +16 -0
- package/template/pods/squad-forge/knowledge/source-audit-rubric.yaml +60 -0
- package/template/pods/squad-forge/memory/README.md +16 -0
- package/template/pods/squad-forge/memory/learnings.consolidated.md +8 -0
- package/template/pods/squad-forge/memory/learnings.jsonl +0 -0
- package/template/pods/squad-forge/pod-spec.json +166 -0
- package/template/pods/squad-forge/squad-io.yaml +13 -0
- package/template/pods/squad-forge/tasks/pipeline.md +158 -0
- package/template/pods/squad-forge/templates/discovery-tmpl.md +40 -0
- package/template/pods/squad-forge/templates/generation-tmpl.md +18 -0
- package/template/pods/squad-forge/templates/red-team-tmpl.md +17 -0
- package/template/pods/squad-forge/templates/register-tmpl.md +17 -0
- package/template/pods/squad-forge/templates/workflow-tmpl.yaml +101 -0
- package/template/pods/squad-forge/workflows/wf-forge.smoke.json +12 -0
- package/template/pods/squad-forge/workflows/wf-forge.yaml +60 -0
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
# Orquestração do Ciclo — Sessão Coordenadora e Subagentes
|
|
2
|
+
|
|
3
|
+
Regra global do ambiente POWER CLAUDE. Aplica-se a qualquer projeto com o framework instalado (detectável por `.claude/skills/pc-full-cycle/` e papéis do ciclo em `.claude/agents/`). Sem o framework, desenvolvimento normal.
|
|
4
|
+
|
|
5
|
+
## Regra central
|
|
6
|
+
|
|
7
|
+
**Toda mudança de código roda pelo ciclo com os papéis encarnados em subagentes** — o humano não invoca papéis manualmente. A sessão principal atua como **coordenadora**:
|
|
8
|
+
|
|
9
|
+
- **Investiga read-only** para diagnosticar antes de despachar — diagnóstico rico no brief economiza o contexto dos subagentes.
|
|
10
|
+
- **Monta briefs completos:** paths/linhas exatos, ACs, limites de autoridade (ex.: dev não faz push) e o que retornar.
|
|
11
|
+
- **Roteia handoffs** entre fases; o resultado resumido de um papel entra no brief do próximo.
|
|
12
|
+
- **Reporta ao humano** apenas marcos e decisões de produto.
|
|
13
|
+
|
|
14
|
+
## Núcleo garantido + especialistas por gatilho
|
|
15
|
+
|
|
16
|
+
Núcleo em toda mudança (via `pc-full-cycle`):
|
|
17
|
+
|
|
18
|
+
```
|
|
19
|
+
planner (story) → po (valida, Draft→Ready) → dev (implementa, sem push) → qa (gate adversarial) → devops (push/PR/merge — exclusivo)
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
Especialistas entram quando o conteúdo exige. O gatilho fica **registrado na story**, e o PO **não transiciona a Ready com gatilho insatisfeito**:
|
|
23
|
+
|
|
24
|
+
| Especialista | Gatilho |
|
|
25
|
+
|---|---|
|
|
26
|
+
| analyst | Pesquisa/benchmark necessário antes de especificar |
|
|
27
|
+
| architect | Dependência de arquitetura declarada na story, ou complexidade STANDARD+ |
|
|
28
|
+
| db-architect | DDL, RLS, migrations |
|
|
29
|
+
| ux-architect | Interface nova ou alterada |
|
|
30
|
+
|
|
31
|
+
Um gatilho pode ser **condicional a outro papel**: ex.: architect aciona só se a forma escolhida pelo ux-architect tocar contrato. Quem decide se o gatilho disparou é o **PO na validação**, não o próprio especialista.
|
|
32
|
+
|
|
33
|
+
## Eficiência de tokens (OBRIGATÓRIO)
|
|
34
|
+
|
|
35
|
+
1. **Agente fresco por story** nos papéis de execução (dev/qa/devops): nunca manter um agente vivo através de múltiplas stories — o reprocessamento do transcript cresce quadraticamente com as retomadas. O contexto viaja no brief. Retomada do MESMO agente (SendMessage) só DENTRO do ciclo da mesma story (fix rounds).
|
|
36
|
+
2. **Relatórios ≤15 linhas por contrato:** o retorno de cada subagente se limita a branch/sha, arquivos, verificações e desvios — detalhes, evidências e racionais vão na STORY (o registro auditável), não no relatório. O brief pede isso explicitamente.
|
|
37
|
+
3. **`effort: low` em etapas mecânicas** (transições de status, commits de docs, cópias/relatórios simples) via parâmetro do Agent tool; effort padrão nas etapas de julgamento.
|
|
38
|
+
|
|
39
|
+
**Ressalva inegociável:** gates de qualidade (validação do PO, gate adversarial do QA) NUNCA são onde se economiza — nenhuma das regras acima os afrouxa.
|
|
40
|
+
|
|
41
|
+
## Contrato de brief (o que todo dispatch inclui)
|
|
42
|
+
|
|
43
|
+
1. Paths (e linhas, quando relevante) exatos dos arquivos envolvidos.
|
|
44
|
+
2. ACs da story e critérios de aceite verificáveis.
|
|
45
|
+
3. Limites de autoridade do papel (ex.: dev não faz push; QA não implementa fixes). **Toda restrição ALÉM da autoridade padrão do papel cita a LINHA exata de `.claude/rules/authority.md` que a sustenta** (`authority.md:{linha}`, com a frase da linha); não havendo nenhuma, o campo escreve verbatim "nenhuma restrição além da autoridade padrão do papel" (`DF-SF13.3-1`). **Restrição sem âncora não vale** — o papel obedece a um brief errado sem ter como contestá-lo. Origem: `FINDING-5` do gate `SF13.11`, onde o brief mandou o Dev "não commitar" e `authority.md:10` não sustentava a restrição — a linha lista "commits locais" na coluna "Autoridade exclusiva" do Dev, e o que ela bloqueia na coluna "Proibido" é `git push`, não o commit —, e o resultado foi entregável fora do git.
|
|
46
|
+
4. O que retornar — e a instrução explícita: "relatório final ≤15 linhas; detalhes vão na story". **E a instrução explícita de commitar o artefato exclusivo do papel antes de fechar o turno** — gate file do QA, `Status`/`File List` do Dev, transição `Ready` do PO: o papel roda `git status --short`, não deixa nada seu *untracked*, commita ele mesmo e reporta o sha do commit (`DF-SF13.3-2`). Qual é o artefato exclusivo de cada papel se lê na coluna "Autoridade exclusiva" de `authority.md:9-15`; para o gate file, em `authority.md:17` ("só QA escreve `docs/qa/gates/*.yaml`"). Commitar ANTES de encerrar é do próprio papel, nunca de quem vier depois: o artefato deixado para trás é varrido, sem crédito, para dentro do commit de outro papel. Origem: 3ª ocorrência de "trabalho do papel não commitado" (`docs/stories/sf13.7.story.md`, Change Log `v1.5`) — o gate file da 1ª passada do QA ficou *untracked* e entrou no repo dentro de `40c48ae`, o commit do fix round do `pc-planner`. **E nenhum turno termina "aguardando" um processo em background que ele mesmo lançou** — background não sobrevive ao fim do turno que o lançou; o que não for colhido (lido, verificado) DENTRO do mesmo turno se perde, e o brief nunca instrui um papel a esperar por ele (`DF-SF13.4-1`). Origem: 3 ocorrências da tabela do dono ("agente encerra esperando background que morreu com ele", `docs/stories/epic-sf13-processo-a-prova-de-falhas.md:55`) + 1 ocorrência viva desta rodada (`docs/stories/release-0.16.1.story.md`, Dev Agent Record → Desvios registrados: "Watchdog em background não sobrevive ao fim do turno do agente" — watchdog e monitor lançados em background, nenhuma notificação chegou, corrigido reexecutando em foreground).
|
|
47
|
+
5. **Todo número/afirmação vem com o método de medição** (ver disciplina abaixo) — sem isso o subagente não consegue falsificar, e erro da coordenadora vira premissa.
|
|
48
|
+
|
|
49
|
+
### Esqueleto do brief (`DF-SF13.3-3`)
|
|
50
|
+
|
|
51
|
+
Copiar e preencher. Os 5 campos são os 5 itens do contrato acima; os campos 3 e 4 trazem os dois remédios já embutidos (`DF-SF13.3-1` e `DF-SF13.3-2`), justamente para que nenhum dos dois dependa de a coordenadora lembrar deles na hora do dispatch. Campo que não se aplica é preenchido com a frase-padrão, nunca apagado — um campo ausente não se distingue de um campo esquecido.
|
|
52
|
+
|
|
53
|
+
```text
|
|
54
|
+
[Papel] pc-{papel} — Story {ID} — repo {repo} — branch {branch} @ {sha}
|
|
55
|
+
|
|
56
|
+
1. Paths exatos (com linhas, quando relevante):
|
|
57
|
+
- {arquivo}:{linhas} — {o que há ali}
|
|
58
|
+
|
|
59
|
+
2. ACs / critérios de aceite verificáveis:
|
|
60
|
+
- {AC-n}: {enunciado} — oráculo: {comando executável}
|
|
61
|
+
|
|
62
|
+
3. Autoridade: padrão do papel, conforme .claude/rules/authority.md.
|
|
63
|
+
Restrições ALÉM do padrão (cada uma com âncora obrigatória):
|
|
64
|
+
- {restrição} — âncora: authority.md:{linha} — "{frase da linha que a sustenta}"
|
|
65
|
+
Se não houver nenhuma: "nenhuma restrição além da autoridade padrão do papel".
|
|
66
|
+
|
|
67
|
+
4. O que retornar: relatório final ≤15 linhas (branch/sha, arquivos, verificações,
|
|
68
|
+
desvios); detalhes, evidências e racionais vão na STORY, não no relatório.
|
|
69
|
+
Antes de encerrar o turno: rodar `git status --short`, commitar o artefato
|
|
70
|
+
exclusivo deste papel — {gate file / Status + File List / transição de status} —
|
|
71
|
+
e reportar o sha do commit. Nada seu pode ficar untracked ao fim do turno.
|
|
72
|
+
Nenhum processo em background lançado por este turno pode ficar para outro
|
|
73
|
+
colher: o que não for colhido AGORA some com o fim do turno.
|
|
74
|
+
|
|
75
|
+
5. Medição: todo número e toda afirmação vêm com o método (comando executado ou
|
|
76
|
+
linha lida). Amostra é declarada como amostra. Sem método verificado, escrever
|
|
77
|
+
"não consegui verificar".
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
## Disciplina de medição da coordenadora (OBRIGATÓRIO)
|
|
81
|
+
|
|
82
|
+
Nasceu de **7 erros da mesma classe numa única sessão** (2026-08-06/07), todos por **usar contagem ou amostra como se fosse prova**. Nenhum chegou a `main` — os papéis contestaram —, mas cada um custou pelo menos uma rodada.
|
|
83
|
+
|
|
84
|
+
**1. Contagem NUNCA conclui.** `grep -c`, `wc -l`, `ls | wc`, contagem de diretórios servem para **triagem**. Para **afirmar**, é obrigatório ler a linha inteira (`grep -n` + leitura) ou executar o caso. Em documento longo e estruturado, contagem engana quase sempre — o termo procurado aparece em negação, em change log, em declaração de escopo.
|
|
85
|
+
*Casos: "3 pods" era declaração de escopo; "NÃO satisfeito" era a negação dele; "6 runs" eram diretórios, não rodadas (eram 21).*
|
|
86
|
+
|
|
87
|
+
**2. Amostra é declarada como amostra.** Testou 1 de N ⇒ escreve "testei 1 de N", nunca "os N". *Caso: rodei o smoke em 1 workflow, vi falhar, escrevi "os 5 falham" — dois davam 4/4 verde.*
|
|
88
|
+
|
|
89
|
+
**3. Presença de artefato não prova autoria.** Antes de concluir "X usa isto", checar distribuição temporal e origem (`stat`, `git log` do commit que trouxe os arquivos, repetição de parâmetros). *Caso: 21 artefatos de rodada, todos no mesmo minuto, eram evidência de harness — reportei ao dono como uso dele.*
|
|
90
|
+
|
|
91
|
+
**4. Inferência de subagente não vira fato da coordenadora.** Repassar sempre como inferência **dele**, com o método, para o dono poder duvidar.
|
|
92
|
+
|
|
93
|
+
**5. Nunca pular etapa do processo por julgamento de tamanho.** *Caso: pulei a 2ª passada de `*review` numa story "pequena"; o PO barrou, e a passada faltante achou 3 bloqueantes — um deles de segurança.*
|
|
94
|
+
|
|
95
|
+
**6. `A...B` (três pontos) sempre**, para "o que esta branch muda". Dois pontos em branch atrasada mostra o que `main` avançou.
|
|
96
|
+
|
|
97
|
+
**Regra de ouro:** *se não li a linha nem executei o caso, a frase certa é **"não consegui verificar"*** — custa uma linha; afirmar errado custa uma rodada, ou vira premissa que ninguém reexamina.
|
|
98
|
+
|
|
99
|
+
## Higiene de documento normativo (OBRIGATÓRIO)
|
|
100
|
+
|
|
101
|
+
Épico/ADR/regra que **envelhece sem remedição** é a segunda fonte de retrabalho, e a mais silenciosa: fica afirmando o superado até alguém tropeçar, e quem lê **copia de boa-fé**.
|
|
102
|
+
|
|
103
|
+
1. **Story que fecha uma dívida verifica onde ela está citada** — fechar na origem e deixar as cópias é o padrão observado 3× (épico 2×, ADR 1×).
|
|
104
|
+
2. **Correção de texto superado vem com a negação explícita** ("não mais X; leitura superada, não repetir"), não só com a substituição — porque o defeito costuma ser um AC mandando gravar a frase antiga.
|
|
105
|
+
3. **Documento que afirma completude tem de nomear sobre o quê** ("satisfeito para A e B", nunca "para os 3") — foi assim que se descobriu que o `hn-carousel` estava fora.
|
|
106
|
+
4. **Exemplo/comando dentro de ADR, review ou regra precisa ter sido EXECUTADO** — texto normativo não testado propaga o defeito **com autoridade**. Ocorreu 3×: exemplo de AC no ADR-030, comando com assinatura errada num `*review`, e uma memória da coordenadora afirmando mais do que fora medido.
|
|
107
|
+
5. **Não afirme o estado de outro artefato — delegue a ele** (`DF-SF13.5-4`, `ADR-036`). Documento normativo que precisa se referir ao estado de algo que vive em OUTRO lugar (um checklist, uma story, um diretório, uma release) **cita o path e diz quem manda** ("a fonte é `X`; quem manda é ela, não este parágrafo"), em vez de congelar o estado em prosa. As formas que envelhecem são conhecidas e nomeadas: *"ainda não chegou"*, *"segue pendente/ausente"*, *"bloqueado até Z"*, *"N itens sem Y"*. Quando forem inevitáveis, vêm **na mesma frase** com o path da fonte que as decide — e enumeração de estado (*"os 5 pods sem workflow são…"*) não se escreve em prosa: escreve-se o comando que a produz, ou não se escreve. Os itens 1-4 mandam lembrar num momento futuro; este muda o que se pode escrever no único instante em que o autor está garantidamente presente. **Detector automático desta classe foi medido e recusado** (`ADR-036`: 88% e 67% de falso-positivo) — não existe rede embaixo desta regra, e é por isso que ela não vem sozinha (ver a superfície do `*release` em `pc-devops.md`).
|
|
108
|
+
|
|
109
|
+
## Práticas de orquestração
|
|
110
|
+
|
|
111
|
+
1. **Paralelizar frentes independentes** (ex.: dev código ∥ devops infra); barreira só onde há dependência real.
|
|
112
|
+
2. **Worktree para o dev** (`isolation: worktree`) quando houver risco de colisão com outra frente ativa.
|
|
113
|
+
3. **Divergência técnica entre especialistas:** resolver por verificação de código (não por autoridade da coordenadora) e registrar a resolução na story.
|
|
114
|
+
4. **Ficam com o humano:** decisões de produto (escopo, prioridade quando ambígua), trade-offs de risco e ações destrutivas/irreversíveis.
|
|
115
|
+
5. **Usuário testando a working tree principal:** rode **dev e QA em worktrees isoladas** (`isolation: worktree`), QA em porta alternativa, merge só no fim — zero interferência no ambiente do usuário. Como a branch fica travada na worktree do dev, o QA commita o filho direto e a **coordenadora** avança a branch com `git -C <worktree-dev> merge --ff-only`.
|
|
116
|
+
6. **Antes de qualquer commit/escrita de estado próprio, a coordenadora confere `git branch --show-current` E o cwd.** Checkout residual de uma publicação anterior já fez a coordenadora commitar em branch errada (2 incidentes reais).
|
|
117
|
+
7. **Em toda missão `*release`, a coordenadora revisa CHANGELOG e versão ANTES de apresentar o PR ao dono — nunca depois, nunca em paralelo.** O incidente da `0.16.0` (CHANGELOG apresentado como pronto e corrigido em paralelo com o dono já revisando) teve causa-raiz na ordem de operação da coordenadora, não na ausência de um gate de QA formal para `*release` — por isso a correção é de prática de orquestração, não de missão nova do `pc-devops`.
|
|
118
|
+
|
|
119
|
+
## Memória de papel — o caminho é curadoria humana, não pipeline (`DF-SF12.3-7`)
|
|
120
|
+
|
|
121
|
+
Um aprendizado de ciclo (o que `.power-claude/cycle/learnings.md` tentava capturar por story, hoje morto e `gitignored`) vira regra ou comportamento duradouro por **curadoria manual do dono**: ele lê o aprendizado, decide que vale a pena reter, e o promove para um arquivo em `.claude/rules/*.md`. Não existe pipeline automático (`learnings.jsonl`, poda, consolidação, orçamento de admissão) — e a prova de que esse caminho já funciona é este próprio arquivo: `orchestration.md` nasceu assim, por curadoria, não por pipeline.
|
|
122
|
+
|
|
123
|
+
**Por que não existe pipeline:** custo × volume não fecha conta. `.power-claude/cycle/learnings.md` acumulou 18 entradas em 4 meses antes de morrer — volume baixo demais para pagar o aparato que um pipeline exigiria (custo de memória por admissão, poda periódica, consolidação, orçamento de tokens). A arquitetura já está decidida e não é reaberta aqui: memória de papel é da **instância** (`second-brain/.power-claude/`), nunca do `template/` — o framework não acumula aprendizado de uma instalação específica.
|
|
124
|
+
|
|
125
|
+
## Referências
|
|
126
|
+
|
|
127
|
+
- Autoridade por papel: `.claude/rules/authority.md`
|
|
128
|
+
- Matriz de modelos: `.claude/rules/model-matrix.md` (e `economy-mode.md` quando o modo econômico está ativo via `/power:modo`)
|
|
129
|
+
- Destino de artefatos ao fechar trabalho (o que documentar, parquear ou descartar): `.claude/rules/curadoria-de-conhecimento.md`
|
|
130
|
+
|
|
131
|
+
## Por que `planner`/`analyst`/`architect` não recebem hook (`DF-SF12.3-8`)
|
|
132
|
+
|
|
133
|
+
Os 2 hooks de autoridade desta story (`.claude/hooks/enforce-cycle-authority.cjs`, ver `authority.md`) cobrem `po`/`dev`/`qa`; `devops` já tinha o seu. `planner`, `analyst` e `architect` ficam de fora **por desenho, não por lacuna**: são papéis de **julgamento** (SPEC, pesquisa, decisão de arquitetura) — não existe um predicado de disco que separe uma decisão boa de uma ruim para esse tipo de trabalho (mesma classe de limite nomeada no `ADR-002`). O que os governa é a régua do próprio papel (o gabarito de qualidade descrito em cada `.claude/agents/pc-*.md`), não um hook `PreToolUse`. **Evidência de que isso já funciona, medida, não hipotética:** o achado (d) do `ADR-029` — "0 de 3 erros de coordenadora pegos por qualquer motor, mas pegos por papel lendo o disco e contestando" — e o achado (g) desta própria story (SF12.3): um `pc-qa` despachado para agir fora do próprio limite de papel **recusou, duas vezes**, sem hook nenhum. Disciplina de papel segura a fronteira de julgamento; hook mecaniza só as 2 garantias de autoridade que não podem depender de disciplina (Bloco C/D).
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
{
|
|
2
|
+
"language": "portuguese",
|
|
3
|
+
"permissions": {
|
|
4
|
+
"deny": [
|
|
5
|
+
"Read(.env)",
|
|
6
|
+
"Read(.env.*)"
|
|
7
|
+
]
|
|
8
|
+
},
|
|
9
|
+
"hooks": {
|
|
10
|
+
"PreToolUse": [
|
|
11
|
+
{
|
|
12
|
+
"matcher": "Bash",
|
|
13
|
+
"hooks": [
|
|
14
|
+
{
|
|
15
|
+
"type": "command",
|
|
16
|
+
"command": "node \"$CLAUDE_PROJECT_DIR/.claude/hooks/enforce-git-push-authority.cjs\"",
|
|
17
|
+
"timeout": 10
|
|
18
|
+
}
|
|
19
|
+
]
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"matcher": "Edit|Write",
|
|
23
|
+
"hooks": [
|
|
24
|
+
{
|
|
25
|
+
"type": "command",
|
|
26
|
+
"command": "node \"$CLAUDE_PROJECT_DIR/.claude/hooks/enforce-cycle-authority.cjs\"",
|
|
27
|
+
"timeout": 10
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"type": "command",
|
|
31
|
+
"command": "node \"$CLAUDE_PROJECT_DIR/.claude/hooks/enforce-ready-oracles.cjs\"",
|
|
32
|
+
"timeout": 10
|
|
33
|
+
}
|
|
34
|
+
]
|
|
35
|
+
}
|
|
36
|
+
],
|
|
37
|
+
"PostToolUse": [
|
|
38
|
+
{
|
|
39
|
+
"matcher": "Read",
|
|
40
|
+
"hooks": [
|
|
41
|
+
{
|
|
42
|
+
"type": "command",
|
|
43
|
+
"command": "node \"$CLAUDE_PROJECT_DIR/.claude/hooks/context-budget.cjs\"",
|
|
44
|
+
"timeout": 10
|
|
45
|
+
}
|
|
46
|
+
]
|
|
47
|
+
}
|
|
48
|
+
]
|
|
49
|
+
}
|
|
50
|
+
}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: pc-apply-qa-fixes
|
|
3
|
+
description: "Aplica os findings de um QA gate FAIL/CONCERNS e devolve a story para re-review — nunca se auto-aprova. Use para: corrigir reprovação de QA, tratar findings do gate, remediar gate FAIL, rodar iteração do loop de fix."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# pc-apply-qa-fixes — Correção de Findings de QA (papel Dev)
|
|
7
|
+
|
|
8
|
+
Protocolo completo e autocontido. Nenhuma engine externa é necessária.
|
|
9
|
+
|
|
10
|
+
## Quando usar
|
|
11
|
+
|
|
12
|
+
Existe gate file em `docs/qa/gates/{story}.yaml` com veredito **FAIL** (ou **CONCERNS** que o humano decidiu tratar). A story voltou para `InProgress`.
|
|
13
|
+
|
|
14
|
+
## Pré-condições
|
|
15
|
+
|
|
16
|
+
1. Gate file existe e foi lido por completo.
|
|
17
|
+
2. Você está na branch da story (branch guard de `pc-develop-story` continua valendo — nunca em `main`).
|
|
18
|
+
3. Contagem de iterações do loop conhecida (ver "Limite de iterações").
|
|
19
|
+
|
|
20
|
+
## Protocolo
|
|
21
|
+
|
|
22
|
+
> **Protocolos aprofundados (carregue sob demanda):** o passo-a-passo determinístico de 8 fases do loop está em `references/fix-loop.md`; o template estruturado do pedido de correção (antes/depois + verificação por item + constraints de escopo) em `references/fix-request-template.md`. Para julgar se um finding aponta bug real ou é falso positivo antes de corrigir, use o teste de causação de `../pc-review-story/references/false-positive-detection.md`.
|
|
23
|
+
|
|
24
|
+
### Passo 1 — Inventário TOTAL antes de corrigir
|
|
25
|
+
|
|
26
|
+
Antes de tocar em qualquer arquivo, monte a tabela de inventário com **TODOS** os findings do gate file (e da seção QA Results). Proibido corrigir "de cabeça" o primeiro finding e descobrir os outros depois — inventário incompleto é a causa clássica de loop desperdiçado.
|
|
27
|
+
|
|
28
|
+
| # | Finding (do gate) | Severidade | Decisão | Justificativa/Dono |
|
|
29
|
+
|---|---|---|---|---|
|
|
30
|
+
| 1 | ... | bloqueante/menor | FIXED / WON'T_FIX / DEFERRED | ... |
|
|
31
|
+
|
|
32
|
+
### Passo 2 — Classificar cada finding
|
|
33
|
+
|
|
34
|
+
Cada finding recebe exatamente uma decisão:
|
|
35
|
+
|
|
36
|
+
- **FIXED** — corrigido nesta iteração, com causa-raiz tratada (não sintoma mascarado).
|
|
37
|
+
- **WON'T_FIX** — não será corrigido, com justificativa técnica explícita (ex.: fora de escopo dos ACs, comportamento intencional). Precisa convencer o QA na re-review; justificativa fraca vira FAIL de novo.
|
|
38
|
+
- **DEFERRED** — será tratado depois, com **dono nomeado** (story futura criada/apontada, ou humano que assumiu). DEFERRED sem dono e destino não existe.
|
|
39
|
+
|
|
40
|
+
Nenhum finding pode ficar sem decisão. Silêncio sobre um finding = FAIL automático na re-review.
|
|
41
|
+
|
|
42
|
+
### Passo 3 — Corrigir os FIXED
|
|
43
|
+
|
|
44
|
+
- Trate a causa-raiz. Nunca suprima o erro (skip de teste, `ts-ignore`, desligar lint) para o gate "passar".
|
|
45
|
+
- Siga o No Invention: corrija o finding, não aproveite para refactors fora de escopo.
|
|
46
|
+
- Atualize a File List da story com qualquer arquivo novo/modificado.
|
|
47
|
+
- Registre no Dev Agent Record: iteração N do loop, findings tratados, decisões `[AUTO-DECISION]` se houver.
|
|
48
|
+
|
|
49
|
+
### Passo 4 — Re-rodar TODOS os gates
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
npm run lint
|
|
53
|
+
npm run typecheck
|
|
54
|
+
npm test
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
Todos verdes na sua execução local, com saída registrada no Dev Agent Record. Se a correção quebrou outra coisa, conserte antes de devolver — devolver com gate vermelho conhecido queima uma iteração do loop à toa.
|
|
58
|
+
|
|
59
|
+
### Passo 5 — Commit e devolução para re-review
|
|
60
|
+
|
|
61
|
+
1. Commit local convencional via `pc-commit`: `fix: trata findings do QA gate [Story X.Y]`.
|
|
62
|
+
2. Atualize `Status: InProgress` → `Status: InReview`.
|
|
63
|
+
3. Devolva explicitamente para `pc-review-story` com a tabela de inventário preenchida (finding → decisão → evidência).
|
|
64
|
+
|
|
65
|
+
**NUNCA se auto-aprove.** Você não seta `Done`, não edita QA Results, não reescreve o veredito do gate file. A palavra final é do papel QA, em contexto independente (`.claude/rules/authority.md`).
|
|
66
|
+
|
|
67
|
+
## Limite de iterações
|
|
68
|
+
|
|
69
|
+
O loop FAIL → fix → re-review tem **máximo 3 iterações**.
|
|
70
|
+
|
|
71
|
+
- Registre no Dev Agent Record qual iteração é esta (1/3, 2/3, 3/3).
|
|
72
|
+
- Na 3ª re-review sem PASS: **PARE e escale ao humano** com: histórico dos 3 vereditos, findings recorrentes, e sua hipótese de causa (AC ambíguo? arquitetura errada? gate mal calibrado?). Nunca afrouxar o gate, nunca "negociar" o veredito com o QA para fechar por cansaço.
|
|
73
|
+
|
|
74
|
+
## Referência rápida
|
|
75
|
+
|
|
76
|
+
| Momento | Ação |
|
|
77
|
+
|---|---|
|
|
78
|
+
| Antes de tocar em código | Inventário TOTAL dos findings, cada um com decisão |
|
|
79
|
+
| Antes de devolver | Todos os gates re-executados e verdes |
|
|
80
|
+
| Ao devolver | Status → `InReview` + tabela de inventário para o QA |
|
|
81
|
+
| Iteração 3 sem PASS | Escalar ao humano com histórico — nunca afrouxar o gate |
|
|
82
|
+
|
|
83
|
+
## Anti-padrões
|
|
84
|
+
|
|
85
|
+
- Corrigir findings seletivamente e omitir os incômodos.
|
|
86
|
+
- WON'T_FIX como atalho para não trabalhar (justificativa de uma linha vazia).
|
|
87
|
+
- Marcar FIXED sem re-rodar a suíte completa de gates.
|
|
88
|
+
- Editar o gate file do QA para "atualizar" o veredito.
|
|
89
|
+
|
|
90
|
+
## Exemplo de inventário preenchido
|
|
91
|
+
|
|
92
|
+
| # | Finding (do gate) | Severidade | Decisão | Justificativa/Dono |
|
|
93
|
+
|---|---|---|---|---|
|
|
94
|
+
| 1 | POST /session retorna 500 com payload válido | bloqueante | FIXED | null check em `session.ts:42`; teste de rota adicionado |
|
|
95
|
+
| 2 | File List omite `utils/token.ts` | menor | FIXED | File List atualizada; conferida contra `git diff --stat` |
|
|
96
|
+
| 3 | Falta rate-limit no endpoint | menor | DEFERRED | Fora dos ACs desta story; criada story 2.4 (dono: humano/PO) |
|
|
97
|
+
| 4 | Log em nível debug em produção | menor | WON'T_FIX | Comportamento intencional atrás de flag `DEBUG`; documentado no Dev Agent Record |
|
|
98
|
+
|
|
99
|
+
## Casos de borda
|
|
100
|
+
|
|
101
|
+
- **Finding que você discorda tecnicamente:** WON'T_FIX com argumento técnico completo — o QA arbitra na re-review. Nunca ignore em silêncio nem edite o gate file para remover o finding.
|
|
102
|
+
- **Finding cuja correção exige mudar um AC:** isso não é fix, é mudança de escopo. PARE e escale ao humano — nem Dev nem QA têm autoridade para reescrever ACs.
|
|
103
|
+
- **Dois findings com correções conflitantes:** escolha a resolução que preserva os ACs, registre `[AUTO-DECISION]` com o trade-off e destaque para o QA na devolução.
|
|
104
|
+
- **Finding não reproduzível localmente:** documente a tentativa de reprodução (comandos e saídas). Não marque FIXED sem reproduzir; devolva como pergunta ao QA com a evidência da tentativa.
|
|
105
|
+
|
|
106
|
+
## Saída esperada
|
|
107
|
+
|
|
108
|
+
Resposta final contém: tabela de inventário completa (finding → FIXED/WON'T_FIX/DEFERRED + justificativa/dono), saídas resumidas dos gates re-executados, número da iteração do loop, e confirmação de que a story voltou para `InReview` aguardando re-review.
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# Fix Loop — as 8 fases da correção de findings
|
|
2
|
+
|
|
3
|
+
> Protocolo aprofundado do `pc-apply-qa-fixes`. Origem destilada: task `qa-fix-issues.md`. O SKILL.md tem o essencial (inventário → decisão → fix → gates → devolução); este arquivo é o passo-a-passo determinístico completo. Carregue quando o loop tiver múltiplos findings ou verificação não trivial.
|
|
4
|
+
|
|
5
|
+
**Restrições inegociáveis (valem em todas as fases):** mudança mínima; corrigir SÓ o que está no pedido de fix; sem refactor "de passagem"; sem feature nova; sem corrigir o que não foi reportado. Violação de escopo detectada → **HALT** com "só corrija os findings do gate/fix request".
|
|
6
|
+
|
|
7
|
+
## Fase 0 — Carregar contexto
|
|
8
|
+
Ler o gate file (e o `QA_FIX_REQUEST.md` se existir) + a story. Fix request/gate ausente → HALT.
|
|
9
|
+
|
|
10
|
+
## Fase 1 — Parse e priorização
|
|
11
|
+
Extrair cada finding: `id`, `severity`, arquivos afetados, passos de verificação. Montar checklist com `status: pending`. **Ordem de correção: CRITICAL → MAJOR → MINOR** (bloqueante antes de menor).
|
|
12
|
+
|
|
13
|
+
## Fase 2 — Preparar ambiente
|
|
14
|
+
Conferir branch da story (`git branch --show-current`; nunca `main`) e cwd. Registrar `commitBefore` e branch. Working tree limpa ou só com mudanças esperadas.
|
|
15
|
+
|
|
16
|
+
## Fase 3 — Corrigir sequencialmente (núcleo)
|
|
17
|
+
Para cada finding, em ordem de severidade: localizar → aplicar **fix mínimo** → marcar `fixed` → logar. Não localizou (talvez já corrigido) → log e segue. Fix exigiria mudança grande/refactor → **HALT** (excede escopo do fix mínimo; ver caso de scope creep no SKILL.md).
|
|
18
|
+
|
|
19
|
+
## Fase 4 — Rodar gates
|
|
20
|
+
`npm run lint`, `npm test`, `npm run typecheck` (quando aplicável). Falhou → volta à Fase 3. Máx. 3 tentativas, senão HALT. Nunca suprimir erro para "passar".
|
|
21
|
+
|
|
22
|
+
## Fase 5 — Auto-verificação
|
|
23
|
+
Executar TODOS os passos de verificação do fix request, por tipo: `command` (CLI + checar saída), `api` (curl + resposta), `browser`/`e2e` (UI/fluxo), `manual` (documentar). Qualquer passo falha → volta à Fase 3. Documentar resultado de cada passo (passed + evidência).
|
|
24
|
+
|
|
25
|
+
## Fase 6 — Commit
|
|
26
|
+
`git add` só nos arquivos modificados para os fixes. Mensagem convencional referenciando os IDs:
|
|
27
|
+
```
|
|
28
|
+
fix: resolve <issueIds> [Story X.Y]
|
|
29
|
+
|
|
30
|
+
Findings tratados:
|
|
31
|
+
- CRIT-1: <descrição>
|
|
32
|
+
- MAJ-1: <descrição>
|
|
33
|
+
```
|
|
34
|
+
(Use `pc-commit`.)
|
|
35
|
+
|
|
36
|
+
## Fase 7 — Atualizar e sinalizar re-review
|
|
37
|
+
Atualizar a File List e o Dev Agent Record (iteração N/3, findings tratados, `[AUTO-DECISION]`). Preencher a tabela de inventário (finding → FIXED/WON'T_FIX/DEFERRED + evidência). `Status: InProgress → InReview`. Devolver explicitamente ao `pc-review-story`. **Nunca setar `Done` nem editar o gate file.**
|
|
38
|
+
|
|
39
|
+
## Fim parcial (nem tudo corrigível)
|
|
40
|
+
Finding que exige escopo além do fix mínimo (ex.: refactor de camada) não vira FIXED forçado: marque como precisa de decisão, explique por quê, e proponha DEFERRED com dono/story de follow-up. Reporte "parcialmente completo" com a lista do que ficou — decisão de escopo é do humano/PO, não do dev.
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# QA Fix Request — template estruturado
|
|
2
|
+
|
|
3
|
+
> Template do pedido de correção que o QA (`pc-review-story`) entrega ao Dev (`pc-apply-qa-fixes`) quando um gate FAIL/CONCERNS gera trabalho. Origem destilada: task `qa-create-fix-request.md`. Salvar em `docs/qa/gates/{story}-fix-request.md` (ou junto do gate file). Inclui CRITICAL e MAJOR por default; MINOR opcional.
|
|
4
|
+
|
|
5
|
+
O valor do template: cada finding vem com **antes/depois** concreto, **passos de verificação** por item, e **constraints de escopo explícitos** — é o que impede o loop de virar refactor.
|
|
6
|
+
|
|
7
|
+
```markdown
|
|
8
|
+
# QA Fix Request: {storyId}
|
|
9
|
+
|
|
10
|
+
**Gerado:** {timestamp}
|
|
11
|
+
**Fonte:** {gate file / QA Results}
|
|
12
|
+
**Reviewer:** pc-qa
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## Instruções para o Dev
|
|
17
|
+
|
|
18
|
+
Corrija SOMENTE os findings abaixo. Não adicione features nem refatore código não relacionado.
|
|
19
|
+
Processo: leia cada finding → corrija o problema específico → verifique com os passos dados →
|
|
20
|
+
marque como corrigido → rode todos os gates antes de concluir.
|
|
21
|
+
|
|
22
|
+
## Resumo
|
|
23
|
+
|
|
24
|
+
| Severidade | Qtde | Status |
|
|
25
|
+
|------------|------|-------------------------|
|
|
26
|
+
| CRITICAL | {n} | Corrigir antes do merge |
|
|
27
|
+
| MAJOR | {n} | Corrigir antes do merge |
|
|
28
|
+
| MINOR | {n} | Melhorias opcionais |
|
|
29
|
+
|
|
30
|
+
## Findings a corrigir
|
|
31
|
+
|
|
32
|
+
### 1. [CRITICAL] {título}
|
|
33
|
+
|
|
34
|
+
**ID:** FIX-{story}-001
|
|
35
|
+
**Local:** `caminho/arquivo.ts:45`
|
|
36
|
+
|
|
37
|
+
**Problema:**
|
|
38
|
+
```{lang}
|
|
39
|
+
{trecho do código com o problema}
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
**Esperado:**
|
|
43
|
+
```{lang}
|
|
44
|
+
{trecho corrigido, ou descrição do comportamento esperado}
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
**Verificação:**
|
|
48
|
+
- [ ] {passo de verificação executável}
|
|
49
|
+
- [ ] {outro passo}
|
|
50
|
+
|
|
51
|
+
**Status:** [ ] Fixed
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## Constraints (o Dev DEVE seguir)
|
|
56
|
+
|
|
57
|
+
- [ ] Corrigir SÓ os findings acima
|
|
58
|
+
- [ ] NÃO adicionar features novas
|
|
59
|
+
- [ ] NÃO refatorar código não relacionado
|
|
60
|
+
- [ ] Rodar `npm test`, `npm run lint`, `npm run typecheck` antes de concluir
|
|
61
|
+
- [ ] Atualizar a File List da story se criar arquivo novo
|
|
62
|
+
|
|
63
|
+
## Depois de corrigir
|
|
64
|
+
|
|
65
|
+
1. Marcar cada finding como corrigido aqui.
|
|
66
|
+
2. Atualizar o Dev Agent Record com o resumo (iteração N/3).
|
|
67
|
+
3. Devolver para re-review: `pc-review-story`.
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
Nota: o `pc-review-story` já emite findings no gate file (formato YAML com `id/severity/ac_afetado/descricao/evidencia/acao_sugerida`). Este template é a forma EXPANDIDA (antes/depois + verificação por item) para quando o loop de fix precisa de mais estrutura que a lista do gate — não substitui o gate file, o complementa.
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: pc-arena
|
|
3
|
+
description: "Harness de comparação CEGA reutilizável: compara N≥2 braços (pod vs pod, prompt vs prompt, modelo vs modelo, antes/depois de um mecanismo) por rodadas, com insumos congelados por hash, operador de brief fechado, rótulos cegos permutados e mapa SELADO (revelação só após todas as rodadas pontuadas), rubrica ponderada travada ANTES de rodar, tokens por braço/rodada e veredito por eixo (diferença mínima sustentada em K de N; empate é válido). Use para: comparar dois pods/prompts/modelos às cegas, medir regressão de qualidade quando um mecanismo do framework muda, avaliar conversão de squad legado, benchmark cego reutilizável."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# pc-arena — Harness de Comparação Cega (coordenadora)
|
|
7
|
+
|
|
8
|
+
Skill irmã de `pc-run-pod`. Lá o **pod é dado** e o script é o motor; aqui o **experimento é dado** (N braços, rubrica, insumos) e o motor é **`scripts/arena.cjs`**, na granularidade "rodada de comparação cega". Generaliza o protocolo do benchmark 4-braços (`second-brain/docs/benchmark/PROTOCOLO-4-bracos.md`) para N braços quaisquer — não só 4, não só pod-vs-squad.
|
|
9
|
+
|
|
10
|
+
**A cegueira é a premissa central** — um embaralhamento silenciosamente errado invalida o experimento inteiro. Por isso a lógica propensa-a-bug (permutação com uniquidade, mapa selado, reveal-gate, hash, tally, veredito) vive **em código testável**, não em prosa: `scripts/arena.cjs` (motor determinístico) + `scripts/arena.test.cjs` (regressão dos 2 bugs reais de embaralhamento que a operação MANUAL do benchmark cometeu). Esta skill é o **protocolo**; a máquina é do motor — do not fake green.
|
|
11
|
+
|
|
12
|
+
## Fronteira (ADR-002 reaplicada à AVALIAÇÃO)
|
|
13
|
+
|
|
14
|
+
| MOTOR (`arena.cjs`) — determinístico, provado por fixture | SKILL/HUMANO — julgamento, disciplina |
|
|
15
|
+
|---|---|
|
|
16
|
+
| Permutação de rótulos com bijeção validada (cada braço um rótulo distinto por rodada) | Autorar o brief verbatim do operador |
|
|
17
|
+
| Mapa rótulo→braço selado (`chmod 600`) + **reveal-gate** (recusa revelar até todas as rodadas pontuadas) | Despachar o subagente operador FRESCO por braço |
|
|
18
|
+
| Hash de congelamento dos insumos pinados | Atribuir as notas 0-5 CEGAS por dimensão de julgamento |
|
|
19
|
+
| Soma de tokens por braço/rodada | Decidir a rubrica, os pesos, o limiar e o K-de-N (parâmetros) |
|
|
20
|
+
| Média ponderada RECOMPUTADA + veredito (≥ limiar em K de N; empate) | Ler o relatório e tomar a decisão de produto |
|
|
21
|
+
|
|
22
|
+
O motor **nunca julga conteúdo** (se a nota "4" é justa) — só recomputa e valida forma. As dimensões da rubrica separam **CHECKS DE MÁQUINA** (PASS/FAIL, `type: machine`) de **JULGAMENTO HUMANO** (0-5, `type: human`), a mesma fronteira veto-vs-checkpoint do resto do framework.
|
|
23
|
+
|
|
24
|
+
## Invocação (cada comando chama o motor)
|
|
25
|
+
|
|
26
|
+
```
|
|
27
|
+
/pc-arena init {expDir} --arms A1,A2,.. --rounds N --rubric {rubric.json}
|
|
28
|
+
/pc-arena pin {expDir} --round R --inputs {inputs.json} # congela insumos da rodada (hash)
|
|
29
|
+
/pc-arena score {expDir} --round R --label W --scores {scores.json} # nota CEGA por rótulo
|
|
30
|
+
/pc-arena tokens {expDir} --arm A1 [--round R] --tokens N
|
|
31
|
+
/pc-arena status {expDir} # rodadas pontuadas / reveal liberado?
|
|
32
|
+
/pc-arena reveal {expDir} # REVEAL-GATE: só com todas pontuadas
|
|
33
|
+
/pc-arena report {expDir} # relatório final com revelação
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
Sob o capô: `node scripts/arena.cjs <cmd> {expDir} …`. Estado durável em `{expDir}/state.json` (blind-safe: notas por RÓTULO, nunca por braço); o mapa secreto vive em `{expDir}/sealed-map.json` (`chmod 600`), lido SÓ pela etapa de revelação.
|
|
37
|
+
|
|
38
|
+
## Insumos — fixos vs pinados por rodada (§5 do protocolo-fonte)
|
|
39
|
+
|
|
40
|
+
- **Fixos do experimento inteiro:** o que não varia entre rodadas nem braços (ex.: modelo de imagem, estrutura do entregável). Declarados uma vez.
|
|
41
|
+
- **Pinados por rodada:** os 1-2 insumos variáveis, **iguais para todos os braços na mesma rodada**, travados com hash ANTES de qualquer braço rodar naquela rodada (`pin`). Mudar um insumo depois de ver um resultado invalida o experimento — o hash é a prova de congelamento.
|
|
42
|
+
|
|
43
|
+
## Rubrica travada ANTES de qualquer rodada (parâmetro, não hardcoded)
|
|
44
|
+
|
|
45
|
+
`rubric.json` (exemplo — todas as dimensões/pesos/limiar são do USO, nunca constantes da skill):
|
|
46
|
+
|
|
47
|
+
```json
|
|
48
|
+
{
|
|
49
|
+
"scale": 5,
|
|
50
|
+
"dimensions": [
|
|
51
|
+
{ "name": "Editorial", "weight": 0.20, "type": "human" },
|
|
52
|
+
{ "name": "Copy", "weight": 0.25, "type": "human" },
|
|
53
|
+
{ "name": "Visual", "weight": 0.20, "type": "human" },
|
|
54
|
+
{ "name": "Estrutura", "weight": 0.15, "type": "machine", "checks": 5 },
|
|
55
|
+
{ "name": "Processo", "weight": 0.20, "type": "human" }
|
|
56
|
+
],
|
|
57
|
+
"verdict": { "minDiff": 0.3, "kOfN": 3 },
|
|
58
|
+
"axes": [ { "name": "pod vs squad", "a": "A3", "b": "A1" } ],
|
|
59
|
+
"prediction": "previsão registrada ANTES (viés de confirmação declarado no relatório)"
|
|
60
|
+
}
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
Os pesos DEVEM somar 1.0 (o motor recusa se não somam). Dimensão `machine` recebe `{ "passed": <int 0..checks> }` no `score` e vale `(passed/checks)×escala`; dimensão `human` recebe uma nota `0..escala`. A dimensão de estrutura também é reportada como PASS/FAIL agregado no relatório — um braço pode vencer no score e ainda ter falha estrutural desqualificante, e isso fica visível, não escondido na média.
|
|
64
|
+
|
|
65
|
+
**Processo** (custo/atrito) é medido, não julgado no vazio — a fórmula usada no benchmark real foi `Processo = 5 − 2.5×tokens_norm − 0.3×bloqueios` (`RELATORIO-FINAL.md §2`); registre a fórmula escolhida na `prediction`/notas do experimento antes de rodar.
|
|
66
|
+
|
|
67
|
+
## O operador é fechado por construção (§6 — No Invention aplicado ao operador)
|
|
68
|
+
|
|
69
|
+
Cada braço roda num **subagente FRESCO** (nunca o mesmo atravessando braços — vazaria "já sei pedir melhor"). O brief do operador contém **SOMENTE**:
|
|
70
|
+
1. a descrição verbatim congelada do objeto do teste;
|
|
71
|
+
2. o **script de respostas congelado** (todas as elicitações interativas são respondidas SÓ por ele);
|
|
72
|
+
3. quando aplicável, o processo do braço na íntegra.
|
|
73
|
+
|
|
74
|
+
**Nunca** contexto sobre o experimento, os outros braços ou a rubrica. Nas perguntas de esclarecimento, o operador responde **apenas pelo script** — nunca improvisa, nunca preenche lacuna com julgamento próprio. Sem essa trava, o operador vira uma variável não-controlada capaz de favorecer um braço.
|
|
75
|
+
|
|
76
|
+
## Fluxo por rodada
|
|
77
|
+
|
|
78
|
+
1. **`pin`** os insumos da rodada (congela hash) — antes de qualquer braço.
|
|
79
|
+
2. Despache **um operador fresco por braço** com o brief fechado; persista o transcript; registre `tokens`.
|
|
80
|
+
3. Colete os N artefatos, atribua os rótulos cegos da rodada (o motor já os selou no `init`).
|
|
81
|
+
4. Julgue os N artefatos às cegas (`score` por rótulo) — sem saber a origem.
|
|
82
|
+
5. **NÃO revele.** Repita para todas as N rodadas. `reveal`/`report` só depois da última nota — o reveal-gate recusa antes disso (fail-loud), para não deixar o avaliador calibrar sabendo quem "está ganhando".
|
|
83
|
+
|
|
84
|
+
## Relatório final (`report`) — com revelação
|
|
85
|
+
|
|
86
|
+
Emite: (1) tabela de revelação rótulo→braço por rodada; (2) scores ponderados por rodada + média + mediana; (3) veredito por eixo (vitória se diferença ≥ `minDiff` em ≥ `kOfN` rodadas; **empate é resultado válido, nunca forçado**); (4) tabela de tokens por braço/rodada; (5) conferência de qualquer `prediction` registrada ANTES, com a **limitação de viés declarada** (uma previsão vista antes do julgamento é viés conhecido — a conferência é autoavaliação declarada, não validação cega de terceiro).
|
|
87
|
+
|
|
88
|
+
## Limites (honestos)
|
|
89
|
+
|
|
90
|
+
- O motor testa permutação/reveal/veredito sobre fixtures, **nunca** a QUALIDADE de um julgamento real — igual a `smoke`/`motor-scripts.test`. A nota 0-5 é humana e continua dependendo de disciplina (brief verbatim, cegueira).
|
|
91
|
+
- Para **N=2** a cegueira é inerentemente fraca (só 2 mapeamentos possíveis); a permutação anti-identidade só se aplica a N≥3.
|
|
92
|
+
- Esta skill entrega o MECANISMO; rodar um experimento em produção é trabalho separado. Não substitui `pc-wave` (que orquestra execução paralela de stories, não avaliação cega).
|
|
93
|
+
|
|
94
|
+
## Referência
|
|
95
|
+
|
|
96
|
+
`docs/adr/ADR-009-pc-arena-selagem-e-permutacao-em-motor.md` · motor `scripts/arena.cjs` + suíte `scripts/arena.test.cjs` · página de uso `docs/mecanismos/pc-arena.md` · protocolo-fonte `second-brain/docs/benchmark/PROTOCOLO-4-bracos.md` (+ `RELATORIO-FINAL.md`).
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: pc-close-story
|
|
3
|
+
description: "Bookkeeping final de uma story já aprovada pelo QA (Done): atualiza índice do epic e sugere a próxima. Use para: fechar story Done, atualizar índice do epic, encerrar ciclo de uma story, descobrir a próxima story."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# pc-close-story — Fechamento de Story (bookkeeping pós-Done)
|
|
7
|
+
|
|
8
|
+
Protocolo completo e autocontido. Nenhuma engine externa é necessária.
|
|
9
|
+
|
|
10
|
+
## O que esta skill É — e o que NÃO é
|
|
11
|
+
|
|
12
|
+
É **bookkeeping**: organiza os artefatos de uma story que o QA já aprovou. **NÃO é aprovação**: esta skill **nunca muda status de lifecycle** (Draft/Ready/InProgress/InReview/Done). Se a story não está Done, o caminho é `pc-review-story` — não aqui.
|
|
13
|
+
|
|
14
|
+
## Gates de entrada (todos obrigatórios; qualquer falha = PARE)
|
|
15
|
+
|
|
16
|
+
Verifique, com leitura real dos arquivos:
|
|
17
|
+
|
|
18
|
+
1. **Story está `Status: Done`.** Se estiver em qualquer outro status, pare e informe qual skill do ciclo falta (`pc-validate-story`, `pc-develop-story` ou `pc-review-story`).
|
|
19
|
+
2. **Gate file existe** em `docs/qa/gates/{epic}.{n}-{slug}.yaml`.
|
|
20
|
+
3. **Veredito do gate não é FAIL.** PASS ou CONCERNS fecham normalmente; WAIVED só fecha se `waiver_reason` está preenchido no gate file.
|
|
21
|
+
4. **Seção QA Results existe** na story, escrita pelo papel QA.
|
|
22
|
+
|
|
23
|
+
Se a story diz Done mas falta gate file (ou o veredito é FAIL), isso é uma **inconsistência de lifecycle**: não conserte silenciosamente — reporte ao humano com os fatos e pare. Alguém pulou o QA gate, e mascarar isso destrói a trilha de auditoria.
|
|
24
|
+
|
|
25
|
+
## Protocolo
|
|
26
|
+
|
|
27
|
+
### Passo 1 — Conferência de completude dos artefatos
|
|
28
|
+
|
|
29
|
+
Confirme que a story contém, preenchidos:
|
|
30
|
+
|
|
31
|
+
- [ ] Todos os checkboxes de tasks/ACs em `[x]`
|
|
32
|
+
- [ ] File List presente
|
|
33
|
+
- [ ] Dev Agent Record com saídas de gates
|
|
34
|
+
- [ ] Seção de Validação (PO) com veredito GO
|
|
35
|
+
- [ ] Seção QA Results com veredito
|
|
36
|
+
|
|
37
|
+
Item faltando = anote como pendência de bookkeeping na resposta final (não invente conteúdo para preencher — o dono da seção é o papel correspondente).
|
|
38
|
+
|
|
39
|
+
### Passo 2 — Atualizar o índice do epic
|
|
40
|
+
|
|
41
|
+
No arquivo do epic (ex.: `docs/stories/epic-{n}.md` ou o índice usado pelo projeto):
|
|
42
|
+
|
|
43
|
+
1. Marque a story como concluída (checkbox/status na tabela de stories do epic).
|
|
44
|
+
2. Registre data de conclusão e link para o gate file.
|
|
45
|
+
3. Atualize contadores de progresso do epic, se existirem (ex.: "3/7 stories Done").
|
|
46
|
+
|
|
47
|
+
Se o epic não tem índice, crie a entrada mínima (tabela de stories com status) — isso é bookkeeping legítimo desta skill.
|
|
48
|
+
|
|
49
|
+
### Passo 3 — Sugerir a próxima story
|
|
50
|
+
|
|
51
|
+
1. Leia o índice do epic e identifique stories restantes.
|
|
52
|
+
2. Considere dependências declaradas: sugira a próxima story **desbloqueada** de maior prioridade.
|
|
53
|
+
3. Se a story fechada era a última do epic: sinalize o epic como candidato a encerramento e sugira ao humano a retrospectiva/decisão de próximo epic.
|
|
54
|
+
4. A sugestão é **recomendação, não ação**: não crie nem inicie a próxima story automaticamente.
|
|
55
|
+
|
|
56
|
+
### Passo 4 — Registro de fechamento
|
|
57
|
+
|
|
58
|
+
Adicione ao final da story uma seção curta:
|
|
59
|
+
|
|
60
|
+
```markdown
|
|
61
|
+
## Fechamento
|
|
62
|
+
- Data: {YYYY-MM-DD}
|
|
63
|
+
- Gate: docs/qa/gates/{arquivo}.yaml (veredito: {PASS|CONCERNS|WAIVED})
|
|
64
|
+
- Índice do epic atualizado: {sim/caminho}
|
|
65
|
+
- Próxima sugerida: {story ou "epic completo"}
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## Referência rápida
|
|
69
|
+
|
|
70
|
+
| Gate de entrada | Se falhar |
|
|
71
|
+
|---|---|
|
|
72
|
+
| Story `Done` | Apontar a skill do ciclo que falta e parar |
|
|
73
|
+
| Gate file existe | Reportar inconsistência de lifecycle ao humano |
|
|
74
|
+
| Veredito ≠ FAIL (WAIVED só com justificativa) | Devolver ao ciclo de QA |
|
|
75
|
+
| QA Results presente | Reportar inconsistência ao humano |
|
|
76
|
+
|
|
77
|
+
## Proibições
|
|
78
|
+
|
|
79
|
+
- **Nunca alterar status de lifecycle** — nem da story fechada, nem de outras.
|
|
80
|
+
- Nunca editar veredito, findings ou QA Results.
|
|
81
|
+
- Nunca "fechar" story sem gate file válido para destravar o fluxo.
|
|
82
|
+
- Nunca fazer push, criar PR ou tag — publicação é do papel devops.
|
|
83
|
+
|
|
84
|
+
## Exemplo de entrada no índice do epic
|
|
85
|
+
|
|
86
|
+
```markdown
|
|
87
|
+
| Story | Título | Status | Gate | Concluída em |
|
|
88
|
+
|---|---|---|---|---|
|
|
89
|
+
| 2.1 | Detecção de sessão no gateway | Done | [PASS](../qa/gates/2.1-sessao-gateway.yaml) | 2026-07-21 |
|
|
90
|
+
| 2.2 | Rate-limit do endpoint | Ready | — | — |
|
|
91
|
+
|
|
92
|
+
Progresso: 1/2 stories Done.
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
## Casos de borda
|
|
96
|
+
|
|
97
|
+
- **Gate CONCERNS com débitos registrados:** feche normalmente, mas copie os débitos para o índice do epic (seção "Débitos conhecidos") — débito invisível é débito perdido.
|
|
98
|
+
- **Gate WAIVED:** feche somente com `waiver_reason` preenchido; replique a justificativa na entrada do índice para a trilha ficar legível sem abrir o YAML.
|
|
99
|
+
- **Duas stories fechando ao mesmo tempo no mesmo epic:** atualize o índice uma vez com as duas entradas; confira que os contadores batem com a tabela.
|
|
100
|
+
- **Story Done de um epic sem pasta/índice ainda:** crie o índice mínimo (tabela acima) e sinalize ao humano que o epic estava sem registro estruturado.
|
|
101
|
+
- **Branch da story ainda não publicada:** o fechamento não depende de push — anote na resposta que a branch aguarda o papel devops, sem executar nada de git remoto.
|
|
102
|
+
|
|
103
|
+
## Saída esperada
|
|
104
|
+
|
|
105
|
+
Resposta final contém: resultado dos 4 gates de entrada, pendências de bookkeeping (se houver), o que foi atualizado no índice do epic, e a próxima story sugerida com justificativa de uma linha.
|