logseq-matryca-parser 1.8.0__tar.gz → 1.8.2__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.
Files changed (253) hide show
  1. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/.github/dependabot.yml +4 -0
  2. logseq_matryca_parser-1.8.2/.github/workflows/ci.yml +150 -0
  3. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/.github/workflows/daily-metrics.yml +4 -1
  4. logseq_matryca_parser-1.8.2/.github/workflows/dependency-hygiene.yml +37 -0
  5. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/.github/workflows/dependency-review.yml +2 -1
  6. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/.github/workflows/parser-adversarial.yml +6 -3
  7. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/.github/workflows/pypi_publish.yml +32 -24
  8. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/.github/workflows/scorecard.yml +3 -2
  9. logseq_matryca_parser-1.8.2/.github/workflows/workflow-analysis.yml +59 -0
  10. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/.pre-commit-config.yaml +4 -0
  11. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/AGENTS.md +3 -1
  12. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/CHANGELOG.md +83 -0
  13. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/CONTRIBUTING.md +3 -2
  14. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/PKG-INFO +17 -7
  15. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/README.md +16 -6
  16. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/RELEASE_HIGHLIGHTS.md +43 -0
  17. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/SECURITY.md +4 -3
  18. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/docs/ARCHITECTURE.md +42 -11
  19. logseq_matryca_parser-1.8.2/docs/CI_ASSURANCE.md +157 -0
  20. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/docs/CLEAN_CODE_ARCHITECTURE.md +24 -5
  21. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/docs/CODEQL.md +7 -0
  22. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/docs/COOKBOOK.md +41 -1
  23. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/docs/LSDOC_REFERENCE_STUDY_AND_EXECUTION_PLAN_2026-08-16.md +151 -18
  24. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/docs/README.md +6 -4
  25. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/docs/RELEASE_PROCESS.md +4 -0
  26. logseq_matryca_parser-1.8.2/docs/ROADMAP_2026-2027.md +121 -0
  27. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/docs/decisions/index.md +0 -18
  28. logseq_matryca_parser-1.8.2/docs/goals/LSDOC_PARSER_ASSURANCE_GOAL.md +162 -0
  29. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/docs/index.md +7 -5
  30. logseq_matryca_parser-1.8.2/docs/internal/ASSURANCE_TERRA_HANDOFF_2026-08-21.md +181 -0
  31. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/docs/internal/M5_LOCAL_GRAPH_ASSURANCE_REVIEW_HANDOFF_2026-08-18.md +4 -0
  32. logseq_matryca_parser-1.8.2/docs/internal/POST_V1_8_1_BACKLOG_EXECUTION_2026-08-25.md +391 -0
  33. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/docs/log.md +135 -3
  34. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/docs/maintained.toml +2 -0
  35. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/docs/quality/README.md +4 -3
  36. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/docs/reference/API_STABILITY.md +3 -1
  37. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/docs/reference/DEPENDENCY_LICENSE_POLICY.md +12 -3
  38. logseq_matryca_parser-1.8.2/docs/reference/PERFORMANCE_EVIDENCE.md +78 -0
  39. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/docs/reference/index.md +1 -18
  40. logseq_matryca_parser-1.8.2/docs/superpowers/plans/2026-08-20-parser-lexical-state.md +524 -0
  41. logseq_matryca_parser-1.8.2/docs/superpowers/plans/2026-08-20-runtime-evidence-harness.md +613 -0
  42. logseq_matryca_parser-1.8.2/docs/superpowers/plans/2026-08-21-graph-mutation-coherence.md +931 -0
  43. logseq_matryca_parser-1.8.2/docs/superpowers/plans/2026-08-21-post-m9-reconciliation.md +145 -0
  44. logseq_matryca_parser-1.8.2/docs/superpowers/plans/2026-08-24-local-assurance-coverage.md +167 -0
  45. logseq_matryca_parser-1.8.2/docs/superpowers/plans/2026-08-30-native-github-actions.md +307 -0
  46. logseq_matryca_parser-1.8.2/docs/superpowers/specs/2026-08-20-parser-lexical-state-design.md +152 -0
  47. logseq_matryca_parser-1.8.2/docs/superpowers/specs/2026-08-21-graph-mutation-coherence-design.md +303 -0
  48. logseq_matryca_parser-1.8.2/docs/superpowers/specs/2026-08-24-meaningful-test-coverage-design.md +152 -0
  49. logseq_matryca_parser-1.8.2/docs/superpowers/specs/2026-08-30-native-github-actions-design.md +148 -0
  50. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/metrics/index.json +1 -1
  51. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/metrics/quarters/2026-Q3.json +4509 -2269
  52. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/pyproject.toml +7 -3
  53. logseq_matryca_parser-1.8.2/release-bundle/RELEASE_NOTES.md +26 -0
  54. logseq_matryca_parser-1.8.2/src/logseq_matryca_parser/_lexical_state.py +68 -0
  55. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/src/logseq_matryca_parser/_version.py +1 -1
  56. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/src/logseq_matryca_parser/agent_writer.py +24 -1
  57. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/src/logseq_matryca_parser/diagnostics.py +11 -2
  58. logseq_matryca_parser-1.8.2/src/logseq_matryca_parser/graph.py +1449 -0
  59. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/src/logseq_matryca_parser/kinetic_commands.py +2 -2
  60. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/src/logseq_matryca_parser/local_graph_assurance.py +5 -2
  61. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/src/logseq_matryca_parser/logos_parser.py +146 -101
  62. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/src/logseq_matryca_parser/synapse.py +4 -3
  63. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/tests/parser_assurance/invariants.py +8 -6
  64. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/tests/parser_assurance/work_growth.py +7 -20
  65. logseq_matryca_parser-1.8.2/tests/performance/__init__.py +1 -0
  66. logseq_matryca_parser-1.8.2/tests/performance/runtime_evidence.py +326 -0
  67. logseq_matryca_parser-1.8.2/tests/performance/synthetic_vault.py +110 -0
  68. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/tests/test_agent_writer.py +67 -0
  69. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/tests/test_check_wheel_contract.py +1 -1
  70. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/tests/test_graph.py +105 -0
  71. logseq_matryca_parser-1.8.2/tests/test_graph_concurrency.py +916 -0
  72. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/tests/test_kinetic.py +3 -1
  73. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/tests/test_lens.py +18 -0
  74. logseq_matryca_parser-1.8.2/tests/test_local_graph_assurance.py +720 -0
  75. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/tests/test_logos_parser.py +154 -0
  76. logseq_matryca_parser-1.8.2/tests/test_module_entrypoint.py +17 -0
  77. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/tests/test_parser_deep_refresh.py +60 -1
  78. logseq_matryca_parser-1.8.2/tests/test_parser_lexical_state.py +47 -0
  79. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/tests/test_parser_work_growth.py +20 -2
  80. logseq_matryca_parser-1.8.2/tests/test_performance_evidence_docs.py +17 -0
  81. logseq_matryca_parser-1.8.2/tests/test_performance_synthetic_vault.py +83 -0
  82. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/tests/test_public_api_contract.py +6 -0
  83. logseq_matryca_parser-1.8.2/tests/test_quality_gate_contract.py +489 -0
  84. logseq_matryca_parser-1.8.2/tests/test_runtime_evidence.py +167 -0
  85. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/tests/test_synapse.py +7 -3
  86. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/tests/test_writer_security.py +4 -2
  87. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/tests/typing_samples/public_api.py +4 -1
  88. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/uv.lock +7 -3
  89. logseq_matryca_parser-1.8.2/zizmor.yml +3 -0
  90. logseq_matryca_parser-1.8.0/.github/workflows/ci.yml +0 -80
  91. logseq_matryca_parser-1.8.0/docs/ROADMAP_2026-2027.md +0 -80
  92. logseq_matryca_parser-1.8.0/docs/goals/LSDOC_PARSER_ASSURANCE_GOAL.md +0 -101
  93. logseq_matryca_parser-1.8.0/release-bundle/RELEASE_NOTES.md +0 -94
  94. logseq_matryca_parser-1.8.0/src/logseq_matryca_parser/graph.py +0 -1018
  95. logseq_matryca_parser-1.8.0/tests/test_local_graph_assurance.py +0 -233
  96. logseq_matryca_parser-1.8.0/tests/test_quality_gate_contract.py +0 -147
  97. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/.cursorignore +0 -0
  98. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/.cursorrules +0 -0
  99. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/.gitattributes +0 -0
  100. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/.github/CODEOWNERS +0 -0
  101. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/.github/FUNDING.yml +0 -0
  102. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  103. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/.github/ISSUE_TEMPLATE/clean_architecture.yml +0 -0
  104. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  105. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  106. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  107. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/.github/clean_arch_issue_numbers.txt +0 -0
  108. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/.github/copilot-instructions.md +0 -0
  109. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/.github/dependency-license-overrides.toml +0 -0
  110. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/.github/labels.yml +0 -0
  111. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/.github/scripts/create_clean_arch_issues.sh +0 -0
  112. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/.github/scripts/create_good_first_issues.sh +0 -0
  113. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/.gitignore +0 -0
  114. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/.repomixignore +0 -0
  115. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/CITATION.cff +0 -0
  116. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/CLAUDE.md +0 -0
  117. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/CODE_OF_CONDUCT.md +0 -0
  118. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/GOVERNANCE.md +0 -0
  119. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/LICENSE +0 -0
  120. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/MAINTAINERS.md +0 -0
  121. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/Makefile +0 -0
  122. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/NOTICE +0 -0
  123. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/SUPPORT.md +0 -0
  124. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/claude-skill-logseq-read/SKILL.md +0 -0
  125. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/claude-skill-logseq-read/scripts/parse_logseq.py +0 -0
  126. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/docs/AAIF_ALIGNMENT.md +0 -0
  127. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/docs/AI_CONTRIBUTION_POLICY.md +0 -0
  128. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/docs/BUG_HUNT_REPORT.md +0 -0
  129. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/docs/DOCUMENTATION_SYSTEM.md +0 -0
  130. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/docs/GOOD_FIRST_ISSUES.md +0 -0
  131. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/docs/ISSUE_TRIAGE_POLICY.md +0 -0
  132. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/docs/README_READABILITY_REPORT_2026-08-08.md +0 -0
  133. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/docs/REPOSITORY_GOVERNANCE_AAIF_STUDY_2026-08-19.md +0 -0
  134. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/docs/REPOSITORY_IMPROVEMENT_STUDY_2026-07-28.md +0 -0
  135. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/docs/REPOSITORY_STELLAR_ROADMAP_2026-08-06.md +0 -0
  136. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/docs/decisions/ADR-0001-PROTOCOL_ADAPTER_BOUNDARY.md +0 -0
  137. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/docs/decisions/ADR-0002-OFFICIAL-OKF-V02-MIGRATION-GATE.md +0 -0
  138. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/docs/decisions/ADR-0003-AAIF-SUBMISSION-GATE.md +0 -0
  139. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/docs/decisions/ADR-001-external-oracle-boundary.md +0 -0
  140. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/docs/decisions/ADR-002-local-graph-assurance-boundary.md +0 -0
  141. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/docs/design-docs/ARCHITECTURE_BLUEPRINT.md +0 -0
  142. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/docs/design-docs/CODE_SCAFFOLD.md +0 -0
  143. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/docs/design-docs/LOGSEQ_ASSET_RESOLUTION_SPEC.md +0 -0
  144. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/docs/design-docs/LOGSEQ_DATASCRIPT_MAPPING.md +0 -0
  145. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/docs/design-docs/LOGSEQ_TEMPORAL_ONTOLOGY.md +0 -0
  146. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/docs/design-docs/OFFICIAL_MLDOC_SPECS.md +0 -0
  147. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/docs/design-docs/README.md +0 -0
  148. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/docs/design-docs/REFERENCE_SPEC.md +0 -0
  149. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/docs/error_log.md +0 -0
  150. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/docs/internal/LOCAL_CODE_STUDY.md +0 -0
  151. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/docs/internal/M1A_CORRECTIVE_HARDENING_RESTART_HANDOFF_2026-08-16.md +0 -0
  152. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/docs/internal/STATIC_ANALYSIS_POLICY.md +0 -0
  153. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/docs/logseq_ast_primer.md +0 -0
  154. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/docs/quality/CLEAN_ARCH_BACKLOG.md +0 -0
  155. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/docs/quality/GITHUB_CLEAN_ARCH_ROADMAP.md +0 -0
  156. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/docs/quality/ISSUE_RECONCILIATION_2026-08-06.md +0 -0
  157. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/docs/quality/ISSUE_TRIAGE_2026-07.md +0 -0
  158. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/docs/reference/AGENT_ACTION_CONTRACT.md +0 -0
  159. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/docs/reference/CONFORMANCE_SUPPORT_MATRIX.md +0 -0
  160. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/docs/reference/DIAGNOSTICS.md +0 -0
  161. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/docs/reference/FILESYSTEM_SAFETY.md +0 -0
  162. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/docs/reference/LOCAL_GRAPH_ASSURANCE.md +0 -0
  163. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/docs/rfc/OLLAMA_RAG.md +0 -0
  164. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/docs/rfc/SOURCE_LOCATION_RFC.md +0 -0
  165. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/docs/roadmaps/ROADMAP_AGENT_NATIVE_XRAY.md +0 -0
  166. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/docs/roadmaps/ROADMAP_CLI_HYDRATION_AND_ENRICHMENT.md +0 -0
  167. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/docs/roadmaps/ROADMAP_CONTEXT_SYNTHESIS_AND_SCOPING.md +0 -0
  168. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/docs/roadmaps/ROADMAP_EMBED_EXPANSION_AND_FLUENT_QUERIES.md +0 -0
  169. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/docs/roadmaps/ROADMAP_GRAPH_RAG_SEMANTICS.md +0 -0
  170. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/docs/roadmaps/ROADMAP_HEADLESS_WRITER.md +0 -0
  171. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/docs/roadmaps/ROADMAP_INCREMENTAL_WATCHER.md +0 -0
  172. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/docs/roadmaps/ROADMAP_INLINE_SHIELD_AND_NAMESPACES.md +0 -0
  173. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/docs/roadmaps/ROADMAP_OBSIDIAN_ADAPTER.md +0 -0
  174. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/docs/roadmaps/ROADMAP_ROBUSTNESS_AND_SOFT_BREAKS.md +0 -0
  175. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/docs/roadmaps/ROADMAP_TOML_FIX_AND_PYPI_DISTRIBUTION.md +0 -0
  176. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/docs/roadmaps/ROADMAP_UUID_AND_GRAPH_SUPERPOWERS.md +0 -0
  177. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/docs/security/DAILY_METRICS_THREAT_MODEL.md +0 -0
  178. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/examples/demo_logseq_journal.md +0 -0
  179. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/examples/run_demo.py +0 -0
  180. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/examples/run_synapse_rag.py +0 -0
  181. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/legacy/local_digestor.py +0 -0
  182. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/lib/bindings/utils.js +0 -0
  183. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/lib/tom-select/tom-select.complete.min.js +0 -0
  184. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/lib/tom-select/tom-select.css +0 -0
  185. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/lib/vis-9.1.2/vis-network.css +0 -0
  186. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/lib/vis-9.1.2/vis-network.min.js +0 -0
  187. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/llms.txt +0 -0
  188. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/metrics/quarters/2026-Q2.json +0 -0
  189. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/repomix-output-parser.xml +0 -0
  190. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/scripts/__init__.py +0 -0
  191. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/scripts/archive_repository_metrics.py +0 -0
  192. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/scripts/check_documentation.py +0 -0
  193. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/scripts/check_release_contract.py +0 -0
  194. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/scripts/check_vendor_free_docs.sh +0 -0
  195. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/scripts/check_wheel_contract.py +0 -0
  196. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/scripts/debug_pre_release.py +0 -0
  197. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/scripts/extract_changelog.py +0 -0
  198. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/scripts/generate_supply_chain_evidence.py +0 -0
  199. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/scripts/update_compat_snapshots.py +0 -0
  200. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/src/logseq_matryca_parser/.gitignore +0 -0
  201. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/src/logseq_matryca_parser/NOTICE +0 -0
  202. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/src/logseq_matryca_parser/__init__.py +0 -0
  203. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/src/logseq_matryca_parser/__main__.py +0 -0
  204. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/src/logseq_matryca_parser/agent_press.py +0 -0
  205. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/src/logseq_matryca_parser/exceptions.py +0 -0
  206. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/src/logseq_matryca_parser/forge.py +0 -0
  207. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/src/logseq_matryca_parser/kinetic.py +0 -0
  208. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/src/logseq_matryca_parser/kinetic_export.py +0 -0
  209. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/src/logseq_matryca_parser/lens.py +0 -0
  210. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/src/logseq_matryca_parser/logos_core.py +0 -0
  211. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/src/logseq_matryca_parser/logseq_markdown.py +0 -0
  212. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/src/logseq_matryca_parser/logseq_paths.py +0 -0
  213. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/src/logseq_matryca_parser/py.typed +0 -0
  214. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/src/logseq_matryca_parser/pyproject.toml +0 -0
  215. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/src/logseq_matryca_parser/synapse_embed.py +0 -0
  216. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/tests/__init__.py +0 -0
  217. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/tests/fixtures/compat/v1/deep-refresh-regression.md +0 -0
  218. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/tests/fixtures/compat/v1/hierarchy-identity.md +0 -0
  219. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/tests/fixtures/compat/v1/manifest.json +0 -0
  220. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/tests/fixtures/compat/v1/pages/nested-title-entrypoint.md +0 -0
  221. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/tests/fixtures/compat/v1/properties-and-links.md +0 -0
  222. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/tests/fixtures/compat/v1/snapshots/m1a-deep-refresh.exact.json +0 -0
  223. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/tests/fixtures/compat/v1/snapshots/m1a-hierarchy-identity.exact.json +0 -0
  224. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/tests/fixtures/compat/v1/snapshots/m1a-nested-entrypoint.exact.json +0 -0
  225. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/tests/fixtures/compat/v1/snapshots/m1a-properties-links-assets.exact.json +0 -0
  226. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/tests/fixtures/compat/v1/snapshots/m1a-softbreak-logbook.exact.json +0 -0
  227. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/tests/fixtures/compat/v1/snapshots/m1a-task-timing.exact.json +0 -0
  228. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/tests/fixtures/compat/v1/soft-breaks-properties-logbook.md +0 -0
  229. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/tests/fixtures/compat/v1/tasks-priority-time.md +0 -0
  230. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/tests/parser_assurance/__init__.py +0 -0
  231. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/tests/parser_assurance/adversarial.py +0 -0
  232. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/tests/parser_assurance/corpus.py +0 -0
  233. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/tests/parser_assurance/projection.py +0 -0
  234. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/tests/test_agent_press.py +0 -0
  235. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/tests/test_archive_repository_metrics.py +0 -0
  236. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/tests/test_check_documentation.py +0 -0
  237. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/tests/test_check_release_contract.py +0 -0
  238. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/tests/test_compat_corpus.py +0 -0
  239. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/tests/test_demo_example.py +0 -0
  240. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/tests/test_diagnostics.py +0 -0
  241. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/tests/test_exceptions.py +0 -0
  242. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/tests/test_extract_changelog.py +0 -0
  243. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/tests/test_forge.py +0 -0
  244. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/tests/test_generate_supply_chain_evidence.py +0 -0
  245. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/tests/test_graph_collisions.py +0 -0
  246. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/tests/test_layer_boundary.py +0 -0
  247. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/tests/test_llms_txt_contract.py +0 -0
  248. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/tests/test_logseq_markdown.py +0 -0
  249. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/tests/test_logseq_paths.py +0 -0
  250. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/tests/test_package_version.py +0 -0
  251. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/tests/test_parser_adversarial.py +0 -0
  252. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/tests/test_pre_release_roundtrip.py +0 -0
  253. {logseq_matryca_parser-1.8.0 → logseq_matryca_parser-1.8.2}/tests/test_synapse_example.py +0 -0
