logseq-matryca-parser 1.6.0__tar.gz → 1.7.0__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.
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/.cursorignore +15 -15
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/.github/dependabot.yml +2 -2
- logseq_matryca_parser-1.7.0/.github/workflows/ci.yml +83 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/.github/workflows/daily-metrics.yml +5 -5
- logseq_matryca_parser-1.7.0/.github/workflows/pypi_publish.yml +153 -0
- logseq_matryca_parser-1.7.0/AGENTS.md +26 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/CHANGELOG.md +63 -0
- logseq_matryca_parser-1.7.0/CLAUDE.md +26 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/CONTRIBUTING.md +32 -7
- logseq_matryca_parser-1.7.0/Makefile +31 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/PKG-INFO +14 -11
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/README.md +13 -10
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/SECURITY.md +2 -2
- logseq_matryca_parser-1.7.0/claude-skill-logseq-read/SKILL.md +83 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/claude-skill-logseq-read/scripts/parse_logseq.py +21 -21
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/docs/ARCHITECTURE.md +32 -3
- logseq_matryca_parser-1.7.0/docs/BUG_HUNT_REPORT.md +1249 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/docs/CLEAN_CODE_ARCHITECTURE.md +23 -2
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/docs/COOKBOOK.md +23 -1
- logseq_matryca_parser-1.7.0/docs/DOCUMENTATION_SYSTEM.md +297 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/docs/GOOD_FIRST_ISSUES.md +30 -19
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/docs/README.md +40 -0
- logseq_matryca_parser-1.7.0/docs/RELEASE_PROCESS.md +118 -0
- logseq_matryca_parser-1.7.0/docs/REPOSITORY_IMPROVEMENT_STUDY_2026-07-28.md +439 -0
- logseq_matryca_parser-1.7.0/docs/REPOSITORY_STELLAR_ROADMAP_2026-08-06.md +726 -0
- logseq_matryca_parser-1.7.0/docs/decisions/index.md +36 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/docs/design-docs/LOGSEQ_ASSET_RESOLUTION_SPEC.md +104 -104
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/docs/design-docs/LOGSEQ_DATASCRIPT_MAPPING.md +96 -96
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/docs/design-docs/LOGSEQ_TEMPORAL_ONTOLOGY.md +114 -114
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/docs/design-docs/OFFICIAL_MLDOC_SPECS.md +68 -68
- logseq_matryca_parser-1.7.0/docs/index.md +47 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/docs/internal/LOCAL_CODE_STUDY.md +3 -3
- logseq_matryca_parser-1.7.0/docs/log.md +109 -0
- logseq_matryca_parser-1.7.0/docs/maintained.toml +34 -0
- logseq_matryca_parser-1.7.0/docs/quality/ISSUE_RECONCILIATION_2026-08-06.md +119 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/docs/quality/README.md +23 -1
- logseq_matryca_parser-1.7.0/docs/reference/API_STABILITY.md +100 -0
- logseq_matryca_parser-1.7.0/docs/reference/DIAGNOSTICS.md +103 -0
- logseq_matryca_parser-1.7.0/docs/reference/FILESYSTEM_SAFETY.md +89 -0
- logseq_matryca_parser-1.7.0/docs/reference/index.md +55 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/metrics/index.json +1 -1
- logseq_matryca_parser-1.7.0/metrics/quarters/2026-Q3.json +6741 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/pyproject.toml +7 -1
- logseq_matryca_parser-1.7.0/release-bundle/RELEASE_NOTES.md +62 -0
- logseq_matryca_parser-1.7.0/scripts/check_documentation.py +260 -0
- logseq_matryca_parser-1.7.0/scripts/check_release_contract.py +128 -0
- logseq_matryca_parser-1.7.0/scripts/check_vendor_free_docs.sh +20 -0
- logseq_matryca_parser-1.7.0/scripts/check_wheel_contract.py +80 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/src/logseq_matryca_parser/__init__.py +17 -4
- logseq_matryca_parser-1.7.0/src/logseq_matryca_parser/_version.py +3 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/src/logseq_matryca_parser/agent_writer.py +208 -7
- logseq_matryca_parser-1.7.0/src/logseq_matryca_parser/diagnostics.py +127 -0
- logseq_matryca_parser-1.7.0/src/logseq_matryca_parser/exceptions.py +47 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/src/logseq_matryca_parser/graph.py +98 -4
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/src/logseq_matryca_parser/kinetic_commands.py +107 -22
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/src/logseq_matryca_parser/lens.py +7 -5
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/src/logseq_matryca_parser/logos_core.py +20 -19
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/src/logseq_matryca_parser/logos_parser.py +10 -17
- logseq_matryca_parser-1.7.0/src/logseq_matryca_parser/py.typed +1 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/src/logseq_matryca_parser/synapse.py +4 -4
- logseq_matryca_parser-1.7.0/tests/test_check_documentation.py +176 -0
- logseq_matryca_parser-1.7.0/tests/test_check_release_contract.py +85 -0
- logseq_matryca_parser-1.7.0/tests/test_check_wheel_contract.py +58 -0
- logseq_matryca_parser-1.7.0/tests/test_diagnostics.py +100 -0
- logseq_matryca_parser-1.7.0/tests/test_graph_collisions.py +128 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/tests/test_kinetic.py +40 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/tests/test_lens.py +21 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/tests/test_logos_parser.py +1 -1
- logseq_matryca_parser-1.7.0/tests/test_parser_deep_refresh.py +135 -0
- logseq_matryca_parser-1.7.0/tests/test_public_api_contract.py +90 -0
- logseq_matryca_parser-1.7.0/tests/test_quality_gate_contract.py +76 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/tests/test_synapse.py +99 -1
- logseq_matryca_parser-1.7.0/tests/test_writer_security.py +212 -0
- logseq_matryca_parser-1.7.0/tests/typing_samples/public_api.py +12 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/uv.lock +68 -67
- logseq_matryca_parser-1.6.0/.github/workflows/ci.yml +0 -49
- logseq_matryca_parser-1.6.0/.github/workflows/github_release.yml +0 -53
- logseq_matryca_parser-1.6.0/.github/workflows/pypi_publish.yml +0 -61
- logseq_matryca_parser-1.6.0/Makefile +0 -18
- logseq_matryca_parser-1.6.0/claude-skill-logseq-read/SKILL.md +0 -83
- logseq_matryca_parser-1.6.0/docs/BUG_HUNT_REPORT.md +0 -1251
- logseq_matryca_parser-1.6.0/docs/RELEASE_PROCESS.md +0 -85
- logseq_matryca_parser-1.6.0/metrics/quarters/2026-Q3.json +0 -185
- logseq_matryca_parser-1.6.0/scripts/check_vendor_free_docs.sh +0 -16
- logseq_matryca_parser-1.6.0/src/logseq_matryca_parser/exceptions.py +0 -17
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/.cursorrules +0 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/.github/CODEOWNERS +0 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/.github/FUNDING.yml +0 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/.github/ISSUE_TEMPLATE/clean_architecture.yml +0 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/.github/clean_arch_issue_numbers.txt +0 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/.github/labels.yml +0 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/.github/scripts/create_clean_arch_issues.sh +0 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/.github/scripts/create_good_first_issues.sh +0 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/.gitignore +0 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/.pre-commit-config.yaml +0 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/.repomixignore +0 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/CODE_OF_CONDUCT.md +0 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/LICENSE +0 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/NOTICE +0 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/docs/CODEQL.md +0 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/docs/design-docs/ARCHITECTURE_BLUEPRINT.md +0 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/docs/design-docs/CODE_SCAFFOLD.md +0 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/docs/design-docs/README.md +0 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/docs/design-docs/REFERENCE_SPEC.md +0 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/docs/error_log.md +0 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/docs/internal/STATIC_ANALYSIS_POLICY.md +0 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/docs/logseq_ast_primer.md +0 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/docs/quality/CLEAN_ARCH_BACKLOG.md +0 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/docs/quality/GITHUB_CLEAN_ARCH_ROADMAP.md +0 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/docs/quality/ISSUE_TRIAGE_2026-07.md +0 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/docs/rfc/OLLAMA_RAG.md +0 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/docs/roadmaps/ROADMAP_AGENT_NATIVE_XRAY.md +0 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/docs/roadmaps/ROADMAP_CLI_HYDRATION_AND_ENRICHMENT.md +0 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/docs/roadmaps/ROADMAP_CONTEXT_SYNTHESIS_AND_SCOPING.md +0 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/docs/roadmaps/ROADMAP_EMBED_EXPANSION_AND_FLUENT_QUERIES.md +0 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/docs/roadmaps/ROADMAP_GRAPH_RAG_SEMANTICS.md +0 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/docs/roadmaps/ROADMAP_HEADLESS_WRITER.md +0 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/docs/roadmaps/ROADMAP_INCREMENTAL_WATCHER.md +0 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/docs/roadmaps/ROADMAP_INLINE_SHIELD_AND_NAMESPACES.md +0 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/docs/roadmaps/ROADMAP_OBSIDIAN_ADAPTER.md +0 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/docs/roadmaps/ROADMAP_ROBUSTNESS_AND_SOFT_BREAKS.md +0 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/docs/roadmaps/ROADMAP_TOML_FIX_AND_PYPI_DISTRIBUTION.md +0 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/docs/roadmaps/ROADMAP_UUID_AND_GRAPH_SUPERPOWERS.md +0 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/examples/demo_logseq_journal.md +0 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/examples/run_demo.py +0 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/legacy/local_digestor.py +0 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/lib/bindings/utils.js +0 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/lib/tom-select/tom-select.complete.min.js +0 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/lib/tom-select/tom-select.css +0 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/lib/vis-9.1.2/vis-network.css +0 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/lib/vis-9.1.2/vis-network.min.js +0 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/metrics/quarters/2026-Q2.json +0 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/repomix-output-parser.xml +0 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/scripts/__init__.py +0 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/scripts/archive_repository_metrics.py +0 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/scripts/debug_pre_release.py +0 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/scripts/extract_changelog.py +0 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/src/logseq_matryca_parser/.gitignore +0 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/src/logseq_matryca_parser/NOTICE +0 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/src/logseq_matryca_parser/__main__.py +0 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/src/logseq_matryca_parser/agent_press.py +0 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/src/logseq_matryca_parser/forge.py +0 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/src/logseq_matryca_parser/kinetic.py +0 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/src/logseq_matryca_parser/kinetic_export.py +0 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/src/logseq_matryca_parser/logseq_markdown.py +0 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/src/logseq_matryca_parser/logseq_paths.py +0 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/src/logseq_matryca_parser/pyproject.toml +0 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/src/logseq_matryca_parser/synapse_embed.py +0 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/tests/test_agent_press.py +0 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/tests/test_agent_writer.py +0 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/tests/test_archive_repository_metrics.py +0 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/tests/test_exceptions.py +0 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/tests/test_extract_changelog.py +0 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/tests/test_forge.py +0 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/tests/test_graph.py +0 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/tests/test_layer_boundary.py +0 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/tests/test_logseq_markdown.py +0 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/tests/test_logseq_paths.py +0 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/tests/test_package_version.py +0 -0
- {logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/tests/test_pre_release_roundtrip.py +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# .cursorignore
|
|
2
|
-
#
|
|
2
|
+
# Note: Cursor already ignores everything listed in .gitignore.
|
|
3
3
|
|
|
4
4
|
# =========================
|
|
5
5
|
# Python & Virtual Environments
|
|
@@ -27,10 +27,10 @@ build/
|
|
|
27
27
|
*.egg-info/
|
|
28
28
|
|
|
29
29
|
# =========================
|
|
30
|
-
# Lockfiles (
|
|
30
|
+
# Lockfiles (harmful to codebase indexing)
|
|
31
31
|
# =========================
|
|
32
|
-
#
|
|
33
|
-
#
|
|
32
|
+
# Lockfiles belong in Git, but the AI should never read them because they are
|
|
33
|
+
# only a wall of dependency versions with no useful semantic context.
|
|
34
34
|
poetry.lock
|
|
35
35
|
uv.lock
|
|
36
36
|
package-lock.json
|
|
@@ -38,36 +38,36 @@ yarn.lock
|
|
|
38
38
|
pnpm-lock.yaml
|
|
39
39
|
|
|
40
40
|
# =========================
|
|
41
|
-
#
|
|
41
|
+
# AI Outputs and Reports (avoid context loops)
|
|
42
42
|
# =========================
|
|
43
|
-
#
|
|
43
|
+
# If an output is committed accidentally, keep it out of the code index.
|
|
44
44
|
repomix-output.*
|
|
45
45
|
output_langchain/
|
|
46
46
|
mappa_cervello.html
|
|
47
47
|
|
|
48
48
|
# =========================
|
|
49
|
-
#
|
|
49
|
+
# Test Data and Mock Fixtures
|
|
50
50
|
# =========================
|
|
51
|
-
#
|
|
52
|
-
#
|
|
51
|
+
# Large Markdown or JSON fixtures may belong in Git for parser tests, but they
|
|
52
|
+
# should not consume indexing context.
|
|
53
53
|
tests/fixtures/*.json
|
|
54
54
|
tests/fixtures/*.edn
|
|
55
55
|
tests/fixtures/*.md
|
|
56
56
|
*.csv
|
|
57
57
|
|
|
58
58
|
# =========================
|
|
59
|
-
# Assets
|
|
59
|
+
# Vector Assets
|
|
60
60
|
# =========================
|
|
61
|
-
#
|
|
62
|
-
#
|
|
61
|
+
# PNG and JPG files are ignored automatically, while SVG files are text and can
|
|
62
|
+
# add thousands of irrelevant coordinate values to the index.
|
|
63
63
|
*.svg
|
|
64
64
|
|
|
65
65
|
# =========================
|
|
66
|
-
#
|
|
66
|
+
# Editor Configuration Files
|
|
67
67
|
# =========================
|
|
68
68
|
.vscode/
|
|
69
69
|
.idea/
|
|
70
70
|
.clinerules
|
|
71
71
|
|
|
72
|
-
#
|
|
73
|
-
metrics/history.json
|
|
72
|
+
# Exclude historical metrics to preserve LLM context.
|
|
73
|
+
metrics/history.json
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
version: 2
|
|
2
2
|
updates:
|
|
3
|
-
#
|
|
3
|
+
# Keep Python dependencies current (reads pyproject.toml).
|
|
4
4
|
- package-ecosystem: "pip"
|
|
5
5
|
directory: "/"
|
|
6
6
|
schedule:
|
|
7
7
|
interval: "weekly"
|
|
8
8
|
|
|
9
|
-
#
|
|
9
|
+
# Keep GitHub Actions current (reads .github/workflows/ci.yml).
|
|
10
10
|
- package-ecosystem: "github-actions"
|
|
11
11
|
directory: "/"
|
|
12
12
|
schedule:
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
name: Logos Protocol CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [ "main" ]
|
|
6
|
+
pull_request:
|
|
7
|
+
|
|
8
|
+
concurrency:
|
|
9
|
+
group: ${{ github.workflow }}-${{ github.ref }}
|
|
10
|
+
cancel-in-progress: true
|
|
11
|
+
|
|
12
|
+
permissions:
|
|
13
|
+
contents: read
|
|
14
|
+
|
|
15
|
+
jobs:
|
|
16
|
+
build:
|
|
17
|
+
runs-on: ubuntu-latest
|
|
18
|
+
strategy:
|
|
19
|
+
fail-fast: false
|
|
20
|
+
matrix:
|
|
21
|
+
python-version: [ "3.12", "3.13" ]
|
|
22
|
+
|
|
23
|
+
steps:
|
|
24
|
+
- name: Checkout Code
|
|
25
|
+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
26
|
+
|
|
27
|
+
- name: Install uv
|
|
28
|
+
uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0
|
|
29
|
+
with:
|
|
30
|
+
python-version: ${{ matrix.python-version }}
|
|
31
|
+
enable-cache: true
|
|
32
|
+
|
|
33
|
+
- name: Sync dependencies
|
|
34
|
+
run: uv sync --all-extras
|
|
35
|
+
|
|
36
|
+
- name: Audit dependencies
|
|
37
|
+
run: |
|
|
38
|
+
uv export --no-dev --no-emit-workspace --no-hashes -o "${{ runner.temp }}/requirements-audit.txt"
|
|
39
|
+
uv run pip-audit -r "${{ runner.temp }}/requirements-audit.txt"
|
|
40
|
+
|
|
41
|
+
- name: Lint
|
|
42
|
+
run: make lint
|
|
43
|
+
|
|
44
|
+
- name: Type check
|
|
45
|
+
run: make check
|
|
46
|
+
|
|
47
|
+
- name: Test
|
|
48
|
+
run: make test
|
|
49
|
+
|
|
50
|
+
- name: Documentation check (non-mutating)
|
|
51
|
+
run: make docs-check
|
|
52
|
+
|
|
53
|
+
- name: Verify checkout unchanged
|
|
54
|
+
run: make verify-clean
|
|
55
|
+
|
|
56
|
+
package-contract:
|
|
57
|
+
runs-on: ubuntu-latest
|
|
58
|
+
|
|
59
|
+
steps:
|
|
60
|
+
- name: Checkout Code
|
|
61
|
+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
62
|
+
|
|
63
|
+
- name: Install uv
|
|
64
|
+
uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0
|
|
65
|
+
with:
|
|
66
|
+
python-version: "3.12"
|
|
67
|
+
enable-cache: true
|
|
68
|
+
|
|
69
|
+
- name: Build wheel and source distribution
|
|
70
|
+
run: uv build --out-dir dist-contract
|
|
71
|
+
|
|
72
|
+
- name: Verify wheel metadata and PEP 561 marker
|
|
73
|
+
run: uv run python scripts/check_wheel_contract.py dist-contract/*.whl
|
|
74
|
+
|
|
75
|
+
- name: Verify distribution metadata
|
|
76
|
+
run: uvx --from twine==6.2.0 twine check dist-contract/*
|
|
77
|
+
|
|
78
|
+
- name: Verify downstream typing from the wheel
|
|
79
|
+
run: |
|
|
80
|
+
uv venv "${{ runner.temp }}/typing-venv"
|
|
81
|
+
uv pip install --python "${{ runner.temp }}/typing-venv/bin/python" mypy dist-contract/*.whl
|
|
82
|
+
cd "${{ runner.temp }}"
|
|
83
|
+
"${{ runner.temp }}/typing-venv/bin/python" -m mypy --strict "${{ github.workspace }}/tests/typing_samples/public_api.py"
|
{logseq_matryca_parser-1.6.0 → logseq_matryca_parser-1.7.0}/.github/workflows/daily-metrics.yml
RENAMED
|
@@ -2,8 +2,8 @@ name: Daily Metrics Saver
|
|
|
2
2
|
|
|
3
3
|
on:
|
|
4
4
|
schedule:
|
|
5
|
-
- cron: '0 3 * * *' #
|
|
6
|
-
workflow_dispatch: #
|
|
5
|
+
- cron: '0 3 * * *' # Runs daily at 03:00 UTC.
|
|
6
|
+
workflow_dispatch: # Allows one-click manual runs.
|
|
7
7
|
|
|
8
8
|
concurrency:
|
|
9
9
|
group: daily-metrics-${{ github.repository }}
|
|
@@ -13,7 +13,7 @@ permissions:
|
|
|
13
13
|
contents: write
|
|
14
14
|
|
|
15
15
|
env:
|
|
16
|
-
#
|
|
16
|
+
# Force the Node.js 24 runtime to prevent the June 2026 deprecation warnings.
|
|
17
17
|
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
|
|
18
18
|
|
|
19
19
|
jobs:
|
|
@@ -21,12 +21,12 @@ jobs:
|
|
|
21
21
|
runs-on: ubuntu-latest
|
|
22
22
|
steps:
|
|
23
23
|
- name: Checkout Repository
|
|
24
|
-
uses: actions/checkout@v7
|
|
24
|
+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
25
25
|
with:
|
|
26
26
|
fetch-depth: 0
|
|
27
27
|
|
|
28
28
|
- name: Set up Python
|
|
29
|
-
uses: actions/setup-python@
|
|
29
|
+
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
|
|
30
30
|
with:
|
|
31
31
|
python-version: '3.12'
|
|
32
32
|
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
name: Release
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
tags:
|
|
6
|
+
- "v*"
|
|
7
|
+
|
|
8
|
+
concurrency:
|
|
9
|
+
group: release-${{ github.ref }}
|
|
10
|
+
cancel-in-progress: false
|
|
11
|
+
|
|
12
|
+
permissions:
|
|
13
|
+
contents: read
|
|
14
|
+
|
|
15
|
+
jobs:
|
|
16
|
+
pre-flight:
|
|
17
|
+
name: Pre-flight checks (Python ${{ matrix.python-version }})
|
|
18
|
+
runs-on: ubuntu-latest
|
|
19
|
+
strategy:
|
|
20
|
+
fail-fast: false
|
|
21
|
+
matrix:
|
|
22
|
+
python-version: ["3.12", "3.13"]
|
|
23
|
+
steps:
|
|
24
|
+
- name: Checkout exact tag
|
|
25
|
+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
26
|
+
|
|
27
|
+
- name: Install uv
|
|
28
|
+
uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0
|
|
29
|
+
with:
|
|
30
|
+
python-version: ${{ matrix.python-version }}
|
|
31
|
+
enable-cache: true
|
|
32
|
+
|
|
33
|
+
- name: Sync locked dependencies
|
|
34
|
+
run: uv sync --locked --all-extras
|
|
35
|
+
|
|
36
|
+
- name: Audit production dependencies
|
|
37
|
+
run: |
|
|
38
|
+
uv export --no-dev --no-emit-workspace --no-hashes -o "${{ runner.temp }}/requirements-audit.txt"
|
|
39
|
+
uv run pip-audit -r "${{ runner.temp }}/requirements-audit.txt"
|
|
40
|
+
|
|
41
|
+
- name: Run full quality gate
|
|
42
|
+
run: make all
|
|
43
|
+
|
|
44
|
+
- name: Verify checkout unchanged
|
|
45
|
+
run: make verify-clean
|
|
46
|
+
|
|
47
|
+
build:
|
|
48
|
+
name: Build immutable release bundle
|
|
49
|
+
needs: pre-flight
|
|
50
|
+
runs-on: ubuntu-latest
|
|
51
|
+
steps:
|
|
52
|
+
- name: Checkout exact tag
|
|
53
|
+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
54
|
+
with:
|
|
55
|
+
fetch-depth: 0
|
|
56
|
+
|
|
57
|
+
- name: Install uv
|
|
58
|
+
uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0
|
|
59
|
+
with:
|
|
60
|
+
python-version: "3.12"
|
|
61
|
+
enable-cache: true
|
|
62
|
+
|
|
63
|
+
- name: Sync locked dependencies
|
|
64
|
+
run: uv sync --locked --all-extras
|
|
65
|
+
|
|
66
|
+
- name: Verify tag, source, runtime, and release notes
|
|
67
|
+
run: |
|
|
68
|
+
uv run python scripts/check_release_contract.py \
|
|
69
|
+
--tag "${GITHUB_REF_NAME}" \
|
|
70
|
+
--notes-out release-bundle/RELEASE_NOTES.md
|
|
71
|
+
|
|
72
|
+
- name: Build wheel and source distribution once
|
|
73
|
+
run: uv build --out-dir release-bundle/dist
|
|
74
|
+
|
|
75
|
+
- name: Verify wheel and package metadata
|
|
76
|
+
run: |
|
|
77
|
+
wheel_count=0
|
|
78
|
+
for wheel in release-bundle/dist/*.whl; do
|
|
79
|
+
uv run python scripts/check_wheel_contract.py "$wheel"
|
|
80
|
+
wheel_count=$((wheel_count + 1))
|
|
81
|
+
done
|
|
82
|
+
test "$wheel_count" -eq 1
|
|
83
|
+
uvx --from twine==6.2.0 twine check release-bundle/dist/*
|
|
84
|
+
|
|
85
|
+
- name: Record and verify distribution digests
|
|
86
|
+
working-directory: release-bundle
|
|
87
|
+
run: |
|
|
88
|
+
sha256sum dist/* > SHA256SUMS
|
|
89
|
+
sha256sum --check SHA256SUMS
|
|
90
|
+
|
|
91
|
+
- name: Upload immutable release bundle
|
|
92
|
+
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
|
|
93
|
+
with:
|
|
94
|
+
name: release-bundle-${{ github.ref_name }}
|
|
95
|
+
path: release-bundle/
|
|
96
|
+
if-no-files-found: error
|
|
97
|
+
retention-days: 30
|
|
98
|
+
compression-level: 0
|
|
99
|
+
|
|
100
|
+
publish:
|
|
101
|
+
name: Publish exact distributions to PyPI
|
|
102
|
+
needs: build
|
|
103
|
+
runs-on: ubuntu-latest
|
|
104
|
+
environment:
|
|
105
|
+
name: pypi
|
|
106
|
+
url: https://pypi.org/p/logseq-matryca-parser
|
|
107
|
+
permissions:
|
|
108
|
+
contents: read
|
|
109
|
+
id-token: write
|
|
110
|
+
steps:
|
|
111
|
+
- name: Download immutable release bundle
|
|
112
|
+
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
|
|
113
|
+
with:
|
|
114
|
+
name: release-bundle-${{ github.ref_name }}
|
|
115
|
+
path: release-bundle
|
|
116
|
+
|
|
117
|
+
- name: Verify distribution digests
|
|
118
|
+
working-directory: release-bundle
|
|
119
|
+
run: sha256sum --check SHA256SUMS
|
|
120
|
+
|
|
121
|
+
- name: Publish package distributions with OIDC attestations
|
|
122
|
+
uses: pypa/gh-action-pypi-publish@cef221092ed1bacb1cc03d23a2d87d1d172e277b # v1.14.0
|
|
123
|
+
with:
|
|
124
|
+
packages-dir: release-bundle/dist/
|
|
125
|
+
|
|
126
|
+
github-release:
|
|
127
|
+
name: Publish GitHub Release from exact distributions
|
|
128
|
+
needs: publish
|
|
129
|
+
runs-on: ubuntu-latest
|
|
130
|
+
permissions:
|
|
131
|
+
contents: write
|
|
132
|
+
steps:
|
|
133
|
+
- name: Download immutable release bundle
|
|
134
|
+
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
|
|
135
|
+
with:
|
|
136
|
+
name: release-bundle-${{ github.ref_name }}
|
|
137
|
+
path: release-bundle
|
|
138
|
+
|
|
139
|
+
- name: Verify distribution digests
|
|
140
|
+
working-directory: release-bundle
|
|
141
|
+
run: sha256sum --check SHA256SUMS
|
|
142
|
+
|
|
143
|
+
- name: Create GitHub Release with verified artifacts
|
|
144
|
+
uses: softprops/action-gh-release@b4309332981a82ec1c5618f44dd2e27cc8bfbfda # v3.0.0
|
|
145
|
+
with:
|
|
146
|
+
tag_name: ${{ github.ref_name }}
|
|
147
|
+
name: ${{ github.ref_name }}
|
|
148
|
+
body_path: release-bundle/RELEASE_NOTES.md
|
|
149
|
+
files: |
|
|
150
|
+
release-bundle/dist/*
|
|
151
|
+
release-bundle/SHA256SUMS
|
|
152
|
+
generate_release_notes: false
|
|
153
|
+
make_latest: true
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# Audit code — maintainer intelligence
|
|
2
|
+
|
|
3
|
+
Maintainers may use **audit code** (local graph-based static analysis) to understand call chains, blast radius, and import cycles before structural work. **Do not** name specific third-party indexer products anywhere in this repository (issues, PRs, CHANGELOG, public docs, or agent config).
|
|
4
|
+
|
|
5
|
+
## Always do
|
|
6
|
+
|
|
7
|
+
- Run **impact analysis** before editing hub symbols (`StackMachineParser._refresh_node`, `_expand_macros_and_embeds_impl`, `LogseqGraph.load_directory`, `invalidate_and_reload_page`).
|
|
8
|
+
- Use **query** / **context** for cross-module flows instead of guessing from grep alone.
|
|
9
|
+
- Run `check(cycles)` — expect **0** import cycles in `src/`.
|
|
10
|
+
- Run `make all` (and `make vendor-name-check`) after behavior or documentation changes.
|
|
11
|
+
|
|
12
|
+
## Never do
|
|
13
|
+
|
|
14
|
+
- NEVER add vendor AST indexers to CI, Dockerfiles, or `pyproject.toml`.
|
|
15
|
+
- NEVER ignore **HIGH** or **CRITICAL** impact warnings on parser/graph hubs without explicit user approval.
|
|
16
|
+
- NEVER commit tool-specific cache directories — use `.git/info/exclude` locally (Ghost Tooling policy).
|
|
17
|
+
|
|
18
|
+
## SSOT
|
|
19
|
+
|
|
20
|
+
| Document | Purpose |
|
|
21
|
+
|----------|---------|
|
|
22
|
+
| [`docs/CLEAN_CODE_ARCHITECTURE.md`](docs/CLEAN_CODE_ARCHITECTURE.md) | Uncle Bob rings, SOLID, public graph APIs |
|
|
23
|
+
| [`docs/internal/LOCAL_CODE_STUDY.md`](docs/internal/LOCAL_CODE_STUDY.md) | Maintainer audit-code runbook (generic MCP surface) |
|
|
24
|
+
| [`docs/internal/STATIC_ANALYSIS_POLICY.md`](docs/internal/STATIC_ANALYSIS_POLICY.md) | Ghost Tooling policy |
|
|
25
|
+
|
|
26
|
+
When the maintainer instructs you to use audit code tooling, follow their workflow — do not document product names in artifacts.
|
|
@@ -7,6 +7,69 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [1.7.0] - 2026-08-08
|
|
11
|
+
|
|
12
|
+
Minor release — structured diagnostics, deterministic title-collision handling,
|
|
13
|
+
arbitrary-depth parser refreshes, typed public APIs, vault-bound writer safety,
|
|
14
|
+
and a governed English documentation system. **No intentional breaking changes**
|
|
15
|
+
to stable package exports or default CLI behavior.
|
|
16
|
+
|
|
17
|
+
### Added
|
|
18
|
+
|
|
19
|
+
- **Verified immutable release pipeline** — tag, source, runtime, and changelog
|
|
20
|
+
contracts now fail closed before packaging; Python 3.12/3.13 pre-flight runs
|
|
21
|
+
the full quality and dependency-audit gates; wheel and sdist are built once,
|
|
22
|
+
checked with Twine, checksummed, published to PyPI with OIDC attestations, and
|
|
23
|
+
attached byte-for-byte to the GitHub Release
|
|
24
|
+
([#105](https://github.com/MarcoPorcellato/logseq-matryca-parser/issues/105)).
|
|
25
|
+
|
|
26
|
+
- **Structured diagnostic foundation** — stable immutable `Diagnostic`,
|
|
27
|
+
`DiagnosticCode`, and `DiagnosticSeverity` exports; deterministic
|
|
28
|
+
`collect_graph_diagnostics()` for broken block references; vault-relative
|
|
29
|
+
path enforcement; and pure JSON CLI output through `scan --diagnostics-json`
|
|
30
|
+
([#110](https://github.com/MarcoPorcellato/logseq-matryca-parser/issues/110)).
|
|
31
|
+
- **Graph title-collision contract** — permissive loading now exposes stable
|
|
32
|
+
diagnostics for derived-title, frontmatter-title, and alias collisions while
|
|
33
|
+
preserving the existing deterministic winner and no-ghost invariants;
|
|
34
|
+
`strict_title_collisions=True` raises `PageTitleCollisionError`, and KINETIC
|
|
35
|
+
renders all findings with `scan --diagnostics`
|
|
36
|
+
([#102](https://github.com/MarcoPorcellato/logseq-matryca-parser/issues/102)).
|
|
37
|
+
- **Documentation system guide** — [`docs/DOCUMENTATION_SYSTEM.md`](docs/DOCUMENTATION_SYSTEM.md) explains source authority, maintained versus historical surfaces, metadata, freshness, validation, the Matryca Knowledge projection workflow, and the repository's documentation evolution.
|
|
38
|
+
- **Synapse RAG example** — [`examples/run_synapse_rag.py`](examples/run_synapse_rag.py) demonstrates all four `SynapseAdapter` methods (`to_langchain_documents`, `to_llamaindex_nodes`, `to_context_enriched_chunks`, `_expand_macros_and_embeds`) plus table-driven embed expansion edge cases.
|
|
39
|
+
- **Embed expansion edge-case tests** — `TestEmbedExpansionEdgeCases` in [`tests/test_synapse.py`](tests/test_synapse.py) covers cycles, missing targets, and happy-path for both `{{embed [[Page]]}}` and `{{embed ((uuid))}}` (closes [#71](https://github.com/MarcoPorcellato/logseq-matryca-parser/issues/71)).
|
|
40
|
+
- **Contributor onboarding (wave 4)** — ten new Good First Issues (GFI-39…GFI-48) filed on GitHub ([#88](https://github.com/MarcoPorcellato/logseq-matryca-parser/issues/88)–[#97](https://github.com/MarcoPorcellato/logseq-matryca-parser/issues/97)); index updated in [`docs/GOOD_FIRST_ISSUES.md`](docs/GOOD_FIRST_ISSUES.md).
|
|
41
|
+
|
|
42
|
+
### Changed
|
|
43
|
+
|
|
44
|
+
- **Immutable workflow dependencies** — all release and CI actions are pinned to
|
|
45
|
+
reviewed commit SHAs with readable release comments; the former independent
|
|
46
|
+
GitHub and PyPI tag workflows are consolidated into one ordered release graph.
|
|
47
|
+
|
|
48
|
+
- **Federated documentation profile** — aligned the maintained bundle with Matryca Knowledge `origin/main` at `7a3ebd8`, separating OKF lifecycle from Matryca classification and recording authority, freshness, provenance, and the still-pending private registry activation.
|
|
49
|
+
- **Ghost Tooling** — removed remaining vendor indexer blocks from `AGENTS.md` / `CLAUDE.md`; maintainer guidance now uses **audit code** terminology only.
|
|
50
|
+
- **Repository language** — translated the historical audit reports, design references, Logseq Read skill, maintainer configuration comments, parser warning, demo labels, and optional SYNAPSE dependency errors into English; contributor guidance now makes English the repository default ([#69](https://github.com/MarcoPorcellato/logseq-matryca-parser/issues/69)).
|
|
51
|
+
- **Documentation quality tranche** — added `scripts/check_documentation.py`, source `docs/maintained.toml`, and focused tests; wired the deterministic, non-mutating `docs-check` into `make all` and CI. This implements the source-side MKQ-3 gate; MKQ-4 remains pending until private `okf_entry_points` and projection activation pass against the merged source commit.
|
|
52
|
+
|
|
53
|
+
### Fixed
|
|
54
|
+
|
|
55
|
+
- **Vault-bound writer and asset reads** — headless child writes now reject
|
|
56
|
+
external/untracked/symlink-swapped targets, verify target identity before
|
|
57
|
+
replacement, preserve permission and ownership metadata, expose typed safe
|
|
58
|
+
diagnostics and configurable limits, and support unified-diff dry runs;
|
|
59
|
+
`file://` and asset symlink reads are confined to the graph
|
|
60
|
+
([#106](https://github.com/MarcoPorcellato/logseq-matryca-parser/issues/106)).
|
|
61
|
+
- **Deep parser refreshes** — immutable node updates now rebuild the complete
|
|
62
|
+
active branch to the root at arbitrary nesting depth, preserving soft breaks,
|
|
63
|
+
properties, fenced code, queries, list properties, ordering, identity, and
|
|
64
|
+
parent/left relationships ([#113](https://github.com/MarcoPorcellato/logseq-matryca-parser/issues/113)).
|
|
65
|
+
- **LENS topology** — unresolved wikilinks no longer create phantom page nodes when visualization uses a loaded `LogseqGraph`; valid page aliases and tags remain visible ([#59](https://github.com/MarcoPorcellato/logseq-matryca-parser/issues/59)).
|
|
66
|
+
|
|
67
|
+
### Security
|
|
68
|
+
|
|
69
|
+
- **Artifact lineage** — PyPI publication must succeed before the GitHub Release
|
|
70
|
+
is created, and every consumer re-verifies the SHA-256 manifest for the exact
|
|
71
|
+
distributions produced by the single build job.
|
|
72
|
+
|
|
10
73
|
## [1.6.0] - 2026-07-02
|
|
11
74
|
|
|
12
75
|
Minor release — Clean Architecture v1 structural slices (SRP/OCP), new public graph APIs, layer-boundary CI, and documentation SSOT. **No intentional breaking changes** to existing `matryca-parse` CLI behavior or stable package exports.
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# Audit code — maintainer intelligence
|
|
2
|
+
|
|
3
|
+
Maintainers may use **audit code** (local graph-based static analysis) to understand call chains, blast radius, and import cycles before structural work. **Do not** name specific third-party indexer products anywhere in this repository (issues, PRs, CHANGELOG, public docs, or agent config).
|
|
4
|
+
|
|
5
|
+
## Always do
|
|
6
|
+
|
|
7
|
+
- Run **impact analysis** before editing hub symbols (`StackMachineParser._refresh_node`, `_expand_macros_and_embeds_impl`, `LogseqGraph.load_directory`, `invalidate_and_reload_page`).
|
|
8
|
+
- Use **query** / **context** for cross-module flows instead of guessing from grep alone.
|
|
9
|
+
- Run `check(cycles)` — expect **0** import cycles in `src/`.
|
|
10
|
+
- Run `make all` (and `make vendor-name-check`) after behavior or documentation changes.
|
|
11
|
+
|
|
12
|
+
## Never do
|
|
13
|
+
|
|
14
|
+
- NEVER add vendor AST indexers to CI, Dockerfiles, or `pyproject.toml`.
|
|
15
|
+
- NEVER ignore **HIGH** or **CRITICAL** impact warnings on parser/graph hubs without explicit user approval.
|
|
16
|
+
- NEVER commit tool-specific cache directories — use `.git/info/exclude` locally (Ghost Tooling policy).
|
|
17
|
+
|
|
18
|
+
## SSOT
|
|
19
|
+
|
|
20
|
+
| Document | Purpose |
|
|
21
|
+
|----------|---------|
|
|
22
|
+
| [`docs/CLEAN_CODE_ARCHITECTURE.md`](docs/CLEAN_CODE_ARCHITECTURE.md) | Uncle Bob rings, SOLID, public graph APIs |
|
|
23
|
+
| [`docs/internal/LOCAL_CODE_STUDY.md`](docs/internal/LOCAL_CODE_STUDY.md) | Maintainer audit-code runbook (generic MCP surface) |
|
|
24
|
+
| [`docs/internal/STATIC_ANALYSIS_POLICY.md`](docs/internal/STATIC_ANALYSIS_POLICY.md) | Ghost Tooling policy |
|
|
25
|
+
|
|
26
|
+
When the maintainer instructs you to use audit code tooling, follow their workflow — do not document product names in artifacts.
|
|
@@ -17,18 +17,32 @@ User-facing behavior is documented in:
|
|
|
17
17
|
- [`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md) — LOGOS, SYNAPSE, `LogseqGraph`, agents, and data flow
|
|
18
18
|
- [`docs/internal/LOCAL_CODE_STUDY.md`](docs/internal/LOCAL_CODE_STUDY.md) — maintainer local code audit runbook (not for public issues/CHANGELOG)
|
|
19
19
|
- [`docs/logseq_ast_primer.md`](docs/logseq_ast_primer.md) — Logseq Spatial Markdown domain rules
|
|
20
|
-
- [`CHANGELOG.md`](CHANGELOG.md) — shipped releases (current: **1.
|
|
20
|
+
- [`CHANGELOG.md`](CHANGELOG.md) — shipped releases (current: **1.7.0**) and **Unreleased** changes (Keep a Changelog)
|
|
21
21
|
- [`docs/RELEASE_PROCESS.md`](docs/RELEASE_PROCESS.md) — version bump, tag, and PyPI publish checklist
|
|
22
22
|
- [`docs/CODEQL.md`](docs/CODEQL.md) — CodeQL default setup (no custom `codeql.yml`)
|
|
23
23
|
- [`docs/GOOD_FIRST_ISSUES.md`](docs/GOOD_FIRST_ISSUES.md) — curated starter tasks for new contributors
|
|
24
24
|
- [`docs/COOKBOOK.md`](docs/COOKBOOK.md) — integration recipes (Synapse, graph query, watcher)
|
|
25
25
|
- [`docs/README.md`](docs/README.md) — documentation index (active vs historical)
|
|
26
|
+
- [`docs/DOCUMENTATION_SYSTEM.md`](docs/DOCUMENTATION_SYSTEM.md) — documentation authority, metadata, lifecycle, validation, and federation workflow
|
|
26
27
|
- [`docs/rfc/OLLAMA_RAG.md`](docs/rfc/OLLAMA_RAG.md) — draft RFC for Ollama local RAG ([#34](https://github.com/MarcoPorcellato/logseq-matryca-parser/issues/34))
|
|
27
28
|
- [`docs/quality/`](docs/quality/) — architecture backlog, GitHub roadmap (v1.6), triage
|
|
28
29
|
- [`docs/internal/STATIC_ANALYSIS_POLICY.md`](docs/internal/STATIC_ANALYSIS_POLICY.md) — Ghost Tooling policy (vendor-agnostic CI and public docs)
|
|
29
30
|
|
|
30
31
|
When you add or change observable parser or graph behavior, update the relevant doc sections and add a bullet under **`## [Unreleased]`** in `CHANGELOG.md` (see [`.cursor/rules/05-auto-changelog.mdc`](.cursor/rules/05-auto-changelog.mdc)).
|
|
31
32
|
|
|
33
|
+
For documentation changes, first classify the target as maintained, active,
|
|
34
|
+
historical, or generated. Follow the metadata, freshness, supersession, and
|
|
35
|
+
projection rules in [`docs/DOCUMENTATION_SYSTEM.md`](docs/DOCUMENTATION_SYSTEM.md).
|
|
36
|
+
|
|
37
|
+
### Repository language
|
|
38
|
+
|
|
39
|
+
Use English for documentation, changelog entries, issue and pull-request text,
|
|
40
|
+
code comments, log messages, CLI help, and maintainer-facing configuration.
|
|
41
|
+
Non-English text is appropriate only when it is the data under test, a quoted
|
|
42
|
+
source title, or an intentionally localized runtime fixture. Generated repository
|
|
43
|
+
packs are read-only snapshots: regenerate them from their source files instead of
|
|
44
|
+
editing their embedded copies.
|
|
45
|
+
|
|
32
46
|
### Tooling policy
|
|
33
47
|
|
|
34
48
|
CI and automation in this repository are limited to the core runtime and standard open-source linters (Ruff, Mypy, Pytest, CodeQL). Do not add third-party AST indexers, experimental analysis scripts, or custom MCP servers to the public tree, workflows, or `pyproject.toml`. See [`docs/internal/STATIC_ANALYSIS_POLICY.md`](docs/internal/STATIC_ANALYSIS_POLICY.md).
|
|
@@ -140,27 +154,38 @@ git checkout -b feat/add-html-exporter
|
|
|
140
154
|
|
|
141
155
|
### 4. Code Quality & Linting (Mandatory)
|
|
142
156
|
|
|
143
|
-
CI runs the same
|
|
157
|
+
CI runs the same non-mutating checks as your local environment: `uv sync
|
|
158
|
+
--all-extras`, then `make lint`, `make check`, `make test`, and
|
|
159
|
+
`make docs-check`. It finishes with `make verify-clean` to prove that no quality
|
|
160
|
+
step changed the submitted checkout. Before committing, run the full local gate:
|
|
144
161
|
|
|
145
162
|
```bash
|
|
146
163
|
make all
|
|
147
164
|
```
|
|
148
165
|
|
|
149
|
-
|
|
166
|
+
`make all` runs the current pytest suite with a **≥80%** line-coverage gate on
|
|
167
|
+
`src/logseq_matryca_parser`, plus the vendor-neutral documentation check. Exact
|
|
168
|
+
counts are intentionally not duplicated here; see the dated
|
|
169
|
+
[repository audit](docs/REPOSITORY_STELLAR_ROADMAP_2026-08-06.md) for a verified
|
|
170
|
+
snapshot. New contributors should mirror patterns in
|
|
171
|
+
[`docs/GOOD_FIRST_ISSUES.md`](docs/GOOD_FIRST_ISSUES.md).
|
|
150
172
|
|
|
151
173
|
Or run each step individually:
|
|
152
174
|
|
|
153
175
|
```bash
|
|
154
|
-
make lint # Ruff
|
|
155
|
-
make check # Mypy on src/, tests/, examples
|
|
176
|
+
make lint # Ruff verification; never rewrites files
|
|
177
|
+
make check # Mypy on src/, tests/, examples/, and the documentation checker
|
|
156
178
|
make test # Pytest on tests/
|
|
157
179
|
```
|
|
158
180
|
|
|
181
|
+
When you explicitly want Ruff to repair local lint findings, use
|
|
182
|
+
`make lint-fix`, inspect the resulting diff, and rerun `make all`.
|
|
183
|
+
|
|
159
184
|
Equivalent `uv run` invocations:
|
|
160
185
|
|
|
161
186
|
```bash
|
|
162
|
-
uv run ruff check .
|
|
163
|
-
uv run mypy src/ tests/ examples/
|
|
187
|
+
uv run ruff check .
|
|
188
|
+
uv run mypy src/ tests/ examples/ scripts/check_documentation.py
|
|
164
189
|
uv run pytest -v tests/
|
|
165
190
|
```
|
|
166
191
|
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
.PHONY: all lint lint-fix check test build vendor-name-check docs-check verify-clean
|
|
2
|
+
|
|
3
|
+
all: lint check vendor-name-check docs-check test
|
|
4
|
+
|
|
5
|
+
lint:
|
|
6
|
+
uv run ruff check .
|
|
7
|
+
|
|
8
|
+
lint-fix:
|
|
9
|
+
uv run ruff check . --fix
|
|
10
|
+
|
|
11
|
+
check:
|
|
12
|
+
uv run mypy src/ tests/ examples/ scripts/check_documentation.py scripts/check_release_contract.py scripts/check_wheel_contract.py
|
|
13
|
+
|
|
14
|
+
vendor-name-check:
|
|
15
|
+
bash scripts/check_vendor_free_docs.sh
|
|
16
|
+
|
|
17
|
+
test:
|
|
18
|
+
uv run pytest --cov=src/logseq_matryca_parser --cov-report=term-missing --cov-fail-under=80 -v tests/
|
|
19
|
+
|
|
20
|
+
docs-check:
|
|
21
|
+
uv run python scripts/check_documentation.py --root . --profile docs/maintained.toml --as-of-date $$(date -u +%F)
|
|
22
|
+
|
|
23
|
+
verify-clean:
|
|
24
|
+
@status="$$(git status --porcelain)"; \
|
|
25
|
+
if [ -n "$$status" ]; then \
|
|
26
|
+
printf '%s\n' "$$status"; \
|
|
27
|
+
exit 1; \
|
|
28
|
+
fi
|
|
29
|
+
|
|
30
|
+
build:
|
|
31
|
+
uv run python -m nuitka --standalone --onefile src/logseq_matryca_parser/kinetic.py
|