@event4u/agent-config 14.23.0 → 16.0.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 +144 -152
- package/README.md +1 -1
- package/dist/agent-src/commands/agent-handoff.md +8 -7
- package/dist/agent-src/commands/agents/init.md +1 -1
- package/dist/agent-src/commands/agents/user/accept.md +4 -4
- package/dist/agent-src/commands/agents/user/delete.md +2 -2
- package/dist/agent-src/commands/agents/user/init.md +3 -3
- package/dist/agent-src/commands/agents/user/review.md +3 -3
- package/dist/agent-src/commands/agents/user/show.md +3 -3
- package/dist/agent-src/commands/agents/user/update.md +2 -2
- package/dist/agent-src/commands/agents/user.md +6 -6
- package/dist/agent-src/commands/analytics/prune.md +1 -1
- package/dist/agent-src/commands/analytics/show.md +2 -2
- package/dist/agent-src/commands/analyze/decision.md +2 -2
- package/dist/agent-src/commands/analyze/inbox.md +5 -5
- package/dist/agent-src/commands/analyze/incident.md +3 -3
- package/dist/agent-src/commands/analyze/near-miss.md +3 -3
- package/dist/agent-src/commands/analyze/postmortem.md +4 -4
- package/dist/agent-src/commands/analyze/premortem.md +2 -2
- package/dist/agent-src/commands/analyze.md +2 -2
- package/dist/agent-src/commands/bug/fix.md +1 -1
- package/dist/agent-src/commands/bug/investigate.md +2 -2
- package/dist/agent-src/commands/cost/profile.md +3 -3
- package/dist/agent-src/commands/design.md +1 -1
- package/dist/agent-src/commands/feature/explore.md +1 -1
- package/dist/agent-src/commands/feature/plan.md +2 -2
- package/dist/agent-src/commands/feature/roadmap.md +2 -2
- package/dist/agent-src/commands/ghostwriter/fetch.md +4 -4
- package/dist/agent-src/commands/ghostwriter/list.md +1 -1
- package/dist/agent-src/commands/ghostwriter/show.md +1 -1
- package/dist/agent-src/commands/ghostwriter/write.md +9 -9
- package/dist/agent-src/commands/humanize.md +6 -6
- package/dist/agent-src/commands/jira-ticket.md +1 -1
- package/dist/agent-src/commands/judge/solo.md +1 -1
- package/dist/agent-src/commands/judge.md +1 -1
- package/dist/agent-src/commands/knowledge/cross-repo.md +1 -1
- package/dist/agent-src/commands/knowledge/forget.md +1 -1
- package/dist/agent-src/commands/knowledge/ingest.md +2 -2
- package/dist/agent-src/commands/knowledge/list.md +1 -1
- package/dist/agent-src/commands/memory/add.md +3 -3
- package/dist/agent-src/commands/memory/load.md +4 -4
- package/dist/agent-src/commands/memory/mine-session.md +1 -1
- package/dist/agent-src/commands/memory/promote.md +4 -4
- package/dist/agent-src/commands/memory/propose.md +2 -2
- package/dist/agent-src/commands/mode.md +5 -5
- package/dist/agent-src/commands/post-as/ghostwriter.md +3 -3
- package/dist/agent-src/commands/post-as/me.md +7 -7
- package/dist/agent-src/commands/pr/create.md +1 -1
- package/dist/agent-src/commands/pr/merge.md +1 -1
- package/dist/agent-src/commands/profile/activate.md +1 -1
- package/dist/agent-src/commands/profile/show.md +1 -1
- package/dist/agent-src/commands/research/deep.md +2 -2
- package/dist/agent-src/commands/research/report.md +2 -2
- package/dist/agent-src/commands/review/changes.md +1 -1
- package/dist/agent-src/commands/review/routing.md +1 -1
- package/dist/agent-src/commands/roadmap/create.md +4 -3
- package/dist/agent-src/commands/roadmap/materialize.md +2 -2
- package/dist/agent-src/commands/roadmap/next.md +1 -1
- package/dist/agent-src/commands/roadmap/process-full.md +2 -2
- package/dist/agent-src/commands/security-audit-config.md +3 -3
- package/dist/agent-src/commands/skill/preview.md +1 -1
- package/dist/agent-src/commands/skills/discover.md +1 -1
- package/dist/agent-src/commands/sync/agent-settings.md +2 -2
- package/dist/agent-src/commands/sync/gitignore/fix.md +1 -1
- package/dist/agent-src/commands/tests/create.md +1 -1
- package/dist/agent-src/commands/tests/e2e-heal.md +1 -1
- package/dist/agent-src/commands/tests/e2e-plan.md +1 -1
- package/dist/agent-src/contexts/authority/kernel-rule-edits.md +6 -6
- package/dist/agent-src/contexts/communication/rules-auto/slash-command-routing-policy-mechanics.md +1 -2
- package/dist/agent-src/contexts/communication/rules-auto/think-before-action-mechanics.md +2 -2
- package/dist/agent-src/contexts/communication/rules-auto/token-efficiency-mechanics.md +88 -1
- package/dist/agent-src/contexts/communication/rules-auto/user-interaction-mechanics.md +51 -1
- package/dist/agent-src/contexts/contracts/frugality-charter.md +1 -1
- package/dist/agent-src/contexts/execution/auto-dispatch-classification.md +1 -1
- package/dist/agent-src/contexts/execution/auto-orchestration-activation.md +1 -1
- package/dist/agent-src/contexts/execution/autonomy-mechanics.md +1 -1
- package/dist/agent-src/contexts/execution/cheap-question-mechanics.md +1 -1
- package/dist/agent-src/contexts/execution/contract-decision-sheet.md +3 -3
- package/dist/agent-src/contexts/execution/mandated-lines.md +1 -1
- package/dist/agent-src/contexts/execution/non-interactive-contract.md +1 -1
- package/dist/agent-src/contexts/execution/orchestration-telemetry.md +1 -1
- package/dist/agent-src/contexts/execution/plan-confidence-gate.md +5 -5
- package/dist/agent-src/contexts/execution/roadmap-execution-contract.md +1 -1
- package/dist/agent-src/contexts/execution/subagent-modes-detail.md +1 -1
- package/dist/agent-src/contexts/execution/subagent-routing.md +2 -2
- package/dist/agent-src/contexts/execution/subagent-spawn-contract.md +1 -1
- package/dist/agent-src/contexts/execution/user-memory-channels.md +3 -3
- package/dist/agent-src/contexts/execution/verification-mechanics.md +1 -1
- package/dist/agent-src/contexts/judges/persona-voice-rubric.md +2 -2
- package/dist/agent-src/guidelines/abstraction-thresholds.md +88 -0
- package/dist/agent-src/guidelines/agent-infra/5w2h-analysis.md +260 -0
- package/dist/agent-src/guidelines/agent-infra/active-remediation-mechanics.md +99 -0
- package/dist/agent-src/guidelines/agent-infra/agent-interaction-and-decision-quality.md +325 -0
- package/dist/agent-src/guidelines/agent-infra/api-cost-levers.md +177 -0
- package/dist/agent-src/guidelines/agent-infra/artifact-drafting-protocol-mechanics.md +222 -0
- package/dist/agent-src/guidelines/agent-infra/ask-when-uncertain-demos.md +134 -0
- package/dist/agent-src/guidelines/agent-infra/asking-and-brevity-examples.md +198 -0
- package/dist/agent-src/guidelines/agent-infra/break-glass-usage.md +113 -0
- package/dist/agent-src/guidelines/agent-infra/carve-out-predicates.md +17 -0
- package/dist/agent-src/guidelines/agent-infra/comparison-matrix.md +179 -0
- package/dist/agent-src/guidelines/agent-infra/context-hygiene-mechanics.md +165 -0
- package/dist/agent-src/guidelines/agent-infra/corpus-grounding-authoring.md +91 -0
- package/dist/agent-src/guidelines/agent-infra/critical-thinking.md +156 -0
- package/dist/agent-src/guidelines/agent-infra/cross-source-consistency-mechanics.md +109 -0
- package/dist/agent-src/guidelines/agent-infra/developer-judgment.md +82 -0
- package/dist/agent-src/guidelines/agent-infra/direct-answers-demos.md +142 -0
- package/dist/agent-src/guidelines/agent-infra/domain-adoption-gates.md +112 -0
- package/dist/agent-src/guidelines/agent-infra/domain-eval-anti-pattern.md +53 -0
- package/dist/agent-src/guidelines/agent-infra/domain-pack-architecture.md +56 -0
- package/dist/agent-src/guidelines/agent-infra/downstream-changes-mechanics.md +91 -0
- package/dist/agent-src/guidelines/agent-infra/emphasis-budget.md +45 -0
- package/dist/agent-src/guidelines/agent-infra/engineering-memory-data-format.md +210 -0
- package/dist/agent-src/guidelines/agent-infra/evaluator-independence-mechanics.md +92 -0
- package/dist/agent-src/guidelines/agent-infra/existence-question-verdicts.md +80 -0
- package/dist/agent-src/guidelines/agent-infra/failure-signatures.md +70 -0
- package/dist/agent-src/guidelines/agent-infra/false-green.md +233 -0
- package/dist/agent-src/guidelines/agent-infra/first-principles.md +192 -0
- package/dist/agent-src/guidelines/agent-infra/framework-neutrality-patterns.md +66 -0
- package/dist/agent-src/guidelines/agent-infra/frontier-reasoning-operating-profile.md +169 -0
- package/dist/agent-src/guidelines/agent-infra/gate-authoring.md +177 -0
- package/dist/agent-src/guidelines/agent-infra/guarded-baseline.md +39 -0
- package/dist/agent-src/guidelines/agent-infra/installed-tools-manifest.md +142 -0
- package/dist/agent-src/guidelines/agent-infra/inversion-thinking.md +388 -0
- package/dist/agent-src/guidelines/agent-infra/ios-simulator-guide.md +378 -0
- package/dist/agent-src/guidelines/agent-infra/language-and-tone-examples.md +141 -0
- package/dist/agent-src/guidelines/agent-infra/layered-settings.md +317 -0
- package/dist/agent-src/guidelines/agent-infra/linked-projects-onboarding-gate.md +80 -0
- package/dist/agent-src/guidelines/agent-infra/mcp-request-signing.md +197 -0
- package/dist/agent-src/guidelines/agent-infra/memory-access.md +149 -0
- package/dist/agent-src/guidelines/agent-infra/mental-models.md +314 -0
- package/dist/agent-src/guidelines/agent-infra/minimal-safe-diff-mechanics.md +241 -0
- package/dist/agent-src/guidelines/agent-infra/missing-tool-handling.md +66 -0
- package/dist/agent-src/guidelines/agent-infra/model-recommendation.md +101 -0
- package/dist/agent-src/guidelines/agent-infra/naming.md +69 -0
- package/dist/agent-src/guidelines/agent-infra/notes-horizon-mechanics.md +90 -0
- package/dist/agent-src/guidelines/agent-infra/output-patterns.md +117 -0
- package/dist/agent-src/guidelines/agent-infra/recurring-criticism-mechanics.md +96 -0
- package/dist/agent-src/guidelines/agent-infra/reuse-verdict-mechanics.md +71 -0
- package/dist/agent-src/guidelines/agent-infra/review-routing-data-format.md +143 -0
- package/dist/agent-src/guidelines/agent-infra/roadmap-deferred-resolution-provenance.md +54 -0
- package/dist/agent-src/guidelines/agent-infra/roadmap-progress-mechanics.md +274 -0
- package/dist/agent-src/guidelines/agent-infra/role-contracts.md +209 -0
- package/dist/agent-src/guidelines/agent-infra/role-mode-router.md +89 -0
- package/dist/agent-src/guidelines/agent-infra/rule-body-migration-inventory.md +241 -0
- package/dist/agent-src/guidelines/agent-infra/rule-type-governance.md +73 -0
- package/dist/agent-src/guidelines/agent-infra/runtime-layer.md +89 -0
- package/dist/agent-src/guidelines/agent-infra/scqa-framework.md +526 -0
- package/dist/agent-src/guidelines/agent-infra/security-lint-containment.md +121 -0
- package/dist/agent-src/guidelines/agent-infra/self-improvement-pipeline.md +134 -0
- package/dist/agent-src/guidelines/agent-infra/simplicity-and-goal-demos.md +211 -0
- package/dist/agent-src/guidelines/agent-infra/six-hats.md +353 -0
- package/dist/agent-src/guidelines/agent-infra/size-and-scope.md +229 -0
- package/dist/agent-src/guidelines/agent-infra/skill-quality-checklist.md +157 -0
- package/dist/agent-src/guidelines/agent-infra/source-confidentiality-mechanics.md +109 -0
- package/dist/agent-src/guidelines/agent-infra/symptom-driven-harvest-loop.md +104 -0
- package/dist/agent-src/guidelines/agent-infra/systems-thinking.md +220 -0
- package/dist/agent-src/guidelines/agent-infra/tool-description-as-policy.md +35 -0
- package/dist/agent-src/guidelines/agent-infra/tool-integration.md +73 -0
- package/dist/agent-src/guidelines/agent-infra/traceability-field-mechanics.md +50 -0
- package/dist/agent-src/guidelines/agent-infra/untrusted-input-spotlighting.md +166 -0
- package/dist/agent-src/guidelines/agent-infra/verify-before-complete-demos.md +128 -0
- package/dist/agent-src/guidelines/augment-portability-patterns.md +70 -0
- package/dist/agent-src/guidelines/code-clarity.md +350 -0
- package/dist/agent-src/guidelines/component-oriented-and-oop-development.md +189 -0
- package/dist/agent-src/guidelines/cross-role-handoff.md +127 -0
- package/dist/agent-src/guidelines/design-antipatterns-triggers.json +18 -0
- package/dist/agent-src/guidelines/design-antipatterns.md +327 -0
- package/dist/agent-src/guidelines/design-asset-discipline.md +38 -0
- package/dist/agent-src/guidelines/design-canon.md +63 -0
- package/dist/agent-src/guidelines/design-fidelity-mechanics.md +293 -0
- package/dist/agent-src/guidelines/design-fidelity-routing.md +78 -0
- package/dist/agent-src/guidelines/design-handover-extraction.md +117 -0
- package/dist/agent-src/guidelines/design-modes.md +143 -0
- package/dist/agent-src/guidelines/design-reconciliation.md +172 -0
- package/dist/agent-src/guidelines/docs/readme-size-and-splitting.md +209 -0
- package/dist/agent-src/guidelines/e2e/playwright.md +363 -0
- package/dist/agent-src/guidelines/gtm-handoff.md +114 -0
- package/dist/agent-src/guidelines/monorepo-antipatterns.md +141 -0
- package/dist/agent-src/guidelines/php/api-design.md +115 -0
- package/dist/agent-src/guidelines/php/artisan-commands.md +81 -0
- package/dist/agent-src/guidelines/php/blade-ui.md +78 -0
- package/dist/agent-src/guidelines/php/controllers.md +90 -0
- package/dist/agent-src/guidelines/php/database.md +194 -0
- package/dist/agent-src/guidelines/php/eloquent.md +208 -0
- package/dist/agent-src/guidelines/php/flux.md +80 -0
- package/dist/agent-src/guidelines/php/general.md +207 -0
- package/dist/agent-src/guidelines/php/git.md +164 -0
- package/dist/agent-src/guidelines/php/jobs.md +111 -0
- package/dist/agent-src/guidelines/php/livewire.md +71 -0
- package/dist/agent-src/guidelines/php/logging.md +79 -0
- package/dist/agent-src/guidelines/php/naming.md +89 -0
- package/dist/agent-src/guidelines/php/patterns/dependency-injection.md +57 -0
- package/dist/agent-src/guidelines/php/patterns/dtos.md +199 -0
- package/dist/agent-src/guidelines/php/patterns/events.md +67 -0
- package/dist/agent-src/guidelines/php/patterns/factory.md +53 -0
- package/dist/agent-src/guidelines/php/patterns/pipelines.md +66 -0
- package/dist/agent-src/guidelines/php/patterns/policies.md +66 -0
- package/dist/agent-src/guidelines/php/patterns/repositories.md +122 -0
- package/dist/agent-src/guidelines/php/patterns/service-layer.md +64 -0
- package/dist/agent-src/guidelines/php/patterns/strategy.md +247 -0
- package/dist/agent-src/guidelines/php/patterns.md +28 -0
- package/dist/agent-src/guidelines/php/performance.md +92 -0
- package/dist/agent-src/guidelines/php/php-coding-patterns.md +80 -0
- package/dist/agent-src/guidelines/php/resources.md +100 -0
- package/dist/agent-src/guidelines/php/security.md +110 -0
- package/dist/agent-src/guidelines/php/sql.md +97 -0
- package/dist/agent-src/guidelines/php/validations.md +119 -0
- package/dist/agent-src/guidelines/php/websocket.md +100 -0
- package/dist/agent-src/guidelines/prompt-templates.md +189 -0
- package/dist/agent-src/guidelines/redundancy-taxonomy.md +208 -0
- package/dist/agent-src/guidelines/wing4-handoff.md +127 -0
- package/dist/agent-src/personas/README.md +1 -1
- package/dist/agent-src/personas/_template-specialist/persona.md +1 -1
- package/dist/agent-src/personas/product-owner.md +1 -1
- package/dist/agent-src/rules/active-remediation.md +1 -1
- package/dist/agent-src/rules/architecture.md +2 -2
- package/dist/agent-src/rules/artifact-drafting-protocol.md +1 -1
- package/dist/agent-src/rules/ask-when-uncertain.md +2 -2
- package/dist/agent-src/rules/brand-source-of-truth.md +9 -7
- package/dist/agent-src/rules/code-comment-discipline.md +2 -2
- package/dist/agent-src/rules/code-provenance.md +1 -1
- package/dist/agent-src/rules/content-quoting-floor.md +1 -1
- package/dist/agent-src/rules/context-hygiene.md +5 -5
- package/dist/agent-src/rules/cross-source-consistency.md +1 -1
- package/dist/agent-src/rules/design-fidelity.md +36 -46
- package/dist/agent-src/rules/direct-answers.md +2 -2
- package/dist/agent-src/rules/domain-adoption-policy.md +1 -1
- package/dist/agent-src/rules/evaluator-independence.md +1 -1
- package/dist/agent-src/rules/framework-neutrality-in-generic-skills.md +1 -1
- package/dist/agent-src/rules/icon-consistency.md +5 -1
- package/dist/agent-src/rules/improve-before-implement.md +1 -1
- package/dist/agent-src/rules/language-and-tone.md +3 -3
- package/dist/agent-src/rules/minimal-safe-diff.md +1 -1
- package/dist/agent-src/rules/notes-first-reasoning.md +2 -2
- package/dist/agent-src/rules/recurring-criticism.md +1 -1
- package/dist/agent-src/rules/roadmap-progress-sync.md +1 -1
- package/dist/agent-src/rules/role-mode-adherence.md +2 -2
- package/dist/agent-src/rules/security-sensitive-stop.md +1 -1
- package/dist/agent-src/rules/size-enforcement.md +1 -1
- package/dist/agent-src/rules/source-confidentiality.md +2 -2
- package/dist/agent-src/rules/think-before-action.md +1 -1
- package/dist/agent-src/rules/token-efficiency.md +7 -5
- package/dist/agent-src/rules/ui-audit-gate.md +3 -2
- package/dist/agent-src/rules/untrusted-input-defense.md +3 -3
- package/dist/agent-src/rules/user-interaction.md +31 -30
- package/dist/agent-src/skills/activation-design/SKILL.md +2 -2
- package/dist/agent-src/skills/adr-create/SKILL.md +5 -5
- package/dist/agent-src/skills/ai-council/SKILL.md +1 -1
- package/dist/agent-src/skills/ai-council/references/advanced-modes.md +1 -1
- package/dist/agent-src/skills/blade-ui/SKILL.md +1 -1
- package/dist/agent-src/skills/blast-radius-analyzer/SKILL.md +1 -1
- package/dist/agent-src/skills/brand-to-tokens/SKILL.md +24 -3
- package/dist/agent-src/skills/bug-analyzer/SKILL.md +1 -1
- package/dist/agent-src/skills/build-buy-partner/SKILL.md +1 -1
- package/dist/agent-src/skills/churn-prevention/SKILL.md +2 -2
- package/dist/agent-src/skills/code-refactoring/SKILL.md +3 -3
- package/dist/agent-src/skills/code-review/SKILL.md +3 -3
- package/dist/agent-src/skills/command-writing/SKILL.md +3 -3
- package/dist/agent-src/skills/comp-banding/SKILL.md +1 -1
- package/dist/agent-src/skills/competitive-moat-analysis/SKILL.md +1 -1
- package/dist/agent-src/skills/competitive-positioning/SKILL.md +2 -2
- package/dist/agent-src/skills/complexity-first-planning/SKILL.md +1 -1
- package/dist/agent-src/skills/condense-memory/SKILL.md +1 -1
- package/dist/agent-src/skills/content-funnel-design/SKILL.md +2 -2
- package/dist/agent-src/skills/contracts-cognition/SKILL.md +1 -1
- package/dist/agent-src/skills/copilot-agents-optimization/SKILL.md +2 -2
- package/dist/agent-src/skills/corpus-grounding/SKILL.md +2 -2
- package/dist/agent-src/skills/customer-research/SKILL.md +2 -2
- package/dist/agent-src/skills/dashboard-design/SKILL.md +1 -1
- package/dist/agent-src/skills/data-handling-judgment/SKILL.md +1 -1
- package/dist/agent-src/skills/deal-qualification-meddic/SKILL.md +2 -2
- package/dist/agent-src/skills/decision-record/SKILL.md +3 -3
- package/dist/agent-src/skills/decision-review/SKILL.md +8 -8
- package/dist/agent-src/skills/deep-reading-analyst/SKILL.md +22 -22
- package/dist/agent-src/skills/design-intelligence/SKILL.md +4 -4
- package/dist/agent-src/skills/design-intelligence/references/context-and-registers.md +2 -2
- package/dist/agent-src/skills/design-review/SKILL.md +4 -4
- package/dist/agent-src/skills/design-system-capture/references/design-system-json.md +20 -1
- package/dist/agent-src/skills/design-tokens/SKILL.md +17 -2
- package/dist/agent-src/skills/design-variations/SKILL.md +2 -2
- package/dist/agent-src/skills/developer-like-execution/SKILL.md +2 -2
- package/dist/agent-src/skills/discovery-interview/SKILL.md +2 -2
- package/dist/agent-src/skills/doc-coauthoring/SKILL.md +3 -3
- package/dist/agent-src/skills/editorial-calendar/SKILL.md +2 -2
- package/dist/agent-src/skills/error-handling-patterns/SKILL.md +9 -0
- package/dist/agent-src/skills/existing-ui-audit/SKILL.md +44 -1
- package/dist/agent-src/skills/existing-ui-audit/references/anti-slop-cross-reference.md +2 -2
- package/dist/agent-src/skills/expansion-playbook/SKILL.md +2 -2
- package/dist/agent-src/skills/experiment-loop/SKILL.md +1 -1
- package/dist/agent-src/skills/experiment-loop/references/protocol.md +1 -1
- package/dist/agent-src/skills/fe-design/SKILL.md +3 -3
- package/dist/agent-src/skills/fe-design/references/design-patterns.md +1 -1
- package/dist/agent-src/skills/fe-design/references/design-read-and-memory.md +3 -3
- package/dist/agent-src/skills/fe-design/references/source-led-port.md +1 -1
- package/dist/agent-src/skills/feature-planning/SKILL.md +1 -1
- package/dist/agent-src/skills/flux/SKILL.md +1 -1
- package/dist/agent-src/skills/forecast-accuracy/SKILL.md +2 -2
- package/dist/agent-src/skills/forecasting/SKILL.md +2 -2
- package/dist/agent-src/skills/fundraising-narrative/SKILL.md +2 -2
- package/dist/agent-src/skills/funnel-analysis/SKILL.md +2 -2
- package/dist/agent-src/skills/gtm-launch/SKILL.md +2 -2
- package/dist/agent-src/skills/hiring-loop-design/SKILL.md +1 -1
- package/dist/agent-src/skills/html-deck/SKILL.md +5 -5
- package/dist/agent-src/skills/humanizer/SKILL.md +1 -1
- package/dist/agent-src/skills/humanizer/data/patterns.md +1 -1
- package/dist/agent-src/skills/iconography/SKILL.md +3 -3
- package/dist/agent-src/skills/judge-synthesis/SKILL.md +1 -1
- package/dist/agent-src/skills/laravel-api-endpoint/SKILL.md +2 -2
- package/dist/agent-src/skills/launch-readiness/SKILL.md +3 -3
- package/dist/agent-src/skills/learning-to-rule-or-skill/SKILL.md +6 -6
- package/dist/agent-src/skills/livewire/SKILL.md +1 -1
- package/dist/agent-src/skills/market-entry-analysis/SKILL.md +1 -1
- package/dist/agent-src/skills/mcp-builder/SKILL.md +1 -1
- package/dist/agent-src/skills/memory-consolidation/SKILL.md +3 -3
- package/dist/agent-src/skills/messaging-architecture/SKILL.md +2 -2
- package/dist/agent-src/skills/monorepo-workspace/SKILL.md +1 -1
- package/dist/agent-src/skills/onboarding-design/SKILL.md +2 -2
- package/dist/agent-src/skills/onboarding-program/SKILL.md +1 -1
- package/dist/agent-src/skills/one-on-one-cadence/SKILL.md +1 -1
- package/dist/agent-src/skills/org-design/SKILL.md +1 -1
- package/dist/agent-src/skills/overbuild-review-lens/SKILL.md +3 -3
- package/dist/agent-src/skills/override-management/SKILL.md +1 -1
- package/dist/agent-src/skills/perf-feedback-craft/SKILL.md +1 -1
- package/dist/agent-src/skills/persona-writing/SKILL.md +1 -1
- package/dist/agent-src/skills/php-coder/SKILL.md +1 -1
- package/dist/agent-src/skills/pipeline-strategy/SKILL.md +2 -2
- package/dist/agent-src/skills/playwright-testing/SKILL.md +3 -3
- package/dist/agent-src/skills/po-discovery/SKILL.md +1 -1
- package/dist/agent-src/skills/positioning-strategy/SKILL.md +2 -2
- package/dist/agent-src/skills/privacy-review/SKILL.md +1 -1
- package/dist/agent-src/skills/prompt-optimizer/SKILL.md +3 -3
- package/dist/agent-src/skills/react-shadcn-ui/SKILL.md +1 -1
- package/dist/agent-src/skills/reasoning-orchestrator/SKILL.md +2 -2
- package/dist/agent-src/skills/receiving-code-review/SKILL.md +1 -1
- package/dist/agent-src/skills/refine-ticket/SKILL.md +2 -2
- package/dist/agent-src/skills/release-comms/SKILL.md +2 -2
- package/dist/agent-src/skills/retention-loops/SKILL.md +2 -2
- package/dist/agent-src/skills/review-routing/SKILL.md +2 -2
- package/dist/agent-src/skills/roadmap-management/SKILL.md +1 -1
- package/dist/agent-src/skills/roadmap-management/references/archival.md +1 -1
- package/dist/agent-src/skills/roadmap-writing/SKILL.md +5 -5
- package/dist/agent-src/skills/rule-writing/SKILL.md +6 -6
- package/dist/agent-src/skills/runway-cognition/SKILL.md +2 -2
- package/dist/agent-src/skills/scenario-modeling/SKILL.md +2 -2
- package/dist/agent-src/skills/skill-writing/SKILL.md +2 -2
- package/dist/agent-src/skills/skill-writing/references/procedure.md +1 -1
- package/dist/agent-src/skills/skill-writing/references/section-patterns.md +3 -3
- package/dist/agent-src/skills/spreadsheet-authoring/SKILL.md +1 -1
- package/dist/agent-src/skills/stakeholder-tradeoff/SKILL.md +3 -3
- package/dist/agent-src/skills/subagent-orchestration/SKILL.md +1 -1
- package/dist/agent-src/skills/supply-chain-intake/SKILL.md +1 -1
- package/dist/agent-src/skills/systematic-debugging/SKILL.md +2 -2
- package/dist/agent-src/skills/tailwind-engineer/SKILL.md +11 -5
- package/dist/agent-src/skills/throughput-vs-morale-tradeoff/SKILL.md +1 -1
- package/dist/agent-src/skills/token-optimizer/SKILL.md +1 -1
- package/dist/agent-src/skills/typography-system/SKILL.md +2 -2
- package/dist/agent-src/skills/ui-component-architect/SKILL.md +28 -8
- package/dist/agent-src/skills/unit-economics-modeling/SKILL.md +2 -2
- package/dist/agent-src/skills/upstream-contribute/SKILL.md +1 -1
- package/dist/agent-src/skills/validate-feature-fit/SKILL.md +2 -2
- package/dist/agent-src/skills/verify-repair-loop/SKILL.md +2 -2
- package/dist/agent-src/skills/vision-articulation/SKILL.md +1 -1
- package/dist/agent-src/skills/voc-extract/SKILL.md +2 -2
- package/dist/agent-src/skills/voice-and-tone-design/SKILL.md +2 -2
- package/dist/agent-src/skills/wireframe/SKILL.md +1 -1
- package/dist/agent-src/skills/workspace-link/SKILL.md +1 -1
- package/dist/agent-src/templates/agent-settings.md +6 -6
- package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
- package/dist/agent-src/templates/contexts/knowledge-pages.md +2 -3
- package/dist/agent-src/templates/copilot-instructions.md +1 -1
- package/dist/agent-src/templates/roadmaps.md +1 -1
- package/dist/agent-src/templates/scripts/README.md +2 -2
- package/dist/agent-src/user-types/_template/user-type.md +1 -1
- package/dist/cli-delegate/check_update_banner.js +12 -1
- package/dist/cli-delegate/{chunk-NLP54U3J.js → chunk-2XY7ILBT.js} +13 -1
- package/dist/cli-delegate/{chunk-IAI3XL43.js → chunk-3FKR64R5.js} +22 -6
- package/dist/cli-delegate/{chunk-J3RFNKG4.js → chunk-55ACLDUE.js} +2 -2
- package/dist/cli-delegate/{chunk-PKOBQADP.js → chunk-57PN4GYJ.js} +1 -1
- package/dist/cli-delegate/{chunk-KCNTUSPI.js → chunk-AK6HODNQ.js} +4 -4
- package/dist/cli-delegate/{chunk-2FTMENJL.js → chunk-GYC3VRYN.js} +1 -1
- package/dist/cli-delegate/{chunk-LWTYTX6F.js → chunk-H32DGUJH.js} +15 -84
- package/dist/cli-delegate/{chunk-6RJA2F5A.js → chunk-IVBPRCQO.js} +1 -1
- package/dist/cli-delegate/chunk-NUHLI2RX.js +80 -0
- package/dist/cli-delegate/{chunk-TYSY33MD.js → chunk-QJWAUMJW.js} +12 -2
- package/dist/cli-delegate/{chunk-2KKXJW25.js → chunk-S3VFXMTM.js} +1 -1
- package/dist/cli-delegate/{chunk-I6RHFQEG.js → chunk-YUM5KURG.js} +17 -1
- package/dist/cli-delegate/cmd_analyze_session.js +1 -1
- package/dist/cli-delegate/cmd_brand_status.js +1 -1
- package/dist/cli-delegate/cmd_conformance.js +834 -275
- package/dist/cli-delegate/cmd_doctor.js +3 -3
- package/dist/cli-delegate/cmd_explain.js +5 -3
- package/dist/cli-delegate/cmd_export.js +4 -4
- package/dist/cli-delegate/cmd_handoff.js +6 -6
- package/dist/cli-delegate/cmd_mcp_available.js +1 -1
- package/dist/cli-delegate/cmd_memory_get.js +1 -1
- package/dist/cli-delegate/cmd_migrate.js +2 -2
- package/dist/cli-delegate/cmd_packs_active.js +3 -2
- package/dist/cli-delegate/cmd_prune.js +4 -4
- package/dist/cli-delegate/cmd_route_audit.js +3 -3
- package/dist/cli-delegate/cmd_route_explain.js +1 -1
- package/dist/cli-delegate/cmd_session_recycle.js +3 -3
- package/dist/cli-delegate/cmd_settings_get.js +15 -9
- package/dist/cli-delegate/cmd_settings_migrate.js +4 -4
- package/dist/cli-delegate/cmd_settings_set.js +54 -11
- package/dist/cli-delegate/cmd_sync.js +4 -4
- package/dist/cli-delegate/cmd_uninstall.js +4 -4
- package/dist/cli-delegate/cmd_update.js +1 -1
- package/dist/cli-delegate/cmd_upgrade.js +1 -1
- package/dist/cli-delegate/cmd_validate.js +4 -4
- package/dist/cli-delegate/cmd_versions.js +1 -1
- package/dist/discovery/deprecation-report.md +1 -1
- package/dist/discovery/discovery-manifest.json +25 -78
- package/dist/discovery/discovery-manifest.json.sha256 +1 -1
- package/dist/discovery/discovery-manifest.summary.md +3 -3
- package/dist/discovery/dormancy-report.md +1 -1
- package/dist/discovery/orphan-report.md +1 -1
- package/dist/discovery/packs.json +5 -7
- package/dist/discovery/trust-report.md +2 -2
- package/dist/discovery/workspaces.json +4 -6
- package/dist/hooks/dispatch.js +9684 -9304
- package/dist/install/install.mjs +36 -8
- package/dist/mcp/registry-manifest.json +3 -3
- package/dist/mcp/server.json +2 -2
- package/dist/mcp/server.mjs +2147 -1470
- package/dist/router.json +1 -1
- package/dist/scripts/_lib/agent_settings.js +73 -0
- package/dist/scripts/_lib/agent_src.js +20 -0
- package/dist/scripts/_lib/guidelines_lane.js +158 -0
- package/dist/scripts/_lib/installed_lock.js +1 -1
- package/dist/scripts/condense.js +2 -5
- package/dist/server/io/yamlIO.js +175 -17
- package/dist/server/schemas/settings.js +18 -4
- package/dist/shared/settingsSurface.js +6 -1
- package/docs/contracts/settings-classes.md +18 -9
- package/docs/guidelines/abstraction-thresholds.md +35 -0
- package/docs/guidelines/agent-infra/active-remediation-mechanics.md +3 -3
- package/docs/guidelines/agent-infra/false-green.md +2 -2
- package/docs/guidelines/agent-infra/roadmap-progress-mechanics.md +1 -1
- package/docs/guidelines/agent-infra/skill-quality-checklist.md +1 -1
- package/docs/guidelines/design-fidelity-mechanics.md +4 -0
- package/docs/guidelines/design-fidelity-routing.md +78 -0
- package/docs/guidelines/design-reconciliation.md +172 -0
- package/docs/guidelines/gtm-handoff.md +2 -2
- package/docs/guidelines/wing4-handoff.md +2 -2
- package/package.json +7 -3
- package/src/config/agent-settings.template.yml +55 -8
- package/src/config/ci-local-parity.yml +34 -0
- package/src/config/continuity-surface.json +11 -32
- package/src/config/gate-coverage.yml +31 -8
- package/src/config/gate-reachability-exemptions.json +1 -0
- package/src/config/gate-violation-baselines.json +3 -3
- package/src/config/hook-token-budget.json +1 -1
- package/src/config/host-injection-effect.json +2 -2
- package/src/config/pack-size-budget.json +55 -4
- package/src/config/platform-anchor.json +47 -0
- package/src/config/preamble-payload-budget.json +12 -8
- package/src/config/preamble-payload-exceptions.json +28 -0
- package/src/config/publish-surface.json +4 -2
- package/src/config/ratification-policy.json +7 -0
- package/src/config/rule-stub-ceilings.json +16 -9
- package/src/scripts/_cli/cmd_settings_get.ts +22 -7
- package/src/scripts/_dispatch.bash +3 -1
- package/src/scripts/_lib/agent_settings.ts +85 -0
- package/src/scripts/_lib/agent_src.ts +21 -0
- package/src/scripts/_lib/artifact_maturity.ts +242 -0
- package/src/scripts/_lib/base_ref_payload.ts +315 -0
- package/src/scripts/_lib/conformance_report.ts +403 -0
- package/src/scripts/_lib/continuity_writer.ts +72 -13
- package/src/scripts/_lib/design_system_import.ts +20 -0
- package/src/scripts/_lib/design_tolerance.ts +281 -0
- package/src/scripts/_lib/dropped_decision.ts +142 -0
- package/src/scripts/_lib/guidelines_lane.ts +164 -0
- package/src/scripts/_lib/installed_lock.ts +1 -1
- package/src/scripts/_lib/measured_payload_ceiling.ts +424 -0
- package/src/scripts/_lib/obligation_frequency.ts +2 -3
- package/src/scripts/_lib/payload_catalogue_completeness.ts +211 -0
- package/src/scripts/_lib/platform_anchor.ts +1053 -0
- package/src/scripts/_lib/ratification_artifact.ts +278 -0
- package/src/scripts/_lib/release_findings_ingest.ts +324 -0
- package/src/scripts/_lib/release_tag_dispatch.ts +63 -0
- package/src/scripts/_lib/review_baseline.ts +254 -0
- package/src/scripts/_lib/review_skipped_record.ts +61 -1
- package/src/scripts/_lib/security_lint.ts +23 -2
- package/src/scripts/_lib/self_repair.ts +21 -0
- package/src/scripts/_lib/session_index_trust.ts +42 -1
- package/src/scripts/_lib/standing_bound_ratchet.ts +267 -88
- package/src/scripts/_lib/tolerance_shadow.ts +177 -0
- package/src/scripts/_lib/turn_end_refusals.ts +51 -4
- package/src/scripts/ai_council/redact_low_impact_entry.ts +8 -0
- package/src/scripts/autonomy_friction_traffic.ts +379 -0
- package/src/scripts/check_beta_review_markers.ts +35 -4
- package/src/scripts/check_finding_dispositions.ts +167 -16
- package/src/scripts/check_held_object_arrivals.ts +381 -0
- package/src/scripts/check_kernel_edit_ratified.ts +462 -0
- package/src/scripts/check_loss_class_declared.ts +793 -46
- package/src/scripts/check_platform_anchor.ts +390 -0
- package/src/scripts/check_preamble_payload_budget.ts +672 -107
- package/src/scripts/check_projected_rule_routes.ts +395 -0
- package/src/scripts/check_release_published.ts +1 -1
- package/src/scripts/check_reply_consistency.ts +86 -17
- package/src/scripts/code_graph/cli.ts +6 -0
- package/src/scripts/condense.ts +2 -6
- package/src/scripts/generate_host_cost_table.ts +354 -0
- package/src/scripts/hook_manifest.json +1 -1
- package/src/scripts/hook_manifest.yaml +74 -30
- package/src/scripts/hooks/block_kernel_rule_writes.ts +12 -2
- package/src/scripts/hooks/category_a.ts +1 -1
- package/src/scripts/hooks/chain_nudge_hook.ts +311 -25
- package/src/scripts/hooks/concern_registry.ts +2 -0
- package/src/scripts/hooks/end_review_nudge_hook.ts +101 -21
- package/src/scripts/hooks/review_baseline_hook.ts +130 -0
- package/src/scripts/hooks/session_eol_hook.ts +68 -154
- package/src/scripts/hooks/source_first_gate_hook.ts +12 -0
- package/src/scripts/hooks/turn_end_gate_hook.ts +232 -14
- package/src/scripts/hooks/ui_route_nudge_hook.ts +52 -15
- package/src/scripts/hooks_doctor.ts +4 -1
- package/src/scripts/hot_context_hook.ts +41 -401
- package/src/scripts/install.ts +1 -1
- package/src/scripts/interruption_report.ts +8 -2
- package/src/scripts/janitor.ts +8 -1
- package/src/scripts/lint_evidence_artifacts.ts +1 -0
- package/src/scripts/lint_knowledge_scale.ts +0 -26
- package/src/scripts/measure_turn_end_gate.ts +302 -5
- package/src/scripts/memory_lookup.ts +9 -9
- package/src/scripts/release.ts +52 -64
- package/src/scripts/release_drill.ts +193 -14
- package/src/scripts/release_env.ts +1 -1
- package/src/scripts/release_publication.ts +1 -1
- package/src/scripts/report_held_object_arrivals.ts +456 -0
- package/src/scripts/report_standing_payload_by_host.ts +7 -7
- package/src/scripts/session_memory_index.ts +5 -0
- package/src/scripts/sync_agent_settings.ts +394 -12
- package/src/server/io/yamlIO.ts +175 -17
- package/src/server/schemas/settings.ts +25 -5
- package/src/shared/settingsSurface.ts +13 -2
- package/src/templates/compact-instructions.md +8 -3
- package/dist/agent-src/commands/chat-history/import.md +0 -170
- package/dist/agent-src/commands/chat-history.md +0 -63
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
# The existence question — its verdict set, its cost, and why it is not TDD
|
|
2
|
+
|
|
3
|
+
Depth for [`improve-before-implement`](../../rules/improve-before-implement.md)
|
|
4
|
+
§ The solution-size ladder, migrated out of
|
|
5
|
+
[`agent-interaction-and-decision-quality`](agent-interaction-and-decision-quality.md)
|
|
6
|
+
§ 8b.
|
|
7
|
+
|
|
8
|
+
**Why it moved.** That guideline crossed `check_depth_budget`'s 16,000-character
|
|
9
|
+
ceiling when this depth landed in it, becoming a fifth over-ceiling file against
|
|
10
|
+
a baseline of four. The ratchet turns one way, so the fix is extraction rather
|
|
11
|
+
than a raised baseline — and these three sections are the natural unit: they
|
|
12
|
+
answer what the ladder RETURNS, what it costs, and which cluster it does not
|
|
13
|
+
belong to, none of which the surrounding interaction guideline needs in order to
|
|
14
|
+
be read.
|
|
15
|
+
|
|
16
|
+
The ladder itself — the rungs, the shape axis and their precedence — stays at
|
|
17
|
+
§ 8b-ladder / 8b-shape / 8b-precedence, because the rule routes there.
|
|
18
|
+
|
|
19
|
+
#### 8b-verdict. The verdict set, and what `new` owes
|
|
20
|
+
|
|
21
|
+
The ladder's answer is a **named verdict, never a yes/no**:
|
|
22
|
+
|
|
23
|
+
| verdict | meaning |
|
|
24
|
+
|---|---|
|
|
25
|
+
| `reuse` | the existing thing carries the requirement as-is |
|
|
26
|
+
| `extract` | it carries it once a shared part is pulled out |
|
|
27
|
+
| `refactor` | it carries it once reshaped, same responsibility |
|
|
28
|
+
| `extend` | it carries it with an added, non-distorting case |
|
|
29
|
+
| `migrate` | it should carry it, and the move is the work |
|
|
30
|
+
| `new` | nothing carries it, and the search that establishes that is the evidence |
|
|
31
|
+
|
|
32
|
+
**`new` owes negative evidence** — the closest existing candidate **by name and
|
|
33
|
+
path**, and why it does not carry the requirement. *"Nothing similar exists"*
|
|
34
|
+
naming no candidate is an unrun search, not an answer, and it is the shape this
|
|
35
|
+
verdict set exists to make visible.
|
|
36
|
+
|
|
37
|
+
Two clauses hold the set honest, and both cut against reading it as a ranking:
|
|
38
|
+
|
|
39
|
+
- **The order is a thinking preference, not a ranking.** A `new` after a real
|
|
40
|
+
search beats an `extend` that bends a helper out of shape. Preferring reuse is
|
|
41
|
+
not preferring reuse *at any cost*.
|
|
42
|
+
- **Textual similarity alone is never grounds for an abstraction.** Two blocks
|
|
43
|
+
that read alike and change for different reasons are two blocks — the
|
|
44
|
+
per-class bars are in [`abstraction-thresholds`](../abstraction-thresholds.md).
|
|
45
|
+
|
|
46
|
+
**Reach the verdict with the engine, not a fresh grep protocol.** `agent-config
|
|
47
|
+
code-graph query` and `code-graph affected`;
|
|
48
|
+
[`external-code-graph-interop`](../../rules/external-code-graph-interop.md)
|
|
49
|
+
already mandates query-before-grep and names grep the fallback, so a second
|
|
50
|
+
search specification here would contradict it rather than add to it.
|
|
51
|
+
|
|
52
|
+
#### 8b-cheap. Why the exclusions buy the checks and never the question
|
|
53
|
+
|
|
54
|
+
The rule excludes bug fixes, config changes, user-fenced tasks and trivial
|
|
55
|
+
changes from the **three heavy checks**. The one cheap question — *does this
|
|
56
|
+
already exist in the tree* — fires on all four rows anyway.
|
|
57
|
+
|
|
58
|
+
The reason is empirical rather than tidy: **bug fixes and renames re-add an
|
|
59
|
+
existing helper more often than features do**, because the author is inside one
|
|
60
|
+
file and reaching for something small. Switching the reuse rung off there
|
|
61
|
+
switches it off where it pays most.
|
|
62
|
+
|
|
63
|
+
Cheap means cheap, on the [`ui-audit-gate`](../../rules/ui-audit-gate.md)
|
|
64
|
+
precedent: one `code-graph query`, one named verdict, no interview.
|
|
65
|
+
|
|
66
|
+
**The skip is decidable from the diff alone** — ≤ 1 file, ≤ 5 changed lines, no
|
|
67
|
+
new symbol, no new dependency. A typo satisfies all four with no state to
|
|
68
|
+
consult; an added symbol never does.
|
|
69
|
+
|
|
70
|
+
#### 8b-routing. Why this is not routed through the TDD cluster
|
|
71
|
+
|
|
72
|
+
Two source proposals put the existence question in `/tdd`'s design mode, as the
|
|
73
|
+
one point every behaviour passes through. **It cannot live there, and the reason
|
|
74
|
+
is delivery rather than design:**
|
|
75
|
+
`src/domains/engineering-base/tdd/command.md` carries `visibility: internal` and
|
|
76
|
+
`disable-model-invocation: true`, so **a consumer cannot reach it.** The routing
|
|
77
|
+
is undeliverable, not merely unwanted.
|
|
78
|
+
|
|
79
|
+
Recorded here so the next author does not re-derive the proposal and re-propose
|
|
80
|
+
it.
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# Failure signatures — symptom → likely cause → first check
|
|
2
|
+
|
|
3
|
+
A file-first lookup the [`systematic-debugging`](../../skills/systematic-debugging/SKILL.md)
|
|
4
|
+
skill reads when a failure shows a recognisable signature. It does **not**
|
|
5
|
+
replace the 6-phase loop — it shortcuts **Phase 2 (Isolate)** by pointing at the
|
|
6
|
+
*first* check for a known shape, so you stop guessing and start with the highest-
|
|
7
|
+
probability cause.
|
|
8
|
+
|
|
9
|
+
> File-first by design (council 2026-06-15): kept as a reference table the skill
|
|
10
|
+
> reads, **not** hardcoded into the skill body — so it grows without bloating the
|
|
11
|
+
> always-loaded skill and stays one edit away from current.
|
|
12
|
+
|
|
13
|
+
## Lookup
|
|
14
|
+
|
|
15
|
+
| ID | Signature (what you see) | Likely cause | First check |
|
|
16
|
+
|---|---|---|---|
|
|
17
|
+
| `tool-loop` | **Tool/agent loop** — same tool called >2× with near-identical args, no progress | Missing stop condition; reading without acting; ambiguous state | Stop. State the hypothesis in one line. Act or ask — do not re-read. (`context-hygiene` 15/25 rule) |
|
|
18
|
+
| `rate-limited` | **HTTP 429 / "rate limit" / "quota"** | Too-frequent calls; shared quota; missing backoff | Inspect response headers (`Retry-After`, `X-RateLimit-*`); add exponential backoff; check if a loop is firing the calls |
|
|
19
|
+
| `connection-refused` | **`ECONNREFUSED` / connection refused** | Service not up; wrong host/port; container not started | Is the service running? (`docker compose ps`, health endpoint); is the port right? (`lsof -i :PORT`); is it bound to `127.0.0.1` vs `0.0.0.0`? |
|
|
20
|
+
| `path-not-found` | **`ENOENT` / "no such file or directory"** | Wrong cwd; path relative vs absolute; file not generated yet | Print the *resolved absolute* path; check cwd; confirm a prior step actually wrote the file |
|
|
21
|
+
| `hang` | **Timeout / hang** | Blocking I/O; deadlock; awaiting a condition that never holds | What is it waiting on? Add a log right before the blocking call; bound the wait; check for a missing `await`/`return` |
|
|
22
|
+
| `out-of-memory` | **`OOM` / killed (137) / heap out of memory** | Unbounded collection; loading all rows; leak in a loop | What grows per iteration? Stream/paginate instead of loading all; check `--max-old-space-size` only after finding the growth |
|
|
23
|
+
| `permission-denied` | **`EACCES` / permission denied** | Wrong file mode; running as wrong user; read-only mount | `ls -l` the target; check the process user; is the path a read-only volume? |
|
|
24
|
+
| `order-dependent-test` | **Flaky test (passes alone, fails in suite)** | Shared state; order dependence; real clock/random; unawaited async | Run the test in isolation vs in suite; look for shared fixtures, global state, `Date.now()`/random, missing `await` |
|
|
25
|
+
| `local-ci-drift` | **Works locally, fails in CI** | Env/config drift; missing service; absent secret; path/case sensitivity | Diff env (`printenv`); is the service/secret present in CI? Linux is case-sensitive — check filename casing |
|
|
26
|
+
| `race` | **Intermittent / "sometimes"** | Race; timing; network; non-deterministic order | Reproduce with condition-based waiting, not fixed sleeps (`systematic-debugging` § Condition-based waiting); log timestamps |
|
|
27
|
+
| `stale-capability-claim` | **Budget exhausted plus repeated attempts at a tool that is not available** | A capability the session claimed for itself instead of resolving — the council, a hook slot, a subagent primitive, an MCP server assumed present | Ask the live verb, not the tree: `agent-config hooks:status` for slot bindings, `agent-config routing:doctor` for per-field capability **provenance** (`registry` / `live-probe` / `default`), `agent-config council:status` for council availability. A `false` from `default` records that nobody answered, not that the host cannot |
|
|
28
|
+
|
|
29
|
+
### Naming convention for IDs
|
|
30
|
+
|
|
31
|
+
An id is a short kebab handle so a signature can be **cited by name** — the
|
|
32
|
+
first column was prose, so nothing could reference a row.
|
|
33
|
+
|
|
34
|
+
One rule governs new ids: **where a row's signature is a stable string the
|
|
35
|
+
tooling already prints, the id is that string verbatim** rather than a kebab
|
|
36
|
+
synonym. `skill_linter.ts` emits a closed set of `Issue` codes —
|
|
37
|
+
`missing_section`, `missing_conditional_section`, `invalid_execution_handler` —
|
|
38
|
+
and a row about one of those is looked up by the code the reader just saw in the
|
|
39
|
+
output. No current row is of that class; the convention is stated for the next
|
|
40
|
+
one, so the table does not accumulate two names for the same failure.
|
|
41
|
+
|
|
42
|
+
## Discrimination drills
|
|
43
|
+
|
|
44
|
+
A row's "first check" is only worth following if the documented signature is what
|
|
45
|
+
actually appears. Each drill breaks the named layer and asserts the documented
|
|
46
|
+
symptom — run it once when you doubt a row, or when adding one. They are text a
|
|
47
|
+
human runs; nothing here is a CI gate.
|
|
48
|
+
|
|
49
|
+
| ID | Drill — break this, expect that |
|
|
50
|
+
|---|---|
|
|
51
|
+
| `tool-loop` | Ask for a fact that is genuinely absent from the tree (a config key nothing defines). Expect repeated searches with shrinking variation and no edit — that shape, not an error message, is the signature. |
|
|
52
|
+
| `rate-limited` | Fire the provider's own rate limit with a tight loop against a cheap endpoint. Expect `429` **plus** `Retry-After`; a `429` with no such header is a different failure (a gateway, not the API). |
|
|
53
|
+
| `connection-refused` | Stop the service and call it (`docker compose stop <svc>`). Expect `ECONNREFUSED` immediately. If it hangs instead, the host resolves but nothing listens — that is `hang`, not this row. |
|
|
54
|
+
| `path-not-found` | Run a path-taking script from a different cwd. Expect `ENOENT` naming a path that is *almost* right — the near-miss is the tell that the path is relative, not missing. |
|
|
55
|
+
| `hang` | `await` a promise nothing resolves. Expect no output and no exit, distinguishable from `race` by being 100% reproducible. |
|
|
56
|
+
| `out-of-memory` | Accumulate rows in an array inside a loop over a large fixture. Expect the heap message and exit 137 — and note that the reported line is where allocation failed, not where the growth is. |
|
|
57
|
+
| `permission-denied` | `chmod 000` a fixture and read it. Expect `EACCES`, not `ENOENT` — confusing the two sends you looking for a missing file that is right there. |
|
|
58
|
+
| `order-dependent-test` | Add a module-level mutable to two tests in one file. Expect green alone, red in suite. Reversing the file order should move the failure — if it does not, the cause is shared *external* state, not order. |
|
|
59
|
+
| `local-ci-drift` | Rename a fixture's casing (`Foo.ts` → `foo.ts`) and import the old name. Expect green on macOS, red on Linux CI. The generalisation: anything the local filesystem is lenient about. |
|
|
60
|
+
| `race` | Replace a condition-based wait with a fixed `sleep` shorter than the operation. Expect intermittent failure whose rate moves with machine load — load-sensitivity is what separates this from `order-dependent-test`. |
|
|
61
|
+
| `stale-capability-claim` | Assert a capability without asking for it, then compare against the live verb. `agent-config routing:doctor` prints provenance per field; a field whose provenance is `default` was never established by anything — which is exactly the state a confident self-claim is indistinguishable from. |
|
|
62
|
+
|
|
63
|
+
## How to use
|
|
64
|
+
|
|
65
|
+
1. Match the symptom to a signature above.
|
|
66
|
+
2. Run the **first check** — it is the highest-probability isolation step, not a fix.
|
|
67
|
+
3. If it confirms the cause → fix + add a regression test. If not → fall back to
|
|
68
|
+
the full `systematic-debugging` loop from Phase 1.
|
|
69
|
+
|
|
70
|
+
No signature matches → this table earned nothing; debug from first principles.
|
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
# False Green — the ways a passing result can be wrong here
|
|
2
|
+
|
|
3
|
+
> Eleven failure modes, each with the detection command that distinguishes "found nothing" from "looked at nothing". Every one is drawn from this repository's own history, not from a generic checklist.
|
|
4
|
+
|
|
5
|
+
_Origin: `road-to-skill-ecosystem-gate-integrity` Phase 3. The recurring shape is not that a gate reports a wrong finding — it is that a gate reports **no** finding for a reason unrelated to the property it guards, and no output distinguishes the two cases._
|
|
6
|
+
|
|
7
|
+
## The catalogue
|
|
8
|
+
|
|
9
|
+
### 1. Dead scan root
|
|
10
|
+
|
|
11
|
+
The gate walks a directory that moved or was deleted. Zero units, zero findings,
|
|
12
|
+
exit 0, green checkmark. Fourteen gates in this tree were in this state
|
|
13
|
+
simultaneously after a container move; their own output said `0 file(s) scanned`
|
|
14
|
+
and nothing asserted on the number.
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
./scripts-run src/scripts/<gate> | grep -E '^scanned: ' # 0, or absent entirely
|
|
18
|
+
./scripts-run src/scripts/sweep_dead_scan_roots
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
**Structural fix:** `assertScanned` from `_lib/scan_scope.ts`. A gate that read
|
|
22
|
+
nothing has not passed.
|
|
23
|
+
|
|
24
|
+
### 2. Planned-but-never-judged targets
|
|
25
|
+
|
|
26
|
+
The root is alive and the corpus is real, but the loop `continue`s past most of
|
|
27
|
+
it on unwritten conditions. The published count says "enumerated", the reader
|
|
28
|
+
hears "checked". `lint_framework_leakage` published 438 while judging 368.
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
./scripts-run src/scripts/<gate> | grep 'ledger:' # scanned=N planned=M — compare N and M
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
**Structural fix:** `_lib/gate_ledger.ts`. Every planned target reaches exactly
|
|
35
|
+
one terminal outcome, and the skip codes are counted per reason.
|
|
36
|
+
|
|
37
|
+
### 3. Allowlist growth
|
|
38
|
+
|
|
39
|
+
The gate is honest, the corpus is real, and the finding was suppressed. Count-
|
|
40
|
+
based ratchets cannot see swap-one-out-add-one-in: remove a real entry, add a
|
|
41
|
+
fresh suppression, the number is identical and the estate moved backwards.
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
./scripts-run src/scripts/check_suppression_hygiene # entry SETS vs the base ref
|
|
45
|
+
git diff origin/main -- 'src/scripts/*allowlist*.json' 'src/config/*baselines*.json'
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
**Structural fix:** `_lib/ratchet_base_ref.ts` — compare entry sets against
|
|
49
|
+
`git show <baseRef>:<path>`, the one reading of the baseline the change under
|
|
50
|
+
review cannot rewrite.
|
|
51
|
+
|
|
52
|
+
### 4. Ratchet-entry deletion
|
|
53
|
+
|
|
54
|
+
Subtler than growth: deleting a baseline entry whose `count` is 0 is **weaker**
|
|
55
|
+
than leaving it, because the absence of an entry means "unbaselined" and an
|
|
56
|
+
unbaselined gate's `ok` flips to `actual === 0` with no recorded intent. Harden
|
|
57
|
+
first, then delete, and pin the absence.
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
git diff origin/main -- src/config/gate-violation-baselines.json | grep '^-'
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### 5. Threshold re-anchoring
|
|
64
|
+
|
|
65
|
+
The gate still runs, the corpus is real, and the bar moved. A lowered floor and
|
|
66
|
+
a genuine improvement look identical in the exit code.
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
git diff origin/main -- src/config/gate-coverage.yml | grep -E '^[-+].*min_scanned'
|
|
70
|
+
git diff origin/main -- 'src/config/*budget*.json'
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
**Discriminator:** a legitimate ratchet lowers *severity* while keeping *reach*;
|
|
74
|
+
threshold-lowering reduces reach. Ask which one the diff does.
|
|
75
|
+
|
|
76
|
+
### 6. Suppression sweep
|
|
77
|
+
|
|
78
|
+
Not one entry — twenty. Allowlist growth past ~20 entries in a session is the
|
|
79
|
+
signal that the linter (or the content) is wrong, not that the list is short by
|
|
80
|
+
twenty. The tool-call guard blocks past that count; the honest response is to
|
|
81
|
+
fix the gate's shape.
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
./scripts-run src/scripts/check_suppression_hygiene | grep 'entry(ies)'
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### 7. Crashed gate read as passing gate
|
|
88
|
+
|
|
89
|
+
A gate that throws is not a gate that passed, but an aggregator that only
|
|
90
|
+
inspects exit codes cannot tell an exception from a clean run when the harness
|
|
91
|
+
swallows it. Three of this repository's recorded traps are estate invalidation
|
|
92
|
+
misreported as a per-gate red, or the reverse.
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
./scripts-run src/scripts/<gate>; echo "EXIT=$?" # capture BEFORE any $( )
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
**Structural fix:** capture `EXIT=$?` on the line immediately after the command,
|
|
99
|
+
never after a command substitution; and fail closed when a registered gate
|
|
100
|
+
reports a null or missing verdict.
|
|
101
|
+
|
|
102
|
+
### 8. A derived page reporting an unmeasured dimension
|
|
103
|
+
|
|
104
|
+
The generator has no data for a category and renders a `0`, or worse a computed
|
|
105
|
+
share, which reads as a measurement. The always-budget report printed `60.1%`
|
|
106
|
+
for a dimension it counted **zero** artefacts in.
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
./scripts-run src/scripts/check_derived_page_truthfulness # where present
|
|
110
|
+
grep -rn '0%\|0 of 0' docs/*.md
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
**Structural fix:** an unmeasured category renders as absent or explicitly
|
|
114
|
+
"not measured" — never as a zero and never as a share.
|
|
115
|
+
|
|
116
|
+
### 9. Equality without validity
|
|
117
|
+
|
|
118
|
+
Two things are compared and found equal — because neither exists. `diff a b`
|
|
119
|
+
over two absent files returns equal; two empty lists both serialize to `[]`; an
|
|
120
|
+
empty rendered template equals an absent target file. The gate reports
|
|
121
|
+
"in sync" having compared nothing.
|
|
122
|
+
|
|
123
|
+
```bash
|
|
124
|
+
./scripts-run src/scripts/<gate> # then delete ONE side and re-run
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
**Structural fix:** assert both sides exist and are well-formed BEFORE
|
|
128
|
+
comparing. Two absences are the absence of a comparison, not the presence of a
|
|
129
|
+
match. The estate-wide audit is below.
|
|
130
|
+
|
|
131
|
+
### 10. Hook-bypass override
|
|
132
|
+
|
|
133
|
+
The gate never ran because the hook that runs it was disabled for that
|
|
134
|
+
invocation. `git commit --no-verify` (and its short `-n` form) skips every
|
|
135
|
+
pre-commit hook; `core.hooksPath` repointed at an empty directory skips them
|
|
136
|
+
permanently and silently. Both produce a commit that looks exactly like a
|
|
137
|
+
commit whose hooks passed. The same shape reaches the runtime hook layer: a
|
|
138
|
+
concern bound in the manifest is still inert on a host that does not honour a
|
|
139
|
+
deny, so "the guard is registered" is not "the guard fired".
|
|
140
|
+
|
|
141
|
+
<!-- example-fence-allow: git-no-verify -- the fence teaches how to DETECT the core.hooksPath bypass; the forbidden form has to appear for the diagnostic to be readable, and every line here is a read-only query -->
|
|
142
|
+
```bash
|
|
143
|
+
git config --get core.hooksPath # empty = repo default, good
|
|
144
|
+
./scripts-run src/scripts/hooks/block_no_verify --help # the tool-call guard
|
|
145
|
+
agent-config hooks:status # per-host bindings, not the manifest
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
**Structural fix:** the bypass is blocked at tool-call time by
|
|
149
|
+
`block-no-verify` on the one host that honours a deny, and the authoritative
|
|
150
|
+
gate is remote CI, which no local override can skip. Never read a local green
|
|
151
|
+
as evidence when the hook path was overridden — re-run in CI, or run the gate
|
|
152
|
+
directly rather than through the hook.
|
|
153
|
+
|
|
154
|
+
### 11. Cached-green reuse
|
|
155
|
+
|
|
156
|
+
The green belongs to a different input than the one being judged. Three real
|
|
157
|
+
shapes here. A gate that reads `dist/agent-src/` passes against a **stale
|
|
158
|
+
projection** while the `src/` change it was meant to judge is not in the tree it
|
|
159
|
+
scanned — the recorded trap is a worktree whose stale `dist` faked generator
|
|
160
|
+
drift, and its mirror, a golden capture reading `dist` where the assertion was
|
|
161
|
+
about `src`. A count ratchet sits inside its limit for so long that "within
|
|
162
|
+
budget" stops meaning anything, which is why a baseline carries an expiry at
|
|
163
|
+
all. And the conversational form: trusting a verification run earlier in the
|
|
164
|
+
same session, after the tree has moved underneath it.
|
|
165
|
+
|
|
166
|
+
```bash
|
|
167
|
+
bash src/scripts/condense.sh --changed # dist != rewrite(src) => the scan root is stale
|
|
168
|
+
./scripts-run src/scripts/check_condensation --summary # byte-exactness dist vs rewrite(src)
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
**Structural fix:** regenerate before judging — this repository's `sync` task
|
|
172
|
+
then its `generate-tools` task, in that order — and treat a baseline unchanged past
|
|
173
|
+
`STALE_AFTER_DAYS` (56, `_lib/gate_baseline.ts:39`) as suppression rather than
|
|
174
|
+
as headroom. A completion claim rests on a run made **after** the last edit, not
|
|
175
|
+
on the freshest run you happen to remember.
|
|
176
|
+
|
|
177
|
+
## The audited sync/parity gates
|
|
178
|
+
|
|
179
|
+
Comparison-shaped gates carry entry #9's failure mode by default: `diff a b`
|
|
180
|
+
where neither side exists returns **equal**. Audited 2026-08-05 across
|
|
181
|
+
`src/scripts/` — **27 comparison gates, 19 guarded, 8 vulnerable, 0 undecided.**
|
|
182
|
+
|
|
183
|
+
A gate is GUARDED when it asserts both sides exist and are well-formed *before*
|
|
184
|
+
comparing — in this tree, almost always via `assertScanned` /
|
|
185
|
+
`assertWatchlistResolves` from `_lib/scan_scope.ts`.
|
|
186
|
+
|
|
187
|
+
### Guarded (19)
|
|
188
|
+
|
|
189
|
+
`check_release_surface_equality` · `check_trunk_drift` · `lint_glama_drift` ·
|
|
190
|
+
`check_ci_strict_superset` · `check_condensation` · `check_artefact_checksums` ·
|
|
191
|
+
`check_bridge_derivation` · `check_discovery_determinism` ·
|
|
192
|
+
`check_cli_registry_budget_sync` · `check_template_pin_drift` ·
|
|
193
|
+
`check_gitignore_freshness` · `check_token_optimizer_freshness` ·
|
|
194
|
+
`lint_eval_freshness` · `lint_behavioural_eval_freshness` ·
|
|
195
|
+
`check_release_trunk_sync` · `sync_gitattributes` · `sync_gitignore` ·
|
|
196
|
+
`iron_law_sha` · `check_test_coverage_diff`
|
|
197
|
+
|
|
198
|
+
Two carry caveats worth knowing: `check_template_pin_drift` has an
|
|
199
|
+
`--allow-empty` opt-in that is a deliberate empty-side pass, and
|
|
200
|
+
`check_test_coverage_diff` is guarded but warn-only, so its guard is currently
|
|
201
|
+
inert.
|
|
202
|
+
|
|
203
|
+
### Vulnerable (8) — shrink-only from here
|
|
204
|
+
|
|
205
|
+
| Gate | The both-absent / both-empty path |
|
|
206
|
+
|---|---|
|
|
207
|
+
| ~~`verify_physical_move`~~ | **FIXED in this change.** `_diff_manifest(null, null)` returned `[]`, and an empty issue list means clean. |
|
|
208
|
+
| `check_ci_local_parity` | a missing workflow dir reads as `''` and a missing taskfile is skipped; two empty corpora ⇒ no delta ⇒ exit 0 |
|
|
209
|
+
| `mcp_parity_smoke` | two empty lists both serialize to `[]`; prints "0 entries match" and returns 0 |
|
|
210
|
+
| `probe_projection_fidelity` | a fixture that loses its `entries:` key yields 0 checks and `fail=0` |
|
|
211
|
+
| `sync_agent_settings` | empty template + absent target ⇒ `'' === ''` ⇒ "already in sync" under `--check` |
|
|
212
|
+
| `sync_github_metadata` | two empty topic lists ⇒ no drift ⇒ exit 0 **even under `--strict`** |
|
|
213
|
+
| `check_kernel_prefix_stability` | deleting the committed snapshot returns `'warmup'` ⇒ exit 0 |
|
|
214
|
+
| `bench_drift_check` | fewer than 2 reports ⇒ "no drift gate yet" ⇒ exit 0 |
|
|
215
|
+
|
|
216
|
+
The seven open rows are recorded rather than swept: fixing release, sync, and
|
|
217
|
+
bench gates in one change would be a large diff across surfaces this change does
|
|
218
|
+
not otherwise touch, which is the unreviewable-batch failure the authoring
|
|
219
|
+
guideline warns about. The fixed row shows the pattern — assert both sides
|
|
220
|
+
exist, and treat two absences as the absence of a comparison.
|
|
221
|
+
|
|
222
|
+
## The ease tripwire
|
|
223
|
+
|
|
224
|
+
A verification that was **far easier than expected** is a signal to check the
|
|
225
|
+
path, not a signal of success. Every entry above felt like a pass at the moment
|
|
226
|
+
it happened. When a gate you expected to fight goes green on the first run, run
|
|
227
|
+
one of the detection commands before believing it.
|
|
228
|
+
|
|
229
|
+
## See also
|
|
230
|
+
|
|
231
|
+
- [`gate-authoring.md`](gate-authoring.md) — the authoring path that prevents these at the source.
|
|
232
|
+
- `docs/contracts/ci-green-floor.md` § CI delta — what a local pass does and does not cover.
|
|
233
|
+
- `src/scripts/_lib/gate_ledger.ts`, `_lib/scan_scope.ts`, `_lib/ratchet_base_ref.ts` — the three structural fixes above.
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
# First-Principles Thinking
|
|
2
|
+
|
|
3
|
+
Reference guideline for Wing-1 deep-thinking work — strip away
|
|
4
|
+
assumptions and conventions to reach fundamental truths, then rebuild
|
|
5
|
+
understanding from the ground up. Distinct from `inversion-thinking`
|
|
6
|
+
(which negates the goal) — first principles **dissolve** the goal into
|
|
7
|
+
verified primitives and reconstruct it without inherited convention.
|
|
8
|
+
Adopted under the **Reference-Guideline Sunset Policy** and
|
|
9
|
+
cross-referenced from:
|
|
10
|
+
|
|
11
|
+
- [`deep-reading-analyst`](../../skills/deep-reading-analyst/SKILL.md)
|
|
12
|
+
— L3 Deep analysis depth.
|
|
13
|
+
- [`mental-models`](mental-models.md) — Munger's lattice; first
|
|
14
|
+
principles is the foundational physics-style lens.
|
|
15
|
+
- [`improve-before-implement`](../../rules/improve-before-implement.md)
|
|
16
|
+
— challenge the framing of a request before coding it.
|
|
17
|
+
- [`inversion-thinking`](inversion-thinking.md) — pair: first
|
|
18
|
+
principles rebuilds; inversion stress-tests the rebuild.
|
|
19
|
+
|
|
20
|
+
> **Core principle:** "What is definitely, provably true?" — strip
|
|
21
|
+
> the inherited and rebuild from primitives.
|
|
22
|
+
|
|
23
|
+
## Three-Step Process
|
|
24
|
+
|
|
25
|
+
### Step 1: Identify assumptions
|
|
26
|
+
|
|
27
|
+
**Ask:** *"What do we assume to be true about this?"*
|
|
28
|
+
|
|
29
|
+
List all implicit and explicit assumptions in the content:
|
|
30
|
+
|
|
31
|
+
- Unstated premises.
|
|
32
|
+
- Inherited wisdom (*"everyone knows…"*).
|
|
33
|
+
- Industry conventions.
|
|
34
|
+
- Historical precedents treated as universal laws.
|
|
35
|
+
|
|
36
|
+
**Example from business:**
|
|
37
|
+
|
|
38
|
+
- Assumption: *"We need a physical store to sell products."*
|
|
39
|
+
- Question: is this fundamentally true or historically convenient?
|
|
40
|
+
|
|
41
|
+
### Step 2: Break down to fundamentals
|
|
42
|
+
|
|
43
|
+
**Ask:** *"What is definitely, provably true?"*
|
|
44
|
+
|
|
45
|
+
Reduce to indisputable facts:
|
|
46
|
+
|
|
47
|
+
- Physical laws (if applicable).
|
|
48
|
+
- Mathematical truths.
|
|
49
|
+
- Core human needs / behaviors.
|
|
50
|
+
- Cause-effect relationships you can verify.
|
|
51
|
+
|
|
52
|
+
**Sorting Framework:**
|
|
53
|
+
|
|
54
|
+
```
|
|
55
|
+
Claim → Ask: "How do I know this is true?"
|
|
56
|
+
↓
|
|
57
|
+
├─ "It just is" → Probably an assumption, dig deeper
|
|
58
|
+
├─ "That's how it's always done" → Convention, not fundamental
|
|
59
|
+
├─ "X happens, then Y happens" → Potential fundamental (verify causation)
|
|
60
|
+
└─ "Mathematically/physically must be true" → Fundamental
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### Step 3: Rebuild from scratch
|
|
64
|
+
|
|
65
|
+
**Ask:** *"Starting from fundamentals only, what logically follows?"*
|
|
66
|
+
|
|
67
|
+
Reconstruct without importing old assumptions:
|
|
68
|
+
|
|
69
|
+
1. Begin with verified fundamentals.
|
|
70
|
+
2. Each step must logically follow from previous.
|
|
71
|
+
3. Note where you make new assumptions (be explicit).
|
|
72
|
+
4. Compare new construction to original concept.
|
|
73
|
+
|
|
74
|
+
## Application Template
|
|
75
|
+
|
|
76
|
+
```markdown
|
|
77
|
+
## Original Concept / Argument
|
|
78
|
+
[What the author claims]
|
|
79
|
+
|
|
80
|
+
## Hidden Assumptions
|
|
81
|
+
- Assumption 1: [Something taken as given]
|
|
82
|
+
- Assumption 2: [...]
|
|
83
|
+
|
|
84
|
+
## Verified Fundamentals
|
|
85
|
+
- Fundamental 1: [Provably true core fact]
|
|
86
|
+
- Fundamental 2: [...]
|
|
87
|
+
|
|
88
|
+
## Rebuilt Understanding
|
|
89
|
+
Starting from fundamentals only:
|
|
90
|
+
Step 1: [First logical derivation]
|
|
91
|
+
Step 2: [Second logical derivation]
|
|
92
|
+
...
|
|
93
|
+
Conclusion: [What actually follows]
|
|
94
|
+
|
|
95
|
+
## Comparison
|
|
96
|
+
Original vs. rebuilt:
|
|
97
|
+
- What survived: [Fundamentally sound ideas]
|
|
98
|
+
- What doesn't hold: [Based on questionable assumptions]
|
|
99
|
+
- New insights: [What rebuilding revealed]
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
## Common First Principles by Domain
|
|
104
|
+
|
|
105
|
+
### Business / economics
|
|
106
|
+
|
|
107
|
+
- People act in self-interest (with caveats).
|
|
108
|
+
- Supply and demand affect price.
|
|
109
|
+
- Value = willingness to pay.
|
|
110
|
+
- Scarcity creates value.
|
|
111
|
+
|
|
112
|
+
### Psychology / human behavior
|
|
113
|
+
|
|
114
|
+
- Humans seek pleasure, avoid pain.
|
|
115
|
+
- Social status matters to humans.
|
|
116
|
+
- Cognitive biases exist (not "people are rational").
|
|
117
|
+
- Habits form through repetition.
|
|
118
|
+
|
|
119
|
+
### Technology
|
|
120
|
+
|
|
121
|
+
- Information can be copied at near-zero cost.
|
|
122
|
+
- Network effects: value ∝ n² (Metcalfe's law).
|
|
123
|
+
- Moore's law (transistor density doubles ~every 2 years).
|
|
124
|
+
- Computation has energy cost.
|
|
125
|
+
|
|
126
|
+
### Physics / reality
|
|
127
|
+
|
|
128
|
+
- Energy is conserved.
|
|
129
|
+
- Entropy increases.
|
|
130
|
+
- Speed of light is constant.
|
|
131
|
+
- Cause precedes effect.
|
|
132
|
+
|
|
133
|
+
## Red Flags: Pseudo-First-Principles
|
|
134
|
+
|
|
135
|
+
Watch for claims disguised as fundamentals:
|
|
136
|
+
|
|
137
|
+
- *"People always prefer X"* (overgeneralization).
|
|
138
|
+
- *"This is just human nature"* (often cultural).
|
|
139
|
+
- *"Economics proves…"* (many schools of economics).
|
|
140
|
+
- *"Science says…"* (which study? replicated?).
|
|
141
|
+
|
|
142
|
+
**Test:** can you point to specific evidence / mechanism, or is it
|
|
143
|
+
folk wisdom?
|
|
144
|
+
|
|
145
|
+
## Powerful Questions
|
|
146
|
+
|
|
147
|
+
- *"Why is this true?"* (repeat 5 times — "5 Whys").
|
|
148
|
+
- *"What must be true for this to work?"*
|
|
149
|
+
- *"If I couldn't do it this way, what's another path?"*
|
|
150
|
+
- *"What would an alien with no context think?"*
|
|
151
|
+
- *"What if the opposite were true?"*
|
|
152
|
+
|
|
153
|
+
## Worked Example — *"Need for College Education"*
|
|
154
|
+
|
|
155
|
+
**Assumptions:**
|
|
156
|
+
|
|
157
|
+
- Need degree to get good job.
|
|
158
|
+
- Learning requires formal institution.
|
|
159
|
+
- 18–22 is the right age.
|
|
160
|
+
- Four years is optimal duration.
|
|
161
|
+
|
|
162
|
+
**Fundamentals:**
|
|
163
|
+
|
|
164
|
+
- Employers want skilled workers.
|
|
165
|
+
- Skills can be demonstrated.
|
|
166
|
+
- Learning requires time + practice.
|
|
167
|
+
- Knowledge can be transmitted.
|
|
168
|
+
|
|
169
|
+
**Rebuilt:**
|
|
170
|
+
|
|
171
|
+
- → Employers want proof of skill.
|
|
172
|
+
- → Proof can be: degree OR portfolio OR test OR track record.
|
|
173
|
+
- → Therefore, degree is one option, not necessity.
|
|
174
|
+
- → Insight: focus on skill + proof, not credential alone.
|
|
175
|
+
|
|
176
|
+
## Practical Use in Reading
|
|
177
|
+
|
|
178
|
+
When analyzing content:
|
|
179
|
+
|
|
180
|
+
1. **Identify claims** that seem absolute.
|
|
181
|
+
2. **Challenge foundations:** *"Does this HAVE to be true?"*
|
|
182
|
+
3. **Verify causation:** *"Does A truly cause B, or just correlate?"*
|
|
183
|
+
4. **Rebuild the argument** from indisputable facts only.
|
|
184
|
+
5. **Compare** what survives vs. what was assumption.
|
|
185
|
+
|
|
186
|
+
This exposes weak arguments and strengthens valid ones.
|
|
187
|
+
|
|
188
|
+
---
|
|
189
|
+
|
|
190
|
+
## ADOPT citation
|
|
191
|
+
|
|
192
|
+
Adapted from an external reference.
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# Framework Neutrality — Patterns
|
|
2
|
+
|
|
3
|
+
> Forbidden-pattern table, cross-stack documentation allowance, and carve-out pointer shape for the `framework-neutrality-in-generic-skills` rule
|
|
4
|
+
|
|
5
|
+
_Origin: migrated from `src/rules/framework-neutrality-in-generic-skills.md` per the P4 pattern of `road-to-kernel-and-router.md`. The Iron Law, scope, and exemption list stay in the rule; this file carries the pattern reference._
|
|
6
|
+
|
|
7
|
+
## Forbidden patterns in generic artifacts
|
|
8
|
+
|
|
9
|
+
| Pattern | Why it leaks | Fix |
|
|
10
|
+
|---|---|---|
|
|
11
|
+
| `FormRequest` as a mandate | Laravel-only validation class | Say "request-validation primitive (FormRequest in Laravel, zod in Next.js, pydantic in FastAPI)" or move to `laravel-validation` carve-out |
|
|
12
|
+
| `php artisan …` as a canonical command | Laravel CLI | Generalize to "the framework's CLI" or move to `artisan-commands` carve-out |
|
|
13
|
+
| `PHPStan` as the only example | PHP-only static analyser | List peers (`mypy` for Python, `tsc` for TypeScript) or move to `quality-tools` carve-out |
|
|
14
|
+
| `composer.json` mentioned alone | PHP package manifest | Add `package.json` / `pyproject.toml` peers, or move to a PHP-scoped carve-out |
|
|
15
|
+
| `Eloquent` / `Model::…` | Laravel ORM | Generalize to "the project's ORM/data layer" or move to `eloquent` carve-out |
|
|
16
|
+
| `Pest` as the only test runner | PHP/Laravel test framework | List peers (`pytest`, `vitest`, `jest`) or move to `pest-testing` carve-out |
|
|
17
|
+
| `Blade` / `Livewire` / `Flux` as default UI | Laravel view stack | Generalize to "the project's UI layer" or move to `blade-ui` / `livewire` / `flux` carve-outs |
|
|
18
|
+
| `vendor/bin/<tool>` as a canonical path | PHP/Composer-specific binary path | Say "the project's quality CLI" or carve-out it |
|
|
19
|
+
| `Rector` as the only refactor tool | PHP-only refactorer | List peers (`ts-morph`, `libcst`) or carve-out it |
|
|
20
|
+
| "every controller" / "all controllers" | Assumes MVC PHP framework | Generalize to "every request handler" / "every endpoint" |
|
|
21
|
+
|
|
22
|
+
## Allowed: cross-stack documentation
|
|
23
|
+
|
|
24
|
+
Multi-stack tables or detection maps with **at least two ecosystems
|
|
25
|
+
side-by-side** are documentation, not leakage. The linter's
|
|
26
|
+
auto-detect heuristic skips a hit when its ±2-line window contains
|
|
27
|
+
patterns from a different ecosystem family (`php_family` vs
|
|
28
|
+
`js_family` vs `python_family`).
|
|
29
|
+
|
|
30
|
+
Example (allowed):
|
|
31
|
+
|
|
32
|
+
```
|
|
33
|
+
- PHP/Composer project → `composer.json` present
|
|
34
|
+
- Node project → `package.json` present
|
|
35
|
+
- Python project → `pyproject.toml` present
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Allowed: carve-out pointers
|
|
39
|
+
|
|
40
|
+
A generic artifact may end a section with a one-line handoff to its
|
|
41
|
+
framework-specific peers. Canonical shape:
|
|
42
|
+
|
|
43
|
+
```
|
|
44
|
+
→ Laravel-specific: see [laravel-validation](../../skills/laravel-validation/SKILL.md)
|
|
45
|
+
→ Next.js-specific: see [nextjs-patterns](../../skills/nextjs-patterns/SKILL.md)
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
The pointer is a link, not a procedure — the generic artifact never
|
|
49
|
+
inlines stack-specific code.
|
|
50
|
+
|
|
51
|
+
## Enforcement
|
|
52
|
+
|
|
53
|
+
`scripts/lint_framework_leakage.ts` runs in the package CI pipeline.
|
|
54
|
+
Exit codes:
|
|
55
|
+
|
|
56
|
+
- `0` — no hits, or every hit is auto-detected as cross-stack, or
|
|
57
|
+
every hit is allowlisted in
|
|
58
|
+
`scripts/lint_framework_leakage_allowlist.json` with a `reason`.
|
|
59
|
+
- `1` — at least one hit in a generic artifact (non-carve-out) that
|
|
60
|
+
is neither cross-stack nor allowlisted.
|
|
61
|
+
|
|
62
|
+
## See also
|
|
63
|
+
|
|
64
|
+
- `framework-neutrality-in-generic-skills` (rule) — Iron Law, scope, exemption list.
|
|
65
|
+
- `roadmap-ci-steps-policy` — sibling Tier-2a rule that drove this pattern.
|
|
66
|
+
- `skill-quality` — every skill must remain executable; carve-outs must still pass skill-quality.
|