@@ -5,9 +5,13 @@ updates:
5
5
  directory: "/"
6
6
  schedule:
7
7
  interval: "weekly"
8
+ cooldown:
9
+ default-days: 7
8
10
 
9
11
  # Keep GitHub Actions current (reads .github/workflows/ci.yml).
10
12
  - package-ecosystem: "github-actions"
11
13
  directory: "/"
12
14
  schedule:
13
15
  interval: "weekly"
16
+ cooldown:
17
+ default-days: 7
@@ -0,0 +1,150 @@
1
+ name: Logos Protocol CI
2
+
3
+ on:
4
+ push:
5
+ branches: ["main"]
6
+ pull_request:
7
+ workflow_dispatch:
8
+
9
+ concurrency:
10
+ group: ${{ github.workflow }}-${{ github.ref }}
11
+ cancel-in-progress: true
12
+
13
+ permissions:
14
+ contents: read
15
+
16
+ jobs:
17
+ quality:
18
+ name: Quality (Python 3.12)
19
+ runs-on: ubuntu-24.04
20
+ timeout-minutes: 15
21
+ steps:
22
+ - name: Checkout without credentials
23
+ uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
24
+ with:
25
+ persist-credentials: false
26
+
27
+ - name: Install pinned uv
28
+ uses: astral-sh/setup-uv@20cfd1bf945f4377ade1205e4dbc17946fc9a30d # v10.0.1
29
+ with:
30
+ version: "0.11.7"
31
+ python-version: "3.12"
32
+ enable-cache: true
33
+
34
+ - name: Sync locked dependencies
35
+ run: uv sync --locked --all-extras
36
+
37
+ - name: Lint
38
+ run: make lint
39
+
40
+ - name: Type check
41
+ run: make check
42
+
43
+ - name: Validate repository policy
44
+ run: make vendor-name-check
45
+
46
+ - name: Validate documentation
47
+ run: make docs-check
48
+
49
+ - name: Verify checkout unchanged
50
+ run: make verify-clean
51
+
52
+ tests:
53
+ name: Tests (${{ matrix.os }}, Python ${{ matrix.python-version }})
54
+ runs-on: ${{ matrix.os }}
55
+ timeout-minutes: 20
56
+ strategy:
57
+ fail-fast: false
58
+ matrix:
59
+ os: [ubuntu-24.04, macos-15, windows-2025]
60
+ python-version: ["3.12", "3.13"]
61
+ steps:
62
+ - name: Checkout without credentials
63
+ uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
64
+ with:
65
+ persist-credentials: false
66
+
67
+ - name: Install pinned uv
68
+ uses: astral-sh/setup-uv@20cfd1bf945f4377ade1205e4dbc17946fc9a30d # v10.0.1
69
+ with:
70
+ version: "0.11.7"
71
+ python-version: ${{ matrix.python-version }}
72
+ enable-cache: true
73
+
74
+ - name: Sync locked dependencies
75
+ run: uv sync --locked --all-extras
76
+
77
+ - name: Run complete test suite
78
+ run: >-
79
+ uv run pytest
80
+ --cov=src/logseq_matryca_parser
81
+ --cov-report=term-missing
82
+ --cov-fail-under=80
83
+ -v tests/
84
+
85
+ dependency-audit:
86
+ name: Production dependency audit
87
+ runs-on: ubuntu-24.04
88
+ timeout-minutes: 10
89
+ steps:
90
+ - name: Checkout without credentials
91
+ uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
92
+ with:
93
+ persist-credentials: false
94
+
95
+ - name: Install pinned uv
96
+ uses: astral-sh/setup-uv@20cfd1bf945f4377ade1205e4dbc17946fc9a30d # v10.0.1
97
+ with:
98
+ version: "0.11.7"
99
+ python-version: "3.12"
100
+ enable-cache: true
101
+
102
+ - name: Sync locked dependencies
103
+ run: uv sync --locked --all-extras
104
+
105
+ - name: Export every production dependency
106
+ run: >-
107
+ uv export
108
+ --all-extras
109
+ --no-dev
110
+ --no-emit-workspace
111
+ --output-file "${{ runner.temp }}/requirements-audit.txt"
112
+
113
+ - name: Audit exported dependencies
114
+ run: uv run pip-audit --no-deps --disable-pip -r "${{ runner.temp }}/requirements-audit.txt"
115
+
116
+ package-contract:
117
+ name: Wheel and source distribution contract
118
+ runs-on: ubuntu-24.04
119
+ timeout-minutes: 10
120
+ steps:
121
+ - name: Checkout without credentials
122
+ uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
123
+ with:
124
+ persist-credentials: false
125
+
126
+ - name: Install pinned uv
127
+ uses: astral-sh/setup-uv@20cfd1bf945f4377ade1205e4dbc17946fc9a30d # v10.0.1
128
+ with:
129
+ version: "0.11.7"
130
+ python-version: "3.12"
131
+ enable-cache: true
132
+
133
+ - name: Sync locked dependencies
134
+ run: uv sync --locked --all-extras
135
+
136
+ - name: Build wheel and source distribution
137
+ run: uv build --out-dir dist-contract
138
+
139
+ - name: Verify wheel metadata and PEP 561 marker
140
+ run: uv run python scripts/check_wheel_contract.py dist-contract/*.whl
141
+
142
+ - name: Validate distribution metadata
143
+ run: uvx --from twine==6.2.0 twine check dist-contract/*
144
+
145
+ - name: Verify downstream typing from the wheel
146
+ run: |
147
+ uv venv "${{ runner.temp }}/typing-venv"
148
+ uv pip install --python "${{ runner.temp }}/typing-venv/bin/python" mypy==1.20.2 dist-contract/*.whl
149
+ cd "${{ runner.temp }}"
150
+ "${{ runner.temp }}/typing-venv/bin/python" -m mypy --strict "${{ github.workspace }}/tests/typing_samples/public_api.py"
@@ -19,16 +19,19 @@ env:
19
19
  jobs:
20
20
  save-metrics:
21
21
  if: github.ref == 'refs/heads/main'
22
- runs-on: ubuntu-latest
22
+ runs-on: ubuntu-24.04
23
+ timeout-minutes: 10
23
24
  permissions:
24
25
  contents: write
25
26
  steps:
26
27
  - name: Checkout trusted default branch
28
+ # zizmor: ignore[artipacked] -- this trusted main-only job must push metrics.
27
29
  uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
28
30
  with:
29
31
  ref: main
30
32
  fetch-depth: 0
31
33
  token: ${{ github.token }}
34
+ persist-credentials: true
32
35
 
33
36
  - name: Set up Python
34
37
  uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
@@ -0,0 +1,37 @@
1
+ name: Dependency Hygiene Audit
2
+
3
+ on:
4
+ schedule:
5
+ - cron: "23 4 1 * *"
6
+ workflow_dispatch:
7
+
8
+ concurrency:
9
+ group: dependency-hygiene-${{ github.repository }}
10
+ cancel-in-progress: false
11
+
12
+ permissions:
13
+ contents: read
14
+
15
+ jobs:
16
+ deptry:
17
+ name: Check dependency declarations
18
+ runs-on: ubuntu-24.04
19
+ timeout-minutes: 5
20
+ steps:
21
+ - name: Checkout without credentials
22
+ uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
23
+ with:
24
+ persist-credentials: false
25
+
26
+ - name: Install pinned uv without a shared cache
27
+ uses: astral-sh/setup-uv@20cfd1bf945f4377ade1205e4dbc17946fc9a30d # v10.0.1
28
+ with:
29
+ version: "0.11.7"
30
+ python-version: "3.12"
31
+ enable-cache: false
32
+
33
+ - name: Sync locked project environment
34
+ run: uv sync --locked --all-extras
35
+
36
+ - name: Check dependency declarations
37
+ run: uv run --with deptry==0.25.1 deptry . --github-output
@@ -13,7 +13,8 @@ concurrency:
13
13
  jobs:
14
14
  dependency-review:
15
15
  name: Block newly introduced vulnerable dependencies
16
- runs-on: ubuntu-latest
16
+ runs-on: ubuntu-24.04
17
+ timeout-minutes: 10
17
18
  steps:
18
19
  - name: Checkout dependency manifests
19
20
  uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
@@ -14,21 +14,24 @@ permissions:
14
14
 
15
15
  jobs:
16
16
  bounded-generated-assurance:
17
- runs-on: ubuntu-latest
17
+ runs-on: ubuntu-24.04
18
18
  timeout-minutes: 10
19
19
 
20
20
  steps:
21
21
  - name: Checkout code
22
22
  uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
23
+ with:
24
+ persist-credentials: false
23
25
 
24
26
  - name: Install uv
25
- uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0
27
+ uses: astral-sh/setup-uv@20cfd1bf945f4377ade1205e4dbc17946fc9a30d # v10.0.1
26
28
  with:
29
+ version: "0.11.7"
27
30
  python-version: "3.12"
28
31
  enable-cache: true
29
32
 
30
33
  - name: Sync dependencies
31
- run: uv sync --all-extras
34
+ run: uv sync --locked --all-extras
32
35
 
33
36
  - name: Run bounded broad profile
34
37
  run: uv run python -m tests.parser_assurance.adversarial --profile broad
@@ -15,7 +15,8 @@ permissions:
15
15
  jobs:
16
16
  pre-flight:
17
17
  name: Pre-flight checks (Python ${{ matrix.python-version }})
18
- runs-on: ubuntu-latest
18
+ runs-on: ubuntu-24.04
19
+ timeout-minutes: 20
19
20
  strategy:
20
21
  fail-fast: false
21
22
  matrix:
@@ -23,21 +24,23 @@ jobs:
23
24
  steps:
24
25
  - name: Checkout exact tag
25
26
  uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
27
+ with:
28
+ persist-credentials: false
26
29
 
27
30
  - name: Install uv
28
- uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0
31
+ uses: astral-sh/setup-uv@20cfd1bf945f4377ade1205e4dbc17946fc9a30d # v10.0.1
29
32
  with:
30
33
  version: "0.11.7"
31
34
  python-version: ${{ matrix.python-version }}
32
- enable-cache: true
35
+ enable-cache: false
33
36
 
34
37
  - name: Sync locked dependencies
35
38
  run: uv sync --locked --all-extras
36
39
 
37
40
  - name: Audit production dependencies
38
41
  run: |
39
- uv export --no-dev --no-emit-workspace --no-hashes -o "${{ runner.temp }}/requirements-audit.txt"
40
- uv run pip-audit -r "${{ runner.temp }}/requirements-audit.txt"
42
+ uv export --all-extras --no-dev --no-emit-workspace -o "${{ runner.temp }}/requirements-audit.txt"
43
+ uv run pip-audit --no-deps --disable-pip -r "${{ runner.temp }}/requirements-audit.txt"
41
44
 
42
45
  - name: Run full quality gate
43
46
  run: make all
@@ -48,7 +51,8 @@ jobs:
48
51
  build:
49
52
  name: Build immutable release bundle
50
53
  needs: pre-flight
51
- runs-on: ubuntu-latest
54
+ runs-on: ubuntu-24.04
55
+ timeout-minutes: 15
52
56
  permissions:
53
57
  contents: read
54
58
  id-token: write
@@ -58,13 +62,14 @@ jobs:
58
62
  uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
59
63
  with:
60
64
  fetch-depth: 0
65
+ persist-credentials: false
61
66
 
62
67
  - name: Install uv
63
- uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0
68
+ uses: astral-sh/setup-uv@20cfd1bf945f4377ade1205e4dbc17946fc9a30d # v10.0.1
64
69
  with:
65
70
  version: "0.11.7"
66
71
  python-version: "3.12"
67
- enable-cache: true
72
+ enable-cache: false
68
73
 
69
74
  - name: Sync locked dependencies
70
75
  run: uv sync --locked --all-extras
@@ -115,7 +120,7 @@ jobs:
115
120
  | sha256sum --check -
116
121
 
117
122
  - name: Attest release artifact provenance
118
- uses: actions/attest@508db95dd578ae2727ebd6217d5ba78e4fbda05d # v4.2.1
123
+ uses: actions/attest@1e69f48acb82d1966a394da916b4c1698aa569d6 # v4.2.2
119
124
  with:
120
125
  subject-path: |
121
126
  release-bundle/dist/*
@@ -124,7 +129,7 @@ jobs:
124
129
  release-bundle/SHA256SUMS
125
130
 
126
131
  - name: Bind the production SBOM to the distributions
127
- uses: actions/attest@508db95dd578ae2727ebd6217d5ba78e4fbda05d # v4.2.1
132
+ uses: actions/attest@1e69f48acb82d1966a394da916b4c1698aa569d6 # v4.2.2
128
133
  with:
129
134
  subject-path: release-bundle/dist/*
130
135
  sbom-path: release-bundle/SBOM.cdx.json
@@ -154,7 +159,8 @@ jobs:
154
159
  publish:
155
160
  name: Publish exact distributions to PyPI
156
161
  needs: build
157
- runs-on: ubuntu-latest
162
+ runs-on: ubuntu-24.04
163
+ timeout-minutes: 10
158
164
  environment:
159
165
  name: pypi
160
166
  url: https://pypi.org/p/logseq-matryca-parser
@@ -182,7 +188,8 @@ jobs:
182
188
  github-release:
183
189
  name: Publish GitHub Release from exact distributions
184
190
  needs: publish
185
- runs-on: ubuntu-latest
191
+ runs-on: ubuntu-24.04
192
+ timeout-minutes: 10
186
193
  permissions:
187
194
  contents: write
188
195
  steps:
@@ -199,15 +206,16 @@ jobs:
199
206
  | sha256sum --check -
200
207
 
201
208
  - name: Create GitHub Release with verified artifacts
202
- uses: softprops/action-gh-release@3d0d9888cb7fd7b750713d6e236d1fcb99157228 # v3.0.2
203
- with:
204
- tag_name: ${{ github.ref_name }}
205
- name: ${{ github.ref_name }}
206
- body_path: release-bundle/RELEASE_NOTES.md
207
- files: |
208
- release-bundle/dist/*
209
- release-bundle/SBOM.cdx.json
210
- release-bundle/DEPENDENCY_LICENSES.json
211
- release-bundle/SHA256SUMS
212
- generate_release_notes: false
213
- make_latest: true
209
+ env:
210
+ GH_TOKEN: ${{ github.token }}
211
+ run: |
212
+ gh release create "$GITHUB_REF_NAME" \
213
+ release-bundle/dist/* \
214
+ release-bundle/SBOM.cdx.json \
215
+ release-bundle/DEPENDENCY_LICENSES.json \
216
+ release-bundle/SHA256SUMS \
217
+ --repo "$GITHUB_REPOSITORY" \
218
+ --verify-tag \
219
+ --title "$GITHUB_REF_NAME" \
220
+ --notes-file release-bundle/RELEASE_NOTES.md \
221
+ --latest
@@ -11,7 +11,8 @@ permissions: read-all
11
11
  jobs:
12
12
  analysis:
13
13
  name: Scorecard analysis
14
- runs-on: ubuntu-latest
14
+ runs-on: ubuntu-24.04
15
+ timeout-minutes: 10
15
16
  permissions:
16
17
  contents: read
17
18
  security-events: write
@@ -38,6 +39,6 @@ jobs:
38
39
  if-no-files-found: error
39
40
 
40
41
  - name: Publish findings to code scanning
41
- uses: github/codeql-action/upload-sarif@f205ea1c3313d32999d8d6a48b4f6530d4437b38 # v4.37.4
42
+ uses: github/codeql-action/upload-sarif@db488ddef3bf6cb639b32c2e9a7c0a7ea8271d28 # v4.37.8
42
43
  with:
43
44
  sarif_file: results.sarif
@@ -0,0 +1,59 @@
1
+ name: Workflow Static Analysis
2
+
3
+ on:
4
+ push:
5
+ branches: ["main"]
6
+ paths:
7
+ - ".github/workflows/**"
8
+ - ".github/dependabot.yml"
9
+ - ".pre-commit-config.yaml"
10
+ - "zizmor.yml"
11
+ pull_request:
12
+ paths:
13
+ - ".github/workflows/**"
14
+ - ".github/dependabot.yml"
15
+ - ".pre-commit-config.yaml"
16
+ - "zizmor.yml"
17
+ workflow_dispatch:
18
+
19
+ concurrency:
20
+ group: ${{ github.workflow }}-${{ github.ref }}
21
+ cancel-in-progress: true
22
+
23
+ permissions:
24
+ contents: read
25
+
26
+ jobs:
27
+ workflow-analysis:
28
+ name: Validate workflow semantics and security
29
+ runs-on: ubuntu-24.04
30
+ timeout-minutes: 5
31
+ steps:
32
+ - name: Checkout without credentials
33
+ uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
34
+ with:
35
+ persist-credentials: false
36
+
37
+ - name: Install pinned uv without a shared cache
38
+ uses: astral-sh/setup-uv@20cfd1bf945f4377ade1205e4dbc17946fc9a30d # v10.0.1
39
+ with:
40
+ version: "0.11.7"
41
+ python-version: "3.12"
42
+ enable-cache: false
43
+
44
+ - name: Install checksum-verified actionlint 1.7.12
45
+ run: |
46
+ archive="${RUNNER_TEMP}/actionlint_1.7.12_linux_amd64.tar.gz"
47
+ curl --proto '=https' --tlsv1.2 --fail --location --silent --show-error \
48
+ --output "$archive" \
49
+ https://github.com/rhysd/actionlint/releases/download/v1.7.12/actionlint_1.7.12_linux_amd64.tar.gz
50
+ echo "8aca8db96f1b94770f1b0d72b6dddcb1ebb8123cb3712530b08cc387b349a3d8 $archive" \
51
+ | sha256sum --check --strict
52
+ tar --extract --gzip --file "$archive" --directory "$RUNNER_TEMP" actionlint
53
+
54
+ - name: Validate workflow semantics
55
+ run: |
56
+ "$RUNNER_TEMP/actionlint" -color
57
+
58
+ - name: Audit workflow security
59
+ run: uvx --from zizmor==1.29.0 zizmor --strict-collection --format=github .
@@ -1,4 +1,8 @@
1
1
  repos:
2
+ - repo: https://github.com/rhysd/actionlint
3
+ rev: 914e7df21a07ef503a81201c76d2b11c789d3fca # v1.7.12
4
+ hooks:
5
+ - id: actionlint
2
6
  - repo: https://github.com/astral-sh/ruff-pre-commit
3
7
  rev: v0.15.12
4
8
  hooks:
@@ -31,6 +31,8 @@ backlinks, exports, visualizations, and AI chunks are derived views.
31
31
  [`docs/reference/API_STABILITY.md`](docs/reference/API_STABILITY.md).
32
32
  - For architecture and ownership boundaries, use
33
33
  [`docs/CLEAN_CODE_ARCHITECTURE.md`](docs/CLEAN_CODE_ARCHITECTURE.md).
34
+ - For pull-request, scheduled, settings-managed, and release checks, use
35
+ [`docs/CI_ASSURANCE.md`](docs/CI_ASSURANCE.md).
34
36
  - For the maintained machine-readable knowledge map, use
35
37
  [`docs/index.md`](docs/index.md).
36
38
  - For historical release capabilities, use
@@ -66,7 +68,7 @@ Protocol integrations remain optional and deferred under
66
68
  ## Repository working contract
67
69
 
68
70
  ```bash
69
- uv sync --all-extras
71
+ uv sync --locked --all-extras
70
72
  make all
71
73
  make vendor-name-check
72
74
  ```
@@ -7,6 +7,89 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [1.8.2] - 2026-08-30
11
+
12
+ ### Changed
13
+
14
+ - **Native cross-platform GitHub assurance** — replace the public-repository
15
+ receipt-routing experiment with SHA-pinned GitHub-hosted quality, packaging,
16
+ dependency, CodeQL, Linux, macOS, and Windows checks. Local maintainer
17
+ guidance now treats hosted Actions as the authoritative public CI path (#194).
18
+ - **Cookbook guidance** — add corrected broken-block-reference and LENS
19
+ visualization recipes, including their CLI outcome and optional dependency
20
+ boundaries (#195).
21
+ - **Graph loader path-type acceptance** — `LogseqGraph.load_directory` accepts
22
+ `graph_path` as either `Path` or `str`, normalizes with
23
+ `Path(graph_path).expanduser().resolve()`, and preserves strict-mode defaults
24
+ (#197).
25
+
26
+ ### Fixed
27
+
28
+ - **Windows assurance portability** — open local-assurance inputs in binary
29
+ mode so CRLF files retain their measured byte length, use platform-neutral
30
+ byte and path fixtures, preserve POSIX permission assertions only where the
31
+ operating system provides those semantics, and fold CLI diagnostic
32
+ identifiers instead of replacing their final characters with an ellipsis
33
+ (#194).
34
+ - **Optional AI dependency guidance** — use one consistent message when AI
35
+ export dependencies are unavailable: `uv sync --extra ai` (#196).
36
+
37
+ ## [1.8.1] - 2026-08-25
38
+
39
+ ### Security
40
+
41
+ - **Stable NLTK supply-chain source (#186)** — the optional AI and development
42
+ dependency graph now constrains NLTK to the patched PyPI release line at
43
+ `>=3.10.3`, replacing the mutable `v3.10.0-rc1` VCS tag declaration. The
44
+ lightweight base installation remains unchanged.
45
+
46
+ ### Added
47
+
48
+ - **Reproducible runtime evidence foundation (#111)** — add a deterministic,
49
+ offline synthetic-vault generator and a source-free measurement runner for
50
+ parser, cold-load, reload, search, and optional SYNAPSE scenarios. The runner
51
+ records semantic validity and bounded runtime observations outside the
52
+ default CI gate. It establishes a measurement protocol, not vault-scale
53
+ budgets or a universal performance claim; #111 remains open.
54
+
55
+ ### Changed
56
+
57
+ - **Private lexical-state extraction (#108 M9)** — move YAML, code, query,
58
+ drawer, frontmatter, and block-property eligibility transitions into a
59
+ private standard-library-only state object. `StackMachineParser.parse()`
60
+ retains line classification, reduction, AST construction, identities,
61
+ semantic enrichment, and public behavior. The broader #108 epic remains
62
+ open.
63
+
64
+ ### Fixed
65
+
66
+ - **Coherent incremental graph mutations (#103)** — reloads, deletions, and
67
+ filesystem moves now publish page routing, node and backlink registries, and
68
+ collision diagnostics as one coherent graph snapshot. Conflicting title or
69
+ alias participants can recover deterministically, bounded writes serialize
70
+ their source read and reload transaction, and watcher callbacks observe the
71
+ published state in order. Stable public APIs remain unchanged.
72
+ - **Pathological nested outlines (#87)** — parse and file-entrypoint traversal
73
+ now remain iterative for a 1024-level valid outline, while parser-owned tree
74
+ construction avoids quadratic immutable-ancestor copies. Derived metadata is
75
+ refreshed once after tree construction instead of repeatedly across mutable
76
+ soft-break ancestors, and parser registries are rebuilt from the exact final
77
+ nodes returned by parse and file entry points. Strict reference validation is
78
+ confined to the current page. Tree order, parent and left relationships,
79
+ source paths, semantic snapshots, and the stable public API are preserved.
80
+ Deterministic tests bound refresh growth; local timing observations remain
81
+ diagnostic only and do not add a vault-scale performance claim.
82
+ - **Bounded local-assurance timeout cleanup (#188)** — a timed-out isolated
83
+ assurance worker is terminated and joined before its result queue is closed,
84
+ preventing queue-thread cleanup from extending the bounded failure path.
85
+
86
+ ### Tests
87
+
88
+ - Expand privacy-safe local-assurance regression coverage across traversal and
89
+ byte limits, guarded reads, parser aggregation, report validation, denied
90
+ network entry points, worker lifecycle, and failure cleanup without exposing
91
+ vault content or weakening the repository coverage floor.
92
+
10
93
  ## [1.8.0] - 2026-08-20
11
94
 
12
95
  ### Tests
@@ -17,8 +17,9 @@ 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.8.0**) and **Unreleased** changes (Keep a Changelog)
20
+ - [`CHANGELOG.md`](CHANGELOG.md) — release candidate **1.8.2**, latest published release **1.8.1**, and **Unreleased** changes (Keep a Changelog)
21
21
  - [`docs/RELEASE_PROCESS.md`](docs/RELEASE_PROCESS.md) — version bump, tag, and PyPI publish checklist
22
+ - [`docs/CI_ASSURANCE.md`](docs/CI_ASSURANCE.md) — pull-request, scheduled, settings-managed, and release checks
22
23
  - [`docs/CODEQL.md`](docs/CODEQL.md) — CodeQL default setup (no custom `codeql.yml`)
23
24
  - [`docs/GOOD_FIRST_ISSUES.md`](docs/GOOD_FIRST_ISSUES.md) — curated starter tasks for new contributors
24
25
  - [`docs/COOKBOOK.md`](docs/COOKBOOK.md) — integration recipes (Synapse, graph query, watcher)
@@ -80,7 +81,7 @@ New to the codebase? Start here:
80
81
 
81
82
  1. **Pick a task** from [`docs/GOOD_FIRST_ISSUES.md`](docs/GOOD_FIRST_ISSUES.md) (label: `good first issue` on GitHub).
82
83
  2. **Comment on the issue** so others know you are working on it.
83
- 3. **Set up** with `uv sync --all-extras` and confirm `make all` is green on `main`.
84
+ 3. **Set up** with `uv sync --locked --all-extras` and confirm `make all` is green on `main`.
84
85
  4. **Branch** using `feat/…`, `test/…`, or `docs/…` naming (see workflow below).
85
86
  5. **Submit** one PR per issue, branched from `main` (`Fixes #123`).
86
87