@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,443 @@
|
|
|
1
|
+
# Aquisição da entrada — contrato de entrada + implementações `ancora`/`hn` (§1) e `roteiro` (§1b)
|
|
2
|
+
|
|
3
|
+
Procedimento do comando `*digest` do `hn-curator`. A entrada da etapa chega pela linha `Tarefa:` do
|
|
4
|
+
brief (o `task_ref` que o comando `/power:content-carousel` passou ao motor `pc-run-pod.cjs`). O motor é
|
|
5
|
+
transporte CEGO: ele não parseia nem valida esta gramática — quem a lê e a honra é você, agente.
|
|
6
|
+
|
|
7
|
+
## 0. Contrato de entrada (leia ANTES de qualquer fetch)
|
|
8
|
+
|
|
9
|
+
### 0.1 Gramática do `task_ref` (ADR-020 `DF-SF10.21-1/-11`)
|
|
10
|
+
|
|
11
|
+
```
|
|
12
|
+
entrada=ancora fonte=<slug> url=<url-exata> ts=<ISO-8601> -- <nota livre opcional>
|
|
13
|
+
entrada=roteiro roteiro=<path> ts=<ISO-8601> -- <nota livre opcional>
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
- Pares `chave=valor` separados por espaço; valores não contêm espaço. Parsing: split em espaço +
|
|
17
|
+
primeiro `=`.
|
|
18
|
+
- `entrada` é **obrigatória em toda run** e é lida PRIMEIRO — ela decide quais outras chaves são
|
|
19
|
+
obrigatórias e qual seção de aquisição se aplica.
|
|
20
|
+
- Tudo após o primeiro ` -- ` é **nota humana**, ignorada pelo parsing (existe porque o `task_ref`
|
|
21
|
+
também é o rótulo que o `status` imprime e que fica gravado para sempre no `state.json`).
|
|
22
|
+
|
|
23
|
+
| `entrada=` | Chaves obrigatórias | Seção de aquisição | Estado |
|
|
24
|
+
|---|---|---|---|
|
|
25
|
+
| `ancora` | `fonte`, `url`, `ts` | §1 (só `fonte=hn` implementada) | IMPLEMENTADO |
|
|
26
|
+
| `roteiro` | `roteiro`, `ts` | §1b (`roteiro:proprio`) | IMPLEMENTADO (ADR-026) |
|
|
27
|
+
|
|
28
|
+
**O modo decide o seu PAPEL, não só de onde vem o texto.** Em `ancora` você é AUTOR. Em `roteiro` você é
|
|
29
|
+
**CONFORMADOR** (`ADR-020 DF-SF10.21-10`): o texto já é do dono e você o mapeia à forma do pod **sem
|
|
30
|
+
reescrevê-lo** (§1b). A matriz da §0.3 diz, requisito a requisito, o que muda.
|
|
31
|
+
|
|
32
|
+
### 0.2 Fail-closed — INEGOCIÁVEL, sem default silencioso
|
|
33
|
+
|
|
34
|
+
**Antes de qualquer fetch, leitura de URL, leitura de arquivo ou produção de texto**, confira a linha
|
|
35
|
+
`Tarefa:` do brief. Em QUALQUER das situações abaixo você **HALTA**:
|
|
36
|
+
|
|
37
|
+
| Situação | Você HALTA dizendo |
|
|
38
|
+
|---|---|
|
|
39
|
+
| brief sem linha `Tarefa:` | que a run começou sem `task_ref` e a entrada não pode ser inferida |
|
|
40
|
+
| `entrada=` ausente | que falta a chave `entrada`, primeiro discriminador da gramática |
|
|
41
|
+
| `entrada=` com valor fora de `{ancora, roteiro}` | que o modo declarado não existe na gramática |
|
|
42
|
+
| `entrada=ancora` sem `fonte=`, `url=` ou `ts=` | qual chave obrigatória do modo faltou |
|
|
43
|
+
| `entrada=ancora` com `fonte=<slug>` fora de `{hn}` | que **não existe seção de aquisição `<slug>` neste knowledge** — a única fonte implementada do modo `ancora` é a §1 (`hn`) |
|
|
44
|
+
| `entrada=roteiro` sem `roteiro=` ou `ts=` | qual chave obrigatória do modo faltou |
|
|
45
|
+
| `entrada=roteiro` com `roteiro=<path>` que **não abre** (não existe, sem permissão, vazio) | que o roteiro apontado não pôde ser lido, repetindo o path recebido. **É PROIBIDO** reconstruir o roteiro de memória, usar outro arquivo do diretório, ou "aproximar" a partir do que você acha que o dono queria dizer — em `roteiro` o arquivo é a fonte inteira, e sem ele não há nada a conformar |
|
|
46
|
+
|
|
47
|
+
**HALT significa:** não buscar nada, não ler a URL, **não escrever o artefato**, e devolver no relatório
|
|
48
|
+
(a) o que faltou ou qual seção de aquisição não existe, (b) a linha `Tarefa:` recebida na íntegra, e
|
|
49
|
+
(c) a pergunta ao dono para ele corrigir e reiniciar a run.
|
|
50
|
+
|
|
51
|
+
**É PROIBIDO** assumir Hacker News, "a fonte mais provável", inferir a fonte pelo host da URL, ou usar
|
|
52
|
+
qualquer outro default. Um fallback silencioso para a única fonte implementada faria toda run
|
|
53
|
+
"funcionar" e tornaria o parâmetro decorativo — é exatamente o que o `DF-SF10.21-1/-2` proíbe, e a
|
|
54
|
+
razão pela qual a etapa bloqueia em vez de adivinhar.
|
|
55
|
+
|
|
56
|
+
### 0.3 MATRIZ DE APLICABILIDADE POR MODO — ponto único de verdade
|
|
57
|
+
|
|
58
|
+
A fonte **e o modo de entrada** são PARAMETRIZÁVEIS. O que a etapa `digest` entrega é sempre o mesmo
|
|
59
|
+
(`templates/digest-tmpl.md` + os vetos do workflow); o que muda é **como cada requisito é satisfeito**.
|
|
60
|
+
Esta matriz é o **único** lugar do pod que declara isso, requisito a requisito (`ADR-026 DF-SF11.7-15`).
|
|
61
|
+
|
|
62
|
+
> **Regra de manutenção, e é ela que impede o buraco de reabrir na 3ª fonte:** toda regra específica de
|
|
63
|
+
> modo vive em **exatamente um** de três lugares — esta matriz (§0.3), a §1 (`ancora`) ou a §1b
|
|
64
|
+
> (`roteiro`). Fora desses três, o texto deste knowledge e do `hn-curator` só contém regra **agnóstica
|
|
65
|
+
> de modo**; quem precisa de uma regra de modo **referencia esta matriz** em vez de reafirmá-la.
|
|
66
|
+
|
|
67
|
+
| Requisito | `entrada=ancora` (§1) | `entrada=roteiro` (§1b) |
|
|
68
|
+
|---|---|---|
|
|
69
|
+
| **Âncora fixada pelo usuário** | URL exata + timestamp de captura, **nunca escolhida pelo agente** — vale inclusive quando a fonte oferece lista/feed: você não escolhe o item | o **arquivo** de `roteiro=<path>`, fixado pelo dono. Você não troca de arquivo, não procura "uma versão melhor", não completa com outro texto dele |
|
|
70
|
+
| **Fatos rastreáveis** | 3-6 fatos, cada um apontando ao texto-fonte (artigo linkado / item da âncora) | a fonte primária **é o roteiro**. Fato que não está no roteiro NÃO entra. Fontes que o roteiro cita inline são registradas **como o roteiro as cita** — sem URL fabricada e **sem sair para buscar a URL** |
|
|
71
|
+
| **Sinal de relevância** | **OBRIGATÓRIO** no momento do `ts` (pontos/upvotes/curtidas/views/nº de comentários). Ver §0.4 | **N/A, e a ausência é CORRETA**: ensaio autoral não publicado não tem sinal de plataforma. **Não invente substituto** — nem estimativa, nem métrica de outro texto |
|
|
72
|
+
| **Contexto de discussão** | quando a fonte tiver comunidade (objeções, esclarecimentos, ângulos) | **N/A** — não há comunidade nem discussão a ler |
|
|
73
|
+
| **≥5 ângulos** | veto `count_gte` do `wf`; ângulos derivados do artigo + discussão | veto `count_gte` **idêntico**; ângulos **recortados do roteiro**. Se o roteiro não sustenta 5, você **NÃO inventa o quinto** — a etapa bloqueia honestamente e o dono decide (`ADR-020 DF-SF10.21-10`) |
|
|
74
|
+
| **`confianca`** | qualidade da FONTE: artigo primário acessível = `alta`; só título + discussão = `media`; paywalled/incompleta = `baixa` | **rastreabilidade das afirmações do roteiro**, nunca a sua autoconfiança: `alta` = as afirmações centrais têm fonte citada no roteiro; `media` = posição autoral sem citação; `baixa` = o roteiro traz afirmação factual que ele próprio não sustenta |
|
|
75
|
+
| **`contrato_entrada`** | `ancora:hn` | `roteiro:proprio` |
|
|
76
|
+
| **Bloco `pc:fidelidade-roteiro`** | **N/A** — não existe em `ancora` | **OBRIGATÓRIO**, no fecho do artefato. Forma e conteúdo na §1b |
|
|
77
|
+
|
|
78
|
+
**O valor LITERAL do pattern do veto vive no `wf`** (`pods/content-carousel/workflows/wf-content-carousel.yaml`,
|
|
79
|
+
assertion `contrato_entrada`) **e em nenhum outro arquivo do pod** — esta matriz espelha os PARES
|
|
80
|
+
aceitos, e é a ela que o resto do pod se refere. Copiar o regex para cá, para o agente ou para o
|
|
81
|
+
template recria as 4 cópias divergentes que a `ADR-026 DF-SF11.7-15` eliminou.
|
|
82
|
+
|
|
83
|
+
#### Guarda-chuva do modo `roteiro` — por CANAL, e vale para regra NOMEADA ou NÃO (`ADR-026 DF-SF11.7-21`/`-25`)
|
|
84
|
+
|
|
85
|
+
> Em `entrada=roteiro`, qualquer instrução que mande **verificar, atualizar, corrigir, completar,
|
|
86
|
+
> aprofundar, elevar, traduzir, reordenar ou reescrever** o texto — **nomeada nesta matriz ou não** —
|
|
87
|
+
> vale como instrução de **OBSERVAR e REGISTRAR** no bloco `pc:fidelidade-roteiro`. O conformador
|
|
88
|
+
> **nunca** edita por conta própria.
|
|
89
|
+
>
|
|
90
|
+
> **O escopo é por CANAL, não por arquivo.** A cláusula vale para instrução que chegue por **qualquer**
|
|
91
|
+
> um destes: (1) este knowledge; (2) o arquivo do agente `hn-curator`; (3) **a memória consolidada do
|
|
92
|
+
> pod, injetada inline no brief** — inclusive sob o cabeçalho `## Memória consolidada (aplique estas
|
|
93
|
+
> heurísticas)`; (4) o próprio brief.
|
|
94
|
+
>
|
|
95
|
+
> **PRECEDÊNCIA, escrita para não depender de interpretação:** em conflito, **esta cláusula PREVALECE
|
|
96
|
+
> sobre a memória do pod**. Uma heurística consolidada que mande verificar o estado atual do mundo,
|
|
97
|
+
> corrigir um dado, aprofundar um ângulo ou traduzir jargão é, em `roteiro`, **observação e registro** —
|
|
98
|
+
> nunca ação. A memória foi consolidada de rodadas `ancora`, onde o texto era do agente; aqui não é.
|
|
99
|
+
>
|
|
100
|
+
> **Exceção única de MOVIMENTO:** SELECIONAR, CORTAR e compor o TÍTULO de ≤8 palavras (§1b.3), que são a
|
|
101
|
+
> conformação em si. **Única fonte fora do alcance da cláusula:** a linha `Tarefa:`, que é o parâmetro do
|
|
102
|
+
> próprio dono.
|
|
103
|
+
|
|
104
|
+
É **default seguro**, não lista: regra de ação escrita amanhã — ou heurística consolidada amanhã pela
|
|
105
|
+
memória, automaticamente — já nasce coberta, sem ninguém precisar auditar nada. Limite dito na cara:
|
|
106
|
+
isto é instrução a agente, **sem enforcement de máquina**, e a memória chega **inline e no imperativo**
|
|
107
|
+
enquanto esta cláusula chega por leitura de arquivo — a assimetria de saliência é real e não se resolve
|
|
108
|
+
em texto. O que torna a desobediência verificável depois é o próprio bloco: ângulo alterado sem
|
|
109
|
+
`REESCRITO` (ou sem `observações`) é a assinatura.
|
|
110
|
+
|
|
111
|
+
**Custo de plugar uma fonte ou um modo novo** (explícito, e é o que mantém o mecanismo honesto): 1 seção
|
|
112
|
+
de aquisição nova aqui + 1 linha nesta matriz + 1 token novo no pattern da assertion `contrato_entrada`
|
|
113
|
+
do `wf` + sidecar `.smoke.json` atualizado + smoke 4/4. Nada de agente novo, arquivo novo ou etapa nova.
|
|
114
|
+
O pattern do veto é o **espelho** do conjunto de seções implementadas neste arquivo — se as duas listas
|
|
115
|
+
divergirem, o mecanismo está quebrado.
|
|
116
|
+
|
|
117
|
+
Para plugar outra fonte do modo `ancora` (ex.: RSS de um veículo, newsletter, release oficial):
|
|
118
|
+
documente na instância como obter (a) o item pela URL, (b) o artigo/fonte primária, (c) o sinal de
|
|
119
|
+
relevância, (d) a discussão se existir — e siga as seções 2-5 abaixo, que são agnósticas de fonte.
|
|
120
|
+
|
|
121
|
+
### 0.4 Sinal de relevância: OBRIGATÓRIO aqui, PROIBIDO na peça
|
|
122
|
+
|
|
123
|
+
Aplicabilidade **por modo: ver a matriz §0.3** — em `entrada=roteiro` este requisito é **N/A** (não há
|
|
124
|
+
plataforma de origem, e inventar substituto é proibido). O que segue descreve o requisito onde ele vale.
|
|
125
|
+
|
|
126
|
+
Score/upvotes/curtidas/views/contagem de comentários da plataforma de origem são **insumo de
|
|
127
|
+
CURADORIA**: eles decidem se a notícia entra e ficam registrados no digest (§2). Eles **NUNCA** viram
|
|
128
|
+
conteúdo do roteiro — nenhuma peça do carrossel (capa, os 5 slides internos, CTA) exibe esse número.
|
|
129
|
+
A fronteira está declarada aqui, no mesmo lugar em que se manda capturá-lo, é reafirmada como golden
|
|
130
|
+
rule do `hn-curator` e é conferida no `checkpoint.criteria` bloqueante de `assembly`. Quem pode violá-la
|
|
131
|
+
é quem monta a peça (`carousel-visual`, `carousel-builder`) — vale reafirmá-la como golden rule desses
|
|
132
|
+
agentes na sua instância. Não há veto de máquina para esta regra, por decisão consciente
|
|
133
|
+
(`DF-SF10.21-4`): o enforcement é o julgamento humano no checkpoint.
|
|
134
|
+
|
|
135
|
+
## 1. Seção de aquisição `hn` — `entrada=ancora fonte=hn` (única fonte implementada do modo `ancora`)
|
|
136
|
+
|
|
137
|
+
O `task_ref` traz a URL exata do item (`https://news.ycombinator.com/item?id=<ID>`) e o timestamp de
|
|
138
|
+
captura. Nunca escolher outra notícia.
|
|
139
|
+
|
|
140
|
+
1. Extrair o `<ID>` da URL de `url=`.
|
|
141
|
+
2. Buscar o item na API pública do HN (Firebase):
|
|
142
|
+
`https://hacker-news.firebaseio.com/v0/item/<ID>.json`
|
|
143
|
+
Campos relevantes: `title`, `url` (artigo linkado), `score`, `descendants` (nº de comentários),
|
|
144
|
+
`time`, `by`, `kids`.
|
|
145
|
+
3. Se houver `url`, buscar e ler o ARTIGO LINKADO — ele é a fonte primária do conteúdo. O item do HN dá
|
|
146
|
+
o sinal de relevância (score/comentários); o artigo dá os fatos.
|
|
147
|
+
4. Ler a discussão do HN (página do item ou top `kids` via API) para capturar contexto: objeções
|
|
148
|
+
técnicas, esclarecimentos do autor, ângulos que a comunidade destacou.
|
|
149
|
+
|
|
150
|
+
> Não siga URL descoberta DENTRO da fonte como se fosse a âncora: a âncora é a de `url=`, sempre. Links
|
|
151
|
+
> internos servem como material de apoio rastreável, nunca como substituto do item fixado.
|
|
152
|
+
|
|
153
|
+
## 1b. Seção de aquisição `roteiro` — `entrada=roteiro roteiro=<path>` (ADR-026)
|
|
154
|
+
|
|
155
|
+
Aqui **o texto já é do dono** e você é **CONFORMADOR**: mapeia o roteiro dele para a forma do pod
|
|
156
|
+
(`templates/digest-tmpl.md`) **preservando a voz e o conteúdo**, e **declara** tudo o que não foi
|
|
157
|
+
preservação pura. A golden rule "nada além da fonte" vale integralmente — aqui a fonte é o arquivo dele.
|
|
158
|
+
|
|
159
|
+
### 1b.1 Aquisição
|
|
160
|
+
|
|
161
|
+
1. Ler o arquivo indicado em `roteiro=<path>`, **inteiro**. Se ele não abrir, **HALTE** (§0.2) — não há
|
|
162
|
+
substituto legítimo.
|
|
163
|
+
2. Calcular o `sha256` do arquivo exatamente como ele está em disco (`shasum -a 256 <path>`, ou
|
|
164
|
+
`sha256sum <path>`). Ele vai no cabeçalho de proveniência do bloco de fidelidade.
|
|
165
|
+
3. **Não sair do arquivo:** nenhuma busca na web, nenhuma leitura de "arquivo irmão", nenhuma URL
|
|
166
|
+
seguida — nem para conferir um dado, nem para completar uma citação. Ver §1b.4.
|
|
167
|
+
|
|
168
|
+
### 1b.2 O que preenche cada seção do template
|
|
169
|
+
|
|
170
|
+
> **PROIBIDO: citação do dono que COMECE A LINHA com o NOME de `confianca` ou de `contrato_entrada`,
|
|
171
|
+
> em QUALQUER forma que o `extractField` do motor aceite** (`ADR-026 DF-SF11.7-24`) — e ele aceita
|
|
172
|
+
> mais formas do que a mais óbvia: `campo:`, `campo =`, `- campo:`, `**campo**:`, com indentação à
|
|
173
|
+
> esquerda e **em qualquer caixa** (`Confianca:` sequestra igual). Em `roteiro` as três seções acima
|
|
174
|
+
> carregam texto verbatim do dono e vêm **antes** dos dois campos de máquina; `extractField` casa a
|
|
175
|
+
> **primeira** linha do artefato inteiro que bata qualquer uma dessas formas, então uma citação
|
|
176
|
+
> começando por um desses dois nomes sequestra o campo. Se o trecho do dono começar assim, cite-o
|
|
177
|
+
> dentro de célula de tabela ou de item numerado (formas comprovadamente seguras: o regex não aceita
|
|
178
|
+
> `1. `, nem linha iniciada por `|`, nem por aspas), ou prefixe a linha com o rótulo do fato.
|
|
179
|
+
> A direção da falha é **fail-closed EXCETO quando o valor sequestrado pertence ao conjunto aceito,
|
|
180
|
+
> caso em que a etapa passa declarando o modo errado; quem pega isso é o item (0) do `criteria`** do
|
|
181
|
+
> checkpoint de `digest` — que manda o dono conferir se a seção apresentada bate com a run que ELE
|
|
182
|
+
> pediu. Fora desse caso, o valor sequestrado não casa o pattern e a etapa BLOQUEIA: bloqueio confuso,
|
|
183
|
+
> mas bloqueio. Evitar os dois custa esta linha.
|
|
184
|
+
|
|
185
|
+
- **`## Noticia`** — a "notícia" em `roteiro` é o próprio roteiro. Registre: o **título** do roteiro
|
|
186
|
+
(como o dono o escreveu), a **proveniência** (`roteiro=<path>`, `sha256=`, `ts=` recebido no
|
|
187
|
+
`task_ref`), e os **fatos centrais que o roteiro afirma** (3-6), cada um rastreável a um trecho do
|
|
188
|
+
roteiro. As fontes que o roteiro cita inline entram **como ele as cita** (ex.: se ele escreve o nome
|
|
189
|
+
de um instituto e um número, é isso que se registra) — **URL fabricada é invenção**, e a matriz §0.3
|
|
190
|
+
já declara `N/A` para URL de âncora e sinal de relevância. Não preencha esses campos com placeholder
|
|
191
|
+
inventado: escreva `N/A (modo roteiro)` e siga.
|
|
192
|
+
- **`## Sintese Acessivel`** — montada **com as palavras do dono**. Ver a disposição da §3 abaixo:
|
|
193
|
+
traduzir jargão é ATO DE REDAÇÃO e, se você o fizer, **declare em `Observações`, com o motivo** — a
|
|
194
|
+
síntese não tem linha própria no bloco de fidelidade, que é 1:1 com os ângulos (§1b.5).
|
|
195
|
+
- **`## Angulos para Slides`** — os ≥5 ângulos **recortados do roteiro**, na ordem do roteiro (a
|
|
196
|
+
progressão é a dele, não o arco prescrito da §4). Se o roteiro não sustenta 5 ângulos, **NÃO invente o
|
|
197
|
+
quinto**: entregue os que existem, registre no bloco que o roteiro não sustenta cinco, e deixe a etapa
|
|
198
|
+
bloquear no `count_gte`. Bloquear honestamente é o comportamento correto — o dono decide o que fazer.
|
|
199
|
+
|
|
200
|
+
### 1b.3 Conformar sem reescrever — a regra operacional (`ADR-026 DF-SF11.7-6`)
|
|
201
|
+
|
|
202
|
+
| Movimento | Permitido? |
|
|
203
|
+
|---|---|
|
|
204
|
+
| **SELECIONAR** qual trecho do roteiro vira ângulo | **Sim** — é a competência da etapa |
|
|
205
|
+
| **CORTAR** (elisão, truncamento) mantendo as palavras do dono | **Sim** — classe `RECORTADO` |
|
|
206
|
+
| **TÍTULO** de ≤8 palavras com redação nova | **Sim**: o título é rótulo de slide, não conteúdo. Quem carrega o texto é a sustentação |
|
|
207
|
+
| **Sustentação** com redação nova | Sim, **mas declarada** — classe `REESCRITO`, com o motivo na mesma linha |
|
|
208
|
+
| **Fundir** dois argumentos do dono num ângulo só | Não sem declarar `REESCRITO` — funde tese, muda sentido |
|
|
209
|
+
| **Acrescentar** fato, número, exemplo ou fonte que o roteiro não tem | **NUNCA.** É a golden rule "nada além da fonte", e aqui a fonte é o roteiro |
|
|
210
|
+
| **Inventar o 5º ângulo** quando o roteiro não o sustenta | **NUNCA** — bloqueia no `count_gte` e o dono decide |
|
|
211
|
+
|
|
212
|
+
As **4 classes** (conjunto fechado) usadas no bloco de fidelidade:
|
|
213
|
+
|
|
214
|
+
`PRESERVADO` — a sustentação é o texto do dono, sem alteração.
|
|
215
|
+
`RECORTADO` — só corte/elisão do texto do dono.
|
|
216
|
+
`REESCRITO` — houve reformulação; **obrigatório dizer por quê na mesma linha**.
|
|
217
|
+
`NAO COUBE` — trecho/argumento do roteiro que não virou ângulo nenhum.
|
|
218
|
+
|
|
219
|
+
### 1b.4 Observar e registrar, nunca agir (`ADR-026 DF-SF11.7-16`)
|
|
220
|
+
|
|
221
|
+
Em `roteiro`, toda regra deste knowledge que em `ancora` autoriza você a **agir sobre o texto** vira
|
|
222
|
+
instrução de **observar e registrar** — ver a cláusula guarda-chuva da §0.3, que vale para regra nomeada
|
|
223
|
+
ou não. Os três casos mais fáceis de errar, nomeados:
|
|
224
|
+
|
|
225
|
+
| Você percebeu que… | Em `ancora` você… | Em `roteiro` você… |
|
|
226
|
+
|---|---|---|
|
|
227
|
+
| uma afirmação do roteiro parece **datada** (§2, "Precisão é sobre o estado de HOJE") | verifica contra o estado atual do mundo e **corrige** | **não** consulta o mundo e **não** corrige: escreve `ponto a conferir` em `observações`, com o trecho, e segue |
|
|
228
|
+
| um ângulo **só descreve**, sem consequência (§4, "Aprofundar o ângulo de consequência") | **aprofunda** o ângulo | **não** aprofunda: registra em `observações` que o ângulo N não entrega consequência — o dono decide se `revise` |
|
|
229
|
+
| um ângulo **só informa**, sem conselho acionável (§4, "precisa subir de categoria") | **reescreve** até virar lição | **não** reescreve: registra em `observações` que o ângulo N não entrega conselho |
|
|
230
|
+
|
|
231
|
+
**Por que registrar em vez de simplesmente ignorar a regra:** suspendê-la perderia sinal — o dono
|
|
232
|
+
deixaria de saber que o roteiro dele tem um dado possivelmente datado ou um ângulo que só informa.
|
|
233
|
+
Registrar preserva o valor editorial da regra **e** a autoria dele.
|
|
234
|
+
|
|
235
|
+
### 1b.5 O bloco `pc:fidelidade-roteiro` — OBRIGATÓRIO, e é o que instrumenta o gate
|
|
236
|
+
|
|
237
|
+
Ele é a **última coisa do artefato**, gravado **DEPOIS** de `confianca:` e `contrato_entrada:`.
|
|
238
|
+
|
|
239
|
+
> **Duas invariantes de posição/forma, ambas load-bearing — quebrar qualquer uma corrompe um veto:**
|
|
240
|
+
> **(1) DEPOIS dos dois campos de máquina** (`ADR-026 DF-SF11.7-17`): o motor casa a **primeira** linha
|
|
241
|
+
> que bate `campo:` no artefato inteiro, aceitando bullet e negrito — um trecho citado do dono contendo
|
|
242
|
+
> `confianca:` sequestraria o veto se o bloco viesse antes.
|
|
243
|
+
> **(2) O bloco ABRE com o heading `## Fidelidade ao Roteiro`**, e é por isso que ele pode conter tabela
|
|
244
|
+
> e listas: o veto `count_gte "Angulos para Slides"` conta itens de lista **até o próximo heading**, e
|
|
245
|
+
> os campos de máquina ficam dentro daquela seção. Sem o heading, cada linha de mapeamento contaria como
|
|
246
|
+
> um ângulo e o veto passaria a ser satisfeito pelo próprio bloco que o audita. O heading é seção EXTRA
|
|
247
|
+
> do artefato (conformidade de template é superset) — o `digest-tmpl.md` **não** muda.
|
|
248
|
+
|
|
249
|
+
Forma:
|
|
250
|
+
|
|
251
|
+
```
|
|
252
|
+
confianca: <alta|media|baixa>
|
|
253
|
+
contrato_entrada: roteiro:proprio
|
|
254
|
+
|
|
255
|
+
## Fidelidade ao Roteiro
|
|
256
|
+
<!-- pc:fidelidade-roteiro:inicio -->
|
|
257
|
+
roteiro=<path exato recebido no task_ref>
|
|
258
|
+
sha256=<do arquivo lido>
|
|
259
|
+
ts=<o do task_ref>
|
|
260
|
+
|
|
261
|
+
| # | Trecho-fonte (verbatim do roteiro) | Ângulo produzido | Classe |
|
|
262
|
+
|---|---|---|---|
|
|
263
|
+
| 1 | ... | ... | PRESERVADO |
|
|
264
|
+
|
|
265
|
+
### O que não coube
|
|
266
|
+
<trechos/argumentos do roteiro que não viraram ângulo, um por linha>
|
|
267
|
+
|
|
268
|
+
### Observações
|
|
269
|
+
<pontos a conferir e ângulos que não entregam conselho; "nenhuma" é resposta legítima>
|
|
270
|
+
<!-- pc:fidelidade-roteiro:fim -->
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
Regras do bloco:
|
|
274
|
+
|
|
275
|
+
- **Uma linha de mapeamento por ângulo produzido**, casando 1:1 com `## Angulos para Slides`. Nada mais
|
|
276
|
+
ganha linha na tabela: o que não é ângulo (a síntese, por exemplo) se declara em `Observações`.
|
|
277
|
+
- **Trecho-fonte é CITAÇÃO VERBATIM e CONTÍGUA** do roteiro: colada do arquivo, sem uma palavra trocada.
|
|
278
|
+
Precisa elidir? **cite dois trechos separados** (`"…" + "…"`) na mesma linha, cada um contíguo e
|
|
279
|
+
literal — **nunca** costure os dois com reticências dentro de uma única citação. O motivo é
|
|
280
|
+
verificabilidade: a única conferência barata que existe sobre esta coluna é procurar o trecho no
|
|
281
|
+
arquivo do dono (comparação literal, com espaços em branco colapsados), e uma citação costurada não
|
|
282
|
+
casa com nada. Não parafraseie na coluna de origem: ela existe para o dono conferir que o ângulo saiu
|
|
283
|
+
do texto dele. Trecho que não existe no arquivo é **citação fabricada**, o defeito mais grave que este
|
|
284
|
+
bloco pode conter.
|
|
285
|
+
- A célula **Classe** começa pelo TOKEN da classe (`PRESERVADO`, `RECORTADO`, `REESCRITO`, `NAO COUBE`)
|
|
286
|
+
e só depois, na mesma célula, vem a explicação. Assim a classe é legível por quem confere sem depender
|
|
287
|
+
de interpretar prosa.
|
|
288
|
+
- Toda linha `REESCRITO` traz **o motivo**, na mesma linha.
|
|
289
|
+
- **O que não coube** é obrigatório: é a metade da fidelidade que a contagem de ângulos não pega.
|
|
290
|
+
- **Observações** é obrigatória como seção; **vazia é valor legítimo** (escreva `nenhuma`) e é diferente
|
|
291
|
+
de ausente — ausente significa que você não olhou.
|
|
292
|
+
|
|
293
|
+
### 1b.6 O que NÃO existe em `roteiro`
|
|
294
|
+
|
|
295
|
+
Sem URL de âncora, sem sinal de relevância, sem discussão de comunidade (matriz §0.3). Declare `N/A
|
|
296
|
+
(modo roteiro)` onde o template pediria esses campos — **nunca** um substituto inventado.
|
|
297
|
+
|
|
298
|
+
## 2. Registrar os fatos (seção `## Noticia`) — agnóstica de fonte, aplicabilidade na matriz §0.3
|
|
299
|
+
|
|
300
|
+
O QUE entra aqui depende do modo — a matriz da §0.3 é quem diz, requisito a requisito; em `roteiro`, a
|
|
301
|
+
§1b.2 detalha. Os itens abaixo descrevem o modo `ancora`; os campos marcados `N/A` na matriz **não são
|
|
302
|
+
substituídos por invenção** em `roteiro`.
|
|
303
|
+
|
|
304
|
+
- Título original, fonte (domínio do artigo), URL do item da âncora e URL do artigo — **`ancora`**; em
|
|
305
|
+
`roteiro`, título do roteiro + proveniência (`roteiro=`/`sha256=`/`ts=`), sem URL fabricada.
|
|
306
|
+
- Sinal de relevância NO MOMENTO do timestamp fornecido (evidência de "viral e atual") — **`ancora`**;
|
|
307
|
+
**N/A em `roteiro`** (§0.3).
|
|
308
|
+
- Timestamp de captura fornecido pelo usuário — nos dois modos (é o `ts=` do `task_ref`).
|
|
309
|
+
- 3-6 fatos centrais do artigo, cada um rastreável ao texto-fonte. Fato sem fonte não entra. Em
|
|
310
|
+
`roteiro`, "o texto-fonte" é o roteiro do dono, e **fato que não está nele não entra**.
|
|
311
|
+
|
|
312
|
+
### Fato crítico não pode faltar (checagem final obrigatória)
|
|
313
|
+
|
|
314
|
+
Omitir fato crítico é falha editorial GRAVE. O resumo pode cortar detalhe acessório; NUNCA um fato que
|
|
315
|
+
altera a decisão ou a ação do leitor (ex.: produto em preview fechado = não dá para usar hoje). Antes de
|
|
316
|
+
fechar a seção, responder explicitamente: **que fato da fonte, se omitido, faria o leitor agir errado?**
|
|
317
|
+
Esse fato ENTRA.
|
|
318
|
+
|
|
319
|
+
> Vale **nos dois modos** e sem mudança: esta regra age sobre a SELEÇÃO, não sobre o texto. Em `roteiro`
|
|
320
|
+
> ela impede que o recorte perca um fato crítico **do próprio roteiro do dono**.
|
|
321
|
+
|
|
322
|
+
### Precisão é sobre o estado de HOJE
|
|
323
|
+
|
|
324
|
+
Precisão factual é inegociável e um único erro derruba a peça inteira. Toda afirmação que depende do
|
|
325
|
+
estado do mundo é verificada contra o estado ATUAL no momento da captura, nunca contra conhecimento
|
|
326
|
+
parado no tempo (ex.: a situação de bolsa de uma empresa muda). O mesmo vale para o ESCOPO de
|
|
327
|
+
ferramentas: onde algo roda ou funciona reflete o que é verdade hoje, não o que era verdade no
|
|
328
|
+
lançamento. Escopo desatualizado é erro editorial.
|
|
329
|
+
|
|
330
|
+
> **Em `entrada=roteiro` esta regra manda OBSERVAR, não agir** (§1b.4 e guarda-chuva da §0.3): você
|
|
331
|
+
> **não** consulta o mundo e **não** corrige o texto do dono. Se uma afirmação parecer datada, escreva
|
|
332
|
+
> `ponto a conferir` em `observações`, com o trecho, e siga. Corrigir aqui seria exatamente o que o gate
|
|
333
|
+
> de fidelidade existe para impedir.
|
|
334
|
+
|
|
335
|
+
## 3. Síntese acessível (seção `## Sintese Acessivel`) — agnóstica de fonte
|
|
336
|
+
|
|
337
|
+
Explicar a notícia para quem não é da área, em 1-2 parágrafos:
|
|
338
|
+
- O que aconteceu, por que importa, para quem importa.
|
|
339
|
+
- Jargão traduzido em linguagem comum (ex.: "rate limit" → "limite de uso"), sem perder a precisão do
|
|
340
|
+
que de fato ocorreu.
|
|
341
|
+
- Proibido opinar além do que a fonte e a discussão sustentam.
|
|
342
|
+
- Lembrete da REGRA DE AUDIÊNCIA (regra de ouro do `hn-curator`, detalhada na §4): o leitor do carrossel
|
|
343
|
+
não é o leitor da fonte técnica; a fonte de nicho nunca protagoniza a narrativa.
|
|
344
|
+
|
|
345
|
+
> **Em `entrada=roteiro`:** a síntese é montada **com as palavras do dono**. Traduzir jargão é **ato de
|
|
346
|
+
> redação** — se você traduzir, **declare em `Observações`, com o motivo** (a síntese não tem linha
|
|
347
|
+
> própria no bloco de fidelidade, §1b.5). Preferência: preservar a formulação dele e registrar o jargão
|
|
348
|
+
> como ponto a conferir. Vale a guarda-chuva da §0.3.
|
|
349
|
+
|
|
350
|
+
## 4. Ângulos para os slides (seção `## Angulos para Slides`) — agnóstica de fonte
|
|
351
|
+
|
|
352
|
+
Listar **≥5 ângulos** (um por slide interno), em progressão narrativa:
|
|
353
|
+
|
|
354
|
+
1. **Gancho/contexto** — por que essa notícia está explodindo agora.
|
|
355
|
+
2. **O que aconteceu** — o fato central, direto.
|
|
356
|
+
3. **Como funciona / o detalhe técnico** — o mecanismo explicado de forma simples.
|
|
357
|
+
4. **Por que importa** — impacto prático para o leitor.
|
|
358
|
+
5. **E agora?** — desdobramento, reação da comunidade ou takeaway.
|
|
359
|
+
|
|
360
|
+
> **Em `entrada=roteiro` a progressão é a DO ROTEIRO.** Reordenar ou reenquadrar o ensaio do dono para
|
|
361
|
+
> caber neste arco de notícia é agir sobre a estrutura dele: **não faça**. Siga a ordem em que ele
|
|
362
|
+
> escreveu; se a ordem dele não bate com este arco, isso é `observações`, não correção. Guarda-chuva §0.3.
|
|
363
|
+
|
|
364
|
+
Cada ângulo: título curto (≤8 palavras) + 1-2 frases de sustentação com o fato-fonte. A lista alimenta
|
|
365
|
+
diretamente o `carousel-builder` (um ângulo por slide). Em `roteiro`, compor o TÍTULO é movimento
|
|
366
|
+
autorizado (§1b.3); a **sustentação** é onde o texto do dono tem de sobreviver.
|
|
367
|
+
|
|
368
|
+
### Audiência: o leitor do carrossel não é o leitor da fonte técnica
|
|
369
|
+
|
|
370
|
+
Os ângulos são escolhidos para o leitor do carrossel, não para a comunidade da fonte. O conteúdo se
|
|
371
|
+
sustenta pelo valor que entrega a esse leitor: o Hacker News, ou qualquer fonte técnica de nicho, só
|
|
372
|
+
aparece quando há ganho REAL para ele, e sempre de forma SECUNDÁRIA (rodapé da peça) — nunca como
|
|
373
|
+
protagonista do ângulo. Corolário direto (§0.4): o sinal de relevância da plataforma NUNCA vira ângulo.
|
|
374
|
+
|
|
375
|
+
### A visão do autor é OBRIGATÓRIA no ângulo
|
|
376
|
+
|
|
377
|
+
O leitor precisa sair sabendo o que o AUTOR pensa da notícia. O conjunto de ângulos carrega,
|
|
378
|
+
explicitamente, a leitura da autoridade técnica do dono da instância: qual a consequência da notícia e
|
|
379
|
+
por que ela importa na avaliação dele. Aprofundar o ângulo de consequência (item 5) em vez de parar no
|
|
380
|
+
relato do fato — ângulo que só descreve o que aconteceu está incompleto.
|
|
381
|
+
|
|
382
|
+
> **Em `entrada=roteiro` esta regra manda OBSERVAR, não agir** (§1b.4): a visão do autor já está no
|
|
383
|
+
> roteiro — é dele o texto. **Acrescentar** visão que o roteiro não tem é invenção, e **aprofundar** um
|
|
384
|
+
> ângulo é reescrever o dono. Se um ângulo só descreve, registre isso em `observações` e siga; quem
|
|
385
|
+
> decide se vale um `revise` é o dono, no gate. Guarda-chuva §0.3.
|
|
386
|
+
|
|
387
|
+
**Fronteira com a seção 3:** a `## Sintese Acessivel` permanece factual (proibido opinar além do que a
|
|
388
|
+
fonte e a discussão sustentam) — é ali que a precisão é medida. A visão do autor entra AQUI, nos
|
|
389
|
+
ângulos, ancorada nos fatos já registrados na seção 2. Uma seção diz o que aconteceu; a outra, o que o
|
|
390
|
+
autor pensa disso.
|
|
391
|
+
|
|
392
|
+
### Consequência e conselho: ângulo que só explica não ensina
|
|
393
|
+
|
|
394
|
+
A subseção acima garante que o leitor saiba o que o autor PENSA. Esta garante o que ele LEVA. Quem lê o
|
|
395
|
+
carrossel decide algo na própria realidade a partir do tema, então o conjunto de ângulos entrega duas
|
|
396
|
+
camadas além do fato:
|
|
397
|
+
|
|
398
|
+
- **Consequência** — o que este fato passa a significar na operação de quem lê. Não é a causa do que
|
|
399
|
+
aconteceu na história contada; é o que ela obriga a considerar em qualquer contexto parecido com o do
|
|
400
|
+
leitor.
|
|
401
|
+
- **Conselho** — o que essa pessoa faz diferente por causa disso. Concreto o bastante para virar ação:
|
|
402
|
+
uma decisão a tomar antes, uma trava a colocar, uma pergunta a fazer antes de aprovar.
|
|
403
|
+
|
|
404
|
+
**Explicação causal NÃO é ensinamento.** Fechar o raciocínio na causa do episódio ("o prazo apertado
|
|
405
|
+
produziu a fraude") explica a notícia e não entrega nada: o leitor sai com uma providência estreita e
|
|
406
|
+
falsa ("então é só não dar prazo apertado"). A lição vive uma camada acima do episódio, na categoria de
|
|
407
|
+
decisão que ele expõe — que meta foi dada, que métrica foi escolhida, onde faltou ponto de controle
|
|
408
|
+
humano —, porque a categoria se repete na realidade do leitor e o episódio não.
|
|
409
|
+
|
|
410
|
+
**Teste obrigatório antes de fechar a lista, ângulo a ângulo:** *o que o leitor vai concluir que deve
|
|
411
|
+
fazer depois de ler isto?* Se a resposta provável só evita a repetição literal do caso, o ângulo está
|
|
412
|
+
preso ao episódio e precisa subir de categoria. E: *agindo exatamente pelo que o ângulo diz, ele fica
|
|
413
|
+
mais protegido ou só mais informado?* Ângulo que só informa está incompleto.
|
|
414
|
+
|
|
415
|
+
> **Em `entrada=roteiro` o teste continua, mas o que ele produz muda: OBSERVAÇÃO, nunca reescrita**
|
|
416
|
+
> (§1b.4). Você faz as duas perguntas ângulo a ângulo e, onde a resposta for "só informa", **registra em
|
|
417
|
+
> `observações`** que o ângulo N não entrega conselho. **Não** o faz subir de categoria, **não** o
|
|
418
|
+
> reescreve: o texto é do dono e o gate de fidelidade existe justamente para ele decidir isso. E vale o
|
|
419
|
+
> inverso também: o `criteria` do gate manda o dono, em `roteiro`, NÃO julgar se a lição está boa — essa
|
|
420
|
+
> pergunta é da SEÇÃO A, do modo `ancora`. Guarda-chuva §0.3.
|
|
421
|
+
|
|
422
|
+
O ângulo 5 (`E agora?`) é onde isso fecha: consolida a lição e entrega o direcionamento, em vez de
|
|
423
|
+
repetir o desfecho do fato.
|
|
424
|
+
|
|
425
|
+
_Forma emprestada das camadas Consequence e Counsel do framework 5 Cs (Context, Comparison,
|
|
426
|
+
Consequence, Case, Counsel) da skill `ai-content-miner`; a formulação acima é do pod._
|
|
427
|
+
|
|
428
|
+
## 5. Fechamento — os dois campos de máquina
|
|
429
|
+
|
|
430
|
+
Fora dos headings (convenção ADR-005 Decisão A), no fim do artefato:
|
|
431
|
+
|
|
432
|
+
- `confianca: alta|media|baixa` — **a régua é por modo: ver a matriz §0.3.** Em `ancora`, é a qualidade
|
|
433
|
+
da fonte (artigo primário acessível = alta; só título + discussão = media; fonte paywalled/incompleta
|
|
434
|
+
= baixa, registrando a limitação). Em `roteiro`, é a **rastreabilidade das afirmações do roteiro** —
|
|
435
|
+
nunca a sua autoconfiança como conformador.
|
|
436
|
+
- `contrato_entrada: <modo>:<fonte>` — o par que esta run de fato usou. Os pares aceitos estão na matriz
|
|
437
|
+
§0.3 (`ancora:hn`, `roteiro:proprio`); o **valor literal do pattern** vive só no `wf`, e qualquer valor
|
|
438
|
+
fora do conjunto BLOQUEIA a etapa. Declare o par que você realmente executou — se você teve que
|
|
439
|
+
HALTar, não há artefato para declarar.
|
|
440
|
+
|
|
441
|
+
Em `entrada=roteiro`, e **só nele**, o bloco `pc:fidelidade-roteiro` vem **depois** destes dois campos,
|
|
442
|
+
sob o heading `## Fidelidade ao Roteiro` — forma, conteúdo e as duas invariantes de posição estão na
|
|
443
|
+
§1b.5. Invertê-la sequestra o veto `field_matches` ou o `count_gte`.
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Slide CTA — composição e remissão de autoridade
|
|
2
|
+
|
|
3
|
+
Procedimento do comando `*assemble` do `carousel-builder` (parte 2: peça `07-cta.html`). O CTA fecha o carrossel e SEMPRE tem os 3 elementos abaixo — faltou um, o slide não está pronto.
|
|
4
|
+
|
|
5
|
+
## 1. Background
|
|
6
|
+
|
|
7
|
+
- `assets/cta-bg.png` do `visual-set` (imagem GERADA, mesma família visual da capa — nunca a referência do Pinterest).
|
|
8
|
+
- Overlay escurecido o suficiente para a frase dominar a tela (contraste AA no mínimo).
|
|
9
|
+
|
|
10
|
+
## 2. Frase forte de fechamento
|
|
11
|
+
|
|
12
|
+
- UMA frase, ≤14 palavras, tipografia dominante (≥64 px), centrada visualmente.
|
|
13
|
+
- Deriva do takeaway da notícia (último ângulo do digest) — fecha o raciocínio do carrossel, não introduz assunto novo.
|
|
14
|
+
- Formas que funcionam: provocação ("Enquanto você lê isso, X já mudou."), consequência direta ("Quem entende isso hoje sai na frente."), síntese afiada do fato. Sem clickbait vazio: a frase precisa ser sustentada pelo conteúdo dos slides.
|
|
15
|
+
|
|
16
|
+
## 3. Remissão à autoridade técnica — o dono da instância (`knowledge/dono.yaml`)
|
|
17
|
+
|
|
18
|
+
- Bloco de assinatura: **nome do dono** + **handle**, ambos de `knowledge/dono.yaml`, hierarquia menor que a frase de fechamento.
|
|
19
|
+
- Enquadramento factual de autoridade técnica: a linha `autoridade` de `knowledge/dono.yaml` — uma linha curta posicionando o dono como referência técnica no tema, sem persona, sem promessa que o conteúdo não sustente.
|
|
20
|
+
- Ação pedida explícita (uma só): a `acao_padrao_cta` de `knowledge/dono.yaml` (seguir o handle / salvar o post / compartilhar / comentar {PALAVRA}) — ajustável por rodada se outra ação for mais coerente com a notícia, sempre UMA ação.
|
|
21
|
+
- Voz conforme `dono.yaml` (`voz`): o carrossel É do dono — nunca citá-lo em 3ª pessoa como fonte externa.
|
|
22
|
+
|
|
23
|
+
## Registro no `carousel-package`
|
|
24
|
+
|
|
25
|
+
Na seção `## Slide CTA` do template de assembly: path do arquivo, frase de fechamento usada, ação pedida, e confirmação dos 3 elementos presentes.
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# dono.example.yaml — forma declarada da configuração de dono da instância (ADR-010 + ADR-013).
|
|
2
|
+
# O template NUNCA distribui dado pessoal real: este arquivo é o placeholder.
|
|
3
|
+
# pc:placeholder <- SENTINELA (ADR-027): enquanto esta marca existir, o arquivo
|
|
4
|
+
# ainda NÃO foi personalizado. Apague-a ao preencher de verdade.
|
|
5
|
+
# É ela que o oráculo de contenção do framework exige de todo
|
|
6
|
+
# arquivo da camada do dono que entra no pacote, e é ela
|
|
7
|
+
# que o agente consulta em vez de diffar contra este exemplo — um
|
|
8
|
+
# diff quebra em silêncio assim que o usuário edita um campo só.
|
|
9
|
+
# Na instância: copie para `knowledge/dono.yaml` e preencha. Se `dono.yaml` estiver
|
|
10
|
+
# ausente ou ainda igual a este placeholder, o agente (hn-curator/carousel-builder)
|
|
11
|
+
# ELICITA os dados na 1ª ativação e persiste — a instalação é não-interativa.
|
|
12
|
+
#
|
|
13
|
+
# RETROCOMPAT (ADR-013 Decisão 2): instâncias antigas com o campo escalar
|
|
14
|
+
# `voz: "primeira pessoa"` continuam válidas — o agente interpreta o escalar como
|
|
15
|
+
# `voz.pessoa: "primeira"` com os defaults abaixo, e oferece o upgrade na ativação.
|
|
16
|
+
dono:
|
|
17
|
+
nome: "<Nome do Dono>" # quem assina o CTA (nome civil ou de marca)
|
|
18
|
+
handle: "<@handle>" # handle do perfil onde o carrossel é publicado
|
|
19
|
+
autoridade: "<uma linha factual de enquadramento de autoridade técnica, sem persona nem promessa que o conteúdo não sustente>"
|
|
20
|
+
acao_padrao_cta: "seguir" # ação única default do CTA: seguir | salvar | compartilhar | comentar {PALAVRA}
|
|
21
|
+
# Guia de estilo do dono (ADR-013) — degrau intermediário da escada de voz
|
|
22
|
+
# (sem voz / GUIA DE ESTILO / DNA completo do dono). Machine-readable:
|
|
23
|
+
# `voz.lexico_proibido` alimenta o veto léxico do workflow (lexical-check.cjs)
|
|
24
|
+
# e é o campo que `*harden-learning` lê para promover regra léxica nova.
|
|
25
|
+
#
|
|
26
|
+
# (a) DEGRAU MAIS ALTO MANDA (ADR-027, DF-SF12.1-13). Se existir
|
|
27
|
+
# `knowledge/voice-dna/voice-dna.yaml` (degrau 3), os campos de voz abaixo
|
|
28
|
+
# NÃO são autorados aqui em paralelo: ou ficam AUSENTES, ou carregam
|
|
29
|
+
# `derived_from: knowledge/voice-dna/voice-dna.yaml`. Dois lares autorados
|
|
30
|
+
# para o mesmo eixo é como uma configuração começa a mentir — o degrau mais
|
|
31
|
+
# alto presente é o lar autorado da voz.
|
|
32
|
+
#
|
|
33
|
+
# (b) `lexico_proibido` é PARÂMETRO DE MECANISMO (classe P), não preferência
|
|
34
|
+
# solta: o valor default NÃO é neutro nem vazio — é o PISO DO FRAMEWORK.
|
|
35
|
+
# `["—", "–"]` não é gosto de ninguém, é o achado R5/SF7.2 sobre o "tell" de
|
|
36
|
+
# IA, um fato do framework que calhou de morar num campo do dono.
|
|
37
|
+
# SUBIR (acrescentar tokens) é livre. DESCER abaixo do piso — remover "—" ou
|
|
38
|
+
# "–" — é ato explícito e ATRIBUÍDO (mesmo padrão de `memoryCost.acceptedBy`),
|
|
39
|
+
# nunca efeito colateral de reset, de cópia deste placeholder ou de "voltar ao
|
|
40
|
+
# default". Os `args` literais de `lexical-check.cjs` no `wf-*.yaml` são cópia
|
|
41
|
+
# DERIVADA deste campo: mudou aqui, atualiza lá na mesma edição.
|
|
42
|
+
voz:
|
|
43
|
+
pessoa: "primeira" # o dono é o AUTOR; NUNCA citado em 3ª pessoa como fonte externa (defeito R2 do benchmark)
|
|
44
|
+
lexico_proibido: ["—", "–"] # PISO do framework (classe P) — subir é livre, descer exige atribuição explícita
|
|
45
|
+
tom: "<uma linha: registro e energia da voz do dono, ex.: direto, técnico sem jargão, sem hype>"
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# Identidade visual e mascote — mecanismo validado em campo
|
|
2
|
+
|
|
3
|
+
> Fonte: teste empírico de mascote do benchmark 4-braços (2026-07-28, 7 chamadas ≈ US$0,48
|
|
4
|
+
> no total; hipótese confirmada) — registrado no repositório do experimento
|
|
5
|
+
> (`teste-mascote/spec-personagem.md` e `transcripts/teste-mascote-A4.md`, fora deste template).
|
|
6
|
+
> Este documento é o mecanismo que o pod aplica sempre que uma peça pede mascote/personagem
|
|
7
|
+
> de identidade.
|
|
8
|
+
|
|
9
|
+
## Heurística de ferramenta (regra dura)
|
|
10
|
+
|
|
11
|
+
- **Identidade/mascote/personagem = ILUSTRAÇÃO GERADA pelo modelo de imagem. NUNCA SVG
|
|
12
|
+
desenhado por código.** O SVG-por-código produziu mascote com acabamento amador nas rodadas
|
|
13
|
+
do benchmark (reprovado pelo dono: "desenho de criança"); o teste provou que era limitação
|
|
14
|
+
de FERRAMENTA, não de capacidade — com o método abaixo, o mascote chegou a acabamento de
|
|
15
|
+
ilustrador em 3 iterações (≈US$0,21).
|
|
16
|
+
- **SVG só para grafismo geométrico:** molduras, setas, ícones de traço, caixinhas, divisores
|
|
17
|
+
— nunca para personagem com apelo.
|
|
18
|
+
|
|
19
|
+
## O mecanismo (5 passos, na ordem)
|
|
20
|
+
|
|
21
|
+
1. **Doutrina de design antes da spec.** Princípios publicados de character design guiam cada
|
|
22
|
+
decisão: silhueta legível (teste do preto chapado — Preston Blair), shape language (formas
|
|
23
|
+
= personalidade — Tom Bancroft), appeal (Thomas & Johnston), paleta limitada (2-3 corpo +
|
|
24
|
+
1 acento), expressividade concentrada no rosto, escalabilidade (48px→500px), UMA âncora de
|
|
25
|
+
identidade (acessório memorável), material/luz consistentes.
|
|
26
|
+
2. **Spec de personagem detalhada, projetada princípio a princípio.** Arquétipo, proporções
|
|
27
|
+
(ex.: chibi ~2,2 cabeças, cabeça ~60% da altura), material/textura/luz, cores com hex,
|
|
28
|
+
rosto, âncoras de identidade, pose, alvo de render ("ilustração profissional de mascote de
|
|
29
|
+
marca"), fundo chroma verde #00B140 SEM sombra, e a lista anti-cópia explícita. A spec é o
|
|
30
|
+
documento-âncora de TODAS as gerações do personagem.
|
|
31
|
+
3. **Character sheet de 6-8 poses em UMA chamada + recorte local.** Pedir a grade de poses
|
|
32
|
+
sobre chroma; recortar localmente por célula (chroma key por dominância de verde + despill
|
|
33
|
+
`g→max(r,b)` + crop na bbox do alpha com margem) → um PNG com alpha real por pose. O MESMO
|
|
34
|
+
arquivo é reutilizado nos slides — consistência por reuso de asset, não por re-geração.
|
|
35
|
+
4. **Peças-herói (capa/CTA) com personagem EM CENA, spec como âncora.** Para as peças de
|
|
36
|
+
maior impacto, gerar o personagem integrado à cena (sombra de contato, luz da cena) com a
|
|
37
|
+
spec embutida no prompt: integração claramente superior ao sticker rígido. Nas peças
|
|
38
|
+
internas, usar as poses do sheet.
|
|
39
|
+
5. **Crítica de acabamento com iteração.** Pergunta-régua a cada geração: **"parece feito por
|
|
40
|
+
ilustrador contratado?"** Reprovar parcial com ajuste de spec (não de prompt solto) e
|
|
41
|
+
regenerar; limite de iterações definido antes (o teste usou máx. 5, aprovou na 3ª). Blob no
|
|
42
|
+
lugar de forma, proporção fora da spec, membro escondido, composição desperdiçando
|
|
43
|
+
resolução = reprova.
|
|
44
|
+
|
|
45
|
+
## Nota honesta: deriva de microdetalhe entre chamadas
|
|
46
|
+
|
|
47
|
+
Em gerações separadas (cenas diferentes), a IDENTIDADE se mantém (silhueta, paleta, rosto,
|
|
48
|
+
âncoras), mas microdetalhes variam — no teste, o crachá-faísca rendeu quase como cruz numa
|
|
49
|
+
cena e os parafusos laterais viraram pinos. **A spec embutida é âncora suficiente para
|
|
50
|
+
identidade, não para microdetalhe.** Mitigação: tudo que puder vir de UMA geração única vem
|
|
51
|
+
dela (o character sheet); gerações em cena ficam restritas às peças-herói, e a crítica do
|
|
52
|
+
passo 5 decide se a deriva é aceitável.
|
|
53
|
+
|
|
54
|
+
## Economia de chamadas
|
|
55
|
+
|
|
56
|
+
- **Rascunho pré-API:** validar composição/conteúdo dos visuais em rascunho local (HTML/wire
|
|
57
|
+
ou descrição aprovada) ANTES da chamada efetiva — chamada de imagem só depois do rascunho
|
|
58
|
+
validado (sugestão do dono pós-R5, caso motivador registrado).
|
|
59
|
+
- **Imagem composta + recorte:** uma chamada que rende vários assets (o character sheet é o
|
|
60
|
+
caso provado: 8 poses por ~US$0,07) supera N chamadas avulsas em custo E consistência;
|
|
61
|
+
recorte é sempre local (PIL/chroma key), nunca nova chamada.
|
|
62
|
+
- Referências de custo do teste: 3 iterações de mascote ≈ US$0,21; sheet + 3 cenas ≈ US$0,27.
|