kompend 2026.10.4__tar.gz
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.
- kompend-2026.10.4/.agents/CHECKS.md +94 -0
- kompend-2026.10.4/.agents/CODE.md +79 -0
- kompend-2026.10.4/.agents/FILES.md +98 -0
- kompend-2026.10.4/.agents/HISTORY.md +95 -0
- kompend-2026.10.4/.agents/MAINTENANCE.md +67 -0
- kompend-2026.10.4/.agents/ONBOARDING.md +101 -0
- kompend-2026.10.4/.agents/POLICIES.md +120 -0
- kompend-2026.10.4/.agents/history/2026-08-14-migration-plan.md +364 -0
- kompend-2026.10.4/.agents/history/2026-08-14-refactoring-plan.md +442 -0
- kompend-2026.10.4/.agents/history/2026-08-15-env-any-refactor.md +488 -0
- kompend-2026.10.4/.agents/history/2026-08-15-rlm-integration.md +242 -0
- kompend-2026.10.4/.agents/history/2026-08-16-category-extraction.md +88 -0
- kompend-2026.10.4/.agents/history/2026-08-16-rumdl-format-wiring.md +184 -0
- kompend-2026.10.4/.agents/history/2026-08-16-source-export-md.md +189 -0
- kompend-2026.10.4/.agents/history/2026-08-22-markdown-only-vault.md +332 -0
- kompend-2026.10.4/.agents/history/2026-09-16-context-window-provider-overrides.md +148 -0
- kompend-2026.10.4/.agents/history/2026-09-24-knox-0iv2-audit.md +165 -0
- kompend-2026.10.4/.agents/history/2026-09-24-knox-storage-migration.md +298 -0
- kompend-2026.10.4/.beads/.gitignore +70 -0
- kompend-2026.10.4/.beads/README.md +85 -0
- kompend-2026.10.4/.beads/config.yaml +60 -0
- kompend-2026.10.4/.beads/dolt-backup.json +5 -0
- kompend-2026.10.4/.beads/hooks/post-checkout +24 -0
- kompend-2026.10.4/.beads/hooks/post-commit +28 -0
- kompend-2026.10.4/.beads/hooks/post-merge +24 -0
- kompend-2026.10.4/.beads/hooks/pre-commit +24 -0
- kompend-2026.10.4/.beads/hooks/pre-push +24 -0
- kompend-2026.10.4/.beads/hooks/prepare-commit-msg +24 -0
- kompend-2026.10.4/.beads/interactions.jsonl +319 -0
- kompend-2026.10.4/.beads/issues.jsonl +300 -0
- kompend-2026.10.4/.beads/issues_backup_20260715.jsonl +290 -0
- kompend-2026.10.4/.beads/metadata.json +7 -0
- kompend-2026.10.4/.beads/seed-ids.json +45 -0
- kompend-2026.10.4/.config/mise/conf.d/docs.toml +7 -0
- kompend-2026.10.4/.config/mise/conf.d/format.toml +11 -0
- kompend-2026.10.4/.config/mise/conf.d/lint.toml +11 -0
- kompend-2026.10.4/.config/mise/conf.d/mcp.toml +7 -0
- kompend-2026.10.4/.config/mise/conf.d/quality.toml +20 -0
- kompend-2026.10.4/.config/mise/conf.d/skills.toml +4 -0
- kompend-2026.10.4/.config/mise/conf.d/tasks.toml +24 -0
- kompend-2026.10.4/.config/mise/config.toml +40 -0
- kompend-2026.10.4/.config/mise/data/dev-features.csv +18 -0
- kompend-2026.10.4/.config/mise/data/skills.csv +15 -0
- kompend-2026.10.4/.config/mise/scripts/install_dev_features.py +94 -0
- kompend-2026.10.4/.config/reorder.toml +59 -0
- kompend-2026.10.4/.config/rumdl.toml +13 -0
- kompend-2026.10.4/.githooks/_delegate.sh +21 -0
- kompend-2026.10.4/.githooks/post-checkout +3 -0
- kompend-2026.10.4/.githooks/post-commit +3 -0
- kompend-2026.10.4/.githooks/post-merge +3 -0
- kompend-2026.10.4/.githooks/pre-commit +45 -0
- kompend-2026.10.4/.githooks/pre-push +3 -0
- kompend-2026.10.4/.githooks/prepare-commit-msg +3 -0
- kompend-2026.10.4/.github/workflows/docs.yml +85 -0
- kompend-2026.10.4/.github/workflows/release.yml +195 -0
- kompend-2026.10.4/.gitignore +94 -0
- kompend-2026.10.4/.pre-commit-config.yaml +56 -0
- kompend-2026.10.4/AGENTS.md +159 -0
- kompend-2026.10.4/LICENSE +21 -0
- kompend-2026.10.4/PKG-INFO +225 -0
- kompend-2026.10.4/README.md +164 -0
- kompend-2026.10.4/assets/readme/hero.svg +131 -0
- kompend-2026.10.4/assets/readme/pipeline.svg +135 -0
- kompend-2026.10.4/docs/about/acknowledgements.md +174 -0
- kompend-2026.10.4/docs/about/motivation.md +86 -0
- kompend-2026.10.4/docs/architecture/cache.md +179 -0
- kompend-2026.10.4/docs/architecture/chunk-tree.md +135 -0
- kompend-2026.10.4/docs/architecture/decisions.md +326 -0
- kompend-2026.10.4/docs/architecture/index.md +287 -0
- kompend-2026.10.4/docs/architecture/output.md +121 -0
- kompend-2026.10.4/docs/concepts/basic-principles.md +270 -0
- kompend-2026.10.4/docs/concepts/distill.md +57 -0
- kompend-2026.10.4/docs/concepts/memory-lifecycle.md +63 -0
- kompend-2026.10.4/docs/concepts/open-knowledge-format.md +169 -0
- kompend-2026.10.4/docs/concepts/pipeline-tiers.md +183 -0
- kompend-2026.10.4/docs/concepts/rag-pipeline.md +116 -0
- kompend-2026.10.4/docs/concepts/wicer-loop.md +113 -0
- kompend-2026.10.4/docs/guides/attachments.md +167 -0
- kompend-2026.10.4/docs/guides/cli.md +638 -0
- kompend-2026.10.4/docs/guides/compilation.md +257 -0
- kompend-2026.10.4/docs/guides/configuration.md +197 -0
- kompend-2026.10.4/docs/guides/dedup.md +201 -0
- kompend-2026.10.4/docs/guides/document-extraction.md +358 -0
- kompend-2026.10.4/docs/guides/initialization.md +121 -0
- kompend-2026.10.4/docs/guides/input-pipeline.md +118 -0
- kompend-2026.10.4/docs/guides/lint.md +356 -0
- kompend-2026.10.4/docs/guides/llm-config.md +442 -0
- kompend-2026.10.4/docs/guides/model-context.md +395 -0
- kompend-2026.10.4/docs/guides/observability.md +183 -0
- kompend-2026.10.4/docs/guides/output.md +201 -0
- kompend-2026.10.4/docs/guides/provenance.md +161 -0
- kompend-2026.10.4/docs/guides/query-memory.md +84 -0
- kompend-2026.10.4/docs/guides/review.md +84 -0
- kompend-2026.10.4/docs/guides/trust.md +126 -0
- kompend-2026.10.4/docs/guides/wiki-structure.md +191 -0
- kompend-2026.10.4/docs/index.md +120 -0
- kompend-2026.10.4/docs/integrations/acp-agent.md +150 -0
- kompend-2026.10.4/docs/integrations/open-webui.md +88 -0
- kompend-2026.10.4/docs/reference/caching.md +171 -0
- kompend-2026.10.4/docs/reference/ecosystem.md +186 -0
- kompend-2026.10.4/docs/reference/pydantic-ai-agents.md +273 -0
- kompend-2026.10.4/kompend.toml.example +670 -0
- kompend-2026.10.4/mkdocs.yml +125 -0
- kompend-2026.10.4/pyproject.toml +156 -0
- kompend-2026.10.4/ruff.toml +85 -0
- kompend-2026.10.4/scripts/analyze/analyze_codebase.py +146 -0
- kompend-2026.10.4/scripts/build/build-wiki.ps1 +545 -0
- kompend-2026.10.4/scripts/checks/_common.py +40 -0
- kompend-2026.10.4/scripts/checks/check_antipatterns.py +411 -0
- kompend-2026.10.4/scripts/checks/check_dox.py +211 -0
- kompend-2026.10.4/scripts/checks/check_field_consistency.py +388 -0
- kompend-2026.10.4/scripts/checks/check_mcp_parity.py +167 -0
- kompend-2026.10.4/scripts/checks/check_persisted_paths.py +177 -0
- kompend-2026.10.4/scripts/configs/config-cloud.toml +60 -0
- kompend-2026.10.4/scripts/configs/config-local.toml +62 -0
- kompend-2026.10.4/scripts/configs/demo-content.toml +37 -0
- kompend-2026.10.4/scripts/repo/set_repo_topics.py +68 -0
- kompend-2026.10.4/scripts/verify/verify_rlm.py +132 -0
- kompend-2026.10.4/skills/kompend/SKILL.md +506 -0
- kompend-2026.10.4/src/kompend/AGENTS.md +123 -0
- kompend-2026.10.4/src/kompend/__init__.py +10 -0
- kompend-2026.10.4/src/kompend/__main__.py +8 -0
- kompend-2026.10.4/src/kompend/acp/AGENTS.md +65 -0
- kompend-2026.10.4/src/kompend/acp/__init__.py +24 -0
- kompend-2026.10.4/src/kompend/acp/builtin/capture.toml +24 -0
- kompend-2026.10.4/src/kompend/acp/builtin/compile.toml +26 -0
- kompend-2026.10.4/src/kompend/acp/builtin/generic.toml +28 -0
- kompend-2026.10.4/src/kompend/acp/builtin/query.toml +28 -0
- kompend-2026.10.4/src/kompend/acp/definitions.py +130 -0
- kompend-2026.10.4/src/kompend/acp/harness_adapter.py +65 -0
- kompend-2026.10.4/src/kompend/acp/provider_store.py +164 -0
- kompend-2026.10.4/src/kompend/acp/registry.py +151 -0
- kompend-2026.10.4/src/kompend/acp/tools.py +171 -0
- kompend-2026.10.4/src/kompend/agents/AGENTS.md +152 -0
- kompend-2026.10.4/src/kompend/agents/__init__.py +61 -0
- kompend-2026.10.4/src/kompend/agents/agentic_harness.py +68 -0
- kompend-2026.10.4/src/kompend/agents/base.py +781 -0
- kompend-2026.10.4/src/kompend/agents/capture.py +18 -0
- kompend-2026.10.4/src/kompend/agents/capture_models.py +36 -0
- kompend-2026.10.4/src/kompend/agents/categorize.py +34 -0
- kompend-2026.10.4/src/kompend/agents/categorize_models.py +20 -0
- kompend-2026.10.4/src/kompend/agents/context_chunk.py +17 -0
- kompend-2026.10.4/src/kompend/agents/context_chunk_agentic.py +70 -0
- kompend-2026.10.4/src/kompend/agents/context_manager.py +60 -0
- kompend-2026.10.4/src/kompend/agents/deps.py +168 -0
- kompend-2026.10.4/src/kompend/agents/distill.py +21 -0
- kompend-2026.10.4/src/kompend/agents/distill_agentic.py +55 -0
- kompend-2026.10.4/src/kompend/agents/doctor.py +53 -0
- kompend-2026.10.4/src/kompend/agents/extraction.py +38 -0
- kompend-2026.10.4/src/kompend/agents/extraction_reduce.py +25 -0
- kompend-2026.10.4/src/kompend/agents/generation.py +130 -0
- kompend-2026.10.4/src/kompend/agents/instrument.py +102 -0
- kompend-2026.10.4/src/kompend/agents/kompend_model.py +179 -0
- kompend-2026.10.4/src/kompend/agents/lint.py +58 -0
- kompend-2026.10.4/src/kompend/agents/query.py +71 -0
- kompend-2026.10.4/src/kompend/agents/query_agentic.py +56 -0
- kompend-2026.10.4/src/kompend/agents/reference_extraction.py +37 -0
- kompend-2026.10.4/src/kompend/agents/reference_resolver.py +41 -0
- kompend-2026.10.4/src/kompend/agents/remediate.py +81 -0
- kompend-2026.10.4/src/kompend/agents/rlm.py +371 -0
- kompend-2026.10.4/src/kompend/agents/search.py +54 -0
- kompend-2026.10.4/src/kompend/agents/summarizer.py +16 -0
- kompend-2026.10.4/src/kompend/agents/summarizer_agentic.py +56 -0
- kompend-2026.10.4/src/kompend/agents/types.py +357 -0
- kompend-2026.10.4/src/kompend/agents/verification.py +68 -0
- kompend-2026.10.4/src/kompend/agents/vlm.py +125 -0
- kompend-2026.10.4/src/kompend/agents/wicer.py +54 -0
- kompend-2026.10.4/src/kompend/agents/wiki_index.py +67 -0
- kompend-2026.10.4/src/kompend/agents/write.py +68 -0
- kompend-2026.10.4/src/kompend/capture/AGENTS.md +32 -0
- kompend-2026.10.4/src/kompend/capture/__init__.py +5 -0
- kompend-2026.10.4/src/kompend/capture/_utils.py +41 -0
- kompend-2026.10.4/src/kompend/capture/capture.py +126 -0
- kompend-2026.10.4/src/kompend/capture/consolidate.py +175 -0
- kompend-2026.10.4/src/kompend/capture/distill.py +329 -0
- kompend-2026.10.4/src/kompend/capture/ingest.py +46 -0
- kompend-2026.10.4/src/kompend/capture/learn.py +47 -0
- kompend-2026.10.4/src/kompend/chunking/AGENTS.md +30 -0
- kompend-2026.10.4/src/kompend/chunking/__init__.py +11 -0
- kompend-2026.10.4/src/kompend/chunking/contextual.py +202 -0
- kompend-2026.10.4/src/kompend/chunking/extractors.py +192 -0
- kompend-2026.10.4/src/kompend/chunking/hierarchical.py +325 -0
- kompend-2026.10.4/src/kompend/chunking/summarizer.py +262 -0
- kompend-2026.10.4/src/kompend/cli/AGENTS.md +243 -0
- kompend-2026.10.4/src/kompend/cli/__init__.py +3 -0
- kompend-2026.10.4/src/kompend/cli/_ignore.py +132 -0
- kompend-2026.10.4/src/kompend/cli/_pipeline_helpers.py +240 -0
- kompend-2026.10.4/src/kompend/cli/_post_compile.py +345 -0
- kompend-2026.10.4/src/kompend/cli/_progress.py +259 -0
- kompend-2026.10.4/src/kompend/cli/_query_helpers.py +435 -0
- kompend-2026.10.4/src/kompend/cli/_shared.py +170 -0
- kompend-2026.10.4/src/kompend/cli/_sources.py +251 -0
- kompend-2026.10.4/src/kompend/cli/_sources_io.py +312 -0
- kompend-2026.10.4/src/kompend/cli/app.py +350 -0
- kompend-2026.10.4/src/kompend/cli/args/AGENTS.md +168 -0
- kompend-2026.10.4/src/kompend/cli/args/__init__.py +213 -0
- kompend-2026.10.4/src/kompend/cli/args/common.py +91 -0
- kompend-2026.10.4/src/kompend/cli/args/compile.py +98 -0
- kompend-2026.10.4/src/kompend/cli/args/config.py +31 -0
- kompend-2026.10.4/src/kompend/cli/args/init.py +66 -0
- kompend-2026.10.4/src/kompend/cli/args/memory.py +32 -0
- kompend-2026.10.4/src/kompend/cli/args/other.py +362 -0
- kompend-2026.10.4/src/kompend/cli/args/parse.py +25 -0
- kompend-2026.10.4/src/kompend/cli/args/pipeline.py +81 -0
- kompend-2026.10.4/src/kompend/cli/args/query.py +94 -0
- kompend-2026.10.4/src/kompend/cli/cmds/AGENTS.md +140 -0
- kompend-2026.10.4/src/kompend/cli/cmds/__init__.py +55 -0
- kompend-2026.10.4/src/kompend/cli/cmds/agent.py +68 -0
- kompend-2026.10.4/src/kompend/cli/cmds/agents.py +194 -0
- kompend-2026.10.4/src/kompend/cli/cmds/init.py +66 -0
- kompend-2026.10.4/src/kompend/cli/cmds/knowledge/__init__.py +1 -0
- kompend-2026.10.4/src/kompend/cli/cmds/knowledge/attachments.py +332 -0
- kompend-2026.10.4/src/kompend/cli/cmds/knowledge/capture.py +389 -0
- kompend-2026.10.4/src/kompend/cli/cmds/knowledge/memory.py +118 -0
- kompend-2026.10.4/src/kompend/cli/cmds/knowledge/organize.py +103 -0
- kompend-2026.10.4/src/kompend/cli/cmds/knowledge/pack.py +50 -0
- kompend-2026.10.4/src/kompend/cli/cmds/knowledge/query.py +291 -0
- kompend-2026.10.4/src/kompend/cli/cmds/knowledge/references.py +200 -0
- kompend-2026.10.4/src/kompend/cli/cmds/pipeline/__init__.py +1 -0
- kompend-2026.10.4/src/kompend/cli/cmds/pipeline/config.py +299 -0
- kompend-2026.10.4/src/kompend/cli/cmds/pipeline/pipeline.py +524 -0
- kompend-2026.10.4/src/kompend/cli/cmds/pipeline/sources.py +317 -0
- kompend-2026.10.4/src/kompend/cli/cmds/pipeline/status.py +139 -0
- kompend-2026.10.4/src/kompend/cli/cmds/quality/__init__.py +1 -0
- kompend-2026.10.4/src/kompend/cli/cmds/quality/doctor.py +619 -0
- kompend-2026.10.4/src/kompend/cli/cmds/quality/doctor_cmd.py +67 -0
- kompend-2026.10.4/src/kompend/cli/cmds/quality/lint.py +606 -0
- kompend-2026.10.4/src/kompend/cli/cmds/quality/list_parsers_cmd.py +34 -0
- kompend-2026.10.4/src/kompend/cli/cmds/quality/log.py +73 -0
- kompend-2026.10.4/src/kompend/cli/cmds/quality/provenance_cmd.py +135 -0
- kompend-2026.10.4/src/kompend/cli/cmds/quality/review.py +122 -0
- kompend-2026.10.4/src/kompend/cli/cmds/quality/status_cmd.py +31 -0
- kompend-2026.10.4/src/kompend/cli/cmds/serve.py +55 -0
- kompend-2026.10.4/src/kompend/compilation/AGENTS.md +55 -0
- kompend-2026.10.4/src/kompend/compilation/__init__.py +11 -0
- kompend-2026.10.4/src/kompend/compilation/_checkpoints.py +143 -0
- kompend-2026.10.4/src/kompend/compilation/_two_phase_core.py +667 -0
- kompend-2026.10.4/src/kompend/compilation/asset_mention_rewriter.py +73 -0
- kompend-2026.10.4/src/kompend/compilation/asset_registry.py +127 -0
- kompend-2026.10.4/src/kompend/compilation/asset_summarizer.py +49 -0
- kompend-2026.10.4/src/kompend/compilation/asset_tools.py +99 -0
- kompend-2026.10.4/src/kompend/compilation/base.py +438 -0
- kompend-2026.10.4/src/kompend/compilation/concept_broker.py +131 -0
- kompend-2026.10.4/src/kompend/compilation/concept_keys.py +143 -0
- kompend-2026.10.4/src/kompend/compilation/context_chunk_tools.py +49 -0
- kompend-2026.10.4/src/kompend/compilation/distill_tools.py +44 -0
- kompend-2026.10.4/src/kompend/compilation/extraction_memory.py +251 -0
- kompend-2026.10.4/src/kompend/compilation/flows/__init__.py +23 -0
- kompend-2026.10.4/src/kompend/compilation/flows/agentic.py +221 -0
- kompend-2026.10.4/src/kompend/compilation/flows/assembly.py +373 -0
- kompend-2026.10.4/src/kompend/compilation/flows/extraction.py +533 -0
- kompend-2026.10.4/src/kompend/compilation/flows/generation.py +1101 -0
- kompend-2026.10.4/src/kompend/compilation/flows/references.py +222 -0
- kompend-2026.10.4/src/kompend/compilation/gen_tools.py +65 -0
- kompend-2026.10.4/src/kompend/compilation/graph.py +499 -0
- kompend-2026.10.4/src/kompend/compilation/overview_tools.py +79 -0
- kompend-2026.10.4/src/kompend/compilation/query_tools.py +74 -0
- kompend-2026.10.4/src/kompend/compilation/reference_excision.py +98 -0
- kompend-2026.10.4/src/kompend/compilation/remediate_tools.py +81 -0
- kompend-2026.10.4/src/kompend/compilation/schema.py +149 -0
- kompend-2026.10.4/src/kompend/compilation/summarizer_tools.py +46 -0
- kompend-2026.10.4/src/kompend/compilation/two_phase.py +355 -0
- kompend-2026.10.4/src/kompend/compilation/verification_tools.py +80 -0
- kompend-2026.10.4/src/kompend/compilation/wicer.py +474 -0
- kompend-2026.10.4/src/kompend/compilation/write_tools.py +50 -0
- kompend-2026.10.4/src/kompend/core/AGENTS.md +48 -0
- kompend-2026.10.4/src/kompend/core/cache/AGENTS.md +23 -0
- kompend-2026.10.4/src/kompend/core/cache/__init__.py +7 -0
- kompend-2026.10.4/src/kompend/core/cache/store.py +358 -0
- kompend-2026.10.4/src/kompend/core/cache/wiki.py +45 -0
- kompend-2026.10.4/src/kompend/core/config/AGENTS.md +160 -0
- kompend-2026.10.4/src/kompend/core/config/__init__.py +89 -0
- kompend-2026.10.4/src/kompend/core/config/_configs.py +675 -0
- kompend-2026.10.4/src/kompend/core/config/_core.py +44 -0
- kompend-2026.10.4/src/kompend/core/config/engine/__init__.py +77 -0
- kompend-2026.10.4/src/kompend/core/config/engine/_check.py +656 -0
- kompend-2026.10.4/src/kompend/core/config/engine/_env.py +80 -0
- kompend-2026.10.4/src/kompend/core/config/engine/_loading.py +169 -0
- kompend-2026.10.4/src/kompend/core/config/engine/_overlay.py +39 -0
- kompend-2026.10.4/src/kompend/core/config/engine/_precedence.py +333 -0
- kompend-2026.10.4/src/kompend/core/config/engine/_schema.py +159 -0
- kompend-2026.10.4/src/kompend/core/config/generate.py +123 -0
- kompend-2026.10.4/src/kompend/core/config/keys.py +150 -0
- kompend-2026.10.4/src/kompend/core/config/rumdl.py +114 -0
- kompend-2026.10.4/src/kompend/core/env.py +153 -0
- kompend-2026.10.4/src/kompend/core/models/AGENTS.md +35 -0
- kompend-2026.10.4/src/kompend/core/models/__init__.py +108 -0
- kompend-2026.10.4/src/kompend/core/models/assets.py +60 -0
- kompend-2026.10.4/src/kompend/core/models/attachments.py +388 -0
- kompend-2026.10.4/src/kompend/core/models/chunks.py +115 -0
- kompend-2026.10.4/src/kompend/core/models/citations.py +81 -0
- kompend-2026.10.4/src/kompend/core/models/elements.py +37 -0
- kompend-2026.10.4/src/kompend/core/models/enums.py +261 -0
- kompend-2026.10.4/src/kompend/core/models/references.py +163 -0
- kompend-2026.10.4/src/kompend/core/models/structured.py +225 -0
- kompend-2026.10.4/src/kompend/core/models/trees.py +163 -0
- kompend-2026.10.4/src/kompend/core/models/wiki.py +331 -0
- kompend-2026.10.4/src/kompend/core/page_builder.py +220 -0
- kompend-2026.10.4/src/kompend/core/paths.py +678 -0
- kompend-2026.10.4/src/kompend/core/pipeline/AGENTS.md +56 -0
- kompend-2026.10.4/src/kompend/core/pipeline/__init__.py +5 -0
- kompend-2026.10.4/src/kompend/core/pipeline/assets.py +132 -0
- kompend-2026.10.4/src/kompend/core/pipeline/attachments.py +199 -0
- kompend-2026.10.4/src/kompend/core/pipeline/config.py +314 -0
- kompend-2026.10.4/src/kompend/core/pipeline/entity_types.py +98 -0
- kompend-2026.10.4/src/kompend/core/pipeline/export.py +454 -0
- kompend-2026.10.4/src/kompend/core/pipeline/ingest.py +346 -0
- kompend-2026.10.4/src/kompend/core/pipeline/orchestrator.py +30 -0
- kompend-2026.10.4/src/kompend/core/pipeline/parse_cache.py +166 -0
- kompend-2026.10.4/src/kompend/core/pipeline/references.py +450 -0
- kompend-2026.10.4/src/kompend/core/pipeline/runtime.py +86 -0
- kompend-2026.10.4/src/kompend/core/pipeline/stages/__init__.py +7 -0
- kompend-2026.10.4/src/kompend/core/pipeline/stages/_compile.py +137 -0
- kompend-2026.10.4/src/kompend/core/pipeline/stages/_factory.py +159 -0
- kompend-2026.10.4/src/kompend/core/pipeline/stages/_index.py +63 -0
- kompend-2026.10.4/src/kompend/core/pipeline/stages/_parse.py +519 -0
- kompend-2026.10.4/src/kompend/core/pipeline/stages/_pipeline.py +404 -0
- kompend-2026.10.4/src/kompend/core/pipeline/stages/_resolve.py +147 -0
- kompend-2026.10.4/src/kompend/core/pipeline/state.py +336 -0
- kompend-2026.10.4/src/kompend/core/reporting/AGENTS.md +25 -0
- kompend-2026.10.4/src/kompend/core/reporting/__init__.py +5 -0
- kompend-2026.10.4/src/kompend/core/reporting/log.py +156 -0
- kompend-2026.10.4/src/kompend/core/reporting/runlog.py +160 -0
- kompend-2026.10.4/src/kompend/core/resolution/AGENTS.md +23 -0
- kompend-2026.10.4/src/kompend/core/resolution/__init__.py +5 -0
- kompend-2026.10.4/src/kompend/core/resolution/entity_registry.py +346 -0
- kompend-2026.10.4/src/kompend/core/resolution/xref_checker.py +240 -0
- kompend-2026.10.4/src/kompend/core/source_metadata.py +161 -0
- kompend-2026.10.4/src/kompend/core/store/AGENTS.md +45 -0
- kompend-2026.10.4/src/kompend/core/store/__init__.py +32 -0
- kompend-2026.10.4/src/kompend/core/store/connection.py +119 -0
- kompend-2026.10.4/src/kompend/core/store/legacy.py +52 -0
- kompend-2026.10.4/src/kompend/core/store/locate.py +37 -0
- kompend-2026.10.4/src/kompend/core/store/schema.py +468 -0
- kompend-2026.10.4/src/kompend/core/templates/AGENTS.md +98 -0
- kompend-2026.10.4/src/kompend/core/templates/__init__.py +19 -0
- kompend-2026.10.4/src/kompend/core/templates/loader.py +519 -0
- kompend-2026.10.4/src/kompend/core/text/embedding_text.py +25 -0
- kompend-2026.10.4/src/kompend/core/text/encoding.py +159 -0
- kompend-2026.10.4/src/kompend/core/text/matching.py +182 -0
- kompend-2026.10.4/src/kompend/core/text/rumdl.py +147 -0
- kompend-2026.10.4/src/kompend/core/text/slug.py +20 -0
- kompend-2026.10.4/src/kompend/core/trust/AGENTS.md +25 -0
- kompend-2026.10.4/src/kompend/core/trust/__init__.py +5 -0
- kompend-2026.10.4/src/kompend/core/trust/actor.py +39 -0
- kompend-2026.10.4/src/kompend/core/utils/AGENTS.md +24 -0
- kompend-2026.10.4/src/kompend/core/utils/__init__.py +5 -0
- kompend-2026.10.4/src/kompend/core/utils/dicts.py +151 -0
- kompend-2026.10.4/src/kompend/core/utils/exceptions.py +16 -0
- kompend-2026.10.4/src/kompend/core/utils/time.py +35 -0
- kompend-2026.10.4/src/kompend/core/utils/tokens.py +14 -0
- kompend-2026.10.4/src/kompend/core/verbosity.py +26 -0
- kompend-2026.10.4/src/kompend/lint/AGENTS.md +37 -0
- kompend-2026.10.4/src/kompend/lint/__init__.py +35 -0
- kompend-2026.10.4/src/kompend/lint/_remediation_gaps.py +272 -0
- kompend-2026.10.4/src/kompend/lint/base.py +129 -0
- kompend-2026.10.4/src/kompend/lint/flow.py +326 -0
- kompend-2026.10.4/src/kompend/lint/gap_analysis.py +335 -0
- kompend-2026.10.4/src/kompend/lint/gap_broker.py +49 -0
- kompend-2026.10.4/src/kompend/lint/history.py +254 -0
- kompend-2026.10.4/src/kompend/lint/llm_rules.py +518 -0
- kompend-2026.10.4/src/kompend/lint/remediation.py +90 -0
- kompend-2026.10.4/src/kompend/lint/rumdl.toml +22 -0
- kompend-2026.10.4/src/kompend/lint/runner.py +278 -0
- kompend-2026.10.4/src/kompend/lint/semantic_gaps.py +184 -0
- kompend-2026.10.4/src/kompend/lint/structural.py +1335 -0
- kompend-2026.10.4/src/kompend/llm/AGENTS.md +92 -0
- kompend-2026.10.4/src/kompend/llm/__init__.py +43 -0
- kompend-2026.10.4/src/kompend/llm/context_window.py +196 -0
- kompend-2026.10.4/src/kompend/llm/debug.py +198 -0
- kompend-2026.10.4/src/kompend/llm/format.py +319 -0
- kompend-2026.10.4/src/kompend/llm/http_client.py +147 -0
- kompend-2026.10.4/src/kompend/llm/models.py +483 -0
- kompend-2026.10.4/src/kompend/llm/postprocess.py +432 -0
- kompend-2026.10.4/src/kompend/llm/usage.py +132 -0
- kompend-2026.10.4/src/kompend/llm/user_providers.py +104 -0
- kompend-2026.10.4/src/kompend/logging.py +109 -0
- kompend-2026.10.4/src/kompend/mcp/AGENTS.md +36 -0
- kompend-2026.10.4/src/kompend/mcp/__init__.py +1 -0
- kompend-2026.10.4/src/kompend/mcp/server.py +163 -0
- kompend-2026.10.4/src/kompend/mcp/tools/__init__.py +130 -0
- kompend-2026.10.4/src/kompend/mcp/tools/_helpers.py +39 -0
- kompend-2026.10.4/src/kompend/mcp/tools/attachments.py +223 -0
- kompend-2026.10.4/src/kompend/mcp/tools/config.py +161 -0
- kompend-2026.10.4/src/kompend/mcp/tools/knowledge.py +388 -0
- kompend-2026.10.4/src/kompend/mcp/tools/memory.py +75 -0
- kompend-2026.10.4/src/kompend/mcp/tools/packs.py +37 -0
- kompend-2026.10.4/src/kompend/mcp/tools/pipeline.py +358 -0
- kompend-2026.10.4/src/kompend/mcp/tools/quality.py +549 -0
- kompend-2026.10.4/src/kompend/mcp/tools/query.py +149 -0
- kompend-2026.10.4/src/kompend/mcp/tools/references.py +134 -0
- kompend-2026.10.4/src/kompend/mcp/tools/sources.py +220 -0
- kompend-2026.10.4/src/kompend/memory/AGENTS.md +42 -0
- kompend-2026.10.4/src/kompend/memory/__init__.py +14 -0
- kompend-2026.10.4/src/kompend/memory/lifecycle.py +353 -0
- kompend-2026.10.4/src/kompend/memory/store.py +247 -0
- kompend-2026.10.4/src/kompend/organize/__init__.py +38 -0
- kompend-2026.10.4/src/kompend/organize/categorize.py +351 -0
- kompend-2026.10.4/src/kompend/organize/engine.py +204 -0
- kompend-2026.10.4/src/kompend/organize/moves.py +258 -0
- kompend-2026.10.4/src/kompend/output/AGENTS.md +82 -0
- kompend-2026.10.4/src/kompend/output/__init__.py +13 -0
- kompend-2026.10.4/src/kompend/output/base.py +54 -0
- kompend-2026.10.4/src/kompend/output/bibtex.py +225 -0
- kompend-2026.10.4/src/kompend/output/json_writer.py +33 -0
- kompend-2026.10.4/src/kompend/output/markdown.py +521 -0
- kompend-2026.10.4/src/kompend/output/models.py +68 -0
- kompend-2026.10.4/src/kompend/output/pages/__init__.py +21 -0
- kompend-2026.10.4/src/kompend/output/pages/index.py +238 -0
- kompend-2026.10.4/src/kompend/output/pages/log.py +326 -0
- kompend-2026.10.4/src/kompend/output/pages/overview.py +165 -0
- kompend-2026.10.4/src/kompend/output/reference_links.py +302 -0
- kompend-2026.10.4/src/kompend/output/renderer.py +236 -0
- kompend-2026.10.4/src/kompend/output/typst.py +90 -0
- kompend-2026.10.4/src/kompend/output/vault.py +870 -0
- kompend-2026.10.4/src/kompend/output/wiki_index.py +25 -0
- kompend-2026.10.4/src/kompend/packs/AGENTS.md +68 -0
- kompend-2026.10.4/src/kompend/packs/__init__.py +15 -0
- kompend-2026.10.4/src/kompend/packs/base.py +174 -0
- kompend-2026.10.4/src/kompend/packs/builtins/__init__.py +9 -0
- kompend-2026.10.4/src/kompend/packs/builtins/academic/__init__.py +5 -0
- kompend-2026.10.4/src/kompend/packs/builtins/academic/pack.toml +14 -0
- kompend-2026.10.4/src/kompend/packs/builtins/default/pack.toml +16 -0
- kompend-2026.10.4/src/kompend/packs/builtins/technical/__init__.py +5 -0
- kompend-2026.10.4/src/kompend/packs/builtins/technical/pack.toml +14 -0
- kompend-2026.10.4/src/kompend/preprocessing/__init__.py +3 -0
- kompend-2026.10.4/src/kompend/preprocessing/dedup/__init__.py +16 -0
- kompend-2026.10.4/src/kompend/preprocessing/dedup/base.py +107 -0
- kompend-2026.10.4/src/kompend/preprocessing/dedup/embedding_matcher.py +114 -0
- kompend-2026.10.4/src/kompend/preprocessing/dedup/minhash_matcher.py +152 -0
- kompend-2026.10.4/src/kompend/preprocessing/dedup/orchestrator.py +329 -0
- kompend-2026.10.4/src/kompend/preprocessing/dedup/store.py +231 -0
- kompend-2026.10.4/src/kompend/preprocessing/downloaders/__init__.py +24 -0
- kompend-2026.10.4/src/kompend/preprocessing/downloaders/base.py +15 -0
- kompend-2026.10.4/src/kompend/preprocessing/downloaders/crawler.py +209 -0
- kompend-2026.10.4/src/kompend/preprocessing/downloaders/duplicate_detector.py +97 -0
- kompend-2026.10.4/src/kompend/preprocessing/downloaders/http_downloader.py +236 -0
- kompend-2026.10.4/src/kompend/preprocessing/downloaders/url_resolver.py +247 -0
- kompend-2026.10.4/src/kompend/preprocessing/parsers/AGENTS.md +133 -0
- kompend-2026.10.4/src/kompend/preprocessing/parsers/__init__.py +44 -0
- kompend-2026.10.4/src/kompend/preprocessing/parsers/_registry.py +243 -0
- kompend-2026.10.4/src/kompend/preprocessing/parsers/base.py +210 -0
- kompend-2026.10.4/src/kompend/preprocessing/parsers/markdown.py +102 -0
- kompend-2026.10.4/src/kompend/preprocessing/parsers/parsecraft_parser.py +497 -0
- kompend-2026.10.4/src/kompend/provenance.py +75 -0
- kompend-2026.10.4/src/kompend/rag/AGENTS.md +83 -0
- kompend-2026.10.4/src/kompend/rag/__init__.py +53 -0
- kompend-2026.10.4/src/kompend/rag/zvec_store.py +904 -0
- kompend-2026.10.4/src/kompend/resolution/__init__.py +9 -0
- kompend-2026.10.4/src/kompend/resolution/base.py +27 -0
- kompend-2026.10.4/src/kompend/resolution/chain.py +43 -0
- kompend-2026.10.4/src/kompend/resolution/vlm_enricher.py +203 -0
- kompend-2026.10.4/src/kompend/review.py +206 -0
- kompend-2026.10.4/src/kompend/scaffolding/__init__.py +23 -0
- kompend-2026.10.4/src/kompend/scaffolding/_core.py +425 -0
- kompend-2026.10.4/src/kompend/scaffolding/templates/AGENTS.md.j2 +95 -0
- kompend-2026.10.4/src/kompend/scaffolding/templates/NOTES.md +22 -0
- kompend-2026.10.4/src/kompend/scaffolding/templates/README.md.j2 +40 -0
- kompend-2026.10.4/src/kompend/scaffolding/templates/gitignore.j2 +11 -0
- kompend-2026.10.4/src/kompend/scaffolding/templates/next_steps.txt.j2 +4 -0
- kompend-2026.10.4/src/kompend/search/AGENTS.md +37 -0
- kompend-2026.10.4/src/kompend/search/adaptive_retriever.py +173 -0
- kompend-2026.10.4/src/kompend/search/budget.py +215 -0
- kompend-2026.10.4/src/kompend/search/classifier.py +157 -0
- kompend-2026.10.4/src/kompend/search/filters.py +43 -0
- kompend-2026.10.4/src/kompend/search/pipeline.py +328 -0
- kompend-2026.10.4/src/kompend/search/retriever.py +613 -0
- kompend-2026.10.4/src/kompend/templates/capture/capture_system.md.j2 +47 -0
- kompend-2026.10.4/src/kompend/templates/capture/distill.md.j2 +43 -0
- kompend-2026.10.4/src/kompend/templates/capture/distill_agentic_prompt.md.j2 +15 -0
- kompend-2026.10.4/src/kompend/templates/capture/distill_agentic_system.md.j2 +26 -0
- kompend-2026.10.4/src/kompend/templates/capture/write_agentic_prompt.md.j2 +1 -0
- kompend-2026.10.4/src/kompend/templates/capture/write_agentic_system.md.j2 +23 -0
- kompend-2026.10.4/src/kompend/templates/capture/write_prompt.md.j2 +17 -0
- kompend-2026.10.4/src/kompend/templates/chunking/contextual_agentic_prompt.md.j2 +8 -0
- kompend-2026.10.4/src/kompend/templates/chunking/contextual_agentic_system.md.j2 +17 -0
- kompend-2026.10.4/src/kompend/templates/chunking/contextual_context.md.j2 +8 -0
- kompend-2026.10.4/src/kompend/templates/chunking/node_summary.md.j2 +26 -0
- kompend-2026.10.4/src/kompend/templates/chunking/summarizer_agentic_prompt.md.j2 +10 -0
- kompend-2026.10.4/src/kompend/templates/chunking/summarizer_agentic_system.md.j2 +29 -0
- kompend-2026.10.4/src/kompend/templates/compilation/extraction_prompt.md.j2 +12 -0
- kompend-2026.10.4/src/kompend/templates/compilation/extraction_reduce_prompt.md.j2 +14 -0
- kompend-2026.10.4/src/kompend/templates/compilation/extraction_reduce_system.md.j2 +6 -0
- kompend-2026.10.4/src/kompend/templates/compilation/extraction_system.md.j2 +24 -0
- kompend-2026.10.4/src/kompend/templates/compilation/generation_agentic_prompt.md.j2 +46 -0
- kompend-2026.10.4/src/kompend/templates/compilation/generation_agentic_system.md.j2 +42 -0
- kompend-2026.10.4/src/kompend/templates/compilation/generation_prompt.md.j2 +62 -0
- kompend-2026.10.4/src/kompend/templates/compilation/generation_system.md.j2 +26 -0
- kompend-2026.10.4/src/kompend/templates/compilation/reference_extraction_prompt.md.j2 +14 -0
- kompend-2026.10.4/src/kompend/templates/compilation/reference_extraction_system.md.j2 +25 -0
- kompend-2026.10.4/src/kompend/templates/compilation/reference_resolver_prompt.md.j2 +14 -0
- kompend-2026.10.4/src/kompend/templates/compilation/reference_resolver_system.md.j2 +19 -0
- kompend-2026.10.4/src/kompend/templates/compilation/wicer_diagnose.md.j2 +12 -0
- kompend-2026.10.4/src/kompend/templates/compilation/wicer_evaluate.md.j2 +17 -0
- kompend-2026.10.4/src/kompend/templates/compilation/wicer_probe.md.j2 +9 -0
- kompend-2026.10.4/src/kompend/templates/lint/clarity-score.md.j2 +15 -0
- kompend-2026.10.4/src/kompend/templates/lint/contradiction-detection.md.j2 +38 -0
- kompend-2026.10.4/src/kompend/templates/lint/coverage-gap-dedup.md.j2 +27 -0
- kompend-2026.10.4/src/kompend/templates/lint/coverage-gap.md.j2 +24 -0
- kompend-2026.10.4/src/kompend/templates/lint/factual-consistency.md.j2 +15 -0
- kompend-2026.10.4/src/kompend/templates/lint/remediate_agentic_prompt.md.j2 +16 -0
- kompend-2026.10.4/src/kompend/templates/lint/remediate_agentic_system.md.j2 +30 -0
- kompend-2026.10.4/src/kompend/templates/lint/remediate_concept.md.j2 +46 -0
- kompend-2026.10.4/src/kompend/templates/lint/verify_agentic_prompt.md.j2 +2 -0
- kompend-2026.10.4/src/kompend/templates/lint/verify_agentic_system.md.j2 +20 -0
- kompend-2026.10.4/src/kompend/templates/memory/system_context.md.j2 +9 -0
- kompend-2026.10.4/src/kompend/templates/organize/categorize_prompt.md.j2 +14 -0
- kompend-2026.10.4/src/kompend/templates/organize/categorize_system.md.j2 +48 -0
- kompend-2026.10.4/src/kompend/templates/output/synthesize.md.j2 +16 -0
- kompend-2026.10.4/src/kompend/templates/output/synthesize_agentic_prompt.md.j2 +9 -0
- kompend-2026.10.4/src/kompend/templates/output/synthesize_agentic_system.md.j2 +23 -0
- kompend-2026.10.4/src/kompend/templates/query/synthesize_system.md.j2 +42 -0
- kompend-2026.10.4/src/kompend/templates/search/crag_grade.md.j2 +10 -0
- kompend-2026.10.4/src/kompend/templates/search/expand_query.md.j2 +26 -0
- kompend-2026.10.4/src/kompend/templates/search/hyde_generate.md.j2 +5 -0
- kompend-2026.10.4/src/kompend/templates/search/query_agentic_prompt.md.j2 +25 -0
- kompend-2026.10.4/src/kompend/templates/search/query_agentic_system.md.j2 +25 -0
- kompend-2026.10.4/src/kompend/templates/verification/verify_claim.md.j2 +21 -0
- kompend-2026.10.4/src/kompend/templates/verification/verify_system.md.j2 +7 -0
- kompend-2026.10.4/src/kompend/trust.py +206 -0
- kompend-2026.10.4/src/kompend/types.py +77 -0
- kompend-2026.10.4/src/kompend/verification.py +231 -0
- kompend-2026.10.4/src/kompend/web/_view_helpers.py +60 -0
- kompend-2026.10.4/src/kompend/web/routes_api.py +38 -0
- kompend-2026.10.4/src/kompend/web/routes_pages.py +420 -0
- kompend-2026.10.4/src/kompend/web/server.py +27 -0
- kompend-2026.10.4/tests/AGENTS.md +93 -0
- kompend-2026.10.4/tests/__init__.py +1 -0
- kompend-2026.10.4/tests/benchmarks/test_agent_quality.py +174 -0
- kompend-2026.10.4/tests/benchmarks/test_chunk_quality.py +198 -0
- kompend-2026.10.4/tests/conftest.py +139 -0
- kompend-2026.10.4/tests/data/README.md +41 -0
- kompend-2026.10.4/tests/data/batch2/ListeningEffortANC.pdf +0 -0
- kompend-2026.10.4/tests/data/batch2/T-REC-P.501-202504-I!!PDF-E.pdf +0 -0
- kompend-2026.10.4/tests/data/batch2/T-REC-P.57-202106-I!!PDF-E.pdf +0 -0
- kompend-2026.10.4/tests/data/batch2/T-REC-P.58-202303-I!!PDF-E.pdf +0 -0
- kompend-2026.10.4/tests/data/batch2/T-REC-P.800-199608-I!!PDF-E.pdf +0 -0
- kompend-2026.10.4/tests/data/batch2/T-REC-P.800.1-201607-I!!PDF-E.pdf +0 -0
- kompend-2026.10.4/tests/data/batch2/T-REC-P.800.2-201607-I!!PDF-E.pdf +0 -0
- kompend-2026.10.4/tests/data/batch2/T-REC-P.807-201602-I!!PDF-E.pdf +0 -0
- kompend-2026.10.4/tests/data/batch2/urls.txt +21 -0
- kompend-2026.10.4/tests/fixtures/documents.py +185 -0
- kompend-2026.10.4/tests/helpers/__init__.py +0 -0
- kompend-2026.10.4/tests/helpers/hooks.py +7 -0
- kompend-2026.10.4/tests/integration/test_arxiv_pipeline.py +205 -0
- kompend-2026.10.4/tests/integration/test_hierarchical_integration.py +527 -0
- kompend-2026.10.4/tests/integration/test_pipeline_mock.py +227 -0
- kompend-2026.10.4/tests/integration/test_pipeline_smoke.py +97 -0
- kompend-2026.10.4/tests/integration/test_real_corpus.py +182 -0
- kompend-2026.10.4/tests/test-cache/.gitignore +2 -0
- kompend-2026.10.4/tests/test_template_validation.py +32 -0
- kompend-2026.10.4/tests/unit/test_adaptive_retriever.py +193 -0
- kompend-2026.10.4/tests/unit/test_agent.py +216 -0
- kompend-2026.10.4/tests/unit/test_agent_debug.py +53 -0
- kompend-2026.10.4/tests/unit/test_agent_definitions.py +250 -0
- kompend-2026.10.4/tests/unit/test_agent_templates.py +156 -0
- kompend-2026.10.4/tests/unit/test_agentic_retry.py +69 -0
- kompend-2026.10.4/tests/unit/test_agentic_wiring.py +228 -0
- kompend-2026.10.4/tests/unit/test_asset_separation.py +347 -0
- kompend-2026.10.4/tests/unit/test_asset_tools.py +192 -0
- kompend-2026.10.4/tests/unit/test_attachment_pipeline.py +190 -0
- kompend-2026.10.4/tests/unit/test_attachments.py +351 -0
- kompend-2026.10.4/tests/unit/test_attachments_list_cli.py +70 -0
- kompend-2026.10.4/tests/unit/test_attachments_verify_adopt.py +161 -0
- kompend-2026.10.4/tests/unit/test_bibtex_export.py +267 -0
- kompend-2026.10.4/tests/unit/test_budget.py +137 -0
- kompend-2026.10.4/tests/unit/test_cache_store.py +167 -0
- kompend-2026.10.4/tests/unit/test_capture.py +383 -0
- kompend-2026.10.4/tests/unit/test_chunking.py +394 -0
- kompend-2026.10.4/tests/unit/test_cli_compile.py +196 -0
- kompend-2026.10.4/tests/unit/test_cli_config.py +145 -0
- kompend-2026.10.4/tests/unit/test_cli_doctor_status.py +483 -0
- kompend-2026.10.4/tests/unit/test_cli_help.py +61 -0
- kompend-2026.10.4/tests/unit/test_cli_ignore.py +110 -0
- kompend-2026.10.4/tests/unit/test_cli_index.py +122 -0
- kompend-2026.10.4/tests/unit/test_cli_init.py +134 -0
- kompend-2026.10.4/tests/unit/test_cli_progress.py +42 -0
- kompend-2026.10.4/tests/unit/test_cli_query.py +85 -0
- kompend-2026.10.4/tests/unit/test_cli_references.py +174 -0
- kompend-2026.10.4/tests/unit/test_cli_sources.py +285 -0
- kompend-2026.10.4/tests/unit/test_cli_verbosity.py +212 -0
- kompend-2026.10.4/tests/unit/test_compilation.py +1341 -0
- kompend-2026.10.4/tests/unit/test_concept_broker.py +132 -0
- kompend-2026.10.4/tests/unit/test_concept_keys.py +91 -0
- kompend-2026.10.4/tests/unit/test_config.py +965 -0
- kompend-2026.10.4/tests/unit/test_config_check.py +419 -0
- kompend-2026.10.4/tests/unit/test_context_manager_capability.py +48 -0
- kompend-2026.10.4/tests/unit/test_contextual_chunker.py +160 -0
- kompend-2026.10.4/tests/unit/test_dedup.py +488 -0
- kompend-2026.10.4/tests/unit/test_dicts.py +45 -0
- kompend-2026.10.4/tests/unit/test_distill_agent.py +23 -0
- kompend-2026.10.4/tests/unit/test_doctor_agent.py +75 -0
- kompend-2026.10.4/tests/unit/test_downloaders.py +558 -0
- kompend-2026.10.4/tests/unit/test_embedding_text.py +14 -0
- kompend-2026.10.4/tests/unit/test_entity_registry.py +279 -0
- kompend-2026.10.4/tests/unit/test_entity_type_registry.py +91 -0
- kompend-2026.10.4/tests/unit/test_export.py +406 -0
- kompend-2026.10.4/tests/unit/test_extraction_agent.py +114 -0
- kompend-2026.10.4/tests/unit/test_extraction_memory.py +209 -0
- kompend-2026.10.4/tests/unit/test_extraction_strategy.py +402 -0
- kompend-2026.10.4/tests/unit/test_extractors.py +177 -0
- kompend-2026.10.4/tests/unit/test_file_extension_text.py +38 -0
- kompend-2026.10.4/tests/unit/test_gap_analysis.py +128 -0
- kompend-2026.10.4/tests/unit/test_gen_checkpoint.py +85 -0
- kompend-2026.10.4/tests/unit/test_generation_agent.py +77 -0
- kompend-2026.10.4/tests/unit/test_http_client.py +201 -0
- kompend-2026.10.4/tests/unit/test_image_portablize.py +102 -0
- kompend-2026.10.4/tests/unit/test_image_provenance.py +57 -0
- kompend-2026.10.4/tests/unit/test_ingest_binary_gate.py +101 -0
- kompend-2026.10.4/tests/unit/test_ingest_reparse.py +385 -0
- kompend-2026.10.4/tests/unit/test_knox_agent_base.py +174 -0
- kompend-2026.10.4/tests/unit/test_knox_model.py +143 -0
- kompend-2026.10.4/tests/unit/test_kompend_agent_base.py +174 -0
- kompend-2026.10.4/tests/unit/test_kompend_model.py +143 -0
- kompend-2026.10.4/tests/unit/test_lint.py +1460 -0
- kompend-2026.10.4/tests/unit/test_lint_flow.py +63 -0
- kompend-2026.10.4/tests/unit/test_lint_history.py +262 -0
- kompend-2026.10.4/tests/unit/test_llm_context_window.py +254 -0
- kompend-2026.10.4/tests/unit/test_llm_format.py +130 -0
- kompend-2026.10.4/tests/unit/test_llm_models.py +417 -0
- kompend-2026.10.4/tests/unit/test_log_report.py +72 -0
- kompend-2026.10.4/tests/unit/test_markdown_converter.py +86 -0
- kompend-2026.10.4/tests/unit/test_mcp.py +215 -0
- kompend-2026.10.4/tests/unit/test_memory.py +173 -0
- kompend-2026.10.4/tests/unit/test_merge_by_concept_key.py +119 -0
- kompend-2026.10.4/tests/unit/test_metadata_field_tags.py +27 -0
- kompend-2026.10.4/tests/unit/test_models.py +485 -0
- kompend-2026.10.4/tests/unit/test_notes.py +204 -0
- kompend-2026.10.4/tests/unit/test_organize.py +828 -0
- kompend-2026.10.4/tests/unit/test_orphan_attachments_destructive.py +133 -0
- kompend-2026.10.4/tests/unit/test_orphan_attachments_fix.py +148 -0
- kompend-2026.10.4/tests/unit/test_otel_instrument.py +178 -0
- kompend-2026.10.4/tests/unit/test_output.py +960 -0
- kompend-2026.10.4/tests/unit/test_output_models.py +167 -0
- kompend-2026.10.4/tests/unit/test_output_okf.py +575 -0
- kompend-2026.10.4/tests/unit/test_output_wiki_index.py +442 -0
- kompend-2026.10.4/tests/unit/test_parsecraft_parser.py +578 -0
- kompend-2026.10.4/tests/unit/test_parser_options_surfaces.py +148 -0
- kompend-2026.10.4/tests/unit/test_parser_registry.py +192 -0
- kompend-2026.10.4/tests/unit/test_portable_wiki.py +84 -0
- kompend-2026.10.4/tests/unit/test_postprocess.py +79 -0
- kompend-2026.10.4/tests/unit/test_query_agent.py +96 -0
- kompend-2026.10.4/tests/unit/test_query_agentic_flow.py +199 -0
- kompend-2026.10.4/tests/unit/test_rag.py +243 -0
- kompend-2026.10.4/tests/unit/test_reference_dedup.py +377 -0
- kompend-2026.10.4/tests/unit/test_reference_excision.py +120 -0
- kompend-2026.10.4/tests/unit/test_reference_links.py +372 -0
- kompend-2026.10.4/tests/unit/test_reference_resolver.py +224 -0
- kompend-2026.10.4/tests/unit/test_reference_store.py +169 -0
- kompend-2026.10.4/tests/unit/test_references_model.py +182 -0
- kompend-2026.10.4/tests/unit/test_rel_to_vault.py +206 -0
- kompend-2026.10.4/tests/unit/test_resolution.py +161 -0
- kompend-2026.10.4/tests/unit/test_rlm_capability.py +439 -0
- kompend-2026.10.4/tests/unit/test_rumdl_config.py +85 -0
- kompend-2026.10.4/tests/unit/test_rumdl_normalize.py +101 -0
- kompend-2026.10.4/tests/unit/test_runlog.py +27 -0
- kompend-2026.10.4/tests/unit/test_safe_stem.py +63 -0
- kompend-2026.10.4/tests/unit/test_scaffolding.py +318 -0
- kompend-2026.10.4/tests/unit/test_search_pipeline.py +203 -0
- kompend-2026.10.4/tests/unit/test_search_retriever.py +212 -0
- kompend-2026.10.4/tests/unit/test_semantic_gaps.py +139 -0
- kompend-2026.10.4/tests/unit/test_source_metadata.py +143 -0
- kompend-2026.10.4/tests/unit/test_source_tags.py +62 -0
- kompend-2026.10.4/tests/unit/test_store.py +231 -0
- kompend-2026.10.4/tests/unit/test_store_migration_logs.py +122 -0
- kompend-2026.10.4/tests/unit/test_summarizer.py +290 -0
- kompend-2026.10.4/tests/unit/test_tag_filtering.py +116 -0
- kompend-2026.10.4/tests/unit/test_template_loader.py +332 -0
- kompend-2026.10.4/tests/unit/test_text_encoding.py +149 -0
- kompend-2026.10.4/tests/unit/test_text_matching.py +142 -0
- kompend-2026.10.4/tests/unit/test_throughput_features.py +1417 -0
- kompend-2026.10.4/tests/unit/test_unreferenced_attachments.py +168 -0
- kompend-2026.10.4/tests/unit/test_url_resolver.py +207 -0
- kompend-2026.10.4/tests/unit/test_usage_tracking.py +122 -0
- kompend-2026.10.4/tests/unit/test_user.py +61 -0
- kompend-2026.10.4/tests/unit/test_vault_paths.py +34 -0
- kompend-2026.10.4/tests/unit/test_wicer_agents.py +156 -0
- kompend-2026.10.4/tests/unit/test_wiki_cache.py +94 -0
- kompend-2026.10.4/tests/unit/test_wikilink_alias_learning.py +144 -0
- kompend-2026.10.4/tests/unit/test_wikilink_lookup.py +115 -0
- kompend-2026.10.4/tests/unit/test_xref_checker.py +243 -0
- kompend-2026.10.4/tests/unit/test_zvec_embed_text.py +270 -0
- kompend-2026.10.4/tests/unit/test_zvec_hybrid.py +250 -0
- kompend-2026.10.4/tests/unit/test_zvec_store_rebuild.py +270 -0
- kompend-2026.10.4/tests/unit/test_zvec_tags_schema.py +113 -0
- kompend-2026.10.4/ty.toml +13 -0
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
# AGENTS.md — Checks
|
|
2
|
+
|
|
3
|
+
Verification commands, enforcement scripts, and new-code checklist.
|
|
4
|
+
|
|
5
|
+
## General Checks
|
|
6
|
+
|
|
7
|
+
### Pattern: New Code Checklist
|
|
8
|
+
|
|
9
|
+
Before writing a function, tick these. If you can't, stop and fix the foundation
|
|
10
|
+
first — the alternatives are all antipatterns:
|
|
11
|
+
|
|
12
|
+
- **Limit values** — from config/DEFAULTS/field, not a literal slice?
|
|
13
|
+
- **Enum values** — from StrEnum members, not bare strings?
|
|
14
|
+
- **Imports** — at module level, not inside function bodies?
|
|
15
|
+
- **Global state** — no `global` keyword or module-level mutable singletons?
|
|
16
|
+
- **Noqa suppressions** — actually necessary, with a justification comment?
|
|
17
|
+
|
|
18
|
+
### Pattern: Enforcement Scripts
|
|
19
|
+
|
|
20
|
+
A small set of scripts catch what linting misses: bare-string contract keys,
|
|
21
|
+
magic-number crops, banned-noqa patterns. Run them locally before pushing.
|
|
22
|
+
All exit non-zero on violations; `mise run check-all` runs them (no CI job
|
|
23
|
+
does — see **Wiring** below).
|
|
24
|
+
|
|
25
|
+
Two guarantees keep them honest: a scan that finds no files is an error (an
|
|
26
|
+
empty scan is not a pass), and an enforced contract that no longer exists in
|
|
27
|
+
the code (moved module, renamed enum) fails the script instead of warning.
|
|
28
|
+
Per-line waivers exist for sites the rule cannot judge — `# nocheck: <reason>`
|
|
29
|
+
in field-consistency, `# noqa: <code>` in antipatterns. The reason is part of
|
|
30
|
+
the waiver: it states why this site is legitimate.
|
|
31
|
+
|
|
32
|
+
### Extension
|
|
33
|
+
|
|
34
|
+
| Who | When | What |
|
|
35
|
+
|-----|------|------|
|
|
36
|
+
| Project maintainer | Adding a new verification tool | Verification section |
|
|
37
|
+
| Project maintainer | Adding a new enforcement script | Enforcement table |
|
|
38
|
+
| Project maintainer | Adding a new checklist item | Checklist |
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## Project-specific Checks — kompend
|
|
43
|
+
|
|
44
|
+
### Verification
|
|
45
|
+
|
|
46
|
+
- Run `ruff check` on changed Python files before committing
|
|
47
|
+
- Run `uv run pytest tests/unit -x --timeout=30` for unit test coverage
|
|
48
|
+
- Run `uv run pytest tests/integration -x --timeout=30` for integration tests (no real-engine calls — must be fast)
|
|
49
|
+
- Run `ty check src/kompend` for type checking (mypy is not used)
|
|
50
|
+
- Run `uv run python scripts/checks/check_field_consistency.py` to catch hard-coded contract keys
|
|
51
|
+
- Run `uv run python scripts/checks/check_antipatterns.py` to catch banned-noqa, magic crops, `try/except ImportError` guards, and `global` keyword usage
|
|
52
|
+
- Verify `kompend.toml.example` stays in sync with `DEFAULTS` when adding config keys
|
|
53
|
+
- After changing `src/kompend/core/paths.py`, verify no hard-coded path strings
|
|
54
|
+
exist in other `.py` files
|
|
55
|
+
- After changing CLI commands, MCP tools, config keys, or output format, check
|
|
56
|
+
`skills/kompend/SKILL.md` for stale or missing info
|
|
57
|
+
- Run `uv run mkdocs build --strict` when changing documentation files
|
|
58
|
+
|
|
59
|
+
### New Code Checklist
|
|
60
|
+
|
|
61
|
+
Tick these BEFORE writing a function:
|
|
62
|
+
|
|
63
|
+
- **Limit value** — from `config.get(...)` / `DEFAULTS` / `PipelineConfig` field?
|
|
64
|
+
Literals like `[:10]` silently drop data. Use `DisplayConfig` for display
|
|
65
|
+
limits or `BudgetConfig` for LLM input/output budgets.
|
|
66
|
+
- **Role / task / compiler / tier** — from `LLMRole` / `AgentTask` / `Compiler` /
|
|
67
|
+
`Tier` enum? Bare strings like `role="compile.extract"` will be rejected.
|
|
68
|
+
- **Import** — at module level? Function-body imports (`PLC0415`) are rejected
|
|
69
|
+
except for `try/except ImportError` probes for explicitly optional deps.
|
|
70
|
+
- **Global state** — no `global` keyword or module-level mutable singleton
|
|
71
|
+
(`_cache = {}`, `_instance = None`). A genuinely process-wide switch (one-shot
|
|
72
|
+
setup guard, verbosity toggle) may use `global` with a justified
|
|
73
|
+
`# noqa: PLW0603` — a contextvar would be wrong for it.
|
|
74
|
+
- **Noqa suppression** — actually necessary with a justification comment?
|
|
75
|
+
`PLC0415` and other banned-noqa rules cannot be suppressed.
|
|
76
|
+
|
|
77
|
+
### Enforcement scripts
|
|
78
|
+
|
|
79
|
+
| Script | Catches | Lives in |
|
|
80
|
+
|---|---|---|
|
|
81
|
+
| `ruff check` | Most lint issues (PLC0415/E402 are warnings, not errors) | ruff.toml |
|
|
82
|
+
| `scripts/checks/check_field_consistency.py` | Bare-string contract keys | scripts/checks/ |
|
|
83
|
+
| `scripts/checks/check_antipatterns.py` | Banned-noqa, magic crops, `try/except ImportError` guards, `global` | scripts/checks/ |
|
|
84
|
+
| `scripts/checks/check_dox.py` | DOX file size budgets, cross-file duplication | scripts/checks/ |
|
|
85
|
+
| `scripts/analyze/analyze_codebase.py` | Files/submodules exceeding net-line targets (>350 lines/file, >7 files/submodule) | scripts/analyze/ |
|
|
86
|
+
|
|
87
|
+
**Wiring.** Git honours one `core.hooksPath`; this repo points it at
|
|
88
|
+
`.githooks` (`mise run install-hooks`). `.githooks/pre-commit` runs the
|
|
89
|
+
forbidden ruff rules plus the three gates, then `_delegate.sh` forwards to the
|
|
90
|
+
hook files other tools own in `.beads/hooks` (beads, repowise) — never edit
|
|
91
|
+
those, the tools regenerate them. `check_dox.py`'s scope is the DOX files plus
|
|
92
|
+
the core `.agents/` state files; `.agents/skills/**` and `.agents/history/**` are
|
|
93
|
+
not project DOX and are skipped. No CI job runs these; `mise run check-all` runs
|
|
94
|
+
the two AST gates.
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
# AGENTS.md — Code
|
|
2
|
+
|
|
3
|
+
kompend code policies: antipatterns, boundaries, error handling. Load when writing
|
|
4
|
+
or reviewing code — production or tests.
|
|
5
|
+
|
|
6
|
+
## Python style
|
|
7
|
+
|
|
8
|
+
Follow the `python-ultimate` skill when in doubt about Python style, structure,
|
|
9
|
+
or conventions — it takes precedence over a conflicting habit or default.
|
|
10
|
+
|
|
11
|
+
## Antipatterns
|
|
12
|
+
|
|
13
|
+
| Pattern | Verdict | Fix |
|
|
14
|
+
|---|---|---|
|
|
15
|
+
| Hard-coded model name (`model="ollama/llama3.2"`) | ❌ | Config field default, never a function signature |
|
|
16
|
+
| Domain value as function default (`prompt_budget: int = 200_000`) | ❌ | Config dataclass field |
|
|
17
|
+
| `x: T | None = None` with hidden default in body | ❌ | Config field; docstring if `None` is truly meaningful |
|
|
18
|
+
| `content[:200]` / `text[:4096]` | ❌ | Full content, or a batch size derived from config/model |
|
|
19
|
+
| Config fallback duplicating a runtime provider value (`dim = 384`) | ❌ | Read it from the provider at runtime (`provider.dim`) |
|
|
20
|
+
| Bare schema/field-name literals (`hit.get("source_file")`) | ❌ | `StrEnum` / `Final[str]` symbol imported at every site |
|
|
21
|
+
| Hard-coded `"KOMP_*"` env-var literal (`os.environ.get("KOMP_WIKI_DIR")`, `envvar=`) | ❌ | `EnvVar` member from `kompend.core.env` |
|
|
22
|
+
| Stable-shape dict without a schema (JSONL records, persisted entries — lint history, dedup store, graph edges, citations) | ❌ | `TypedDict` next to the owning model — types keys at zero runtime cost. Dataclasses only where the shape is also constructed/validated in code |
|
|
23
|
+
| Absolute path in a `.kompend/` artifact (`citing_source = str(path)`) | ❌ | Relativize at the persistence boundary (`rel_to_vault(path, base_dir)`) |
|
|
24
|
+
|
|
25
|
+
The first five are instances of the universal magic-number rule
|
|
26
|
+
(see `POLICIES.md`); rows 6–9 are kompend-specific. Two of them are enforced:
|
|
27
|
+
`scripts/checks/check_field_consistency.py` (bare contract keys) and
|
|
28
|
+
`scripts/checks/check_antipatterns.py` (env-var literals, magic crops). Run both
|
|
29
|
+
before committing — see `CHECKS.md`.
|
|
30
|
+
|
|
31
|
+
## Boundaries
|
|
32
|
+
|
|
33
|
+
- **Every behaviour-affecting value is a config field** in a `_KompendBaseModel`
|
|
34
|
+
(`LLMConfig`, `BudgetConfig`, …) with a `Field(validation_alias=...)`. This
|
|
35
|
+
holds even when the default equals the current literal: the field is the
|
|
36
|
+
single source of truth, and `DEFAULTS` is generated from the schema.
|
|
37
|
+
- **No absolute paths in `.kompend/` artifacts.** Paths in every persisted record
|
|
38
|
+
(provenance, references, assets, dedup, memory, search index, compile state,
|
|
39
|
+
wiki cache) are vault-relative and POSIX-normalized. In-memory `Path` objects
|
|
40
|
+
may be absolute; relativization happens at the persistence boundary.
|
|
41
|
+
- **No `from typing import TYPE_CHECKING`** and no `if TYPE_CHECKING:` blocks —
|
|
42
|
+
they diverge runtime from the type checker. Break import cycles structurally
|
|
43
|
+
(neutral module, Protocol, or a runtime-only import at its call site) and use
|
|
44
|
+
`from __future__ import annotations` for forward references.
|
|
45
|
+
- **Never suppress** `PLC0415` (inline imports), `ANN001`/`ANN202` (missing
|
|
46
|
+
annotations) — hard errors, no `# noqa`. For non-ruff scanner false positives
|
|
47
|
+
(vibecheck, sloppylint, aislop) use that tool's own directive, so each
|
|
48
|
+
suppression names the scanner it targets.
|
|
49
|
+
- **Heavy optional dependencies stay lazy** (parsecraft, torch, transformers,
|
|
50
|
+
datasketch, scipy, crawl4ai, pydantic-ai, MCP SDK, zvec) so CLI startup stays
|
|
51
|
+
fast. Package level: `lazy.attach(__name__, submod_attrs={...})`. Function
|
|
52
|
+
level: the registry factory (`get_backend()`), never a module-scope import.
|
|
53
|
+
Canonical pattern: `src/kompend/preprocessing/parsers/__init__.py`.
|
|
54
|
+
- **Temp files** go in `./tmp` (gitignored) or `tempfile.TemporaryDirectory()`.
|
|
55
|
+
|
|
56
|
+
## Error handling — prefer "let it burn"
|
|
57
|
+
|
|
58
|
+
Propagate. `None` may mean a thing is **absent** (lookup miss, optional value
|
|
59
|
+
unset), never that an operation **failed** — returning `None` for a corrupt file
|
|
60
|
+
is the antipattern, and it pushes `if x is None` chains onto every caller.
|
|
61
|
+
|
|
62
|
+
The only valid `try/except` sites:
|
|
63
|
+
|
|
64
|
+
1. **Trust boundary** — translate a low-level error into a user-facing message
|
|
65
|
+
at the CLI/MCP top level; catch narrowly, report the real cause.
|
|
66
|
+
2. **Optional-feature probe** — narrow to the specific exception
|
|
67
|
+
(`ImportError`, `FileNotFoundError`), never `Exception`.
|
|
68
|
+
3. **Best-effort enrichment** — per-item catch that *records* the failure
|
|
69
|
+
(SKIP result, warning log) and continues the batch.
|
|
70
|
+
4. **Cache miss** — narrow to `(json.JSONDecodeError, OSError)` and log at
|
|
71
|
+
`WARNING` so corruption stays visible.
|
|
72
|
+
|
|
73
|
+
Forbidden: `except Exception: pass`, `except Exception: return None`,
|
|
74
|
+
`# noqa: BLE001`/`S110` to silence a bare except, and catching a corrupt
|
|
75
|
+
internal-state file (wiki cache, tier state, compile state) to reset it —
|
|
76
|
+
corruption is a bug; raise.
|
|
77
|
+
|
|
78
|
+
Removing a `try/except` that surfaces a real error to someone who needs it is
|
|
79
|
+
the correct fix.
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
# AGENTS.md — Files
|
|
2
|
+
|
|
3
|
+
Path constants, VaultPaths, and naming conventions. Load when touching files.
|
|
4
|
+
|
|
5
|
+
## General Files
|
|
6
|
+
|
|
7
|
+
### Pattern: Single Source of Truth for Paths
|
|
8
|
+
|
|
9
|
+
Project artifact paths should be defined in a single constants module. No other
|
|
10
|
+
module hard-codes directory or file names. Always import from the constants
|
|
11
|
+
module.
|
|
12
|
+
|
|
13
|
+
### Pattern: Resolved Path Object
|
|
14
|
+
|
|
15
|
+
Use a path-resolver class that takes a base directory and exposes every artifact
|
|
16
|
+
path as a property. This ensures consistent path construction across the codebase.
|
|
17
|
+
|
|
18
|
+
### Extension
|
|
19
|
+
|
|
20
|
+
| Who | When | What |
|
|
21
|
+
|-----|------|------|
|
|
22
|
+
| Project maintainer | Adding a new artifact file/directory | Add constant row |
|
|
23
|
+
| Project maintainer | Renaming an artifact | Update constant value |
|
|
24
|
+
| Project maintainer | Changing the paths module | Update module reference |
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## Project-specific Files — kompend
|
|
29
|
+
|
|
30
|
+
### Path Constants — Single Source of Truth
|
|
31
|
+
|
|
32
|
+
All on-disk artifact names are `Final[str]` constants in **`src/kompend/core/paths.py`**.
|
|
33
|
+
|
|
34
|
+
**Rule:** `".kompend"`, `"cache"`, `"config.toml"`, `"vectors"`, `"memory.db"`,
|
|
35
|
+
`"last_wiki.json"`, etc. must **never** appear as a literal in
|
|
36
|
+
any `.py` file outside `paths.py`. Always import from `kompend.core.paths`.
|
|
37
|
+
|
|
38
|
+
| Constant | Value | Usage |
|
|
39
|
+
|----------|-------|-------|
|
|
40
|
+
| `KOMP_DIR` | `".kompend"` | Root metadata directory |
|
|
41
|
+
| `KOMP_DB_FILE` | `"kompend.db"` | Single non-vector SQLite store (`.kompend/kompend.db`) |
|
|
42
|
+
| `CACHE_SUBDIR` | `"cache"` | Cache component within `KOMP_DIR` |
|
|
43
|
+
| `CACHE_DIR` | `".kompend/cache"` | Full relative cache path (for DEFAULTS) |
|
|
44
|
+
| `CONFIG_FILE` | `"config.toml"` | Project-local config |
|
|
45
|
+
| `VECTORS_DIR` | `"vectors"` | Embedding vector store |
|
|
46
|
+
| `VECTORS_MANIFEST_FILE` | `"vectors.manifest.json"` | Vector id sidecar (legacy — now the `vector_manifest` row) |
|
|
47
|
+
| `DOWNLOADED_FILE` | `"downloaded.json"` | URL download manifest (legacy — now `downloaded` table) |
|
|
48
|
+
| `MEMORY_DB_FILE` | `"memory.db"` | Semantic query-memory collection **directory** (zvec, not SQLite) |
|
|
49
|
+
| `MEMORY_LOG_FILE` | `"memory.jsonl"` | Memory append-only log (legacy — now `memory_log` table) |
|
|
50
|
+
| `MEMORY_STORE_FILE` | `"memory.json"` | Memory state export (legacy — now `memory_states` table) |
|
|
51
|
+
| `PROVENANCE_DIR` | `"provenance"` | Provenance trace directory (legacy — now `provenance` table) |
|
|
52
|
+
| `SUMMARIES_SUBDIR` | `"summaries"` | Per-source summary pages (`wiki/summaries/`) |
|
|
53
|
+
| `EXPORTED_DIR_NAME` | `"exported"` | Full-source markdown exports (top-level, on demand) |
|
|
54
|
+
| `QUALITY_FILE` | `"quality.md"` | Verification summary page (`wiki/quality.md`) |
|
|
55
|
+
| `VERIFICATION_FILE` | `"verification.json"` | Verification results |
|
|
56
|
+
| `PRIVATE_FILE` | `"private.json"` | Private page manifest |
|
|
57
|
+
| `COMPILE_STATE_FILE` | `"compile_state.json"` | Tier state checkpoint |
|
|
58
|
+
| `LINT_HISTORY_FILE` | `"lint_history.jsonl"` | Append-only lint history log |
|
|
59
|
+
| `STATE_FILE` | `"state.json"` | General state file |
|
|
60
|
+
|
|
61
|
+
**Configurable directory names** (`"sources"`, `"wiki"`) live in `DEFAULTS`
|
|
62
|
+
under `["paths"]["sources_dir"]` and `["paths"]["output_dir"]` — not in
|
|
63
|
+
`paths.py`, because users can override them.
|
|
64
|
+
|
|
65
|
+
### Project root naming
|
|
66
|
+
|
|
67
|
+
The project root directory is always called `base_dir`. Never use `target_dir`,
|
|
68
|
+
`resolved_base`, `project_root`, or `sources_dir.parent`.
|
|
69
|
+
|
|
70
|
+
### VaultPaths
|
|
71
|
+
|
|
72
|
+
`VaultPaths` (in `paths.py`) resolves concrete paths inside a vault:
|
|
73
|
+
|
|
74
|
+
```python
|
|
75
|
+
from kompend.core.paths import VaultPaths
|
|
76
|
+
|
|
77
|
+
paths = VaultPaths(base_dir)
|
|
78
|
+
paths.cache_dir # base_dir/.kompend/cache
|
|
79
|
+
paths.compile_state_file # base_dir/.kompend/compile_state.json
|
|
80
|
+
paths.wiki_cache_file # base_dir/.kompend/last_wiki.json
|
|
81
|
+
paths.extract_dir # base_dir/.kompend/cache/extract (legacy — now extract cache layer in kompend.db)
|
|
82
|
+
paths.images_dir # base_dir/.kompend/cache/images
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
| Context | Pattern |
|
|
86
|
+
|---------|---------|
|
|
87
|
+
| Module has `config: PipelineConfig` | `config.paths.cache_dir` |
|
|
88
|
+
| Module has `base_dir: Path` | `VaultPaths(base_dir).cache_dir` |
|
|
89
|
+
| Module has `output_dir: Path` | `VaultPaths(output_dir.parent).cache_dir` |
|
|
90
|
+
| Test with `tmp_path` | `VaultPaths(tmp_path).cache_dir` |
|
|
91
|
+
|
|
92
|
+
### Test conventions
|
|
93
|
+
|
|
94
|
+
- All tests use `pytest` and `tmp_path` for filesystem operations.
|
|
95
|
+
- Unit tests must mock external dependencies (LLM, network, filesystem).
|
|
96
|
+
- Integration tests calling LLM APIs must use `@pytest.mark.skipif` checking
|
|
97
|
+
for API key availability.
|
|
98
|
+
- Test files follow `test_<module>.py` naming.
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
# AGENTS.md — History
|
|
2
|
+
|
|
3
|
+
Past design decisions, known issues, and "why we banned X." Optional background
|
|
4
|
+
reading; not required for day-to-day work.
|
|
5
|
+
|
|
6
|
+
## General History
|
|
7
|
+
|
|
8
|
+
### Pattern: Design Decision Log
|
|
9
|
+
|
|
10
|
+
Record significant decisions that shaped the codebase. Each entry explains the
|
|
11
|
+
context, the decision, and where it landed. This prevents future contributors
|
|
12
|
+
from re-litigating settled questions.
|
|
13
|
+
|
|
14
|
+
### Rules
|
|
15
|
+
|
|
16
|
+
- **Newest first**, **one entry per decision**, 2–6 lines: context, decision,
|
|
17
|
+
commit. Detail belongs in `.agents/history/` — link it.
|
|
18
|
+
- **Budgeted like every `.agents/` file (≤120 lines).** Over budget → archive the
|
|
19
|
+
oldest entries to `.agents/history/`, leaving a pointer line.
|
|
20
|
+
- Move resolved entries to a "Resolved" subsection rather than deleting them.
|
|
21
|
+
|
|
22
|
+
### Extension
|
|
23
|
+
|
|
24
|
+
| Who | When | What |
|
|
25
|
+
|-----|------|------|
|
|
26
|
+
| Any contributor | Making a notable design decision | Add entry at top |
|
|
27
|
+
| Project maintainer | Resolving a known violation | Move to Resolved subsection |
|
|
28
|
+
| Project maintainer | Deprecating a tool/pattern | Add rationale entry |
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## Project-specific History — kompend
|
|
33
|
+
|
|
34
|
+
### Archived plans — full detail in `.agents/history/`
|
|
35
|
+
|
|
36
|
+
| Archived | Slug | What landed |
|
|
37
|
+
| -------- | ---- | ----------- |
|
|
38
|
+
| 2026-09-16 | `context-window-provider-overrides` | `[providers.<name>].context_window` now beats auto-discovery (step 1 of `discover_context_window`); `kompend doctor` stops reporting override-only blocks of *known* providers as `missing base_url` while still erroring on unknown ids |
|
|
39
|
+
| 2026-09-24 | `kompend-0iv2-audit` | Read-only audit resolving a tracker-vs-code contradiction from the code; the reusable part is the method — dynamic-access sweep plus `git log -S "<Class>"` |
|
|
40
|
+
| 2026-09-24 | `kompend-storage-migration` | `.kompend/` consolidated into one SQLite file (`core/store/`); clean cut, no migration code — `61147c5f`, `f6aee4c0`, `8aaf2eca` |
|
|
41
|
+
| 2026-08-22 | `markdown-only-vault` | The wiki is represented by its generated markdown alone; `.kompend/` is purely derived — `5d493119`, `51ea1111` |
|
|
42
|
+
| 2026-08-16 | `source-export-md`, `category-extraction`, `rumdl-format-wiring` | `kompend sources export` from the parse cache; configurable extraction categories; rumdl wiring for every markdown writer |
|
|
43
|
+
| 2026-08-15 | `env-any-refactor`, `rlm-integration` | Typed config access replacing `Any`; the optional RLM code-exploration capability |
|
|
44
|
+
| 2026-08-14 | `migration-plan`, `refactoring-plan` | `summarization-pydantic-ai` context management (`edb4d49`); super-module splits into `stages/`, `engine/`, `tools/`, `flows/`, `pages/` |
|
|
45
|
+
|
|
46
|
+
### Why text-in-code is banned
|
|
47
|
+
|
|
48
|
+
Prompts embedded in Python were undiscoverable, unversionable, and invisible to
|
|
49
|
+
non-developers. All prompt text now lives in Jinja2 templates or pack TOML. The
|
|
50
|
+
remaining legacy violations are tracked in beads — `bd list`, not a table here.
|
|
51
|
+
|
|
52
|
+
### Why litellm was removed
|
|
53
|
+
|
|
54
|
+
`c8055c0`. After moving to pydantic-ai's native `infer_model()` plus the
|
|
55
|
+
models.dev catalog, litellm was 40+ transitive dependencies and added latency
|
|
56
|
+
around a unified `build_model()` path. Removed.
|
|
57
|
+
|
|
58
|
+
### Why heavy imports are lazy-loaded (SPEC-0001)
|
|
59
|
+
|
|
60
|
+
`kompend --help` took ~80s because `register_all_commands()` imported every command
|
|
61
|
+
module, each transitively pulling docling/torch/pydantic-ai/MCP. `lazy.attach()`
|
|
62
|
+
in five package `__init__.py` files, plus the `get_backend()` factory for
|
|
63
|
+
function-body-only classes, took it to 11s (−86%). No `_LAZY` dicts, no
|
|
64
|
+
`__getattr__` fallbacks.
|
|
65
|
+
|
|
66
|
+
### Why `compile.embedding.dim` was removed
|
|
67
|
+
|
|
68
|
+
The `dim = 384` fallback shaped only the empty-text dedup vector while non-empty
|
|
69
|
+
fingerprints used `provider.embed()`'s real dimension, so a mismatch crashed
|
|
70
|
+
`EmbeddingMatcher.score(..., strict=True)` — and `make_provider()` ignored the
|
|
71
|
+
hint anyway. Both zvec stores had the same literal; all are gone and dim always
|
|
72
|
+
resolves from `provider.dim`, lazily probed. Stores rebuild when the stored
|
|
73
|
+
dimension differs from the current model's.
|
|
74
|
+
|
|
75
|
+
### Why `_ENV_LIST_VARS` is schema-derived
|
|
76
|
+
|
|
77
|
+
The hand-listed `KOMP_*` names drifted from the schema (splitting a `str` field
|
|
78
|
+
into a list, listing a dead var). It now derives from list-typed config-map
|
|
79
|
+
fields. Separately, `KOMP_CHARS_PER_TOKEN` was a dead env var — the real alias is
|
|
80
|
+
`KOMP_LLM_DEFAULT_CHARS_PER_TOKEN` and the value already flows via
|
|
81
|
+
`default_chars_per_token`.
|
|
82
|
+
|
|
83
|
+
### Lint remediation collapsed to page generation (2026-08-14)
|
|
84
|
+
|
|
85
|
+
Three overlapping tiers became one: LLM-generate missing concept pages from
|
|
86
|
+
cached extractions. Image-embed fixing moved into `run --fix` as the
|
|
87
|
+
`image-embed` structural rule; recommendations live only in `kompend lint gaps`;
|
|
88
|
+
`RemediationAction.tier` was removed. Same change added the `rumdl` structural
|
|
89
|
+
rule (`rumdl check` JSON over the vault's markdown, sources never touched, files
|
|
90
|
+
passed explicitly to bypass rumdl's ignore filtering).
|
|
91
|
+
|
|
92
|
+
### Release versioning
|
|
93
|
+
|
|
94
|
+
Calver `YYYY.M.D` / `YYYY.M.D.N` — no zero-padding, no `v` prefix. See
|
|
95
|
+
`.forgejo/workflows/release.yml`.
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# AGENTS.md — Maintenance
|
|
2
|
+
|
|
3
|
+
How to keep `.agents/` files current.
|
|
4
|
+
|
|
5
|
+
## General Maintenance
|
|
6
|
+
|
|
7
|
+
### Process
|
|
8
|
+
|
|
9
|
+
1. When a rule changes, update the file that owns it — never another file.
|
|
10
|
+
2. When adding a new `.agents/` file, add it to the `.agents/ index` table
|
|
11
|
+
in root `AGENTS.md`.
|
|
12
|
+
3. After any `.agents/` change, check the AGENTS.md index for stale entries.
|
|
13
|
+
|
|
14
|
+
### Principles
|
|
15
|
+
|
|
16
|
+
- **Single source of truth.** Each rule lives in exactly one file.
|
|
17
|
+
Cross-reference with a one-liner, never duplicate.
|
|
18
|
+
- **AGENTS.md is an index.** It points to `.agents/` files; it does not contain
|
|
19
|
+
the rules themselves.
|
|
20
|
+
- **No tree figures.** ASCII directory trees rot immediately. Regenerate on
|
|
21
|
+
demand: `rg --files | tree-cli --fromfile`.
|
|
22
|
+
|
|
23
|
+
### Extension
|
|
24
|
+
|
|
25
|
+
| Who | When | What |
|
|
26
|
+
|-----|------|------|
|
|
27
|
+
| Project maintainer | Adding a new `.agents/` file | Add to AGENTS.md index |
|
|
28
|
+
| Project maintainer | Renaming a `.agents/` file | Update AGENTS.md + cross-references |
|
|
29
|
+
| Any contributor | Finding stale references | Fix or report |
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## Project-specific Maintenance — kompend
|
|
34
|
+
|
|
35
|
+
### File update triggers
|
|
36
|
+
|
|
37
|
+
| File | Update when |
|
|
38
|
+
|------|-------------|
|
|
39
|
+
| `POLICIES.md` | Adding/changing priorities, boundaries, DOX authoring, response format |
|
|
40
|
+
| `CODE.md` | Adding/changing a code antipattern, boundary, or the error-handling policy |
|
|
41
|
+
| `FILES.md` | Renaming/adding path constants in `paths.py` |
|
|
42
|
+
| `CHECKS.md` | Adding/changing verification commands or checklist items |
|
|
43
|
+
| `HISTORY.md` | Resolving a known violation or making a notable design decision |
|
|
44
|
+
| `ONBOARDING.md` | Project structure or entry points change |
|
|
45
|
+
| `plans/` | New feature implementation starts |
|
|
46
|
+
| `history/` | HISTORY.md overflow or completed plans archived |
|
|
47
|
+
|
|
48
|
+
### Plan naming and dating
|
|
49
|
+
|
|
50
|
+
- Active plans in `plans/` keep their working name (no date prefix) but must
|
|
51
|
+
carry date info in the document (e.g. a `Created: YYYY-MM-DD` line under
|
|
52
|
+
the title; update a `Status:` line as work progresses).
|
|
53
|
+
- On archiving into `history/`, rename to `YYYY-MM-DD-<plan-slug>.md` where
|
|
54
|
+
the date is the **completion date** (e.g. `2026-08-14-migration-plan.md`).
|
|
55
|
+
Update any references to the old filename (HISTORY.md entries, links).
|
|
56
|
+
|
|
57
|
+
### Cross-reference map
|
|
58
|
+
|
|
59
|
+
| `.agents/` file | Referenced from |
|
|
60
|
+
|-----------------|-----------------|
|
|
61
|
+
| `POLICIES.md` | Root `AGENTS.md`, all subtree `AGENTS.md` `on entry` headers |
|
|
62
|
+
| `CODE.md` | Root `AGENTS.md`, subtree `AGENTS.md` `on entry` headers, `tests/AGENTS.md` |
|
|
63
|
+
| `FILES.md` | Root `AGENTS.md`, all subtree `AGENTS.md` `on entry` headers |
|
|
64
|
+
| `CHECKS.md` | Root `AGENTS.md`, all subtree `AGENTS.md` `on entry` headers |
|
|
65
|
+
| `HISTORY.md` | `src/kompend/AGENTS.md` (text-in-code violations pointer) |
|
|
66
|
+
| `ONBOARDING.md` | Root `AGENTS.md` (First time? line) |
|
|
67
|
+
| `MAINTENANCE.md` | Root `AGENTS.md` (.agents/ index) |
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
# AGENTS.md — Onboarding
|
|
2
|
+
|
|
3
|
+
First 5 minutes to get oriented.
|
|
4
|
+
|
|
5
|
+
## General Onboarding
|
|
6
|
+
|
|
7
|
+
This file follows a reusable template. Every project should cover:
|
|
8
|
+
|
|
9
|
+
1. **What to read first** — the AGENTS.md chain: read root, then subtree
|
|
10
|
+
files for directories you'll touch.
|
|
11
|
+
2. **Key entry points** — 5-10 files that give the fastest orientation.
|
|
12
|
+
3. **Project structure** — one-line purpose per top-level directory.
|
|
13
|
+
4. **Essential commands** — build, test, lint, typecheck with time estimates.
|
|
14
|
+
5. **Key conventions** — the 5-8 rules you'll break most often if you don't
|
|
15
|
+
know them.
|
|
16
|
+
6. **Where to dig deeper** — documentation index, issue tracker, child DOX docs.
|
|
17
|
+
|
|
18
|
+
### Extension
|
|
19
|
+
|
|
20
|
+
| Who | When | What |
|
|
21
|
+
|-----|------|------|
|
|
22
|
+
| Project maintainer | After major code reorganization | Sections 2-3 |
|
|
23
|
+
| Project maintainer | When build/test tooling changes | Section 4 |
|
|
24
|
+
| Project maintainer | When key conventions change | Section 5 |
|
|
25
|
+
|
|
26
|
+
**Never duplicate content.** Reference the source file. This document is a map,
|
|
27
|
+
not a rulebook — rules live in `POLICIES.md`, path constants in `FILES.md`,
|
|
28
|
+
verification in `CHECKS.md`.
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## Project-specific Onboarding — kompend
|
|
33
|
+
|
|
34
|
+
### 1. What is kompend?
|
|
35
|
+
|
|
36
|
+
kompend = Knowledge Organizer for eXtended documents. A parser-agnostic,
|
|
37
|
+
structure-preserving, LLM-aware knowledge base compiler. 5-tier pipeline:
|
|
38
|
+
Preprocessing → Chunking → Resolution → Compilation → Output.
|
|
39
|
+
|
|
40
|
+
Every LLM call routes through PydanticAI agents in `src/kompend/agents/`.
|
|
41
|
+
|
|
42
|
+
### 2. Key entry points (read these first)
|
|
43
|
+
|
|
44
|
+
| File | Why |
|
|
45
|
+
|------|-----|
|
|
46
|
+
| `AGENTS.md` | Root rail — index to all `.agents/` files |
|
|
47
|
+
| `.agents/POLICIES.md` | Priorities, boundaries, DOX authoring, response format |
|
|
48
|
+
| `.agents/CODE.md` | Code antipatterns, boundaries, error handling |
|
|
49
|
+
| `.agents/FILES.md` | Path constants, VaultPaths, naming |
|
|
50
|
+
| `src/kompend/AGENTS.md` | Python-specific: text-in-code, antipatterns |
|
|
51
|
+
| `docs/index.md` | User-facing documentation index |
|
|
52
|
+
| `kompend.toml.example` | All config keys with comments |
|
|
53
|
+
| `src/kompend/core/paths.py` | Single source of truth for artifact paths |
|
|
54
|
+
| `src/kompend/core/config/generate.py` | `DEFAULTS` dict — all config defaults |
|
|
55
|
+
|
|
56
|
+
### 3. Project structure
|
|
57
|
+
|
|
58
|
+
| Path | Purpose |
|
|
59
|
+
|------|---------|
|
|
60
|
+
| `src/kompend/core/` | Foundation: config, models, paths, pipeline, cache, templates |
|
|
61
|
+
| `src/kompend/agents/` | PydanticAI agents for every LLM call |
|
|
62
|
+
| `src/kompend/llm/` | LLM client, provider registration, failover |
|
|
63
|
+
| `src/kompend/cli/` | Typer-based CLI (thin shell over core) |
|
|
64
|
+
| `src/kompend/preprocessing/` | Parsers (parsecraft adapter, marker, mineru, web) |
|
|
65
|
+
| `src/kompend/compilation/` | Tier 4: extraction, generation, WiCER, output |
|
|
66
|
+
| `src/kompend/search/` | Hybrid search: FTS + vector + RRF |
|
|
67
|
+
| `src/kompend/memory/` | Memory lifecycle: working → episodic → semantic → procedural |
|
|
68
|
+
| `tests/` | Unit, integration, benchmarks |
|
|
69
|
+
| `docs/` | MkDocs user-facing documentation |
|
|
70
|
+
| `.agents/skills/` | Installed agent skills |
|
|
71
|
+
|
|
72
|
+
### 4. Essential commands
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
uv run pytest tests/unit -x --timeout=30 # unit tests
|
|
76
|
+
uv run pytest tests/unit -q --no-cov --tb=line # unit tests (compact)
|
|
77
|
+
uv run pytest tests/integration -x --timeout=120 # integration tests
|
|
78
|
+
uv run pytest tests/benchmarks/ -q --no-cov # benchmarks
|
|
79
|
+
ruff check # lint
|
|
80
|
+
ty check src/kompend # type check (not mypy)
|
|
81
|
+
uv run python scripts/checks/check_field_consistency.py # bare-string contract keys
|
|
82
|
+
uv run python scripts/checks/check_antipatterns.py # banned-noqa, magic crops, global
|
|
83
|
+
uv run mkdocs build --strict # doc build check
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### 5. Key conventions
|
|
87
|
+
|
|
88
|
+
- **`uv run`** for everything — never `python`, `python3`, `pip`
|
|
89
|
+
- **`base_dir`** — canonical name for the project root directory
|
|
90
|
+
- **`paths.py`** — all artifact names live here; never hard-code `.kompend`, `cache`, etc.
|
|
91
|
+
- **`VaultPaths`** — resolve concrete paths with `VaultPaths(base_dir)`
|
|
92
|
+
- **StrEnum** — roles, tasks, compilers, tiers must use enum members, not bare strings
|
|
93
|
+
- **No tree figures** in AGENTS.md — regenerate: `rg --files | tree-cli --fromfile`
|
|
94
|
+
- **No cross-level duplication** in DOX chain — reference, never copy
|
|
95
|
+
|
|
96
|
+
### 6. Where to dig deeper
|
|
97
|
+
|
|
98
|
+
- Each `src/kompend/` subdirectory has its own `AGENTS.md` (DOX child doc)
|
|
99
|
+
- `docs/index.md` — full documentation index
|
|
100
|
+
- `.agents/HISTORY.md` — past design decisions, known issues
|
|
101
|
+
- `bd` (beads) — issue tracking: `bd list`, `bd show <id>`
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
# AGENTS.md — POLICIES
|
|
2
|
+
|
|
3
|
+
Always applicable. Priorities, boundaries, DOX authoring, response format.
|
|
4
|
+
|
|
5
|
+
## Priorities
|
|
6
|
+
|
|
7
|
+
Correctness · Evidence · Safety · Minimal changes · Consistency · Performance
|
|
8
|
+
|
|
9
|
+
## Boundaries
|
|
10
|
+
|
|
11
|
+
- NEVER fabricate paths, commits, APIs, config keys, env vars, test results, or
|
|
12
|
+
benchmark numbers. If you don't know, say so.
|
|
13
|
+
- NEVER guess at command names, flags, or paths — read source or run `--help`.
|
|
14
|
+
- NEVER add secrets, API keys, or tokens to files; use env vars.
|
|
15
|
+
- NEVER run destructive commands (`rm -rf`, `git reset --hard`,
|
|
16
|
+
`git push --force`) without explicit confirmation.
|
|
17
|
+
- NEVER delete or move files without explicit instruction.
|
|
18
|
+
- NEVER modify `.gitignore`, `pyproject.toml`, `ruff.toml`, or CI config, and add
|
|
19
|
+
no new dependency, without explicit instruction.
|
|
20
|
+
- NEVER create temp files outside `tmp/` (gitignored) — never `_tmp_*.py` at the root.
|
|
21
|
+
|
|
22
|
+
## Change constraints
|
|
23
|
+
|
|
24
|
+
- Minimal, surgical edits. Preserve existing style. No unrelated refactoring.
|
|
25
|
+
- When changing tests, update only directly affected tests.
|
|
26
|
+
|
|
27
|
+
## Code quality
|
|
28
|
+
|
|
29
|
+
Universal defaults. kompend code policies — antipatterns, boundaries, error
|
|
30
|
+
handling — live in `CODE.md`; project-specific standards in child AGENTS.md.
|
|
31
|
+
|
|
32
|
+
- **SRP** — one reason to change per module/function. If a name needs "and",
|
|
33
|
+
split it. Remove dead branches, unreachable conditions, and unused params or
|
|
34
|
+
imports before finishing.
|
|
35
|
+
- **DRY** — check for an existing helper/constant before adding one; extract on
|
|
36
|
+
the _third_ occurrence (Rule of Three), not earlier.
|
|
37
|
+
- Prefer a little duplication over the wrong premature abstraction; add no new
|
|
38
|
+
code-quality tooling, patterns, or value-object rules by default.
|
|
39
|
+
|
|
40
|
+
## Completion checklist
|
|
41
|
+
|
|
42
|
+
Change solves the stated problem · relevant validation ran (or gaps explicitly
|
|
43
|
+
stated, see `CHECKS.md`) · no unintended side effects · no secrets added
|
|
44
|
+
|
|
45
|
+
## DOX authoring (keep AGENTS.md lean)
|
|
46
|
+
|
|
47
|
+
AGENTS.md and `.agents/` files share limited context. Bloat and duplication are
|
|
48
|
+
the failure mode — they waste context on every subtree entry and drift apart as
|
|
49
|
+
rules change.
|
|
50
|
+
|
|
51
|
+
### Where a rule lives
|
|
52
|
+
|
|
53
|
+
Ask: **what is the highest (most general) tier that fully applies?** Put the rule
|
|
54
|
+
there and nowhere else.
|
|
55
|
+
|
|
56
|
+
- All code in the project → `.agents/POLICIES.md` (universal) or `CODE.md` (code
|
|
57
|
+
policies). This is the default; when unsure, here.
|
|
58
|
+
- Only inside one subtree (framework-specific template rules) → that subtree's
|
|
59
|
+
`AGENTS.md`.
|
|
60
|
+
- Only navigation → the parent's Child DOX Index, nothing else.
|
|
61
|
+
|
|
62
|
+
### Reference, don't restate
|
|
63
|
+
|
|
64
|
+
A rule appears in **exactly one file**; every other file touching it uses a
|
|
65
|
+
**pointer line** — `<topic> — see <file>`. Never copy the rule, its rationale, or
|
|
66
|
+
its example into a second file.
|
|
67
|
+
|
|
68
|
+
### Rule first, rationale second, never third
|
|
69
|
+
|
|
70
|
+
A DOX line is the rule. If a rationale is costly to rediscover, add one short
|
|
71
|
+
clause. Never multi-paragraph explanations or more than one ❌/✅ pair per rule —
|
|
72
|
+
those belong in a skill or a `docs/` page, linked once.
|
|
73
|
+
|
|
74
|
+
### Content rules
|
|
75
|
+
|
|
76
|
+
- **No tree views** — generate on demand: `rg --files | tree-cli --fromfile`.
|
|
77
|
+
- **No history** — git log has it; record only decisions costly to rediscover,
|
|
78
|
+
in `HISTORY.md` with commit refs.
|
|
79
|
+
- **No TODO lists or trackers** — use beads (`bd`).
|
|
80
|
+
- **Long-form explanation** belongs in `docs/` or a skill: link it, don't inline.
|
|
81
|
+
|
|
82
|
+
### Size budget
|
|
83
|
+
|
|
84
|
+
- `.agents/` files: ≤ **120 lines** (always-injected context).
|
|
85
|
+
- Subtree `AGENTS.md`: ≤ **250 lines** (loaded cumulatively with every parent on
|
|
86
|
+
entry — deep-path cost adds up).
|
|
87
|
+
|
|
88
|
+
Over budget means the doc restates instead of pointing, or hoards rationale. Cut
|
|
89
|
+
first; split the subtree only as a last resort.
|
|
90
|
+
|
|
91
|
+
## Response format
|
|
92
|
+
|
|
93
|
+
Concise and specific. No filler, intros, or restated requirements. Answer direct
|
|
94
|
+
questions directly. For review/debugging/analysis: findings with references,
|
|
95
|
+
conclusion, approach, and caveats.
|
|
96
|
+
|
|
97
|
+
## Project-specific Policies — kompend
|
|
98
|
+
|
|
99
|
+
### Implementation plans
|
|
100
|
+
|
|
101
|
+
- Plans go in `.agents/plans/<feature>/` — gitignored, never committed. Mutable
|
|
102
|
+
working artifacts, not shipped docs. Prefix filenames with phase numbers so
|
|
103
|
+
file order matches implementation order; carry `Created:` and `Status:` lines.
|
|
104
|
+
Shipped docs (user-facing guides, API references) go in `docs/` and ARE
|
|
105
|
+
committed.
|
|
106
|
+
|
|
107
|
+
### Documentation and archiving
|
|
108
|
+
|
|
109
|
+
- `HISTORY.md` over budget → archive older entries to `.agents/history/` with a
|
|
110
|
+
one-line pointer left behind. `.agents/history/` IS version-controlled; it
|
|
111
|
+
holds the durable decision records.
|
|
112
|
+
- Completed plans move to `.agents/history/` as `YYYY-MM-DD-<slug>.md`
|
|
113
|
+
(completion date), with references updated. See `MAINTENANCE.md`.
|
|
114
|
+
|
|
115
|
+
### User Preferences
|
|
116
|
+
|
|
117
|
+
- Concise, direct answers with no filler or intros
|
|
118
|
+
- Use `uv run` for all Python execution, never direct `python` calls
|
|
119
|
+
- English-only for code, docs, and commits; conventional commits (`feat:`, `fix:`,
|
|
120
|
+
`chore:`, `docs:`)
|