@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,80 @@
|
|
|
1
|
+
<!-- SPDX-License-Identifier: MIT -->
|
|
2
|
+
|
|
3
|
+
# Agent-Facing Folder Guidance Template
|
|
4
|
+
|
|
5
|
+
Per the root-only convention at
|
|
6
|
+
[`../rules/agents-md-convention.md`](../rules/agents-md-convention.md), the
|
|
7
|
+
repository carries a **single agent-facing canon** at the root `AGENTS.md`, and
|
|
8
|
+
per-folder operating guidance lives in each folder's `README.md` — which serves
|
|
9
|
+
both the human reader and the agent reader. **The convention does NOT require a
|
|
10
|
+
separate per-folder `AGENTS.md` companion beside each `README.md`:** the folder
|
|
11
|
+
`README.md` is the agent-facing surface, so authoring a standalone
|
|
12
|
+
`<folder>/AGENTS.md` is optional, not expected.
|
|
13
|
+
|
|
14
|
+
Use this template in one of two ways:
|
|
15
|
+
|
|
16
|
+
- **Preferred — author a folder README's agent-facing section.** Adapt the
|
|
17
|
+
fenced skeleton below into a section of the folder's `README.md` (a heading
|
|
18
|
+
such as `## For agents` followed by the same body) so one file orients both
|
|
19
|
+
readers.
|
|
20
|
+
- **Rare — author a standalone companion.** Where a folder genuinely needs a
|
|
21
|
+
standalone agent companion beyond its README, copy the skeleton into
|
|
22
|
+
`<folder>/AGENTS.md`, keep the frontmatter and the single-line SPDX license
|
|
23
|
+
header, replace every `<PLACEHOLDER>`, and delete the guidance comments.
|
|
24
|
+
|
|
25
|
+
## What to fill, and what to leave out
|
|
26
|
+
|
|
27
|
+
- **Fill** the folder's purpose, the load-bearing artifacts an agent touches,
|
|
28
|
+
the local conventions an agent MUST respect, the safe-operation guidance,
|
|
29
|
+
and the upstream/downstream edges.
|
|
30
|
+
- **Leave out** volatile inventory counts (e.g., "12 files"); they go stale.
|
|
31
|
+
Describe the operating contract, which is stable.
|
|
32
|
+
- **Stay agnostic.** Privilege no single harness, model, or tool; pre-set no
|
|
33
|
+
model or effort preference. A folder describing one harness adapter names it
|
|
34
|
+
by its catalog slug, never by a privileging brand phrase.
|
|
35
|
+
- **Stay canon-coherent.** Extend the root `AGENTS.md` canon; contradict none
|
|
36
|
+
of its shared claims (plans locality, authorship headers, ambiguity
|
|
37
|
+
handling, naming, release freshness, human-only authorship, plain-language).
|
|
38
|
+
|
|
39
|
+
## Skeleton
|
|
40
|
+
|
|
41
|
+
```markdown
|
|
42
|
+
---
|
|
43
|
+
name: <FolderName>
|
|
44
|
+
version: <semver, e.g. 0.1.0>
|
|
45
|
+
updated: <YYYY-MM-DD>
|
|
46
|
+
description: Agent-facing operating guide for the <folder/path> folder.
|
|
47
|
+
scope: folder
|
|
48
|
+
portability: repo-local
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
<!-- SPDX-License-Identifier: MIT -->
|
|
52
|
+
|
|
53
|
+
# <folder/path> — Agent Guide
|
|
54
|
+
|
|
55
|
+
> **Role.** <One sentence: what this folder is for and what depends on it.>
|
|
56
|
+
|
|
57
|
+
## What lives here
|
|
58
|
+
|
|
59
|
+
<The load-bearing artifacts an agent touches and how they are organized —
|
|
60
|
+
the artifact CLASSES and their roles, not a file-by-file count. One short
|
|
61
|
+
paragraph or a compact list.>
|
|
62
|
+
|
|
63
|
+
## Conventions an agent must respect
|
|
64
|
+
|
|
65
|
+
<The concrete invariants for acting in this folder. Examples to adapt:
|
|
66
|
+
file-header form, frontmatter contract, naming scheme, where this folder's
|
|
67
|
+
artifacts register (an index/README/registry), gate requirements that run on
|
|
68
|
+
a change here, and any mutation guard.>
|
|
69
|
+
|
|
70
|
+
## Operating in this folder
|
|
71
|
+
|
|
72
|
+
<How to add, modify, or remove an artifact here safely, and which checks
|
|
73
|
+
verify the change. State the command(s) that validate a change to this
|
|
74
|
+
folder (lint, type-check, the relevant conformity matcher, tests).>
|
|
75
|
+
|
|
76
|
+
## Relationships
|
|
77
|
+
|
|
78
|
+
- **Consumes:** <upstream folders/artifacts this folder depends on.>
|
|
79
|
+
- **Produces:** <downstream consumers of this folder's artifacts.>
|
|
80
|
+
```
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
<!-- SPDX-License-Identifier: MIT -->
|
|
2
|
+
|
|
3
|
+
# Consideration Log Template
|
|
4
|
+
|
|
5
|
+
The Consideration Log is the deliverable of Discipline D1 (Meticulous Consideration) inside `src/apothem/commands/plan-spec.md`. Every transformation choice the Forge makes traces back to one row in this log; an empty / skeletal / sham log fires the D1 ◇ Gate at P0 severity and blocks emission.
|
|
6
|
+
|
|
7
|
+
## Purpose
|
|
8
|
+
|
|
9
|
+
Capture every consideration item surfaced during the prose-to-spec transformation — the directives, intentions, rationales, adjacent-domain scans, second-order consequences, and contradictions that the double-read + triple-extract pass produced. The log is the primary evidence that Discipline D1 (double-read · triple-extract · adjacent-domain scan · second-order-consequence enumeration · contradiction surfacing · persona/register/voice inference) executed in full.
|
|
10
|
+
|
|
11
|
+
## Schema
|
|
12
|
+
|
|
13
|
+
| Column | Type | Required | Content |
|
|
14
|
+
| ------ | ---- | -------- | ------- |
|
|
15
|
+
| `item-id` | string | Yes | Stable identifier of the form `CL-NNN` (zero-padded three-digit ordinal). Used as the join key from the Potency Map (paired potent form), the Preservation Audit (preservation verdict per level), and any inline `[Expertise amendment — axis: X — rationale: ...]` markers in the emitted spec. |
|
|
16
|
+
| `source` | string | Yes | The verbatim prose excerpt that produced this consideration. Includes the source-file reference (`path:line` or `path:lines a-b`). Verbatim-quoted; no paraphrase. |
|
|
17
|
+
| `classification` | enum | Yes | One of `preserved-verbatim` (clause woven into the spec at an analogous locus without rewriting) · `amended-with-rationale` (clause woven with a documented amendment) · `added-with-rationale` (no source clause; the consideration extends the prose with a rationale traceable to an adjacent-domain scan or second-order-consequence enumeration). |
|
|
18
|
+
| `disposition` | string | Yes | The transformation choice: where the consideration lands in the spec (section anchor) and how it manifests (e.g., as a requirement, a constraint, a Sprint Goal element, an annotation marker). |
|
|
19
|
+
|
|
20
|
+
## Sample row
|
|
21
|
+
|
|
22
|
+
```markdown
|
|
23
|
+
| item-id | source | classification | disposition |
|
|
24
|
+
|---------|--------|----------------|-------------|
|
|
25
|
+
| CL-001 | "Reliability above all" — `notes/migration.md:14` | preserved-verbatim | Becomes the Sprint Goal's load-bearing clause at `_spec/spec.md` §2.1; paired in Potency Map row PM-001 with the SLO `99.95% read availability over a 28-day rolling window`. |
|
|
26
|
+
| CL-014 | "Probably should think about caching" — `notes/migration.md:62` | amended-with-rationale | Tension surfaced via the structured-inquiry channel at G3; operator selected `Add caching as a deferred capability` over `Add caching as a sprint commitment`; lands at `_spec/spec.md` §3.4 with the deferral rationale captured. |
|
|
27
|
+
| CL-027 | (no source — adjacent-domain scan) | added-with-rationale | Adjacent-domain scan on `database` surfaced the connection-pool-exhaustion failure mode the prose did not name; lands at `_spec/spec.md` §5.2 Failure Modes; rationale points to the Postgres `max_connections` operational pattern. |
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Gate semantics
|
|
31
|
+
|
|
32
|
+
The D1 ◇ Gate fires at G0 (Consideration-Log-Complete standing). An empty log, a log carrying fewer rows than there are distinctive prose phrases, or a log whose `classification` is uniformly `preserved-verbatim` (signal that no thought was applied beyond mechanical transcription) all fail the gate. P0 severity; blocks emission.
|
|
33
|
+
|
|
34
|
+
## Cross-references
|
|
35
|
+
|
|
36
|
+
- Discipline D1 Meticulous Consideration definition: `src/apothem/commands/plan-spec.md` §Workflow Phase 2.
|
|
37
|
+
- Pairing into the Potency Map: `src/apothem/templates/potency-map.md`.
|
|
38
|
+
- Preservation Audit's verdict per row: `src/apothem/templates/preservation-audit.md` (the Preservation Audit's `clause-id` shares the namespace with this log's `item-id` for traceability).
|
|
39
|
+
- Question-Resolution Audit's row when a consideration surfaced via the structured-inquiry channel: `src/apothem/templates/question-resolution-audit.md`.
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
<!-- SPDX-License-Identifier: MIT -->
|
|
2
|
+
|
|
3
|
+
# Expertise-Gap Log Template
|
|
4
|
+
|
|
5
|
+
The Expertise-Gap Log is the deliverable of Discipline D4 (Extensive Expertise) inside `src/apothem/commands/plan-spec.md`. Every transformation in the prose-to-spec run records which of the seven axs of breadth applied, which were not applicable (with rationale), and which surfaced an expertise-envelope limit needing routing.
|
|
6
|
+
|
|
7
|
+
## Purpose
|
|
8
|
+
|
|
9
|
+
Realize the operational form of D4: every transformation explicitly attests its expertise posture. Inline `**[Expertise amendment — axis: X — rationale: ...]**` markers in the emitted spec point back to rows in this log. Under-applied axs raise the D4 ◇ Gate at `**P1**` severity and block emission until either the axis applies (with a recorded amendment) or the row records `not-applicable-with-rationale` or `expertise-envelope-limited` with a downstream routing target.
|
|
10
|
+
|
|
11
|
+
## The seven axs (canonical)
|
|
12
|
+
|
|
13
|
+
| Axis | Scope |
|
|
14
|
+
| ---- | ----- |
|
|
15
|
+
| Domain | Direct subject-matter expertise on what the prose is about (e.g., database internals, payment systems, ML training). |
|
|
16
|
+
| Adjacent-domain | Expertise on neighboring domains whose patterns, failure modes, or vocabularies inform the prose's domain by analogy. |
|
|
17
|
+
| Meta-engineering | The discipline-of-engineering itself: SOLID, clean architecture, dependency direction, testability, reversibility. |
|
|
18
|
+
| Operational | Runtime behavior: deployment, observability, on-call rotations, incident response, runbooks. |
|
|
19
|
+
| Process | The work-process surface: sprint cadence, code review, RFC writing, change management, retrospection. |
|
|
20
|
+
| Scholarly-technical-literature | Citations to peer-reviewed papers, RFCs, industry case studies, formal specifications. |
|
|
21
|
+
| Second-order-systems-thinking | Implications a step removed: what the prose's requirements imply for downstream artifacts the prose does not name. |
|
|
22
|
+
|
|
23
|
+
## Schema
|
|
24
|
+
|
|
25
|
+
| Column | Type | Required | Content |
|
|
26
|
+
| ------ | ---- | -------- | ------- |
|
|
27
|
+
| `axis` | enum | Yes | One of the seven canonical axs above. |
|
|
28
|
+
| `disposition` | enum | Yes | `applied` (axis amended the spec; one or more inline amendment markers point here) · `not-applicable-with-rationale` (axis is genuinely orthogonal to the prose's domain; rationale captures why) · `expertise-envelope-limited` (axis would apply but the Forge's expertise envelope is insufficient; routing target captures where the gap closes). |
|
|
29
|
+
| `attestation-locus` | string | Conditional | Section anchor in `_spec/spec.md` where the inline amendment marker lands; required when `disposition: applied`. Multiple loci are admissible — list them comma-separated when the axis amends more than one section. |
|
|
30
|
+
| `rationale` | string | Conditional | One-sentence justification; required when `disposition: not-applicable-with-rationale` or `expertise-envelope-limited`. For `expertise-envelope-limited`, the rationale also names the expertise-gap closure target (operator clarification, downstream specialist consultation, or deferred routing). |
|
|
31
|
+
| `routing-target` | string | Conditional | When `disposition: expertise-envelope-limited`, names the downstream surface that closes the gap — e.g., `<USER-CONFIRM:kind=...>` placeholder, expert-consultation deferral, downstream-command consumption. |
|
|
32
|
+
|
|
33
|
+
## Sample row
|
|
34
|
+
|
|
35
|
+
```markdown
|
|
36
|
+
| axis | disposition | attestation-locus | rationale | routing-target |
|
|
37
|
+
|------|-------------|-------------------|-----------|----------------|
|
|
38
|
+
| Domain | applied | §2.1 Sprint Goal, §3.4 SLOs | — | — |
|
|
39
|
+
| Adjacent-domain | applied | §3.5 Failure modes (analog: Postgres connection-pool exhaustion) | — | — |
|
|
40
|
+
| Meta-engineering | applied | §4.2 Reversibility paths (closed-set enumeration), §5.1 Composition root | — | — |
|
|
41
|
+
| Operational | applied | §3.4 SLO measurement window, §6.1 Runbook pointer | — | — |
|
|
42
|
+
| Process | applied | §7 Sprint cadence | — | — |
|
|
43
|
+
| Scholarly-technical-literature | not-applicable-with-rationale | — | The prose covers an internal migration with no peer-reviewed scholarship to cite; informal industry references already inline at §3.5 are sufficient. | — |
|
|
44
|
+
| Second-order-systems-thinking | applied | §5.2 Downstream consequences (table) | — | — |
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## Gate semantics
|
|
48
|
+
|
|
49
|
+
The D4 ◇ Gate fires at G4 (Pre-emission). All seven axs appear in the log. Any axis with `disposition: applied` carries a non-empty `attestation-locus`; any with `not-applicable-with-rationale` or `expertise-envelope-limited` carries a non-empty `rationale`. A row with `applied` but missing `attestation-locus`, or with `not-applicable-with-rationale` but missing `rationale`, is a gate failure (`**P1**` block).
|
|
50
|
+
|
|
51
|
+
When more than two axs carry `disposition: not-applicable-with-rationale`, the gate fires a soft warning: the prose may be narrowly scoped, OR the Forge may have under-applied breadth. The warning surfaces in the emitted spec's preamble and routes to the operator's review on next iteration.
|
|
52
|
+
|
|
53
|
+
## Cross-references
|
|
54
|
+
|
|
55
|
+
- Discipline D4 Extensive Expertise definition: `src/apothem/commands/plan-spec.md` §Workflow Phase 5.
|
|
56
|
+
- Inline amendment markers: appear in the emitted `_spec/spec.md` as `**[Expertise amendment — axis: X — rationale: ...]**` annotations whose `axis` field joins to a row in this log.
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
<!-- SPDX-License-Identifier: MIT -->
|
|
2
|
+
|
|
3
|
+
# MASTER-INDEX — `[SUITE_NAME]`
|
|
4
|
+
|
|
5
|
+
> **Purpose.** Suite-root index for **medium+ tier** plan suites (≥50 phases or ≥100 spec sections / constraints per `src/apothem/rules/canonical-layout.md` §7 Three-Tier Scalability). The index is the queryable surface a fresh session, a `/plan-review` cycle, or a sub-suite-federation parent reads to navigate the suite without scanning every PHASE.md or spec section linearly.
|
|
6
|
+
>
|
|
7
|
+
> **When required.** Mandatory at medium and large tier; absent at small tier (in-line refs in `PLAN-NOTES.md` substitute). A small-tier suite that grows past the 50-phase or 100-spec boundary materializes this index in the same change-set per the §7.5 tier-transition rule.
|
|
8
|
+
>
|
|
9
|
+
> **Authoring cadence.** Initial authorship at the medium-tier transition; per-phase write-back appends a row to §2 on phase completion; spec-section evolution edits §1; decision ratification appends a row to §4. The index is always current with the suite — staleness is a structural failure on the orphan-output axis.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## 1. Spec-Section Anchor Table
|
|
14
|
+
|
|
15
|
+
> **Schema.** Every section of `_spec/spec.md` (and any sibling specifications under `_spec/supporting/`) emits one row. The `Stable ID` column carries the `R-NNNN` zero-padded sequential per the §7.2 stable-ID convention (cross-references survive section renames). The `Phase coverage` column lists every `P-NN` mapped to the requirement.
|
|
16
|
+
|
|
17
|
+
| Stable ID | Spec section | Title / one-line summary | Phase coverage | Notes |
|
|
18
|
+
|---|---|---|---|---|
|
|
19
|
+
| `R-0001` | `_spec/spec.md §1` | Mission statement | `P-01`, `P-20` | — |
|
|
20
|
+
| `R-0002` | `_spec/spec.md §2.1` | Token-usage optimization directive | `P-04` | Ratified at Q-014 |
|
|
21
|
+
| `R-NNNN` | `_spec/spec.md §M.N` | `[one-line summary]` | `P-NN`, `P-NN` | `[notes]` |
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## 2. Phase Anchor Table
|
|
26
|
+
|
|
27
|
+
> **Schema.** Every phase folder under `phases/` emits one row. Sub-phases (`phases/NN-topic/NNL-subtopic/`) emit additional rows nested via the `Stable ID` (`P-NN.L`). The `Spec coverage` column lists every `R-NNNN` the phase satisfies.
|
|
28
|
+
|
|
29
|
+
| Stable ID | Phase folder | Title / scope | Spec coverage | Status |
|
|
30
|
+
|---|---|---|---|---|
|
|
31
|
+
| `P-01` | `phases/01-kebab-topic/` | `[scope summary]` | `R-0001`, `R-0007` | ✅ Complete |
|
|
32
|
+
| `P-02` | `phases/02-kebab-topic/` | `[scope summary]` | `R-0003` | ⏳ Pending |
|
|
33
|
+
| `P-NN` | `phases/NN-kebab-topic/` | `[scope summary]` | `R-NNNN`, `R-NNNN` | `[status]` |
|
|
34
|
+
| `P-NN.A` | `phases/NN-topic/NNA-subtopic/` | `[sub-phase scope]` | `R-NNNN` | `[status]` |
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## 3. Constraint Anchor Table
|
|
39
|
+
|
|
40
|
+
> **Schema.** Every named constraint (architectural invariant, security floor, regulatory boundary, performance budget, compliance clause) emits one row. Constraints sit alongside requirements; the table separates them so binding analysis can audit each class independently.
|
|
41
|
+
|
|
42
|
+
| Stable ID | Constraint name | Source citation | Affected phases | Notes |
|
|
43
|
+
|---|---|---|---|---|
|
|
44
|
+
| `C-01` | `[constraint name]` | `_spec/spec.md §M.N` or `src/apothem/rules/<rule>.md §X` | `P-NN`, `P-NN` | `[mitigation / verification surface]` |
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## 4. Decision Anchor Table
|
|
49
|
+
|
|
50
|
+
> **Schema.** Every numbered decision (D-1, D-2, …) the suite ratifies emits one row. Decisions are the resolved-structured inquiry surface plus any agent-driven architectural decisions recorded with operator approval. Cross-references in PLAN-NOTES.md and PHASE.md files cite the `Stable ID` so renames preserve the link.
|
|
51
|
+
|
|
52
|
+
| Stable ID | Decision title | Resolution | Source | Affected phases |
|
|
53
|
+
|---|---|---|---|---|
|
|
54
|
+
| `D-1` | `[decision name]` | `[one-sentence resolution]` | Q-NNN in `PLAN-NOTES.md` Wave N | `P-NN`, `P-NN` |
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
## 5. Cross-Suite Federation (Large Tier Only)
|
|
59
|
+
|
|
60
|
+
> **Schema.** Large-tier suites decompose into multiple child suites with parent-child relationship per `src/apothem/rules/canonical-layout.md` §7.1 Decomposition. The parent's MASTER-INDEX.md carries this section listing every child suite plus its own MASTER-INDEX.md path. Child suites omit this section (they are small or medium per §7.1).
|
|
61
|
+
|
|
62
|
+
| Child suite | Path | Tier | Phase count | Spec count | MASTER-INDEX path | Last rollup |
|
|
63
|
+
|---|---|---|---|---|---|---|
|
|
64
|
+
| `[child-suite-name]` | `<project-root>/.apothem/plans/[child-suite]/` | `medium` | NN | NNN | `[child-suite]/MASTER-INDEX.md` | `[ISO-8601 date]` |
|
|
65
|
+
|
|
66
|
+
**Federation invariants:**
|
|
67
|
+
|
|
68
|
+
- Every `R-NNNN` requirement in the parent index resolves to at least one child suite's phase coverage.
|
|
69
|
+
- Every cross-child reference uses the parent's stable ID space (no child-local IDs leak into parent navigation).
|
|
70
|
+
- Child suite tier transitions (small ↔ medium) propagate to this section in the same change-set.
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
## 6. Validation Cadence
|
|
75
|
+
|
|
76
|
+
> **Schema.** The medium and large tiers run `/plan-review` incrementally rather than full-suite-each-pass. This section records the rolling validation state — which phase groups have been audited in the current cycle, which spec sections have been re-validated, when the next sampled-rollup is due.
|
|
77
|
+
|
|
78
|
+
| Audit class | Last cycle | Coverage this cycle | Next due |
|
|
79
|
+
|---|---|---|---|
|
|
80
|
+
| Per-phase verification | `[ISO-8601 date]` | `P-NN..P-NN` | `[ISO-8601 date]` |
|
|
81
|
+
| Phase-rollup verification (groups of 5-20) | `[ISO-8601 date]` | `[group ID]` | `[ISO-8601 date]` |
|
|
82
|
+
| Spec-section sampled audit | `[ISO-8601 date]` | `R-NNNN..R-NNNN` | `[ISO-8601 date]` |
|
|
83
|
+
| Suite-rollup (large only) | `[ISO-8601 date]` | full | `[ISO-8601 date]` |
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
## 7. Bindings (§0.j five-direction)
|
|
88
|
+
|
|
89
|
+
- **Drives →** Every fresh-session navigation of this suite (the index is the first read after PROGRESS.md per `src/apothem/rules/context-management.md` §6 Blind Bootstrap at medium+ tier); every `/plan-review` cycle's audit-coverage decision (the §6 cadence table records what was last audited and what is due); every cross-suite federation parent's child-suite enumeration at large tier.
|
|
90
|
+
- **Satisfies →** `src/apothem/rules/canonical-layout.md` §7 Three-Tier Scalability (medium+ tier indexing requirement); the §7.2 drift-prevention `MASTER-INDEX.md` mechanism; the §7.5 tier-transition emission contract.
|
|
91
|
+
- **Established by ↑** `_spec/spec.md` §8 (D7 source — Q-011 three-tier ratification); the medium-tier transition decision recorded in PLAN-NOTES.md when the suite crosses the 50-phase or 100-spec boundary.
|
|
92
|
+
- **Gated by ←** Tier classification (small-tier suites omit this index); operator's borderline-tier structured inquiry resolution per §7.3 of the canonical-layout companion when phase count sits within ±10% of a boundary.
|
|
93
|
+
- **Cross-bound with ↔** `src/apothem/templates/trace-matrix-template.md` (sibling drift-prevention surface; the trace matrix's row × column shape and this index's anchor tables together close the bidirectional traceability invariant); `PROGRESS.md` (per-phase status mirrors the §2 Phase Anchor Table's Status column); `_spec/spec.md` (every §1 row maps back to a spec section); `PLAN-NOTES.md` (every §4 row maps back to a Q-NNN resolution); every `phases/NN-kebab-topic/PHASE.md` (every §2 row resolves to a PHASE.md file).
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
<!-- SPDX-License-Identifier: MIT -->
|
|
2
|
+
|
|
3
|
+
# Potency Map Template
|
|
4
|
+
|
|
5
|
+
The Potency Map is the deliverable of Discipline D2 (EXTREME Potency) inside `src/apothem/commands/plan-spec.md`. Every preserved prose element pairs with its potent operational form here; missing pairings raise a `**P1**` block at emission.
|
|
6
|
+
|
|
7
|
+
## Purpose
|
|
8
|
+
|
|
9
|
+
Realize the spec's organizing principle: **potency alone is inert archiving; potency is the ceiling, preservation is the floor**. The Forge does not merely retain the user's prose — it pairs every retained element with the operational shape that lets the spec actively drive downstream commands. The Potency Map is the audit surface where each pairing is recorded.
|
|
10
|
+
|
|
11
|
+
## Pairing dictionary (canonical)
|
|
12
|
+
|
|
13
|
+
| Preserved prose class | Paired potent operational form |
|
|
14
|
+
| --------------------- | ------------------------------ |
|
|
15
|
+
| Reliability requirement | Service Level Objective (SLO) with measurable threshold + measurement window |
|
|
16
|
+
| Flow / sequence | Mermaid `flowchart` (control flow) · `sequenceDiagram` (interaction) · `stateDiagram-v2` (state machine) |
|
|
17
|
+
| Decision / choice | Annotated structured inquiry option set with the three-segment body (rationale / recommendation / default-pointer) |
|
|
18
|
+
| Ordered execution | Sprint apparatus with Sprint Goal · DoR · DoD · Sprint Review · Retrospective · Velocity Log entry |
|
|
19
|
+
| Cross-reference | Canonical bidirectional binding (Drives → · Satisfies → · Established by ↑ · Gated by ← · Cross-bound with ↔) |
|
|
20
|
+
| Definitive statement | Airtight input-class coverage (closed-set enumeration with explicit-N/A attestation on residue) |
|
|
21
|
+
| Authoritative datum | Inquiry surfacing with `<USER-CONFIRM:kind=...>` placeholder until operator-supplied |
|
|
22
|
+
|
|
23
|
+
The dictionary is open-extensible: when a prose element does not match any of the seven canonical pair-classes above, the row records the bespoke pairing with a one-sentence rationale.
|
|
24
|
+
|
|
25
|
+
## Schema
|
|
26
|
+
|
|
27
|
+
| Column | Type | Required | Content |
|
|
28
|
+
| ------ | ---- | -------- | ------- |
|
|
29
|
+
| `pair-id` | string | Yes | Stable identifier of the form `PM-NNN`. |
|
|
30
|
+
| `preserved-element` | string | Yes | Verbatim prose excerpt + source reference (`path:line` or `path:lines a-b`). |
|
|
31
|
+
| `paired-potent-form` | string | Yes | The operational shape paired to the element. Names the class from the dictionary above (or describes the bespoke pairing) and embeds the concrete artifact (the SLO threshold, the Mermaid block name, the option-set label, etc.). |
|
|
32
|
+
| `pairing-anchor` | string | Yes | The section anchor in `_spec/spec.md` where the paired potent form lands (e.g., `§3.4 SLOs`, `§4.2 Sprint apparatus`). |
|
|
33
|
+
| `transformation-effect` | string | Yes | One sentence describing what the pairing enables downstream — what the operational form lets a downstream command (`/plan-generate`, `/plan-execute`) do that the unpaired prose alone could not. |
|
|
34
|
+
|
|
35
|
+
## Sample row
|
|
36
|
+
|
|
37
|
+
```markdown
|
|
38
|
+
| pair-id | preserved-element | paired-potent-form | pairing-anchor | transformation-effect |
|
|
39
|
+
|---------|-------------------|--------------------|----------------|----------------------|
|
|
40
|
+
| PM-001 | "Reliability above all" — `notes/migration.md:14` | SLO: 99.95% read availability over a 28-day rolling window; measurement via the existing latency dashboard's 5xx-rate panel | `§3.4 Service Level Objectives` | Downstream `/plan-execute` can author a quality gate that fails when the rolling 28-day 5xx rate exceeds the SLO budget. |
|
|
41
|
+
| PM-002 | "We probably need to retry transient failures" — `notes/migration.md:31` | Decision option set: Add retry-with-backoff (Recommended) · Add at-least-once delivery · Defer | `§4.1 Reliability options` | The annotated option set lets the operator make the retry-strategy decision via the structured-inquiry channel at G3 with the three-segment body rather than a silent default. |
|
|
42
|
+
| PM-008 | "Migration must be reversible" — `notes/migration.md:48` | Definitive statement: airtight closed-set enumeration of the four reversibility paths (down-migration · feature-flag rollback · blue-green swap · point-in-time-restore); residue explicitly N/A-with-rationale | `§5.1 Reversibility paths` | Downstream `/plan-review` can verify every migration step in the plan suite traces back to one of the four reversibility paths. |
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Gate semantics
|
|
46
|
+
|
|
47
|
+
A row missing its `paired-potent-form` raises a `**P1**` block at emission. A row whose `paired-potent-form` is the empty string, the string `none`, or the string `TODO` is treated identically. Every preserved-element from the Consideration Log (rows classified `preserved-verbatim` or `amended-with-rationale`) must have a corresponding Potency Map row; missing rows raise the `**P1**` block.
|
|
48
|
+
|
|
49
|
+
## Cross-references
|
|
50
|
+
|
|
51
|
+
- Discipline D2 EXTREME Potency definition: `src/apothem/commands/plan-spec.md` §Workflow Phase 3.
|
|
52
|
+
- Source consideration item: `src/apothem/templates/consideration-log.md` (row's `item-id` is the upstream join key).
|
|
53
|
+
- Preservation Audit's verdict for the same clause: `src/apothem/templates/preservation-audit.md`.
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
<!-- SPDX-License-Identifier: MIT -->
|
|
2
|
+
|
|
3
|
+
# Preservation Audit Template
|
|
4
|
+
|
|
5
|
+
The Preservation Audit is the deliverable of Discipline D3 (STRICT Preservation) inside `src/apothem/commands/plan-spec.md`. It records the per-clause verdicts at all three preservation levels — Level 1 syntactic · Level 2 semantic · Level 3 tonal — that gate emission of the spec.
|
|
6
|
+
|
|
7
|
+
## Purpose
|
|
8
|
+
|
|
9
|
+
Realize the spec's load-bearing principle: **preservation is strict weaving; every prose clause is woven into scaffolding at its structural locus; transformation is additive, not rewriting**. The Preservation Audit is the per-clause record proving this principle held: every distinctive prose phrase verbatim-present (Level 1), every requirement / constraint / directive operationally HONORED (Level 2), every tonal choice preserved at the analogous locus (Level 3).
|
|
10
|
+
|
|
11
|
+
## The three levels
|
|
12
|
+
|
|
13
|
+
- **Level 1 — Syntactic.** Every distinctive phrase verbatim, grep-matchable. Reproducible matcher: `rg --no-heading -nF '<phrase>' {suite}/_spec/spec.md`. A single grep-miss is a Level-1 failure (`**P1**` block).
|
|
14
|
+
- **Level 2 — Semantic.** Every requirement / constraint / directive / implicit assumption is HONORED in operational scaffolding (not merely quoted). Quotation without operational enforcement is a Level-2 failure (`**P1**` block).
|
|
15
|
+
- **Level 3 — Tonal.** Bold / italic / ALL-CAPS / repeated intensifiers / slash-alternations / paired adjectives / rhetorical repetition are preserved at the analogous locus. Flattening is a Level-3 failure (`**P2**` escalating to `**P1**` when interpretive weight is materially affected).
|
|
16
|
+
|
|
17
|
+
## Schema
|
|
18
|
+
|
|
19
|
+
| Column | Type | Required | Content |
|
|
20
|
+
| ------ | ---- | -------- | ------- |
|
|
21
|
+
| `clause-id` | string | Yes | Stable identifier shared with the Consideration Log's `item-id` namespace (e.g., `CL-001` becomes `clause-id: CL-001` here). |
|
|
22
|
+
| `source-locus` | string | Yes | Path + line reference for the source prose. |
|
|
23
|
+
| `target-locus` | string | Yes | Section anchor in `_spec/spec.md` where the clause is woven. |
|
|
24
|
+
| `l1-verdict` | enum | Yes | `pass` (verbatim grep-match holds) · `fail` (grep-miss; the verbatim phrase is absent at the target locus). |
|
|
25
|
+
| `l1-matcher` | string | Conditional | The `rg` invocation used; required when `l1-verdict: pass` so the verdict is reproducible. |
|
|
26
|
+
| `l2-verdict` | enum | Yes | `pass` (the requirement / constraint / directive is operationally enforced via SLO / option set / sprint apparatus / etc.) · `fail` (the source clause is quoted without operational enforcement). |
|
|
27
|
+
| `l2-enforcement-anchor` | string | Conditional | The Potency Map row (`PM-NNN`) or the section in `_spec/spec.md` where the operational enforcement lives; required when `l2-verdict: pass`. |
|
|
28
|
+
| `l3-verdict` | enum | Yes | `pass` (tonal choice preserved at the analogous locus) · `partial` (`**P2**` — tonal choice partially preserved with no material effect on interpretive weight) · `fail` (`**P1**` — tonal choice flattened with material effect on interpretive weight). |
|
|
29
|
+
| `l3-tonal-marker` | string | Conditional | The specific tonal marker preserved (e.g., `ALL-CAPS PERSISTENTLY`, `bold "must never"`, `paired adjective "airtight + strict"`); required when `l3-verdict: pass` or `partial`. |
|
|
30
|
+
| `notes` | string | No | Free-form remediation notes when any verdict is `fail` or `partial`. |
|
|
31
|
+
|
|
32
|
+
## Sample row
|
|
33
|
+
|
|
34
|
+
```markdown
|
|
35
|
+
| clause-id | source-locus | target-locus | l1-verdict | l1-matcher | l2-verdict | l2-enforcement-anchor | l3-verdict | l3-tonal-marker | notes |
|
|
36
|
+
|-----------|--------------|--------------|------------|------------|------------|-----------------------|------------|-----------------|-------|
|
|
37
|
+
| CL-001 | notes/migration.md:14 | §3.4 SLOs | pass | rg --no-heading -nF '"Reliability above all"' _spec/spec.md | pass | PM-001 (SLO 99.95%/28-day) | pass | bold "above all" preserved at §3.4 lead | — |
|
|
38
|
+
| CL-014 | notes/migration.md:62 | §3.4 Reliability options | pass | rg --no-heading -nF '"Probably should think about caching"' _spec/spec.md | pass | PM-002 (decision option set) | pass | hedging "probably" preserved as deferral signal | Surfaced via the structured-inquiry channel at G3; selection captured in Question-Resolution Audit row QR-007. |
|
|
39
|
+
| CL-022 | notes/migration.md:72 | §5.1 Reversibility paths | pass | rg --no-heading -nF '"Migration must be reversible"' _spec/spec.md | pass | PM-008 (definitive closed-set) | pass | imperative "must be" preserved verbatim | — |
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Per-level summary
|
|
43
|
+
|
|
44
|
+
The Preservation Audit emits a header summary above the per-row table:
|
|
45
|
+
|
|
46
|
+
```markdown
|
|
47
|
+
| Level | Pass | Partial | Fail | Total |
|
|
48
|
+
|-------|------|---------|------|-------|
|
|
49
|
+
| 1 | 124 | 0 | 0 | 124 |
|
|
50
|
+
| 2 | 47 | 0 | 0 | 47 |
|
|
51
|
+
| 3 | 12 | 0 | 0 | 12 |
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
The summary is the inspection surface for the four-discipline operational invariant condition (i) + (ii) + (iii). Any non-zero `Fail` count blocks emission until the offending rows resolve.
|
|
55
|
+
|
|
56
|
+
## Cross-references
|
|
57
|
+
|
|
58
|
+
- Discipline D3 STRICT Preservation definition: `src/apothem/commands/plan-spec.md` §Workflow Phase 4.
|
|
59
|
+
- Source consideration item: `src/apothem/templates/consideration-log.md` (`item-id` ↔ `clause-id`).
|
|
60
|
+
- Operational enforcement target: `src/apothem/templates/potency-map.md` (`PM-NNN` referenced in `l2-enforcement-anchor`).
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
<!-- SPDX-License-Identifier: MIT -->
|
|
2
|
+
|
|
3
|
+
# Question-Resolution Audit Template
|
|
4
|
+
|
|
5
|
+
The Question-Resolution Audit is the deliverable of Discipline D5 (Question-Resolution Audit) inside `src/apothem/commands/plan-spec.md` Phase 6. Every structured-inquiry invocation across the six mandatory gate points G0–G5 lands one row here; silent-defaulted rows are forbidden by the D8 anti-pattern set.
|
|
6
|
+
|
|
7
|
+
## Purpose
|
|
8
|
+
|
|
9
|
+
Realize the operational audit surface for the canonical-channel obligation of `src/apothem/rules/interactive-questions.md`. Every questionable identified by the ten D1 trigger categories produces a row; every row corresponds to an actual structured inquiry call; every P0/P1-severity row resolves at its gate or carries a `<USER-CONFIRM:kind=...; defer-reason=...; defer-timestamp=...; deferred-by-command=plan-spec/>` placeholder routed downstream via the Handoff Manifest. The audit is the proof that no question was suppressed, no default was silent, no fabrication occurred.
|
|
10
|
+
|
|
11
|
+
## Schema
|
|
12
|
+
|
|
13
|
+
| Column | Type | Required | Content |
|
|
14
|
+
| ------ | ---- | -------- | ------- |
|
|
15
|
+
| `question-id` | string | Yes | Stable identifier of the form `QR-NNN`. |
|
|
16
|
+
| `trigger-category` | enum | Yes | One of the ten D1 trigger categories: `authority-datum-absent` · `requirement-ambiguity` · `constraint-under-specification` · `ordering-indeterminacy` · `contradiction` · `option-set-decision` · `implicit-assumption` · `expertise-envelope-limit` · `scope-boundary` · `consequence-acceptance`. |
|
|
17
|
+
| `source` | string | Yes | Verbatim prose excerpt + source reference (`path:line` or `path:lines a-b`). For category `expertise-envelope-limit` rows, the source may be the Expertise-Gap Log row that surfaced the limit. |
|
|
18
|
+
| `question` | string | Yes | The question text emitted via the structured-inquiry channel. One sentence, ending in `?`. |
|
|
19
|
+
| `options` | string | Yes | Pipe-delimited list of option labels presented in the invocation. Implicit `Other` (free-text) is not enumerated; only the canned options. |
|
|
20
|
+
| `selection` | string | Yes | The label the operator selected. When the operator provided free-text via the implicit `Other` channel, the value is the literal `Other: <free-text>` form. |
|
|
21
|
+
| `gate` | enum | Yes | Which gate fired: `G0` (Consideration-Log-Complete standing) · `G1` (Pre-structural-drafting) · `G2` (Mid-drafting on-discovery) · `G3` (Pre-amendment) · `G4` (Pre-emission) · `G5` (Handoff). |
|
|
22
|
+
| `severity` | enum | Yes | `P0` (skipping G1/G2/G5 OR D4 Deferral discipline missing one of its five conditions; blocks emission) · `P1` (skipping G3/G4 OR a question that materially affects the spec; blocks emission until resolved) · `P2` (questions whose resolution does not block emission but improves spec quality). |
|
|
23
|
+
| `resolution-status` | enum | Yes | `resolved-at-gate-X` (substituting the actual gate that resolved it) · `deferred-with-placeholder` (operator chose to defer; the `<USER-CONFIRM:...>` placeholder is installed and the routing target captured below). |
|
|
24
|
+
| `consequence` | string | Yes | One sentence describing what selection of the operator's chosen option entails for the spec — what scaffolding lands, what is excluded, what becomes a dependency for downstream consumption. |
|
|
25
|
+
| `deferral-routing` | string | Conditional | When `resolution-status: deferred-with-placeholder`, names the downstream routing target via the Handoff Manifest's `placeholders` field; required only on deferred rows. |
|
|
26
|
+
|
|
27
|
+
## Sample row
|
|
28
|
+
|
|
29
|
+
```markdown
|
|
30
|
+
| question-id | trigger-category | source | question | options | selection | gate | severity | resolution-status | consequence | deferral-routing |
|
|
31
|
+
|-------------|------------------|--------|----------|---------|-----------|------|----------|-------------------|-------------|------------------|
|
|
32
|
+
| QR-001 | option-set-decision | notes/migration.md:31 "We probably need to retry transient failures" | Should the migration use retry-with-backoff or at-least-once delivery? | Retry-with-backoff (Recommended) | At-least-once delivery | Defer | Retry-with-backoff (Recommended) | G3 | P1 | resolved-at-gate-G3 | Spec §3.4 lands the retry-with-backoff option set; at-least-once delivery and deferral are excluded. The retry-config parameters become an authority-datum-absent question routed to G3 (closed in QR-002). | — |
|
|
33
|
+
| QR-007 | authority-datum-absent | notes/migration.md:48 "rollback strategy" | Which reversibility paths apply to this migration? | Down-migration | Feature-flag rollback | Blue-green swap | Point-in-time-restore | Down-migration · Feature-flag rollback · Point-in-time-restore | G2 | P1 | resolved-at-gate-G2 | Spec §5.1 lists three of the four canonical reversibility paths as in-scope; blue-green swap is explicitly out-of-scope with rationale. | — |
|
|
34
|
+
| QR-014 | implicit-assumption | notes/migration.md:55 "We assume the dump tool is fast enough" | Is the dump tool's throughput verified for the migration window? | Verified by recent benchmark | Verified by ops-team experience | Defer with placeholder | Defer with placeholder | G4 | P0 | deferred-with-placeholder | Spec §6.2 carries `<USER-CONFIRM:kind=ops-verification; defer-reason=ops-team-availability-pending; defer-timestamp=2026-04-27T15:00:00Z; deferred-by-command=plan-spec/>`; downstream `/plan-generate` consumes the placeholder per the Handoff Manifest's `placeholders` field. | downstream-command:/plan-generate |
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## Invariants
|
|
38
|
+
|
|
39
|
+
The audit is checked at G4 (Pre-emission). Required invariants:
|
|
40
|
+
|
|
41
|
+
- Every row corresponds to an actual structured inquiry call (no fictional rows).
|
|
42
|
+
- Every `D1`-identified questionable produces exactly one row (no merging, no skipping).
|
|
43
|
+
- No row carries `selection: silent-default` or empty selection (the D8 anti-pattern set forbids these forms).
|
|
44
|
+
- Every `severity: P0` and `severity: P1` row carries either `resolution-status: resolved-at-gate-X` or `resolution-status: deferred-with-placeholder` with non-empty `deferral-routing`.
|
|
45
|
+
- The Handoff Manifest's `p0-unresolved` and `p1-unresolved` fields equal the count of P0 / P1 rows whose `resolution-status` is `deferred-with-placeholder` and whose `deferral-routing` does not name a placeholder-resolution target. The four-discipline operational invariant requires both fields to read `0` at G5 (Handoff).
|
|
46
|
+
|
|
47
|
+
## Cross-references
|
|
48
|
+
|
|
49
|
+
- Discipline D5 Question-Resolution Audit definition: `src/apothem/commands/plan-spec.md` Phase 6 — Question-Resolution Sweep (Ten Disciplines D1–D10).
|
|
50
|
+
- Canonical channel obligation: `src/apothem/rules/interactive-questions.md`.
|
|
51
|
+
- Handoff Manifest target: `src/apothem/schemas/handoff-manifest.yaml`.
|
|
52
|
+
- Trigger-category D1 enumeration source: `src/apothem/commands/plan-spec.md` §Workflow Phase 6 D1.
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
<!-- SPDX-License-Identifier: MIT -->
|
|
2
|
+
|
|
3
|
+
# TRACE-MATRIX — `[SUITE_NAME]`
|
|
4
|
+
|
|
5
|
+
> **Purpose.** Bidirectional traceability surface mapping every spec requirement to the phase(s) that satisfy it, and every phase to the requirement(s) it covers. Closes the **all-tier** drift-prevention invariant per `src/apothem/rules/canonical-layout.md` §7.2: at small tier a narrative trace table inside `PLAN-NOTES.md` substitutes for this formal file; at medium and large tier the formal matrix is materialized at the suite root.
|
|
6
|
+
>
|
|
7
|
+
> **Stable-ID convention** (medium+ tier per §7.2). Every prose directive line in `_spec/spec.md` becomes `R-NNNN` (zero-padded sequential within the suite). Every phase number becomes `P-NN` (matching `phases/NN-kebab-topic/`). Sub-phases use `P-NN.L` (matching `phases/NN-topic/NNL-subtopic/`). The matrix's row × column cells record presence / absence of mapping with the cell legend at §1.
|
|
8
|
+
>
|
|
9
|
+
> **Update cadence.** Each `/plan-generate` cycle assigns IDs to new requirements + phases and writes the initial matrix. Each `/plan-review` cycle re-audits the matrix and flags `✗` cells (uncovered requirements) or orphan rows (requirements with no phase coverage). Each `/plan-execute` cycle does NOT modify the matrix — execution consumes IDs but does not assign them.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## 1. Cell Legend
|
|
14
|
+
|
|
15
|
+
| Cell | Meaning |
|
|
16
|
+
|---|---|
|
|
17
|
+
| `✓` | Covered — the phase satisfies the requirement (verified by the phase's own verification section). |
|
|
18
|
+
| `◐` | Partially covered — the phase satisfies part of the requirement; the remainder maps to another phase row. |
|
|
19
|
+
| `✗` | Uncovered — the phase claims to address the requirement but verification has not yet confirmed it. Findings flagged at `/plan-review`. |
|
|
20
|
+
| `N/A` | Not applicable — the phase is intentionally outside this requirement's scope; the row × column intersection is empty by design. |
|
|
21
|
+
| `—` | Vacuous — no relationship; the phase neither addresses nor excludes the requirement. (The default cell value when the matrix is initialized; cells transition to `✓` / `◐` / `✗` / `N/A` as coverage is declared.) |
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## 2. Matrix — Requirements × Phases
|
|
26
|
+
|
|
27
|
+
> **Schema.** Rows are requirements (`R-NNNN`); columns are phases (`P-NN` and `P-NN.L`). The `Source` column anchors the row to a spec section. The `Verification surface` column names where the row's coverage is verified (a phase REPORT.md, a CI gate, an external audit).
|
|
28
|
+
|
|
29
|
+
| `R-ID` | Source | `P-01` | `P-02` | `P-03` | … | `P-NN` | Verification surface |
|
|
30
|
+
|---|---|---|---|---|---|---|---|
|
|
31
|
+
| `R-0001` | `_spec/spec.md §1` | `✓` | `—` | `—` | … | `✓` | `phases/01-.../REPORT.md` + `phases/NN-.../REPORT.md` |
|
|
32
|
+
| `R-0002` | `_spec/spec.md §2.1` | `—` | `—` | `—` | … | `—` | `phases/04-.../REPORT.md` (verification cell pending Phase 04 execution) |
|
|
33
|
+
| `R-NNNN` | `_spec/spec.md §M.N` | `[cell]` | `[cell]` | `[cell]` | … | `[cell]` | `[verification surface]` |
|
|
34
|
+
|
|
35
|
+
> **Wide-matrix tactic.** When phase count exceeds ~30, render the matrix as a flat list rather than a wide table — each `R-NNNN` row collapses to one line (`R-NNNN: covered by P-NN, P-NN; partial at P-NN; uncovered at P-NN`). Wide tables become unreadable past ~30 columns. The flat-list form preserves every cell value but trades two-dimensional readability for vertical scrollability.
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## 3. Phase Coverage Summary (Inverse)
|
|
40
|
+
|
|
41
|
+
> **Schema.** The inverse projection — every phase enumerates the requirements it covers. This table is derived from §2 (no new information) but accelerates phase-side audit ("what does Phase NN actually deliver?"). Both projections must agree; disagreement is a structural failure on the bidirectional-binding axis.
|
|
42
|
+
|
|
43
|
+
| `P-ID` | Phase folder | Requirements covered | Partial coverage | Uncovered claims |
|
|
44
|
+
|---|---|---|---|---|
|
|
45
|
+
| `P-01` | `phases/01-kebab-topic/` | `R-0001`, `R-0007` | — | — |
|
|
46
|
+
| `P-NN` | `phases/NN-kebab-topic/` | `R-NNNN`, `R-NNNN` | `R-NNNN` | `R-NNNN` |
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## 4. Orphan & Drift Audit
|
|
51
|
+
|
|
52
|
+
> **Schema.** Two classes of drift the matrix surfaces:
|
|
53
|
+
>
|
|
54
|
+
> 1. **Orphan requirement** — an `R-NNNN` row whose every cell is `—` or `N/A` (no phase claims coverage). The requirement is unaddressed; either (a) a new phase must be authored, (b) the requirement must be retired with explicit deferral logged in `PLAN-NOTES.md`, or (c) the requirement maps to an existing phase and the matrix is stale.
|
|
55
|
+
> 2. **Orphan phase** — a `P-NN` column whose every cell is `—` or `N/A` (the phase covers no requirement). The phase has no spec source; either (a) the spec is missing a requirement the phase implicitly addresses (author it and add the row), or (b) the phase's scope is unjustified and should be re-scoped.
|
|
56
|
+
|
|
57
|
+
| Drift class | ID | Description | Action |
|
|
58
|
+
|---|---|---|---|
|
|
59
|
+
| Orphan requirement | `R-NNNN` | `[one-sentence summary of what is unaddressed]` | `[author phase / retire with deferral / amend matrix]` |
|
|
60
|
+
| Orphan phase | `P-NN` | `[one-sentence summary of unsourced scope]` | `[author requirement / re-scope / retire]` |
|
|
61
|
+
| Stale partial coverage | `R-NNNN × P-NN` | `[one-sentence summary of why the cell stayed `◐` past its expected resolution]` | `[upgrade to ✓ via verification, downgrade to ✗ pending re-audit, or mark `N/A` with rationale]` |
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
## 5. Small-Tier Substitution
|
|
66
|
+
|
|
67
|
+
At small tier (per `src/apothem/rules/canonical-layout.md` §7.1), the formal matrix file is replaced by a narrative trace table inside the plan suite's notes file. The narrative form preserves the bidirectional invariant — every requirement names the phase(s) that satisfy it; every phase names the requirement(s) it covers — without the per-cell two-dimensional grid. A small-tier suite that grows past the 50-phase or 100-spec boundary materializes this formal matrix in the same change-set as the medium-tier transition (per §7.5 of the canonical-layout companion).
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
## 6. Bindings (§0.j five-direction)
|
|
72
|
+
|
|
73
|
+
- **Drives →** Every `/plan-review` cycle's drift audit (the §4 orphan tables produce review findings); every medium-to-large tier transition's matrix-decomposition step (the matrix splits along the sub-suite federation seam at large tier per `MASTER-INDEX.md` §5); every fresh-session understanding of "what spec coverage looks like" without re-reading every PHASE.md.
|
|
74
|
+
- **Satisfies →** `src/apothem/rules/canonical-layout.md` §7.2 drift-prevention trace-matrix mechanism (all-tier obligation); the §7.5 tier-transition emission contract for the small→medium boundary.
|
|
75
|
+
- **Established by ↑** `_spec/spec.md` §8 (D7 source — Q-011 three-tier ratification); `_spec/spec.md` §8.4 drift-prevention table (the trace-matrix row of which this template is the materialization).
|
|
76
|
+
- **Gated by ←** Tier classification (small-tier suites substitute the §5 narrative form); the assignment of stable IDs (`R-NNNN`, `P-NN`) at `/plan-generate` time gates this template's authorability — without IDs the matrix has no row / column keys.
|
|
77
|
+
- **Cross-bound with ↔** `src/apothem/templates/master-index-template.md` (sibling drift-prevention surface — its §1 spec-section anchor table and §2 phase anchor table together provide the row / column legends this matrix consumes); `PLAN-NOTES.md` (small-tier substitute lives there per §5; deferred-orphan rationales recorded there); every `phases/NN-kebab-topic/REPORT.md` (the verification-surface column resolves to a REPORT.md path); `_spec/spec.md` (the Source column anchors every row to a spec section).
|