@event4u/agent-config 9.9.0 → 9.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/.claude-plugin/marketplace.json +1 -1
- package/CHANGELOG.md +212 -194
- package/README.md +13 -16
- package/agents/templates/.ai-council.yml.example +481 -0
- package/agents/templates/.ai-video.xml.example +247 -0
- package/dist/agent-src/commands/agent-status.md +12 -11
- package/dist/agent-src/commands/agents/user/accept.md +115 -30
- package/dist/agent-src/commands/agents/user/delete.md +147 -0
- package/dist/agent-src/commands/agents/user/review.md +65 -28
- package/dist/agent-src/commands/agents/user/show.md +82 -29
- package/dist/agent-src/commands/agents/user/update.md +2 -2
- package/dist/agent-src/commands/agents/user.md +16 -3
- package/dist/agent-src/commands/check-current-md.md +0 -10
- package/dist/agent-src/commands/condense.md +28 -97
- package/dist/agent-src/commands/cost/report.md +7 -0
- package/dist/agent-src/commands/fix/portability.md +0 -8
- package/dist/agent-src/commands/fix/refs.md +0 -8
- package/dist/agent-src/commands/humanize.md +2 -2
- package/dist/agent-src/commands/jira-ticket.md +1 -1
- package/dist/agent-src/commands/memory/load.md +11 -0
- package/dist/agent-src/commands/optimize/skills.md +1 -1
- package/dist/agent-src/commands/pr/create.md +4 -4
- package/dist/agent-src/commands/profile/show.md +3 -3
- package/dist/agent-src/commands/rule-compliance-audit.md +5 -4
- package/dist/agent-src/commands/security-audit-config.md +1 -1
- package/dist/agent-src/commands/sync/gitignore/fix.md +1 -1
- package/dist/agent-src/commands/tdd.md +21 -0
- package/dist/agent-src/commands/team/delegate.md +2 -2
- package/dist/agent-src/commands/team-knowledge/bootstrap.md +9 -8
- package/dist/agent-src/commands/team-knowledge/consolidate.md +8 -7
- package/dist/agent-src/commands/team.md +4 -1
- package/dist/agent-src/commands/upstream-contribute.md +0 -1
- package/dist/agent-src/contexts/authority/commit-mechanics.md +7 -0
- package/dist/agent-src/contexts/authority/destructive-mechanics.md +16 -0
- package/dist/agent-src/contexts/authority/scope-mechanics.md +61 -0
- package/dist/agent-src/contexts/communication/rules-auto/reply-close-mechanics.md +20 -18
- package/dist/agent-src/contexts/communication/rules-auto/skill-quality-mechanics.md +1 -1
- package/dist/agent-src/contexts/communication/rules-auto/slash-command-routing-policy-mechanics.md +1 -1
- package/dist/agent-src/contexts/communication/rules-auto/source-of-truth-mechanics.md +9 -10
- package/dist/agent-src/contexts/communication/rules-auto/think-before-action-mechanics.md +1 -1
- package/dist/agent-src/contexts/communication/rules-auto/user-interaction-mechanics.md +11 -0
- package/dist/agent-src/contexts/contracts/artifact-engagement-flow.md +26 -15
- package/dist/agent-src/contexts/contracts/command-suggestion-flow.md +3 -0
- package/dist/agent-src/contexts/execution/auto-dispatch-classification.md +67 -37
- package/dist/agent-src/contexts/execution/auto-orchestration-activation.md +1 -1
- package/dist/agent-src/contexts/execution/autonomy-examples.md +1 -1
- package/dist/agent-src/contexts/execution/autonomy-mechanics.md +7 -6
- package/dist/agent-src/contexts/execution/evidence-discipline.md +92 -77
- package/dist/agent-src/contexts/execution/orchestration-benchmark-gate.md +22 -21
- package/dist/agent-src/contexts/execution/orchestration-telemetry.md +24 -0
- package/dist/agent-src/contexts/execution/project-intelligence.md +122 -103
- package/dist/agent-src/contexts/execution/roadmap-execution-contract.md +23 -21
- package/dist/agent-src/contexts/execution/subagent-response-contract.md +5 -5
- package/dist/agent-src/contexts/execution/subagent-routing.md +11 -0
- package/dist/agent-src/contexts/execution/subagent-spawn-contract.md +13 -13
- package/dist/agent-src/contexts/execution/subagent-steering.md +36 -34
- package/dist/agent-src/contexts/execution/toolchain-resolver.md +1 -1
- package/dist/agent-src/contexts/execution/user-memory-channels.md +189 -0
- package/dist/agent-src/contexts/execution/verification-mechanics.md +9 -0
- package/dist/agent-src/contexts/model-recommendations.md +3 -2
- package/dist/agent-src/contexts/subagent-configuration.md +3 -3
- package/dist/agent-src/ghostwriter/README.md +2 -2
- package/dist/agent-src/packs/README.md +1 -1
- package/dist/agent-src/personas/README.md +5 -5
- package/dist/agent-src/personas/_template-specialist/persona.md +3 -3
- package/dist/agent-src/personas/backend-architect.md +24 -23
- package/dist/agent-src/personas/eloquent-tamer.md +30 -30
- package/dist/agent-src/personas/frontend-engineer.md +30 -30
- package/dist/agent-src/personas/product-owner.md +41 -38
- package/dist/agent-src/personas/qa.md +13 -13
- package/dist/agent-src/personas/security-engineer.md +22 -22
- package/dist/agent-src/presets/README.md +3 -3
- package/dist/agent-src/profiles/README.md +3 -3
- package/dist/agent-src/rules/active-remediation.md +2 -2
- package/dist/agent-src/rules/artifact-engagement-recording.md +4 -4
- package/dist/agent-src/rules/ask-when-uncertain.md +0 -4
- package/dist/agent-src/rules/augment-edit-discipline.md +1 -1
- package/dist/agent-src/rules/broken-access-control.md +4 -4
- package/dist/agent-src/rules/code-comment-discipline.md +1 -1
- package/dist/agent-src/rules/code-provenance.md +2 -2
- package/dist/agent-src/rules/commit-policy.md +4 -9
- package/dist/agent-src/rules/communication-through-line.md +5 -5
- package/dist/agent-src/rules/decision-revisit-gate.md +1 -1
- package/dist/agent-src/rules/design-fidelity.md +1 -1
- package/dist/agent-src/rules/doc-screenshot-hygiene.md +1 -1
- package/dist/agent-src/rules/domain-adoption-policy.md +1 -1
- package/dist/agent-src/rules/domain-safety-pii.md +1 -1
- package/dist/agent-src/rules/external-code-graph-interop.md +1 -1
- package/dist/agent-src/rules/fast-path-marker-visibility.md +43 -7
- package/dist/agent-src/rules/finance-safety-floor.md +1 -1
- package/dist/agent-src/rules/framework-neutrality-in-generic-skills.md +3 -3
- package/dist/agent-src/rules/history-discipline.md +1 -1
- package/dist/agent-src/rules/legal-safety-floor.md +1 -1
- package/dist/agent-src/rules/lethal-trifecta-guard.md +5 -5
- package/dist/agent-src/rules/low-impact-corpus-privacy-floor.md +10 -8
- package/dist/agent-src/rules/media-governance-routing.md +13 -13
- package/dist/agent-src/rules/media-sync-ground-truth.md +29 -11
- package/dist/agent-src/rules/no-cheap-questions.md +7 -7
- package/dist/agent-src/rules/no-decorative-emojis-in-git-surfaces.md +29 -18
- package/dist/agent-src/rules/non-destructive-by-default.md +5 -23
- package/dist/agent-src/rules/onboarding-gate.md +14 -4
- package/dist/agent-src/rules/persona-governance.md +2 -2
- package/dist/agent-src/rules/prefer-enums-over-literals.md +9 -9
- package/dist/agent-src/rules/preservation-guard.md +10 -2
- package/dist/agent-src/rules/question-not-instruction.md +1 -1
- package/dist/agent-src/rules/roadmap-progress-sync.md +6 -6
- package/dist/agent-src/rules/rule-type-governance.md +1 -1
- package/dist/agent-src/rules/scale-discipline.md +1 -1
- package/dist/agent-src/rules/scope-control.md +1 -1
- package/dist/agent-src/rules/secret-vcs-guard.md +1 -1
- package/dist/agent-src/rules/security-sensitive-stop.md +17 -11
- package/dist/agent-src/rules/senior-engineering-discipline.md +17 -17
- package/dist/agent-src/rules/session-canary.md +1 -1
- package/dist/agent-src/rules/skill-quality.md +1 -1
- package/dist/agent-src/rules/source-confidentiality.md +21 -19
- package/dist/agent-src/rules/source-of-truth.md +6 -5
- package/dist/agent-src/rules/spreadsheet-source-quality.md +2 -2
- package/dist/agent-src/rules/strategy-safety-floor.md +1 -1
- package/dist/agent-src/rules/think-before-action.md +5 -5
- package/dist/agent-src/rules/token-budget-discipline.md +5 -3
- package/dist/agent-src/rules/token-efficiency.md +2 -2
- package/dist/agent-src/rules/untrusted-input-defense.md +4 -4
- package/dist/agent-src/rules/user-interaction.md +12 -0
- package/dist/agent-src/rules/verify-before-complete.md +4 -24
- package/dist/agent-src/skills/adversarial-review/SKILL.md +2 -2
- package/dist/agent-src/skills/agent-security-review/SKILL.md +52 -45
- package/dist/agent-src/skills/agents-md-thin-root/SKILL.md +2 -2
- package/dist/agent-src/skills/ai-code-blindspots/SKILL.md +20 -20
- package/dist/agent-src/skills/ai-council/SKILL.md +185 -128
- package/dist/agent-src/skills/analysis-skill-router/SKILL.md +3 -3
- package/dist/agent-src/skills/api-endpoint/SKILL.md +2 -2
- package/dist/agent-src/skills/artisan-commands/SKILL.md +2 -2
- package/dist/agent-src/skills/async-python-patterns/SKILL.md +8 -7
- package/dist/agent-src/skills/authz-review/SKILL.md +16 -15
- package/dist/agent-src/skills/aws-infrastructure/SKILL.md +5 -5
- package/dist/agent-src/skills/blade-ui/SKILL.md +1 -1
- package/dist/agent-src/skills/bug-analyzer/SKILL.md +30 -12
- package/dist/agent-src/skills/code-intelligence/SKILL.md +0 -1
- package/dist/agent-src/skills/code-intelligence/evals/triggers.json +52 -0
- package/dist/agent-src/skills/code-review/SKILL.md +6 -6
- package/dist/agent-src/skills/command-routing/SKILL.md +5 -4
- package/dist/agent-src/skills/composer-packages/SKILL.md +2 -2
- package/dist/agent-src/skills/condense-memory/SKILL.md +43 -41
- package/dist/agent-src/skills/context-document/SKILL.md +23 -21
- package/dist/agent-src/skills/copilot-config/SKILL.md +6 -1
- package/dist/agent-src/skills/decision-record/SKILL.md +20 -18
- package/dist/agent-src/skills/design-intelligence/SKILL.md +4 -4
- package/dist/agent-src/skills/design-review/SKILL.md +15 -14
- package/dist/agent-src/skills/design-system-capture/reference/design-system-json.md +28 -25
- package/dist/agent-src/skills/devcontainer/SKILL.md +2 -2
- package/dist/agent-src/skills/docker/SKILL.md +1 -1
- package/dist/agent-src/skills/docx-authoring/evals/triggers.json +52 -0
- package/dist/agent-src/skills/emit-tickets/SKILL.md +2 -2
- package/dist/agent-src/skills/error-handling-patterns/SKILL.md +1 -1
- package/dist/agent-src/skills/estimate-ticket/SKILL.md +2 -2
- package/dist/agent-src/skills/evaluate-llm-feature/SKILL.md +0 -1
- package/dist/agent-src/skills/evaluate-llm-feature/evals/triggers.json +52 -0
- package/dist/agent-src/skills/existing-ui-audit/SKILL.md +21 -7
- package/dist/agent-src/skills/fe-design/SKILL.md +10 -0
- package/dist/agent-src/skills/feature-planning/SKILL.md +2 -2
- package/dist/agent-src/skills/finishing-a-development-branch/SKILL.md +3 -3
- package/dist/agent-src/skills/flux/SKILL.md +1 -1
- package/dist/agent-src/skills/frontend-render-security/SKILL.md +13 -13
- package/dist/agent-src/skills/git-workflow/SKILL.md +33 -33
- package/dist/agent-src/skills/grafana/SKILL.md +5 -0
- package/dist/agent-src/skills/humanizer/SKILL.md +83 -66
- package/dist/agent-src/skills/humanizer/data/patterns.md +14 -14
- package/dist/agent-src/skills/humanizer/references/anti-aiisms.md +4 -4
- package/dist/agent-src/skills/judge-artifact-completeness/SKILL.md +82 -37
- package/dist/agent-src/skills/judge-bug-hunter/SKILL.md +17 -5
- package/dist/agent-src/skills/judge-injection-defense/SKILL.md +63 -25
- package/dist/agent-src/skills/judge-security-auditor/SKILL.md +2 -0
- package/dist/agent-src/skills/judge-synthesis/SKILL.md +72 -28
- package/dist/agent-src/skills/laravel-horizon/SKILL.md +5 -0
- package/dist/agent-src/skills/laravel-mail/SKILL.md +5 -4
- package/dist/agent-src/skills/laravel-middleware/SKILL.md +5 -4
- package/dist/agent-src/skills/laravel-notifications/SKILL.md +10 -9
- package/dist/agent-src/skills/laravel-pennant/SKILL.md +1 -1
- package/dist/agent-src/skills/laravel-pulse/SKILL.md +9 -8
- package/dist/agent-src/skills/laravel-reverb/SKILL.md +6 -5
- package/dist/agent-src/skills/laravel-scheduling/SKILL.md +6 -1
- package/dist/agent-src/skills/laravel-validation/SKILL.md +12 -0
- package/dist/agent-src/skills/launch-readiness/SKILL.md +1 -1
- package/dist/agent-src/skills/learning-to-rule-or-skill/SKILL.md +7 -7
- package/dist/agent-src/skills/learning-tutor/SKILL.md +44 -43
- package/dist/agent-src/skills/learning-tutor/evals/triggers.json +52 -0
- package/dist/agent-src/skills/license-compliance-audit/SKILL.md +7 -7
- package/dist/agent-src/skills/license-compliance-borrow-check/SKILL.md +3 -3
- package/dist/agent-src/skills/license-compliance-credits/SKILL.md +4 -4
- package/dist/agent-src/skills/llm-provider-knowledge/SKILL.md +0 -1
- package/dist/agent-src/skills/memory-consolidation/SKILL.md +69 -64
- package/dist/agent-src/skills/motion-choreographer/SKILL.md +6 -6
- package/dist/agent-src/skills/pdf-tools/evals/triggers.json +52 -0
- package/dist/agent-src/skills/performance-analysis/SKILL.md +7 -3
- package/dist/agent-src/skills/persona-improvement/SKILL.md +0 -2
- package/dist/agent-src/skills/persona-improvement/evals/triggers.json +52 -0
- package/dist/agent-src/skills/php-coder/SKILL.md +10 -0
- package/dist/agent-src/skills/prediction-pool-optimizer/SKILL.md +129 -120
- package/dist/agent-src/skills/prediction-pool-optimizer/reference/ev-fixtures.md +36 -35
- package/dist/agent-src/skills/prediction-pool-optimizer/reference/odds-and-bonus.md +45 -41
- package/dist/agent-src/skills/project-analysis-core/SKILL.md +4 -4
- package/dist/agent-src/skills/project-analysis-hypothesis-driven/SKILL.md +3 -3
- package/dist/agent-src/skills/project-analysis-react/SKILL.md +1 -1
- package/dist/agent-src/skills/project-analysis-symfony/SKILL.md +1 -1
- package/dist/agent-src/skills/project-analysis-zend-laminas/SKILL.md +2 -2
- package/dist/agent-src/skills/prompt-engineering-patterns/SKILL.md +1 -1
- package/dist/agent-src/skills/prompt-validator/SKILL.md +39 -39
- package/dist/agent-src/skills/quality-tools/SKILL.md +15 -15
- package/dist/agent-src/skills/react-shadcn-ui/SKILL.md +55 -19
- package/dist/agent-src/skills/react-shadcn-ui/reference/registry.md +29 -27
- package/dist/agent-src/skills/readme-writing-package/SKILL.md +2 -2
- package/dist/agent-src/skills/reasoning-orchestrator/SKILL.md +25 -25
- package/dist/agent-src/skills/recursive-verification/SKILL.md +6 -5
- package/dist/agent-src/skills/refine-prompt/SKILL.md +1 -1
- package/dist/agent-src/skills/refine-ticket/SKILL.md +20 -2
- package/dist/agent-src/skills/repomix-packer/SKILL.md +1 -1
- package/dist/agent-src/skills/requesting-code-review/SKILL.md +2 -2
- package/dist/agent-src/skills/roadmap-management/SKILL.md +80 -66
- package/dist/agent-src/skills/roadmap-writing/SKILL.md +84 -77
- package/dist/agent-src/skills/rule-refactor/SKILL.md +1 -1
- package/dist/agent-src/skills/screenshot-hygiene/evals/triggers.json +52 -0
- package/dist/agent-src/skills/security-audit/SKILL.md +26 -9
- package/dist/agent-src/skills/security-maturity-assessment/SKILL.md +38 -16
- package/dist/agent-src/skills/skill-improvement-pipeline/SKILL.md +14 -11
- package/dist/agent-src/skills/skill-writing/SKILL.md +9 -8
- package/dist/agent-src/skills/song-to-script/SKILL.md +93 -85
- package/dist/agent-src/skills/sql-writing/SKILL.md +2 -2
- package/dist/agent-src/skills/stakeholder-tradeoff/SKILL.md +4 -3
- package/dist/agent-src/skills/standards-from-config/SKILL.md +61 -43
- package/dist/agent-src/skills/subagent-orchestration/SKILL.md +22 -8
- package/dist/agent-src/skills/subagent-orchestration/prompts/README.md +28 -2
- package/dist/agent-src/skills/supply-chain-intake/SKILL.md +13 -13
- package/dist/agent-src/skills/systematic-debugging/SKILL.md +22 -21
- package/dist/agent-src/skills/tailwind-engineer/SKILL.md +1 -1
- package/dist/agent-src/skills/technical-specification/SKILL.md +5 -0
- package/dist/agent-src/skills/terraform/SKILL.md +2 -2
- package/dist/agent-src/skills/terragrunt/SKILL.md +8 -8
- package/dist/agent-src/skills/testing-anti-patterns/process-anti-patterns.md +1 -1
- package/dist/agent-src/skills/threat-modeling/SKILL.md +19 -13
- package/dist/agent-src/skills/universal-project-analysis/SKILL.md +1 -1
- package/dist/agent-src/skills/upstream-contribute/SKILL.md +0 -1
- package/dist/agent-src/skills/using-git-worktrees/SKILL.md +9 -9
- package/dist/agent-src/skills/validate-feature-fit/SKILL.md +3 -1
- package/dist/agent-src/skills/verify-completion-evidence/SKILL.md +4 -6
- package/dist/agent-src/skills/verify-repair-loop/SKILL.md +67 -61
- package/dist/agent-src/skills/video-director/SKILL.md +7 -7
- package/dist/agent-src/skills/worktree-lifecycle/SKILL.md +3 -3
- package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
- package/dist/agent-src/templates/contexts/knowledge-pages.md +47 -45
- package/dist/agent-src/templates/contexts/lesson-card.md +2 -2
- package/dist/agent-src/templates/contexts/tenant-boundaries.md +2 -2
- package/dist/agent-src/templates/contexts.md +1 -1
- package/dist/agent-src/templates/features.md +1 -1
- package/dist/agent-src/templates/roadmaps.md +125 -116
- package/dist/agent-src/templates/rule.md +2 -1
- package/dist/agent-src/templates/scripts/pr_risk_review.ts +0 -0
- package/dist/agent-src/templates/scripts/telemetry/aggregator.ts +0 -0
- package/dist/agent-src/templates/scripts/tier_usage_report.ts +2 -2
- package/dist/agent-src/templates/scripts/work_engine/directives/ui/apply.ts +30 -30
- package/dist/agent-src/templates/scripts/work_engine/directives/ui/design.ts +88 -33
- package/dist/agent-src/templates/scripts/work_engine/directives/ui/polish.ts +22 -2
- package/dist/agent-src/templates/scripts/work_engine/directives/ui/review.ts +21 -2
- package/dist/agent-src/templates/scripts/work_engine/directives/ui/stack_bundles.ts +179 -0
- package/dist/agent-src/templates/scripts/work_engine/stack/detect.ts +155 -4
- package/dist/agent-src/templates/scripts/work_engine/state.ts +21 -4
- package/dist/agent-src/user-types/README.md +8 -8
- package/dist/agent-src/user-types/galabau-field-crew.md +34 -33
- package/dist/agent-src/user-types/metalworking-shop.md +35 -34
- package/dist/agent-src/user-types/truck-driver.md +22 -20
- package/dist/cli/initRouting.js +74 -11
- package/dist/cli/initRouting.js.map +1 -1
- package/dist/cli/main.js +14 -3
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/python/workspace_roles.js +2 -2
- package/dist/cli/python/workspace_roles.js.map +1 -1
- package/dist/cli-delegate/chunk-4SV3XGFA.js +6910 -0
- package/dist/cli-delegate/chunk-736JCWLM.js +1104 -0
- package/dist/cli-delegate/chunk-7DSAMZFU.js +356 -0
- package/dist/cli-delegate/chunk-7HQ52DHU.js +74 -0
- package/dist/cli-delegate/chunk-BJGXZNPM.js +266 -0
- package/dist/cli-delegate/chunk-FTAISGDQ.js +117 -0
- package/dist/cli-delegate/chunk-GME3Q44L.js +82 -0
- package/dist/cli-delegate/chunk-GRRPEPRN.js +336 -0
- package/dist/cli-delegate/chunk-HJ6DAJHR.js +502 -0
- package/dist/cli-delegate/chunk-IR7P7JWA.js +872 -0
- package/dist/cli-delegate/chunk-J55WI3RR.js +47 -0
- package/dist/cli-delegate/chunk-MCJYCQPF.js +35 -0
- package/dist/cli-delegate/chunk-NDJLNC6Q.js +169 -0
- package/dist/cli-delegate/chunk-OMIVVCG2.js +26 -0
- package/dist/cli-delegate/chunk-OY53J6II.js +7336 -0
- package/dist/cli-delegate/chunk-RDGRHAAB.js +259 -0
- package/dist/cli-delegate/chunk-TFG57JJM.js +1969 -0
- package/dist/cli-delegate/chunk-XX6TOPD7.js +715 -0
- package/dist/cli-delegate/chunk-YMFO6FDN.js +10603 -0
- package/dist/cli-delegate/cmd_analyze_session.js +294 -0
- package/dist/cli-delegate/cmd_conformance.js +646 -0
- package/dist/cli-delegate/cmd_converge.js +326 -0
- package/dist/cli-delegate/cmd_doctor.js +144 -0
- package/dist/cli-delegate/cmd_explain.js +2508 -0
- package/dist/cli-delegate/cmd_export.js +296 -0
- package/dist/cli-delegate/cmd_fleet.js +332 -0
- package/dist/cli-delegate/cmd_memory_get.js +3878 -0
- package/dist/cli-delegate/cmd_migrate.js +11 -0
- package/dist/cli-delegate/cmd_preflight.js +270 -0
- package/dist/cli-delegate/cmd_prune.js +444 -0
- package/dist/cli-delegate/cmd_refresh.js +28 -0
- package/dist/cli-delegate/cmd_settings_check.js +574 -0
- package/dist/cli-delegate/cmd_settings_migrate.js +223 -0
- package/dist/cli-delegate/cmd_sync.js +264 -0
- package/dist/cli-delegate/cmd_uninstall.js +656 -0
- package/dist/cli-delegate/cmd_update.js +425 -0
- package/dist/cli-delegate/cmd_upgrade.js +444 -0
- package/dist/cli-delegate/cmd_validate.js +305 -0
- package/dist/cli-delegate/cmd_versions.js +370 -0
- package/dist/discovery/deprecation-report.md +1 -1
- package/dist/discovery/discovery-manifest.json +100 -67
- package/dist/discovery/discovery-manifest.json.sha256 +1 -1
- package/dist/discovery/discovery-manifest.summary.md +4 -4
- package/dist/discovery/orphan-report.md +1 -1
- package/dist/discovery/packs.json +16 -10
- package/dist/discovery/trust-report.md +2 -2
- package/dist/discovery/workspaces.json +7 -5
- package/dist/hooks/dispatch.js +186 -12
- package/dist/install/emit_host_rules_cli.js +2 -1
- package/dist/install/emit_host_rules_cli.js.map +1 -1
- package/dist/install/install.mjs +418 -378
- package/dist/install/rule_scope.js +5 -1
- package/dist/install/rule_scope.js.map +1 -1
- package/dist/install/toolDetection.js +40 -12
- package/dist/install/toolDetection.js.map +1 -1
- package/dist/install/wizard-plan.js +2 -2
- package/dist/install/wizard-plan.js.map +1 -1
- package/dist/mcp/registry-manifest.json +3 -3
- package/dist/mcp/server.json +2 -2
- package/dist/mcp/server.mjs +2194 -1003
- package/dist/router.json +1 -1
- package/dist/scripts/_lib/compile_time_toggles.js +48 -0
- package/dist/scripts/_lib/compile_time_toggles.js.map +1 -0
- package/dist/scripts/condense.js +234 -217
- package/dist/scripts/condense.js.map +1 -1
- package/dist/server/schemas/settings.js +4 -0
- package/dist/server/schemas/settings.js.map +1 -1
- package/dist/shared/userMd/utils.js +30 -0
- package/dist/shared/userMd/utils.js.map +1 -1
- package/dist/ui/assets/index-BpSQt5vm.js.map +1 -1
- package/docs/guidelines/agent-infra/api-cost-levers.md +56 -5
- package/docs/guidelines/agent-infra/simplicity-and-goal-demos.md +93 -33
- package/package.json +4 -2
- package/src/agent-src/templates/scripts/pr_risk_review.ts +0 -0
- package/src/agent-src/templates/scripts/telemetry/aggregator.ts +0 -0
- package/src/agent-src/templates/scripts/tier_usage_report.ts +2 -2
- package/src/agent-src/templates/scripts/work_engine/directives/ui/apply.ts +30 -30
- package/src/agent-src/templates/scripts/work_engine/directives/ui/design.ts +88 -33
- package/src/agent-src/templates/scripts/work_engine/directives/ui/polish.ts +22 -2
- package/src/agent-src/templates/scripts/work_engine/directives/ui/review.ts +21 -2
- package/src/agent-src/templates/scripts/work_engine/directives/ui/stack_bundles.ts +179 -0
- package/src/agent-src/templates/scripts/work_engine/stack/detect.ts +155 -4
- package/src/agent-src/templates/scripts/work_engine/state.ts +21 -4
- package/src/config/agent-settings.template.yml +32 -2
- package/src/config/ci-local-parity.yml +142 -0
- package/src/config/discovery/packs.yml +7 -0
- package/src/config/evaluator-budgets.json +1 -1
- package/src/config/gate-coverage.yml +127 -0
- package/src/config/pack-size-budget.json +27 -0
- package/src/config/preamble-payload-budget.json +44 -0
- package/src/install/emit_host_rules_cli.ts +2 -1
- package/src/install/rule_scope.ts +5 -1
- package/src/install/toolDetection.ts +39 -8
- package/src/install/wizard-plan.ts +2 -2
- package/src/scripts/_cli/cmd_conformance.ts +2 -1
- package/src/scripts/_cli/cmd_converge.ts +2 -1
- package/src/scripts/_cli/cmd_doctor.ts +292 -15
- package/src/scripts/_cli/cmd_export.ts +2 -1
- package/src/scripts/_cli/cmd_fleet.ts +2 -1
- package/src/scripts/_cli/cmd_migrate.ts +2 -1
- package/src/scripts/_cli/cmd_preflight.ts +2 -1
- package/src/scripts/_cli/cmd_refresh.ts +2 -1
- package/src/scripts/_cli/cmd_update.ts +2 -1
- package/src/scripts/_cli/cmd_upgrade.ts +2 -1
- package/src/scripts/_cli/cmd_versions.ts +2 -1
- package/src/scripts/_cli/detection_report.ts +480 -0
- package/src/scripts/_dispatch.bash +52 -14
- package/src/scripts/_lib/agent_user_profile.ts +381 -0
- package/src/scripts/_lib/agents_overlay.ts +9 -0
- package/src/scripts/_lib/anchor_eval.ts +311 -0
- package/src/scripts/_lib/cc_transcript.ts +316 -0
- package/src/scripts/_lib/changelog_eras.ts +103 -9
- package/src/scripts/_lib/compile_time_toggles.ts +79 -0
- package/src/scripts/_lib/confusables.ts +101 -0
- package/src/scripts/_lib/duplicate_scope_census.ts +77 -0
- package/src/scripts/_lib/environment_detector.ts +441 -0
- package/src/scripts/_lib/managed_agents_folder.ts +181 -0
- package/src/scripts/_lib/package_root.ts +72 -0
- package/src/scripts/_lib/payload_hash_drift.ts +126 -0
- package/src/scripts/_lib/preservation_migration.ts +291 -0
- package/src/scripts/_lib/retrieval_sanitize.ts +166 -2
- package/src/scripts/_lib/scan_scope.ts +115 -0
- package/src/scripts/_lib/user_global_memory_audit.ts +187 -0
- package/src/scripts/_lib/user_global_observations.ts +830 -0
- package/src/scripts/_lib/user_global_revocations.ts +110 -0
- package/src/scripts/_lib/user_memory_gate_counters.ts +291 -0
- package/src/scripts/ai_council/blind_review.ts +0 -0
- package/src/scripts/ai_council/budget_guard.ts +90 -11
- package/src/scripts/ai_council/bundler.ts +2 -2
- package/src/scripts/ai_council/clients.ts +59 -3
- package/src/scripts/ai_council/config.ts +53 -7
- package/src/scripts/ai_council/modes.ts +68 -2
- package/src/scripts/ai_council/orchestrator.ts +54 -9
- package/src/scripts/ai_council/transport_resolver.ts +331 -0
- package/src/scripts/ai_team/team_dispatch.ts +17 -6
- package/src/scripts/anchor_eval_falsify.ts +198 -0
- package/src/scripts/anchor_scoring_run.ts +239 -0
- package/src/scripts/annotate_discovery.ts +1 -65
- package/src/scripts/bench_quality_run.ts +168 -4
- package/src/scripts/cache_realization_report.ts +782 -0
- package/src/scripts/check_artefact_count_messaging.ts +5 -1
- package/src/scripts/check_augment_description_cap.ts +15 -4
- package/src/scripts/check_bundle_path_leakage.ts +10 -4
- package/src/scripts/check_ci_local_parity.ts +317 -0
- package/src/scripts/check_condensation.ts +96 -191
- package/src/scripts/check_context_paths.ts +38 -9
- package/src/scripts/check_dependency_floors.ts +153 -0
- package/src/scripts/check_gate_coverage.ts +299 -0
- package/src/scripts/check_iron_law_prominence.ts +22 -1
- package/src/scripts/check_kernel_prefix_stability.ts +0 -0
- package/src/scripts/check_no_new_legacy_path.ts +16 -6
- package/src/scripts/check_no_roadmap_refs.ts +22 -9
- package/src/scripts/check_originality_freshness.ts +167 -0
- package/src/scripts/check_pack_size.ts +188 -0
- package/src/scripts/check_preamble_payload_budget.ts +130 -0
- package/src/scripts/check_proposal.ts +0 -0
- package/src/scripts/check_references.ts +0 -1
- package/src/scripts/check_safety_floor_untouched.ts +171 -24
- package/src/scripts/check_site_links.ts +62 -3
- package/src/scripts/ci_status.ts +0 -0
- package/src/scripts/cluster_near_miss_patterns.ts +0 -0
- package/src/scripts/code_graph/build.ts +0 -0
- package/src/scripts/command_suggester/types.ts +0 -0
- package/src/scripts/compile_router.ts +10 -14
- package/src/scripts/condense.sh +3 -4
- package/src/scripts/condense.ts +247 -228
- package/src/scripts/cost/track.mjs +168 -33
- package/src/scripts/cost_summary.ts +33 -1
- package/src/scripts/council_cli.ts +51 -5
- package/src/scripts/discovery_graph.ts +0 -0
- package/src/scripts/encoding_corpus.ts +500 -0
- package/src/scripts/encoding_corpus_report.ts +216 -0
- package/src/scripts/evaluator_umbrella.sh +34 -1
- package/src/scripts/generate_index.ts +19 -2
- package/src/scripts/install-hooks.sh +2 -2
- package/src/scripts/learning_sidecar.ts +0 -0
- package/src/scripts/lint_confusables.ts +10 -72
- package/src/scripts/lint_eval_fixture_citations.ts +113 -0
- package/src/scripts/lint_featured_skills.ts +0 -0
- package/src/scripts/lint_hidden_unicode.ts +208 -0
- package/src/scripts/lint_load_context.ts +17 -5
- package/src/scripts/lint_new_skill_gate.ts +9 -3
- package/src/scripts/lint_no_python_twin_rationale.ts +17 -2
- package/src/scripts/lint_originality.ts +1 -1
- package/src/scripts/lint_skill_originality.ts +1 -1
- package/src/scripts/lint_ticket_buildable.ts +1 -1
- package/src/scripts/lint_ui_stack_bundles.ts +170 -0
- package/src/scripts/mcp_server/tools.ts +4 -4
- package/src/scripts/measure_scope_dedup.ts +224 -0
- package/src/scripts/memory_lookup.ts +0 -0
- package/src/scripts/mine_session.ts +98 -0
- package/src/scripts/orchestration_payload_hash_drift.ts +145 -0
- package/src/scripts/preamble_byte_census.ts +574 -0
- package/src/scripts/probe_skill_registration.ts +2 -2
- package/src/scripts/redact_hook_capture.ts +13 -0
- package/src/scripts/release.ts +65 -10
- package/src/scripts/router_telemetry.ts +1 -1
- package/src/scripts/second_brain_retrieval.ts +14 -4
- package/src/scripts/skill_linter.ts +5 -0
- package/src/scripts/surface-tiers.yml +2 -0
- package/src/scripts/validate_pack_yaml.ts +0 -0
- package/src/server/schemas/settings.ts +8 -0
- package/src/shared/userMd/utils.ts +31 -0
- package/dist/agent-src/rules/telegraph-speak.md +0 -87
|
@@ -17,17 +17,35 @@
|
|
|
17
17
|
*
|
|
18
18
|
* 1. `composer.json` lists `livewire/livewire` AND `livewire/flux` →
|
|
19
19
|
* `blade-livewire-flux`
|
|
20
|
-
* 2. `
|
|
20
|
+
* 2. `composer.json` lists `filament/filament` → `filament` (before bare
|
|
21
|
+
* Livewire: Filament pulls Livewire in transitively)
|
|
22
|
+
* 3. `composer.json` lists `livewire/livewire` → `blade-livewire`
|
|
23
|
+
* 4. `package.json` lists `react` AND any of `@radix-ui/*`,
|
|
21
24
|
* `shadcn-ui` or has a `components.json` (the shadcn marker file)
|
|
22
25
|
* → `react-shadcn`
|
|
23
|
-
*
|
|
24
|
-
*
|
|
26
|
+
* 5. `package.json` lists `react` → `react`
|
|
27
|
+
* 6. `package.json` lists `vue` (any major) → `vue`
|
|
28
|
+
* 7. Either manifest names a recognised-but-unmodelled framework
|
|
29
|
+
* (Svelte, Angular, Nuxt, Astro, Solid, Qwik, Inertia) → `unknown`
|
|
30
|
+
* 8. Otherwise → `plain`
|
|
31
|
+
*
|
|
32
|
+
* Rules 3, 5 and 7 exist because the earlier table sent three common
|
|
33
|
+
* shapes into `plain`: Laravel+Livewire without Flux failed rule 1's `&&`,
|
|
34
|
+
* React without Radix failed rule 4, and every unmodelled framework was
|
|
35
|
+
* indistinguishable from a genuinely plain project. `plain` now means "no
|
|
36
|
+
* frontend markers"; `unknown` means "a framework we do not model", and
|
|
37
|
+
* dispatch refuses on it rather than handing over generic tooling silently.
|
|
25
38
|
*
|
|
26
39
|
* Detection is filesystem-cheap: at most three small JSON reads per
|
|
27
40
|
* project root. Errors (missing file, malformed JSON, missing `require`
|
|
28
41
|
* section) downgrade to `plain` rather than raising — a wrong stack
|
|
29
42
|
* label is recoverable (audit catches it, user can override), but a
|
|
30
43
|
* crash mid-dispatch is not.
|
|
44
|
+
*
|
|
45
|
+
* Root manifests only, by design: a monorepo caller passes the workspace
|
|
46
|
+
* root that carries the manifest it cares about. Note the consequence —
|
|
47
|
+
* a caller that always passes the repository root gets `plain` for a
|
|
48
|
+
* monorepo, so the caller owns scope selection, not the detector.
|
|
31
49
|
*/
|
|
32
50
|
import * as fs from 'node:fs';
|
|
33
51
|
import * as path from 'node:path';
|
|
@@ -43,18 +61,59 @@ import * as path from 'node:path';
|
|
|
43
61
|
*/
|
|
44
62
|
export const KNOWN_STACKS: ReadonlySet<string> = new Set([
|
|
45
63
|
'blade-livewire-flux',
|
|
64
|
+
'blade-livewire',
|
|
65
|
+
'filament',
|
|
46
66
|
'react-shadcn',
|
|
67
|
+
'react',
|
|
47
68
|
'vue',
|
|
48
69
|
'plain',
|
|
70
|
+
'unknown',
|
|
49
71
|
]);
|
|
50
72
|
|
|
51
|
-
/**
|
|
73
|
+
/**
|
|
74
|
+
* Label for a project with no frontend markers at all.
|
|
75
|
+
*
|
|
76
|
+
* `plain` used to carry two meanings — "genuinely a plain HTML/Tailwind
|
|
77
|
+
* project" and "detection failed, here is generic tooling anyway" — which made
|
|
78
|
+
* a loud failure impossible without punishing real plain projects. The second
|
|
79
|
+
* meaning is now {@link UNSUPPORTED_STACK}.
|
|
80
|
+
*/
|
|
52
81
|
export const DEFAULT_STACK = 'plain';
|
|
53
82
|
|
|
83
|
+
/**
|
|
84
|
+
* Label for a project whose frontend IS recognisable but is not modelled.
|
|
85
|
+
*
|
|
86
|
+
* Dispatch refuses on this label instead of degrading to generic tooling: a
|
|
87
|
+
* Filament or Svelte project silently routed to a Tailwind-only bundle is
|
|
88
|
+
* user-hostile precisely because the output looks like it worked.
|
|
89
|
+
*/
|
|
90
|
+
export const UNSUPPORTED_STACK = 'unknown';
|
|
91
|
+
|
|
54
92
|
const _SHADCN_RADIX_PREFIX = '@radix-ui/';
|
|
55
93
|
const _SHADCN_PACKAGE_NAMES: ReadonlySet<string> = new Set(['shadcn-ui', 'shadcn']);
|
|
56
94
|
const _FLUX_PACKAGE = 'livewire/flux';
|
|
57
95
|
const _LIVEWIRE_PACKAGE = 'livewire/livewire';
|
|
96
|
+
const _FILAMENT_PACKAGE = 'filament/filament';
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* Frontend markers this package recognises but does not model.
|
|
100
|
+
*
|
|
101
|
+
* One of these present means detection **succeeded** at recognising a
|
|
102
|
+
* framework and the package simply has no lane for it — the `unknown` case,
|
|
103
|
+
* not the `plain` case. Keep the list short and factual; a marker leaves it
|
|
104
|
+
* only when a real lane exists.
|
|
105
|
+
*/
|
|
106
|
+
const _UNMODELLED_MARKERS: ReadonlyArray<string> = [
|
|
107
|
+
'svelte',
|
|
108
|
+
'@angular/core',
|
|
109
|
+
'nuxt',
|
|
110
|
+
'astro',
|
|
111
|
+
'solid-js',
|
|
112
|
+
'@builder.io/qwik',
|
|
113
|
+
'@inertiajs/vue3',
|
|
114
|
+
'@inertiajs/react',
|
|
115
|
+
'inertiajs/inertia-laravel',
|
|
116
|
+
];
|
|
58
117
|
|
|
59
118
|
/**
|
|
60
119
|
* A heterogeneous JSON object, mirroring a Python `dict[str, object]`.
|
|
@@ -109,14 +168,51 @@ export function detect_stack(project_root: string): StackResult {
|
|
|
109
168
|
return new StackResult({ frontend: 'blade-livewire-flux', mtime });
|
|
110
169
|
}
|
|
111
170
|
|
|
171
|
+
// Filament before bare Livewire: it pulls Livewire in transitively, so a
|
|
172
|
+
// Filament project would otherwise be labelled by its dependency rather
|
|
173
|
+
// than by the framework the developer actually works in.
|
|
174
|
+
if (_has_package(composer, ['require', 'require-dev'], _FILAMENT_PACKAGE)) {
|
|
175
|
+
return new StackResult({ frontend: 'filament', mtime });
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
// Livewire WITHOUT Flux is the common Laravel frontend, not an unknown
|
|
179
|
+
// one. It used to fail the `&&` above and land in `plain`.
|
|
180
|
+
if (_has_package(composer, ['require', 'require-dev'], _LIVEWIRE_PACKAGE)) {
|
|
181
|
+
return new StackResult({ frontend: 'blade-livewire', mtime });
|
|
182
|
+
}
|
|
183
|
+
|
|
112
184
|
if (_is_react_shadcn(pkg, components_json)) {
|
|
113
185
|
return new StackResult({ frontend: 'react-shadcn', mtime });
|
|
114
186
|
}
|
|
115
187
|
|
|
188
|
+
// React without Radix/shadcn is a served stack, not an unknown one.
|
|
189
|
+
if (_has_package(pkg, _PKG_DEP_KEYS, 'react')) {
|
|
190
|
+
return new StackResult({ frontend: 'react', mtime });
|
|
191
|
+
}
|
|
192
|
+
|
|
116
193
|
if (_has_vue(pkg)) {
|
|
117
194
|
return new StackResult({ frontend: 'vue', mtime });
|
|
118
195
|
}
|
|
119
196
|
|
|
197
|
+
// A recognised-but-unmodelled framework is NOT `plain`. Refusing here is
|
|
198
|
+
// the point: `plain` means "no frontend markers", and conflating the two
|
|
199
|
+
// is what let a Svelte or Inertia project receive Tailwind-only tooling
|
|
200
|
+
// and no warning.
|
|
201
|
+
if (_has_unmodelled_marker(composer, pkg)) {
|
|
202
|
+
return new StackResult({ frontend: UNSUPPORTED_STACK, mtime });
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
// Monorepo: no manifest at the root, but one sits in a workspace directory.
|
|
206
|
+
// That is a wrong-scope call, not a plain project — the caller owns scope
|
|
207
|
+
// selection, so say so instead of labelling the whole repo `plain` and
|
|
208
|
+
// dispatching generic tooling at it.
|
|
209
|
+
//
|
|
210
|
+
// A repo with no manifest ANYWHERE stays `plain`: that is greenfield, and
|
|
211
|
+
// the scaffold path depends on it.
|
|
212
|
+
if (mtime === 0.0 && _has_nested_manifest(project_root)) {
|
|
213
|
+
return new StackResult({ frontend: UNSUPPORTED_STACK, mtime });
|
|
214
|
+
}
|
|
215
|
+
|
|
120
216
|
return new StackResult({ frontend: DEFAULT_STACK, mtime });
|
|
121
217
|
}
|
|
122
218
|
|
|
@@ -185,6 +281,61 @@ function _all_dependencies(manifest: Manifest, ...keys: string[]): Manifest {
|
|
|
185
281
|
return merged;
|
|
186
282
|
}
|
|
187
283
|
|
|
284
|
+
/** Dependency sections a `package.json` can carry. */
|
|
285
|
+
const _PKG_DEP_KEYS: ReadonlyArray<string> = [
|
|
286
|
+
'dependencies',
|
|
287
|
+
'devDependencies',
|
|
288
|
+
'peerDependencies',
|
|
289
|
+
'optionalDependencies',
|
|
290
|
+
];
|
|
291
|
+
|
|
292
|
+
/** True when `name` appears in any of `manifest`'s named dependency sections. */
|
|
293
|
+
function _has_package(
|
|
294
|
+
manifest: Manifest,
|
|
295
|
+
sections: ReadonlyArray<string>,
|
|
296
|
+
name: string,
|
|
297
|
+
): boolean {
|
|
298
|
+
return name in _all_dependencies(manifest, ...sections);
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
/** Workspace directories a monorepo conventionally puts its packages in. */
|
|
302
|
+
const _WORKSPACE_DIRS: ReadonlyArray<string> = ['packages', 'apps', 'services', 'libs'];
|
|
303
|
+
|
|
304
|
+
/**
|
|
305
|
+
* True when no root manifest exists but a workspace directory holds one.
|
|
306
|
+
*
|
|
307
|
+
* Deliberately shallow — one `readdir` per conventional workspace directory,
|
|
308
|
+
* one `stat` per child. It answers "was this called at the wrong scope?", not
|
|
309
|
+
* "where is the real project", which stays the caller's job.
|
|
310
|
+
*/
|
|
311
|
+
function _has_nested_manifest(project_root: string): boolean {
|
|
312
|
+
for (const dir of _WORKSPACE_DIRS) {
|
|
313
|
+
const base = path.join(project_root, dir);
|
|
314
|
+
let entries: string[];
|
|
315
|
+
try {
|
|
316
|
+
entries = fs.readdirSync(base);
|
|
317
|
+
} catch {
|
|
318
|
+
continue;
|
|
319
|
+
}
|
|
320
|
+
for (const entry of entries) {
|
|
321
|
+
if (
|
|
322
|
+
_is_file(path.join(base, entry, 'composer.json')) ||
|
|
323
|
+
_is_file(path.join(base, entry, 'package.json'))
|
|
324
|
+
) {
|
|
325
|
+
return true;
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
return false;
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
/** True when either manifest names a framework we recognise but do not model. */
|
|
333
|
+
function _has_unmodelled_marker(composer: Manifest, pkg: Manifest): boolean {
|
|
334
|
+
const composer_deps = _all_dependencies(composer, 'require', 'require-dev');
|
|
335
|
+
const pkg_deps = _all_dependencies(pkg, ..._PKG_DEP_KEYS);
|
|
336
|
+
return _UNMODELLED_MARKERS.some((marker) => marker in composer_deps || marker in pkg_deps);
|
|
337
|
+
}
|
|
338
|
+
|
|
188
339
|
function _is_blade_livewire_flux(composer: Manifest): boolean {
|
|
189
340
|
const deps = _all_dependencies(composer, 'require', 'require-dev');
|
|
190
341
|
return _LIVEWIRE_PACKAGE in deps && _FLUX_PACKAGE in deps;
|
|
@@ -629,10 +629,12 @@ function _validate_app_spec(app_spec: JsonValue): void {
|
|
|
629
629
|
* agent-directive that populates it. An empty dict is the in-progress
|
|
630
630
|
* shape after the skill returns but before the brief lands; the gate
|
|
631
631
|
* treats it the same as `null`. Once populated, `design_confirmed`
|
|
632
|
-
* (when present) must be a bool
|
|
633
|
-
* `
|
|
634
|
-
*
|
|
635
|
-
*
|
|
632
|
+
* (when present) must be a bool, and `states` (when present and not
|
|
633
|
+
* `null`) must be an object — the design gate's per-state loop is
|
|
634
|
+
* object-guarded, so a string or list would bypass all five checks.
|
|
635
|
+
* The remaining keys (`layout`, `components`, `microcopy`, `a11y`,
|
|
636
|
+
* `reused_from_audit`) are validated by the design handler against the
|
|
637
|
+
* skill contract — the schema only enforces shape, not content.
|
|
636
638
|
*/
|
|
637
639
|
function _validate_ui_design(ui_design: JsonValue): void {
|
|
638
640
|
if (ui_design === null) {
|
|
@@ -652,6 +654,21 @@ function _validate_ui_design(ui_design: JsonValue): void {
|
|
|
652
654
|
'state.ui_design.design_confirmed must be a boolean when present',
|
|
653
655
|
);
|
|
654
656
|
}
|
|
657
|
+
// `states` is shape-checked here, not left to the handler. The design
|
|
658
|
+
// gate's per-state loop was guarded on "is this an object", so a string or
|
|
659
|
+
// list silently skipped all five required-state checks — the gate passed
|
|
660
|
+
// while covering no state at all. Rejecting the wrong shape at the schema
|
|
661
|
+
// boundary means the loop can no longer be bypassed by type.
|
|
662
|
+
if (
|
|
663
|
+
'states' in ui_design &&
|
|
664
|
+
ui_design['states'] !== null &&
|
|
665
|
+
!_isDict(ui_design['states'])
|
|
666
|
+
) {
|
|
667
|
+
throw new SchemaError(
|
|
668
|
+
'state.ui_design.states must be a JSON object (one key per ' +
|
|
669
|
+
`required state) or null; got ${pyTypeName(ui_design['states'])}`,
|
|
670
|
+
);
|
|
671
|
+
}
|
|
655
672
|
}
|
|
656
673
|
|
|
657
674
|
/**
|
|
@@ -21,7 +21,7 @@ The two axes compose orthogonally:
|
|
|
21
21
|
```
|
|
22
22
|
|
|
23
23
|
QA methodology applied through a truck-driver end-user lens. The
|
|
24
|
-
split is locked in [
|
|
24
|
+
split is locked in [`../docs/contracts/adr-user-types-axis.md`](../../docs/contracts/adr-user-types-axis.md).
|
|
25
25
|
|
|
26
26
|
## What a user-type is — and is NOT
|
|
27
27
|
|
|
@@ -37,13 +37,13 @@ split is locked in [`../../docs/contracts/adr-user-types-axis.md`](../../docs/co
|
|
|
37
37
|
encodes this floor.
|
|
38
38
|
- **Is NOT**: an install-time filter. The vocabulary overlaps with
|
|
39
39
|
the install-time `user-types/` axis at the package root (see
|
|
40
|
-
[
|
|
40
|
+
[`../docs/contracts/adr-install-user-type-axis.md`](../../docs/contracts/adr-install-user-type-axis.md)),
|
|
41
41
|
but the two live in different directories and consume different
|
|
42
42
|
config keys. Same word, different layer — by design.
|
|
43
43
|
|
|
44
44
|
## Schema
|
|
45
45
|
|
|
46
|
-
Locked in [
|
|
46
|
+
Locked in [`../docs/contracts/user-type-schema.md`](../../docs/contracts/user-type-schema.md).
|
|
47
47
|
|
|
48
48
|
- **Spine** — 7 sections (Focus · Daily Workflow · Vocabulary ·
|
|
49
49
|
Operational Constraints · Unique Questions · Ticket Red Flags ·
|
|
@@ -88,7 +88,7 @@ ticket-requirement signals.
|
|
|
88
88
|
|
|
89
89
|
CLI-only in v1 — skills do NOT declare a default `user-types:`
|
|
90
90
|
frontmatter key. The migration path to v2 (skill-level default key)
|
|
91
|
-
is documented in [
|
|
91
|
+
is documented in [`../docs/contracts/adr-user-types-axis.md § Consequences`](../docs/contracts/adr-user-types-axis.md).
|
|
92
92
|
|
|
93
93
|
```
|
|
94
94
|
/refine-ticket --user-type=truck-driver PROJ-123
|
|
@@ -113,12 +113,12 @@ review proceeds without simulation.
|
|
|
113
113
|
No existing persona moves into this directory. The three seeds
|
|
114
114
|
shipped here (`galabau-field-crew`, `metalworking-shop`,
|
|
115
115
|
`truck-driver`) were born as user-types. Existing personas stay as
|
|
116
|
-
personas. See [
|
|
116
|
+
personas. See [`../docs/contracts/adr-user-types-axis.md § Migration`](../docs/contracts/adr-user-types-axis.md).
|
|
117
117
|
|
|
118
118
|
## Related
|
|
119
119
|
|
|
120
|
-
- [
|
|
121
|
-
- [
|
|
122
|
-
- [
|
|
120
|
+
- [`../docs/contracts/user-type-schema.md`](../../docs/contracts/user-type-schema.md) — locked schema
|
|
121
|
+
- [`../docs/contracts/adr-user-types-axis.md`](../../docs/contracts/adr-user-types-axis.md) — the axis split decision
|
|
122
|
+
- [`../docs/contracts/adr-install-user-type-axis.md`](../../docs/contracts/adr-install-user-type-axis.md) — install-time `user_type` axis (distinct layer)
|
|
123
123
|
- [`../personas/README.md`](../personas/README.md) — sister axis (methodology vs end-user)
|
|
124
124
|
- [`../rules/artifact-drafting-protocol.md`](../rules/artifact-drafting-protocol.md) — mandatory per new user-type
|
|
@@ -10,67 +10,68 @@ source: project
|
|
|
10
10
|
|
|
11
11
|
## Focus
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
paver-laying, retaining walls, planting,
|
|
15
|
-
rugged tablet in a pouch, gloves on, lifting
|
|
16
|
-
fifteen minutes.
|
|
17
|
-
|
|
18
|
-
reliable signal on half the sites.
|
|
19
|
-
is either billable later or
|
|
20
|
-
the moment of change is the
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
13
|
+
This lens simulates the two- to four-person crew on a landscape /
|
|
14
|
+
garden-build site — paver-laying, retaining walls, planting,
|
|
15
|
+
irrigation. Phone or rugged tablet in a pouch, gloves on, lifting
|
|
16
|
+
something heavy every fifteen minutes. The workday is shaped by
|
|
17
|
+
weather, delivery slots, and the customer arriving unannounced to
|
|
18
|
+
ask for "just one more thing". No reliable signal on half the sites.
|
|
19
|
+
Every change a customer asks for is either billable later or
|
|
20
|
+
silently swallowed; documentation at the moment of the change is the
|
|
21
|
+
only way that decision survives.
|
|
22
|
+
|
|
23
|
+
This lens is a **review lens only**, never an operational
|
|
24
|
+
instruction source. No paver-laying procedure, no soil-prep
|
|
25
|
+
chemistry, no structural advice on retaining walls.
|
|
25
26
|
|
|
26
27
|
## Daily Workflow
|
|
27
28
|
|
|
28
29
|
- 06:30 — depot pickup, materials loaded, route confirmed; lead
|
|
29
|
-
reads day plan once, on phone, gloves off.
|
|
30
|
-
- 07:30–11:30 — execution on site; phone back in pouch. UI
|
|
31
|
-
happen at coffee breaks or when customer interrupts.
|
|
30
|
+
reads the day plan once, on phone, with gloves off.
|
|
31
|
+
- 07:30–11:30 — execution on site; phone goes back in pouch. UI
|
|
32
|
+
reads happen at coffee breaks or when the customer interrupts.
|
|
32
33
|
- 11:30 — billable-change moment: customer asks for an extra step,
|
|
33
|
-
crew lead
|
|
34
|
-
ideally signature, **before** next task starts.
|
|
34
|
+
crew lead must capture it as a timestamped photo + short note +
|
|
35
|
+
ideally a signature, **before** the next task starts.
|
|
35
36
|
- 15:30 — end-of-day proof: photo of finished section, geotagged,
|
|
36
37
|
uploaded if signal exists, queued offline if not.
|
|
37
|
-
- 17:00 — depot return; office reconciles day from photos +
|
|
38
|
+
- 17:00 — depot return; office reconciles the day from photos +
|
|
38
39
|
notes, not from memory.
|
|
39
40
|
|
|
40
41
|
## Vocabulary
|
|
41
42
|
|
|
42
|
-
- **Aufmass** — measured-on-site quantity that becomes invoice
|
|
43
|
+
- **Aufmass** — measured-on-site quantity that becomes the invoice
|
|
43
44
|
basis; never substitute with "estimate" or "measurement".
|
|
44
45
|
- **Nachtrag** — billable change-request added to a running job;
|
|
45
46
|
losing one = losing money, not just data.
|
|
46
47
|
- **Sauberkeitsschicht** — gravel layer under pavers; plain-German,
|
|
47
48
|
not "base course".
|
|
48
|
-
- **Plain-German over engineer-German.** Crew is bilingual
|
|
49
|
-
DE / PL / TR); noun
|
|
50
|
-
the one in the BOQ.
|
|
49
|
+
- **Plain-German over engineer-German.** Crew is bilingual
|
|
50
|
+
(often DE / PL / TR); the noun has to be the one on the delivery
|
|
51
|
+
slip, not the one in the BOQ.
|
|
51
52
|
|
|
52
53
|
## Operational Constraints
|
|
53
54
|
|
|
54
55
|
- **No signal on half the sites.** Every write must queue and sync;
|
|
55
|
-
every read must work from cache. Conflict resolution on sync is
|
|
56
|
-
|
|
56
|
+
every read must work from cache. Conflict resolution on sync is a
|
|
57
|
+
ticket requirement, not a nice-to-have.
|
|
57
58
|
- **Capacitive touch fails with wet or dirty gloves.** Primary
|
|
58
59
|
flows survive with stylus, knuckle, or large-target taps. No
|
|
59
60
|
pinch-zoom on the critical path.
|
|
60
|
-
- **Photo is the proof, not the form.** A billable-change flow
|
|
61
|
-
|
|
62
|
-
silently — crew defers, then forgets.
|
|
63
|
-
- **Screen washout in direct sun.** High-contrast mode on by
|
|
61
|
+
- **Photo is the proof, not the form.** A billable-change flow that
|
|
62
|
+
needs three text fields before the camera opens loses changes
|
|
63
|
+
silently — the crew defers, then forgets.
|
|
64
|
+
- **Screen washout in direct sun.** High-contrast mode is on by
|
|
64
65
|
default for outdoor flows, never opt-in via settings.
|
|
65
66
|
- **Rugged hardware, slow CPU.** Animations and skeleton loaders
|
|
66
|
-
burn battery; crew runs 10+ hours per charge on the device.
|
|
67
|
+
burn battery; the crew runs 10+ hours per charge on the device.
|
|
67
68
|
|
|
68
69
|
## Unique Questions
|
|
69
70
|
|
|
70
71
|
- Does this flow survive a 4-hour offline window plus a sync with
|
|
71
72
|
conflicting edits from the office?
|
|
72
|
-
- Can a gloved hand complete the primary action in one tap from
|
|
73
|
-
|
|
73
|
+
- Can a gloved hand complete the primary action in one tap from the
|
|
74
|
+
home screen without typing?
|
|
74
75
|
- Is there a photo-first path for capturing a billable change, or
|
|
75
76
|
does the form block the camera?
|
|
76
77
|
- Is the noun on screen the one written on the delivery slip, in
|
|
@@ -96,5 +97,5 @@ advice on retaining walls.
|
|
|
96
97
|
signal (gloves, signal-loss, Nachtrag, Aufmass).
|
|
97
98
|
- **No engineer-vocabulary substitution.** Renaming Nachtrag to
|
|
98
99
|
"change request" in the UI breaks the billing chain.
|
|
99
|
-
- **No photo-after-form flows.** Photo must be reachable in one
|
|
100
|
-
|
|
100
|
+
- **No photo-after-form flows.** Photo must be reachable in one tap
|
|
101
|
+
from the moment the customer asks for the change.
|
|
@@ -10,47 +10,48 @@ source: project
|
|
|
10
10
|
|
|
11
11
|
## Focus
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
finish. Two surfaces: shop-floor tablets bolted
|
|
15
|
-
(loud, dirty, gloves) and an office desktop where
|
|
16
|
-
scheduling, and material-cert tracking happen.
|
|
17
|
-
travelers** (route cards) — one per job
|
|
18
|
-
every station,
|
|
19
|
-
Material certificates (heat numbers, mill certs) must
|
|
20
|
-
incoming bar stock through to the customer; losing the
|
|
21
|
-
breaks the audit and can void the order.
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
welding-procedure spec, no electrical
|
|
25
|
-
structural-engineering advice. Trade execution stays
|
|
26
|
-
certified welder, the EHS officer, and the engineer.
|
|
13
|
+
This lens simulates a small-to-mid metalworking shop — laser-cut,
|
|
14
|
+
press-brake, weld, finish. Two surfaces: shop-floor tablets bolted
|
|
15
|
+
near the machines (loud, dirty, gloves) and an office desktop where
|
|
16
|
+
quoting, scheduling, and material-cert tracking happen. The shop
|
|
17
|
+
runs on **job travelers** (route cards) — one per job that follows
|
|
18
|
+
the work through every station, gets stamped, and ends in the
|
|
19
|
+
shipping bay. Material certificates (heat numbers, mill certs) must
|
|
20
|
+
trace from incoming bar stock through to the customer; losing the
|
|
21
|
+
chain breaks the audit and can void the order.
|
|
22
|
+
|
|
23
|
+
This lens is a **review lens only**, never an operational
|
|
24
|
+
instruction source. No welding-procedure spec, no electrical
|
|
25
|
+
guidance, no structural-engineering advice. Trade execution stays
|
|
26
|
+
with the certified welder, the EHS officer, and the engineer.
|
|
27
27
|
|
|
28
28
|
## Daily Workflow
|
|
29
29
|
|
|
30
|
-
- 06:00 — shift starts, lead reviews day's travelers at
|
|
31
|
-
desktop; priority shifts printed and pinned at the
|
|
30
|
+
- 06:00 — shift starts, lead reviews the day's travelers at the
|
|
31
|
+
office desktop; priority shifts get printed and pinned at the
|
|
32
|
+
station.
|
|
32
33
|
- 07:00–15:30 — execution per station; each station scans the
|
|
33
|
-
traveler QR or punches job number on tablet to start /
|
|
34
|
-
complete time on that step.
|
|
35
|
-
- Material check-in — incoming bar stock photographed with
|
|
36
|
-
cert; heat number bound to lot at moment of
|
|
37
|
-
from memory.
|
|
38
|
-
- Safety sign-off — process steps requiring PPE or second-person
|
|
34
|
+
traveler QR or punches the job number on the tablet to start /
|
|
35
|
+
pause / complete time on that step.
|
|
36
|
+
- Material check-in — incoming bar stock is photographed with the
|
|
37
|
+
mill cert; heat number bound to the lot at the moment of
|
|
38
|
+
receipt, not later from memory.
|
|
39
|
+
- Safety sign-off — process steps requiring PPE or a second-person
|
|
39
40
|
check (overhead crane, confined-space weld) cannot start until
|
|
40
|
-
sign-off is recorded on the tablet.
|
|
41
|
+
the sign-off is recorded on the tablet.
|
|
41
42
|
- 15:30 — end-of-shift, lead reconciles open travelers, flags any
|
|
42
43
|
step where the material-cert chain is broken.
|
|
43
44
|
|
|
44
45
|
## Vocabulary
|
|
45
46
|
|
|
46
|
-
- **Job traveler / route card** — single canonical record that
|
|
47
|
+
- **Job traveler / route card** — the single canonical record that
|
|
47
48
|
moves with the part; never substitute with "ticket" or "task".
|
|
48
49
|
- **Heat number / mill cert** — material identity; lose the link
|
|
49
50
|
and the part is unsellable to a regulated customer.
|
|
50
51
|
- **Sign-off** — recorded, named, timestamped; "approved" without
|
|
51
52
|
a name fails audit.
|
|
52
|
-
- **Setup vs run time** — booked separately on the machine;
|
|
53
|
-
|
|
53
|
+
- **Setup vs run time** — booked separately on the machine; merging
|
|
54
|
+
them destroys costing accuracy.
|
|
54
55
|
|
|
55
56
|
## Operational Constraints
|
|
56
57
|
|
|
@@ -59,15 +60,15 @@ certified welder, the EHS officer, and the engineer.
|
|
|
59
60
|
high contrast on by default.
|
|
60
61
|
- **PPE prevents fine touch.** Welding gloves + safety glasses;
|
|
61
62
|
drop-down pickers with > 6 options are a fail mode.
|
|
62
|
-
- **Machine-time is money.** A flow
|
|
63
|
-
job-step start, run 200 times/day, costs the shop one
|
|
64
|
-
|
|
65
|
-
- **Material-cert chain is regulatory.** Every step
|
|
66
|
-
material must capture or carry the heat-number link; breaking
|
|
67
|
-
|
|
63
|
+
- **Machine-time is money.** A flow that adds 30 seconds per
|
|
64
|
+
job-step start, run 200 times/day, costs the shop one machine-
|
|
65
|
+
hour per shift.
|
|
66
|
+
- **Material-cert chain is regulatory.** Every step that touches
|
|
67
|
+
material must capture or carry the heat-number link; breaking it
|
|
68
|
+
silently is the worst failure mode.
|
|
68
69
|
- **Two-surface split.** Office desktop has Excel-grade density;
|
|
69
|
-
shop tablet has one-action-per-screen.
|
|
70
|
-
a layout.
|
|
70
|
+
shop tablet has one-action-per-screen. The same flow cannot
|
|
71
|
+
share a layout.
|
|
71
72
|
|
|
72
73
|
## Unique Questions
|
|
73
74
|
|
|
@@ -10,20 +10,22 @@ source: project
|
|
|
10
10
|
|
|
11
11
|
## Focus
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
typically single driver, phone or
|
|
15
|
-
|
|
16
|
-
pallet jack.
|
|
17
|
-
bounded driving and rest
|
|
18
|
-
losing the licence. Cargo
|
|
19
|
-
|
|
20
|
-
stretches. Proof-of-delivery
|
|
21
|
-
is the moment the invoice
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
13
|
+
This lens simulates a commercial truck driver doing regional or
|
|
14
|
+
long-haul delivery — typically a single driver, a phone or
|
|
15
|
+
in-cab tablet on a mount, gloves optional but hands often busy
|
|
16
|
+
with the wheel, paperwork, or a pallet jack. The day is gated by
|
|
17
|
+
**hours-of-service (HOS)** — legally bounded driving and rest
|
|
18
|
+
windows that cannot be ignored without losing the licence. Cargo
|
|
19
|
+
moves through warehouses, loading docks, customer yards; signal
|
|
20
|
+
drops in tunnels, basements, and rural stretches. Proof-of-delivery
|
|
21
|
+
(photo + signature + GPS + timestamp) is the moment the invoice
|
|
22
|
+
becomes collectable.
|
|
23
|
+
|
|
24
|
+
This lens is a **review lens only**, never an operational
|
|
25
|
+
instruction source. No driving advice, no HOS legal
|
|
26
|
+
interpretation, no vehicle-maintenance guidance, no hazmat
|
|
27
|
+
procedure. Trade execution stays with the dispatcher, the safety
|
|
28
|
+
officer, and the certified driver-trainer.
|
|
27
29
|
|
|
28
30
|
## Daily Workflow
|
|
29
31
|
|
|
@@ -40,8 +42,8 @@ dispatcher, the safety officer, and the certified driver-trainer.
|
|
|
40
42
|
- Per delivery — photo of the pallet, customer signature
|
|
41
43
|
on-screen, GPS pin, timestamp; the four-tuple is the invoice
|
|
42
44
|
trigger.
|
|
43
|
-
- End of duty — HOS clock closes; if next break-window starts
|
|
44
|
-
mid-route, system warns **before** the driver commits.
|
|
45
|
+
- End of duty — HOS clock closes; if the next break-window starts
|
|
46
|
+
mid-route, the system warns **before** the driver commits.
|
|
45
47
|
|
|
46
48
|
## Vocabulary
|
|
47
49
|
|
|
@@ -66,7 +68,7 @@ dispatcher, the safety officer, and the certified driver-trainer.
|
|
|
66
68
|
- **Dead zones are routine.** Tunnels, basements, rural roads;
|
|
67
69
|
every write queues, every read works from cache, and POD
|
|
68
70
|
uploads sync with photo intact when signal returns.
|
|
69
|
-
- **One-handed operation.** Other hand on the wheel, paperwork,
|
|
71
|
+
- **One-handed operation.** Other hand is on the wheel, paperwork,
|
|
70
72
|
or pallet jack; bottom-thumb-reachable primary actions, no
|
|
71
73
|
precision drag.
|
|
72
74
|
- **Cold / wet / glare.** Outdoor docks in winter; gloves on,
|
|
@@ -95,8 +97,8 @@ dispatcher, the safety officer, and the certified driver-trainer.
|
|
|
95
97
|
than a constraint on what stops can be accepted.
|
|
96
98
|
- Sync described as online-only; no queue + retry sketched for
|
|
97
99
|
dead-zone delivery.
|
|
98
|
-
- Dock-dwell capture left to manual tap with no
|
|
99
|
-
fallback.
|
|
100
|
+
- Dock-dwell capture left to manual tap with no
|
|
101
|
+
arrival-trigger fallback.
|
|
100
102
|
|
|
101
103
|
## Anti-Patterns
|
|
102
104
|
|
|
@@ -106,7 +108,7 @@ dispatcher, the safety officer, and the certified driver-trainer.
|
|
|
106
108
|
- **No generic prose.** "Consider mobile usability" fails the
|
|
107
109
|
Anti-Generic Quality Bar — every observation cites HOS, POD,
|
|
108
110
|
dock-dwell, dead-zone, or hands-busy.
|
|
109
|
-
- **No in-motion typing on the critical path.** A flow
|
|
111
|
+
- **No in-motion typing on the critical path.** A flow that needs
|
|
110
112
|
the driver to type while driving is rejected outright.
|
|
111
113
|
- **No partial POD acceptance.** Missing any element of the
|
|
112
114
|
four-tuple = unbilled; the flow must hold the action open
|