@event4u/agent-config 14.9.0 → 14.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.augment-plugin/marketplace.json +3 -3
- package/.augment-plugin/plugin.json +1 -1
- package/.claude-plugin/marketplace.json +1 -1
- package/CHANGELOG.md +384 -0
- package/README.md +1 -1
- package/dist/agent-src/commands/design.md +88 -0
- package/dist/agent-src/commands/project/analyze.md +47 -0
- package/dist/agent-src/commands/review/changes.md +67 -6
- package/dist/agent-src/commands/roadmap/create.md +49 -0
- package/dist/agent-src/commands/roadmap/next.md +27 -11
- package/dist/agent-src/commands/roadmap/process-full.md +14 -0
- package/dist/agent-src/commands/video/from-script.md +60 -3
- package/dist/agent-src/commands/video/stitch.md +14 -0
- package/dist/agent-src/contexts/communication/rules-auto/guidelines-mechanics.md +1 -0
- package/dist/agent-src/contexts/execution/roadmap-process-loop.md +154 -2
- package/dist/agent-src/rules/active-remediation.md +3 -3
- package/dist/agent-src/rules/code-provenance.md +2 -2
- package/dist/agent-src/rules/context-hygiene.md +13 -33
- package/dist/agent-src/rules/council-availability.md +2 -2
- package/dist/agent-src/rules/decision-revisit-gate.md +3 -1
- package/dist/agent-src/rules/design-fidelity.md +18 -0
- package/dist/agent-src/rules/design-review-after-ui-write.md +2 -2
- package/dist/agent-src/rules/evaluator-independence.md +56 -44
- package/dist/agent-src/rules/fix-what-you-see.md +9 -1
- package/dist/agent-src/rules/framework-neutrality-in-generic-skills.md +1 -1
- package/dist/agent-src/rules/minimal-safe-diff.md +14 -20
- package/dist/agent-src/rules/missing-skill-recovery.md +13 -1
- package/dist/agent-src/rules/playbook-precedence.md +105 -0
- package/dist/agent-src/rules/recurring-criticism.md +3 -1
- package/dist/agent-src/rules/roadmap-progress-sync.md +14 -13
- package/dist/agent-src/rules/scale-discipline.md +24 -0
- package/dist/agent-src/rules/security-sensitive-stop.md +2 -2
- package/dist/agent-src/rules/settings-ask-protocol.md +2 -2
- package/dist/agent-src/rules/ui-audit-gate.md +27 -15
- package/dist/agent-src/rules/untrusted-input-defense.md +2 -2
- package/dist/agent-src/skills/accessibility-auditor/SKILL.md +19 -0
- package/dist/agent-src/skills/adr-create/SKILL.md +7 -0
- package/dist/agent-src/skills/agents-md-thin-root/SKILL.md +33 -0
- package/dist/agent-src/skills/ai-council/references/advanced-modes.md +17 -3
- package/dist/agent-src/skills/ai-council/references/output-and-synthesis.md +31 -0
- package/dist/agent-src/skills/ai-council/references/procedure.md +19 -0
- package/dist/agent-src/skills/alerting-doctrine/SKILL.md +225 -0
- package/dist/agent-src/skills/alerting-doctrine/evals/triggers.json +17 -0
- package/dist/agent-src/skills/async-python-patterns/SKILL.md +1 -1
- package/dist/agent-src/skills/authz-review/SKILL.md +0 -1
- package/dist/agent-src/skills/blast-radius-analyzer/SKILL.md +32 -0
- package/dist/agent-src/skills/brand/SKILL.md +3 -0
- package/dist/agent-src/skills/brand-asset-generation/SKILL.md +3 -0
- package/dist/agent-src/skills/brand-audit/SKILL.md +3 -0
- package/dist/agent-src/skills/brand-identity/SKILL.md +3 -0
- package/dist/agent-src/skills/brand-strategy/SKILL.md +3 -0
- package/dist/agent-src/skills/brand-to-tokens/SKILL.md +3 -0
- package/dist/agent-src/skills/check-refs/SKILL.md +3 -0
- package/dist/agent-src/skills/code-refactoring/SKILL.md +1 -1
- package/dist/agent-src/skills/code-review/SKILL.md +11 -0
- package/dist/agent-src/skills/command-routing/SKILL.md +6 -0
- package/dist/agent-src/skills/condense-memory/SKILL.md +4 -1
- package/dist/agent-src/skills/context-authoring/SKILL.md +1 -1
- package/dist/agent-src/skills/conventional-commits-writing/SKILL.md +4 -1
- package/dist/agent-src/skills/copilot-agents-optimization/SKILL.md +10 -0
- package/dist/agent-src/skills/corpus-grounding/SKILL.md +3 -0
- package/dist/agent-src/skills/design-intelligence/SKILL.md +3 -0
- package/dist/agent-src/skills/design-intelligence/data/landing.csv +36 -35
- package/dist/agent-src/skills/design-intelligence/data/stacks/threejs.csv +1 -0
- package/dist/agent-src/skills/design-review/SKILL.md +80 -2
- package/dist/agent-src/skills/design-review/references/verification-automation.md +41 -0
- package/dist/agent-src/skills/design-system-capture/SKILL.md +35 -40
- package/dist/agent-src/skills/design-system-capture/references/import-procedure.md +50 -0
- package/dist/agent-src/skills/design-tokens/SKILL.md +3 -0
- package/dist/agent-src/skills/design-variations/SKILL.md +3 -0
- package/dist/agent-src/skills/developer-like-execution/SKILL.md +3 -0
- package/dist/agent-src/skills/discovery-interview/SKILL.md +1 -1
- package/dist/agent-src/skills/doc-coauthoring/SKILL.md +1 -1
- package/dist/agent-src/skills/docx-authoring/SKILL.md +1 -1
- package/dist/agent-src/skills/editorial-calendar/SKILL.md +1 -1
- package/dist/agent-src/skills/estimate-ticket/SKILL.md +3 -0
- package/dist/agent-src/skills/existing-ui-audit/SKILL.md +20 -3
- package/dist/agent-src/skills/fe-design/SKILL.md +74 -41
- package/dist/agent-src/skills/fe-design/evals/triggers.json +65 -53
- package/dist/agent-src/skills/fe-design/references/craft-floor.md +52 -0
- package/dist/agent-src/skills/fe-design/references/source-led-port.md +36 -0
- package/dist/agent-src/skills/file-editor/SKILL.md +5 -0
- package/dist/agent-src/skills/finishing-a-development-branch/SKILL.md +2 -2
- package/dist/agent-src/skills/git-workflow/SKILL.md +3 -0
- package/dist/agent-src/skills/github-ci/SKILL.md +1 -1
- package/dist/agent-src/skills/html-deck/SKILL.md +3 -0
- package/dist/agent-src/skills/iconography/SKILL.md +3 -0
- package/dist/agent-src/skills/image-editing/SKILL.md +3 -0
- package/dist/agent-src/skills/image-generation/SKILL.md +3 -0
- package/dist/agent-src/skills/image-provider-routing/SKILL.md +3 -0
- package/dist/agent-src/skills/incident-commander/SKILL.md +10 -0
- package/dist/agent-src/skills/js-library-packaging/SKILL.md +173 -0
- package/dist/agent-src/skills/js-library-packaging/evals/triggers.json +17 -0
- package/dist/agent-src/skills/js-library-packaging/scripts/check_package_surface.ts +270 -0
- package/dist/agent-src/skills/judge-artifact-completeness/SKILL.md +1 -1
- package/dist/agent-src/skills/judge-injection-defense/SKILL.md +1 -1
- package/dist/agent-src/skills/laravel-migration/SKILL.md +3 -0
- package/dist/agent-src/skills/laravel-validation/SKILL.md +1 -1
- package/dist/agent-src/skills/learning-to-rule-or-skill/SKILL.md +3 -0
- package/dist/agent-src/skills/legal-intake-triage/SKILL.md +1 -1
- package/dist/agent-src/skills/legal-practice-profile/SKILL.md +1 -1
- package/dist/agent-src/skills/lint-skills/SKILL.md +3 -0
- package/dist/agent-src/skills/llm-provider-knowledge/SKILL.md +3 -0
- package/dist/agent-src/skills/logging-monitoring/SKILL.md +234 -51
- package/dist/agent-src/skills/logo-generation/SKILL.md +3 -0
- package/dist/agent-src/skills/md-language-check/SKILL.md +3 -0
- package/dist/agent-src/skills/messaging-architecture/SKILL.md +1 -1
- package/dist/agent-src/skills/migration-architect/SKILL.md +1 -1
- package/dist/agent-src/skills/module-detect-on-the-fly/SKILL.md +1 -1
- package/dist/agent-src/skills/module-management/SKILL.md +1 -1
- package/dist/agent-src/skills/monorepo-workspace/SKILL.md +149 -0
- package/dist/agent-src/skills/monorepo-workspace/evals/triggers.json +17 -0
- package/dist/agent-src/skills/motion-choreographer/SKILL.md +7 -1
- package/dist/agent-src/skills/multi-tenancy/SKILL.md +4 -0
- package/dist/agent-src/skills/onboarding-program/SKILL.md +1 -1
- package/dist/agent-src/skills/operational-readiness/SKILL.md +184 -0
- package/dist/agent-src/skills/operational-readiness/evals/triggers.json +17 -0
- package/dist/agent-src/skills/override-management/SKILL.md +3 -0
- package/dist/agent-src/skills/perf-feedback-craft/SKILL.md +1 -1
- package/dist/agent-src/skills/persona-improvement/SKILL.md +3 -0
- package/dist/agent-src/skills/pest-testing/SKILL.md +3 -0
- package/dist/agent-src/skills/playbook-authoring/SKILL.md +162 -0
- package/dist/agent-src/skills/playwright-testing/SKILL.md +3 -0
- package/dist/agent-src/skills/privacy-review/SKILL.md +3 -0
- package/dist/agent-src/skills/prompt-engineering-image/SKILL.md +3 -0
- package/dist/agent-src/skills/prompt-optimizer/SKILL.md +1 -1
- package/dist/agent-src/skills/quality-tools/SKILL.md +5 -0
- package/dist/agent-src/skills/react-shadcn-ui/SKILL.md +52 -21
- package/dist/agent-src/skills/readme-reviewer/SKILL.md +3 -0
- package/dist/agent-src/skills/readme-writing/SKILL.md +3 -0
- package/dist/agent-src/skills/readme-writing-package/SKILL.md +3 -0
- package/dist/agent-src/skills/receiving-code-review/SKILL.md +3 -3
- package/dist/agent-src/skills/refine-prompt/SKILL.md +3 -0
- package/dist/agent-src/skills/refine-ticket/SKILL.md +3 -0
- package/dist/agent-src/skills/requesting-code-review/SKILL.md +2 -2
- package/dist/agent-src/skills/review-routing/SKILL.md +2 -2
- package/dist/agent-src/skills/roadmap-writing/SKILL.md +23 -41
- package/dist/agent-src/skills/roadmap-writing/references/follow-up-roadmap-shape.md +47 -0
- package/dist/agent-src/skills/rtk-output-filtering/SKILL.md +22 -6
- package/dist/agent-src/skills/runway-cognition/SKILL.md +3 -0
- package/dist/agent-src/skills/scene-expander/SKILL.md +1 -1
- package/dist/agent-src/skills/scene-expander/scene-blueprint.schema.yaml +26 -0
- package/dist/agent-src/skills/secrets-management/SKILL.md +5 -1
- package/dist/agent-src/skills/server-hardening/SKILL.md +159 -0
- package/dist/agent-src/skills/server-hardening/evals/triggers.json +17 -0
- package/dist/agent-src/skills/skill-improvement-pipeline/SKILL.md +3 -0
- package/dist/agent-src/skills/skill-management/SKILL.md +3 -0
- package/dist/agent-src/skills/skill-reviewer/SKILL.md +3 -0
- package/dist/agent-src/skills/skill-writing/SKILL.md +6 -0
- package/dist/agent-src/skills/spreadsheet-authoring/SKILL.md +3 -0
- package/dist/agent-src/skills/storybook-workshop/SKILL.md +194 -0
- package/dist/agent-src/skills/storybook-workshop/evals/triggers.json +17 -0
- package/dist/agent-src/skills/storybook-workshop/scripts/story_contrast_floor.ts +134 -0
- package/dist/agent-src/skills/subagent-orchestration/SKILL.md +1 -1
- package/dist/agent-src/skills/subagent-orchestration/prompts/README.md +25 -0
- package/dist/agent-src/skills/supply-chain-intake/SKILL.md +12 -0
- package/dist/agent-src/skills/systematic-debugging/SKILL.md +1 -1
- package/dist/agent-src/skills/terraform/SKILL.md +3 -0
- package/dist/agent-src/skills/test-driven-development/SKILL.md +1 -1
- package/dist/agent-src/skills/threat-modeling/SKILL.md +0 -3
- package/dist/agent-src/skills/token-optimizer/SKILL.md +3 -0
- package/dist/agent-src/skills/typography-system/SKILL.md +3 -0
- package/dist/agent-src/skills/ui-component-architect/SKILL.md +9 -1
- package/dist/agent-src/skills/upstream-contribute/SKILL.md +3 -0
- package/dist/agent-src/skills/using-git-worktrees/SKILL.md +1 -1
- package/dist/agent-src/skills/validate-feature-fit/SKILL.md +3 -0
- package/dist/agent-src/skills/verify-completion-evidence/SKILL.md +2 -2
- package/dist/agent-src/skills/wireframe/SKILL.md +3 -0
- package/dist/agent-src/skills/wireframe/references/story-beat-ledger.schema.json +115 -0
- package/dist/agent-src/skills/workspace-link/SKILL.md +131 -0
- package/dist/agent-src/skills/workspace-link/evals/triggers.json +17 -0
- package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
- package/dist/agent-src/templates/playbook.md +75 -0
- package/dist/agent-src/templates/roadmaps.md +37 -0
- package/dist/agent-src/templates/scripts/check_playbook_invokes.ts +231 -0
- package/dist/agent-src/templates/scripts/work_engine/directives/ui/apply.ts +24 -0
- package/dist/agent-src/templates/scripts/work_engine/directives/ui/polish.ts +2 -0
- package/dist/agent-src/templates/scripts/work_engine/directives/ui/review.ts +216 -0
- package/dist/agent-src/templates/scripts/work_engine/directives/ui/scaffold.ts +159 -0
- package/dist/agent-src/templates/scripts/work_engine/directives/ui/stack_bundles.ts +73 -4
- package/dist/agent-src/templates/scripts/work_engine/stack/detect.ts +325 -40
- package/dist/cli/commands/uiAudit.js +221 -0
- package/dist/cli/commands/uiAudit.js.map +1 -0
- package/dist/cli/commands/uiRender.js +206 -0
- package/dist/cli/commands/uiRender.js.map +1 -0
- package/dist/cli/main.js +22 -1
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/mcp/content.js +64 -1
- package/dist/cli/mcp/content.js.map +1 -1
- package/dist/cli/mcp/dispatch.js +175 -10
- package/dist/cli/mcp/dispatch.js.map +1 -1
- package/dist/cli/registry.js +3 -0
- package/dist/cli/registry.js.map +1 -1
- package/dist/cli-delegate/{chunk-H4VIVD4C.js → chunk-236PNQZK.js} +413 -391
- package/dist/cli-delegate/{chunk-G23AT6GD.js → chunk-DMSZHXZS.js} +57 -1
- package/dist/cli-delegate/{chunk-77GR3VD4.js → chunk-FF7WAFMR.js} +58 -3
- package/dist/cli-delegate/{chunk-PLSG6UL5.js → chunk-K4FFODTS.js} +341 -204
- package/dist/cli-delegate/{chunk-YM4GZDJG.js → chunk-L43NCYPB.js} +5 -0
- package/dist/cli-delegate/{chunk-B2ERU2VA.js → chunk-WOKWX5PL.js} +1 -1
- package/dist/cli-delegate/cmd_brand_status.js +8 -6
- package/dist/cli-delegate/cmd_conformance.js +3 -3
- package/dist/cli-delegate/cmd_doctor.js +3 -3
- package/dist/cli-delegate/cmd_export.js +4 -4
- package/dist/cli-delegate/cmd_handoff.js +1 -1
- package/dist/cli-delegate/cmd_preflight.js +2 -2
- package/dist/cli-delegate/cmd_prune.js +4 -4
- package/dist/cli-delegate/cmd_session_recycle.js +70 -9
- package/dist/cli-delegate/cmd_settings_migrate.js +4 -4
- package/dist/cli-delegate/cmd_settings_set.js +1 -1
- package/dist/cli-delegate/cmd_sync.js +4 -4
- package/dist/cli-delegate/cmd_uninstall.js +4 -4
- package/dist/cli-delegate/cmd_validate.js +4 -4
- package/dist/discovery/deprecation-report.md +1 -1
- package/dist/discovery/discovery-manifest.json +380 -145
- package/dist/discovery/discovery-manifest.json.sha256 +1 -1
- package/dist/discovery/discovery-manifest.summary.md +4 -4
- package/dist/discovery/dormancy-report.md +1 -1
- package/dist/discovery/orphan-report.md +1 -1
- package/dist/discovery/packs.json +18 -8
- package/dist/discovery/trust-report.md +3 -3
- package/dist/discovery/workspaces.json +16 -6
- package/dist/hooks/dispatch.js +2337 -1436
- package/dist/install/install.mjs +795 -708
- package/dist/mcp/registry-manifest.json +3 -3
- package/dist/mcp/server.json +2 -2
- package/dist/mcp/server.mjs +1685 -1250
- package/dist/router.json +1 -1
- package/dist/scripts/_lib/lean_projection_mode.js +40 -0
- package/dist/scripts/_lib/lean_projection_mode.js.map +1 -0
- package/dist/scripts/_lib/scoped_projection.js +84 -0
- package/dist/scripts/_lib/scoped_projection.js.map +1 -1
- package/dist/scripts/_lib/ui_surface.js +89 -0
- package/dist/scripts/_lib/ui_surface.js.map +1 -0
- package/dist/scripts/condense.js +6 -10
- package/dist/scripts/condense.js.map +1 -1
- package/dist/scripts/project_thin_rules.js +40 -2
- package/dist/scripts/project_thin_rules.js.map +1 -1
- package/dist/server/schemas/settings.js +3 -0
- package/dist/server/schemas/settings.js.map +1 -1
- package/dist/shared/skillRanking.js +159 -0
- package/dist/shared/skillRanking.js.map +1 -0
- package/docs/contracts/provider-lifecycle.md +47 -18
- package/docs/contracts/settings-classes.md +14 -4
- package/docs/guidelines/agent-infra/context-hygiene-mechanics.md +49 -0
- package/docs/guidelines/agent-infra/evaluator-independence-mechanics.md +92 -0
- package/docs/guidelines/agent-infra/minimal-safe-diff-mechanics.md +45 -1
- package/docs/guidelines/agent-infra/roadmap-deferred-resolution-provenance.md +54 -0
- package/docs/guidelines/design-antipatterns.md +4 -2
- package/docs/guidelines/design-asset-discipline.md +38 -0
- package/docs/guidelines/design-fidelity-mechanics.md +45 -29
- package/docs/guidelines/design-handover-extraction.md +35 -5
- package/docs/guidelines/design-modes.md +41 -1
- package/docs/guidelines/monorepo-antipatterns.md +141 -0
- package/llms.txt +50 -39
- package/package.json +1 -1
- package/src/agent-src/templates/scripts/check_playbook_invokes.ts +231 -0
- package/src/agent-src/templates/scripts/work_engine/directives/ui/apply.ts +24 -0
- package/src/agent-src/templates/scripts/work_engine/directives/ui/polish.ts +2 -0
- package/src/agent-src/templates/scripts/work_engine/directives/ui/review.ts +216 -0
- package/src/agent-src/templates/scripts/work_engine/directives/ui/scaffold.ts +159 -0
- package/src/agent-src/templates/scripts/work_engine/directives/ui/stack_bundles.ts +73 -4
- package/src/agent-src/templates/scripts/work_engine/stack/detect.ts +325 -40
- package/src/config/agent-settings.template.yml +28 -0
- package/src/config/assurance-capability-registry.json +223 -0
- package/src/config/assurance-threshold-budget.json +65 -0
- package/src/config/ci-local-parity.yml +14 -0
- package/src/config/discovery/unassigned-artefacts.yml +2 -0
- package/src/config/dispatch-economy-metrics.json +4 -2
- package/src/config/evaluator-budgets.json +14 -14
- package/src/config/gate-coverage.yml +227 -8
- package/src/config/gate-violation-baselines.json +76 -72
- package/src/config/hook-latency-budget.json +1 -0
- package/src/config/hook-token-budget.json +137 -125
- package/src/config/pack-size-budget.json +4 -2
- package/src/config/preamble-payload-budget.json +71 -67
- package/src/config/quorum-attendance-budget.json +12 -4
- package/src/config/rule-activation-census.json +7 -3
- package/src/config/rule-enforcement-baseline.json +0 -1
- package/src/config/rule-stub-ceilings.json +112 -91
- package/src/scripts/_cli/cmd_doctor.ts +15 -16
- package/src/scripts/_cli/doctor_install_mode.ts +49 -0
- package/src/scripts/_cli/doctor_overrides.ts +154 -0
- package/src/scripts/_dispatch.bash +17 -0
- package/src/scripts/_lib/as_of.ts +412 -0
- package/src/scripts/_lib/exec_evidence.ts +7 -0
- package/src/scripts/_lib/hook_settings.ts +33 -0
- package/src/scripts/_lib/host_listing_model.ts +192 -0
- package/src/scripts/_lib/lean_projection_mode.ts +44 -0
- package/src/scripts/_lib/mcp_bridge.ts +199 -0
- package/src/scripts/_lib/review_independence.ts +62 -10
- package/src/scripts/_lib/rule_injection.ts +239 -0
- package/src/scripts/_lib/run_checkpoint.ts +54 -1
- package/src/scripts/_lib/scoped_projection.ts +96 -0
- package/src/scripts/_lib/session_register.ts +44 -2
- package/src/scripts/_lib/skill_catalogue.ts +38 -2
- package/src/scripts/_lib/transcript_reads.ts +207 -0
- package/src/scripts/_lib/ui_authority.test.ts +251 -0
- package/src/scripts/_lib/ui_authority.ts +343 -0
- package/src/scripts/ai-video/adapters/fal.sh +8 -3
- package/src/scripts/ai-video/adapters/gemini-veo.sh +10 -0
- package/src/scripts/ai-video/adapters/higgsfield.sh +10 -2
- package/src/scripts/ai-video/adapters/kling.sh +10 -0
- package/src/scripts/ai-video/adapters/sora.sh +10 -0
- package/src/scripts/ai-video/lib/calibrate-cost.sh +145 -0
- package/src/scripts/ai-video/lib/model-capabilities/README.md +53 -7
- package/src/scripts/ai-video/lib/model-capabilities/comfyui.json +15 -3
- package/src/scripts/ai-video/lib/model-capabilities/fal.json +36 -6
- package/src/scripts/ai-video/lib/model-capabilities/gemini-veo.json +23 -0
- package/src/scripts/ai-video/lib/model-capabilities/higgsfield.json +23 -0
- package/src/scripts/ai-video/lib/model-capabilities/kling.json +23 -0
- package/src/scripts/ai-video/lib/model-capabilities/musetalk.json +8 -2
- package/src/scripts/ai-video/lib/model-capabilities/replicate.json +36 -6
- package/src/scripts/ai-video/lib/model-capabilities/sora.json +45 -0
- package/src/scripts/ai-video/lib/model-capabilities/syncso.json +8 -2
- package/src/scripts/ai-video/lib/parse-blueprint.sh +52 -5
- package/src/scripts/ai-video/lib/resume-scan.sh +92 -3
- package/src/scripts/ai-video/lib/seam-plan.sh +212 -0
- package/src/scripts/ai-video/smoke-trace.sh +450 -2
- package/src/scripts/ai-video/stitch.sh +191 -10
- package/src/scripts/ai-video/test-pipeline.sh +84 -6
- package/src/scripts/ai_council/cli_agency_bounds.ts +139 -0
- package/src/scripts/ai_council/cli_least_agency_canary.ts +347 -0
- package/src/scripts/ai_council/clients.ts +3 -2
- package/src/scripts/ai_council/consensus.ts +63 -6
- package/src/scripts/ai_council/events_log.ts +46 -1
- package/src/scripts/ai_council/orchestrator.ts +103 -108
- package/src/scripts/ai_council/orchestrator_results.ts +166 -0
- package/src/scripts/ai_council/prompts.ts +12 -5
- package/src/scripts/ai_council/quorum.ts +82 -1
- package/src/scripts/ai_council/quorum_wiring.ts +82 -5
- package/src/scripts/ai_council/seating.ts +211 -0
- package/src/scripts/ai_council/stance_tally.ts +22 -0
- package/src/scripts/bench_hook_latency.ts +62 -0
- package/src/scripts/build_proof.ts +12 -1
- package/src/scripts/capture_skill_catalogue.ts +21 -0
- package/src/scripts/check_always_budget.ts +2 -1
- package/src/scripts/check_augmentignore.ts +2 -1
- package/src/scripts/check_beta_review_markers.ts +2 -1
- package/src/scripts/check_composite_arming.ts +364 -0
- package/src/scripts/check_corpus_staleness.ts +2 -1
- package/src/scripts/check_council_pin_staleness.ts +3 -1
- package/src/scripts/check_enforcement_coverage.ts +116 -3
- package/src/scripts/check_enforcement_denominator.ts +365 -0
- package/src/scripts/check_gate_coverage.ts +2 -1
- package/src/scripts/check_hook_bundle_freshness.ts +13 -1
- package/src/scripts/check_knowledge_cards.ts +2 -1
- package/src/scripts/check_knowledge_pages.ts +3 -2
- package/src/scripts/check_memory.ts +2 -1
- package/src/scripts/check_no_automerge_key.ts +287 -0
- package/src/scripts/check_pack_conformance_fixture.ts +565 -0
- package/src/scripts/check_pack_passport_reconciliation.ts +274 -0
- package/src/scripts/check_proposal.ts +2 -1
- package/src/scripts/check_reach_staleness.ts +2 -1
- package/src/scripts/check_release_adjacent_health.ts +2 -1
- package/src/scripts/check_release_pr_shape.ts +5 -0
- package/src/scripts/check_review_schema.ts +34 -1
- package/src/scripts/check_roadmap_trackable.ts +48 -3
- package/src/scripts/check_source_size_budget.ts +2 -1
- package/src/scripts/check_standing_payload_delta.ts +505 -0
- package/src/scripts/check_trigger_evals.ts +2 -1
- package/src/scripts/classify_change_risk.ts +281 -0
- package/src/scripts/compute_skill_tiers.ts +186 -0
- package/src/scripts/condense.ts +8 -13
- package/src/scripts/council_attendance_metrics.ts +183 -0
- package/src/scripts/council_cli.ts +10 -8
- package/src/scripts/council_parse_rate.ts +116 -0
- package/src/scripts/derive_playbooks.ts +406 -0
- package/src/scripts/design_slop_rules.test.ts +7 -0
- package/src/scripts/design_slop_rules.ts +56 -2
- package/src/scripts/dispatch_r2_reviewer.ts +16 -0
- package/src/scripts/frontend_corpus_hash.ts +116 -0
- package/src/scripts/generate_pack_manifests.ts +78 -0
- package/src/scripts/grade_target_readiness.ts +478 -0
- package/src/scripts/hook_manifest.json +1 -1
- package/src/scripts/hook_manifest.yaml +97 -16
- package/src/scripts/hooks/concern_registry.ts +4 -0
- package/src/scripts/hooks/design_pass_hook.ts +356 -0
- package/src/scripts/hooks/rtk_wrap_hook.ts +30 -7
- package/src/scripts/hooks/rule_inject_hook.ts +318 -0
- package/src/scripts/hot_context_hook.ts +74 -7
- package/src/scripts/install.ts +40 -89
- package/src/scripts/lint_adapter_tier.ts +663 -0
- package/src/scripts/lint_archived_skills.ts +93 -0
- package/src/scripts/lint_budget_ownership.ts +2 -1
- package/src/scripts/lint_deterministic_time.ts +470 -0
- package/src/scripts/lint_framework_leakage.ts +5 -0
- package/src/scripts/lint_handoffs.ts +525 -1
- package/src/scripts/lint_judge_prompt_expectation.ts +155 -0
- package/src/scripts/lint_marketplace.ts +88 -0
- package/src/scripts/lint_media_policy_linkage.ts +140 -1
- package/src/scripts/lint_one_off_age.ts +6 -1
- package/src/scripts/lint_override_kernel_guard.ts +87 -5
- package/src/scripts/lint_roadmap_complexity.ts +56 -0
- package/src/scripts/lint_rule_enforcement_declaration.ts +24 -7
- package/src/scripts/lint_rule_norm_pin.ts +321 -0
- package/src/scripts/lint_spawn_payload.ts +42 -5
- package/src/scripts/lint_symptom_intake.ts +2 -1
- package/src/scripts/mcp_parity_smoke.ts +30 -4
- package/src/scripts/mcp_render.ts +66 -1
- package/src/scripts/mcp_tool_fingerprint.ts +241 -0
- package/src/scripts/measure_risk_class_drift.ts +140 -0
- package/src/scripts/measure_skill_ranker_baseline.ts +212 -0
- package/src/scripts/media/lib/adapter-common.sh +211 -1
- package/src/scripts/media/lib/adapter-contract.md +74 -6
- package/src/scripts/model_rule_injection.ts +907 -0
- package/src/scripts/project_thin_rules.ts +45 -2
- package/src/scripts/release.ts +66 -860
- package/src/scripts/release_drill.ts +59 -3
- package/src/scripts/release_env.ts +298 -0
- package/src/scripts/release_publication.ts +720 -0
- package/src/scripts/roadmap_context.ts +778 -0
- package/src/scripts/schemas/fidelity-measurement-sheet.schema.json +169 -0
- package/src/scripts/schemas/pack.schema.json +62 -4
- package/src/scripts/schemas/rule.schema.json +24 -2
- package/src/scripts/schemas/skill.schema.json +41 -2
- package/src/scripts/schemas/ui-authority.schema.json +114 -0
- package/src/scripts/session_register_hook.ts +29 -3
- package/src/scripts/sessions_cli.ts +67 -3
- package/src/scripts/skill_tools/score_skill_relevance.ts +36 -53
- package/src/scripts/tighten_skill_descriptions.ts +264 -0
- package/src/scripts/token_sink_report.ts +239 -0
- package/src/scripts/trigger_coverage.ts +122 -3
- package/src/scripts/update_counts.ts +7 -3
- package/src/scripts/validate_frontmatter.ts +66 -0
- package/src/server/schemas/settings.ts +5 -0
- package/src/shared/skillRanking.ts +183 -0
|
@@ -204,4 +204,14 @@ aiv_cmd_fetch() {
|
|
|
204
204
|
jq -n --arg p "${out}" '{video_path:$p, audio_embedded:true}'
|
|
205
205
|
}
|
|
206
206
|
|
|
207
|
+
# Capability: `capability --model <id>` answers from
|
|
208
|
+
# lib/model-capabilities/sora.json (schema v2 — durations, modeled cost,
|
|
209
|
+
# and the start_frame/end_frame continuity answers). A bare `capability`
|
|
210
|
+
# keeps the adapter-level audio flag byte-identical to before the manifest.
|
|
211
|
+
sub="${1:-}"
|
|
212
|
+
if [ "${sub}" = "capability" ]; then
|
|
213
|
+
shift
|
|
214
|
+
aiv_manifest_capability "${ADAPTER_ID}" "native" "$@"
|
|
215
|
+
exit 0
|
|
216
|
+
fi
|
|
207
217
|
aiv_dispatch "${ADAPTER_ID}" "native" "$@"
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# calibrate-cost.sh — compare the MODELED cost against what the provider
|
|
3
|
+
# actually CHARGED, before committing a batch.
|
|
4
|
+
#
|
|
5
|
+
# Why this exists, and why it is smaller than it first looked. The read-back
|
|
6
|
+
# already existed: `resume-scan.sh` reads `<project>/scenes/<id>/cost.json`
|
|
7
|
+
# `.charged_usd` and sums it as `spent_usd`, and the from-song command writes
|
|
8
|
+
# that file after every live scene. What did NOT exist was any path from that
|
|
9
|
+
# number back into `manifest.cost_per_second_usd` — money was spent, recorded,
|
|
10
|
+
# and never read into the model it contradicted. This is that path's front end.
|
|
11
|
+
#
|
|
12
|
+
# It runs at the operator-pick moment (the checkpoint the operator was already
|
|
13
|
+
# stopping at) rather than adding a gate of its own, so the calibration line
|
|
14
|
+
# appears where a human is already looking.
|
|
15
|
+
#
|
|
16
|
+
# Usage:
|
|
17
|
+
# calibrate-cost.sh <project-dir> <scene-id> --adapter <id> --model <id>
|
|
18
|
+
# [--scenes <n>] [--ledger <path>] [--no-append]
|
|
19
|
+
#
|
|
20
|
+
# Output (stdout, one line):
|
|
21
|
+
# calibration: modeled $<m>/s · charged $<c>/s · <delta> · extrapolated batch $<x> (modeled $<y>)
|
|
22
|
+
#
|
|
23
|
+
# `charged: null` is NOT `0`. An unpriceable or not-yet-charged scene prints
|
|
24
|
+
# `charged: null`, extrapolates nothing, and never re-confirms. A modeled figure
|
|
25
|
+
# is only ever corrected by a MEASURED one — treating null as zero would make
|
|
26
|
+
# every future estimate quietly cheaper, which is the one direction a costing
|
|
27
|
+
# error must never drift.
|
|
28
|
+
#
|
|
29
|
+
# Exit codes:
|
|
30
|
+
# 0 calibration printed; within tolerance (or nothing charged yet)
|
|
31
|
+
# 2 usage
|
|
32
|
+
# 3 jq missing
|
|
33
|
+
# 7 project/scene inputs unreadable
|
|
34
|
+
# 13 charged exceeds modeled by more than the tolerance — RE-CONFIRM
|
|
35
|
+
# before the batch. Not a failure: a deliberate halt for a human.
|
|
36
|
+
set -euo pipefail
|
|
37
|
+
|
|
38
|
+
_cc_root="$(cd "$(dirname "${BASH_SOURCE[0]}")/../../../.." && pwd)"
|
|
39
|
+
# shellcheck source=/dev/null
|
|
40
|
+
. "${_cc_root}/src/scripts/media/lib/adapter-common.sh"
|
|
41
|
+
|
|
42
|
+
# The re-confirmation threshold. 25 % is the roadmap's stated number and is a
|
|
43
|
+
# STATED DEFAULT, not a measured optimum: it is the point past which "the model
|
|
44
|
+
# is roughly right" stops being a fair description. Revisit-if a provider's
|
|
45
|
+
# real-world variance is measured and sits above it, which would make the halt
|
|
46
|
+
# fire on noise rather than on drift.
|
|
47
|
+
CC_TOLERANCE_PCT="${AIV_CALIBRATE_TOLERANCE_PCT:-25}"
|
|
48
|
+
|
|
49
|
+
project=""; scene=""; adapter=""; model=""; scenes=""; ledger=""; append=1
|
|
50
|
+
[ "$#" -ge 2 ] || { printf 'calibrate-cost: usage: %s <project-dir> <scene-id> --adapter <id> --model <id> [--scenes <n>]\n' "$0" >&2; exit 2; }
|
|
51
|
+
project="$1"; scene="$2"; shift 2
|
|
52
|
+
while [ "$#" -gt 0 ]; do
|
|
53
|
+
case "$1" in
|
|
54
|
+
--adapter) adapter="${2:-}"; shift 2 ;;
|
|
55
|
+
--model) model="${2:-}"; shift 2 ;;
|
|
56
|
+
--scenes) scenes="${2:-}"; shift 2 ;;
|
|
57
|
+
--ledger) ledger="${2:-}"; shift 2 ;;
|
|
58
|
+
--no-append) append=0; shift ;;
|
|
59
|
+
*) printf "calibrate-cost: unknown arg '%s'\n" "$1" >&2; exit 2 ;;
|
|
60
|
+
esac
|
|
61
|
+
done
|
|
62
|
+
[ -n "${adapter}" ] && [ -n "${model}" ] \
|
|
63
|
+
|| { printf 'calibrate-cost: --adapter and --model are required\n' >&2; exit 2; }
|
|
64
|
+
command -v jq >/dev/null 2>&1 || { printf 'calibrate-cost: jq required\n' >&2; exit 3; }
|
|
65
|
+
|
|
66
|
+
scene_dir="${project}/scenes/${scene}"
|
|
67
|
+
[ -d "${scene_dir}" ] || { printf 'calibrate-cost: scene dir not readable: %s\n' "${scene_dir}" >&2; exit 7; }
|
|
68
|
+
|
|
69
|
+
# Duration: the scene's own render input, never a default. A guessed duration
|
|
70
|
+
# would turn a per-second comparison into a fabricated one.
|
|
71
|
+
duration=""
|
|
72
|
+
if [ -r "${scene_dir}/prompt.json" ]; then
|
|
73
|
+
duration="$(jq -r '.duration // empty' "${scene_dir}/prompt.json" 2>/dev/null || true)"
|
|
74
|
+
fi
|
|
75
|
+
|
|
76
|
+
manifest="$(aiv_manifest_path "${adapter}")"
|
|
77
|
+
modeled_per_s="null"
|
|
78
|
+
if [ -r "${manifest}" ]; then
|
|
79
|
+
modeled_per_s="$(jq -r --arg m "${model}" '.models[$m].cost_per_second_usd // "null" | tostring' "${manifest}" 2>/dev/null || printf 'null')"
|
|
80
|
+
fi
|
|
81
|
+
|
|
82
|
+
# The existing spend record — the same file resume-scan.sh already sums.
|
|
83
|
+
charged_total="null"
|
|
84
|
+
if [ -r "${scene_dir}/cost.json" ]; then
|
|
85
|
+
charged_total="$(jq -r '.charged_usd // "null" | tostring' "${scene_dir}/cost.json" 2>/dev/null || printf 'null')"
|
|
86
|
+
fi
|
|
87
|
+
|
|
88
|
+
line="$(MODELED="${modeled_per_s}" CHARGED="${charged_total}" DUR="${duration}" \
|
|
89
|
+
SCENES="${scenes}" TOL="${CC_TOLERANCE_PCT}" node -e '
|
|
90
|
+
const num = (v) => (v === "" || v === "null" || v === undefined ? null : Number(v));
|
|
91
|
+
const modeled = num(process.env.MODELED);
|
|
92
|
+
const charged = num(process.env.CHARGED);
|
|
93
|
+
const dur = num(process.env.DUR);
|
|
94
|
+
const scenes = num(process.env.SCENES);
|
|
95
|
+
const tol = Number(process.env.TOL);
|
|
96
|
+
const fmt = (v) => (v === null || Number.isNaN(v) ? "null" : `$${v.toFixed(4)}`);
|
|
97
|
+
|
|
98
|
+
// Per-second charged needs a duration. Without one the charge is real but not
|
|
99
|
+
// comparable, and saying so beats dividing by a guess.
|
|
100
|
+
const chargedPerS = charged !== null && dur !== null && dur > 0 ? charged / dur : null;
|
|
101
|
+
|
|
102
|
+
let delta = "delta: n/a (nothing charged yet)";
|
|
103
|
+
let reconfirm = false;
|
|
104
|
+
if (modeled !== null && chargedPerS !== null) {
|
|
105
|
+
if (modeled === 0) {
|
|
106
|
+
delta = chargedPerS === 0 ? "+0.0 %" : "modeled 0 — any charge is a model defect";
|
|
107
|
+
reconfirm = chargedPerS > 0;
|
|
108
|
+
} else {
|
|
109
|
+
const pct = ((chargedPerS - modeled) / modeled) * 100;
|
|
110
|
+
delta = `${pct >= 0 ? "+" : ""}${pct.toFixed(1)} %`;
|
|
111
|
+
reconfirm = pct > tol;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
let extra = "";
|
|
116
|
+
if (scenes !== null && dur !== null) {
|
|
117
|
+
const m = modeled !== null ? modeled * dur * scenes : null;
|
|
118
|
+
const c = chargedPerS !== null ? chargedPerS * dur * scenes : null;
|
|
119
|
+
extra = ` · extrapolated batch ${fmt(c)} (modeled ${fmt(m)})`;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
process.stdout.write(
|
|
123
|
+
`calibration: modeled ${fmt(modeled)}/s · charged ${chargedPerS === null ? "null" : fmt(chargedPerS)}/s · ${delta}${extra}\n` +
|
|
124
|
+
`RECONFIRM=${reconfirm ? "1" : "0"}\n`,
|
|
125
|
+
);
|
|
126
|
+
')"
|
|
127
|
+
|
|
128
|
+
printf '%s\n' "${line%$'\n'RECONFIRM=*}"
|
|
129
|
+
reconfirm="${line##*RECONFIRM=}"
|
|
130
|
+
|
|
131
|
+
if [ "${append}" -eq 1 ]; then
|
|
132
|
+
bash "${_cc_root}/src/scripts/ai-video/smoke-trace.sh" cost-ledger append \
|
|
133
|
+
--adapter "${adapter}" --model "${model}" \
|
|
134
|
+
--modeled "${modeled_per_s}" \
|
|
135
|
+
--charged "$(printf '%s' "${line}" | sed -nE 's/.*charged (null|\$([0-9.]+))\/s.*/\2/p' | sed 's/^$/null/')" \
|
|
136
|
+
--note "calibration probe at scene ${scene}" \
|
|
137
|
+
${ledger:+--ledger "${ledger}"} >/dev/null
|
|
138
|
+
fi
|
|
139
|
+
|
|
140
|
+
if [ "${reconfirm}" = "1" ]; then
|
|
141
|
+
printf 'calibrate-cost: charged exceeds modeled by more than %s %% — RE-CONFIRM before the batch (the cap in --max-spend-usd is not a substitute: it bounds total spend, not a wrong per-second model).\n' \
|
|
142
|
+
"${CC_TOLERANCE_PCT}" >&2
|
|
143
|
+
exit 13
|
|
144
|
+
fi
|
|
145
|
+
exit 0
|
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
# Model-capabilities manifests
|
|
2
2
|
|
|
3
|
-
One JSON manifest per
|
|
4
|
-
`replicate.json`)
|
|
5
|
-
|
|
3
|
+
One JSON manifest per adapter whose capabilities differ per model —
|
|
4
|
+
the multiplexers (`fal.json`, `replicate.json`), the local engine
|
|
5
|
+
(`comfyui.json`), the lip-sync pair (`syncso.json`, `musetalk.json`) and
|
|
6
|
+
the direct video adapters (`higgsfield.json`, `kling.json`,
|
|
7
|
+
`gemini-veo.json`, `sora.json`). A multiplexer reaches many video models
|
|
8
|
+
through one uniform provider API; a direct adapter reaches one provider's
|
|
9
|
+
own model set. Either way the manifest is the single source of truth for
|
|
6
10
|
what each reachable model can do, consumed by:
|
|
7
11
|
|
|
8
12
|
- the adapter's `capability --model <id>` subcommand (audio routing for
|
|
@@ -10,13 +14,17 @@ what each reachable model can do, consumed by:
|
|
|
10
14
|
- the music-video pipeline's segment planner (variable-length plans must
|
|
11
15
|
stay inside `min_duration..max_duration` or the plan is unbuildable),
|
|
12
16
|
- the batch cost gate (`cost_per_second_usd` × planned seconds feeds the
|
|
13
|
-
preview estimate and the `--max-spend-usd` kill-switch)
|
|
17
|
+
preview estimate and the `--max-spend-usd` kill-switch),
|
|
18
|
+
- the continuity selection rule (`start_frame` / `end_frame` decide
|
|
19
|
+
whether a model can open on a handed-off frame or close on a given one
|
|
20
|
+
— `motion-choreographer` Step 0 reads them before it proposes a
|
|
21
|
+
continuous take).
|
|
14
22
|
|
|
15
|
-
## Schema (
|
|
23
|
+
## Schema (v2)
|
|
16
24
|
|
|
17
25
|
```json
|
|
18
26
|
{
|
|
19
|
-
"schema":
|
|
27
|
+
"schema": 2,
|
|
20
28
|
"adapter": "<adapter-id>",
|
|
21
29
|
"models": {
|
|
22
30
|
"<model_id>": {
|
|
@@ -27,12 +35,24 @@ what each reachable model can do, consumed by:
|
|
|
27
35
|
"aspect": ["16:9", "9:16"],
|
|
28
36
|
"cost_per_second_usd": 0.28,
|
|
29
37
|
"verified": false,
|
|
30
|
-
"input_notes": "per-model input schema differences, one line"
|
|
38
|
+
"input_notes": "per-model input schema differences, one line",
|
|
39
|
+
"start_frame": null,
|
|
40
|
+
"end_frame": null,
|
|
41
|
+
"frame_lock": { "probed_at": null, "psnr_frame0": null }
|
|
31
42
|
}
|
|
32
43
|
}
|
|
33
44
|
}
|
|
34
45
|
```
|
|
35
46
|
|
|
47
|
+
**What v2 adds.** Three keys — `start_frame`, `end_frame`, `frame_lock` —
|
|
48
|
+
and one rule that is not a shape: **`null` means *unknown*, and unknown is
|
|
49
|
+
never treated as `true`.** Nothing else changed, so a v1 file becomes a v2
|
|
50
|
+
file once the three keys are present on every entry. The keys are a
|
|
51
|
+
catch-up rather than a new axis: the `ref_images[0] → image /
|
|
52
|
+
start_image` mapping row below, and `higgsfield.sh`'s hard requirement for
|
|
53
|
+
`ref_images[0]`, already asserted start-frame behaviour that v1 had no
|
|
54
|
+
field to express.
|
|
55
|
+
|
|
36
56
|
- `min_duration` / `max_duration` — clip length bounds in **seconds**.
|
|
37
57
|
Equal values mean the model renders fixed-length clips only.
|
|
38
58
|
- `audio_sync` — `true` when the model returns a muxed MP4 with
|
|
@@ -49,6 +69,26 @@ what each reachable model can do, consumed by:
|
|
|
49
69
|
MUST surface the flag rather than trust the numbers silently.
|
|
50
70
|
- `input_notes` — the per-model input schema difference in one line
|
|
51
71
|
(see below).
|
|
72
|
+
- `start_frame` — `true` when the model accepts a first frame to open on
|
|
73
|
+
(`ref_images[0]`), `false` when it cannot, `null` when nobody has
|
|
74
|
+
probed it. A continuous take may only be chained through models that
|
|
75
|
+
answer `true`.
|
|
76
|
+
- `end_frame` — the same three values for a *closing* frame (`end_image`
|
|
77
|
+
in the stdin contract). An adapter handed `end_image` for a model that
|
|
78
|
+
does not answer `true` **refuses by name** — it never drops the image;
|
|
79
|
+
see [`adapter-contract.md`](../../../media/lib/adapter-contract.md)
|
|
80
|
+
§ `end_image`.
|
|
81
|
+
- `frame_lock` — the evidence behind those two answers: `probed_at` (ISO
|
|
82
|
+
date of the live probe) and `psnr_frame0` (measured dB of the rendered
|
|
83
|
+
frame 0 against the submitted still). Both `null` until a probe writes
|
|
84
|
+
them; a dB value is a **measurement**, never an estimate, so it stays
|
|
85
|
+
`null` rather than being filled in from documentation. A `true` on
|
|
86
|
+
either frame key without a `probed_at` is a contract violation.
|
|
87
|
+
- `end_frame: true` beside `start_frame: false` is **incoherent** — a
|
|
88
|
+
model that cannot open on a supplied frame cannot close on one either.
|
|
89
|
+
The shared reader in
|
|
90
|
+
[`adapter-common.sh`](../../../media/lib/adapter-common.sh) refuses such
|
|
91
|
+
an entry instead of handing it to a planner.
|
|
52
92
|
|
|
53
93
|
## Per-model input schema differences
|
|
54
94
|
|
|
@@ -70,6 +110,12 @@ provider docs) until the first live smoke trace; mismatches surface as
|
|
|
70
110
|
provider-side 4xx errors with the body echoed to stderr, never as
|
|
71
111
|
silent drops.
|
|
72
112
|
|
|
113
|
+
`ref_images[0]` is the **start** frame, and the row above maps only its
|
|
114
|
+
*field name*. Whether a given model honours it is the separate `start_frame`
|
|
115
|
+
answer in the schema above; the closing counterpart — `end_image` in the
|
|
116
|
+
stdin contract — is `end_frame`. A mapping row is not evidence that a model
|
|
117
|
+
accepts the field: only `frame_lock.probed_at` is.
|
|
118
|
+
|
|
73
119
|
## Verification workflow
|
|
74
120
|
|
|
75
121
|
1. Maintainer wires a live key and captures a smoke trace under
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"schema":
|
|
2
|
+
"schema": 2,
|
|
3
3
|
"adapter": "comfyui",
|
|
4
4
|
"comment": "Local ComfyUI capability manifest (ADR-060). cost_per_second_usd is a KNOWN 0.0 — a local render has no provider charge (distinct from an omitted/unknown estimate; the cost gate still treats MISSING as unknown, never 0). Every entry is documented-best-effort until a maintainer captures a smoke trace against a real containerized ComfyUI — verified:false entries MUST NOT be trusted for planning-critical decisions without surfacing the flag. The template field names the package-shipped workflow under lib/comfyui-templates/ — operator-supplied workflow JSONs are rejected (ADR-060 §3).",
|
|
5
5
|
"models": {
|
|
@@ -13,7 +13,13 @@
|
|
|
13
13
|
"verified": false,
|
|
14
14
|
"license": "Apache-2.0",
|
|
15
15
|
"template": "comfyui-templates/wan22-ti2v-5b.json",
|
|
16
|
-
"input_notes": "ASSUMED ~121-frame ceiling at 24 fps (~5 s) for the 5B TI2V checkpoint; optional start image (ref_images[0]) uploaded via /upload/image; silent video — the orchestrator muxes audio at stitch"
|
|
16
|
+
"input_notes": "ASSUMED ~121-frame ceiling at 24 fps (~5 s) for the 5B TI2V checkpoint; optional start image (ref_images[0]) uploaded via /upload/image; silent video — the orchestrator muxes audio at stitch",
|
|
17
|
+
"start_frame": null,
|
|
18
|
+
"end_frame": null,
|
|
19
|
+
"frame_lock": {
|
|
20
|
+
"probed_at": null,
|
|
21
|
+
"psnr_frame0": null
|
|
22
|
+
}
|
|
17
23
|
},
|
|
18
24
|
"ltx-2": {
|
|
19
25
|
"label": "LTX-2 (Lightricks) — local audio-synced video",
|
|
@@ -25,7 +31,13 @@
|
|
|
25
31
|
"verified": false,
|
|
26
32
|
"license": "LTX community license (verify before commercial use)",
|
|
27
33
|
"template": "comfyui-templates/ltx-2.json",
|
|
28
|
-
"input_notes": "ASSUMED duration ceiling and audio-sync behaviour from vendor docs; the LTX-2 graph + weights must be present in the container image; verify license terms before any commercial render"
|
|
34
|
+
"input_notes": "ASSUMED duration ceiling and audio-sync behaviour from vendor docs; the LTX-2 graph + weights must be present in the container image; verify license terms before any commercial render",
|
|
35
|
+
"start_frame": null,
|
|
36
|
+
"end_frame": null,
|
|
37
|
+
"frame_lock": {
|
|
38
|
+
"probed_at": null,
|
|
39
|
+
"psnr_frame0": null
|
|
40
|
+
}
|
|
29
41
|
}
|
|
30
42
|
}
|
|
31
43
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"schema":
|
|
2
|
+
"schema": 2,
|
|
3
3
|
"adapter": "fal",
|
|
4
4
|
"comment": "Per-model capability manifest for the fal multiplexer. Every entry is documented-best-effort until a maintainer captures a real-API smoke trace for that model \u2014 verified:false entries MUST NOT be trusted for planning-critical decisions without surfacing the flag. Durations in seconds; cost_per_second_usd is a modeled estimate, never a quote.",
|
|
5
5
|
"models": {
|
|
@@ -15,7 +15,13 @@
|
|
|
15
15
|
],
|
|
16
16
|
"cost_per_second_usd": 0.28,
|
|
17
17
|
"verified": false,
|
|
18
|
-
"input_notes": "duration is an enum string '5'|'10'; aspect_ratio; negative_prompt supported; cfg_scale optional"
|
|
18
|
+
"input_notes": "duration is an enum string '5'|'10'; aspect_ratio; negative_prompt supported; cfg_scale optional",
|
|
19
|
+
"start_frame": null,
|
|
20
|
+
"end_frame": null,
|
|
21
|
+
"frame_lock": {
|
|
22
|
+
"probed_at": null,
|
|
23
|
+
"psnr_frame0": null
|
|
24
|
+
}
|
|
19
25
|
},
|
|
20
26
|
"fal-ai/wan/v2.2-a14b/text-to-video": {
|
|
21
27
|
"label": "Wan 2.2 A14B (text-to-video)",
|
|
@@ -29,7 +35,13 @@
|
|
|
29
35
|
"cost_per_second_usd": 0.08,
|
|
30
36
|
"verified": true,
|
|
31
37
|
"input_notes": "resolution enum ('480p'|'580p'|'720p') instead of free aspect; num_frames-driven duration; seed supported",
|
|
32
|
-
"smoke_trace": "fal-fal-ai_wan_v2.2-a14b_text-to-video-live-2026-06-10T12-38-11Z"
|
|
38
|
+
"smoke_trace": "fal-fal-ai_wan_v2.2-a14b_text-to-video-live-2026-06-10T12-38-11Z",
|
|
39
|
+
"start_frame": null,
|
|
40
|
+
"end_frame": null,
|
|
41
|
+
"frame_lock": {
|
|
42
|
+
"probed_at": null,
|
|
43
|
+
"psnr_frame0": null
|
|
44
|
+
}
|
|
33
45
|
},
|
|
34
46
|
"fal-ai/ltx-2/text-to-video": {
|
|
35
47
|
"label": "LTX-2 (text-to-video, synchronized audio)",
|
|
@@ -44,7 +56,13 @@
|
|
|
44
56
|
"cost_per_second_usd": 0.16,
|
|
45
57
|
"verified": true,
|
|
46
58
|
"input_notes": "generates synchronized audio natively (audio_sync); resolution up to 4K; duration in seconds",
|
|
47
|
-
"smoke_trace": "fal-fal-ai_ltx-2_text-to-video-live-2026-06-10T12-36-49Z"
|
|
59
|
+
"smoke_trace": "fal-fal-ai_ltx-2_text-to-video-live-2026-06-10T12-36-49Z",
|
|
60
|
+
"start_frame": null,
|
|
61
|
+
"end_frame": null,
|
|
62
|
+
"frame_lock": {
|
|
63
|
+
"probed_at": null,
|
|
64
|
+
"psnr_frame0": null
|
|
65
|
+
}
|
|
48
66
|
},
|
|
49
67
|
"fal-ai/veo3": {
|
|
50
68
|
"label": "Google Veo 3 (text-to-video, native audio)",
|
|
@@ -57,7 +75,13 @@
|
|
|
57
75
|
],
|
|
58
76
|
"cost_per_second_usd": 0.5,
|
|
59
77
|
"verified": false,
|
|
60
|
-
"input_notes": "fixed 8s clips; dialogue/ambient rendered from the prompt text; aspect_ratio; generate_audio flag"
|
|
78
|
+
"input_notes": "fixed 8s clips; dialogue/ambient rendered from the prompt text; aspect_ratio; generate_audio flag",
|
|
79
|
+
"start_frame": null,
|
|
80
|
+
"end_frame": null,
|
|
81
|
+
"frame_lock": {
|
|
82
|
+
"probed_at": null,
|
|
83
|
+
"psnr_frame0": null
|
|
84
|
+
}
|
|
61
85
|
},
|
|
62
86
|
"fal-ai/hunyuan-video": {
|
|
63
87
|
"label": "Hunyuan Video (text-to-video)",
|
|
@@ -71,7 +95,13 @@
|
|
|
71
95
|
"cost_per_second_usd": 0.08,
|
|
72
96
|
"verified": true,
|
|
73
97
|
"input_notes": "num_frames-driven duration; resolution enum; no negative_prompt",
|
|
74
|
-
"smoke_trace": "fal-fal-ai_hunyuan-video-live-2026-06-10T12-39-13Z"
|
|
98
|
+
"smoke_trace": "fal-fal-ai_hunyuan-video-live-2026-06-10T12-39-13Z",
|
|
99
|
+
"start_frame": null,
|
|
100
|
+
"end_frame": null,
|
|
101
|
+
"frame_lock": {
|
|
102
|
+
"probed_at": null,
|
|
103
|
+
"psnr_frame0": null
|
|
104
|
+
}
|
|
75
105
|
}
|
|
76
106
|
}
|
|
77
107
|
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": 2,
|
|
3
|
+
"adapter": "gemini-veo",
|
|
4
|
+
"comment": "Per-model capability manifest for the direct gemini-veo adapter. Every value is READ OUT OF THE TREE and cited in input_notes. Only veo-3.0-generate-001 is an entry: it is the adapter default (adapters/gemini-veo.sh:129) and the XML <default-model> (agents/templates/.ai-video.xml.example:72). veo-3.0-fast* and veo-2.0* appear only as rate PREFIX PATTERNS (adapters/gemini-veo.sh:93-95) with no concrete model id in the tree, so no entries are invented for them. verified stays false: the adapter header records 10/10 live renders of this exact model (adapters/gemini-veo.sh:9-15) but names no trace id reachable from the tree, and the local traces are gitignored.",
|
|
5
|
+
"models": {
|
|
6
|
+
"veo-3.0-generate-001": {
|
|
7
|
+
"label": "Google Veo 3 (text-to-video, native audio)",
|
|
8
|
+
"min_duration": 4,
|
|
9
|
+
"max_duration": 8,
|
|
10
|
+
"audio_sync": true,
|
|
11
|
+
"aspect": null,
|
|
12
|
+
"cost_per_second_usd": 0.4,
|
|
13
|
+
"verified": false,
|
|
14
|
+
"input_notes": "model id from adapters/gemini-veo.sh:129 and agents/templates/.ai-video.xml.example:72; durationSeconds enum {4,6,8} is ASSUMED in the adapter header (:34-37) and is the clamp the adapter applies (:132-137), upper bound matching the template tuning <max-duration>8</max-duration> (xml:77); audio_sync true from the declared audio=native (:4), the dispatch flag (tail) and <audio-native>true</audio-native> (xml:78); aspect is passed through as aspectRatio with no enum check (:151) so the accepted set is unknown — the template's tuning default is 16:9 (xml:75); cost_per_second_usd from _veo_model_rate_usd_per_s veo-3.0* = 0.40 (:94), corroborated by the header's ~$1.60 per 4 s render at $0.40/s (:10)",
|
|
15
|
+
"start_frame": null,
|
|
16
|
+
"end_frame": null,
|
|
17
|
+
"frame_lock": {
|
|
18
|
+
"probed_at": null,
|
|
19
|
+
"psnr_frame0": null
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": 2,
|
|
3
|
+
"adapter": "higgsfield",
|
|
4
|
+
"comment": "Per-model capability manifest for the direct higgsfield adapter. Every value is READ OUT OF THE TREE and cited in input_notes — no field is estimated from provider documentation this repo cannot show. Unknown is null, never a guess: higgsfield.sh sends no duration, aspect or cost parameter (adapters/higgsfield.sh:186-187), so those bounds are unknown rather than defaulted. The provider's named motion presets (mix, burst, dvd, cinematic, talk — adapters/higgsfield.sh:37-38,58) are NOT models and stay on `capability --preset`. higgsfield-soul (the XML <default-model>) is an image model the adapter explicitly refuses for image2video and rewrites to dop-turbo (adapters/higgsfield.sh:113-120), so it is not an entry here. verified stays false: the adapter header records a live 1/1 image2video round-trip (adapters/higgsfield.sh:15-20) but names no per-model trace id reachable from the tree, and `verified` is a per-model claim.",
|
|
5
|
+
"models": {
|
|
6
|
+
"dop-turbo": {
|
|
7
|
+
"label": "Higgsfield DoP Turbo (image-to-video)",
|
|
8
|
+
"min_duration": null,
|
|
9
|
+
"max_duration": null,
|
|
10
|
+
"audio_sync": false,
|
|
11
|
+
"aspect": null,
|
|
12
|
+
"cost_per_second_usd": null,
|
|
13
|
+
"verified": false,
|
|
14
|
+
"input_notes": "model id from the image2video fallback at adapters/higgsfield.sh:116 (accepted pattern *dop*|*turbo* at :115), route POST /v1/image2video/dop (:70,:189); requires ref_images[0] and dies exit 7 without it (:133-135); request body carries model+prompt+input_images only — no duration, aspect or seed (:186-187), so duration/aspect bounds are unknown; audio_sync false from the video-only fetch shape (:259); the only cost figure in the tree is the dry-run fixture's per-clip cost_estimate 0.1 (media/lib/fixtures/higgsfield/result.json), which is not a per-second rate; observed live output 5.4 s at 1168x768 (:16) and the template's operator tuning cap is <max-duration>5</max-duration> (agents/templates/.ai-video.xml.example:63) — an operator preference, not a provider bound",
|
|
15
|
+
"start_frame": null,
|
|
16
|
+
"end_frame": null,
|
|
17
|
+
"frame_lock": {
|
|
18
|
+
"probed_at": null,
|
|
19
|
+
"psnr_frame0": null
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": 2,
|
|
3
|
+
"adapter": "kling",
|
|
4
|
+
"comment": "Per-model capability manifest for the direct kling adapter. Every value is READ OUT OF THE TREE and cited in input_notes. Only kling-v2-master is an entry: it is the adapter default (adapters/kling.sh:153) and the XML <default-model> (agents/templates/.ai-video.xml.example:87). kling-v1* appears only as a rate PREFIX PATTERN (adapters/kling.sh:105) with no concrete model id anywhere in the tree, so no v1 entry is invented. verified stays false: the adapter header records a live 1/1 round-trip (adapters/kling.sh:9-13) but names no per-model trace id reachable from the tree.",
|
|
5
|
+
"models": {
|
|
6
|
+
"kling-v2-master": {
|
|
7
|
+
"label": "Kling v2 Master (text-to-video)",
|
|
8
|
+
"min_duration": 5,
|
|
9
|
+
"max_duration": 10,
|
|
10
|
+
"audio_sync": false,
|
|
11
|
+
"aspect": null,
|
|
12
|
+
"cost_per_second_usd": 0.28,
|
|
13
|
+
"verified": false,
|
|
14
|
+
"input_notes": "model id from adapters/kling.sh:153 and agents/templates/.ai-video.xml.example:87; duration is the enum {'5','10'} the adapter clamps to (:151) with KLING_MAX_DURATION default 10 (:52) matching the template tuning <max-duration>10</max-duration> (xml:93); audio_sync false from the adapter's declared audio=none (:4), the video-only fetch (:245), the dispatch flag (:248) and <audio-native>false</audio-native> (xml:94); aspect is passed straight through as aspect_ratio with no enum check (:167) so the accepted set is unknown — the template's tuning default is 16:9 (xml:91); cost_per_second_usd is DERIVED, not quoted: _kling_model_rate_usd gives kling-v2* = 1.40 USD per 5 s (:102-104) and the header records ~$1.40 for a 5 s std render (:12), so 1.40 / 5 = 0.28",
|
|
15
|
+
"start_frame": null,
|
|
16
|
+
"end_frame": null,
|
|
17
|
+
"frame_lock": {
|
|
18
|
+
"probed_at": null,
|
|
19
|
+
"psnr_frame0": null
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"schema":
|
|
2
|
+
"schema": 2,
|
|
3
3
|
"adapter": "musetalk",
|
|
4
4
|
"comment": "Local (MIT) lip-sync capability manifest — the offline alternative to the hosted syncso adapter. cost_per_second_usd is a KNOWN 0.0 (local inference, ADR-060 cost semantics). The lipsync_budget block mirrors the syncso sparse discipline: local renders are free but the QUALITY argument for sparseness is unchanged (singing lip-sync degrades fast off frontal close-ups) — the orchestrator enforces it BEFORE invoking the adapter. Every entry is documented-best-effort until a maintainer captures a trace against a real MuseTalk install (verified:false must be surfaced, never silently trusted).",
|
|
5
5
|
"lipsync_budget": {
|
|
@@ -18,7 +18,13 @@
|
|
|
18
18
|
"cost_per_second_usd": 0.0,
|
|
19
19
|
"verified": false,
|
|
20
20
|
"license": "MIT",
|
|
21
|
-
"input_notes": "local video_path + audio_path (local-source rule); ASSUMED CLI surface --video/--audio/--output via MUSETALK_CMD; GPU strongly recommended — CPU inference is minutes-per-second; quality degrades off frontal close-ups like every lip-sync model"
|
|
21
|
+
"input_notes": "local video_path + audio_path (local-source rule); ASSUMED CLI surface --video/--audio/--output via MUSETALK_CMD; GPU strongly recommended — CPU inference is minutes-per-second; quality degrades off frontal close-ups like every lip-sync model",
|
|
22
|
+
"start_frame": null,
|
|
23
|
+
"end_frame": null,
|
|
24
|
+
"frame_lock": {
|
|
25
|
+
"probed_at": null,
|
|
26
|
+
"psnr_frame0": null
|
|
27
|
+
}
|
|
22
28
|
}
|
|
23
29
|
}
|
|
24
30
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"schema":
|
|
2
|
+
"schema": 2,
|
|
3
3
|
"adapter": "replicate",
|
|
4
4
|
"comment": "Per-model capability manifest for the replicate multiplexer. Every entry is documented-best-effort until a maintainer captures a real-API smoke trace for that model \u2014 verified:false entries MUST NOT be trusted for planning-critical decisions without surfacing the flag. Durations in seconds; cost_per_second_usd is a modeled estimate, never a quote.",
|
|
5
5
|
"models": {
|
|
@@ -15,7 +15,13 @@
|
|
|
15
15
|
"cost_per_second_usd": 0.5,
|
|
16
16
|
"verified": false,
|
|
17
17
|
"input_notes": "fixed 8s clips; dialogue/ambient rendered from the prompt text; resolution flag",
|
|
18
|
-
"official": true
|
|
18
|
+
"official": true,
|
|
19
|
+
"start_frame": null,
|
|
20
|
+
"end_frame": null,
|
|
21
|
+
"frame_lock": {
|
|
22
|
+
"probed_at": null,
|
|
23
|
+
"psnr_frame0": null
|
|
24
|
+
}
|
|
19
25
|
},
|
|
20
26
|
"kwaivgi/kling-v2.1-master": {
|
|
21
27
|
"label": "Kling v2.1 Master (text/image-to-video)",
|
|
@@ -30,7 +36,13 @@
|
|
|
30
36
|
"cost_per_second_usd": 0.28,
|
|
31
37
|
"verified": false,
|
|
32
38
|
"input_notes": "duration enum 5|10; start_image for image-to-video; negative_prompt supported",
|
|
33
|
-
"official": true
|
|
39
|
+
"official": true,
|
|
40
|
+
"start_frame": null,
|
|
41
|
+
"end_frame": null,
|
|
42
|
+
"frame_lock": {
|
|
43
|
+
"probed_at": null,
|
|
44
|
+
"psnr_frame0": null
|
|
45
|
+
}
|
|
34
46
|
},
|
|
35
47
|
"wan-video/wan-2.2-t2v-fast": {
|
|
36
48
|
"label": "Wan 2.2 (text-to-video, fast)",
|
|
@@ -45,7 +57,13 @@
|
|
|
45
57
|
"verified": true,
|
|
46
58
|
"input_notes": "num_frames-driven duration; resolution enum; seed supported",
|
|
47
59
|
"official": true,
|
|
48
|
-
"smoke_trace": "replicate-wan-video_wan-2.2-t2v-fast-live-2026-06-10T10-43-52Z"
|
|
60
|
+
"smoke_trace": "replicate-wan-video_wan-2.2-t2v-fast-live-2026-06-10T10-43-52Z",
|
|
61
|
+
"start_frame": null,
|
|
62
|
+
"end_frame": null,
|
|
63
|
+
"frame_lock": {
|
|
64
|
+
"probed_at": null,
|
|
65
|
+
"psnr_frame0": null
|
|
66
|
+
}
|
|
49
67
|
},
|
|
50
68
|
"lightricks/ltx-video": {
|
|
51
69
|
"label": "LTX Video (text-to-video)",
|
|
@@ -61,7 +79,13 @@
|
|
|
61
79
|
"verified": true,
|
|
62
80
|
"input_notes": "length in frames at fixed fps; cfg + negative_prompt supported",
|
|
63
81
|
"official": false,
|
|
64
|
-
"smoke_trace": "replicate-lightricks_ltx-video-live-2026-06-10T10-46-47Z"
|
|
82
|
+
"smoke_trace": "replicate-lightricks_ltx-video-live-2026-06-10T10-46-47Z",
|
|
83
|
+
"start_frame": null,
|
|
84
|
+
"end_frame": null,
|
|
85
|
+
"frame_lock": {
|
|
86
|
+
"probed_at": null,
|
|
87
|
+
"psnr_frame0": null
|
|
88
|
+
}
|
|
65
89
|
},
|
|
66
90
|
"tencent/hunyuan-video": {
|
|
67
91
|
"label": "Hunyuan Video (text-to-video)",
|
|
@@ -76,7 +100,13 @@
|
|
|
76
100
|
"verified": true,
|
|
77
101
|
"input_notes": "video_length in frames; embedded_guidance_scale; no negative_prompt",
|
|
78
102
|
"official": false,
|
|
79
|
-
"smoke_trace": "replicate-tencent_hunyuan-video-live-2026-06-10T10-54-32Z"
|
|
103
|
+
"smoke_trace": "replicate-tencent_hunyuan-video-live-2026-06-10T10-54-32Z",
|
|
104
|
+
"start_frame": null,
|
|
105
|
+
"end_frame": null,
|
|
106
|
+
"frame_lock": {
|
|
107
|
+
"probed_at": null,
|
|
108
|
+
"psnr_frame0": null
|
|
109
|
+
}
|
|
80
110
|
}
|
|
81
111
|
}
|
|
82
112
|
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": 2,
|
|
3
|
+
"adapter": "sora",
|
|
4
|
+
"comment": "Per-model capability manifest for the direct sora adapter. Every value is READ OUT OF THE TREE and cited in input_notes. Both entries are concrete model ids the adapter names (adapters/sora.sh:20,73-74); sora-2 is the adapter default (:111) and the XML <default-model> (agents/templates/.ai-video.xml.example:101). verified stays false: the adapter header records a live 1/1 round-trip on sora-2 (adapters/sora.sh:9-13) but names no trace id reachable from the tree, and sora-2-pro has never been rendered here at all.",
|
|
5
|
+
"models": {
|
|
6
|
+
"sora-2": {
|
|
7
|
+
"label": "OpenAI Sora 2 (text-to-video, native audio)",
|
|
8
|
+
"min_duration": 4,
|
|
9
|
+
"max_duration": 12,
|
|
10
|
+
"audio_sync": true,
|
|
11
|
+
"aspect": [
|
|
12
|
+
"16:9",
|
|
13
|
+
"9:16"
|
|
14
|
+
],
|
|
15
|
+
"cost_per_second_usd": 0.1,
|
|
16
|
+
"verified": false,
|
|
17
|
+
"input_notes": "model id from adapters/sora.sh:20,74 and agents/templates/.ai-video.xml.example:101; seconds enum {'4','8','12'} verified empirically via validation-error probes with no spend (:12,:15-16,:21) and is the clamp the adapter applies (:114-119); audio_sync true from the declared audio=native (:4) and the fixture's audio_embedded:true (media/lib/fixtures/sora/result.json); aspect is the adapter's own two-branch size mapping — 9:16 to 720x1280, everything else to 1280x720 (:121-122) — out of the verified size enum {720x1280,1280x720,1024x1792,1792x1024} (:12,:22); cost_per_second_usd from _sora_model_rate_usd_per_s sora-2* = 0.10 (:74), corroborated by the header's ~$0.40 for a 4 s render (:11)",
|
|
18
|
+
"start_frame": null,
|
|
19
|
+
"end_frame": null,
|
|
20
|
+
"frame_lock": {
|
|
21
|
+
"probed_at": null,
|
|
22
|
+
"psnr_frame0": null
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
"sora-2-pro": {
|
|
26
|
+
"label": "OpenAI Sora 2 Pro (text-to-video, native audio)",
|
|
27
|
+
"min_duration": 4,
|
|
28
|
+
"max_duration": 12,
|
|
29
|
+
"audio_sync": true,
|
|
30
|
+
"aspect": [
|
|
31
|
+
"16:9",
|
|
32
|
+
"9:16"
|
|
33
|
+
],
|
|
34
|
+
"cost_per_second_usd": 0.3,
|
|
35
|
+
"verified": false,
|
|
36
|
+
"input_notes": "model id from adapters/sora.sh:20,73; seconds and size enums are the same adapter-level surface as sora-2 (:114-122) — the adapter branches on the model only for the rate; audio_sync true from the declared audio=native (:4); cost_per_second_usd from _sora_model_rate_usd_per_s sora-2-pro* = 0.30 (:73); NEVER rendered from this repo — no live round-trip is recorded for this id anywhere in the tree",
|
|
37
|
+
"start_frame": null,
|
|
38
|
+
"end_frame": null,
|
|
39
|
+
"frame_lock": {
|
|
40
|
+
"probed_at": null,
|
|
41
|
+
"psnr_frame0": null
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"schema":
|
|
2
|
+
"schema": 2,
|
|
3
3
|
"adapter": "syncso",
|
|
4
4
|
"comment": "Lip-sync post-process capability manifest. Every entry is documented-best-effort until a maintainer captures a real-API smoke trace — verified:false entries MUST NOT be trusted for planning-critical decisions without surfacing the flag. The lipsync_budget block is the MACHINE-READABLE sparse-lip-sync discipline (council 2026-06-06: singing lip-sync is genuinely hard — keep it sparse): the orchestrator enforces it BEFORE any submit; tests lock its shape.",
|
|
5
5
|
"lipsync_budget": {
|
|
@@ -17,7 +17,13 @@
|
|
|
17
17
|
"aspect": ["16:9", "9:16", "1:1"],
|
|
18
18
|
"cost_per_second_usd": 0.05,
|
|
19
19
|
"verified": false,
|
|
20
|
-
"input_notes": "input is [{type:video,url},{type:audio,url}] — both https-hosted; ASSUMED max clip length 60s; singing-capable per vendor docs, quality degrades off frontal close-ups"
|
|
20
|
+
"input_notes": "input is [{type:video,url},{type:audio,url}] — both https-hosted; ASSUMED max clip length 60s; singing-capable per vendor docs, quality degrades off frontal close-ups",
|
|
21
|
+
"start_frame": null,
|
|
22
|
+
"end_frame": null,
|
|
23
|
+
"frame_lock": {
|
|
24
|
+
"probed_at": null,
|
|
25
|
+
"psnr_frame0": null
|
|
26
|
+
}
|
|
21
27
|
}
|
|
22
28
|
}
|
|
23
29
|
}
|