syntagmax 2026.7.6__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 (232) hide show
  1. syntagmax-2026.7.6/.gemini/commands/sc.critique.spec.md +142 -0
  2. syntagmax-2026.7.6/.gitignore +182 -0
  3. syntagmax-2026.7.6/.kiro/prompts/sc.document.md +4 -0
  4. syntagmax-2026.7.6/.kiro/prompts/sc.save.spec.md +1 -0
  5. syntagmax-2026.7.6/.kiro/prompts/sc.split.tasks.md +2 -0
  6. syntagmax-2026.7.6/.pin/ruff.md +1 -0
  7. syntagmax-2026.7.6/.pin/specs-location.md +2 -0
  8. syntagmax-2026.7.6/.pin/tests.md +1 -0
  9. syntagmax-2026.7.6/.pin/versioning.md +1 -0
  10. syntagmax-2026.7.6/.pin/workflow.md +43 -0
  11. syntagmax-2026.7.6/.python-version +1 -0
  12. syntagmax-2026.7.6/AGENTS.md +14 -0
  13. syntagmax-2026.7.6/CHANGELOG.md +34 -0
  14. syntagmax-2026.7.6/LICENSE +21 -0
  15. syntagmax-2026.7.6/PKG-INFO +735 -0
  16. syntagmax-2026.7.6/README.md +698 -0
  17. syntagmax-2026.7.6/assets/images/syntagmax_800x800.png +0 -0
  18. syntagmax-2026.7.6/assets/notepadplusplus/syntagmax.xml +38 -0
  19. syntagmax-2026.7.6/babel.cfg +3 -0
  20. syntagmax-2026.7.6/docs/critiques/bulk-attribute-manipulation-critique.md +119 -0
  21. syntagmax-2026.7.6/docs/critiques/export-tracing.critique.md +163 -0
  22. syntagmax-2026.7.6/docs/critiques/obsidian-marked-fragments-critique.md +149 -0
  23. syntagmax-2026.7.6/docs/critiques/plugin-system-critique.md +70 -0
  24. syntagmax-2026.7.6/docs/critiques/publish-config-critique.md +200 -0
  25. syntagmax-2026.7.6/docs/critiques/publishing-critique.md +9 -0
  26. syntagmax-2026.7.6/docs/executive-summary.md +21 -0
  27. syntagmax-2026.7.6/docs/internal.md +48 -0
  28. syntagmax-2026.7.6/docs/schemas/config.schema.json +334 -0
  29. syntagmax-2026.7.6/docs/schemas/publish-config.schema.json +153 -0
  30. syntagmax-2026.7.6/docs/seed/bulk-attribute-manipulation.md +31 -0
  31. syntagmax-2026.7.6/docs/seed/export-tracing.md +64 -0
  32. syntagmax-2026.7.6/docs/seed/obsidian-marked-fragments.md +39 -0
  33. syntagmax-2026.7.6/docs/seed/publishing-basic.md +26 -0
  34. syntagmax-2026.7.6/docs/seed/publishing-config.md +160 -0
  35. syntagmax-2026.7.6/docs/seed/publishing-doors.md +21 -0
  36. syntagmax-2026.7.6/docs/seed/publishing-word.md +18 -0
  37. syntagmax-2026.7.6/docs/seed/united-report.md +5 -0
  38. syntagmax-2026.7.6/docs/specs/2026-03-17-porting-pyparsing-to-lark-design.md +51 -0
  39. syntagmax-2026.7.6/docs/specs/2026-03-18-mcp-overhaul-design.md +59 -0
  40. syntagmax-2026.7.6/docs/specs/2026-03-18-readme-update-metamodel-dsl-design.md +41 -0
  41. syntagmax-2026.7.6/docs/specs/2026-03-19-introduce-reference-attribute-type-design.md +45 -0
  42. syntagmax-2026.7.6/docs/specs/2026-03-19-introduce-reference-to-parent-modifier-design.md +105 -0
  43. syntagmax-2026.7.6/docs/specs/2026-03-22-enhance-example-with-src-test-design.md +64 -0
  44. syntagmax-2026.7.6/docs/specs/2026-03-22-markdown-extractor-base-design.md +57 -0
  45. syntagmax-2026.7.6/docs/specs/2026-03-23-schema-validation-design.md +80 -0
  46. syntagmax-2026.7.6/docs/specs/bulk-attribute-manipulation.md +342 -0
  47. syntagmax-2026.7.6/docs/specs/comma-separated-yaml-attrs.md +54 -0
  48. syntagmax-2026.7.6/docs/specs/export-tracing.spec.md +312 -0
  49. syntagmax-2026.7.6/docs/specs/obsidian-marked-fragments.md +137 -0
  50. syntagmax-2026.7.6/docs/specs/plugin-system.md +246 -0
  51. syntagmax-2026.7.6/docs/specs/publish-block-tree.spec.md +110 -0
  52. syntagmax-2026.7.6/docs/specs/publish-config.spec.md +261 -0
  53. syntagmax-2026.7.6/docs/specs/publishing-word.md +118 -0
  54. syntagmax-2026.7.6/docs/specs/united-report.spec.md +126 -0
  55. syntagmax-2026.7.6/docs/tasks/2026-03-17-porting-pyparsing-to-lark.md +127 -0
  56. syntagmax-2026.7.6/docs/tasks/2026-03-18-mcp-overhaul.md +205 -0
  57. syntagmax-2026.7.6/docs/tasks/2026-03-18-readme-update-metamodel-dsl.md +144 -0
  58. syntagmax-2026.7.6/docs/tasks/2026-03-19-introduce-reference-attribute-type.md +193 -0
  59. syntagmax-2026.7.6/docs/tasks/2026-03-19-introduce-reference-to-parent-modifier.md +252 -0
  60. syntagmax-2026.7.6/docs/tasks/2026-03-19-multiple-attribute-modifier.md +171 -0
  61. syntagmax-2026.7.6/docs/tasks/2026-03-19-multiple-attribute-modifier.todo.md +1 -0
  62. syntagmax-2026.7.6/docs/tasks/2026-03-21-rename-via-git-to-via-commit.md +100 -0
  63. syntagmax-2026.7.6/docs/tasks/2026-03-21-revision-descriptor.md +192 -0
  64. syntagmax-2026.7.6/docs/tasks/2026-03-22-enhance-example-with-src-test.md +232 -0
  65. syntagmax-2026.7.6/docs/tasks/2026-03-22-markdown-extractor-base-refactoring.md +239 -0
  66. syntagmax-2026.7.6/docs/tasks/2026-03-22-update-ipynb-extractor.md +139 -0
  67. syntagmax-2026.7.6/docs/tasks/2026-03-23-schema-validation.md +214 -0
  68. syntagmax-2026.7.6/docs/tasks/unified-report/2026-06-20-unified-report-01-report-class.md +182 -0
  69. syntagmax-2026.7.6/docs/tasks/unified-report/2026-06-20-unified-report-02-params-cli.md +67 -0
  70. syntagmax-2026.7.6/docs/tasks/unified-report/2026-06-20-unified-report-03-config-cleanup.md +53 -0
  71. syntagmax-2026.7.6/docs/tasks/unified-report/2026-06-20-unified-report-04-metrics-refactor.md +49 -0
  72. syntagmax-2026.7.6/docs/tasks/unified-report/2026-06-20-unified-report-05-impact-refactor.md +43 -0
  73. syntagmax-2026.7.6/docs/tasks/unified-report/2026-06-20-unified-report-06-ai-refactor.md +49 -0
  74. syntagmax-2026.7.6/docs/tasks/unified-report/2026-06-20-unified-report-07-tree-markdown.md +68 -0
  75. syntagmax-2026.7.6/docs/tasks/unified-report/2026-06-20-unified-report-08-wiring.md +146 -0
  76. syntagmax-2026.7.6/docs/tasks/unified-report/2026-06-20-unified-report-09-docs.md +61 -0
  77. syntagmax-2026.7.6/docs/technical-summary.md +47 -0
  78. syntagmax-2026.7.6/example/error-handling/.syntagmax/.gitignore +1 -0
  79. syntagmax-2026.7.6/example/error-handling/.syntagmax/config.toml +10 -0
  80. syntagmax-2026.7.6/example/error-handling/.syntagmax/project.syntagmax +5 -0
  81. syntagmax-2026.7.6/example/error-handling/REQ/REQ-001.md +10 -0
  82. syntagmax-2026.7.6/example/error-handling/REQ/REQ-002-nbsp.md +10 -0
  83. syntagmax-2026.7.6/example/error-handling/REQ/REQ-003-open-yaml.md +9 -0
  84. syntagmax-2026.7.6/example/obsidian-driver/.syntagmax/.gitignore +1 -0
  85. syntagmax-2026.7.6/example/obsidian-driver/.syntagmax/config.toml +47 -0
  86. syntagmax-2026.7.6/example/obsidian-driver/.syntagmax/project.syntagmax +41 -0
  87. syntagmax-2026.7.6/example/obsidian-driver/.syntagmax/reports/published.docx +0 -0
  88. syntagmax-2026.7.6/example/obsidian-driver/.syntagmax/reports/published.md +292 -0
  89. syntagmax-2026.7.6/example/obsidian-driver/.syntagmax/reports/published.pdf +0 -0
  90. syntagmax-2026.7.6/example/obsidian-driver/.syntagmax/reports/report.md +21 -0
  91. syntagmax-2026.7.6/example/obsidian-driver/.syntagmax/reports/trace.csv +6 -0
  92. syntagmax-2026.7.6/example/obsidian-driver/REQ/REQ-001.md +29 -0
  93. syntagmax-2026.7.6/example/obsidian-driver/REQ/REQ-002.md +20 -0
  94. syntagmax-2026.7.6/example/obsidian-driver/REQ/REQ-003.md +30 -0
  95. syntagmax-2026.7.6/example/obsidian-driver/REQ/REQ-004.md +17 -0
  96. syntagmax-2026.7.6/example/obsidian-driver/REQ/REQ-005.md +18 -0
  97. syntagmax-2026.7.6/example/obsidian-driver/SYS/SYS-001.md +21 -0
  98. syntagmax-2026.7.6/example/obsidian-driver/SYS/SYS-002.md +13 -0
  99. syntagmax-2026.7.6/example/obsidian-driver/SYS/SYS-003.md +12 -0
  100. syntagmax-2026.7.6/example/obsidian-driver/SYS/diagram.png +0 -0
  101. syntagmax-2026.7.6/example/obsidian-driver/SYS/diagram.png.stmx +6 -0
  102. syntagmax-2026.7.6/example/obsidian-driver/src/contingency.py +7 -0
  103. syntagmax-2026.7.6/example/obsidian-driver/src/failsafe.py +7 -0
  104. syntagmax-2026.7.6/example/obsidian-driver/src/mavlink.py +8 -0
  105. syntagmax-2026.7.6/example/obsidian-driver/src/telemetry.py +11 -0
  106. syntagmax-2026.7.6/example/obsidian-driver/tests/test_contingency.py +7 -0
  107. syntagmax-2026.7.6/example/obsidian-driver/tests/test_failsafe.py +7 -0
  108. syntagmax-2026.7.6/example/obsidian-driver/tests/test_mavlink.py +7 -0
  109. syntagmax-2026.7.6/example/obsidian-driver/tests/test_telemetry.py +7 -0
  110. syntagmax-2026.7.6/example/plugin-demo/.syntagmax/.gitignore +1 -0
  111. syntagmax-2026.7.6/example/plugin-demo/.syntagmax/config.toml +23 -0
  112. syntagmax-2026.7.6/example/plugin-demo/.syntagmax/plugins/add-header.py +17 -0
  113. syntagmax-2026.7.6/example/plugin-demo/.syntagmax/plugins/strip-marker.py +29 -0
  114. syntagmax-2026.7.6/example/plugin-demo/.syntagmax/reports/published.md +22 -0
  115. syntagmax-2026.7.6/example/plugin-demo/requirements/system.md +17 -0
  116. syntagmax-2026.7.6/example/publishing/.gitignore +1 -0
  117. syntagmax-2026.7.6/example/publishing/.syntagmax/config.toml +23 -0
  118. syntagmax-2026.7.6/example/publishing/.syntagmax/project.syntagmax +13 -0
  119. syntagmax-2026.7.6/example/publishing/.syntagmax/publish.yaml +39 -0
  120. syntagmax-2026.7.6/example/publishing/.syntagmax/reports/Personal Scheduler App.md +292 -0
  121. syntagmax-2026.7.6/example/publishing/.syntagmax/reports/report.md +98 -0
  122. syntagmax-2026.7.6/example/publishing/Personal Scheduler App/1 Description/1.1 Overview/1.1.1 Purpose and Scope.md +14 -0
  123. syntagmax-2026.7.6/example/publishing/Personal Scheduler App/1 Description/1.1 Overview/1.1.2 Target Users.md +15 -0
  124. syntagmax-2026.7.6/example/publishing/Personal Scheduler App/1 Description/1.2 App Functions/1.2.1 Function List.md +26 -0
  125. syntagmax-2026.7.6/example/publishing/Personal Scheduler App/1 Description/1.2 App Functions/1.2.2 User Interface Overview.md +17 -0
  126. syntagmax-2026.7.6/example/publishing/Personal Scheduler App/2 Requirements/2.1 Functional Requirements/2.1.1 Calendar and Event Management.md +53 -0
  127. syntagmax-2026.7.6/example/publishing/Personal Scheduler App/2 Requirements/2.1 Functional Requirements/2.1.2 Task Management.md +45 -0
  128. syntagmax-2026.7.6/example/publishing/Personal Scheduler App/2 Requirements/2.1 Functional Requirements/2.1.3 Reminders and Notifications.md +41 -0
  129. syntagmax-2026.7.6/example/publishing/Personal Scheduler App/2 Requirements/2.2 Non-Functional Requirements/2.2.1 Performance and Usability.md +29 -0
  130. syntagmax-2026.7.6/example/publishing/Personal Scheduler App/2 Requirements/2.2 Non-Functional Requirements/2.2.2 Data and Security.md +47 -0
  131. syntagmax-2026.7.6/example/publishing/attachments/pics/scheduler-architecture.png +0 -0
  132. syntagmax-2026.7.6/example/publishing/attachments/pics/scheduler-architecture.svg +62 -0
  133. syntagmax-2026.7.6/example/renumber-demo/.syntagmax/config.toml +10 -0
  134. syntagmax-2026.7.6/example/renumber-demo/.syntagmax/project.syntagmax +4 -0
  135. syntagmax-2026.7.6/example/renumber-demo/reqs/existing-body.md +7 -0
  136. syntagmax-2026.7.6/example/renumber-demo/reqs/existing-yaml.md +7 -0
  137. syntagmax-2026.7.6/example/renumber-demo/reqs/non-existing.md +6 -0
  138. syntagmax-2026.7.6/example/renumber-demo/reqs/with-schema-body.md +7 -0
  139. syntagmax-2026.7.6/example/renumber-demo/reqs/with-schema-yaml.md +7 -0
  140. syntagmax-2026.7.6/example/trace-tsv-plugin/.syntagmax/.gitignore +1 -0
  141. syntagmax-2026.7.6/example/trace-tsv-plugin/.syntagmax/config.toml +23 -0
  142. syntagmax-2026.7.6/example/trace-tsv-plugin/.syntagmax/plugins/tsv-export.py +42 -0
  143. syntagmax-2026.7.6/example/trace-tsv-plugin/.syntagmax/project.syntagmax +19 -0
  144. syntagmax-2026.7.6/example/trace-tsv-plugin/.syntagmax/reports/trace.csv +4 -0
  145. syntagmax-2026.7.6/example/trace-tsv-plugin/.syntagmax/reports/trace.tsv +4 -0
  146. syntagmax-2026.7.6/example/trace-tsv-plugin/README.md +76 -0
  147. syntagmax-2026.7.6/example/trace-tsv-plugin/REQ/REQ-001.md +12 -0
  148. syntagmax-2026.7.6/example/trace-tsv-plugin/REQ/REQ-002.md +12 -0
  149. syntagmax-2026.7.6/example/trace-tsv-plugin/REQ/REQ-003.md +11 -0
  150. syntagmax-2026.7.6/example/trace-tsv-plugin/SYS/SYS-001.md +10 -0
  151. syntagmax-2026.7.6/example/trace-tsv-plugin/SYS/SYS-002.md +10 -0
  152. syntagmax-2026.7.6/openwiki/.last-update.json +6 -0
  153. syntagmax-2026.7.6/openwiki/architecture.md +74 -0
  154. syntagmax-2026.7.6/openwiki/domain.md +66 -0
  155. syntagmax-2026.7.6/openwiki/operations.md +69 -0
  156. syntagmax-2026.7.6/openwiki/quickstart.md +61 -0
  157. syntagmax-2026.7.6/openwiki/testing.md +48 -0
  158. syntagmax-2026.7.6/pyproject.toml +78 -0
  159. syntagmax-2026.7.6/scripts/update-translations.py +26 -0
  160. syntagmax-2026.7.6/src/syntagmax/ai.py +71 -0
  161. syntagmax-2026.7.6/src/syntagmax/ai_providers.py +455 -0
  162. syntagmax-2026.7.6/src/syntagmax/analyse.py +299 -0
  163. syntagmax-2026.7.6/src/syntagmax/artifact.py +224 -0
  164. syntagmax-2026.7.6/src/syntagmax/blocks.py +53 -0
  165. syntagmax-2026.7.6/src/syntagmax/cli.py +496 -0
  166. syntagmax-2026.7.6/src/syntagmax/config.py +280 -0
  167. syntagmax-2026.7.6/src/syntagmax/edit.py +110 -0
  168. syntagmax-2026.7.6/src/syntagmax/edit_attrs.py +335 -0
  169. syntagmax-2026.7.6/src/syntagmax/errors.py +22 -0
  170. syntagmax-2026.7.6/src/syntagmax/extract.py +66 -0
  171. syntagmax-2026.7.6/src/syntagmax/extractors/extractor.py +83 -0
  172. syntagmax-2026.7.6/src/syntagmax/extractors/ipynb.py +45 -0
  173. syntagmax-2026.7.6/src/syntagmax/extractors/markdown.lark +30 -0
  174. syntagmax-2026.7.6/src/syntagmax/extractors/markdown.py +629 -0
  175. syntagmax-2026.7.6/src/syntagmax/extractors/obsidian.py +12 -0
  176. syntagmax-2026.7.6/src/syntagmax/extractors/sidecar.py +108 -0
  177. syntagmax-2026.7.6/src/syntagmax/extractors/text.lark +25 -0
  178. syntagmax-2026.7.6/src/syntagmax/extractors/text.py +221 -0
  179. syntagmax-2026.7.6/src/syntagmax/git_utils.py +131 -0
  180. syntagmax-2026.7.6/src/syntagmax/impact.py +119 -0
  181. syntagmax-2026.7.6/src/syntagmax/init_cmd.py +122 -0
  182. syntagmax-2026.7.6/src/syntagmax/main.py +98 -0
  183. syntagmax-2026.7.6/src/syntagmax/mcp/server.py +172 -0
  184. syntagmax-2026.7.6/src/syntagmax/metamodel.lark +54 -0
  185. syntagmax-2026.7.6/src/syntagmax/metamodel.py +280 -0
  186. syntagmax-2026.7.6/src/syntagmax/metrics.py +63 -0
  187. syntagmax-2026.7.6/src/syntagmax/pandoc.py +59 -0
  188. syntagmax-2026.7.6/src/syntagmax/params.py +19 -0
  189. syntagmax-2026.7.6/src/syntagmax/plugin.py +311 -0
  190. syntagmax-2026.7.6/src/syntagmax/publish.py +231 -0
  191. syntagmax-2026.7.6/src/syntagmax/publish_config.py +80 -0
  192. syntagmax-2026.7.6/src/syntagmax/render.py +139 -0
  193. syntagmax-2026.7.6/src/syntagmax/report.py +29 -0
  194. syntagmax-2026.7.6/src/syntagmax/resources/locales/en/LC_MESSAGES/messages.po +85 -0
  195. syntagmax-2026.7.6/src/syntagmax/resources/locales/ru/LC_MESSAGES/messages.po +86 -0
  196. syntagmax-2026.7.6/src/syntagmax/resources/report.j2 +65 -0
  197. syntagmax-2026.7.6/src/syntagmax/trace.py +207 -0
  198. syntagmax-2026.7.6/src/syntagmax/tree.py +142 -0
  199. syntagmax-2026.7.6/src/syntagmax/utils.py +37 -0
  200. syntagmax-2026.7.6/tests/test_artifact_validation.py +76 -0
  201. syntagmax-2026.7.6/tests/test_custom_boolean.py +116 -0
  202. syntagmax-2026.7.6/tests/test_dag.py +15 -0
  203. syntagmax-2026.7.6/tests/test_edit_attrs.py +754 -0
  204. syntagmax-2026.7.6/tests/test_enum_multiple.py +148 -0
  205. syntagmax-2026.7.6/tests/test_extractors.py +175 -0
  206. syntagmax-2026.7.6/tests/test_git_revisions.py +156 -0
  207. syntagmax-2026.7.6/tests/test_git_utils.py +143 -0
  208. syntagmax-2026.7.6/tests/test_hyphen_support.py +171 -0
  209. syntagmax-2026.7.6/tests/test_id_validation.py +104 -0
  210. syntagmax-2026.7.6/tests/test_impact.py +144 -0
  211. syntagmax-2026.7.6/tests/test_independent_atype_marker.py +64 -0
  212. syntagmax-2026.7.6/tests/test_init.py +52 -0
  213. syntagmax-2026.7.6/tests/test_init_cmd.py +49 -0
  214. syntagmax-2026.7.6/tests/test_ipynb_extractor.py +92 -0
  215. syntagmax-2026.7.6/tests/test_marked_fragments.py +272 -0
  216. syntagmax-2026.7.6/tests/test_mcp.py +88 -0
  217. syntagmax-2026.7.6/tests/test_metamodel.py +101 -0
  218. syntagmax-2026.7.6/tests/test_metamodel_pids.py +55 -0
  219. syntagmax-2026.7.6/tests/test_metamodel_schema_validation.py +59 -0
  220. syntagmax-2026.7.6/tests/test_multiple_attributes_e2e.py +358 -0
  221. syntagmax-2026.7.6/tests/test_multiple_records_same_driver.py +74 -0
  222. syntagmax-2026.7.6/tests/test_multiplicity_validation.py +107 -0
  223. syntagmax-2026.7.6/tests/test_pandoc.py +240 -0
  224. syntagmax-2026.7.6/tests/test_plugin.py +421 -0
  225. syntagmax-2026.7.6/tests/test_publish.py +295 -0
  226. syntagmax-2026.7.6/tests/test_publish_config.py +146 -0
  227. syntagmax-2026.7.6/tests/test_reference_validation.py +61 -0
  228. syntagmax-2026.7.6/tests/test_report.py +66 -0
  229. syntagmax-2026.7.6/tests/test_suspicious_tree_marks.py +70 -0
  230. syntagmax-2026.7.6/tests/test_trace_export.py +376 -0
  231. syntagmax-2026.7.6/tests/test_traces.py +168 -0
  232. syntagmax-2026.7.6/uv.lock +1472 -0
