logseq-matryca-parser 1.8.2__tar.gz → 1.9.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.8.2 → logseq_matryca_parser-1.9.0}/.github/workflows/ci.yml +5 -1
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/.github/workflows/pypi_publish.yml +4 -1
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/AGENTS.md +1 -1
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/CHANGELOG.md +32 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/CONTRIBUTING.md +1 -1
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/PKG-INFO +24 -5
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/README.md +23 -4
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/RELEASE_HIGHLIGHTS.md +17 -5
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/SECURITY.md +3 -4
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/docs/ARCHITECTURE.md +18 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/docs/CLEAN_CODE_ARCHITECTURE.md +32 -5
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/docs/COOKBOOK.md +7 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/docs/GOOD_FIRST_ISSUES.md +1 -1
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/docs/README.md +1 -0
- logseq_matryca_parser-1.9.0/docs/decisions/ADR-0004-PARSER-PLUMBER-BOUNDARY.md +81 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/docs/decisions/index.md +1 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/docs/index.md +1 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/docs/log.md +15 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/docs/maintained.toml +2 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/docs/reference/API_STABILITY.md +22 -3
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/docs/reference/index.md +1 -1
- logseq_matryca_parser-1.9.0/docs/security/DEPENDENCY_ADVISORY_EXCEPTIONS.md +76 -0
- logseq_matryca_parser-1.9.0/docs/superpowers/plans/2026-08-30-v1.8.2-repository-completion.md +324 -0
- logseq_matryca_parser-1.9.0/docs/superpowers/receipts/2026-08-30-v1.8.2-backlog-reconciliation.md +36 -0
- logseq_matryca_parser-1.9.0/docs/superpowers/receipts/2026-08-30-v1.8.2-baseline.md +44 -0
- logseq_matryca_parser-1.9.0/docs/superpowers/receipts/2026-08-30-v1.8.2-final-audit.md +25 -0
- logseq_matryca_parser-1.9.0/docs/superpowers/receipts/2026-08-30-v1.8.2-publication.md +29 -0
- logseq_matryca_parser-1.9.0/docs/superpowers/receipts/2026-08-30-v1.8.2-qualification.md +28 -0
- logseq_matryca_parser-1.9.0/docs/superpowers/specs/2026-08-30-v1.8.2-repository-completion-design.md +101 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/metrics/index.json +1 -1
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/metrics/quarters/2026-Q3.json +3236 -1475
- logseq_matryca_parser-1.9.0/release-bundle/RELEASE_NOTES.md +31 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/src/logseq_matryca_parser/__init__.py +2 -1
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/src/logseq_matryca_parser/_version.py +1 -1
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/src/logseq_matryca_parser/graph.py +205 -31
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/src/logseq_matryca_parser/kinetic_commands.py +2 -2
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/tests/test_check_wheel_contract.py +1 -1
- logseq_matryca_parser-1.9.0/tests/test_dependency_advisory_exception.py +53 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/tests/test_kinetic.py +34 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/tests/test_layer_boundary.py +16 -0
- logseq_matryca_parser-1.9.0/tests/test_plumber_boundary_docs.py +37 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/tests/test_public_api_contract.py +19 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/tests/test_quality_gate_contract.py +3 -4
- logseq_matryca_parser-1.9.0/tests/test_snapshot_graph.py +277 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/tests/typing_samples/public_api.py +7 -1
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/uv.lock +6 -6
- logseq_matryca_parser-1.8.2/release-bundle/RELEASE_NOTES.md +0 -26
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/.cursorignore +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/.cursorrules +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/.gitattributes +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/.github/CODEOWNERS +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/.github/FUNDING.yml +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/.github/ISSUE_TEMPLATE/clean_architecture.yml +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/.github/clean_arch_issue_numbers.txt +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/.github/copilot-instructions.md +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/.github/dependabot.yml +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/.github/dependency-license-overrides.toml +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/.github/labels.yml +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/.github/scripts/create_clean_arch_issues.sh +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/.github/scripts/create_good_first_issues.sh +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/.github/workflows/daily-metrics.yml +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/.github/workflows/dependency-hygiene.yml +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/.github/workflows/dependency-review.yml +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/.github/workflows/parser-adversarial.yml +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/.github/workflows/scorecard.yml +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/.github/workflows/workflow-analysis.yml +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/.gitignore +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/.pre-commit-config.yaml +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/.repomixignore +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/CITATION.cff +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/CLAUDE.md +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/CODE_OF_CONDUCT.md +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/GOVERNANCE.md +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/LICENSE +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/MAINTAINERS.md +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/Makefile +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/NOTICE +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/SUPPORT.md +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/claude-skill-logseq-read/SKILL.md +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/claude-skill-logseq-read/scripts/parse_logseq.py +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/docs/AAIF_ALIGNMENT.md +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/docs/AI_CONTRIBUTION_POLICY.md +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/docs/BUG_HUNT_REPORT.md +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/docs/CI_ASSURANCE.md +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/docs/CODEQL.md +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/docs/DOCUMENTATION_SYSTEM.md +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/docs/ISSUE_TRIAGE_POLICY.md +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/docs/LSDOC_REFERENCE_STUDY_AND_EXECUTION_PLAN_2026-08-16.md +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/docs/README_READABILITY_REPORT_2026-08-08.md +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/docs/RELEASE_PROCESS.md +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/docs/REPOSITORY_GOVERNANCE_AAIF_STUDY_2026-08-19.md +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/docs/REPOSITORY_IMPROVEMENT_STUDY_2026-07-28.md +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/docs/REPOSITORY_STELLAR_ROADMAP_2026-08-06.md +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/docs/ROADMAP_2026-2027.md +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/docs/decisions/ADR-0001-PROTOCOL_ADAPTER_BOUNDARY.md +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/docs/decisions/ADR-0002-OFFICIAL-OKF-V02-MIGRATION-GATE.md +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/docs/decisions/ADR-0003-AAIF-SUBMISSION-GATE.md +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/docs/decisions/ADR-001-external-oracle-boundary.md +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/docs/decisions/ADR-002-local-graph-assurance-boundary.md +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/docs/design-docs/ARCHITECTURE_BLUEPRINT.md +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/docs/design-docs/CODE_SCAFFOLD.md +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/docs/design-docs/LOGSEQ_ASSET_RESOLUTION_SPEC.md +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/docs/design-docs/LOGSEQ_DATASCRIPT_MAPPING.md +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/docs/design-docs/LOGSEQ_TEMPORAL_ONTOLOGY.md +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/docs/design-docs/OFFICIAL_MLDOC_SPECS.md +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/docs/design-docs/README.md +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/docs/design-docs/REFERENCE_SPEC.md +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/docs/error_log.md +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/docs/goals/LSDOC_PARSER_ASSURANCE_GOAL.md +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/docs/internal/ASSURANCE_TERRA_HANDOFF_2026-08-21.md +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/docs/internal/LOCAL_CODE_STUDY.md +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/docs/internal/M1A_CORRECTIVE_HARDENING_RESTART_HANDOFF_2026-08-16.md +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/docs/internal/M5_LOCAL_GRAPH_ASSURANCE_REVIEW_HANDOFF_2026-08-18.md +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/docs/internal/POST_V1_8_1_BACKLOG_EXECUTION_2026-08-25.md +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/docs/internal/STATIC_ANALYSIS_POLICY.md +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/docs/logseq_ast_primer.md +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/docs/quality/CLEAN_ARCH_BACKLOG.md +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/docs/quality/GITHUB_CLEAN_ARCH_ROADMAP.md +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/docs/quality/ISSUE_RECONCILIATION_2026-08-06.md +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/docs/quality/ISSUE_TRIAGE_2026-07.md +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/docs/quality/README.md +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/docs/reference/AGENT_ACTION_CONTRACT.md +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/docs/reference/CONFORMANCE_SUPPORT_MATRIX.md +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/docs/reference/DEPENDENCY_LICENSE_POLICY.md +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/docs/reference/DIAGNOSTICS.md +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/docs/reference/FILESYSTEM_SAFETY.md +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/docs/reference/LOCAL_GRAPH_ASSURANCE.md +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/docs/reference/PERFORMANCE_EVIDENCE.md +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/docs/rfc/OLLAMA_RAG.md +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/docs/rfc/SOURCE_LOCATION_RFC.md +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/docs/roadmaps/ROADMAP_AGENT_NATIVE_XRAY.md +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/docs/roadmaps/ROADMAP_CLI_HYDRATION_AND_ENRICHMENT.md +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/docs/roadmaps/ROADMAP_CONTEXT_SYNTHESIS_AND_SCOPING.md +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/docs/roadmaps/ROADMAP_EMBED_EXPANSION_AND_FLUENT_QUERIES.md +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/docs/roadmaps/ROADMAP_GRAPH_RAG_SEMANTICS.md +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/docs/roadmaps/ROADMAP_HEADLESS_WRITER.md +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/docs/roadmaps/ROADMAP_INCREMENTAL_WATCHER.md +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/docs/roadmaps/ROADMAP_INLINE_SHIELD_AND_NAMESPACES.md +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/docs/roadmaps/ROADMAP_OBSIDIAN_ADAPTER.md +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/docs/roadmaps/ROADMAP_ROBUSTNESS_AND_SOFT_BREAKS.md +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/docs/roadmaps/ROADMAP_TOML_FIX_AND_PYPI_DISTRIBUTION.md +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/docs/roadmaps/ROADMAP_UUID_AND_GRAPH_SUPERPOWERS.md +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/docs/security/DAILY_METRICS_THREAT_MODEL.md +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/docs/superpowers/plans/2026-08-20-parser-lexical-state.md +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/docs/superpowers/plans/2026-08-20-runtime-evidence-harness.md +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/docs/superpowers/plans/2026-08-21-graph-mutation-coherence.md +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/docs/superpowers/plans/2026-08-21-post-m9-reconciliation.md +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/docs/superpowers/plans/2026-08-24-local-assurance-coverage.md +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/docs/superpowers/plans/2026-08-30-native-github-actions.md +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/docs/superpowers/specs/2026-08-20-parser-lexical-state-design.md +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/docs/superpowers/specs/2026-08-21-graph-mutation-coherence-design.md +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/docs/superpowers/specs/2026-08-24-meaningful-test-coverage-design.md +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/docs/superpowers/specs/2026-08-30-native-github-actions-design.md +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/examples/demo_logseq_journal.md +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/examples/run_demo.py +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/examples/run_synapse_rag.py +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/legacy/local_digestor.py +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/lib/bindings/utils.js +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/lib/tom-select/tom-select.complete.min.js +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/lib/tom-select/tom-select.css +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/lib/vis-9.1.2/vis-network.css +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/lib/vis-9.1.2/vis-network.min.js +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/llms.txt +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/metrics/quarters/2026-Q2.json +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/pyproject.toml +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/repomix-output-parser.xml +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/scripts/__init__.py +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/scripts/archive_repository_metrics.py +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/scripts/check_documentation.py +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/scripts/check_release_contract.py +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/scripts/check_vendor_free_docs.sh +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/scripts/check_wheel_contract.py +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/scripts/debug_pre_release.py +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/scripts/extract_changelog.py +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/scripts/generate_supply_chain_evidence.py +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/scripts/update_compat_snapshots.py +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/src/logseq_matryca_parser/.gitignore +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/src/logseq_matryca_parser/NOTICE +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/src/logseq_matryca_parser/__main__.py +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/src/logseq_matryca_parser/_lexical_state.py +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/src/logseq_matryca_parser/agent_press.py +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/src/logseq_matryca_parser/agent_writer.py +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/src/logseq_matryca_parser/diagnostics.py +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/src/logseq_matryca_parser/exceptions.py +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/src/logseq_matryca_parser/forge.py +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/src/logseq_matryca_parser/kinetic.py +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/src/logseq_matryca_parser/kinetic_export.py +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/src/logseq_matryca_parser/lens.py +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/src/logseq_matryca_parser/local_graph_assurance.py +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/src/logseq_matryca_parser/logos_core.py +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/src/logseq_matryca_parser/logos_parser.py +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/src/logseq_matryca_parser/logseq_markdown.py +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/src/logseq_matryca_parser/logseq_paths.py +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/src/logseq_matryca_parser/py.typed +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/src/logseq_matryca_parser/pyproject.toml +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/src/logseq_matryca_parser/synapse.py +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/src/logseq_matryca_parser/synapse_embed.py +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/tests/__init__.py +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/tests/fixtures/compat/v1/deep-refresh-regression.md +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/tests/fixtures/compat/v1/hierarchy-identity.md +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/tests/fixtures/compat/v1/manifest.json +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/tests/fixtures/compat/v1/pages/nested-title-entrypoint.md +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/tests/fixtures/compat/v1/properties-and-links.md +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/tests/fixtures/compat/v1/snapshots/m1a-deep-refresh.exact.json +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/tests/fixtures/compat/v1/snapshots/m1a-hierarchy-identity.exact.json +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/tests/fixtures/compat/v1/snapshots/m1a-nested-entrypoint.exact.json +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/tests/fixtures/compat/v1/snapshots/m1a-properties-links-assets.exact.json +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/tests/fixtures/compat/v1/snapshots/m1a-softbreak-logbook.exact.json +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/tests/fixtures/compat/v1/snapshots/m1a-task-timing.exact.json +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/tests/fixtures/compat/v1/soft-breaks-properties-logbook.md +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/tests/fixtures/compat/v1/tasks-priority-time.md +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/tests/parser_assurance/__init__.py +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/tests/parser_assurance/adversarial.py +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/tests/parser_assurance/corpus.py +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/tests/parser_assurance/invariants.py +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/tests/parser_assurance/projection.py +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/tests/parser_assurance/work_growth.py +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/tests/performance/__init__.py +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/tests/performance/runtime_evidence.py +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/tests/performance/synthetic_vault.py +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/tests/test_agent_press.py +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/tests/test_agent_writer.py +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/tests/test_archive_repository_metrics.py +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/tests/test_check_documentation.py +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/tests/test_check_release_contract.py +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/tests/test_compat_corpus.py +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/tests/test_demo_example.py +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/tests/test_diagnostics.py +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/tests/test_exceptions.py +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/tests/test_extract_changelog.py +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/tests/test_forge.py +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/tests/test_generate_supply_chain_evidence.py +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/tests/test_graph.py +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/tests/test_graph_collisions.py +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/tests/test_graph_concurrency.py +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/tests/test_lens.py +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/tests/test_llms_txt_contract.py +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/tests/test_local_graph_assurance.py +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/tests/test_logos_parser.py +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/tests/test_logseq_markdown.py +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/tests/test_logseq_paths.py +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/tests/test_module_entrypoint.py +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/tests/test_package_version.py +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/tests/test_parser_adversarial.py +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/tests/test_parser_deep_refresh.py +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/tests/test_parser_lexical_state.py +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/tests/test_parser_work_growth.py +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/tests/test_performance_evidence_docs.py +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/tests/test_performance_synthetic_vault.py +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/tests/test_pre_release_roundtrip.py +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/tests/test_runtime_evidence.py +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/tests/test_synapse.py +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/tests/test_synapse_example.py +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/tests/test_writer_security.py +0 -0
- {logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/zizmor.yml +0 -0
|
@@ -111,7 +111,11 @@ jobs:
|
|
|
111
111
|
--output-file "${{ runner.temp }}/requirements-audit.txt"
|
|
112
112
|
|
|
113
113
|
- name: Audit exported dependencies
|
|
114
|
-
|
|
114
|
+
# Temporary exception governed by docs/security/DEPENDENCY_ADVISORY_EXCEPTIONS.md.
|
|
115
|
+
run: >-
|
|
116
|
+
uv run pip-audit --no-deps --disable-pip
|
|
117
|
+
--ignore-vuln PYSEC-2026-3740
|
|
118
|
+
-r "${{ runner.temp }}/requirements-audit.txt"
|
|
115
119
|
|
|
116
120
|
package-contract:
|
|
117
121
|
name: Wheel and source distribution contract
|
{logseq_matryca_parser-1.8.2 → logseq_matryca_parser-1.9.0}/.github/workflows/pypi_publish.yml
RENAMED
|
@@ -40,7 +40,10 @@ jobs:
|
|
|
40
40
|
- name: Audit production dependencies
|
|
41
41
|
run: |
|
|
42
42
|
uv export --all-extras --no-dev --no-emit-workspace -o "${{ runner.temp }}/requirements-audit.txt"
|
|
43
|
-
|
|
43
|
+
# Temporary exception governed by docs/security/DEPENDENCY_ADVISORY_EXCEPTIONS.md.
|
|
44
|
+
uv run pip-audit --no-deps --disable-pip \
|
|
45
|
+
--ignore-vuln PYSEC-2026-3740 \
|
|
46
|
+
-r "${{ runner.temp }}/requirements-audit.txt"
|
|
44
47
|
|
|
45
48
|
- name: Run full quality gate
|
|
46
49
|
run: make all
|
|
@@ -20,7 +20,7 @@ backlinks, exports, visualizations, and AI chunks are derived views.
|
|
|
20
20
|
| **SYNAPSE** | Export lineage-aware LangChain documents, LlamaIndex nodes, and enriched chunks | `SynapseAdapter` |
|
|
21
21
|
| **FORGE** | Serialize JSON, clean Markdown, Logseq pages, and Obsidian-compatible output | `ForgeExporter`, `serialize_logseq_page` |
|
|
22
22
|
| **KINETIC** | Run CLI parse, export, scan, visualize, agent-read, and agent-write workflows | `matryca-parse` |
|
|
23
|
-
| **LENS** | Build
|
|
23
|
+
| **LENS** | Build a compatible reference-topology visualization; planned compatible deprecation follows a later Trama UI migration | `GraphVisualizer` |
|
|
24
24
|
| **Agent access** | Read a token-efficient X-Ray outline or perform bounded writes | `agent-read`, `agent-write`, `logseq_agent_write` |
|
|
25
25
|
|
|
26
26
|
## Start here
|
|
@@ -7,6 +7,38 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [1.9.0] - 2026-09-06
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- **In-memory snapshot graph factory** — `SnapshotPage` and
|
|
15
|
+
`LogseqGraph.from_snapshot_pages()` build the existing parser graph indexes from
|
|
16
|
+
bounded, caller-captured Markdown without source discovery, file reopening, or
|
|
17
|
+
graph-root filesystem inspection.
|
|
18
|
+
The stable additive API preserves deterministic ordering, parser identities,
|
|
19
|
+
aliases, backlinks, diagnostics, and opt-in strict modes while keeping source
|
|
20
|
+
capture and cross-product projection outside Parser (#209).
|
|
21
|
+
|
|
22
|
+
### Security
|
|
23
|
+
|
|
24
|
+
- **Time-bounded NLTK advisory exception** — document the exact optional AI
|
|
25
|
+
dependency exposure, non-reachability evidence, compensating controls,
|
|
26
|
+
owner, upstream advisory, and 2026-10-05 expiry for `PYSEC-2026-3740` while
|
|
27
|
+
no patched NLTK registry release exists. CI and release audits ignore only
|
|
28
|
+
that advisory; all other dependency findings remain fail-closed.
|
|
29
|
+
|
|
30
|
+
### Changed
|
|
31
|
+
|
|
32
|
+
- **LENS Stage 0 transition** — mark the compatible `GraphVisualizer`,
|
|
33
|
+
`visualize`, and `demo` surfaces as transitional and feature-frozen, with
|
|
34
|
+
Matryca Trama as future user-facing graph-intelligence destination. This
|
|
35
|
+
release makes no API removal or deprecation-warning change (#213).
|
|
36
|
+
- **Parser-Plumber boundary** — record Parser as the deterministic Logseq OG
|
|
37
|
+
parsing library and Plumber as the sole cross-product Logseq gateway to
|
|
38
|
+
Trama and Brain. Existing Parser APIs and LENS behavior remain compatible;
|
|
39
|
+
any Trama UI migration requires a later, separately reviewed compatible
|
|
40
|
+
deprecation plan (#203).
|
|
41
|
+
|
|
10
42
|
## [1.8.2] - 2026-08-30
|
|
11
43
|
|
|
12
44
|
### Changed
|
|
@@ -17,7 +17,7 @@ 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) —
|
|
20
|
+
- [`CHANGELOG.md`](CHANGELOG.md) — latest release **1.9.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/CI_ASSURANCE.md`](docs/CI_ASSURANCE.md) — pull-request, scheduled, settings-managed, and release checks
|
|
23
23
|
- [`docs/CODEQL.md`](docs/CODEQL.md) — CodeQL default setup (no custom `codeql.yml`)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: logseq-matryca-parser
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.9.0
|
|
4
4
|
Summary: The Logos Protocol: Deterministic Logseq AST parsing for Matryca.ai.
|
|
5
5
|
Project-URL: Homepage, https://github.com/MarcoPorcellato/logseq-matryca-parser
|
|
6
6
|
Project-URL: Repository, https://github.com/MarcoPorcellato/logseq-matryca-parser
|
|
@@ -89,7 +89,8 @@ selected by the caller.
|
|
|
89
89
|
- **Parse and query:** load one page or a complete vault as a typed AST and graph.
|
|
90
90
|
- **Build RAG context:** export LangChain documents, LlamaIndex nodes, or enriched chunks.
|
|
91
91
|
- **Move knowledge:** generate JSON, clean Markdown, or an Obsidian vault.
|
|
92
|
-
- **Visualize:** render an interactive graph with
|
|
92
|
+
- **Visualize:** render an interactive reference-topology graph with the transitional,
|
|
93
|
+
feature-frozen LENS adapter.
|
|
93
94
|
- **Use an AI agent:** start from [`AGENTS.md`](AGENTS.md) or the concise [`llms.txt`](llms.txt) index.
|
|
94
95
|
|
|
95
96
|
---
|
|
@@ -188,6 +189,13 @@ Logseq Matryca Parser is a deterministic **Stack-Machine engine** that acts as t
|
|
|
188
189
|
The base parser is local-first and has zero telemetry. Optional AI, watcher, and
|
|
189
190
|
visualization dependencies remain lazy. See the [architecture](docs/ARCHITECTURE.md)
|
|
190
191
|
and [API stability reference](docs/reference/API_STABILITY.md) for exact boundaries.
|
|
192
|
+
For cross-product Logseq OG use, Plumber is the gateway to Trama and Brain;
|
|
193
|
+
Parser remains the deterministic parsing stage. LENS stays compatible while a
|
|
194
|
+
future Trama graph-intelligence migration is separately designed and released.
|
|
195
|
+
Stage 0 marks LENS as transitional and feature-frozen: `GraphVisualizer`,
|
|
196
|
+
`matryca-parse visualize`, and `matryca-parse demo` remain available without a
|
|
197
|
+
deprecation warning. Matryca Trama is the destination for future user-facing
|
|
198
|
+
graph intelligence.
|
|
191
199
|
|
|
192
200
|
### Data model — `LogseqNode` task fields
|
|
193
201
|
|
|
@@ -219,7 +227,7 @@ uv sync --all-extras
|
|
|
219
227
|
```
|
|
220
228
|
|
|
221
229
|
```bash
|
|
222
|
-
# 1. Visualize your local graph (LENS)
|
|
230
|
+
# 1. Visualize your local graph (LENS: transitional, feature-frozen)
|
|
223
231
|
matryca-parse visualize /path/to/logseq/graph my-map.html
|
|
224
232
|
|
|
225
233
|
# 2. Export for AI / RAG (SYNAPSE)
|
|
@@ -258,6 +266,14 @@ graph = LogseqGraph.load_directory("/path/to/logseq/graph")
|
|
|
258
266
|
page_obj = graph.get_page("My Page") # case-insensitive
|
|
259
267
|
effective = graph.get_effective_properties(page_obj.root_nodes[0].uuid)
|
|
260
268
|
|
|
269
|
+
# Build the same in-memory indexes from caller-captured Markdown without filesystem access.
|
|
270
|
+
from logseq_matryca_parser import SnapshotPage
|
|
271
|
+
|
|
272
|
+
snapshot_graph = LogseqGraph.from_snapshot_pages(
|
|
273
|
+
"/path/to/logseq/graph",
|
|
274
|
+
[SnapshotPage("pages/Project.md", "- Captured block\n")],
|
|
275
|
+
)
|
|
276
|
+
|
|
261
277
|
# Export to LangChain with lineage metadata
|
|
262
278
|
docs = SynapseAdapter.to_langchain_documents(page.root_nodes, source_name=page.title)
|
|
263
279
|
|
|
@@ -288,7 +304,9 @@ assert result["status"] == "success"
|
|
|
288
304
|
---
|
|
289
305
|
|
|
290
306
|
## 🗺️ Roadmap
|
|
291
|
-
- [ ] **
|
|
307
|
+
- [ ] **Graph-intelligence UI:** A future Matryca Trama surface may succeed the
|
|
308
|
+
compatible Parser LENS workflow after a separately reviewed migration; Parser
|
|
309
|
+
does not commit to a standalone GUI. [(Track the historical RFC)](https://github.com/MarcoPorcellato/logseq-matryca-parser/issues/3)
|
|
292
310
|
- [x] **Obsidian Adapter:** Native CLI export (`--format obsidian`) with YAML frontmatter and `^` block anchors.
|
|
293
311
|
- [ ] **Ollama Integration:** One-click local RAG setup. [(RFC draft)](docs/rfc/OLLAMA_RAG.md) · [(Track progress #34)](https://github.com/MarcoPorcellato/logseq-matryca-parser/issues/34)
|
|
294
312
|
|
|
@@ -323,7 +341,8 @@ Read the complete [release highlights](RELEASE_HIGHLIGHTS.md), the exhaustive
|
|
|
323
341
|
[changelog](CHANGELOG.md), or the signed artifacts on
|
|
324
342
|
[GitHub Releases](https://github.com/MarcoPorcellato/logseq-matryca-parser/releases).
|
|
325
343
|
|
|
326
|
-
- **v1.
|
|
344
|
+
- **v1.9.0** — Adds the stable in-memory snapshot graph factory, clarifies the Parser-Plumber boundary, and governs the temporary optional-NLTK advisory exception.
|
|
345
|
+
- **v1.8.2** — Adds SHA-pinned hosted assurance, portable Windows local assurance, corrected cookbook recipes, consistent optional-AI guidance, and `Path | str` graph loading.
|
|
327
346
|
- **v1.8.1** — Hardened deep-outline parsing, coherent incremental graph mutations, bounded assurance cleanup, and stable provenance for optional NLTK.
|
|
328
347
|
- **v1.8.0** — Added bounded privacy-safe local graph assurance, source-location contracts, and the first internal parser line-classification phase.
|
|
329
348
|
- **v1.7.1** — Added the runnable offline SYNAPSE RAG example and tightened release-note and optional-dependency security checks.
|
|
@@ -48,7 +48,8 @@ selected by the caller.
|
|
|
48
48
|
- **Parse and query:** load one page or a complete vault as a typed AST and graph.
|
|
49
49
|
- **Build RAG context:** export LangChain documents, LlamaIndex nodes, or enriched chunks.
|
|
50
50
|
- **Move knowledge:** generate JSON, clean Markdown, or an Obsidian vault.
|
|
51
|
-
- **Visualize:** render an interactive graph with
|
|
51
|
+
- **Visualize:** render an interactive reference-topology graph with the transitional,
|
|
52
|
+
feature-frozen LENS adapter.
|
|
52
53
|
- **Use an AI agent:** start from [`AGENTS.md`](AGENTS.md) or the concise [`llms.txt`](llms.txt) index.
|
|
53
54
|
|
|
54
55
|
---
|
|
@@ -147,6 +148,13 @@ Logseq Matryca Parser is a deterministic **Stack-Machine engine** that acts as t
|
|
|
147
148
|
The base parser is local-first and has zero telemetry. Optional AI, watcher, and
|
|
148
149
|
visualization dependencies remain lazy. See the [architecture](docs/ARCHITECTURE.md)
|
|
149
150
|
and [API stability reference](docs/reference/API_STABILITY.md) for exact boundaries.
|
|
151
|
+
For cross-product Logseq OG use, Plumber is the gateway to Trama and Brain;
|
|
152
|
+
Parser remains the deterministic parsing stage. LENS stays compatible while a
|
|
153
|
+
future Trama graph-intelligence migration is separately designed and released.
|
|
154
|
+
Stage 0 marks LENS as transitional and feature-frozen: `GraphVisualizer`,
|
|
155
|
+
`matryca-parse visualize`, and `matryca-parse demo` remain available without a
|
|
156
|
+
deprecation warning. Matryca Trama is the destination for future user-facing
|
|
157
|
+
graph intelligence.
|
|
150
158
|
|
|
151
159
|
### Data model — `LogseqNode` task fields
|
|
152
160
|
|
|
@@ -178,7 +186,7 @@ uv sync --all-extras
|
|
|
178
186
|
```
|
|
179
187
|
|
|
180
188
|
```bash
|
|
181
|
-
# 1. Visualize your local graph (LENS)
|
|
189
|
+
# 1. Visualize your local graph (LENS: transitional, feature-frozen)
|
|
182
190
|
matryca-parse visualize /path/to/logseq/graph my-map.html
|
|
183
191
|
|
|
184
192
|
# 2. Export for AI / RAG (SYNAPSE)
|
|
@@ -217,6 +225,14 @@ graph = LogseqGraph.load_directory("/path/to/logseq/graph")
|
|
|
217
225
|
page_obj = graph.get_page("My Page") # case-insensitive
|
|
218
226
|
effective = graph.get_effective_properties(page_obj.root_nodes[0].uuid)
|
|
219
227
|
|
|
228
|
+
# Build the same in-memory indexes from caller-captured Markdown without filesystem access.
|
|
229
|
+
from logseq_matryca_parser import SnapshotPage
|
|
230
|
+
|
|
231
|
+
snapshot_graph = LogseqGraph.from_snapshot_pages(
|
|
232
|
+
"/path/to/logseq/graph",
|
|
233
|
+
[SnapshotPage("pages/Project.md", "- Captured block\n")],
|
|
234
|
+
)
|
|
235
|
+
|
|
220
236
|
# Export to LangChain with lineage metadata
|
|
221
237
|
docs = SynapseAdapter.to_langchain_documents(page.root_nodes, source_name=page.title)
|
|
222
238
|
|
|
@@ -247,7 +263,9 @@ assert result["status"] == "success"
|
|
|
247
263
|
---
|
|
248
264
|
|
|
249
265
|
## 🗺️ Roadmap
|
|
250
|
-
- [ ] **
|
|
266
|
+
- [ ] **Graph-intelligence UI:** A future Matryca Trama surface may succeed the
|
|
267
|
+
compatible Parser LENS workflow after a separately reviewed migration; Parser
|
|
268
|
+
does not commit to a standalone GUI. [(Track the historical RFC)](https://github.com/MarcoPorcellato/logseq-matryca-parser/issues/3)
|
|
251
269
|
- [x] **Obsidian Adapter:** Native CLI export (`--format obsidian`) with YAML frontmatter and `^` block anchors.
|
|
252
270
|
- [ ] **Ollama Integration:** One-click local RAG setup. [(RFC draft)](docs/rfc/OLLAMA_RAG.md) · [(Track progress #34)](https://github.com/MarcoPorcellato/logseq-matryca-parser/issues/34)
|
|
253
271
|
|
|
@@ -282,7 +300,8 @@ Read the complete [release highlights](RELEASE_HIGHLIGHTS.md), the exhaustive
|
|
|
282
300
|
[changelog](CHANGELOG.md), or the signed artifacts on
|
|
283
301
|
[GitHub Releases](https://github.com/MarcoPorcellato/logseq-matryca-parser/releases).
|
|
284
302
|
|
|
285
|
-
- **v1.
|
|
303
|
+
- **v1.9.0** — Adds the stable in-memory snapshot graph factory, clarifies the Parser-Plumber boundary, and governs the temporary optional-NLTK advisory exception.
|
|
304
|
+
- **v1.8.2** — Adds SHA-pinned hosted assurance, portable Windows local assurance, corrected cookbook recipes, consistent optional-AI guidance, and `Path | str` graph loading.
|
|
286
305
|
- **v1.8.1** — Hardened deep-outline parsing, coherent incremental graph mutations, bounded assurance cleanup, and stable provenance for optional NLTK.
|
|
287
306
|
- **v1.8.0** — Added bounded privacy-safe local graph assurance, source-location contracts, and the first internal parser line-classification phase.
|
|
288
307
|
- **v1.7.1** — Added the runnable offline SYNAPSE RAG example and tightened release-note and optional-dependency security checks.
|
|
@@ -5,13 +5,25 @@ For the exhaustive change history, see the [changelog](CHANGELOG.md). For
|
|
|
5
5
|
published artifacts and attestations, see
|
|
6
6
|
[GitHub Releases](https://github.com/MarcoPorcellato/logseq-matryca-parser/releases).
|
|
7
7
|
|
|
8
|
-
##
|
|
8
|
+
## Unreleased
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
## v1.9.0
|
|
11
|
+
|
|
12
|
+
Minor release — adds a stable in-memory graph factory and clarifies the
|
|
13
|
+
cross-product integration boundary. **No intentional breaking changes** to
|
|
14
|
+
stable package imports or CLI behavior.
|
|
15
|
+
|
|
16
|
+
| Area | Change |
|
|
17
|
+
| :--- | :--- |
|
|
18
|
+
| **Graph API** | `SnapshotPage` and `LogseqGraph.from_snapshot_pages()` build ordinary in-memory graph indexes from bounded caller-captured Markdown. The additive API never discovers, reopens, or inspects logical source paths or its graph-root label; source capture, revisions, and external DTO projection remain outside Parser. |
|
|
19
|
+
| **Architecture** | Parser remains the deterministic Logseq OG library. Plumber is the sole cross-product gateway to Trama and Brain; existing Parser APIs and LENS behavior remain compatible. |
|
|
20
|
+
| **Dependency security** | A time-bounded, evidence-backed exception governs `PYSEC-2026-3740` for optional AI dependency NLTK until a patched registry release exists; all other dependency findings remain fail-closed. |
|
|
21
|
+
|
|
22
|
+
## v1.8.2
|
|
23
|
+
|
|
24
|
+
Patch release — strengthens the hosted assurance boundary, clarifies
|
|
11
25
|
integration guidance, and makes the graph loader easier to call. **No
|
|
12
|
-
intentional breaking changes** to stable package imports or CLI behavior.
|
|
13
|
-
v1.8.2 tag, PyPI publication, GitHub Release, hashes, and attestations remain
|
|
14
|
-
pending the release workflow.
|
|
26
|
+
intentional breaking changes** to stable package imports or CLI behavior.
|
|
15
27
|
|
|
16
28
|
| Area | Change |
|
|
17
29
|
| :--- | :--- |
|
|
@@ -2,13 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
## Supported Versions
|
|
4
4
|
|
|
5
|
-
Security fixes are provided **only for the latest released version** on [PyPI](https://pypi.org/project/logseq-matryca-parser/).
|
|
5
|
+
Security fixes are provided **only for the latest released version** on [PyPI](https://pypi.org/project/logseq-matryca-parser/). The latest supported release is v1.9.0.
|
|
6
6
|
|
|
7
7
|
| Version | Supported |
|
|
8
8
|
| ------- | --------- |
|
|
9
|
-
| 1.
|
|
10
|
-
|
|
|
11
|
-
| 1.8.0 and older | No |
|
|
9
|
+
| **1.9.0** (latest released) | Yes |
|
|
10
|
+
| 1.8.2 and older | No |
|
|
12
11
|
|
|
13
12
|
We recommend always running the current release and upgrading promptly when a security advisory is published.
|
|
14
13
|
|
|
@@ -28,6 +28,22 @@ Full contributor contract: [`CLEAN_CODE_ARCHITECTURE.md`](CLEAN_CODE_ARCHITECTUR
|
|
|
28
28
|
|
|
29
29
|
High-level data flow from sovereign graph files through deterministic parsing to AST-backed exporters and adapters.
|
|
30
30
|
|
|
31
|
+
## Cross-repository boundary
|
|
32
|
+
|
|
33
|
+
For Logseq OG integration, Parser is the deterministic parsing stage in this
|
|
34
|
+
data flow:
|
|
35
|
+
|
|
36
|
+
```text
|
|
37
|
+
Logseq OG -> Parser -> Plumber -> Trama/Brain
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
Parser owns the typed AST, in-memory graph, and parser-native serialization.
|
|
41
|
+
Plumber owns source selection, host adapters, sessions, and public cross-product
|
|
42
|
+
contracts. The flow does not add Python imports: Parser runtime does not import
|
|
43
|
+
Plumber, Trama, or Brain, while Trama and Brain consume Plumber contracts and
|
|
44
|
+
do not import or know Parser. Details and compatibility consequences are in
|
|
45
|
+
[ADR-0004](decisions/ADR-0004-PARSER-PLUMBER-BOUNDARY.md).
|
|
46
|
+
|
|
31
47
|
```mermaid
|
|
32
48
|
flowchart LR
|
|
33
49
|
FS[(Local Logseq\nGraph .md)] --> Logos[LOGOS Engine\nParser]
|
|
@@ -308,6 +324,8 @@ When LENS receives a loaded **`LogseqGraph`**, wikilinks resolve through `get_pa
|
|
|
308
324
|
|
|
309
325
|
Visualization export uses **`pyvis`** with **`force_atlas_2based`** physics, fullscreen canvas, HUD filters, glassmorphism control chrome, and stabilized layout configuration suitable for **large graphs at interactive frame rates** in the browser (product positioning targets fluid exploration of graphs on the order of **10⁴ nodes**).
|
|
310
326
|
|
|
327
|
+
LENS remains fully compatible as a Parser reference-topology tool. Trama owns future product-intelligence visualization. Any later migration must preserve compatibility through a separately reviewed deprecation plan. No migration, warning, removal, or changed command is part of this repository slice.
|
|
328
|
+
|
|
311
329
|
### 3.4 AGENT WRITER — Append-Only Sandboxing & Headless Splicer
|
|
312
330
|
|
|
313
331
|
In the **LLM OS** metaphor, **LOGOS** is the **read path** into the hierarchical “disk”: it materializes Spatial Markdown into a **deterministic AST** that downstream adapters trust. **`agent_writer`** ([`logseq_matryca_parser.agent_writer`](../src/logseq_matryca_parser/agent_writer.py)) is the complementary **bounded write syscall** with two surfaces:
|
|
@@ -8,8 +8,8 @@ audience: contributors
|
|
|
8
8
|
owner: logseq-matryca-parser
|
|
9
9
|
authority: source_repository
|
|
10
10
|
execution_mode: reviewed
|
|
11
|
-
last_verified: 2026-
|
|
12
|
-
verified: 2026-
|
|
11
|
+
last_verified: 2026-09-05
|
|
12
|
+
verified: 2026-09-05
|
|
13
13
|
stale_after: 2027-02-26
|
|
14
14
|
okf_profile: matryca_okf_inspired_quality
|
|
15
15
|
okf_spec_version: null
|
|
@@ -19,7 +19,7 @@ superseded_by: null
|
|
|
19
19
|
|
|
20
20
|
# Clean Code & Clean Architecture — Logseq Matryca Parser
|
|
21
21
|
|
|
22
|
-
**Version:** documents **v1.
|
|
22
|
+
**Version:** documents **v1.9.0** maintainer contracts (v1 structural backlog complete; parser, graph-coherence, local-assurance, and stable snapshot-graph slices merged)
|
|
23
23
|
**Audience:** contributors and Cursor agents patching `src/logseq_matryca_parser/`
|
|
24
24
|
**Companion:** [`ARCHITECTURE.md`](ARCHITECTURE.md) (LOGOS domain contract) · [`BUG_HUNT_REPORT.md`](BUG_HUNT_REPORT.md) (audit evidence) · [`CONTRIBUTING.md`](../CONTRIBUTING.md)
|
|
25
25
|
|
|
@@ -27,7 +27,14 @@ This document applies **Robert C. Martin's** *Clean Architecture* (dependency ru
|
|
|
27
27
|
|
|
28
28
|
**Adoption model:** **incremental v1**. A full hexagonal package split (`domain/ports.py`, separate driver packages) is **out of scope** for routine PRs. Uncle Bob here is a **quality contract**, not a mandate to rewrite the flat `src/logseq_matryca_parser/` layout in one change.
|
|
29
29
|
|
|
30
|
-
**
|
|
30
|
+
**Cross-repository boundary:** Parser owns deterministic OG parsing, typed ASTs,
|
|
31
|
+
the in-memory graph, and parser-native serialization. [Matryca
|
|
32
|
+
Plumber](https://github.com/MarcoPorcellato/matryca-plumber) may depend on it
|
|
33
|
+
as an internal OG parser and is the sole cross-product Logseq gateway to Trama
|
|
34
|
+
and Brain. Parser does not select sources, operate host adapters, or define
|
|
35
|
+
public `plumber.*` contracts. Public APIs (`LogseqGraph`, `StackMachineParser`,
|
|
36
|
+
`SynapseAdapter`, agent write helpers) stay stable and framework-agnostic; see
|
|
37
|
+
[ADR-0004](decisions/ADR-0004-PARSER-PLUMBER-BOUNDARY.md).
|
|
31
38
|
|
|
32
39
|
---
|
|
33
40
|
|
|
@@ -54,6 +61,10 @@ This document applies **Robert C. Martin's** *Clean Architecture* (dependency ru
|
|
|
54
61
|
| **Adapters** | `synapse.py`, `forge.py`, `agent_writer.py`, `agent_press.py`, `lens.py` | Framework projections (LangChain, LlamaIndex, Obsidian, PyVis) |
|
|
55
62
|
| **Drivers** | `kinetic.py`, `kinetic_commands.py`, `kinetic_export.py`, `__main__.py` | Operator CLI — orchestrates use cases and adapters |
|
|
56
63
|
|
|
64
|
+
Parser runtime modules must not import Plumber, Trama, or Brain. Trama and Brain
|
|
65
|
+
consume Plumber contracts and do not import or know Parser. This is a product
|
|
66
|
+
boundary, not a reason to move existing Parser APIs or LENS behavior in place.
|
|
67
|
+
|
|
57
68
|
```mermaid
|
|
58
69
|
flowchart TB
|
|
59
70
|
subgraph drivers [Drivers]
|
|
@@ -99,6 +110,7 @@ flowchart TB
|
|
|
99
110
|
| Adapters must not import `kinetic` | same |
|
|
100
111
|
| Import cycles between `src/` modules | `0` expected — verify via local graph study (`check` cycles) |
|
|
101
112
|
| Adapters use **public** `LogseqGraph` APIs | Code review + audit SOP |
|
|
113
|
+
| Parser runtime does not import Plumber, Trama, or Brain | [`tests/test_layer_boundary.py`](../tests/test_layer_boundary.py) |
|
|
102
114
|
|
|
103
115
|
### v1 by design (do not "fix" without an epic)
|
|
104
116
|
|
|
@@ -137,7 +149,7 @@ make check
|
|
|
137
149
|
|
|
138
150
|
| Area | Responsibility |
|
|
139
151
|
|------|----------------|
|
|
140
|
-
| Bulk load | `load_directory`, `_enrich_pages_index` |
|
|
152
|
+
| Bulk load | `load_directory`, `from_snapshot_pages`, `_enrich_pages_index` |
|
|
141
153
|
| Incremental | `invalidate_and_reload_page`, watcher |
|
|
142
154
|
| Coherence | Per-graph in-process coordinator shared by readers, writer splices, and watcher reloads |
|
|
143
155
|
| Query | `GraphQuery`, `search_content`, backlinks |
|
|
@@ -159,6 +171,15 @@ pending timers, and waits for admitted routes to finish; callbacks stay FIFO,
|
|
|
159
171
|
isolated, outside graph coordination, and use a separate bounded dispatcher
|
|
160
172
|
close.
|
|
161
173
|
|
|
174
|
+
`SnapshotPage` plus `LogseqGraph.from_snapshot_pages()` is the additive
|
|
175
|
+
in-memory bulk-load boundary. It accepts caller-captured Markdown text and safe
|
|
176
|
+
graph-relative logical paths, parses only through `StackMachineParser.parse()`, and
|
|
177
|
+
then reuses the normal graph index builders. The factory neither discovers nor
|
|
178
|
+
reopens or inspects source paths or the graph-root label; those synthetic paths are
|
|
179
|
+
graph metadata only. Capture,
|
|
180
|
+
filesystem authority, revisions, and cross-product DTO projection remain outside
|
|
181
|
+
Parser.
|
|
182
|
+
|
|
162
183
|
The private inventory and snapshot representations are implementation details,
|
|
163
184
|
not stable public API.
|
|
164
185
|
|
|
@@ -173,6 +194,12 @@ not stable public API.
|
|
|
173
194
|
|
|
174
195
|
**Rule:** no new parsing logic in KINETIC modules — call `LogseqGraph.load_directory` or `StackMachineParser`.
|
|
175
196
|
|
|
197
|
+
LENS remains a compatible optional Parser adapter. Stage 0 marks it
|
|
198
|
+
transitional and feature-frozen while preserving its commands and API without a
|
|
199
|
+
deprecation warning. A later, separately accepted Matryca Trama migration owns
|
|
200
|
+
user-facing graph-intelligence UI; removal or behavior change requires its own
|
|
201
|
+
compatibility decision.
|
|
202
|
+
|
|
176
203
|
### `synapse.py` + `synapse_embed.py` — SYNAPSE adapters
|
|
177
204
|
|
|
178
205
|
| Area | Responsibility |
|
|
@@ -204,6 +204,13 @@ visualizer.export_html(output)
|
|
|
204
204
|
|
|
205
205
|
`export_html()` writes the HTML file but does not open it automatically.
|
|
206
206
|
|
|
207
|
+
LENS is transitional and feature-frozen for this reference-topology workflow.
|
|
208
|
+
`GraphVisualizer`, this recipe, `matryca-parse visualize`, and
|
|
209
|
+
`matryca-parse demo` remain compatible and emit no deprecation warning in Stage
|
|
210
|
+
0. Matryca Trama is the destination for future user-facing graph intelligence;
|
|
211
|
+
a separately reviewed migration must provide compatibility guidance before any
|
|
212
|
+
behavior change.
|
|
213
|
+
|
|
207
214
|
---
|
|
208
215
|
|
|
209
216
|
## Recipe 7 — Contributor test patterns
|
|
@@ -154,7 +154,7 @@ Run `make vendor-name-check` before docs PRs to ensure Ghost Tooling policy (no
|
|
|
154
154
|
## Out of scope for a first PR
|
|
155
155
|
|
|
156
156
|
- Changes to Pydantic models in `logos_core.py` (open a design issue first).
|
|
157
|
-
-
|
|
157
|
+
- Trama graph-intelligence UI ([#3](https://github.com/MarcoPorcellato/logseq-matryca-parser/issues/3)) — cross-product work; Parser LENS remains compatible and no Parser GUI work belongs in a first PR.
|
|
158
158
|
- Bulk mldoc parity work in `logos_parser.py` — high regression risk.
|
|
159
159
|
- Obsidian namespace path alignment — cross-tool behavior, needs design.
|
|
160
160
|
|
|
@@ -65,6 +65,7 @@ entry points.
|
|
|
65
65
|
| [`reference/CONFORMANCE_SUPPORT_MATRIX.md`](reference/CONFORMANCE_SUPPORT_MATRIX.md) | Integrators, contributors | Supported runtimes, public contract tiers, optional adapters, and deprecation rules |
|
|
66
66
|
| [`reference/DEPENDENCY_LICENSE_POLICY.md`](reference/DEPENDENCY_LICENSE_POLICY.md) | Maintainers, release reviewers | Release SBOM, dependency/license inventory, checksum, override, and attestation contract |
|
|
67
67
|
| [`security/DAILY_METRICS_THREAT_MODEL.md`](security/DAILY_METRICS_THREAT_MODEL.md) | Maintainers, security reviewers | Trust boundaries and fail-closed controls for the self-mutating metrics archive |
|
|
68
|
+
| [`security/DEPENDENCY_ADVISORY_EXCEPTIONS.md`](security/DEPENDENCY_ADVISORY_EXCEPTIONS.md) | Maintainers, security reviewers | Exact, time-bounded dependency advisory exceptions and compensating controls |
|
|
68
69
|
| [`decisions/ADR-0001-PROTOCOL_ADAPTER_BOUNDARY.md`](decisions/ADR-0001-PROTOCOL_ADAPTER_BOUNDARY.md) | Maintainers, integrators | Decision to defer protocol endpoints until explicit safety and compatibility gates are met |
|
|
69
70
|
| [`decisions/ADR-0002-OFFICIAL-OKF-V02-MIGRATION-GATE.md`](decisions/ADR-0002-OFFICIAL-OKF-V02-MIGRATION-GATE.md) | Maintainers, documentation reviewers | Decision to preserve the measured official OKF backlog until profile conflicts are resolved |
|
|
70
71
|
| [`decisions/ADR-0003-AAIF-SUBMISSION-GATE.md`](decisions/ADR-0003-AAIF-SUBMISSION-GATE.md) | Maintainers, legal reviewers | Evidence-based NO-GO and reconsideration gate for any AAIF submission |
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: ArchitectureDecision
|
|
3
|
+
title: ADR-0004 Parser and Plumber boundary
|
|
4
|
+
description: Decision that Parser remains a deterministic OG parsing library while Plumber owns the cross-product Logseq gateway.
|
|
5
|
+
status: stable
|
|
6
|
+
classification: active
|
|
7
|
+
audience: maintainers
|
|
8
|
+
owner: logseq-matryca-parser
|
|
9
|
+
authority: source_repository
|
|
10
|
+
execution_mode: reviewed
|
|
11
|
+
last_verified: 2026-09-05
|
|
12
|
+
verified: 2026-09-05
|
|
13
|
+
stale_after: 2027-03-04
|
|
14
|
+
okf_profile: matryca_okf_inspired_quality
|
|
15
|
+
okf_spec_version: null
|
|
16
|
+
supersedes: null
|
|
17
|
+
superseded_by: null
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
# ADR-0004: Parser and Plumber boundary
|
|
21
|
+
|
|
22
|
+
## Status
|
|
23
|
+
|
|
24
|
+
Accepted.
|
|
25
|
+
|
|
26
|
+
## Context
|
|
27
|
+
|
|
28
|
+
Logseq Matryca Parser already provides deterministic parsing of Logseq OG
|
|
29
|
+
Markdown into a typed AST, an in-memory graph, and parser-native
|
|
30
|
+
serializations. Cross-product integration needs one gateway that can select a
|
|
31
|
+
source, own host adapters and session lifecycle, and publish stable contracts
|
|
32
|
+
to product consumers without making those consumers depend on Parser internals.
|
|
33
|
+
|
|
34
|
+
## Decision
|
|
35
|
+
|
|
36
|
+
The supported OG data flow is:
|
|
37
|
+
|
|
38
|
+
```text
|
|
39
|
+
Logseq OG -> Parser -> Plumber -> Trama/Brain
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
Parser owns deterministic OG parsing, typed AST construction, its in-memory
|
|
43
|
+
graph, and parser-native serialization. It accepts caller-provided local
|
|
44
|
+
Markdown inputs, but does not choose a cross-product source, operate a Logseq
|
|
45
|
+
host adapter, own sessions, or define public `plumber.*` contracts.
|
|
46
|
+
|
|
47
|
+
Plumber owns source selection, Logseq host adapters, session lifecycle, and
|
|
48
|
+
versioned public contracts for downstream consumers. The data flow above is not
|
|
49
|
+
a Python dependency direction. The Parser runtime must not import Plumber, Trama, or Brain. Plumber may use Parser internally for an OG source.
|
|
50
|
+
|
|
51
|
+
Trama and Brain consume Plumber contracts. They must not import or know Parser,
|
|
52
|
+
and must not access Logseq OG files or a Logseq DB through a parallel gateway.
|
|
53
|
+
|
|
54
|
+
LENS remains compatible in this slice. Its current API, CLI command, optional
|
|
55
|
+
dependency, and behavior are unchanged. A later, separately reviewed migration
|
|
56
|
+
will move user-facing graph-intelligence visualization to Trama and may begin a
|
|
57
|
+
compatible LENS deprecation. This decision adds no warning, removal, command,
|
|
58
|
+
or API change.
|
|
59
|
+
|
|
60
|
+
Parser remains protocol-neutral under
|
|
61
|
+
[ADR-0001](ADR-0001-PROTOCOL_ADAPTER_BOUNDARY.md). This decision adds no MCP
|
|
62
|
+
server, network endpoint, GUI, release, or compatibility claim.
|
|
63
|
+
|
|
64
|
+
## Consequences
|
|
65
|
+
|
|
66
|
+
- Parser remains independently useful to developer consumers that need only
|
|
67
|
+
deterministic Markdown parsing, an in-memory graph, CLI workflows, or
|
|
68
|
+
parser-native exports.
|
|
69
|
+
- Plumber is the only cross-product boundary between Logseq sources and Trama
|
|
70
|
+
or Brain.
|
|
71
|
+
- Existing Parser public APIs and LENS compatibility promises remain unchanged.
|
|
72
|
+
- Any future UI migration, host adapter, protocol, mutation, or release needs
|
|
73
|
+
its own accepted design and verification evidence.
|
|
74
|
+
|
|
75
|
+
## Verification and rollback
|
|
76
|
+
|
|
77
|
+
`tests/test_plumber_boundary_docs.py` keeps this decision and the maintained
|
|
78
|
+
architecture guides explicit. `tests/test_layer_boundary.py` rejects Parser
|
|
79
|
+
runtime imports of Plumber, Trama, and Brain. Rollback requires a superseding
|
|
80
|
+
ADR and a separately reviewed compatibility plan; it does not authorize an
|
|
81
|
+
implicit import or product-surface change.
|
|
@@ -15,6 +15,7 @@ introduced incrementally. Do not rewrite historical roadmaps into ADRs.
|
|
|
15
15
|
| Privacy-safe local graph assurance | [`ADR-002-local-graph-assurance-boundary.md`](ADR-002-local-graph-assurance-boundary.md) | Accepted M5 aggregate-only local CLI boundary; no content retention or network operation |
|
|
16
16
|
| Documentation lifecycle and MKQ | [`DOCUMENTATION_SYSTEM.md`](../DOCUMENTATION_SYSTEM.md) | Source contract recorded; MKQ-4 enforcement and private profile activation pending under issue #109 |
|
|
17
17
|
| Protocol adapter boundary | [`ADR-0001-PROTOCOL_ADAPTER_BOUNDARY.md`](ADR-0001-PROTOCOL_ADAPTER_BOUNDARY.md) | Accepted: keep the core protocol-neutral until explicit schema, safety, permissions, and conformance gates are met |
|
|
18
|
+
| Parser and Plumber boundary | [`ADR-0004-PARSER-PLUMBER-BOUNDARY.md`](ADR-0004-PARSER-PLUMBER-BOUNDARY.md) | Accepted: Parser owns deterministic OG parsing; Plumber is the sole cross-product Logseq gateway to Trama and Brain |
|
|
18
19
|
| Official OKF v0.2 migration | [`ADR-0002-OFFICIAL-OKF-V02-MIGRATION-GATE.md`](ADR-0002-OFFICIAL-OKF-V02-MIGRATION-GATE.md) | Accepted: defer conformance while the measured 38-finding backlog and nested-index profile conflict remain |
|
|
19
20
|
| AAIF submission | [`ADR-0003-AAIF-SUBMISSION-GATE.md`](ADR-0003-AAIF-SUBMISSION-GATE.md) | Accepted: NO-GO until governance, adoption, legal, live security, and release-evidence gates pass |
|
|
20
21
|
|
|
@@ -38,6 +38,7 @@ navigation layers only.
|
|
|
38
38
|
| [Support and compatibility matrix](reference/CONFORMANCE_SUPPORT_MATRIX.md) | Supported runtimes, public API tiers, optional adapters, and explicit limits |
|
|
39
39
|
| [Dependency, license, SBOM, and provenance policy](reference/DEPENDENCY_LICENSE_POLICY.md) | Release evidence, override, checksum, and attestation contract |
|
|
40
40
|
| [Daily metrics threat model](security/DAILY_METRICS_THREAT_MODEL.md) | Security boundary for the self-mutating repository traffic archive |
|
|
41
|
+
| [Dependency advisory exceptions](security/DEPENDENCY_ADVISORY_EXCEPTIONS.md) | Exact, time-bounded security audit exceptions and compensating controls |
|
|
41
42
|
| [Architecture](CLEAN_CODE_ARCHITECTURE.md) | Canonical architecture and public graph API |
|
|
42
43
|
| [Stellar audit baseline](REPOSITORY_STELLAR_ROADMAP_2026-08-06.md) | Dated evidence-backed audit and original improvement sequence |
|
|
43
44
|
| [GitHub and AAIF readiness study](REPOSITORY_GOVERNANCE_AAIF_STUDY_2026-08-19.md) | Governance, supply-chain, agent, and AAIF-readiness study |
|
|
@@ -19,6 +19,21 @@ superseded_by: null
|
|
|
19
19
|
|
|
20
20
|
# Documentation evolution log
|
|
21
21
|
|
|
22
|
+
## 2026-08-30 — v1.8.2 publication
|
|
23
|
+
|
|
24
|
+
- Published v1.8.2 from PR #198 merge SHA
|
|
25
|
+
`976d5413df27330226d9b3a65b005d129de236b0` at tag `v1.8.2`.
|
|
26
|
+
- Release workflow run [#33295184723](https://github.com/MarcoPorcellato/logseq-matryca-parser/actions/runs/33295184723) completed successfully, creating the [GitHub Release](https://github.com/MarcoPorcellato/logseq-matryca-parser/releases/tag/v1.8.2) and [PyPI 1.8.2](https://pypi.org/project/logseq-matryca-parser/1.8.2/) publication.
|
|
27
|
+
- Downloaded release assets matched `SHA256SUMS`, and GitHub attestation
|
|
28
|
+
verification passed for every listed artifact against this repository:
|
|
29
|
+
|
|
30
|
+
| Artifact | SHA-256 | Attestation |
|
|
31
|
+
| --- | --- | --- |
|
|
32
|
+
| `logseq_matryca_parser-1.8.2-py3-none-any.whl` | `1b3deb43466c63c46ca3b11cd35a2b4436b0ba3528a5f82bcc52fd0a10cd4820` | Verified |
|
|
33
|
+
| `logseq_matryca_parser-1.8.2.tar.gz` | `aa9a15ab43c1197724550fde121023da52d4ade49f9886eaa0c48df04c37be08` | Verified |
|
|
34
|
+
| `SBOM.cdx.json` | `67802e45427a76f0de1bd9ce544eb5199ac48aa00611fca807b5d5fd01c131e0` | Verified |
|
|
35
|
+
| `DEPENDENCY_LICENSES.json` | `fb75132dd4562d8b25dd8dda45ef41ff0fe64a7966d6967cd859071802f20834` | Verified |
|
|
36
|
+
|
|
22
37
|
## 2026-08-30 — v1.8.2 release candidate
|
|
23
38
|
|
|
24
39
|
- Prepared the v1.8.2 release candidate from
|
|
@@ -38,6 +38,7 @@ maintained_documents = [
|
|
|
38
38
|
"docs/decisions/ADR-0001-PROTOCOL_ADAPTER_BOUNDARY.md",
|
|
39
39
|
"docs/decisions/ADR-0002-OFFICIAL-OKF-V02-MIGRATION-GATE.md",
|
|
40
40
|
"docs/decisions/ADR-0003-AAIF-SUBMISSION-GATE.md",
|
|
41
|
+
"docs/decisions/ADR-0004-PARSER-PLUMBER-BOUNDARY.md",
|
|
41
42
|
"docs/decisions/ADR-001-external-oracle-boundary.md",
|
|
42
43
|
"docs/decisions/ADR-002-local-graph-assurance-boundary.md",
|
|
43
44
|
"docs/reference/index.md",
|
|
@@ -48,6 +49,7 @@ maintained_documents = [
|
|
|
48
49
|
"docs/reference/DIAGNOSTICS.md",
|
|
49
50
|
"docs/reference/FILESYSTEM_SAFETY.md",
|
|
50
51
|
"docs/security/DAILY_METRICS_THREAT_MODEL.md",
|
|
52
|
+
"docs/security/DEPENDENCY_ADVISORY_EXCEPTIONS.md",
|
|
51
53
|
"docs/reference/LOCAL_GRAPH_ASSURANCE.md",
|
|
52
54
|
"docs/reference/PERFORMANCE_EVIDENCE.md",
|
|
53
55
|
"docs/rfc/SOURCE_LOCATION_RFC.md",
|
|
@@ -8,8 +8,8 @@ audience: contributors
|
|
|
8
8
|
owner: logseq-matryca-parser
|
|
9
9
|
authority: source_repository
|
|
10
10
|
execution_mode: reviewed
|
|
11
|
-
last_verified: 2026-
|
|
12
|
-
verified: 2026-
|
|
11
|
+
last_verified: 2026-09-05
|
|
12
|
+
verified: 2026-09-05
|
|
13
13
|
stale_after: 2027-02-03
|
|
14
14
|
okf_profile: matryca_okf_inspired_quality
|
|
15
15
|
okf_spec_version: null
|
|
@@ -40,7 +40,7 @@ minor release unless a security issue makes that unsafe.
|
|
|
40
40
|
|---|---|
|
|
41
41
|
| Version | `__version__` |
|
|
42
42
|
| Parser | `StackMachineParser`, `LogosParser`, `LogseqPage`, `LogseqNode`, `LogosNode`, `ASTVisitor` |
|
|
43
|
-
| Graph | `LogseqGraph` |
|
|
43
|
+
| Graph | `LogseqGraph`, `SnapshotPage` |
|
|
44
44
|
| Diagnostics | `Diagnostic`, `DiagnosticCode`, `DiagnosticSeverity`, `collect_graph_diagnostics` |
|
|
45
45
|
| Errors | `LogseqParserError`, `LogseqIndentationError`, `BlockReferenceError`, `PageTitleCollisionError`, `VaultWriteError` |
|
|
46
46
|
| Writer preview | `WriteProposal` |
|
|
@@ -57,6 +57,19 @@ the loader normalizes a textual path with `Path(graph_path).expanduser().resolve
|
|
|
57
57
|
Both strict modes are opt-in, preserving the
|
|
58
58
|
permissive default.
|
|
59
59
|
|
|
60
|
+
`SnapshotPage(logical_path, text)` and
|
|
61
|
+
`LogseqGraph.from_snapshot_pages(graph_path, snapshot_pages, *, strict_refs=False,
|
|
62
|
+
strict_title_collisions=False)` are stable additive graph APIs. The factory accepts
|
|
63
|
+
either a mapping of graph-relative POSIX Markdown paths to already-captured text or
|
|
64
|
+
a sequence of `SnapshotPage` values. It normalizes and orders unique `pages/` and
|
|
65
|
+
`journals/` paths deterministically, accepts at most 1,024 pages and 16 MiB of UTF-8
|
|
66
|
+
text, parses with the existing in-memory parser, and reuses the ordinary graph index
|
|
67
|
+
builders and strict modes. It never discovers or reopens logical source paths.
|
|
68
|
+
Synthetic source paths on the resulting models are metadata for graph behavior, not
|
|
69
|
+
filesystem-read authority; capture, source selection, hashing, and revisions remain
|
|
70
|
+
the caller's responsibility. Its graph-root label is normalized lexically without
|
|
71
|
+
expanding, resolving, or inspecting the caller path.
|
|
72
|
+
|
|
60
73
|
Diagnostic code compatibility, serialization, and path-safety rules are defined
|
|
61
74
|
in the [structured diagnostics contract](DIAGNOSTICS.md).
|
|
62
75
|
Vault-bound writer and asset-read guarantees are defined in the
|
|
@@ -78,6 +91,12 @@ The following integrations remain public but experimental:
|
|
|
78
91
|
Everything not exported from `logseq_matryca_parser.__all__` is internal unless
|
|
79
92
|
another maintained contract explicitly promotes it.
|
|
80
93
|
|
|
94
|
+
`GraphVisualizer` remains experimental, compatible, transitional, and
|
|
95
|
+
feature-frozen in this release line. Stage 0 changes no API and emits no
|
|
96
|
+
deprecation warning. Future user-facing graph intelligence belongs in Matryca
|
|
97
|
+
Trama; a compatible deprecation may begin only through a separately reviewed
|
|
98
|
+
decision, release notes, and migration guidance.
|
|
99
|
+
|
|
81
100
|
## Version source
|
|
82
101
|
|
|
83
102
|
`src/logseq_matryca_parser/_version.py` is the single authoritative version
|