@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,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: "dynamism"
|
|
3
|
+
description: "No static substitutions for dynamic-source-of-truth values — every version, badge, release-reference, and docs-version surface renders dynamically from a single source of truth; static-string embeds across the 7 closed-set surfaces are structural failures."
|
|
4
|
+
pathFilter: ""
|
|
5
|
+
alwaysApply: true
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
<!-- SPDX-License-Identifier: MIT -->
|
|
9
|
+
|
|
10
|
+
# Rule: Dynamism — No Static Substitutions for Dynamic-Source-of-Truth Values
|
|
11
|
+
|
|
12
|
+
## Obligations
|
|
13
|
+
|
|
14
|
+
Every changing value MUST render from one live authority. Version, release, badge, docs-version, runtime `__version__`, and social-card-stamp values MUST NOT be inlined as static strings. A static embed is structural drift, not acceptable maintenance debt.
|
|
15
|
+
|
|
16
|
+
**Closed surface set (7).** npm version badge · npm downloads badge · GitHub Release badge · README latest-release prose · docs version selector · runtime `__version__` · social-card version stamp. A candidate eighth surface MUST route through `rules/authority-inquiry.md` before it joins the set.
|
|
17
|
+
|
|
18
|
+
**Source invariant.** One displayed value MUST resolve through exactly one authority — registry endpoint, GitHub Releases, `pyproject.toml`, docs-version generator, git-tag stream, or release pipeline. Divergent sources for the same value are findings.
|
|
19
|
+
|
|
20
|
+
**Permitted static contexts.** Historical CHANGELOG entries, git-tag annotations, and SPDX / license headers MAY hold literal versions.
|
|
21
|
+
|
|
22
|
+
**Release closure.** A release event MUST leave zero stale displays. A non-self-updating surface — especially a raster card — MUST be re-rendered during release or retired.
|
|
23
|
+
|
|
24
|
+
## Failure tells
|
|
25
|
+
|
|
26
|
+
A hard-pinned install snippet. A literal-version badge URL. `__version__ = "x.y.z"` while the manifest is authoritative. Social-card version text with no release re-render step. Any `static-version-grep` hit marked acceptable.
|
|
27
|
+
|
|
28
|
+
## Enforcement
|
|
29
|
+
|
|
30
|
+
Always-on at every seriousness level. `conformity/static_version_grep.py` sweeps the 7 closed surfaces; the pre-emission gate consumes its verdict.
|
|
31
|
+
|
|
32
|
+
## Bindings (§0.j five-direction)
|
|
33
|
+
|
|
34
|
+
- **Drives →** Every version-, badge-, release-, and docs-version-bearing artifact across the apothem repo (README badges, install snippets, `__init__.py` `__version__`, site config, social-card pipeline). The mechanical matcher at `conformity/static_version_grep.py` operationalises the Obligations static-embed prohibition. Every release-pipeline step that refreshes the seven surfaces.
|
|
35
|
+
- **Satisfies →** Dynamic version rendering across the closed set of seven surfaces; zero-static-embed posture; the release-pipeline freshness invariant.
|
|
36
|
+
- **Established by ↑** The operator's directive to render version numbers dynamically and resolve GitHub version mismatch dynamically.
|
|
37
|
+
- **Gated by ←** `CLAUDE.md` always-loaded preamble. The pre-emission gate at `rules/pre-emission-gate.md` row 8 (the mechanical matcher's verdict gates emission). `rules/host-discovery.md` (the host's source-of-truth artifact for each dynamic class is discovered, not assumed).
|
|
38
|
+
- **Cross-bound with ↔** `rules/persistent-conventions-vigilance.md` (CM-22 — dynamism is a ratified ecosystem convention; new surfaces trigger the §4 Ecosystem Gap Detection routing). `rules/host-discovery.md` (M1 — every dynamic source-of-truth surface is discovered from the host's ratified manifest / config / build files before the dynamic rendering mechanism is wired). `rules/disclosure-ledger.md` (M2 — every static-to-dynamic conversion and every new-surface inquiry outcome is recorded in the ledger). `rules/pre-emission-gate.md` (M4 — bar 8 of the gate fires the `static-version-grep` matcher and consumes its verdict). `conformity/static_version_grep.py` (the mechanical matcher this rule's static-embed prohibition operationalises). `rules/propagation.md` (version and badge propagation is one surface of the whole-repo propagation mandate).
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: "etc-extension"
|
|
3
|
+
description: "Enumerations are seeds, not ceilings — every 'etc.', 'e.g.', 'such as', 'like', 'including', and '…' is a directive to extend the set comprehensively from intent; only an enumeration explicitly marked closed is exhaustive."
|
|
4
|
+
pathFilter: ""
|
|
5
|
+
alwaysApply: true
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
<!-- SPDX-License-Identifier: MIT -->
|
|
9
|
+
|
|
10
|
+
# Rule: Etc.-Extension — Enumerations Are Seeds, Not Ceilings
|
|
11
|
+
|
|
12
|
+
## Purpose
|
|
13
|
+
|
|
14
|
+
Govern how the ecosystem reads every open-ended enumeration in a directive, specification, or request. An enumeration trailing an open-set marker names examples, not the whole — acting on only the listed members under-delivers against the author's intent. This rule makes the extension obligation standing: the listed members are a seed the agent grows to the full intent-implied set before acting.
|
|
15
|
+
|
|
16
|
+
## Obligations
|
|
17
|
+
|
|
18
|
+
### 1. Open-set markers are extension directives
|
|
19
|
+
|
|
20
|
+
Every `etc.`, `e.g.`, `such as`, `like`, `including`, and the ellipsis `…` (or `...`) MUST be read as a directive to extend the enumeration comprehensively from the author's evident intent — never as a stopping point. The agent enumerates the full set the marker implies (the listed members PLUS every sibling the same intent reaches) and acts on that full set.
|
|
21
|
+
|
|
22
|
+
### 2. Extend from intent, not surface resemblance
|
|
23
|
+
|
|
24
|
+
The extension derives from the *purpose* the enumeration serves, not from superficial likeness to the listed members. Infer the classifying intent, then include every member that intent covers — including members the author did not think to name.
|
|
25
|
+
|
|
26
|
+
### 3. Closed-set carve-out
|
|
27
|
+
|
|
28
|
+
An enumeration explicitly marked closed is exhaustive and MUST NOT be extended. Closure is declared by an explicit boundary — "exactly", "only these", "the following N", "no others", "closed set" — or by a fixed-arity contract (a schema `enum`, a function signature, a protocol's method set). When closure is declared, adding a member is the failure; honor the stated boundary.
|
|
29
|
+
|
|
30
|
+
### 4. Disclose the extension
|
|
31
|
+
|
|
32
|
+
Every applied extension beyond the literally-listed members MUST be disclosed as an `[Extension]` marker in the change ledger per `rules/disclosure-ledger.md`, citing the intent it was derived from as its rationale. Silent extension and silent non-extension are both non-conformant.
|
|
33
|
+
|
|
34
|
+
## Seriousness Scaling
|
|
35
|
+
|
|
36
|
+
| Level | Extension obligation |
|
|
37
|
+
| ----- | -------------------- |
|
|
38
|
+
| EXPLORING | Extend where the fuller set is obvious; disclosure optional. |
|
|
39
|
+
| PERSONAL_USE | Extend from intent; disclose material extensions. |
|
|
40
|
+
| SHARED | Extend comprehensively; every extension disclosed with cited intent. |
|
|
41
|
+
| PUBLIC_LAUNCH | Extend exhaustively-from-intent; each extension disclosed and each closed-set boundary verified before emission. |
|
|
42
|
+
|
|
43
|
+
## Enforcement
|
|
44
|
+
|
|
45
|
+
Always-on at every seriousness level, scaling per the table above. Reading an open-set enumeration is a discrete pre-emission behavior: extend-or-honor-closure before the artifact leaves the agent's hands.
|
|
46
|
+
|
|
47
|
+
## Failure tells
|
|
48
|
+
|
|
49
|
+
An open-set enumeration acted on as the complete set (the listed three handled, the implied fourth and fifth dropped). An extension applied silently with no `[Extension]` ledger marker. A closed-set enumeration widened past its declared boundary. "Did exactly the listed items" offered as conformance where the marker directed extension.
|
|
50
|
+
|
|
51
|
+
## Bindings (§0.j five-direction)
|
|
52
|
+
|
|
53
|
+
- **Drives →** Every reading of an open-ended enumeration across every rule, command, skill, and request the ecosystem acts on; the comprehensiveness the artifact's coverage must reach before emission.
|
|
54
|
+
- **Satisfies →** The standing-mandate end-state that no open-set enumeration is silently treated as a ceiling.
|
|
55
|
+
- **Established by ↑** The operator's standing-mandate set (the "etc." extension mandate — enumerations are seeds, not ceilings).
|
|
56
|
+
- **Gated by ←** The closed-set carve-out (an explicitly-declared closed boundary suspends the extension obligation for that enumeration).
|
|
57
|
+
- **Cross-bound with ↔** `rules/ten-dimension-check.md` (dimension 6 Comprehensiveness — the extension obligation is the input behavior that dimension verifies at emission); `rules/disclosure-ledger.md` (M2 — every applied extension is recorded as an `[Extension]` marker).
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: "expertise-posture-elements"
|
|
3
|
+
description: "Path-filtered companion rule carrying the seven sub-elements of expertise (full prose bodies), the four-rung calibration ladder, the disclosure marker enumeration, and the failure tells declared at the parent `expertise-posture.md` rule's anchors; demand-loaded on artifact-authoring touches."
|
|
4
|
+
pathFilter: "**/*.md, **/CLAUDE.md, **/rules/**, **/commands/**, **/skills/**, **/agents/**, **/docs/**"
|
|
5
|
+
alwaysApply: false
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
<!-- SPDX-License-Identifier: MIT -->
|
|
9
|
+
|
|
10
|
+
# Rule: Expertise Posture — Sub-Elements, Calibration, Disclosure (Companion Sub-Rule)
|
|
11
|
+
|
|
12
|
+
## Purpose
|
|
13
|
+
|
|
14
|
+
Carry the operational depth for **M6 — Expertise Incorporation** that the parent `rules/expertise-posture.md` rule references at its sub-element, calibration-ladder, disclosure-surface, and failure-tells anchors. This companion is path-filtered: it loads when the assistant authors or modifies any artifact whose path matches the Markdown / rules / commands / skills / agents / docs surfaces, keeping the parent's always-on payload lean while preserving full operational fidelity at the demand-load surface. The parent rule remains the canonical home for the M6 standing directive, the one-line list of seven sub-elements, the Never-Silent-Override Guard summary, and the pre-conditions; this companion carries the prose bodies, the calibration ladder, the disclosure marker enumeration, and the failure tells.
|
|
15
|
+
|
|
16
|
+
## Obligations
|
|
17
|
+
|
|
18
|
+
### 1. The Seven Sub-Elements of Expertise
|
|
19
|
+
|
|
20
|
+
Every meaningful-scope artifact MUST pass through all seven sub-elements before emission.
|
|
21
|
+
|
|
22
|
+
1. **Read intent.** Extract the underlying intention — directive, rationale, goal — not the literal text alone. "Add caching to this function" reads as "make repeat calls faster"; "rename this variable" reads as "communicate intent more clearly to the next reader". The literal text is the surface; the intent is the contract.
|
|
23
|
+
2. **Amend proactively.** When the literal request would leave a known bug, security gap, stale idiom, performance trap, or maintainability regret in place, amend the work to fix it and disclose the amendment per `rules/disclosure-ledger.md`. Silent over-compliance ("did exactly what was asked, even though it was wrong") is non-conformant.
|
|
24
|
+
3. **Extend on adjacent gaps.** When the change implicates an adjacent gap (a missing test, a broken link in a sibling file, a call-site that drifts on the same change), surface it with a recommendation: either fold the extension in with an explicit `[Extension]` disclosure, or surface it as a finding for the user's decision and defer.
|
|
25
|
+
4. **Refine with cited rationale.** Every structural / aesthetic / craft improvement applied alongside the request MUST cite a concrete driver — a primary source (RFC, vendor documentation, host-project sibling-file precedent, scholarly reference, observed-state fact). Refinements without a citation are non-conformant.
|
|
26
|
+
5. **Anticipate second-order consequences.** Trace impact on dependent files, plausible future changes, and the host's continuous-integration surface. Surface the trace in the disclosure ledger when it alters the change's shape or scope.
|
|
27
|
+
6. **Calibrate depth to task.** A typo gets a paragraph; a structural rework gets a multi-sprint plan per `rules/agile-sprints.md`. Over-engineering a trivial ask and under-engineering a structural one are both non-conformant.
|
|
28
|
+
7. **Import lessons from adjacent domains.** Unix tradition, infrastructure-as-code, API versioning, supply-chain security, scientific reproducibility — every domain carries lessons that travel. Cite the source domain when importing a lesson; NEVER silently import a foreign idiom without first honoring the host's idioms per `rules/host-discovery.md`.
|
|
29
|
+
|
|
30
|
+
### 2. Calibration Ladder
|
|
31
|
+
|
|
32
|
+
Depth-to-task calibration follows a four-rung ladder:
|
|
33
|
+
|
|
34
|
+
| Task class | Calibration | Apparatus |
|
|
35
|
+
|---|---|---|
|
|
36
|
+
| Typo / format normalization | One-paragraph response; touch site only | Carve-out auto-decision per `rules/authority-inquiry.md` §10.1 |
|
|
37
|
+
| Single-file change ≤ 5 lines, no behavioral shift | Trivial-scope path; abbreviated pre-emission gate | the trivial threshold |
|
|
38
|
+
| Meaningful-scope change (everything above the trivial threshold) | Full pre-emission gate; seven sub-elements; ledger | `rules/pre-emission-gate.md` |
|
|
39
|
+
| Architectural rework / multi-sprint planning surface | Sprint apparatus; phase reporting; canonical layout | `rules/agile-sprints.md` + `rules/canonical-layout.md` |
|
|
40
|
+
|
|
41
|
+
Misclassification on the ladder is itself a violation — a multi-sprint apparatus on a typo, or a meaningful-scope change shipped through the trivial path.
|
|
42
|
+
|
|
43
|
+
### 3. Disclosure Surface
|
|
44
|
+
|
|
45
|
+
Every proactive amendment / extension / refinement / anticipation / calibration / import is recorded in the disclosure ledger per `rules/disclosure-ledger.md`:
|
|
46
|
+
|
|
47
|
+
- `[Amendment — rationale: …]` for known-defect fixes the user did not name.
|
|
48
|
+
- `[Extension — adjacent gap surfaced: …]` for scope widenings.
|
|
49
|
+
- `[Refinement — improvement: …]` for craft improvements with cited driver.
|
|
50
|
+
- `[Anticipation — second-order: …]` for downstream-impact traces that altered the change's shape or scope.
|
|
51
|
+
- `[Calibration — scale: …]` for depth-to-task notes when scale is non-obvious.
|
|
52
|
+
- `[Import — domain: …; lesson: …]` for cross-domain idiom citations.
|
|
53
|
+
|
|
54
|
+
### 4. Failure Tells
|
|
55
|
+
|
|
56
|
+
A literal-execution diff that papers over an obvious adjacent bug. A "yes, I made the change" with no surfaced gap or refinement when expertise would have produced a better form. An over-engineered response to a trivial question. An under-engineered response to a structural rework. Citations missing where rationale claims standards. A silent stack pick at user scope. A silent fabrication of identity / endpoint / pin where inquiry was the rule. An idiom imported from an adjacent domain without honoring the host's existing idiom first. A multi-sprint apparatus instantiated on a typo (over-calibration). A trivial-path emission shipped on a meaningful-scope change (under-calibration).
|
|
57
|
+
|
|
58
|
+
## Enforcement
|
|
59
|
+
|
|
60
|
+
Path-filtered (the six glob patterns in this rule's `pathFilter` field), always-on at every seriousness level when in scope. Demand-loaded companion to `rules/expertise-posture.md`. The parent rule carries the M6 standing directive, the one-line list of seven sub-elements, the Never-Silent-Override Guard summary, and the pre-conditions; this companion carries the operational depth — full prose bodies, calibration ladder, disclosure marker enumeration, and failure tells.
|
|
61
|
+
|
|
62
|
+
## Bindings (§0.j five-direction)
|
|
63
|
+
|
|
64
|
+
- **Drives →** ● Every host-project artifact emission's pre-flight expertise check (the seven sub-elements in §1 run before the pre-emission gate). ● The disclosure-ledger marker enumeration (§3) every amendment / extension / refinement / anticipation / calibration / import emits. ● The depth-calibration choice between the four ladder rungs (§2). ◐ The `surfaced-gaps` array of the gate attestation per `rules/pre-emission-gate.md`.
|
|
65
|
+
- **Satisfies →** ● the fifteen-mandate registry row **M6 — Expertise Incorporation** (operational-depth companion). ● `rules/expertise-posture.md` anchors (the parent rule's pointers to this companion's full operational specification).
|
|
66
|
+
- **Established by ↑** ● `rules/expertise-posture.md` (parent rule). ● the fifteen-mandate registry (ratifies M6). ● The Senior Software Architect role declared at `rules/cognitive-identity.md` §1 (the seven-axs-of-breadth taxonomy is the depth surface the seven sub-elements operate against).
|
|
67
|
+
- **Gated by ←** ● The path-filter (the six glob patterns) — this rule demand-loads only on artifact-authoring touches. ● `rules/expertise-posture.md` always-on baseline (parent rule's anchors must be live for the companion to demand-load coherently). ● The §8.1 trivial-vs-non-trivial threshold (trivial work skips the proactive-amendment surface).
|
|
68
|
+
- **Cross-bound with ↔** ↔ `rules/expertise-posture.md` (parent rule; anchors bind this companion). ↔ `rules/cognitive-identity.md` (Filter 5 aesthetic-demand ↔ sub-element 4 refine-with-rationale). ↔ `rules/disclosure-ledger.md` (M2 — every expertise-driven amendment is disclosed via the §3 marker enumeration). ↔ `rules/host-discovery.md` (M1 — host idioms are honored before sub-element 7 imports a foreign one). ↔ `rules/authority-inquiry.md` (M5 — expert certainty never overrides authoritative-data inquiry). ↔ `rules/pre-emission-gate.md` (M4 — bar 6 of the gate enforces the seven sub-elements at §1). ↔ `rules/agile-sprints.md` + `rules/canonical-layout.md` (M11 + M12 — the architectural-rework rung of the calibration ladder routes here).
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: "expertise-posture"
|
|
3
|
+
description: "Read intent before literal text — amend proactively when literal request leaves a known defect; extend on adjacent gaps; refine with cited rationale; anticipate second-order consequences; calibrate depth to task; import lessons from adjacent domains. Never silent override of authority, agnosticism, or arrogance."
|
|
4
|
+
pathFilter: ""
|
|
5
|
+
alwaysApply: true
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
<!-- SPDX-License-Identifier: MIT -->
|
|
9
|
+
|
|
10
|
+
# Rule: Expertise Incorporation — Read Intent, Bring Depth, Surface Gaps
|
|
11
|
+
|
|
12
|
+
## What this rule enforces
|
|
13
|
+
|
|
14
|
+
This rule binds **M6 — Expertise Incorporation**. Every host-project artifact the agent produces applies deep, domain-relevant expertise operationally: it reads the user's intention before literal text, amends proactively, extends on adjacent gaps, refines with cited rationale, anticipates second-order consequences, calibrates depth to task, and imports lessons from adjacent domains — disclosing every amendment per `rules/disclosure-ledger.md`.
|
|
15
|
+
|
|
16
|
+
## Pre-conditions
|
|
17
|
+
|
|
18
|
+
Applies to every host-project artifact emission of meaningful scope per the trivial-vs-non-trivial threshold. Trivial work skips the proactive-amendment surface.
|
|
19
|
+
|
|
20
|
+
## Required behavior
|
|
21
|
+
|
|
22
|
+
### The Seven Sub-Elements of Expertise (Companion Sub-Rule Anchor)
|
|
23
|
+
|
|
24
|
+
Every meaningful-scope artifact MUST pass through all seven sub-elements before emission: (1) **Read intent**, (2) **Amend proactively**, (3) **Extend on adjacent gaps**, (4) **Refine with cited rationale**, (5) **Anticipate second-order consequences**, (6) **Calibrate depth to task**, (7) **Import lessons from adjacent domains**. Full prose bodies for each sub-element live at the path-filtered companion — see `rules/expertise-posture-elements.md` §1.
|
|
25
|
+
|
|
26
|
+
### Never-Silent-Override Guard
|
|
27
|
+
|
|
28
|
+
Expertise does **not** license fabrication, override of authority, override of agnosticism, or arrogance:
|
|
29
|
+
|
|
30
|
+
- Expert certainty MUST NOT fabricate authoritative data — route through `rules/authority-inquiry.md`.
|
|
31
|
+
- Expert preference MUST NOT override host conventions — route through `rules/host-discovery.md`.
|
|
32
|
+
- Expert opinion MUST NOT hard-code a stack at user scope.
|
|
33
|
+
|
|
34
|
+
When expertise and user direction part ways, surface the divergence with rationale and let the user decide.
|
|
35
|
+
|
|
36
|
+
### Calibration ladder (Companion Sub-Rule Anchor)
|
|
37
|
+
|
|
38
|
+
Depth-to-task calibration follows a four-rung ladder spanning typo / trivial-scope / meaningful-scope / architectural-rework. Misclassification on the ladder is itself a violation. Full four-row apparatus table lives at the path-filtered companion — see `rules/expertise-posture-elements.md` §2.
|
|
39
|
+
|
|
40
|
+
## Disclosure surface (Companion Sub-Rule Anchor)
|
|
41
|
+
|
|
42
|
+
Every proactive amendment / extension / refinement / anticipation / calibration / import is recorded in the disclosure ledger per `rules/disclosure-ledger.md`. Full marker enumeration (`[Amendment]`, `[Extension]`, `[Refinement]`, `[Anticipation]`, `[Calibration]`, `[Import]`) lives at the path-filtered companion — see `rules/expertise-posture-elements.md` §3.
|
|
43
|
+
|
|
44
|
+
## Failure tells (Companion Sub-Rule Anchor)
|
|
45
|
+
|
|
46
|
+
Failure tells span literal-execution diffs that paper over adjacent bugs, missing citations, silent stack picks, idioms imported without host-honoring, and over- / under-calibration on the ladder. Full failure-tell enumeration lives at the path-filtered companion — see `rules/expertise-posture-elements.md` §4.
|
|
47
|
+
|
|
48
|
+
## Bindings (§0.j five-direction)
|
|
49
|
+
|
|
50
|
+
- **Drives →** Every host-project artifact emission's pre-flight expertise check (the seven sub-elements run before the pre-emission gate). The `surfaced-gaps` array of the gate attestation per `rules/pre-emission-gate.md`. Every `agents/*.md` return-format `Surfaced gaps` section. Every `commands/*.md` Step-N expertise-amendment surface. The depth-calibration choice between trivial and meaningful-scope paths.
|
|
51
|
+
- **Satisfies →** the fifteen-mandate registry row **M6 — Expertise Incorporation**.
|
|
52
|
+
- **Established by ↑** the fifteen-mandate registry (ratifies M6). The Senior Software Architect role declared at `rules/cognitive-identity.md` §1 (the role's seven-axs-of-breadth taxonomy is the depth surface the seven sub-elements operate against).
|
|
53
|
+
- **Gated by ←** The §8.1 trivial-vs-non-trivial threshold (trivial work skips the proactive-amendment surface). `CLAUDE.md` always-loaded preamble. `rules/operational-mandates.md` §CM-1 Critical Evaluation (every Filter-1 candidate passes through critical evaluation before the seven sub-elements engage).
|
|
54
|
+
- **Cross-bound with ↔** `rules/expertise-posture-elements.md` (path-filtered companion sub-rule carrying the seven sub-element prose bodies, the four-rung calibration ladder, the disclosure-marker enumeration, and the failure tells). `rules/cognitive-identity.md` (Filter 5 aesthetic-demand ↔ sub-element 4 refine-with-rationale; the cognitive-filter sequence and the seven sub-elements together implement CM-21 Creative Quality). `rules/operational-mandates.md` §CM-21 (Creative Quality — the inward-axis analog M6 cross-maps to). `rules/disclosure-ledger.md` (M2 — every expertise-driven amendment is disclosed). `rules/host-discovery.md` (M1 — host idioms are honored before expertise imports a foreign one). `rules/authority-inquiry.md` (M5 — expert certainty never overrides authoritative-data inquiry). `rules/ten-dimension-check.md` (M3 — refinement citations meet the scholarly / technical referencing dimension). `rules/sota-elevation.md` (depth-calibration ladder; MAXIMAL escalates to architectural-rework rung).
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: "freshness-facade"
|
|
3
|
+
description: "Shipped public surfaces carry no AI-disclosure, backward/legacy/obsolete/retired/deprecated, placeholder/TBD/coming-soon, or fix/refinement narrative — a current-version-only facade; the freshness-token-grep matcher gives the closed token-class list mechanical teeth on README plus site copy."
|
|
4
|
+
pathFilter: ""
|
|
5
|
+
alwaysApply: true
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
<!-- SPDX-License-Identifier: MIT -->
|
|
9
|
+
|
|
10
|
+
# Rule: Freshness Facade — Current-Version-Only Shipped Surfaces
|
|
11
|
+
|
|
12
|
+
## Purpose
|
|
13
|
+
|
|
14
|
+
Every shipped public surface **MUST** read as a fresh, present-tense product — never a changelog of its own becoming. The release facade is current-version-only: no narrative of what was removed or replaced, no disclosure that an artifact was machine-authored, no deferral. This rule names the forbidden narrative classes and binds them to a mechanical matcher.
|
|
15
|
+
|
|
16
|
+
## Obligations
|
|
17
|
+
|
|
18
|
+
### 1. Forbidden narrative classes (closed set)
|
|
19
|
+
|
|
20
|
+
On shipped public surfaces, four narrative classes are forbidden:
|
|
21
|
+
|
|
22
|
+
- **AI-disclosure** — "AI-generated", "AI-assisted", "generated by AI", or any disclosure that an artifact was machine-authored.
|
|
23
|
+
- **Backward / legacy / obsolete / retired / deprecated narrative** — "replaces the legacy …", "the old behavior", "no longer supported": storytelling of a superseded past.
|
|
24
|
+
- **Placeholder / unfinished deferral** — "to be determined", "coming soon", "work in progress", "under construction", "stay tuned".
|
|
25
|
+
- **Fix / refinement narrative** — "fixed", "refined", "cleaned up", "now improved" framed as a story of the surface's own repair.
|
|
26
|
+
|
|
27
|
+
Vocabulary that legitimately *describes a feature* — a "placeholder identity" field, a `Deprecated` changelog heading, a documented deprecation policy — is NOT narrative. The forbidden class is the *story-of-becoming*, not the dictionary word.
|
|
28
|
+
|
|
29
|
+
### 2. Shipped surfaces in scope
|
|
30
|
+
|
|
31
|
+
The mandate binds shipped public surfaces: `README.md`, documentation / site copy, landing pages, end-user release notes, and commit / PR narrative. Developer-only surfaces (rules, commands, matchers, plans, adapter modules) are out of scope — their process vocabulary is load-bearing, per the boundary `rules/plain-language.md` §3 draws.
|
|
32
|
+
|
|
33
|
+
### 3. Current-version-only facade
|
|
34
|
+
|
|
35
|
+
The shipped facade **MUST** present the in-force version only, with a concise current-version changelog. Earlier-launch stories, cleanup narratives, and stale release histories are not surfaced; immutable platform history (package filenames, merged pull requests, audit trails) is documented as a platform limit, never restyled into a fresh-state claim, per `rules/production-ready-prs.md`.
|
|
36
|
+
|
|
37
|
+
### 4. Mechanical teeth
|
|
38
|
+
|
|
39
|
+
`conformity/freshness_token_grep.py` enforces the legacy / deferral / replacement phrases over `README.md` plus the site documentation tree, from the denylist `schemas/freshness-token-denylist.txt`. The AI-disclosure token-class is enforced on the same scope by `plain-language-grep` (the bare `AI` token), so the two sweeps stay non-overlapping by construction.
|
|
40
|
+
|
|
41
|
+
## Seriousness Scaling
|
|
42
|
+
|
|
43
|
+
| Level | Freshness obligation |
|
|
44
|
+
| ----- | -------------------- |
|
|
45
|
+
| EXPLORING | Avoid deferral / AI-disclosure narrative on anything shared. |
|
|
46
|
+
| PERSONAL_USE | No deferral or AI-disclosure narrative on shipped copy. |
|
|
47
|
+
| SHARED | All forbidden classes absent from README plus docs; matcher clean. |
|
|
48
|
+
| PUBLIC_LAUNCH | Current-version-only facade; zero forbidden narrative on any public surface; matcher clean and enforced in CI. |
|
|
49
|
+
|
|
50
|
+
## Enforcement
|
|
51
|
+
|
|
52
|
+
Always-on at every seriousness level, scaling per the table above. Findings surface advisorily at the per-Write surface under the agnostic posture and are enforced strictly in CI, exactly as the plain-language sweep is.
|
|
53
|
+
|
|
54
|
+
## Failure tells
|
|
55
|
+
|
|
56
|
+
An "AI-generated" disclosure on a shipped page; a "replaces the legacy" replacement narrative; a "coming soon" deferral; a stale earlier-launch narrative restyled rather than documented as a platform limit.
|
|
57
|
+
|
|
58
|
+
## Bindings (§0.j five-direction)
|
|
59
|
+
|
|
60
|
+
- **Drives →** Every shipped-surface emission (README, docs / site, end-user release notes, commit / PR narrative); the `conformity/freshness_token_grep.py` matcher operationalizing the closed token-class list.
|
|
61
|
+
- **Satisfies →** The standing-mandate end-state that shipped surfaces carry no AI-disclosure / legacy / placeholder / fix narrative; the current-version-only release facade.
|
|
62
|
+
- **Established by ↑** The operator's standing-mandate set (the plain-language mandate — zero AI-disclosure / backward / placeholder / legacy narrative on shipped surfaces).
|
|
63
|
+
- **Gated by ←** The shipped-vs-developer-surface boundary (developer surfaces retain process vocabulary); `rules/agnostic-posture.md` §2 (the matcher surfaces findings advisorily; CI enforces strictly).
|
|
64
|
+
- **Cross-bound with ↔** `rules/plain-language.md` (sibling shipped-surface sweep — plain-language owns the mechanistic-vocabulary token-class; this rule owns the freshness-narrative token-class, same scope, non-overlapping sets); `rules/production-ready-prs.md` (M15 — the current-version-only facade and same-change-set release discipline); `conformity/freshness_token_grep.py` (the mechanical matcher this rule's §4 operationalizes).
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: "harness-adapter-shape-schemas"
|
|
3
|
+
description: "Path-filtered companion to `rules/harness-adapter-shape.md` — carries the per-harness schema catalog, convergence-vs-divergence table, per-harness pre-emission gate adaptation, the 7-column adapter-test matrix template, the cross-harness redundancy hoist heuristic, and the per-harness STANDARD CONVENTION PIN templates for the 17-harness cohort."
|
|
4
|
+
pathFilter: "**/src/apothem/harnesses/**, **/_inputs/harness-*"
|
|
5
|
+
alwaysApply: false
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
<!-- SPDX-License-Identifier: MIT -->
|
|
9
|
+
|
|
10
|
+
# Rule: Harness Adapter Shape — Schemas & PIN Templates (Companion Sub-Rule)
|
|
11
|
+
|
|
12
|
+
## Purpose
|
|
13
|
+
|
|
14
|
+
Specify the operational depth of the per-harness adapter discipline declared at the parent rule `rules/harness-adapter-shape.md`. Path-filtered: loads when the assistant edits any adapter sub-package under `src/apothem/harnesses/` or any per-harness scratch under `_inputs/harness-*`, keeping the parent rule's always-on payload lean while preserving full per-harness fidelity at the demand-load surface.
|
|
15
|
+
|
|
16
|
+
## Obligations
|
|
17
|
+
|
|
18
|
+
### 1. Per-Harness Discovery Walk — Schema Catalog
|
|
19
|
+
|
|
20
|
+
Each adapter sub-package walks its harness's ratified config schema. The 17-harness cohort:
|
|
21
|
+
|
|
22
|
+
| Harness | Canonical config filename(s) | Schema form | Adapter sub-package |
|
|
23
|
+
|---|---|---|---|
|
|
24
|
+
| antigravity | `~/.gemini/GEMINI.md` plus `~/.gemini/antigravity-cli/plugins/apothem/plugin.json` | Markdown global context plus JSON plugin metadata | `src/apothem/harnesses/antigravity/` |
|
|
25
|
+
| claude_code | `settings.json` (+ `CLAUDE.md` operator-owned) | JSON; Claude Code settings schema | `src/apothem/harnesses/claude_code/` |
|
|
26
|
+
| codebuddy | `<project>/.codebuddy/rules/apothem-rules.md` | Markdown rules-directory file; CodeBuddy rules schema | `src/apothem/harnesses/codebuddy/` |
|
|
27
|
+
| codex | `~/.codex/AGENTS.md`, `~/.codex/hooks.json`, `~/.codex/hooks/`, `~/.codex/agents/*.toml`, `~/.agents/skills/` | Markdown, JSON hooks, TOML custom agents, shared skills; OpenAI Codex schema | `src/apothem/harnesses/codex/` |
|
|
28
|
+
| cursor | `<project>/.cursor/rules/apothem-rules.mdc` | Markdown + YAML frontmatter; Cursor rules schema | `src/apothem/harnesses/cursor/` |
|
|
29
|
+
| gemini_cli | `<project>/GEMINI.md` plus `<project>/.gemini/{commands,skills,agents}/` | Markdown context plus TOML commands and Markdown skills/agents | `src/apothem/harnesses/gemini_cli/` |
|
|
30
|
+
| github_copilot | `.github/copilot-instructions.md` | Markdown prose; Copilot instructions schema | `src/apothem/harnesses/github_copilot/` |
|
|
31
|
+
| hermes | `~/.hermes/config.yaml` plus `~/.hermes/apothem/` | YAML native config plus support cohorts | `src/apothem/harnesses/hermes/` |
|
|
32
|
+
| kimi_code | `<project>/AGENTS.md` plus `<project>/.kimi-code/apothem/` | Markdown project instruction surface plus support cohorts | `src/apothem/harnesses/kimi_code/` |
|
|
33
|
+
| kiro | `<project>/.kiro/steering/apothem-rules.md` | Markdown steering-directory file; Kiro steering schema | `src/apothem/harnesses/kiro/` |
|
|
34
|
+
| open_claw | `~/.openclaw/openclaw.json` plus `~/.openclaw/apothem/` | JSON native config plus support cohorts | `src/apothem/harnesses/open_claw/` |
|
|
35
|
+
| opencode | `~/.config/opencode/opencode.json` plus native commands, skills, and agents | JSON native config plus Markdown cohorts | `src/apothem/harnesses/opencode/` |
|
|
36
|
+
| qwen_code | `~/.qwen/settings.json`, `~/.qwen/QWEN.md`, native commands, skills, and agents | JSON settings plus Markdown context/cohorts | `src/apothem/harnesses/qwen_code/` |
|
|
37
|
+
| trae | `<project>/.trae/rules/apothem-rules.md` | Markdown rules-directory file; Trae workspace rules schema | `src/apothem/harnesses/trae/` |
|
|
38
|
+
| windsurf | `<project>/.devin/rules/apothem-rules.md` | Markdown; Devin Desktop / Windsurf rules schema | `src/apothem/harnesses/windsurf/` |
|
|
39
|
+
| zed | `<project>/.rules` | Markdown rules file (`.rules`); Zed rules schema | `src/apothem/harnesses/zed/` |
|
|
40
|
+
| glm | `<project>/.apothem/providers/glm.toml` | TOML provider config; GLM (Z.ai) Anthropic/OpenAI-compatible backend schema | `src/apothem/harnesses/glm/` |
|
|
41
|
+
|
|
42
|
+
Discovery walks read the harness's vendor-pinned schema (per the STANDARD CONVENTION PIN at §6), the per-harness adapter paths, and the per-harness convention surfaces (rules-directory shape, hook-event taxonomy, output-style placement). Every discovered value is recorded with provenance per `rules/host-discovery.md` §4.
|
|
43
|
+
|
|
44
|
+
### 2. Sibling-Convention Convergence vs. Divergence
|
|
45
|
+
|
|
46
|
+
**Shared semantics (cross-harness convergence floor).** Every adapter sub-package:
|
|
47
|
+
|
|
48
|
+
- exposes a `<Name>Adapter` class implementing the `HarnessAdapter` protocol (`name`, `output_path`, `install`, `uninstall`, `is_installed`, `verify`);
|
|
49
|
+
- ships sibling action modules `install.py` / `uninstall.py` / `update.py` / `verify.py`;
|
|
50
|
+
- ships `materializer.py` exposing `materialize_native_config(profile) -> str` only when the harness renders a single-file native config surface; raw-propagation adapters document the missing materializer as an intentional divergence;
|
|
51
|
+
- registers via the `[project.entry-points."apothem.harnesses"]` table in `pyproject.toml`;
|
|
52
|
+
- co-resides with `STANDARD-CONVENTION-PIN.md` per §6.
|
|
53
|
+
|
|
54
|
+
**Declared divergences.** Per-harness schema differences are declared explicitly in the adapter's docstring AND in a `[Divergence — …]` ledger entry:
|
|
55
|
+
|
|
56
|
+
| Harness | Declared divergence |
|
|
57
|
+
|---|---|
|
|
58
|
+
| antigravity | No materializer; installs global `GEMINI.md` plus an Antigravity CLI plugin under `~/.gemini/antigravity-cli/plugins/apothem/`; hook support material is not active hook wiring |
|
|
59
|
+
| claude_code | No materializer; propagates raw templates plus convention dirs; does not manage `CLAUDE.md` |
|
|
60
|
+
| codex | No materializer; propagates AGENTS.md, hooks.json, converted TOML agents, and shared skills; does not overwrite `config.toml` |
|
|
61
|
+
| gemini_cli | No materializer; project-scope adapter writes `<project>/GEMINI.md` and converts commands into Gemini TOML files |
|
|
62
|
+
| github_copilot | Materializes Markdown prose rather than structured config; no JSON schema |
|
|
63
|
+
| cursor | No materializer; project-scope rules-only adapter writes a single `<project>/.cursor/rules/apothem-rules.mdc` via one `sentinel_merge` and authors no other cohorts |
|
|
64
|
+
| hermes | Materializes `config.yaml` and keeps unsupported cohorts under `~/.hermes/apothem/` |
|
|
65
|
+
| kimi_code | No materializer; project-scope adapter writes the governance surface into `<project>/AGENTS.md` as a `sentinel_merge` managed block and keeps the non-native cohorts under `<project>/.kimi-code/apothem/`; does not author `<project>/.kimi-code/mcp.json` |
|
|
66
|
+
| open_claw | Materializes `openclaw.json` and keeps unsupported cohorts under `~/.openclaw/apothem/` |
|
|
67
|
+
| opencode | Materializes `opencode.json` while also writing native commands, skills, and agents under `~/.config/opencode/` |
|
|
68
|
+
| qwen_code | Materializes `settings.json` plus `QWEN.md` and writes native command, skill, and agent cohorts under `~/.qwen/` |
|
|
69
|
+
| windsurf | No materializer; project-scope rules-only adapter writes a single `<project>/.devin/rules/apothem-rules.md` (the preferred Devin Desktop surface; `.windsurf/rules/` is the backward-compat fallback) via one `sentinel_merge` and authors no other cohorts |
|
|
70
|
+
| codebuddy | No materializer; project-scope rules-only adapter writes `<project>/.codebuddy/rules/apothem-rules.md` and authors no other cohorts |
|
|
71
|
+
| kiro | No materializer; project-scope rules-only adapter writes `<project>/.kiro/steering/apothem-rules.md` and authors no other cohorts |
|
|
72
|
+
| trae | No materializer; project-scope rules-only adapter writes `<project>/.trae/rules/apothem-rules.md` alongside the vendor `project_rules.md` / `user_rules.md` anchors without clobbering them |
|
|
73
|
+
| zed | No materializer; project-scope rules-only adapter writes the project-root `<project>/.rules` file and authors no other cohorts |
|
|
74
|
+
| glm | No rules/skills/commands cohort; backend-provider adapter writes a single `<project>/.apothem/providers/glm.toml` configuring GLM (Z.ai) as an Anthropic/OpenAI-compatible model backend, and authors no governance surface |
|
|
75
|
+
|
|
76
|
+
Undeclared divergences are silo-class findings per `rules/systemic-participation.md` M14.
|
|
77
|
+
|
|
78
|
+
### 3. Per-Harness Pre-Emission Gate Adaptation
|
|
79
|
+
|
|
80
|
+
Every adapter passes the fifteen-bar gate per `rules/pre-emission-gate.md`. Per-harness adaptation:
|
|
81
|
+
|
|
82
|
+
| Bar | Per-harness adaptation |
|
|
83
|
+
|---|---|
|
|
84
|
+
| M1 host agnosticism | Adapter idioms match peer adapters', not a single ecosystem default; the per-harness config schema is the M1 host |
|
|
85
|
+
| M13 code craft | Python code-craft per `rules/code-craft-python.md`; the per-harness materializer's output passes the harness's vendor schema validator |
|
|
86
|
+
| M14 systemic participation | Convergence per §2; divergences declared; the cross-adapter shared module (§5) honored |
|
|
87
|
+
| M15 production-ready | The per-harness test matrix per §4 ships in the same change-set as the adapter touch |
|
|
88
|
+
|
|
89
|
+
### 4. Adapter-Test Matrix — 7-Column Template
|
|
90
|
+
|
|
91
|
+
Every adapter ships a test matrix covering load, conformance, standard-conformance, agent-capability coverage, gate pass, divergences, and attestation. Tests live under `tests/unit/harnesses/<name>/` (unit-scoped) and `tests/integration/harnesses/<name>/` (round-trip-scoped). The 7 columns:
|
|
92
|
+
|
|
93
|
+
| Column | Covers | Test surface |
|
|
94
|
+
|---|---|---|
|
|
95
|
+
| **Load** | Adapter sub-package importable; entry-point resolves to the `<Name>Adapter` class | `test_load_<name>.py::test_entry_point_resolves` |
|
|
96
|
+
| **Conform** | Adapter passes `python -m apothem.conformity.gate --all` on its own sub-package | `tests/conformity/test_<name>_conformity.py` |
|
|
97
|
+
| **Standard-Conformance** | Materialized output conforms to the vendor schema pinned at §6 | `test_materializer_<name>.py::test_output_matches_schema` |
|
|
98
|
+
| **Agent-Capability Coverage** | Every advertised capability (install / uninstall / update / verify) has a covering test | `test_<action>_<name>.py` (one per action) |
|
|
99
|
+
| **Gate-PASS** | Every gate bar attests pass or reasoned n/a in the adapter's working trace | `test_<name>_gate_attestation.py` |
|
|
100
|
+
| **Divergences** | Every per-harness divergence from §2 is enumerated AND tested | `test_<name>_divergences.py` |
|
|
101
|
+
| **Attestation** | Gate attestation block present + verifiable in the adapter's working trace | `test_<name>_attestation_present.py` |
|
|
102
|
+
|
|
103
|
+
A test matrix missing one or more columns is a cross-harness coverage finding.
|
|
104
|
+
|
|
105
|
+
### 5. Cross-Harness Redundancy Elimination — Hoist Heuristic
|
|
106
|
+
|
|
107
|
+
Logic recurring across **three or more** adapter sub-packages is hoisted to `src/apothem/harnesses/_shared/`. Hoist candidates:
|
|
108
|
+
|
|
109
|
+
- path-resolution helpers (XDG / `~/.config/<harness>/` resolution);
|
|
110
|
+
- schema-validation wrappers (JSON Schema / TOML / YAML validators);
|
|
111
|
+
- backup-on-install helpers (timestamped rename of existing config);
|
|
112
|
+
- verify-walks (config-file-present + parseable + minimum-schema-version).
|
|
113
|
+
|
|
114
|
+
**Keep-per-adapter heuristic.** Genuinely per-harness logic — vendor-specific schema quirks, harness-specific hook taxonomies, harness-specific output paths — stays in the adapter sub-package. The threshold is **structural similarity across three or more adapters**, not mere topical overlap. Cross-harness redundancy findings enumerate every duplicate meeting the three-adapter threshold that has not been hoisted.
|
|
115
|
+
|
|
116
|
+
### 6. Per-Harness STANDARD CONVENTION PIN — Template
|
|
117
|
+
|
|
118
|
+
Every adapter sub-package carries `src/apothem/harnesses/<name>/STANDARD-CONVENTION-PIN.md`. The canonical template:
|
|
119
|
+
|
|
120
|
+
```markdown
|
|
121
|
+
<!-- canonical single-line SPDX license header per scripts/inject-header.py -->
|
|
122
|
+
|
|
123
|
+
# STANDARD CONVENTION PIN — <harness-name>
|
|
124
|
+
|
|
125
|
+
vendor-doc-url: <commit-permalinked vendor documentation URL>
|
|
126
|
+
commit-sha: <vendor-repository commit SHA or archival snapshot ID>
|
|
127
|
+
snapshot-date: <YYYY-MM-DD ISO 8601>
|
|
128
|
+
canonical-filename: <e.g., settings.json>
|
|
129
|
+
canonical-schema: <JSON Schema URL | TypeScript type definition path | inline schema body>
|
|
130
|
+
|
|
131
|
+
## Verification
|
|
132
|
+
|
|
133
|
+
The vendor schema at the pinned commit-sha above was verified against
|
|
134
|
+
vendor reality on snapshot-date. Adapter materializer output MUST
|
|
135
|
+
produce content conforming to canonical-schema; deviations are
|
|
136
|
+
findings per `rules/harness-adapter-shape.md` §4 Standard-Conformance.
|
|
137
|
+
|
|
138
|
+
## Refresh cadence
|
|
139
|
+
|
|
140
|
+
Re-verify against vendor reality every 90 days. On refresh, update
|
|
141
|
+
commit-sha + snapshot-date in the same change-set and emit a
|
|
142
|
+
`[Pin — refreshed: <harness>; …]` ledger entry per
|
|
143
|
+
`rules/disclosure-ledger.md`.
|
|
144
|
+
|
|
145
|
+
## Bindings
|
|
146
|
+
|
|
147
|
+
- Established by ↑ `rules/harness-adapter-shape.md` §6.
|
|
148
|
+
- Cross-bound with ↔ `src/apothem/harnesses/<name>/__init__.py` (the
|
|
149
|
+
adapter whose discovery walk this pin anchors).
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
Per-harness pins differ on `vendor-doc-url`, `commit-sha`, `snapshot-date`, `canonical-filename`, and `canonical-schema` only; the template shape is invariant across the cohort.
|
|
153
|
+
|
|
154
|
+
**Stale-pin findings.** A pin whose `snapshot-date` is older than 90 days against current vendor reality surfaces as a finding at the next adapter-touch boundary. The finding routes to a pin-refresh change-set per the §6 refresh cadence.
|
|
155
|
+
|
|
156
|
+
## Bindings (§0.j five-direction)
|
|
157
|
+
|
|
158
|
+
- **Drives →** Every per-harness discovery walk; every adapter sub-package's convergence-vs-divergence declaration; every per-harness pre-emission gate adaptation; every 7-column test matrix; every cross-harness hoist decision; every per-harness STANDARD CONVENTION PIN authoring + refresh.
|
|
159
|
+
- **Satisfies →** `rules/harness-adapter-shape.md` §§1–6 Companion Sub-Rule Anchors; per-harness adapter discipline; adapter-test matrix discipline; STANDARD CONVENTION PIN freshness; capability-coverage test matrix shape.
|
|
160
|
+
- **Established by ↑** `rules/harness-adapter-shape.md` (parent-rule anchor) and the adapter cohort's standard pin discipline.
|
|
161
|
+
- **Gated by ←** The path-filter (`**/src/apothem/harnesses/**`, `**/_inputs/harness-*`) — this companion demand-loads only on adapter sub-package or per-harness scratch touches. `rules/harness-adapter-shape.md` always-on baseline.
|
|
162
|
+
- **Cross-bound with ↔** `rules/harness-adapter-shape.md` (parent rule; §§1–6 anchors bind this companion). `rules/host-discovery.md` (M1 — per-harness discovery walks). `rules/host-discovery-manifests.md` (M1 detail — discovery-record provenance schema underwrites the §6 PIN). `rules/systemic-participation.md` + `rules/systemic-participation-relations.md` (M14 — convergence-vs-divergence at §2). `rules/canonical-layout.md` (M12 — adapter sub-packages + PIN files at the canonical layout). `rules/disclosure-ledger.md` (M2 — every discovery, pin refresh, declared divergence recorded). `rules/agent-capability-discipline.md` (co-resident PIN discipline mirror).
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: "harness-adapter-shape"
|
|
3
|
+
description: "Per-harness adapter discipline — discovery walk per harness, sibling-convention convergence, per-harness pre-emission gate adaptation, 7-column adapter-test matrix shape, cross-harness redundancy elimination, and the per-harness STANDARD CONVENTION PIN schema (vendor doc URL + commit-SHA + snapshot date + canonical filename + canonical schema)."
|
|
4
|
+
pathFilter: ""
|
|
5
|
+
alwaysApply: true
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
<!-- SPDX-License-Identifier: MIT -->
|
|
9
|
+
|
|
10
|
+
# Rule: Harness Adapter Shape
|
|
11
|
+
|
|
12
|
+
## Obligations
|
|
13
|
+
|
|
14
|
+
Every adapter in the 17-harness cohort MUST perform host discovery, converge on the sibling adapter shape, declare its divergences, carry adapter tests, and ship a co-resident `STANDARD-CONVENTION-PIN.md`.
|
|
15
|
+
|
|
16
|
+
### 1. Discovery walk per harness (Companion Sub-Rule Anchor)
|
|
17
|
+
|
|
18
|
+
Walk the harness's ratified config schemas, adapter paths, and convention surfaces per `rules/host-discovery.md`. Full schema catalog at `rules/harness-adapter-shape-schemas.md` §1.
|
|
19
|
+
|
|
20
|
+
### 2. Sibling-convention convergence (Companion Sub-Rule Anchor)
|
|
21
|
+
|
|
22
|
+
Converge on `HarnessAdapter`, the sibling action modules, `materializer.py` placement, and entry-point registration. Every per-harness divergence MUST be declared; details live at `rules/harness-adapter-shape-schemas.md` §2.
|
|
23
|
+
|
|
24
|
+
### 3. Gate, test, and pin floor
|
|
25
|
+
|
|
26
|
+
Adapters MUST pass the fifteen-bar gate, carry the 7-column adapter-test matrix, hoist logic recurring across three or more adapters, and keep `STANDARD-CONVENTION-PIN.md` current. The pin names `vendor-doc-url`, `commit-sha` or archive ID, `snapshot-date`, `canonical-filename`, and `canonical-schema`; a stale or branch-pointed pin is a finding. Templates and adaptation tables live in `rules/harness-adapter-shape-schemas.md` §§3-6.
|
|
27
|
+
|
|
28
|
+
## Disclosure surface
|
|
29
|
+
|
|
30
|
+
Record adapter discovery, pin refreshes, and sibling divergences in `rules/disclosure-ledger.md`.
|
|
31
|
+
|
|
32
|
+
## Failure tells
|
|
33
|
+
|
|
34
|
+
A missing pin, a stale pin, a branch-pointed vendor reference, an undeclared divergence, a missing canonical action module, duplicate cross-adapter logic, or an incomplete 7-column matrix.
|
|
35
|
+
|
|
36
|
+
## Bindings (§0.j five-direction)
|
|
37
|
+
|
|
38
|
+
- **Drives →** Every adapter sub-package authoring / modification / retirement under `src/apothem/harnesses/`. Every per-harness STANDARD CONVENTION PIN refresh. Cross-harness redundancy sweeps.
|
|
39
|
+
- **Satisfies →** Per-harness adapter discipline, adapter-test matrix discipline, STANDARD CONVENTION PIN freshness, and the capability-coverage test matrix shape.
|
|
40
|
+
- **Established by ↑** `CLAUDE.md` Harness Adapter Pattern section and the adapter cohort's standard pin discipline.
|
|
41
|
+
- **Gated by ←** `CLAUDE.md` always-loaded preamble. The companion's pathFilter (`**/src/apothem/harnesses/**, **/_inputs/harness-*`) gates demand-load of per-harness schemas.
|
|
42
|
+
- **Cross-bound with ↔** `rules/harness-adapter-shape-schemas.md` (path-filtered companion carrying per-harness schema bodies + pin templates + 7-column matrix template + convergence-vs-divergence table). `rules/host-discovery.md` (M1 — per-harness discovery is the M1 walk for adapter conventions; §4 discovery-record provenance schema underwrites the PIN schema at §6). `rules/systemic-participation.md` (M14 — sibling-convention convergence at §2 is the M14 silo-prevention surface for adapters). `rules/canonical-layout.md` (M12 — adapter sub-packages and STANDARD-CONVENTION-PIN.md sit at the canonical layout per the §1 directory shape). `rules/disclosure-ledger.md` (M2 — every discovery, pin refresh, and declared divergence is recorded in the ledger). `rules/agent-capability-discipline.md` (co-resident PIN discipline — the STANDARD CONVENTION PIN at §6 mirrors the agent-capability PIN pattern for cross-cohort consistency).
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: "host-discovery-manifests"
|
|
3
|
+
description: "Path-filtered companion rule carrying the per-language manifest catalog, the discovery-record provenance schema, and the failure-tells enumeration declared at the parent `host-discovery.md` rule's §1, §4, and Failure-tells anchors; demand-loaded on host-manifest or convention-document touches."
|
|
4
|
+
pathFilter: "**/pyproject.toml, **/setup.cfg, **/package.json, **/Cargo.toml, **/go.mod, **/.editorconfig, **/.github/workflows/**, **/CONTRIBUTING.md, **/CLAUDE.md, **/rules/**"
|
|
5
|
+
alwaysApply: false
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
<!-- SPDX-License-Identifier: MIT -->
|
|
9
|
+
|
|
10
|
+
# Rule: Host-Discovery Per-Language Manifest Catalog (Companion Sub-Rule)
|
|
11
|
+
|
|
12
|
+
## Purpose
|
|
13
|
+
|
|
14
|
+
Specify the per-language manifest list, the discovery-record provenance schema, and the failure-tells enumeration that the parent rule `rules/host-discovery.md` §1 / §4 / Failure-tells anchors declare. This companion is path-filtered: it loads when the assistant edits any of the host's ratified source-of-truth manifest files or convention documents (`pyproject.toml`, `setup.cfg`, `package.json`, `Cargo.toml`, `go.mod`, `.editorconfig`, `.github/workflows/**`, `CONTRIBUTING.md`, `CLAUDE.md`, `rules/**`), keeping the parent rule's always-on payload lean while preserving full discovery-walk fidelity at the demand-load surface. The parent rule remains the canonical home for the M1 standing directive, the §1 short summary, the honor-discovered-conventions paragraph, the surface-silence paragraph, and the disclosure surface; this companion carries the per-language manifest catalog, the discovery-record schema, and the failure-tells enumeration.
|
|
15
|
+
|
|
16
|
+
## Obligations
|
|
17
|
+
|
|
18
|
+
### 1. Per-Language Manifest Catalog (Parent §1 Detail)
|
|
19
|
+
|
|
20
|
+
Before any artifact is written or edited, walk the host's ratified source-of-truth files for the artifact's class. The seven manifest classes:
|
|
21
|
+
|
|
22
|
+
- **Python** — `pyproject.toml` (`[tool.black]`, `[tool.ruff]`, `[tool.mypy]`, `[tool.pytest.ini_options]`), `setup.cfg`, `requirements*.txt`, `.python-version`, `tox.ini`, `pytest.ini`, `conftest.py`.
|
|
23
|
+
- **TypeScript / JavaScript** — `package.json`, `tsconfig.json`, `.eslintrc*`, `.prettierrc*`, `pnpm-lock.yaml` / `yarn.lock` / `package-lock.json`.
|
|
24
|
+
- **Rust** — `Cargo.toml`, `Cargo.lock`, `rustfmt.toml`, `clippy.toml`.
|
|
25
|
+
- **Go** — `go.mod`, `go.sum`, `.golangci.yml`.
|
|
26
|
+
- **Shell** — `shellcheck` config, `.editorconfig`, sibling-script idioms.
|
|
27
|
+
- **CI** — `.github/workflows/*.yml` (existing action-pinning and minimum-permissions policy).
|
|
28
|
+
- **Docs** — site config (`next.config.mjs`, `docusaurus.config.js`, `_config.yml`), `CONTRIBUTING.md`, sibling pages.
|
|
29
|
+
|
|
30
|
+
Record every discovered value with provenance (the source file path, the value, the date the discovery was made) in the artifact's working trace.
|
|
31
|
+
|
|
32
|
+
### 2. Discovery Record (Parent §4 Detail)
|
|
33
|
+
|
|
34
|
+
Every discovery and every inquiry-driven choice MUST be recorded with provenance in the artifact's working trace — commit message body, PR description, change ledger, or a dedicated `discovery-record.md` for multi-step work — so future agents can audit and re-derive without repeating the discovery walk.
|
|
35
|
+
|
|
36
|
+
### 3. Failure Tells (Parent Failure-Tells Detail)
|
|
37
|
+
|
|
38
|
+
A Python file with `from typing import Optional, Union` in a project that has migrated to `X | None` syntax. A Markdown file with `*emphasis*` in a corpus that uses `_emphasis_`. A test that uses `pytest.fixture` in a project standardized on `unittest.TestCase`. A shell script with `[[ ... ]]` in a strict-POSIX project. A CI workflow using `actions/checkout@v4` when every other workflow in `.github/workflows/` uses `actions/checkout@v3.5.3` pinned. A commit message that does not follow the host's ratified convention. A `package.json` `author` field populated from `.git/config` without inquiry. An MCP server endpoint guessed from a sibling repo without inquiry. A new file class silently installed at an agent-default location when the host is silent on the location.
|
|
39
|
+
|
|
40
|
+
## Enforcement
|
|
41
|
+
|
|
42
|
+
Path-filtered (the ten glob patterns in this rule's `pathFilter` field), always-on at every seriousness level when in scope. Demand-loaded companion to `rules/host-discovery.md` §1 / §4 / Failure-tells. The parent rule carries the M1 standing directive, the §1 short summary, the §2 honor-discovered-conventions paragraph, the §3 surface-silence paragraph, and the disclosure surface; this companion carries the per-language manifest catalog, the discovery-record provenance schema, and the failure-tells enumeration.
|
|
43
|
+
|
|
44
|
+
## Bindings (§0.j five-direction)
|
|
45
|
+
|
|
46
|
+
- **Drives →** ● Every per-language discovery walk on host-manifest touches (the seven manifest classes — Python / TypeScript-JavaScript / Rust / Go / Shell / CI / Docs). ● The discovery-record provenance schema at every multi-step work session's `discovery-record.md`. ● The failure-tells enumeration the pre-emission gate's M1 reasoned check applies. ◐ The PreToolUse Write/Edit hooks on host-manifest path touches.
|
|
47
|
+
- **Satisfies →** ● the fifteen-mandate registry row **M1 — Host-Project Agnosticism** (the per-language manifest detail tier). ● the rules registry row "Host-Discovery Manifests". ● `rules/host-discovery.md` §1 / §4 / Failure-tells anchors (the parent rule's pointers to this companion's full specification).
|
|
48
|
+
- **Established by ↑** ● `rules/host-discovery.md` §1 / §4 / Failure-tells (parent-rule anchors). ● the fifteen-mandate registry (ratifies M1).
|
|
49
|
+
- **Gated by ←** ● The path-filter (the ten glob patterns) — this rule demand-loads only on host-manifest or convention-document touches. ● `rules/host-discovery.md` always-on baseline (parent rule's anchors must be live for the companion to demand-load coherently).
|
|
50
|
+
- **Cross-bound with ↔** ↔ `rules/host-discovery.md` (parent rule; §1 / §4 / Failure-tells anchors bind this companion). ↔ `rules/authority-inquiry.md` (M5 inquiry half — when discovery encounters silence, route through the inquiry surface). ↔ `rules/disclosure-ledger.md` (M2 — every discovery and every inquiry outcome is recorded in the ledger). ↔ `rules/code-craft-python.md` + `rules/code-craft-shell.md` + `rules/code-craft-markdown.md` (per-language code-craft rules consume the per-language manifest discoveries).
|