@@ -0,0 +1,142 @@
1
+ ---
2
+ name: sc.critique.spec.md
3
+ description: Challenge the specification and implementation plan through two distinct expert lenses.
4
+ ---
5
+
6
+ ## Goal
7
+
8
+ Challenge the specification and implementation plan through two distinct expert lenses BEFORE committing to implementation. The **Product Lens** evaluates whether the right problem is being solved in the right way for users. The **Engineering Lens** evaluates whether the technical approach is sound, scalable, and free of hidden risks. This dual review prevents costly mid-implementation pivots and catches strategic and technical blind spots early.
9
+
10
+ ## Operating Constraints
11
+
12
+ **CONSTRUCTIVE CHALLENGE**: The goal is to strengthen the spec and plan, not to block progress. Every critique item must include a constructive suggestion for improvement.
13
+
14
+ 1. **Product Lens Review** (CEO/Product Lead Perspective):
15
+
16
+ Adopt the mindset of an experienced product leader who cares deeply about user value, market fit, and business impact. Evaluate:
17
+
18
+ #### 1a. Problem Validation
19
+ - Is the problem statement clear and well-defined?
20
+ - Is this solving a real user pain point, or is it a solution looking for a problem?
21
+ - What evidence supports the need for this feature? (user research, data, customer requests)
22
+ - Is the scope appropriate — not too broad (trying to do everything) or too narrow (missing the core value)?
23
+
24
+ #### 1b. User Value Assessment
25
+ - Does every user story deliver tangible user value?
26
+ - Are the acceptance criteria written from the user's perspective (outcomes, not implementation)?
27
+ - Is the user journey complete — or are there gaps where users would get stuck?
28
+ - What's the simplest version that would deliver 80% of the value? (MVP analysis)
29
+ - Are there unnecessary features that add complexity without proportional value?
30
+
31
+ #### 1c. Alternative Approaches
32
+ - Could a simpler solution achieve the same outcome?
33
+ - Are there existing tools, libraries, or services that could replace custom implementation?
34
+ - What would a competitor's approach look like?
35
+ - What would happen if this feature were NOT built? What's the cost of inaction?
36
+
37
+ #### 1d. Edge Cases & User Experience
38
+ - What happens when things go wrong? (error states, empty states, loading states)
39
+ - How does this feature interact with existing functionality?
40
+ - Are accessibility considerations addressed?
41
+ - Is the feature discoverable and intuitive?
42
+ - What are the onboarding/migration implications for existing users?
43
+
44
+ #### 1e. Success Measurement
45
+ - Are the success criteria measurable and time-bound?
46
+ - How will you know if this feature is successful after launch?
47
+ - What metrics should be tracked?
48
+ - What would trigger a rollback decision?
49
+
50
+ 2. **Engineering Lens Review** (Staff Engineer Perspective):
51
+
52
+ Adopt the mindset of a senior staff engineer who has seen projects fail due to hidden technical risks. Evaluate:
53
+
54
+ #### 2a. Architecture Soundness
55
+ - Does the architecture follow established patterns for this type of system?
56
+ - Are boundaries and interfaces well-defined (separation of concerns)?
57
+ - Is the architecture testable at each layer?
58
+ - Are there circular dependencies or tight coupling risks?
59
+ - Does the architecture support future evolution without major refactoring?
60
+
61
+ #### 2b. Failure Mode Analysis
62
+ - What are the most likely failure modes? (network failures, data corruption, resource exhaustion)
63
+ - How does the system degrade gracefully under each failure mode?
64
+ - What happens under peak load? Is there a scaling bottleneck?
65
+ - What are the blast radius implications — can a failure in this feature affect other parts of the system?
66
+ - Are retry, timeout, and circuit-breaker strategies defined?
67
+
68
+ #### 2c. Security & Privacy Review
69
+ - What is the threat model? What attack vectors does this feature introduce?
70
+ - Are trust boundaries clearly defined (user input, API responses, third-party data)?
71
+ - Is sensitive data handled appropriately (encryption, access control, retention)?
72
+ - Are there compliance implications (GDPR, SOC2, HIPAA)?
73
+ - Is the principle of least privilege followed?
74
+
75
+ #### 2d. Performance & Scalability
76
+ - Are there potential bottlenecks in the data flow?
77
+ - What are the expected data volumes? Will the design handle 10x growth?
78
+ - Are caching strategies appropriate and cache invalidation well-defined?
79
+ - Are database queries optimized (indexing, pagination, query complexity)?
80
+ - Are there resource-intensive operations that should be async or batched?
81
+
82
+ #### 2e. Testing Strategy
83
+ - Is the testing plan comprehensive (unit, integration, E2E)?
84
+ - Are the critical paths identified for priority testing?
85
+ - Is the test data strategy realistic?
86
+ - Are there testability concerns (hard-to-mock dependencies, race conditions)?
87
+ - Is the test coverage target appropriate for the risk level?
88
+
89
+ #### 2f. Operational Readiness
90
+ - Is observability planned (logging, metrics, tracing)?
91
+ - Are alerting thresholds defined?
92
+ - Is there a rollback strategy?
93
+ - Are database migrations reversible?
94
+ - Is the deployment strategy clear (blue-green, canary, feature flags)?
95
+
96
+ #### 2g. Dependencies & Integration Risks
97
+ - Are third-party dependencies well-understood (stability, licensing, maintenance)?
98
+ - Are integration points with existing systems well-defined?
99
+ - What happens if an external service is unavailable?
100
+ - Are API versioning and backward compatibility considered?
101
+
102
+ 3. **Cross-Lens Synthesis**:
103
+ Identify items where both lenses converge (these are highest priority):
104
+ - Product simplification that also reduces engineering risk
105
+ - Engineering constraints that affect user experience
106
+ - Scope adjustments that improve both value delivery and technical feasibility
107
+
108
+ 4. **Severity Classification**:
109
+ Classify each finding:
110
+
111
+ - 🎯 **Must-Address**: Blocks proceeding to implementation. Critical product gap, security vulnerability, or architecture flaw.
112
+ - 💡 **Recommendation**: Strongly suggested improvement that would significantly improve quality, value, or risk profile. Should be addressed but won't block progress.
113
+ - 🤔 **Question**: Ambiguity or assumption that needs stakeholder input. Cannot be resolved by the development team alone.
114
+
115
+ 7. **Generate Critique Report**:
116
+ Ensure the directory `docs/critiques/` exists (create it if necessary), then create the critique report. The report must include:
117
+
118
+ - **Executive Summary**: Overall assessment and readiness to proceed
119
+ - **Product Lens Findings**: Organized by subcategory
120
+ - **Engineering Lens Findings**: Organized by subcategory
121
+ - **Cross-Lens Insights**: Items where both perspectives converge
122
+ - **Findings Summary Table**: All items with ID, lens, severity, summary, suggestion
123
+
124
+ **Findings Table Format**:
125
+ | ID | Lens | Severity | Category | Finding | Suggestion |
126
+ |----|------|----------|----------|---------|------------|
127
+ | P1 | Product | 🎯 | Problem Validation | No evidence of user need | Conduct 5 user interviews or reference support tickets |
128
+ | E1 | Engineering | 💡 | Failure Modes | No retry strategy for API calls | Add exponential backoff with circuit breaker |
129
+ | X1 | Both | 🎯 | Scope × Risk | Feature X adds complexity with unclear value | Defer to v2; reduces both scope and technical risk |
130
+
131
+ 8. **Provide Verdict**:
132
+ Based on findings, provide one of:
133
+ - ⚠️ **PROCEED WITH UPDATES**: Must-address items found but are resolvable.
134
+ - 🛑 **RETHINK**: Fundamental product or architecture concerns. Recommend revisiting the spec.
135
+
136
+ 9. **Offer Remediation**:
137
+ For each must-address item and recommendation:
138
+ - Provide a specific suggested edit to the spec.
139
+ - Ask: "Would you like me to apply these changes? (all / select / none)"
140
+ - If user approves, apply changes to the relevant files
141
+ - After applying changes, recommend re-running critique` to verify.
142
+
@@ -0,0 +1,182 @@
1
+ # Custom
2
+ output
3
+ /tmp
4
+
5
+ # Other agents
6
+ .claude
7
+
8
+ # Byte-compiled / optimized / DLL files
9
+ __pycache__/
10
+ *.py[cod]
11
+ *$py.class
12
+
13
+ # C extensions
14
+ *.so
15
+
16
+ # Distribution / packaging
17
+ .Python
18
+ build/
19
+ develop-eggs/
20
+ dist/
21
+ downloads/
22
+ eggs/
23
+ .eggs/
24
+ lib/
25
+ lib64/
26
+ parts/
27
+ sdist/
28
+ var/
29
+ wheels/
30
+ share/python-wheels/
31
+ *.egg-info/
32
+ .installed.cfg
33
+ *.egg
34
+ MANIFEST
35
+
36
+ # PyInstaller
37
+ # Usually these files are written by a python script from a template
38
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
39
+ *.manifest
40
+ *.spec
41
+
42
+ # Installer logs
43
+ pip-log.txt
44
+ pip-delete-this-directory.txt
45
+
46
+ # Unit test / coverage reports
47
+ htmlcov/
48
+ .tox/
49
+ .nox/
50
+ .coverage
51
+ .coverage.*
52
+ .cache
53
+ nosetests.xml
54
+ coverage.xml
55
+ *.cover
56
+ *.py,cover
57
+ .hypothesis/
58
+ .pytest_cache/
59
+ cover/
60
+
61
+ # Translations
62
+ *.mo
63
+ *.pot
64
+
65
+ # Django stuff:
66
+ *.log
67
+ local_settings.py
68
+ db.sqlite3
69
+ db.sqlite3-journal
70
+
71
+ # Flask stuff:
72
+ instance/
73
+ .webassets-cache
74
+
75
+ # Scrapy stuff:
76
+ .scrapy
77
+
78
+ # Sphinx documentation
79
+ docs/_build/
80
+
81
+ # PyBuilder
82
+ .pybuilder/
83
+ target/
84
+
85
+ # Jupyter Notebook
86
+ .ipynb_checkpoints
87
+
88
+ # IPython
89
+ profile_default/
90
+ ipython_config.py
91
+
92
+ # pyenv
93
+ # For a library or package, you might want to ignore these files since the code is
94
+ # intended to run in multiple environments; otherwise, check them in:
95
+ # .python-version
96
+
97
+ # pipenv
98
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
99
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
100
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
101
+ # install all needed dependencies.
102
+ #Pipfile.lock
103
+
104
+ # UV
105
+ # Similar to Pipfile.lock, it is generally recommended to include uv.lock in version control.
106
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
107
+ # commonly ignored for libraries.
108
+ #uv.lock
109
+
110
+ # poetry
111
+ # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
112
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
113
+ # commonly ignored for libraries.
114
+ # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
115
+ #poetry.lock
116
+
117
+ # pdm
118
+ # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
119
+ #pdm.lock
120
+ # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
121
+ # in version control.
122
+ # https://pdm.fming.dev/latest/usage/project/#working-with-version-control
123
+ .pdm.toml
124
+ .pdm-python
125
+ .pdm-build/
126
+
127
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
128
+ __pypackages__/
129
+
130
+ # Celery stuff
131
+ celerybeat-schedule
132
+ celerybeat.pid
133
+
134
+ # SageMath parsed files
135
+ *.sage.py
136
+
137
+ # Environments
138
+ .env
139
+ .venv
140
+ env/
141
+ venv/
142
+ ENV/
143
+ env.bak/
144
+ venv.bak/
145
+
146
+ # Spyder project settings
147
+ .spyderproject
148
+ .spyproject
149
+
150
+ # Rope project settings
151
+ .ropeproject
152
+
153
+ # mkdocs documentation
154
+ /site
155
+
156
+ # mypy
157
+ .mypy_cache/
158
+ .dmypy.json
159
+ dmypy.json
160
+
161
+ # Pyre type checker
162
+ .pyre/
163
+
164
+ # pytype static type analyzer
165
+ .pytype/
166
+
167
+ # Cython debug symbols
168
+ cython_debug/
169
+
170
+ # PyCharm
171
+ # JetBrains specific template is maintained in a separate JetBrains.gitignore that can
172
+ # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
173
+ # and can be added to the global gitignore or merged into this file. For a more nuclear
174
+ # option (not recommended) you can uncomment the following to ignore the entire idea folder.
175
+ #.idea/
176
+
177
+ # Ruff stuff:
178
+ .ruff_cache/
179
+
180
+ # PyPI configuration file
181
+ .pypirc
182
+ .aider*
@@ -0,0 +1,4 @@
1
+ If the changes affect user interfaces or project configuration, make relevant update to the README.md file.
2
+
3
+ Capture essential session's information in AGENTS.md. Avoid bloating the AGENTS.md. Compress if it grows too big.
4
+
@@ -0,0 +1 @@
1
+ Save the spec in `docs/specs`, but don't implement it yet.
@@ -0,0 +1,2 @@
1
+ Split the final spec into a set of detailed tasks that can be implemented in parallel. Place the results into a set of files in a new subdirectory. Files shall be named as `docs/tasks/<spec-name>/task-<task-number>-<task-name>.md`. Also, add a summary file in the same subdirectory. The summary shall provide guidance for orchestration and parallel execution.
2
+
@@ -0,0 +1 @@
1
+ After a backend task is completed, run the `ruff` linter and ensure that there are no errors or warnings.
@@ -0,0 +1,2 @@
1
+ Place new specification documents in the `docs/specs` folder.
2
+ Do not add timestamps to spec filenames.
@@ -0,0 +1 @@
1
+ After a backend task is completed, run the `pytest tests` and ensure that there are no errors or warnings.
@@ -0,0 +1 @@
1
+ This project uses Calendar Versioning (CalVer) with the scheme YYYY.M.D (e.g. 2026.7.6).
@@ -0,0 +1,43 @@
1
+ ## Specification Workflow: Seed vs Full Specs
2
+
3
+ This project uses a two-stage specification process. Both live under `docs/`.
4
+
5
+ ### Seed Specs (`docs/seed/`)
6
+
7
+ A seed spec is a **concise, human-written intent document**. It captures:
8
+ - What the user wants (feature intent, desired behavior)
9
+ - Key examples and expected output formats
10
+ - High-level CLI interface or config shape
11
+ - Follow-up tasks (amend README, add examples, etc.)
12
+
13
+ Seed specs are informal, written in the user's voice, and may contain typos or shorthand. They do **not** include:
14
+ - Detailed implementation guidance
15
+ - Internal data models or code structure
16
+ - Explicit task breakdowns with test requirements
17
+ - Mermaid diagrams or architecture decisions
18
+ - Background on existing codebase internals
19
+
20
+ A seed spec is the **input** to the design phase.
21
+
22
+ ### Full Specs (`docs/specs/`)
23
+
24
+ A full spec is a **detailed implementation blueprint** derived from a seed spec. It includes:
25
+ - **Problem Statement**: Precise restatement of the requirement
26
+ - **Requirements**: Exhaustive list of acceptance criteria
27
+ - **Background**: Relevant codebase internals (existing patterns, modules, data structures)
28
+ - **Proposed Solution**: Architecture with Mermaid diagrams, data models, and code sketches
29
+ - **Task Breakdown**: Numbered implementation tasks, each with:
30
+ - Objective
31
+ - Implementation guidance (which files, which patterns to follow)
32
+ - Test requirements (what to assert, which fixtures to use)
33
+ - Demo command to verify
34
+
35
+ Full specs are written for an implementer (human or AI) to execute without further clarification.
36
+
37
+ ### Workflow
38
+
39
+ 1. User writes a seed spec in `docs/seed/` to capture intent.
40
+ 2. A full spec is produced in `docs/specs/` (either by the user or with AI assistance) that expands the seed into an actionable plan.
41
+ 3. Implementation follows the full spec's task breakdown.
42
+
43
+ When asked to implement a feature, look for both the seed (for intent) and the full spec (for implementation details). If only a seed exists, offer to produce a full spec first.
@@ -0,0 +1 @@
1
+ 3.13
@@ -0,0 +1,14 @@
1
+ ## OpenWiki
2
+
3
+ This repository has documentation located in the /openwiki directory.
4
+
5
+ Start here:
6
+ - [OpenWiki quickstart](openwiki/quickstart.md)
7
+
8
+ OpenWiki includes repository overview, architecture notes, workflows, domain concepts, operations, integrations, testing guidance, and source maps.
9
+
10
+ When working in this repository, read the OpenWiki quickstart first, then follow its links to the relevant architecture, workflow, domain, operation, and testing notes.
11
+
12
+ <!-- pin mcp start -->
13
+ Before staring the first task, fetch all global and project factoids via Pin MCP and use them as **important** instructions. The Pin workspace for this project is `syntagmax`.
14
+ <!-- pin mcp stop -->
@@ -0,0 +1,34 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
+ and this project uses [Calendar Versioning](https://calver.org/) with the scheme `YYYY.M.D`.
7
+
8
+ ## [2026.7.6] - 2026-07-06
9
+
10
+ Initial public release.
11
+
12
+ ### Added
13
+
14
+ - Core analysis pipeline with DAG-based execution (extract → tree → impact → metrics → AI)
15
+ - Obsidian, Markdown, Text, Sidecar, and Jupyter Notebook artifact extractors
16
+ - Metamodel DSL with attribute types: string, integer, boolean (with custom values), enum, and reference
17
+ - Support for multiple attributes, comma-separated enums, and multi-value parent references
18
+ - Hyphens and underscores in attribute identifiers
19
+ - Custom `atype`/`marker` decoupling for input sources
20
+ - Marked text fragments (Obsidian driver): `[COM]`, `[NOTE]`, etc.
21
+ - Git revision extraction via `git blame` for artifact change history
22
+ - Impact analysis: via-commit (revision pinning) and via-timestamp modes
23
+ - Traceability matrix export (CSV/TSV) with forward/reverse, flat mode, left outer join, and plugin hook
24
+ - Publishing pipeline: block-tree rendering to Markdown with Pandoc DOCX/PDF conversion
25
+ - Publishing configuration: per-record output, `--single` consolidated mode, `--date-suffix`
26
+ - Plugin system: local file and package entry-point plugins with `transform_blocks`, `transform_markdown`, and `export_trace` hooks
27
+ - Bulk attribute manipulation (`edit attrs`): add/del/replace with CSV import support
28
+ - Artifact renumbering (`edit renumber`) with configurable ID schemas
29
+ - Unified Markdown report output (errors, tree, metrics, impact, AI analysis)
30
+ - MCP server with `list_artifacts`, `search_artifacts`, and `get_artifact_content` tools
31
+ - `syntagmax init` command for project scaffolding
32
+ - Configurable AI providers: Ollama, Anthropic, OpenAI, Gemini, AWS Bedrock
33
+ - Localisation support (English, Russian) via Babel
34
+ - Project metrics: requirement coverage, TBD detection, status tracking
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025-2026 Flyvercity
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.