@ahmed-g-gad/apothem 0.1.1
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/CHANGELOG.md +60 -0
- package/LICENSE +21 -0
- package/LICENSES/MIT.txt +18 -0
- package/LICENSES/PSF-2.0.txt +47 -0
- package/README.md +549 -0
- package/bin/README.md +37 -0
- package/bin/apothem.mjs +78 -0
- package/package.json +75 -0
- package/pyproject.toml +347 -0
- package/src/apothem/README.md +52 -0
- package/src/apothem/__init__.py +66 -0
- package/src/apothem/__main__.py +28 -0
- package/src/apothem/_vendor/.keep +0 -0
- package/src/apothem/_vendor/__init__.py +25 -0
- package/src/apothem/_vendor/attr/__init__.py +104 -0
- package/src/apothem/_vendor/attr/__init__.pyi +389 -0
- package/src/apothem/_vendor/attr/_cmp.py +160 -0
- package/src/apothem/_vendor/attr/_cmp.pyi +13 -0
- package/src/apothem/_vendor/attr/_compat.py +99 -0
- package/src/apothem/_vendor/attr/_config.py +31 -0
- package/src/apothem/_vendor/attr/_funcs.py +497 -0
- package/src/apothem/_vendor/attr/_make.py +3406 -0
- package/src/apothem/_vendor/attr/_next_gen.py +674 -0
- package/src/apothem/_vendor/attr/_typing_compat.pyi +15 -0
- package/src/apothem/_vendor/attr/_version_info.py +89 -0
- package/src/apothem/_vendor/attr/_version_info.pyi +9 -0
- package/src/apothem/_vendor/attr/converters.py +162 -0
- package/src/apothem/_vendor/attr/converters.pyi +19 -0
- package/src/apothem/_vendor/attr/exceptions.py +95 -0
- package/src/apothem/_vendor/attr/exceptions.pyi +17 -0
- package/src/apothem/_vendor/attr/filters.py +72 -0
- package/src/apothem/_vendor/attr/filters.pyi +6 -0
- package/src/apothem/_vendor/attr/py.typed +0 -0
- package/src/apothem/_vendor/attr/setters.py +79 -0
- package/src/apothem/_vendor/attr/setters.pyi +20 -0
- package/src/apothem/_vendor/attr/validators.py +750 -0
- package/src/apothem/_vendor/attr/validators.pyi +140 -0
- package/src/apothem/_vendor/attr.LICENSE +21 -0
- package/src/apothem/_vendor/attrs/__init__.py +72 -0
- package/src/apothem/_vendor/attrs/__init__.pyi +314 -0
- package/src/apothem/_vendor/attrs/converters.py +3 -0
- package/src/apothem/_vendor/attrs/exceptions.py +3 -0
- package/src/apothem/_vendor/attrs/filters.py +3 -0
- package/src/apothem/_vendor/attrs/py.typed +0 -0
- package/src/apothem/_vendor/attrs/setters.py +3 -0
- package/src/apothem/_vendor/attrs/validators.py +3 -0
- package/src/apothem/_vendor/attrs.LICENSE +21 -0
- package/src/apothem/_vendor/jsonschema/__init__.py +120 -0
- package/src/apothem/_vendor/jsonschema/__main__.py +6 -0
- package/src/apothem/_vendor/jsonschema/_format.py +546 -0
- package/src/apothem/_vendor/jsonschema/_keywords.py +449 -0
- package/src/apothem/_vendor/jsonschema/_legacy_keywords.py +449 -0
- package/src/apothem/_vendor/jsonschema/_types.py +204 -0
- package/src/apothem/_vendor/jsonschema/_typing.py +29 -0
- package/src/apothem/_vendor/jsonschema/_utils.py +355 -0
- package/src/apothem/_vendor/jsonschema/benchmarks/__init__.py +5 -0
- package/src/apothem/_vendor/jsonschema/benchmarks/const_vs_enum.py +30 -0
- package/src/apothem/_vendor/jsonschema/benchmarks/contains.py +28 -0
- package/src/apothem/_vendor/jsonschema/benchmarks/import_benchmark.py +31 -0
- package/src/apothem/_vendor/jsonschema/benchmarks/issue232/issue.json +2653 -0
- package/src/apothem/_vendor/jsonschema/benchmarks/issue232.py +25 -0
- package/src/apothem/_vendor/jsonschema/benchmarks/json_schema_test_suite.py +12 -0
- package/src/apothem/_vendor/jsonschema/benchmarks/nested_schemas.py +56 -0
- package/src/apothem/_vendor/jsonschema/benchmarks/subcomponents.py +42 -0
- package/src/apothem/_vendor/jsonschema/benchmarks/unused_registry.py +35 -0
- package/src/apothem/_vendor/jsonschema/benchmarks/useless_applicator_schemas.py +106 -0
- package/src/apothem/_vendor/jsonschema/benchmarks/useless_keywords.py +32 -0
- package/src/apothem/_vendor/jsonschema/benchmarks/validator_creation.py +14 -0
- package/src/apothem/_vendor/jsonschema/cli.py +292 -0
- package/src/apothem/_vendor/jsonschema/exceptions.py +490 -0
- package/src/apothem/_vendor/jsonschema/protocols.py +230 -0
- package/src/apothem/_vendor/jsonschema/validators.py +1410 -0
- package/src/apothem/_vendor/jsonschema.LICENSE +19 -0
- package/src/apothem/_vendor/jsonschema_specifications/__init__.py +12 -0
- package/src/apothem/_vendor/jsonschema_specifications/_core.py +38 -0
- package/src/apothem/_vendor/jsonschema_specifications/schemas/draft201909/metaschema.json +42 -0
- package/src/apothem/_vendor/jsonschema_specifications/schemas/draft201909/vocabularies/applicator +56 -0
- package/src/apothem/_vendor/jsonschema_specifications/schemas/draft201909/vocabularies/content +17 -0
- package/src/apothem/_vendor/jsonschema_specifications/schemas/draft201909/vocabularies/core +57 -0
- package/src/apothem/_vendor/jsonschema_specifications/schemas/draft201909/vocabularies/format +14 -0
- package/src/apothem/_vendor/jsonschema_specifications/schemas/draft201909/vocabularies/meta-data +37 -0
- package/src/apothem/_vendor/jsonschema_specifications/schemas/draft201909/vocabularies/validation +98 -0
- package/src/apothem/_vendor/jsonschema_specifications/schemas/draft202012/metaschema.json +58 -0
- package/src/apothem/_vendor/jsonschema_specifications/schemas/draft202012/vocabularies/applicator +48 -0
- package/src/apothem/_vendor/jsonschema_specifications/schemas/draft202012/vocabularies/content +17 -0
- package/src/apothem/_vendor/jsonschema_specifications/schemas/draft202012/vocabularies/core +51 -0
- package/src/apothem/_vendor/jsonschema_specifications/schemas/draft202012/vocabularies/format-annotation +14 -0
- package/src/apothem/_vendor/jsonschema_specifications/schemas/draft202012/vocabularies/format-assertion +14 -0
- package/src/apothem/_vendor/jsonschema_specifications/schemas/draft202012/vocabularies/meta-data +37 -0
- package/src/apothem/_vendor/jsonschema_specifications/schemas/draft202012/vocabularies/unevaluated +15 -0
- package/src/apothem/_vendor/jsonschema_specifications/schemas/draft202012/vocabularies/validation +98 -0
- package/src/apothem/_vendor/jsonschema_specifications/schemas/draft3/metaschema.json +172 -0
- package/src/apothem/_vendor/jsonschema_specifications/schemas/draft4/metaschema.json +149 -0
- package/src/apothem/_vendor/jsonschema_specifications/schemas/draft6/metaschema.json +153 -0
- package/src/apothem/_vendor/jsonschema_specifications/schemas/draft7/metaschema.json +166 -0
- package/src/apothem/_vendor/jsonschema_specifications.LICENSE +19 -0
- package/src/apothem/_vendor/referencing/__init__.py +7 -0
- package/src/apothem/_vendor/referencing/_attrs.py +31 -0
- package/src/apothem/_vendor/referencing/_attrs.pyi +21 -0
- package/src/apothem/_vendor/referencing/_core.py +739 -0
- package/src/apothem/_vendor/referencing/exceptions.py +165 -0
- package/src/apothem/_vendor/referencing/jsonschema.py +642 -0
- package/src/apothem/_vendor/referencing/py.typed +0 -0
- package/src/apothem/_vendor/referencing/retrieval.py +94 -0
- package/src/apothem/_vendor/referencing/typing.py +61 -0
- package/src/apothem/_vendor/referencing.LICENSE +19 -0
- package/src/apothem/_vendor/rpds/__init__.py +251 -0
- package/src/apothem/_vendor/typing_extensions.LICENSE +279 -0
- package/src/apothem/_vendor/typing_extensions.py +4317 -0
- package/src/apothem/_vendor/vendor.txt +22 -0
- package/src/apothem/_vendor/yaml/__init__.py +389 -0
- package/src/apothem/_vendor/yaml/composer.py +138 -0
- package/src/apothem/_vendor/yaml/constructor.py +748 -0
- package/src/apothem/_vendor/yaml/cyaml.py +100 -0
- package/src/apothem/_vendor/yaml/dumper.py +61 -0
- package/src/apothem/_vendor/yaml/emitter.py +1137 -0
- package/src/apothem/_vendor/yaml/error.py +74 -0
- package/src/apothem/_vendor/yaml/events.py +85 -0
- package/src/apothem/_vendor/yaml/loader.py +63 -0
- package/src/apothem/_vendor/yaml/nodes.py +48 -0
- package/src/apothem/_vendor/yaml/parser.py +588 -0
- package/src/apothem/_vendor/yaml/reader.py +185 -0
- package/src/apothem/_vendor/yaml/representer.py +388 -0
- package/src/apothem/_vendor/yaml/resolver.py +226 -0
- package/src/apothem/_vendor/yaml/scanner.py +1435 -0
- package/src/apothem/_vendor/yaml/serializer.py +110 -0
- package/src/apothem/_vendor/yaml/tokens.py +103 -0
- package/src/apothem/_vendor/yaml.LICENSE +20 -0
- package/src/apothem/agents/README.md +60 -0
- package/src/apothem/agents/codebase-explorer.md +91 -0
- package/src/apothem/agents/convention-auditor.md +93 -0
- package/src/apothem/agents/dependency-auditor.md +97 -0
- package/src/apothem/agents/fact-checker.md +84 -0
- package/src/apothem/agents/mcp-builder.md +86 -0
- package/src/apothem/agents/memory-auditor.md +93 -0
- package/src/apothem/agents/prompt-evaluator.md +87 -0
- package/src/apothem/agents/quality-gate.md +103 -0
- package/src/apothem/agents/refactor-surgeon.md +74 -0
- package/src/apothem/agents/research-scout.md +73 -0
- package/src/apothem/agents/security-scanner.md +83 -0
- package/src/apothem/agents/test-runner.md +84 -0
- package/src/apothem/audit/README.md +73 -0
- package/src/apothem/audit/_scan_lib.py +182 -0
- package/src/apothem/audit/analyze_graph.py +260 -0
- package/src/apothem/audit/build_capability_graph.py +607 -0
- package/src/apothem/audit/build_inventory.py +657 -0
- package/src/apothem/audit/build_plans_provenance.py +997 -0
- package/src/apothem/audit/check_links.py +389 -0
- package/src/apothem/audit/classify_artifacts.py +381 -0
- package/src/apothem/audit/deprecated-tokens.txt +10 -0
- package/src/apothem/audit/execute_plans_migration.py +491 -0
- package/src/apothem/audit/known-projects.txt +15 -0
- package/src/apothem/audit/render_capability_index.py +467 -0
- package/src/apothem/audit/render_inventory.py +405 -0
- package/src/apothem/audit/scan_ai_surfaces.py +1125 -0
- package/src/apothem/audit/scan_ai_surfaces_coarse.py +261 -0
- package/src/apothem/audit/scan_drift_features.py +143 -0
- package/src/apothem/audit/scan_frontmatter.py +293 -0
- package/src/apothem/audit/scan_header_coverage.py +1134 -0
- package/src/apothem/audit/scan_plan_leakage.py +540 -0
- package/src/apothem/audit/scan_plans_discipline.py +188 -0
- package/src/apothem/audit/scan_secrets_pii.py +245 -0
- package/src/apothem/audit/scan_stale_tokens.py +296 -0
- package/src/apothem/audit/synthesize_drift.py +205 -0
- package/src/apothem/benchmarks/README.md +33 -0
- package/src/apothem/benchmarks/__init__.py +3 -0
- package/src/apothem/benchmarks/bench_agents.py +63 -0
- package/src/apothem/benchmarks/bench_hooks.py +93 -0
- package/src/apothem/benchmarks/bench_install.py +58 -0
- package/src/apothem/benchmarks/bench_tests.py +93 -0
- package/src/apothem/benchmarks/bench_validate_ecosystem.py +84 -0
- package/src/apothem/cli/README.md +33 -0
- package/src/apothem/cli/__init__.py +229 -0
- package/src/apothem/cli/_cmd_completion.py +88 -0
- package/src/apothem/cli/_cmd_diff.py +181 -0
- package/src/apothem/cli/_cmd_doctor.py +143 -0
- package/src/apothem/cli/_cmd_harnesses.py +167 -0
- package/src/apothem/cli/_cmd_install.py +327 -0
- package/src/apothem/cli/_cmd_migrate_workspace.py +143 -0
- package/src/apothem/cli/_cmd_profile.py +341 -0
- package/src/apothem/cli/_cmd_status.py +180 -0
- package/src/apothem/cli/_cmd_uninstall.py +215 -0
- package/src/apothem/cli/_cmd_update.py +397 -0
- package/src/apothem/cli/_cmd_verify.py +194 -0
- package/src/apothem/cli/_common_flags.py +90 -0
- package/src/apothem/cli/_epilogs.py +296 -0
- package/src/apothem/cli/_helpers.py +857 -0
- package/src/apothem/cli/_json_formatter.py +21 -0
- package/src/apothem/cli/_materialize.py +376 -0
- package/src/apothem/cli/completions/apothem.bash +30 -0
- package/src/apothem/cli/completions/apothem.fish +19 -0
- package/src/apothem/cli/completions/apothem.ps1 +27 -0
- package/src/apothem/cli/completions/apothem.zsh +42 -0
- package/src/apothem/cli/reference_export.py +126 -0
- package/src/apothem/commands/README.md +125 -0
- package/src/apothem/commands/a11y-audit.md +203 -0
- package/src/apothem/commands/architecture-review.md +194 -0
- package/src/apothem/commands/audit.md +165 -0
- package/src/apothem/commands/code-audit.md +218 -0
- package/src/apothem/commands/code-review.md +193 -0
- package/src/apothem/commands/dependency-audit.md +209 -0
- package/src/apothem/commands/docs-review.md +199 -0
- package/src/apothem/commands/elevate.md +285 -0
- package/src/apothem/commands/eval.md +149 -0
- package/src/apothem/commands/fortress.md +172 -0
- package/src/apothem/commands/freshify.md +168 -0
- package/src/apothem/commands/github-deploy-fresh.md +178 -0
- package/src/apothem/commands/github-deploy-next.md +167 -0
- package/src/apothem/commands/perf-audit.md +198 -0
- package/src/apothem/commands/plan-amend.md +104 -0
- package/src/apothem/commands/plan-audit.md +127 -0
- package/src/apothem/commands/plan-design.md +257 -0
- package/src/apothem/commands/plan-execute.md +495 -0
- package/src/apothem/commands/plan-generate.md +351 -0
- package/src/apothem/commands/plan-review.md +555 -0
- package/src/apothem/commands/plan-spec.md +359 -0
- package/src/apothem/commands/plan-status.md +222 -0
- package/src/apothem/commands/plan.md +173 -0
- package/src/apothem/commands/projectify.md +142 -0
- package/src/apothem/commands/release-readiness.md +142 -0
- package/src/apothem/commands/research-analysis.md +241 -0
- package/src/apothem/commands/research-design.md +231 -0
- package/src/apothem/commands/research-disseminate.md +225 -0
- package/src/apothem/commands/research-experiment.md +232 -0
- package/src/apothem/commands/research-ideate.md +213 -0
- package/src/apothem/commands/research-paper.md +252 -0
- package/src/apothem/commands/research-proposal.md +220 -0
- package/src/apothem/commands/research-publish.md +255 -0
- package/src/apothem/commands/research-review.md +251 -0
- package/src/apothem/commands/research-sources.md +266 -0
- package/src/apothem/commands/research-spec.md +255 -0
- package/src/apothem/commands/research-synthesis.md +233 -0
- package/src/apothem/commands/research-theory.md +218 -0
- package/src/apothem/commands/research.md +181 -0
- package/src/apothem/commands/security-audit.md +196 -0
- package/src/apothem/commands/supply-chain-audit.md +192 -0
- package/src/apothem/commands/test-suite.md +146 -0
- package/src/apothem/commands/threat-model-audit.md +199 -0
- package/src/apothem/commands/ux-review.md +202 -0
- package/src/apothem/commands/workflow.md +162 -0
- package/src/apothem/conformity/README.md +173 -0
- package/src/apothem/conformity/__init__.py +1 -0
- package/src/apothem/conformity/_grep_base.py +93 -0
- package/src/apothem/conformity/agent_capability_grep.py +306 -0
- package/src/apothem/conformity/agents_md_coverage_grep.py +382 -0
- package/src/apothem/conformity/agnosticism_grep.py +311 -0
- package/src/apothem/conformity/always_on_budget_grep.py +318 -0
- package/src/apothem/conformity/bare_except_grep.py +115 -0
- package/src/apothem/conformity/binding_reciprocity_grep.py +151 -0
- package/src/apothem/conformity/brand_mark_grep.py +272 -0
- package/src/apothem/conformity/commented_out_code_grep.py +176 -0
- package/src/apothem/conformity/completion_claim_grep.py +169 -0
- package/src/apothem/conformity/conventional_commit_grep.py +319 -0
- package/src/apothem/conformity/copilot_instructions_presence_grep.py +324 -0
- package/src/apothem/conformity/cross_platform_matrix_grep.py +297 -0
- package/src/apothem/conformity/determinism_grep.py +306 -0
- package/src/apothem/conformity/diagram_staleness_grep.py +154 -0
- package/src/apothem/conformity/dynamism_grep.py +284 -0
- package/src/apothem/conformity/editorconfig_presence_grep.py +281 -0
- package/src/apothem/conformity/file_header_grep.py +502 -0
- package/src/apothem/conformity/freshness_token_grep.py +233 -0
- package/src/apothem/conformity/frontmatter_grep.py +274 -0
- package/src/apothem/conformity/frontmatter_value_grep.py +386 -0
- package/src/apothem/conformity/gate.py +1386 -0
- package/src/apothem/conformity/gitattributes_presence_grep.py +238 -0
- package/src/apothem/conformity/harden_runner_grep.py +320 -0
- package/src/apothem/conformity/hedging_grep.py +129 -0
- package/src/apothem/conformity/license_author_consistency_grep.py +204 -0
- package/src/apothem/conformity/link_check.py +327 -0
- package/src/apothem/conformity/magic_number_grep.py +182 -0
- package/src/apothem/conformity/multi_surface_coherence_grep.py +620 -0
- package/src/apothem/conformity/naming_grep.py +224 -0
- package/src/apothem/conformity/no_global_plans_grep.py +339 -0
- package/src/apothem/conformity/no_toplevel_docs_grep.py +120 -0
- package/src/apothem/conformity/oidc_trusted_publishing_grep.py +291 -0
- package/src/apothem/conformity/option_annotation_grep.py +352 -0
- package/src/apothem/conformity/orphan_output_grep.py +206 -0
- package/src/apothem/conformity/permissions_minimum_scope_grep.py +299 -0
- package/src/apothem/conformity/plain_language_grep.py +559 -0
- package/src/apothem/conformity/plan_next_step_consistency_grep.py +450 -0
- package/src/apothem/conformity/plan_suite_structure_grep.py +534 -0
- package/src/apothem/conformity/plans_discipline_language_grep.py +245 -0
- package/src/apothem/conformity/production_ready_pr_grep.py +200 -0
- package/src/apothem/conformity/recommend_next_step_grep.py +250 -0
- package/src/apothem/conformity/redundancy_grep.py +401 -0
- package/src/apothem/conformity/reference_token_grep.py +230 -0
- package/src/apothem/conformity/registry_capability_consistency_grep.py +368 -0
- package/src/apothem/conformity/secret_leak_grep.py +193 -0
- package/src/apothem/conformity/semver_stability_grep.py +358 -0
- package/src/apothem/conformity/smoke_install_grep.py +194 -0
- package/src/apothem/conformity/static_version_grep.py +284 -0
- package/src/apothem/conformity/token_efficiency_grep.py +185 -0
- package/src/apothem/conformity/unpinned_action_grep.py +115 -0
- package/src/apothem/conformity/user_confirm_grep.py +74 -0
- package/src/apothem/conformity/workflow_concurrency_grep.py +283 -0
- package/src/apothem/harnesses/README.md +63 -0
- package/src/apothem/harnesses/__init__.py +16 -0
- package/src/apothem/harnesses/_shared/README.md +36 -0
- package/src/apothem/harnesses/_shared/__init__.py +12 -0
- package/src/apothem/harnesses/_shared/install_driver.py +281 -0
- package/src/apothem/harnesses/_shared/install_driver_apply.py +612 -0
- package/src/apothem/harnesses/_shared/install_driver_backup.py +535 -0
- package/src/apothem/harnesses/_shared/install_driver_converters.py +310 -0
- package/src/apothem/harnesses/_shared/install_driver_lifecycle.py +495 -0
- package/src/apothem/harnesses/_shared/install_driver_materialize.py +675 -0
- package/src/apothem/harnesses/_shared/install_driver_merge.py +656 -0
- package/src/apothem/harnesses/_shared/install_driver_pathsafety.py +137 -0
- package/src/apothem/harnesses/_shared/install_driver_planvalidation.py +240 -0
- package/src/apothem/harnesses/_shared/install_driver_removal.py +366 -0
- package/src/apothem/harnesses/_shared/install_driver_treeops.py +248 -0
- package/src/apothem/harnesses/_shared/install_driver_types.py +330 -0
- package/src/apothem/harnesses/_shared/wrapper_factories.py +448 -0
- package/src/apothem/harnesses/antigravity/STANDARD-CONVENTION-PIN.md +91 -0
- package/src/apothem/harnesses/antigravity/__init__.py +70 -0
- package/src/apothem/harnesses/antigravity/capabilities.yml +40 -0
- package/src/apothem/harnesses/antigravity/install.py +63 -0
- package/src/apothem/harnesses/antigravity/templates/GEMINI.md +40 -0
- package/src/apothem/harnesses/antigravity/templates/plugin.json +5 -0
- package/src/apothem/harnesses/antigravity/uninstall.py +22 -0
- package/src/apothem/harnesses/antigravity/update.py +10 -0
- package/src/apothem/harnesses/antigravity/verify.py +11 -0
- package/src/apothem/harnesses/claude_code/STANDARD-CONVENTION-PIN.md +65 -0
- package/src/apothem/harnesses/claude_code/__init__.py +107 -0
- package/src/apothem/harnesses/claude_code/capabilities.yml +42 -0
- package/src/apothem/harnesses/claude_code/install.py +147 -0
- package/src/apothem/harnesses/claude_code/templates/settings.json +351 -0
- package/src/apothem/harnesses/claude_code/uninstall.py +23 -0
- package/src/apothem/harnesses/claude_code/update.py +10 -0
- package/src/apothem/harnesses/claude_code/verify.py +11 -0
- package/src/apothem/harnesses/codebuddy/STANDARD-CONVENTION-PIN.md +74 -0
- package/src/apothem/harnesses/codebuddy/__init__.py +49 -0
- package/src/apothem/harnesses/codebuddy/capabilities.yml +34 -0
- package/src/apothem/harnesses/codebuddy/install.py +40 -0
- package/src/apothem/harnesses/codebuddy/templates/apothem-rules.md +37 -0
- package/src/apothem/harnesses/codebuddy/uninstall.py +25 -0
- package/src/apothem/harnesses/codebuddy/update.py +10 -0
- package/src/apothem/harnesses/codebuddy/verify.py +11 -0
- package/src/apothem/harnesses/codex/STANDARD-CONVENTION-PIN.md +79 -0
- package/src/apothem/harnesses/codex/__init__.py +72 -0
- package/src/apothem/harnesses/codex/capabilities.yml +40 -0
- package/src/apothem/harnesses/codex/install.py +69 -0
- package/src/apothem/harnesses/codex/templates/AGENTS.md +40 -0
- package/src/apothem/harnesses/codex/templates/hooks.json +127 -0
- package/src/apothem/harnesses/codex/uninstall.py +23 -0
- package/src/apothem/harnesses/codex/update.py +10 -0
- package/src/apothem/harnesses/codex/verify.py +11 -0
- package/src/apothem/harnesses/cursor/STANDARD-CONVENTION-PIN.md +79 -0
- package/src/apothem/harnesses/cursor/__init__.py +48 -0
- package/src/apothem/harnesses/cursor/capabilities.yml +42 -0
- package/src/apothem/harnesses/cursor/install.py +38 -0
- package/src/apothem/harnesses/cursor/templates/apothem-rules.mdc +40 -0
- package/src/apothem/harnesses/cursor/uninstall.py +25 -0
- package/src/apothem/harnesses/cursor/update.py +10 -0
- package/src/apothem/harnesses/cursor/verify.py +11 -0
- package/src/apothem/harnesses/gemini_cli/STANDARD-CONVENTION-PIN.md +102 -0
- package/src/apothem/harnesses/gemini_cli/__init__.py +52 -0
- package/src/apothem/harnesses/gemini_cli/capabilities.yml +43 -0
- package/src/apothem/harnesses/gemini_cli/install.py +43 -0
- package/src/apothem/harnesses/gemini_cli/templates/GEMINI.md +38 -0
- package/src/apothem/harnesses/gemini_cli/uninstall.py +25 -0
- package/src/apothem/harnesses/gemini_cli/update.py +10 -0
- package/src/apothem/harnesses/gemini_cli/verify.py +11 -0
- package/src/apothem/harnesses/github_copilot/STANDARD-CONVENTION-PIN.md +84 -0
- package/src/apothem/harnesses/github_copilot/__init__.py +47 -0
- package/src/apothem/harnesses/github_copilot/capabilities.yml +42 -0
- package/src/apothem/harnesses/github_copilot/install.py +40 -0
- package/src/apothem/harnesses/github_copilot/templates/copilot-instructions.md +33 -0
- package/src/apothem/harnesses/github_copilot/uninstall.py +25 -0
- package/src/apothem/harnesses/github_copilot/update.py +10 -0
- package/src/apothem/harnesses/github_copilot/verify.py +11 -0
- package/src/apothem/harnesses/glm/STANDARD-CONVENTION-PIN.md +77 -0
- package/src/apothem/harnesses/glm/__init__.py +56 -0
- package/src/apothem/harnesses/glm/capabilities.yml +33 -0
- package/src/apothem/harnesses/glm/install.py +45 -0
- package/src/apothem/harnesses/glm/templates/glm.toml +58 -0
- package/src/apothem/harnesses/glm/uninstall.py +25 -0
- package/src/apothem/harnesses/glm/update.py +10 -0
- package/src/apothem/harnesses/glm/verify.py +11 -0
- package/src/apothem/harnesses/hermes/STANDARD-CONVENTION-PIN.md +57 -0
- package/src/apothem/harnesses/hermes/__init__.py +33 -0
- package/src/apothem/harnesses/hermes/capabilities.yml +36 -0
- package/src/apothem/harnesses/hermes/install.py +17 -0
- package/src/apothem/harnesses/hermes/materializer.py +35 -0
- package/src/apothem/harnesses/hermes/uninstall.py +33 -0
- package/src/apothem/harnesses/hermes/update.py +10 -0
- package/src/apothem/harnesses/hermes/verify.py +11 -0
- package/src/apothem/harnesses/kimi_code/STANDARD-CONVENTION-PIN.md +128 -0
- package/src/apothem/harnesses/kimi_code/__init__.py +59 -0
- package/src/apothem/harnesses/kimi_code/capabilities.yml +40 -0
- package/src/apothem/harnesses/kimi_code/install.py +42 -0
- package/src/apothem/harnesses/kimi_code/templates/AGENTS.md +43 -0
- package/src/apothem/harnesses/kimi_code/uninstall.py +27 -0
- package/src/apothem/harnesses/kimi_code/update.py +10 -0
- package/src/apothem/harnesses/kimi_code/verify.py +11 -0
- package/src/apothem/harnesses/kiro/STANDARD-CONVENTION-PIN.md +77 -0
- package/src/apothem/harnesses/kiro/__init__.py +49 -0
- package/src/apothem/harnesses/kiro/capabilities.yml +36 -0
- package/src/apothem/harnesses/kiro/install.py +39 -0
- package/src/apothem/harnesses/kiro/templates/apothem-rules.md +36 -0
- package/src/apothem/harnesses/kiro/uninstall.py +25 -0
- package/src/apothem/harnesses/kiro/update.py +10 -0
- package/src/apothem/harnesses/kiro/verify.py +11 -0
- package/src/apothem/harnesses/open_claw/STANDARD-CONVENTION-PIN.md +62 -0
- package/src/apothem/harnesses/open_claw/__init__.py +35 -0
- package/src/apothem/harnesses/open_claw/capabilities.yml +35 -0
- package/src/apothem/harnesses/open_claw/install.py +17 -0
- package/src/apothem/harnesses/open_claw/materializer.py +36 -0
- package/src/apothem/harnesses/open_claw/uninstall.py +32 -0
- package/src/apothem/harnesses/open_claw/update.py +10 -0
- package/src/apothem/harnesses/open_claw/verify.py +11 -0
- package/src/apothem/harnesses/opencode/STANDARD-CONVENTION-PIN.md +76 -0
- package/src/apothem/harnesses/opencode/__init__.py +35 -0
- package/src/apothem/harnesses/opencode/capabilities.yml +43 -0
- package/src/apothem/harnesses/opencode/install.py +17 -0
- package/src/apothem/harnesses/opencode/materializer.py +31 -0
- package/src/apothem/harnesses/opencode/uninstall.py +34 -0
- package/src/apothem/harnesses/opencode/update.py +10 -0
- package/src/apothem/harnesses/opencode/verify.py +11 -0
- package/src/apothem/harnesses/qwen_code/STANDARD-CONVENTION-PIN.md +87 -0
- package/src/apothem/harnesses/qwen_code/__init__.py +37 -0
- package/src/apothem/harnesses/qwen_code/capabilities.yml +43 -0
- package/src/apothem/harnesses/qwen_code/install.py +19 -0
- package/src/apothem/harnesses/qwen_code/materializer.py +174 -0
- package/src/apothem/harnesses/qwen_code/templates/QWEN.md +30 -0
- package/src/apothem/harnesses/qwen_code/uninstall.py +34 -0
- package/src/apothem/harnesses/qwen_code/update.py +10 -0
- package/src/apothem/harnesses/qwen_code/verify.py +11 -0
- package/src/apothem/harnesses/trae/STANDARD-CONVENTION-PIN.md +70 -0
- package/src/apothem/harnesses/trae/__init__.py +49 -0
- package/src/apothem/harnesses/trae/capabilities.yml +34 -0
- package/src/apothem/harnesses/trae/install.py +38 -0
- package/src/apothem/harnesses/trae/templates/apothem-rules.md +37 -0
- package/src/apothem/harnesses/trae/uninstall.py +25 -0
- package/src/apothem/harnesses/trae/update.py +10 -0
- package/src/apothem/harnesses/trae/verify.py +11 -0
- package/src/apothem/harnesses/windsurf/STANDARD-CONVENTION-PIN.md +91 -0
- package/src/apothem/harnesses/windsurf/__init__.py +52 -0
- package/src/apothem/harnesses/windsurf/capabilities.yml +40 -0
- package/src/apothem/harnesses/windsurf/install.py +41 -0
- package/src/apothem/harnesses/windsurf/templates/apothem-rules.md +37 -0
- package/src/apothem/harnesses/windsurf/uninstall.py +25 -0
- package/src/apothem/harnesses/windsurf/update.py +10 -0
- package/src/apothem/harnesses/windsurf/verify.py +11 -0
- package/src/apothem/harnesses/zed/STANDARD-CONVENTION-PIN.md +92 -0
- package/src/apothem/harnesses/zed/__init__.py +57 -0
- package/src/apothem/harnesses/zed/capabilities.yml +38 -0
- package/src/apothem/harnesses/zed/install.py +41 -0
- package/src/apothem/harnesses/zed/templates/apothem-rules.md +32 -0
- package/src/apothem/harnesses/zed/uninstall.py +28 -0
- package/src/apothem/harnesses/zed/update.py +10 -0
- package/src/apothem/harnesses/zed/verify.py +11 -0
- package/src/apothem/hooks/README.md +81 -0
- package/src/apothem/hooks/__init__.py +24 -0
- package/src/apothem/hooks/askuserquestion_validator.py +380 -0
- package/src/apothem/hooks/dispatch.py +296 -0
- package/src/apothem/hooks/emit_hook_context.py +444 -0
- package/src/apothem/hooks/hooks.json +318 -0
- package/src/apothem/hooks/lib/README.md +39 -0
- package/src/apothem/hooks/lib/__init__.py +18 -0
- package/src/apothem/hooks/lib/bootstrap.ps1 +129 -0
- package/src/apothem/hooks/lib/bootstrap.sh +103 -0
- package/src/apothem/hooks/lib/events.py +51 -0
- package/src/apothem/hooks/lib/find-pwsh.ps1 +78 -0
- package/src/apothem/hooks/lib/find-pwsh.sh +76 -0
- package/src/apothem/hooks/lib/find-python.ps1 +63 -0
- package/src/apothem/hooks/lib/find-python.sh +97 -0
- package/src/apothem/hooks/lib/log.py +43 -0
- package/src/apothem/hooks/lib/resolve_root.py +264 -0
- package/src/apothem/hooks/messages/postcompact.md +14 -0
- package/src/apothem/hooks/messages/posttooluse-proactive-compaction.md +46 -0
- package/src/apothem/hooks/messages/precompact.md +14 -0
- package/src/apothem/hooks/messages/pretooluse-askuserquestion-recommended.md +65 -0
- package/src/apothem/hooks/messages/pretooluse-bash-plan-guard.md +97 -0
- package/src/apothem/hooks/messages/pretooluse-bash.md +39 -0
- package/src/apothem/hooks/messages/pretooluse-conformity.md +70 -0
- package/src/apothem/hooks/messages/pretooluse-dependency-guard.md +21 -0
- package/src/apothem/hooks/messages/pretooluse-edit-header-guard.md +61 -0
- package/src/apothem/hooks/messages/pretooluse-edit.md +21 -0
- package/src/apothem/hooks/messages/pretooluse-eval-guard.md +39 -0
- package/src/apothem/hooks/messages/pretooluse-notebookedit.md +11 -0
- package/src/apothem/hooks/messages/pretooluse-write-header-guard.md +45 -0
- package/src/apothem/hooks/messages/pretooluse-write-plan-guard.md +72 -0
- package/src/apothem/hooks/messages/pretooluse-write.md +21 -0
- package/src/apothem/hooks/messages/sessionstart.md +15 -0
- package/src/apothem/hooks/messages/stop.md +27 -0
- package/src/apothem/hooks/proactive_compaction_tracker.py +327 -0
- package/src/apothem/hooks/session_start_bootstrap.py +472 -0
- package/src/apothem/lib/README.md +42 -0
- package/src/apothem/lib/__init__.py +13 -0
- package/src/apothem/lib/atomic_io.py +189 -0
- package/src/apothem/lib/auditor.py +687 -0
- package/src/apothem/lib/clean_slate.py +396 -0
- package/src/apothem/lib/contexts.py +352 -0
- package/src/apothem/lib/data_home.py +255 -0
- package/src/apothem/lib/frontmatter.py +101 -0
- package/src/apothem/lib/harness_materializer.py +213 -0
- package/src/apothem/lib/harness_protocol.py +59 -0
- package/src/apothem/lib/harness_registry.py +282 -0
- package/src/apothem/lib/harness_registry_data.py +843 -0
- package/src/apothem/lib/install_ledger.py +347 -0
- package/src/apothem/lib/learning.py +540 -0
- package/src/apothem/lib/memory.py +347 -0
- package/src/apothem/lib/parallel_sweep.py +234 -0
- package/src/apothem/lib/plan_tiers.py +200 -0
- package/src/apothem/lib/plugin_bootstrap.py +132 -0
- package/src/apothem/lib/plugin_tree.py +599 -0
- package/src/apothem/lib/profile.py +755 -0
- package/src/apothem/lib/profile_projection.py +198 -0
- package/src/apothem/lib/propagation-manifest.yaml +878 -0
- package/src/apothem/lib/propagation.py +220 -0
- package/src/apothem/lib/python_resolver.py +189 -0
- package/src/apothem/lib/reporter.py +62 -0
- package/src/apothem/lib/workspace_migration.py +323 -0
- package/src/apothem/output-styles/README.md +41 -0
- package/src/apothem/output-styles/concise-engineer.md +49 -0
- package/src/apothem/output-styles/default-architect.md +52 -0
- package/src/apothem/output-styles/default.md +113 -0
- package/src/apothem/output-styles/forensic-auditor.md +63 -0
- package/src/apothem/py.typed +0 -0
- package/src/apothem/rules/README.md +121 -0
- package/src/apothem/rules/agent-capability-discipline-matrix.md +89 -0
- package/src/apothem/rules/agent-capability-discipline.md +78 -0
- package/src/apothem/rules/agent-orchestration-patterns.md +144 -0
- package/src/apothem/rules/agent-orchestration.md +65 -0
- package/src/apothem/rules/agents-md-convention.md +86 -0
- package/src/apothem/rules/agile-sprints-elements.md +135 -0
- package/src/apothem/rules/agile-sprints.md +64 -0
- package/src/apothem/rules/agnostic-posture-checklist.md +47 -0
- package/src/apothem/rules/agnostic-posture.md +48 -0
- package/src/apothem/rules/authoritative-referencing-quotation.md +50 -0
- package/src/apothem/rules/authoritative-referencing.md +66 -0
- package/src/apothem/rules/authority-inquiry-categories.md +58 -0
- package/src/apothem/rules/authority-inquiry.md +54 -0
- package/src/apothem/rules/auto-memory-topic-files.md +86 -0
- package/src/apothem/rules/auto-memory.md +67 -0
- package/src/apothem/rules/bidirectional-binding.md +123 -0
- package/src/apothem/rules/canonical-layout-reporting-tiers.md +212 -0
- package/src/apothem/rules/canonical-layout.md +60 -0
- package/src/apothem/rules/clean-architecture-layers.md +186 -0
- package/src/apothem/rules/clean-room-generation-protocols.md +124 -0
- package/src/apothem/rules/clean-room-generation.md +59 -0
- package/src/apothem/rules/code-craft-conventions.md +101 -0
- package/src/apothem/rules/code-craft-markdown.md +138 -0
- package/src/apothem/rules/code-craft-python.md +154 -0
- package/src/apothem/rules/code-craft-shell.md +192 -0
- package/src/apothem/rules/cognitive-identity-techniques.md +180 -0
- package/src/apothem/rules/cognitive-identity.md +81 -0
- package/src/apothem/rules/context-management-budget.md +46 -0
- package/src/apothem/rules/context-management-protocol.md +161 -0
- package/src/apothem/rules/context-management-scratch.md +128 -0
- package/src/apothem/rules/context-management.md +85 -0
- package/src/apothem/rules/definitiveness-virtues.md +67 -0
- package/src/apothem/rules/definitiveness.md +58 -0
- package/src/apothem/rules/determinism.md +81 -0
- package/src/apothem/rules/disclosure-ledger-markers.md +58 -0
- package/src/apothem/rules/disclosure-ledger.md +52 -0
- package/src/apothem/rules/dynamism.md +38 -0
- package/src/apothem/rules/etc-extension.md +57 -0
- package/src/apothem/rules/expertise-posture-elements.md +68 -0
- package/src/apothem/rules/expertise-posture.md +54 -0
- package/src/apothem/rules/freshness-facade.md +64 -0
- package/src/apothem/rules/harness-adapter-shape-schemas.md +162 -0
- package/src/apothem/rules/harness-adapter-shape.md +42 -0
- package/src/apothem/rules/host-discovery-manifests.md +50 -0
- package/src/apothem/rules/host-discovery.md +56 -0
- package/src/apothem/rules/i18n-discipline-locale-cohorts.md +120 -0
- package/src/apothem/rules/i18n-discipline.md +70 -0
- package/src/apothem/rules/interactive-questions-canonical-shapes.md +590 -0
- package/src/apothem/rules/interactive-questions-detail.md +41 -0
- package/src/apothem/rules/interactive-questions-sweep-matchers.md +184 -0
- package/src/apothem/rules/interactive-questions.md +89 -0
- package/src/apothem/rules/large-file-generation.md +112 -0
- package/src/apothem/rules/large-file-reading.md +59 -0
- package/src/apothem/rules/living-docs.md +85 -0
- package/src/apothem/rules/multi-agent-workflow.md +57 -0
- package/src/apothem/rules/operational-mandates-expanded.md +78 -0
- package/src/apothem/rules/operational-mandates.md +88 -0
- package/src/apothem/rules/option-annotation-form.md +60 -0
- package/src/apothem/rules/option-annotation.md +45 -0
- package/src/apothem/rules/own-voice-reimplementation.md +86 -0
- package/src/apothem/rules/performance-discipline.md +91 -0
- package/src/apothem/rules/persistent-conventions-vigilance-checklist.md +54 -0
- package/src/apothem/rules/persistent-conventions-vigilance.md +61 -0
- package/src/apothem/rules/plain-language.md +56 -0
- package/src/apothem/rules/planning-techniques.md +130 -0
- package/src/apothem/rules/pre-emission-gate-bars.md +86 -0
- package/src/apothem/rules/pre-emission-gate.md +54 -0
- package/src/apothem/rules/production-ready-prs-surfaces.md +162 -0
- package/src/apothem/rules/production-ready-prs.md +83 -0
- package/src/apothem/rules/propagation.md +63 -0
- package/src/apothem/rules/recommend-next-step.md +106 -0
- package/src/apothem/rules/refactoring-discipline.md +76 -0
- package/src/apothem/rules/session-closure.md +44 -0
- package/src/apothem/rules/sota-elevation-exemplars.md +76 -0
- package/src/apothem/rules/sota-elevation.md +52 -0
- package/src/apothem/rules/source-accessibility.md +58 -0
- package/src/apothem/rules/surgical-manipulation.md +48 -0
- package/src/apothem/rules/systemic-participation-relations.md +108 -0
- package/src/apothem/rules/systemic-participation.md +70 -0
- package/src/apothem/rules/ten-dimension-check-dimensions.md +52 -0
- package/src/apothem/rules/ten-dimension-check.md +59 -0
- package/src/apothem/rules/token-budget-discipline.md +81 -0
- package/src/apothem/rules/token-efficiency-rewrite-protocol.md +79 -0
- package/src/apothem/rules/token-efficiency-rewrite.md +77 -0
- package/src/apothem/rules/tool-use-discipline.md +48 -0
- package/src/apothem/rules/visual-leverage.md +102 -0
- package/src/apothem/schemas/NOTICE.md +9 -0
- package/src/apothem/schemas/README.md +104 -0
- package/src/apothem/schemas/__init__.py +176 -0
- package/src/apothem/schemas/advisory-finding.schema.json +111 -0
- package/src/apothem/schemas/agent.schema.json +106 -0
- package/src/apothem/schemas/authorship-header.txt +1 -0
- package/src/apothem/schemas/cohort-manifest.yaml +248 -0
- package/src/apothem/schemas/cohort-metadata-vocabulary.yaml +168 -0
- package/src/apothem/schemas/cohort.schema.json +113 -0
- package/src/apothem/schemas/command.schema.json +68 -0
- package/src/apothem/schemas/compatibility-matrix.yaml +432 -0
- package/src/apothem/schemas/context-fragment.schema.json +64 -0
- package/src/apothem/schemas/freshness-token-denylist.txt +51 -0
- package/src/apothem/schemas/handoff-manifest.yaml +353 -0
- package/src/apothem/schemas/header-exceptions.txt +141 -0
- package/src/apothem/schemas/header-visibility.yaml +39 -0
- package/src/apothem/schemas/learning-signal.schema.json +46 -0
- package/src/apothem/schemas/memory-record.schema.json +61 -0
- package/src/apothem/schemas/output-style.schema.json +40 -0
- package/src/apothem/schemas/plan.schema.json +51 -0
- package/src/apothem/schemas/plugin.schema.json +83 -0
- package/src/apothem/schemas/profile.example.yaml +70 -0
- package/src/apothem/schemas/profile.minimal.yaml +6 -0
- package/src/apothem/schemas/profile.schema.json +396 -0
- package/src/apothem/schemas/reference-token-denylist.txt +25 -0
- package/src/apothem/schemas/skill.schema.json +75 -0
- package/src/apothem/skills/README.md +93 -0
- package/src/apothem/skills/dependency-upgrade/SKILL.md +105 -0
- package/src/apothem/skills/dev-toolkit/SKILL.md +120 -0
- package/src/apothem/skills/diagram-authoring/SKILL.md +113 -0
- package/src/apothem/skills/document-authoring/SKILL.md +118 -0
- package/src/apothem/skills/ecosystem-audit/SKILL.md +108 -0
- package/src/apothem/skills/ecosystem-audit/references/audit-fortress.md +85 -0
- package/src/apothem/skills/ecosystem-audit/references/procedure.md +162 -0
- package/src/apothem/skills/eval-harness/SKILL.md +88 -0
- package/src/apothem/skills/incident-runbook/SKILL.md +92 -0
- package/src/apothem/skills/multi-source-research/SKILL.md +90 -0
- package/src/apothem/skills/plan-suite/SKILL.md +118 -0
- package/src/apothem/skills/plan-suite/master_template.md +1324 -0
- package/src/apothem/skills/projectify/SKILL.md +117 -0
- package/src/apothem/skills/prompt-engineering/SKILL.md +122 -0
- package/src/apothem/skills/refactor-extract/SKILL.md +85 -0
- package/src/apothem/skills/research-suite/SKILL.md +170 -0
- package/src/apothem/skills/research-suite/references/directory-structure.md +47 -0
- package/src/apothem/skills/research-suite/references/lifecycle.md +67 -0
- package/src/apothem/skills/research-suite/references/principal-investigator-framework.md +37 -0
- package/src/apothem/skills/research-suite/references/rigor-mandates.md +30 -0
- package/src/apothem/skills/research-suite/research_template.md +476 -0
- package/src/apothem/skills/secret-rotation/SKILL.md +87 -0
- package/src/apothem/skills/source-synthesis/SKILL.md +92 -0
- package/src/apothem/skills/surgical-guard/SKILL.md +118 -0
- package/src/apothem/skills/test-authoring/SKILL.md +85 -0
- package/src/apothem/skills/vuln-triage/SKILL.md +91 -0
- package/src/apothem/skills/workflow/SKILL.md +139 -0
- package/src/apothem/statuslines/README.md +26 -0
- package/src/apothem/statuslines/__init__.py +20 -0
- package/src/apothem/statuslines/conformity.json +5 -0
- package/src/apothem/statuslines/render.py +334 -0
- package/src/apothem/statuslines/statusline.md +50 -0
- package/src/apothem/templates/README.md +43 -0
- package/src/apothem/templates/agents-md-template.md +80 -0
- package/src/apothem/templates/consideration-log.md +39 -0
- package/src/apothem/templates/expertise-gap-log.md +56 -0
- package/src/apothem/templates/master-index-template.md +93 -0
- package/src/apothem/templates/potency-map.md +53 -0
- package/src/apothem/templates/preservation-audit.md +60 -0
- package/src/apothem/templates/question-resolution-audit.md +52 -0
- package/src/apothem/templates/trace-matrix-template.md +77 -0
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: "persistent-conventions-vigilance"
|
|
3
|
+
description: "Adhere to the harness ecosystem's conventions and proactively evolve its artifacts — per-artifact-class convention awareness (naming, layout, frontmatter shape), the five-step proactive-evolution cycle (detect → search → act → validate → retire), bidirectional cross-reference coherence, and ecosystem gap detection that surfaces a missing rule / skill / command / hook before it is needed. Implements CM-22."
|
|
4
|
+
pathFilter: ""
|
|
5
|
+
alwaysApply: true
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
<!-- SPDX-License-Identifier: MIT -->
|
|
9
|
+
|
|
10
|
+
# Rule: Persistent Conventions Vigilance
|
|
11
|
+
|
|
12
|
+
## Purpose
|
|
13
|
+
|
|
14
|
+
Adhere to the harness ecosystem's conventions and proactively evolve artifacts as projects change.
|
|
15
|
+
|
|
16
|
+
## Obligations
|
|
17
|
+
|
|
18
|
+
### 1. Convention Awareness (Companion Sub-Rule Anchor)
|
|
19
|
+
|
|
20
|
+
Before any non-trivial action, the agent MUST verify alignment with ecosystem conventions covering naming, directory structure, and per-artifact-class shape (skill, rule, command, hook, agent, plan, root config, settings, memory, MCP, narration). Full per-class checklist at `rules/persistent-conventions-vigilance-checklist.md` §1.
|
|
21
|
+
|
|
22
|
+
### 2. Proactive Evolution
|
|
23
|
+
|
|
24
|
+
The agent MUST continuously evaluate whether existing artifacts remain sufficient, running a five-step cycle: **Detect** recurrence (2+ instances or noted in memory) → **Search** skills / rules / commands / hooks / memory / MCP for overlap → **Act** (evolve in place when overlap exists; author new only when genuinely orthogonal) → **Validate** that cross-references resolve → **Retire** superseded artifacts with reference updates. Refinement is preferred over creation.
|
|
25
|
+
|
|
26
|
+
### 3. Ecosystem Coherence
|
|
27
|
+
|
|
28
|
+
Cross-references between CM-N / TM-N / rules / skills / commands MUST be bidirectional and accurate; naming MUST be identical across surfaces; every rule / skill / command MUST be registered in `CLAUDE.md` (no orphans). New artifacts MUST be verified against existing mandates, with resolution order documented when tension exists.
|
|
29
|
+
|
|
30
|
+
### 4. Ecosystem Gap Detection (Companion Sub-Rule Anchor)
|
|
31
|
+
|
|
32
|
+
Beyond refining existing artifacts (§2), the agent MUST identify when the ecosystem is MISSING an artifact that would add value. Common trigger: a pattern recurs 2+ times in the session or is noted in memory as recurring. Full artifact-class trigger catalog (agent / hook / rule / plugin / config-freshness / skill / command) at `rules/persistent-conventions-vigilance-checklist.md` §2.
|
|
33
|
+
|
|
34
|
+
## Seriousness Scaling
|
|
35
|
+
|
|
36
|
+
| Level | Conventions Behavior |
|
|
37
|
+
| ----- | -------------------- |
|
|
38
|
+
| EXPLORING | Naming + structure checks only — verify kebab-case and directory placement |
|
|
39
|
+
| PERSONAL_USE | Full convention awareness; cross-references verified on create/modify; gap detection on request |
|
|
40
|
+
| SHARED | Mandatory ecosystem coherence; proactive evolution + gap detection; cross-references enforced every change |
|
|
41
|
+
| PUBLIC_LAUNCH | Full enforcement + proactive index maintenance + session-end gap sweep; violations block completion; cross-project audit |
|
|
42
|
+
|
|
43
|
+
## Anti-Patterns
|
|
44
|
+
|
|
45
|
+
- **DON'T** create a new artifact when an existing one covers the same concern — **BECAUSE** duplicates produce conflicting directives and fragment knowledge.
|
|
46
|
+
- **DON'T** ignore naming conventions for "quick" one-off files — **BECAUSE** inconsistency compounds and makes discovery unreliable.
|
|
47
|
+
- **DON'T** leave a new artifact unregistered in `CLAUDE.md` — **BECAUSE** orphans become invisible and unmaintained.
|
|
48
|
+
- **DON'T** mix concerns across artifact types (e.g., skill content inside a rule) — **BECAUSE** it breaks the separation that keeps each type discoverable.
|
|
49
|
+
- **DON'T** skip cross-reference verification after modifying an artifact — **BECAUSE** broken references propagate confusion and erode trust.
|
|
50
|
+
|
|
51
|
+
## Enforcement
|
|
52
|
+
|
|
53
|
+
Always-on at every seriousness level, scaling per the table above. Implements CM-22. Canonical specification for ecosystem conventions and artifact lifecycle.
|
|
54
|
+
|
|
55
|
+
## Bindings (§0.j five-direction)
|
|
56
|
+
|
|
57
|
+
- **Drives →** ● Every non-trivial ecosystem action's pre-flight convention check (§1 Convention Awareness). ● Every artifact-evolution decision (§2 Proactive Evolution — refine vs. create heuristic). ● Every gap-detection sweep (§4 Ecosystem Gap Detection — agent / hook / rule / plugin / config / skill / command classes). ● Every CHANGELOG / CLAUDE.md registry update on artifact lifecycle events. ◐ Cross-reference accuracy enforcement on every artifact change at SHARED+.
|
|
58
|
+
- **Satisfies →** ● CM-22 (Conventions Vigilance — rule-delegated mandate). ● the rules registry row "Conventions Vigilance". ● `rules/persistent-conventions-vigilance.md` (the four-step Detect / Search / Act / Validate cycle).
|
|
59
|
+
- **Established by ↑** ● CM-22. ● `rules/persistent-conventions-vigilance.md`. ● the hooks pipeline timeout-value canonical block (this rule's §1 cites the canonical column for hook-timeout values).
|
|
60
|
+
- **Gated by ←** ● `CLAUDE.md` always-loaded preamble. ● `rules/operational-mandates.md` (CM-6 self-improvement gates artifact-evolution triggers).
|
|
61
|
+
- **Cross-bound with ↔** ↔ `rules/persistent-conventions-vigilance-checklist.md` (path-filtered companion sub-rule carrying the §1 Convention Awareness checklist and the §4 Ecosystem Gap Detection artifact-class triggers). ↔ `rules/operational-mandates.md` (CM-6 self-improvement triggers artifact evolution; CM-22 specifies the lifecycle here). ↔ `rules/auto-memory.md` (memory feeds gap-detection per §4; gap-detection writes to memory per the §2 evolution cycle). ↔ `rules/context-management.md` (§2.5 phase-exit delegates artifact-evolution evaluation to this rule's §2 + §4). ↔ the artifact registries Registries (the canonical registry surface this rule maintains). ↔ `rules/dynamism.md` (sibling discipline; dynamism is a ratified ecosystem convention whose new surfaces feed §4 Ecosystem Gap Detection). ↔ `rules/sota-elevation.md` (sibling discipline; SOTA-gap detection feeds §4 ecosystem-gap-detection).
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: "plain-language"
|
|
3
|
+
description: "User-facing apothem narrative reads as human-authored with zero process-tooling leak — a closed-set forbidden vocabulary (AI / agent / LLM / attestation / ratified / cutover-rehearsal / harness brand identifiers / plan-stage tokens) is eliminated from in-scope codebase-artifact surfaces; the product noun harness is a domain carve-out; dev-facing tech-spec, rule-tier, and per-harness materializer modules are out-of-scope process artifacts that retain their native vocabulary."
|
|
4
|
+
pathFilter: ""
|
|
5
|
+
alwaysApply: true
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
<!-- SPDX-License-Identifier: MIT -->
|
|
9
|
+
|
|
10
|
+
# Rule: Plain-language — User-Facing Narrative Free of Process-Tooling Leak
|
|
11
|
+
|
|
12
|
+
## Obligations
|
|
13
|
+
|
|
14
|
+
User-facing surfaces MUST read as human-authored product copy. Process-tooling vocabulary belongs in rules, commands, plans, matchers, adapters, and developer-only surfaces — not README / docs / site copy. Human-authored copy flows as prose by default; a list earns its place only where the content is genuinely enumerable, per the prose-over-lists floor at `rules/code-craft-markdown.md` §2.1 — a bulleted stub where a sentence carries the meaning reads as machine-fragmented, not human-authored.
|
|
15
|
+
|
|
16
|
+
### 1. Forbidden Vocabulary (closed set)
|
|
17
|
+
|
|
18
|
+
Eliminate from in-scope surfaces — the set is exactly what `conformity/plain_language_grep.py` enforces, word-boundary case-insensitive:
|
|
19
|
+
|
|
20
|
+
- **Mechanistic generics:** `AI`, `agent` (+ `agents`), `LLM` (+ `LLMs`), `attestation` (+ `attestations`).
|
|
21
|
+
- **Process-tooling markers:** `ratified`, `cutover-rehearsal`.
|
|
22
|
+
- **Harness brand identifiers:** `claude_code` / `claude-code`, `cursor`, `gemini`, `copilot`, `windsurf`, `codex`, `hermes`, `kimi_code` / `kimi-code`, `glm`.
|
|
23
|
+
- **Plan-stage patterns:** numbered stage labels (`phase <N>`), stream labels (`stream <A-Z>`), zero-padded nested-stage tokens (`<NN><A-Z>`).
|
|
24
|
+
|
|
25
|
+
### 2. Domain Carve-Outs
|
|
26
|
+
|
|
27
|
+
Allowed: `Apothem`, `apothem`, `polygon`, `regular polygon`, `apothem distance`. The product noun `harness` / `harnesses` is allowed — apothem's central product domain, not a leak. The generic `agent` / `agents` clears ONLY as a directory or cohort-directory reference (`agents/`, or `agents` enumerated beside sibling cohort directories), never as a mechanistic prose noun.
|
|
28
|
+
|
|
29
|
+
### 3. Boundary — In-Scope vs Out-of-Scope
|
|
30
|
+
|
|
31
|
+
- **In-scope:** README files, docs / site copy, workflow names and step names, asset alt / ARIA text, commit messages, PR / issue templates, CHANGELOG entries, Pages copy.
|
|
32
|
+
- **Out-of-scope:** `.apothem/plans/**`, `.plans/**`, rules, commands, matchers, adapter modules, materializers, and developer-only technical surfaces whose process vocabulary is load-bearing.
|
|
33
|
+
|
|
34
|
+
### 4. Resolution Paths
|
|
35
|
+
|
|
36
|
+
Resolve every finding by exactly one of: **rewrite** to natural product wording, **relocate** to an out-of-scope surface, or **carve-out citation** (a §2 domain term). Silent acceptance is non-conformant.
|
|
37
|
+
|
|
38
|
+
## Disclosure surface
|
|
39
|
+
|
|
40
|
+
Record each interception in the disclosure ledger per `rules/disclosure-ledger.md` as rewrite, relocate, or carve-out.
|
|
41
|
+
|
|
42
|
+
## Mechanical enforcement
|
|
43
|
+
|
|
44
|
+
`conformity/plain_language_grep.py` enforces §1 against §3 in-scope surfaces with the §2 carve-outs whitelisted.
|
|
45
|
+
|
|
46
|
+
## Failure tells
|
|
47
|
+
|
|
48
|
+
A user-facing sentence naming a mechanistic generic (`AI` / `agent` / `LLM`), a harness brand identifier, a plan stage, or a process marker (`ratified` / `attestation` / `cutover-rehearsal`) where natural product wording carries the meaning.
|
|
49
|
+
|
|
50
|
+
## Bindings (§0.j five-direction)
|
|
51
|
+
|
|
52
|
+
- **Drives →** Every in-scope user-facing surface emission in the apothem repo. The mechanical matcher at `conformity/plain_language_grep.py`. Every README / docs / workflow-name / asset-alt / PR-template / CHANGELOG / Pages-copy touch under §3 in-scope.
|
|
53
|
+
- **Satisfies →** `CLAUDE.md` §CM-7 (Coherent Product — codebase-artifact-vs-process-artifact boundary). The apothem-scope plain-language mandate and product-artifact boundary ratification.
|
|
54
|
+
- **Established by ↑** The plain-language sweep mandate (apothem-only). `CLAUDE.md` §CM-7. `rules/operational-mandates.md` §CM-7 (the inward-axis driver).
|
|
55
|
+
- **Gated by ←** The §3 boundary (out-of-scope surfaces are exempt). The §2 carve-outs (domain vocabulary and repo's own name retained).
|
|
56
|
+
- **Cross-bound with ↔** `rules/operational-mandates.md` (CM-7 codebase-coherence mandate this rule outward-projects). `rules/clean-room-generation.md` (Writing Protocol §2 produces narrative that naturally honors plain-language; this rule is the post-emission scan). `rules/disclosure-ledger.md` (M2 — plain-language interceptions land in the ledger). `rules/agent-capability-discipline.md` (plain-language-boundary surface — agent-capability prose stays out-of-scope while user-facing surfaces stay in-scope). `conformity/plain_language_grep.py` (the mechanical matcher operationalizing §1 against §3 with §2 carve-outs). `rules/own-voice-reimplementation.md` (sibling user-facing-vocabulary sweep on the same shipped surfaces this rule scans). `rules/freshness-facade.md` (sibling shipped-surface sweep — plain-language owns the mechanistic-vocabulary token-class, freshness-facade owns the freshness-narrative token-class; same scope, non-overlapping sets). `agents-md-convention.md` (the per-folder agent-facing guidance surface — an out-of-scope agent-facing process artifact whose process vocabulary is load-bearing, while the user-facing surfaces this rule scans stay in-scope).
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: "planning-techniques"
|
|
3
|
+
description: "Nine planning-review techniques — each pairing a Detect signal, a verification Procedure, and the Anti-pattern it guards against: iteration-loop safety, campaign dependency ordering, clean-slate artifact conflict, identity-claim verification, asymmetric-fix propagation, blind-review value, added-task completeness, severity-count verification, and strict-gate remediation. Applied on detection across plan generation, review, audit, and execution. Implements CM-20 / CM-21."
|
|
4
|
+
pathFilter: "**/.apothem/plans/**, **/.plans/**, **/commands/plan-*.md"
|
|
5
|
+
alwaysApply: false
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
<!-- SPDX-License-Identifier: MIT -->
|
|
9
|
+
|
|
10
|
+
# Rule: Planning Techniques Compendium
|
|
11
|
+
|
|
12
|
+
## Purpose
|
|
13
|
+
|
|
14
|
+
Consolidate nine planning review techniques into one reference. Each technique pairs a **Detect** signal (what surfaces it), a **Procedure** (the verification steps), and an **Anti-pattern** (the failure it guards against). Apply the matching technique on detection during plan generation, review, audit, and execution per the Seriousness-Scaling table and the §Decision Tree.
|
|
15
|
+
|
|
16
|
+
## Obligations
|
|
17
|
+
|
|
18
|
+
### 1. Iteration Loop Safety
|
|
19
|
+
|
|
20
|
+
**Detect:** Plan-text patterns that mandate retry without naming a cap — "iterate until X passes", "re-run until gate met", "retry until success", "loop until convergence". Any retry mandate that names the success criterion but omits a maximum attempt count is in scope.
|
|
21
|
+
**Procedure:** Verify three elements: (a) gate criterion — what must be met, (b) iteration cap — max attempts (e.g., 3), (c) retreat strategy — what happens if cap exhausted. The retreat must produce a usable outcome, not dead-end.
|
|
22
|
+
**Anti-pattern:** Risk mitigations that restate the problem ("Mitigation: iterate until passed") are circular — flag immediately.
|
|
23
|
+
|
|
24
|
+
### 2. Campaign Dependency Ordering
|
|
25
|
+
|
|
26
|
+
**Detect:** Prose phrases like "X then Y then Z ordering", "must complete before", explicit campaign sequencing mandates.
|
|
27
|
+
**Procedure:** (a) Extract prose-mandated execution sequence, (b) encode as strict prerequisite chain in dependency graph, (c) verify bidirectionally — topological order matches prose, (d) for each "Parallelizable with" declaration, confirm no sequential mandate exists.
|
|
28
|
+
**Anti-pattern:** Deriving dependencies only from data-flow analysis misses semantic ordering constraints imposed by experimental design.
|
|
29
|
+
|
|
30
|
+
### 3. Clean-Slate Artifact Conflict
|
|
31
|
+
|
|
32
|
+
**Detect:** "delete", "empty", "wipe", or "clean slate" applied to a directory.
|
|
33
|
+
**Procedure:** (a) Build artifact-path map — every phase's output paths, (b) for each destructive directory op, check if target is parent of any earlier artifact path, (c) resolve by relocating artifacts or narrowing wipe scope, (d) re-verify after resolution.
|
|
34
|
+
**Anti-pattern:** Directory-scope wipes vs. file-scope outputs — the abstraction-level mismatch makes conflicts invisible to dependency analysis.
|
|
35
|
+
|
|
36
|
+
### 4. Identity Claims Verification
|
|
37
|
+
|
|
38
|
+
**Detect:** Superlatives ("highest", "fastest"), quantitative thresholds ("within 1%"), ordering assertions ("A always beats B") in success criteria.
|
|
39
|
+
**Procedure:** (a) Extract all identity-level claims, (b) trace each to a specific pilot/validation task measuring the exact metric, (c) if none exists, add one to pilot phase, (d) ensure it gates downstream phases — no proceed on failure.
|
|
40
|
+
**Anti-pattern:** Absorbing identity claims into success criteria without creating testable gate tasks leaves claims unverified until full-scale execution.
|
|
41
|
+
|
|
42
|
+
### 5. Asymmetric Fix Application
|
|
43
|
+
|
|
44
|
+
**Detect:** A revision fixes a finding in one phase but structurally similar phases share the same pattern.
|
|
45
|
+
**Procedure:** (a) When applying a fix, identify all structurally similar phases, (b) apply the same fix to all of them, (c) verify propagation is complete — count affected phases before and after.
|
|
46
|
+
**Anti-pattern:** Fixing only the cited phase when the pattern recurs across multiple phases creates inconsistency.
|
|
47
|
+
|
|
48
|
+
### 6. Blind Review Value
|
|
49
|
+
|
|
50
|
+
**Detect:** Incremental reviews converging on "no new findings" while structural gaps may persist.
|
|
51
|
+
**Procedure:** (a) Conduct a blind re-audit without reading prior review results, (b) use novel audit dimensions not covered in prior reviews, (c) compare blind findings against prior findings to identify gaps.
|
|
52
|
+
**Anti-pattern:** Incremental reviews anchor on prior findings — blind reviews break this anchoring bias.
|
|
53
|
+
|
|
54
|
+
### 7. Added Task Completeness
|
|
55
|
+
|
|
56
|
+
**Detect:** A revision adds a new task to a phase's task table.
|
|
57
|
+
**Procedure:** (a) Navigate to the phase's Verification section, (b) add a corresponding checklist item verifying the new task's acceptance criteria, (c) treat task-table and verification-section as atomic pair — never update one without the other, (d) after all revisions, verify task-count vs. verification-item-count parity.
|
|
58
|
+
**Anti-pattern:** Adding a task without updating verification creates a silent gap between acceptance criteria and phase verification.
|
|
59
|
+
|
|
60
|
+
### 8. Severity Count Verification
|
|
61
|
+
|
|
62
|
+
**Detect:** Summary text containing severity breakdowns (e.g., "2 MEDIUM, 3 LOW").
|
|
63
|
+
**Procedure:** (a) After writing any summary with severity counts, navigate to the detailed findings table, (b) count entries by severity directly from the table, (c) compare against summary — the table is authoritative, (d) when synthesizing from multiple sources, reconcile categorization boundaries before tallying.
|
|
64
|
+
**Anti-pattern:** Manually estimating severity counts from memory during synthesis introduces arithmetic errors that persist across reviews.
|
|
65
|
+
|
|
66
|
+
### 9. Strict Gate Remediation
|
|
67
|
+
|
|
68
|
+
**Detect:** Findings registries, scorecards, or handoff manifests that use PASS / CONDITIONAL language while one or more findings still have `status=open`.
|
|
69
|
+
**Procedure:** (a) Count open findings from the registry, (b) require each finding to carry a concrete Fix Action and Remediation Class, (c) route mechanical findings to immediate fix, judgment findings to structured inquiry, and out-of-scope items to `*-maintenance`, (d) re-audit the touched loci, (e) block terminal handoff until open count is zero or every residual is explicitly operator-waived with rationale.
|
|
70
|
+
**Anti-pattern:** Treating CONDITIONAL as a pass while open findings remain turns review into reporting-only ceremony and pushes unresolved defects into execution.
|
|
71
|
+
|
|
72
|
+
**Severity ranking:** Techniques 1, 2, 4, and 9 are HIGH; 3, 5, 7, and 8 are MEDIUM; 6 is LOW.
|
|
73
|
+
|
|
74
|
+
## Seriousness Scaling
|
|
75
|
+
|
|
76
|
+
| Level | Techniques Application |
|
|
77
|
+
| ----- | ---------------------- |
|
|
78
|
+
| EXPLORING | Optional, on explicit user request — pipeline operates at reduced rigor by default |
|
|
79
|
+
| PERSONAL_USE | Apply techniques 1 and 4 (iteration safety, identity claims). Others on detection |
|
|
80
|
+
| SHARED | Apply all techniques on detection. Techniques 1, 2, 4, and 9 mandatory during `/plan-review` and `/plan-audit` |
|
|
81
|
+
| PUBLIC_LAUNCH | All techniques mandatory. Blind Review (technique 6) required for every review cycle |
|
|
82
|
+
|
|
83
|
+
## Decision Tree
|
|
84
|
+
|
|
85
|
+
```mermaid
|
|
86
|
+
%%{ init: { "theme": "neutral" } }%%
|
|
87
|
+
%% verified: 2026-04-27 %%
|
|
88
|
+
%% provenance: rules/planning-techniques.md §1-§9 (nine techniques) %%
|
|
89
|
+
%% cross-reference: rules/planning-techniques.md severity ranking %%
|
|
90
|
+
flowchart TD
|
|
91
|
+
Start[Plan review or generation surfaces a candidate concern] --> Q1{Retry mandate without iteration cap?}
|
|
92
|
+
Q1 -->|yes| T1[Technique 1 · Iteration Loop Safety · HIGH]
|
|
93
|
+
Q1 -->|no| Q2{Prose mandates execution sequence?}
|
|
94
|
+
Q2 -->|yes| T2[Technique 2 · Campaign Dependency Ordering · HIGH]
|
|
95
|
+
Q2 -->|no| Q3{Destructive op targets a parent of earlier outputs?}
|
|
96
|
+
Q3 -->|yes| T3[Technique 3 · Clean-Slate Artifact Conflict · MEDIUM]
|
|
97
|
+
Q3 -->|no| Q4{Superlatives or identity-level claims in success criteria?}
|
|
98
|
+
Q4 -->|yes| T4[Technique 4 · Identity Claims Verification · HIGH]
|
|
99
|
+
Q4 -->|no| Q5{Fix applied to one phase but pattern recurs in siblings?}
|
|
100
|
+
Q5 -->|yes| T5[Technique 5 · Asymmetric Fix Application · MEDIUM]
|
|
101
|
+
Q5 -->|no| Q6{Reviews converging on no-new-findings · structural gaps may persist?}
|
|
102
|
+
Q6 -->|yes| T6[Technique 6 · Blind Review Value · LOW]
|
|
103
|
+
Q6 -->|no| Q7{Revision adds task to phase task table?}
|
|
104
|
+
Q7 -->|yes| T7[Technique 7 · Added Task Completeness · MEDIUM]
|
|
105
|
+
Q7 -->|no| Q8{Summary contains severity counts?}
|
|
106
|
+
Q8 -->|yes| T8[Technique 8 · Severity Count Verification · MEDIUM]
|
|
107
|
+
Q8 -->|no| Q9{PASS or CONDITIONAL with open findings?}
|
|
108
|
+
Q9 -->|yes| T9[Technique 9 · Strict Gate Remediation · HIGH]
|
|
109
|
+
Q9 -->|no| Skip[No technique fires for this candidate]
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
## Anti-Patterns
|
|
113
|
+
|
|
114
|
+
- **DON'T** apply techniques only to the flagged finding — **BECAUSE** structurally similar phases share the same vulnerability (technique 5: Asymmetric Fix Application).
|
|
115
|
+
- **DON'T** treat iteration caps as optional guardrails — **BECAUSE** unbounded retry loops consume phases without producing usable outcomes (technique 1: Iteration Loop Safety).
|
|
116
|
+
- **DON'T** derive dependencies only from data-flow analysis — **BECAUSE** semantic ordering constraints from experimental design are invisible to data-flow (technique 2: Campaign Dependency Ordering).
|
|
117
|
+
- **DON'T** add tasks without updating the corresponding verification section — **BECAUSE** task-table and verification-section are an atomic pair; gaps between them create silent acceptance-criteria holes (technique 7: Added Task Completeness).
|
|
118
|
+
- **DON'T** hand off with open findings hidden behind a CONDITIONAL scorecard — **BECAUSE** terminal gates are about unresolved defects, not only score labels (technique 9: Strict Gate Remediation).
|
|
119
|
+
|
|
120
|
+
## Enforcement
|
|
121
|
+
|
|
122
|
+
Path-filtered (`**/.apothem/plans/**`, `**/.plans/**`, `**/commands/plan-*.md`), scaling per the table above. Implements CM-20 (Pipeline Orchestration), CM-21 (Creative Quality). Canonical specification for planning review techniques.
|
|
123
|
+
|
|
124
|
+
## Bindings (§0.j five-direction)
|
|
125
|
+
|
|
126
|
+
- **Drives →** ● Every plan-pipeline review and audit surface (the nine techniques apply during `/plan-review` and `/plan-audit` cycles per the command contracts). ● Every plan revision's structural sweep (the asymmetric-fix-application technique fires when revisions land). ● Every plan-generate emission's identity-claims verification (technique 4 gates pilot-phase task creation). ● Every zero-open-finding terminal handoff (technique 9 blocks unresolved findings). ◐ The blind re-audit cadence at PUBLIC_LAUNCH (technique 6 mandatory at the highest seriousness tier).
|
|
127
|
+
- **Satisfies →** ● CM-20 (Pipeline Orchestration) + CM-21 (Creative Quality — planning-technique facet per §7.2 facet delineation). ● the rules registry row "Planning Techniques".
|
|
128
|
+
- **Established by ↑** ● CM-20 + CM-21. ● `rules/cognitive-identity.md` Cognitive Identity (Filter 2-4 ↔ ideation-techniques; this rule's nine techniques are the planning facet of the same creative discipline).
|
|
129
|
+
- **Gated by ←** ● The path-filter (`**/.apothem/plans/**`, `**/.plans/**`, `**/commands/plan-*.md`) — this rule activates only on plan-pipeline artifact touches. ● `rules/cognitive-identity.md` Filter 1 + Filter 5 always-on baseline.
|
|
130
|
+
- **Cross-bound with ↔** ↔ `rules/cognitive-identity.md` (the cognitive-filter sequence and the nine-technique catalog are sibling facets of CM-21). ↔ `rules/clean-room-generation.md` (third co-implementer of CM-21; planning-technique facet here, generation-methodology facet there). ↔ `commands/plan-review.md` + `commands/plan-audit.md` (review/audit workflows operationalize the nine techniques). ↔ `commands/plan-generate.md` + `commands/plan-execute.md` (techniques 1-4 fire during generate; techniques 5-9 fire during execute/review handoffs).
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: "pre-emission-gate-bars"
|
|
3
|
+
description: "Path-filtered companion rule carrying the full Fifteen-Bars table (M1–M15 detailed Check + Failure→action columns), the Attestation Schema YAML block, and the iteration-on-failure protocol declared at the parent `pre-emission-gate.md` rule's anchor; demand-loaded when the assistant edits any artifact whose emission triggers the fifteen-bar gate."
|
|
4
|
+
pathFilter: "**/*.md, **/CLAUDE.md, **/rules/**, **/commands/**, **/skills/**, **/agents/**, **/docs/**"
|
|
5
|
+
alwaysApply: false
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
<!-- SPDX-License-Identifier: MIT -->
|
|
9
|
+
|
|
10
|
+
# Rule: Pre-Emission Gate — Fifteen-Bars Detail (Companion Sub-Rule)
|
|
11
|
+
|
|
12
|
+
## Purpose
|
|
13
|
+
|
|
14
|
+
Carry the executable detail of the fifteen-bar pre-emission gate the parent `rules/pre-emission-gate.md` anchors: the per-bar Check + Failure→action table, the Attestation Schema YAML block, and the iteration-on-failure protocol. Path-filtered — loads on any artifact-emission surface (Markdown, CLAUDE.md, rules, commands, skills, agents, docs) — so the parent's always-on payload stays lean while full bar-level fidelity lives at the demand-load surface. The parent retains the standing directive, the one-line bar list, the disclosure-surface paragraph, and the failure tells.
|
|
15
|
+
|
|
16
|
+
## Obligations
|
|
17
|
+
|
|
18
|
+
### 1. The Fifteen Bars — Full Detail
|
|
19
|
+
|
|
20
|
+
Every emitted artifact passes each bar individually. Mechanical-fraction bars (M2, M5, M7, M8, M10, M13, M15) carry executable matchers at `conformity/*-grep.py`, run as `PreToolUse` hook checks orchestrated by `conformity/gate.py`. Reasoned bars (M1, M3, M6, M9, M11, M12, M14) are agent-evaluated and recorded in the attestation block.
|
|
21
|
+
|
|
22
|
+
| # | Bar | Check (mechanical or reasoned) | Failure → action |
|
|
23
|
+
|---|---|---|---|
|
|
24
|
+
| 1 | M1 — Host agnosticism | Artifact's idioms match sibling-file idioms (formatter / linter / naming / layout). | Revise to match host conventions per `rules/host-discovery.md`. |
|
|
25
|
+
| 2 | M2 — Editorial disclosure | Every amendment / extension / refinement is disclosed with cited rationale. | Add disclosure ledger per `rules/disclosure-ledger.md`. |
|
|
26
|
+
| 3 | M3 — Ten dimensions | Each of the ten dimensions individually passes. | Revise on the failing dimension(s) per `rules/ten-dimension-check.md`. |
|
|
27
|
+
| 4 | M4 — Self-application | Gate attestation block is present in the artifact's working trace. | Record attestation. |
|
|
28
|
+
| 5 | M5 — Authority | No `<USER-CONFIRM:…>` placeholders remain unfilled. No invented personal / authoritative data. | Re-route to inquiry surface per `rules/authority-inquiry.md`. |
|
|
29
|
+
| 6 | M6 — Expertise | Surfaced-gaps section is present where adjacent gaps exist; refinements cite rationale. | Surface gaps; cite per `rules/expertise-posture.md`. |
|
|
30
|
+
| 7 | M7 — Option annotation | Every multi-option choice carries `**Recommended**` + specific rationale. | Annotate per `rules/option-annotation.md`. |
|
|
31
|
+
| 8 | M8 — Definitiveness | Hedging vocabulary absent in prescriptive contexts; pre / post / failure conditions stated. | Promote hedging to conditionals; state contracts per `rules/definitiveness.md`. |
|
|
32
|
+
| 9 | M9 — Visual leverage | Structural subject matter has a current-reality diagram with provenance + verification date. | Author / refresh diagram per `rules/visual-leverage.md`. |
|
|
33
|
+
| 10 | M10 — Bidirectional binding | Substantive elements declare bindings; reciprocity is closed. | Close half-edges per `rules/bidirectional-binding.md`. |
|
|
34
|
+
| 11 | M11 — Agile sprints | For non-trivial work: Sprint Goal + Backlog + DoR + DoD + Review + Retrospective populated. | Restructure as sprints per `rules/agile-sprints.md`. |
|
|
35
|
+
| 12 | M12 — Phase reporting & layout | For multi-phase work: per-sub-phase reports + phase-level rollup; outputs at canonical layout. | Author rollup; relocate per `rules/canonical-layout.md`. |
|
|
36
|
+
| 13 | M13 — Code craft | Code passes host's lint / format / type-check; why-not-what comments; no magic numbers / bare-except / commented-out blocks. | Revise per `rules/code-craft-python.md` and sibling per-language code-craft rules. |
|
|
37
|
+
| 14 | M14 — Systemicity | New components declare upstream / downstream / peers / enforcers; indexed in host registries. | Declare; index per `rules/systemic-participation.md`. |
|
|
38
|
+
| 15 | M15 — Production-ready | Code change ships with tests + docs + CHANGELOG entry + conformant commit + CI green. | Add missing surfaces per `rules/production-ready-prs.md`. |
|
|
39
|
+
|
|
40
|
+
### 2. Attestation Schema
|
|
41
|
+
|
|
42
|
+
The attestation is appended to the artifact's working trace (commit body, PR description, change ledger, dedicated `attestation.yml`):
|
|
43
|
+
|
|
44
|
+
```yaml
|
|
45
|
+
conformity-attestation:
|
|
46
|
+
artifact: <path-or-identifier>
|
|
47
|
+
ecosystem-version: <git-commit-sha-or-equivalent ratifying the rule set in force>
|
|
48
|
+
bars:
|
|
49
|
+
M1-host-agnosticism: pass | n/a (with reason)
|
|
50
|
+
M2-editorial-disclosure: pass | n/a
|
|
51
|
+
M3-ten-dimensions: pass | n/a
|
|
52
|
+
M4-self-application: pass
|
|
53
|
+
M5-authority: pass
|
|
54
|
+
M6-expertise: pass | n/a
|
|
55
|
+
M7-option-annotation: pass | n/a (no option set)
|
|
56
|
+
M8-definitiveness: pass
|
|
57
|
+
M9-visual-leverage: pass | n/a (subject not structural)
|
|
58
|
+
M10-bidirectional-binding: pass | n/a (subject not structural-multi-element)
|
|
59
|
+
M11-agile-sprints: pass | n/a (trivial work)
|
|
60
|
+
M12-phase-layout: pass | n/a (single-artifact emission)
|
|
61
|
+
M13-code-craft: pass | n/a (not code)
|
|
62
|
+
M14-systemicity: pass
|
|
63
|
+
M15-production-ready: pass | n/a (no host-public-surface change)
|
|
64
|
+
surfaced-gaps: []
|
|
65
|
+
unresolved-inquiries: []
|
|
66
|
+
amendments-disclosed: []
|
|
67
|
+
date: <ISO-8601>
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
Every `n/a` is explicit and reasoned — never a silent skip. The `ecosystem-version` field anchors the attestation to a reproducible ecosystem state (the apothem source-repo commit when the gate ran), so a future audit can replay the gate against the same rule bodies.
|
|
71
|
+
|
|
72
|
+
### 3. Iteration on failure
|
|
73
|
+
|
|
74
|
+
A single bar failure blocks emission. Revise the artifact per the failing bar's "Failure → action" cell — which names the rule that owns the revision protocol — and re-run the gate. Iterate until every bar passes, then emit with the attestation recorded.
|
|
75
|
+
|
|
76
|
+
## Enforcement
|
|
77
|
+
|
|
78
|
+
Path-filtered (the seven glob patterns in this rule's `pathFilter` field), always-on at every seriousness level when in scope. Demand-loaded companion to `rules/pre-emission-gate.md`. The parent carries the standing directive, one-line bar list, disclosure-surface paragraph, and failure tells; this companion carries the bar-level table, the attestation YAML schema, and the iteration-on-failure protocol.
|
|
79
|
+
|
|
80
|
+
## Bindings (§0.j five-direction)
|
|
81
|
+
|
|
82
|
+
- **Drives →** ● The per-bar Check + Failure→action enforcement on every emitted artifact under the path-filter. ● The attestation YAML schema's appearance in every artifact's working trace. ● The iteration-on-failure protocol's revise-and-re-run loop.
|
|
83
|
+
- **Satisfies →** ● the fifteen-mandate registry row **M4 — Self-Application** (companion-sub-rule materialization). ● the Pre-Emission Gate Attestation Schema. ● `rules/pre-emission-gate.md` anchor (the parent rule's pointer to this companion's full bar-level catalog).
|
|
84
|
+
- **Established by ↑** ● `rules/pre-emission-gate.md` (parent-rule anchor). ● the Pre-Emission Gate. ● the Pre-Emission Gate Attestation Schema.
|
|
85
|
+
- **Gated by ←** ● The path-filter (seven glob patterns) — this rule demand-loads only on emission-surface touches. ● `rules/pre-emission-gate.md` always-on baseline (parent rule's anchor must be live for the companion to demand-load coherently).
|
|
86
|
+
- **Cross-bound with ↔** ↔ `rules/pre-emission-gate.md` (parent rule; anchor binds this companion). ↔ Every M-rule named in the gate's "Failure → action" column (`rules/host-discovery.md`, `rules/disclosure-ledger.md`, `rules/ten-dimension-check.md`, `rules/authority-inquiry.md`, `rules/expertise-posture.md`, `rules/option-annotation.md`, `rules/definitiveness.md`, `rules/visual-leverage.md`, `rules/bidirectional-binding.md`, `rules/agile-sprints.md`, `rules/canonical-layout.md`, `rules/code-craft-python.md` and sibling per-language code-craft rules, `rules/systemic-participation.md`, `rules/production-ready-prs.md`).
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: "pre-emission-gate"
|
|
3
|
+
description: "Fifteen-bar pre-emission gate — every host-project artifact passes M1 through M15 before emission, with a recorded YAML attestation and explicit n/a reasoning where a bar does not apply."
|
|
4
|
+
pathFilter: ""
|
|
5
|
+
alwaysApply: true
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
<!-- SPDX-License-Identifier: MIT -->
|
|
9
|
+
|
|
10
|
+
# Rule: Pre-Emission Gate — Fifteen-Bar Self-Application
|
|
11
|
+
|
|
12
|
+
## What this rule enforces
|
|
13
|
+
|
|
14
|
+
This rule binds **M4 — Self-Application: Every Artifact Passes the Same Bar Before Emission**. Every artifact the ecosystem emits in a host project — commit, diff, file, PR description, comment, response, doc page, diagram, test, example, migration script, config entry — MUST itself clear all fifteen mandates. Quality is a pre-emission concern, never a downstream "the user can revise it" concern. The bar is **fifteen**: the ten dimensions of M3 plus M5, M6, M7, M8, M9, M10, M11, M12, M13, M14, M15. An artifact that fails any single bar MUST be revised before it leaves the agent's hands.
|
|
15
|
+
|
|
16
|
+
## Pre-conditions
|
|
17
|
+
|
|
18
|
+
Applies before any meaningful-scope emission per the trivial-vs-non-trivial threshold. Trivial emissions (single-file edit ≤ 5 lines AND no public-API change AND no behavioral shift) run an abbreviated gate covering **M4** (attestation present) and **M5** (no `<USER-CONFIRM:…>` placeholders) only.
|
|
19
|
+
|
|
20
|
+
## Required behavior
|
|
21
|
+
|
|
22
|
+
### The Fifteen Bars (one-line summary)
|
|
23
|
+
|
|
24
|
+
Each bar MUST pass individually before emission:
|
|
25
|
+
|
|
26
|
+
- **M1** Host agnosticism · **M2** Editorial disclosure · **M3** Ten dimensions · **M4** Self-application · **M5** Authority · **M6** Expertise · **M7** Option annotation · **M8** Definitiveness · **M9** Visual leverage · **M10** Bidirectional binding · **M11** Agile sprints · **M12** Phase reporting & layout · **M13** Code craft · **M14** Systemicity · **M15** Production-ready.
|
|
27
|
+
|
|
28
|
+
Mechanical-fraction bars (M2, M5, M7, M8, M10, M13, M15) carry executable matchers at `conformity/*-grep.py` orchestrated by `conformity/gate.py`; reasoned bars (M1, M3, M6, M9, M11, M12, M14) are agent-evaluated and recorded in the attestation.
|
|
29
|
+
|
|
30
|
+
(Companion Sub-Rule Anchor) See `rules/pre-emission-gate-bars.md` §1 for the per-bar Check + Failure→action table.
|
|
31
|
+
|
|
32
|
+
### Attestation Schema
|
|
33
|
+
|
|
34
|
+
The attestation is appended to the artifact's working trace (commit body, PR description, change ledger, or a dedicated `attestation.yml`): one `pass | n/a (with reason)` line per bar, plus the `surfaced-gaps`, `unresolved-inquiries`, and `amendments-disclosed` arrays, an `artifact` identifier, an `ecosystem-version` SHA, and an ISO-8601 `date`. Every `n/a` MUST carry a reason — silent skips are non-conformant. (Companion Sub-Rule Anchor) See `rules/pre-emission-gate-bars.md` §2 for the YAML schema.
|
|
35
|
+
|
|
36
|
+
### Iteration on failure
|
|
37
|
+
|
|
38
|
+
A single bar failure blocks emission. Revise per that bar's "Failure → action" rule, then re-run the gate; repeat until every bar passes. (Companion Sub-Rule Anchor) See `rules/pre-emission-gate-bars.md` §3.
|
|
39
|
+
|
|
40
|
+
## Disclosure surface
|
|
41
|
+
|
|
42
|
+
The attestation block IS the disclosure surface. Surfaced gaps (M6), unresolved inquiries (M5), and disclosed amendments (M2) populate three named arrays; empty arrays are written explicitly (`surfaced-gaps: []`), never elided.
|
|
43
|
+
|
|
44
|
+
## Failure tells
|
|
45
|
+
|
|
46
|
+
A commit that breaks the host's lint. A PR description with a dead link. A doc page citing a phantom URL. A diagram describing a flow the code does not implement. An attestation marked `pass` while a checked condition demonstrably fails. A bar marked `n/a` with no reason. An attestation missing the `date` or `ecosystem-version` field. A `pass` attestation on an artifact a mechanical `conformity/*-grep.py` flags as failing.
|
|
47
|
+
|
|
48
|
+
## Bindings (§0.j five-direction)
|
|
49
|
+
|
|
50
|
+
- **Drives →** Every host-project artifact emission across every ecosystem surface (the gate is the literal last step before emission). The mechanical-fraction enforcement at `conformity/*-grep.py` orchestrated by `conformity/gate.py`. The gate-attestation requirement at every `commands/*.md` Step N closing emission. The gate-attestation block at every `agents/*.md` return format.
|
|
51
|
+
- **Satisfies →** the fifteen-mandate registry row **M4 — Self-Application**. the Pre-Emission Gate (this rule is the canonical operationalization). the Pre-Emission Gate Attestation Schema.
|
|
52
|
+
- **Established by ↑** the fifteen-mandate registry (ratifies M4). the Pre-Emission Gate (the gate table this rule mirrors at full body bar). the Pre-Emission Gate attestation schema (the attestation schema this rule reproduces).
|
|
53
|
+
- **Gated by ←** The §8.1 trivial-vs-non-trivial threshold (trivial emissions run the abbreviated gate). `CLAUDE.md` always-loaded preamble.
|
|
54
|
+
- **Cross-bound with ↔** `rules/pre-emission-gate-bars.md` (path-filtered companion sub-rule carrying the full Fifteen-Bars table, the Attestation Schema YAML block, and the iteration-on-failure protocol). Every M-rule named in the gate's "Failure → action" column (`rules/host-discovery.md`, `rules/disclosure-ledger.md`, `rules/ten-dimension-check.md`, `rules/authority-inquiry.md`, `rules/expertise-posture.md`, `rules/option-annotation.md`, `rules/definitiveness.md`, `rules/visual-leverage.md`, `rules/bidirectional-binding.md`, `rules/agile-sprints.md`, `rules/canonical-layout.md`, `rules/code-craft-python.md` and sibling per-language code-craft rules, `rules/systemic-participation.md`, `rules/production-ready-prs.md`). `rules/operational-mandates.md` §CM-1 Critical Evaluation × §CM-7 Coherent Product (M4 is the composite outward-projection form of these two CM-N mandates). `rules/dynamism.md` (bar 8 fires the `static-version-grep` matcher and consumes its verdict). `rules/recommend-next-step.md` (M4 — block presence is a gated bar at terminal-surface emission). `rules/token-efficiency-rewrite.md` (bar inspection of L3 anchor-diff zero-drift and L2-preservation attestation). `rules/agnostic-posture.md` (under the host-agnostic posture the gate's bars surface as advisories, not blocks). `rules/determinism.md` (the gate consumes the determinism matcher's verdict on byte-stable materialized outputs). `rules/session-closure.md` (M4 — the formal session close's verification-attestation element is the session-scale analog of the gate's per-bar attestation; a close's "checked" column mirrors the gate's bar attestation at the session boundary).
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: "production-ready-prs-surfaces"
|
|
3
|
+
description: "Path-filtered companion to `rules/production-ready-prs.md` carrying the operational depth of M15: the seven visibility surfaces, the supply-chain posture catalog, the release-engineering invariants, the commit-message convention (with the human-only authorship clause), the CI-green discipline, and the modern-project-surface specification. Demand-loaded when the assistant edits any visibility-surface artifact (README / CHANGELOG / CONTRIBUTING / LICENSE / SECURITY / `.github/**` / install / update / uninstall scripts)."
|
|
4
|
+
pathFilter: "**/README.md, **/CHANGELOG.md, **/CONTRIBUTING.md, **/LICENSE, **/.github/**, **/install.*, **/update.*, **/uninstall.*, **/CODEOWNERS, **/SECURITY.md, **/SUPPORT.md"
|
|
5
|
+
alwaysApply: false
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
<!-- SPDX-License-Identifier: MIT -->
|
|
9
|
+
|
|
10
|
+
# Rule: Production-Ready Visibility Surfaces & Modern Project Surface (Companion Sub-Rule)
|
|
11
|
+
|
|
12
|
+
## Purpose
|
|
13
|
+
|
|
14
|
+
Specify the catalog surfaces and the modern-project-surface specification that the parent rule `rules/production-ready-prs.md` cites at its anchor lines. This companion is path-filtered: it loads when the assistant edits any of the visibility-surface artifact classes (README, CHANGELOG, CONTRIBUTING, LICENSE, SECURITY, SUPPORT, CODEOWNERS, `.github/**`, install / update / uninstall scripts). The parent rule remains the canonical home for the same-change-set discipline (§1), the gap-surfacing summary (§5), and the disclosure-surface / failure-tells / bindings; this companion carries the moved sections (§2, §3, §4, §6, §7, §8.1–§8.7).
|
|
15
|
+
|
|
16
|
+
## Obligations
|
|
17
|
+
|
|
18
|
+
### 1. The Seven Visibility Surfaces
|
|
19
|
+
|
|
20
|
+
The seven visibility surfaces of a production-ready artifact set, applied to the host project:
|
|
21
|
+
|
|
22
|
+
| Surface | Question the surface answers | Where it lives in the host |
|
|
23
|
+
|---|---|---|
|
|
24
|
+
| **What-is-this** | What does this project do, in one sentence I can read on landing? | `README.md` opening paragraph; `pyproject.toml` `description` field; documentation site landing page |
|
|
25
|
+
| **How-to-install / use** | How do I install / get started / run my first example? | `README.md` Quick Start section; `INSTALL.md`; documentation site Installation page |
|
|
26
|
+
| **Is-it-alive** | Is this project actively developed? Is the build passing? | CI status badges in `README.md`; recent commits in git log; CHANGELOG `[Unreleased]` section freshness |
|
|
27
|
+
| **Is-it-safe** | What's the license? Is there a security policy? What versions are supported? | `LICENSE` file; `SECURITY.md`; `SUPPORT.md`; supported-versions table in README |
|
|
28
|
+
| **How-to-contribute** | How do I report a bug, propose a feature, submit a PR? | `CONTRIBUTING.md`; `CODE_OF_CONDUCT.md`; issue templates at `.github/ISSUE_TEMPLATE/`; PR template at `.github/pull_request_template.md` |
|
|
29
|
+
| **Can-I-trust** | License clear? CHANGELOG maintained? Release signing ratified? CI green? Tests exist? | All-of-above must align: LICENSE present, CHANGELOG up-to-date, release signing where required, CI green, test coverage above the host's ratified threshold |
|
|
30
|
+
| **What-changed-and-when** | What changed in this version? When? Why? | `CHANGELOG.md`; release notes at the host's release surface; clean git history |
|
|
31
|
+
|
|
32
|
+
Where the host already operates these surfaces, the agent honors them — every change keeps them current. Where the host lacks a surface, the agent **MUST NOT unilaterally install** it: surface the gap as a finding per `rules/authority-inquiry.md` with the recommended option per `rules/option-annotation.md`.
|
|
33
|
+
|
|
34
|
+
### 2. Supply-Chain Posture Preservation (M13.8 reinforced)
|
|
35
|
+
|
|
36
|
+
Every change MUST preserve the host's supply-chain posture:
|
|
37
|
+
|
|
38
|
+
- **No new unpinned dependency.** New production dependencies are pinned per the host's ratified policy (`==X.Y.Z` for Python production; `^X.Y.Z` for libraries; equivalent elsewhere). Library projects MAY use ranges in `pyproject.toml` per host convention; production projects pin.
|
|
39
|
+
- **No secret literal.** No API key, token, password, private key, or certificate committed to source. The `secret-leak-grep` matcher at `conformity/secret_leak_grep.py` operationalizes the check.
|
|
40
|
+
- **No permission escalation.** CI workflow permission scopes MUST NOT widen without explicit justification; existing minimum-scope `permissions:` blocks are preserved.
|
|
41
|
+
- **Pinned actions.** GitHub Actions `uses:` references are pinned to commit SHAs (with version-tag comments) per the host's ratified policy. The `unpinned-action-grep` matcher at `conformity/unpinned_action_grep.py` operationalizes the check.
|
|
42
|
+
- **No unsigned release artifact** where the host's release policy requires signing (Sigstore cosign, GPG, SLSA provenance).
|
|
43
|
+
|
|
44
|
+
### 3. Release-Engineering Invariants
|
|
45
|
+
|
|
46
|
+
- **Versioning scheme honored.** The host's ratified scheme (semver, calver, custom) is preserved across every change. Breaking changes increment MAJOR (semver) or signal incompatibility per the host's convention.
|
|
47
|
+
- **Tag-to-version consistency.** Git tags MUST match the version declared in the host's manifest (`pyproject.toml`, `package.json`, `Cargo.toml`, `go.mod` module-major-version suffix). A tag with no matching manifest version-bump is a violation.
|
|
48
|
+
- **Tag signing where ratified.** When the host's release policy requires GPG-signed tags, the tag is signed.
|
|
49
|
+
- **Current-version public facade.** Release-facing repositories expose the current version as the single visible public story: one current release tag, one release entry, one package per registry surface, current deployment records, and no public narrative referencing superseded release work or internal planning history. Publication follows green local validation and release-readiness workflows.
|
|
50
|
+
|
|
51
|
+
### 4. Commit-Message Discipline
|
|
52
|
+
|
|
53
|
+
Every commit message honors the host's ratified convention, discovered per `rules/host-discovery.md`:
|
|
54
|
+
|
|
55
|
+
- **Conventional Commits.** When sibling commits use `<type>(<scope>): <summary>` with types from `{feat, fix, chore, docs, refactor, test, perf, ci, build, style, revert}`, the new commit follows the same shape.
|
|
56
|
+
- **Host-specific format.** When `CONTRIBUTING.md` documents a project convention (e.g., `[CATEGORY] <summary>`, ticket-prefix `JIRA-1234: <summary>`), the new commit follows it.
|
|
57
|
+
- **Subject line length.** Under the host's ratified limit (commonly 50 / 72 / 80 chars per `.gitmessage` template or sibling commits).
|
|
58
|
+
- **Body discipline.** The body explains the **why**, not just the **what**, wraps at the host's ratified column (commonly 72 / 80), and references issue trackers per the host's pattern.
|
|
59
|
+
- **Co-author attribution.** A `Co-Authored-By:` trailer is added only when the change is genuinely co-authored by **another human contributor**, per the host's pattern.
|
|
60
|
+
- **Human-only authorship.** Every authorship surface of every git artifact — commit subject, commit body, `Author:` field, `Co-Authored-By:` trailer, `Signed-off-by:` trailer, branch name, tag name, tag annotation, stash name, git-notes body, PR title, PR description — names **human contributors only**. The agent **MUST NOT** add itself, the underlying language model, the runtime / harness / IDE / extension / vendor, or any other automated tool to any of those surfaces. Forbidden patterns include but are not limited to: `Co-Authored-By: Claude …`, `Co-Authored-By: GPT …`, `Co-Authored-By: Copilot …`, `Co-Authored-By: Cursor …`, `Co-Authored-By: <any-LLM-name> …`, `Co-Authored-By: <noreply@*-vendor.com>`, body narrative like "generated with X" / "co-authored by an AI" / "with assistance from `<agent>`" / "🤖 Generated with …", and any subject-line marker signalling agent authorship. **Why.** Co-authorship trailers carry legal and audit weight — joint authorship for licensing, code-review attribution, contribution metrics, downstream provenance, supply-chain attestation. Naming a non-human misrepresents the authorship graph, pollutes contributor analytics, and creates ambiguity in licensing-derived works. The sole authorship git resolves at commit time is the operator's own identity; the agent is the instrument the operator wields, not a co-author of record. A change-set that seems to need non-human attribution is a process failure resolved out-of-band (release notes, project docs, the PR description's tooling section), never inside git authorship metadata.
|
|
61
|
+
|
|
62
|
+
### 5. CI-Green Discipline
|
|
63
|
+
|
|
64
|
+
The change-set MUST be **CI-green** before the change is complete:
|
|
65
|
+
|
|
66
|
+
- **Lint / format / type-check / test** — the host's full quality matrix passes. Lint findings are not deferred; type-check failures are not suppressed without justification; test failures are not skipped absent an explicit `@pytest.mark.skip` / equivalent annotation citing the reason.
|
|
67
|
+
- **Coverage** — where the host enforces a threshold, the change-set holds coverage at or above it.
|
|
68
|
+
- **Security scans** — CodeQL, Bandit, Trivy, gitleaks (where configured) report no new HIGH-severity findings.
|
|
69
|
+
- **Build** — the host's build artifact (sdist + wheel for Python; `npm pack` for Node; `cargo build` for Rust) succeeds.
|
|
70
|
+
- **Documentation build** — a Fumadocs / Docusaurus / Sphinx / equivalent docs build (where present) is clean.
|
|
71
|
+
|
|
72
|
+
A CI failure is **diagnosed and fixed in the same change-set**, never deferred. Marking a CI failure flaky without diagnosis is itself a finding.
|
|
73
|
+
|
|
74
|
+
### 6. Modern Project Surface
|
|
75
|
+
|
|
76
|
+
Every host project — and apothem itself, by self-application — ships a **modern project surface** that any operator can install, update, and uninstall in seconds without reading the source. It has six required components.
|
|
77
|
+
|
|
78
|
+
#### 6.1 Multi-OS Install Scripts
|
|
79
|
+
|
|
80
|
+
Paired install scripts at the repository root, one per supported shell family:
|
|
81
|
+
|
|
82
|
+
| Script | Hosts | Run-from-network form |
|
|
83
|
+
|---|---|---|
|
|
84
|
+
| `scripts/installer/install.sh` | macOS, Linux, WSL2, BSD, Termux, ChromeOS Linux container | `curl -fsSL <raw>/install.sh \| bash` |
|
|
85
|
+
| `scripts/installer/install.ps1` | Windows PowerShell 5.1+, PowerShell 7+ on any platform | `irm <raw>/install.ps1 \| iex` |
|
|
86
|
+
|
|
87
|
+
Both scripts MUST be **idempotent** (re-running on an existing checkout fast-forwards rather than failing or duplicating), **prerequisite-checked** (refuse to run when required tooling is missing), and **environment-configurable** (install destination, remote URL, target ref, skip flags). Each emits a clear next-steps banner on success. A project targeting one shell family declares the limitation explicitly in its README; silent omission is non-conformant.
|
|
88
|
+
|
|
89
|
+
#### 6.2 Multi-OS Update / Auto-Update Path
|
|
90
|
+
|
|
91
|
+
Every host project supports update via at least one of three paths: idempotent re-run of the install script; a dedicated `scripts/installer/update.sh` + `scripts/installer/update.ps1` pair; or an auto-update tool (CLI or scheduled task) that reports upstream commits and optionally fast-forwards.
|
|
92
|
+
|
|
93
|
+
The auto-update tool MUST be **read-only by default** — a single invocation MUST NOT mutate the working tree without an explicit `--apply` / `-Apply` flag. A silently-mutating integration is non-conformant per M5 authority-inquiry: a silent fast-forward is silent override of the operator's working state.
|
|
94
|
+
|
|
95
|
+
#### 6.3 Multi-OS Uninstall Path
|
|
96
|
+
|
|
97
|
+
Paired uninstall scripts at the repository root: `scripts/installer/uninstall.sh` and `scripts/installer/uninstall.ps1`. Each script MUST:
|
|
98
|
+
|
|
99
|
+
- **Confirm with the operator** before any destructive action (interactive prompt unless `--yes` / `-Yes`).
|
|
100
|
+
- **Preserve operator state** — back up targets before removal, or delegate to a CLI that already backs up managed replacements; permanent deletion requires an explicit documented path.
|
|
101
|
+
- **Refuse unsafe targets** (`$HOME`, `/`, an empty path, a directory failing the project's sentinel-file check).
|
|
102
|
+
- **Clean up companion install state** (editable Python install, shell-profile environment-variable references) per the host's ratified install footprint.
|
|
103
|
+
|
|
104
|
+
#### 6.4 Logo Asset
|
|
105
|
+
|
|
106
|
+
Every host project ships a logo at the canonical location `assets/logo.svg`:
|
|
107
|
+
|
|
108
|
+
- **SVG-first** (scalable, version-controllable, themable). A raster fallback at `assets/logo.png` (256×256) is acceptable; SVG is preferred.
|
|
109
|
+
- **Wired into the README header** via a centered `<p align="center"><img src="assets/logo.svg" ...></p>` block as the first content element.
|
|
110
|
+
- **Wired into the documentation site** via the host docs framework's logo hook.
|
|
111
|
+
- **Accessible** — the `<img>` carries an `alt` attribute; the SVG carries `<title>` and `<desc>` elements.
|
|
112
|
+
|
|
113
|
+
A project that has not yet authored a logo declares the absence in its README rather than leaving the header silent; the absence is a gap-surfacing per the parent rule's §5.
|
|
114
|
+
|
|
115
|
+
#### 6.5 Modern README Header — MAXIMAL Pattern
|
|
116
|
+
|
|
117
|
+
Every host project's `README.md` opens with the **MAXIMAL centered-header pattern** per `rules/sota-elevation.md` (the SOTA floor for OSS distribution projects):
|
|
118
|
+
|
|
119
|
+
1. **Centered logo** per §6.4 — `<p align="center"><img src="assets/logo.svg" ...></p>` as the first content element.
|
|
120
|
+
2. **Centered project title** — `<h1 align="center">`.
|
|
121
|
+
3. **Centered one-sentence tagline** — `<p align="center"><em>`.
|
|
122
|
+
4. **Centered badge row** covering the **closed-set of 8 header-link classes**:
|
|
123
|
+
1. **Build** — CI status (e.g., GitHub Actions build badge per workflow).
|
|
124
|
+
2. **License** — SPDX-form license badge (MIT / Apache-2.0 / etc.).
|
|
125
|
+
3. **Version** — PyPI / npm / crates.io / equivalent registry version badge, dynamic per `rules/dynamism.md`.
|
|
126
|
+
4. **Coverage** — Codecov / Coveralls / equivalent line+branch threshold badge (≥ 80% where the host has ratified a threshold).
|
|
127
|
+
5. **OSSF Scorecard** — Scorecard.dev badge for supply-chain posture.
|
|
128
|
+
6. **Community** — Discord / Slack / chat-channel badge linking the live community.
|
|
129
|
+
7. **Docs** — documentation-site link badge (Read the Docs / Fumadocs / equivalent).
|
|
130
|
+
8. **Downloads** — PyPI / npm / crates.io downloads-per-month badge (dynamic per `rules/dynamism.md`).
|
|
131
|
+
5. **Centered nav strip** linking to `Install` / `Quick tour` / `Documentation` / `Changelog` / `Contributing` (and optionally `Community` / `Sponsors`).
|
|
132
|
+
6. **Horizontal rule** separating the header from the body.
|
|
133
|
+
|
|
134
|
+
**Rich-content surface (also MAXIMAL).** Following the header, the README MUST carry:
|
|
135
|
+
|
|
136
|
+
- **Animated demo or feature screenshot** near the top — a short GIF / SVG / WebP showing the core value-proposition in under 10 seconds, positioned immediately after the horizontal rule.
|
|
137
|
+
- **Feature matrix** — a compact table of primary capabilities surfacing SOTA differentiators relative to the named-exemplar cohort at `rules/sota-elevation-exemplars.md` §2.
|
|
138
|
+
- **Quick Start ≤ 3 commands** — install / configure / first-run as three shell lines or fewer; operators MUST reach a working first run without scrolling past Quick Start.
|
|
139
|
+
- **Dedicated sections** — `## Install` (with the §6.6 sub-paths) + `## Updating` + `## Uninstalling` + (where applicable) `## Auto-update`, each carrying concrete invocations.
|
|
140
|
+
- **Community + Support** at the tail — community-channel link + sponsorship / funding (where a `.github/FUNDING.yml` exists) + Showcase / Users + Blog / RSS.
|
|
141
|
+
|
|
142
|
+
The centering uses inline HTML inside Markdown — the GitHub-rendered conventional pattern, not a custom convention. A project shipping below this MAXIMAL floor is non-conformant against M15 + `rules/sota-elevation.md`; the gap surfaces as a finding per §5.
|
|
143
|
+
|
|
144
|
+
#### 6.6 Installation Guide
|
|
145
|
+
|
|
146
|
+
Every README carries an `## Install` section with at least three sub-paths: a **one-shot installer** (the curl / iwr-piped command for both shell families, in a two-row table), a **manual install** (`git clone` + dependency-install + verification, for operators who decline pipe-to-shell), and a **verify the install** sub-path (the post-install verification commands). Plus `## Updating`, `## Uninstalling`, and (where applicable) `## Auto-update` subsections with concrete invocations.
|
|
147
|
+
|
|
148
|
+
#### 6.7 Self-Application Surface
|
|
149
|
+
|
|
150
|
+
Apothem itself ships every component above: `scripts/installer/install.{sh,ps1}` + `scripts/installer/update.{sh,ps1}` + `scripts/installer/uninstall.{sh,ps1}`, `scripts/dev/auto_update.py` (read-only check; `--apply` to fast-forward), `assets/logo.svg` (hexagonal three-layer architecture mark), and the README's modern header + Install / Updating / Uninstalling / Auto-update sections.
|
|
151
|
+
|
|
152
|
+
## Enforcement
|
|
153
|
+
|
|
154
|
+
Path-filtered (the eleven glob patterns in this rule's `pathFilter` field), demand-loaded companion to `rules/production-ready-prs.md`. The parent rule retains the same-change-set discipline (§1), the gap-surfacing summary (§5), the disclosure surface, the failure tells, and the bindings; this companion carries the visibility-surface catalog, the supply-chain table, the release-engineering invariants, the commit-message convention detail, the CI-green catalog, and the modern-project-surface specification. Together the parent and companion constitute the canonical specification for **M15 — Production-Ready Discipline on Host-Project Artifacts**.
|
|
155
|
+
|
|
156
|
+
## Bindings (§0.j five-direction)
|
|
157
|
+
|
|
158
|
+
- **Drives →** ● Every visibility-surface artifact emission across every host project (README / CHANGELOG / CONTRIBUTING / LICENSE / SECURITY / SUPPORT / CODEOWNERS / `.github/**` / install / update / uninstall scripts). ● The seven visibility surfaces' continuous maintenance across the host's lifecycle. ● The modern-project-surface ratifications at every install / update / uninstall / logo / README-header touch. ● The commit-message human-only-authorship clause at every git-write touch.
|
|
159
|
+
- **Satisfies →** ● the fifteen-mandate registry row **M15 — Production-Ready** (companion sub-rule scope). ● `rules/production-ready-prs.md` anchor lines pointing here for the moved sections.
|
|
160
|
+
- **Established by ↑** ● `rules/production-ready-prs.md` (parent-rule anchor). ● the fifteen-mandate registry (ratifies M15). ● Keep-a-Changelog convention (the upstream changelog standard). ● Conventional Commits specification (the upstream commit-message convention).
|
|
161
|
+
- **Gated by ←** ● The path-filter (the eleven glob patterns) — this rule demand-loads only on visibility-surface artifact touches. ● `rules/production-ready-prs.md` always-on baseline (parent rule's anchor lines must be live for the companion to demand-load coherently).
|
|
162
|
+
- **Cross-bound with ↔** ↔ `rules/production-ready-prs.md` (parent rule; anchor lines bind this companion). ↔ `rules/authority-inquiry.md` (M5 — visibility-gap inquiries route through the canonical channel). ↔ `rules/option-annotation.md` (M7 — every visibility-gap inquiry's option set carries the Recommended marker plus concrete-driver rationale). ↔ `rules/host-discovery.md` (M1 — commit-message convention, action-pinning policy, release-signing requirement all discovered). ↔ `rules/disclosure-ledger.md` (M2 — production-ready outcomes recorded in the ledger). ↔ `rules/sota-elevation.md` (production-ready surfaces are the floor; SOTA lifts the ceiling on those same surfaces).
|