elspais 0.9.3__tar.gz → 0.11.1__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 (165) hide show
  1. {elspais-0.9.3 → elspais-0.11.1}/CHANGELOG.md +80 -0
  2. {elspais-0.9.3 → elspais-0.11.1}/PKG-INFO +36 -18
  3. {elspais-0.9.3 → elspais-0.11.1}/README.md +24 -17
  4. elspais-0.11.1/docs/commands.md +672 -0
  5. {elspais-0.9.3 → elspais-0.11.1}/docs/multi-repo.md +35 -8
  6. elspais-0.11.1/docs/trace-view.md +316 -0
  7. {elspais-0.9.3 → elspais-0.11.1}/pyproject.toml +20 -1
  8. {elspais-0.9.3 → elspais-0.11.1}/src/elspais/cli.py +141 -10
  9. {elspais-0.9.3 → elspais-0.11.1}/src/elspais/commands/hash_cmd.py +72 -26
  10. elspais-0.11.1/src/elspais/commands/reformat_cmd.py +458 -0
  11. {elspais-0.9.3 → elspais-0.11.1}/src/elspais/commands/trace.py +157 -3
  12. {elspais-0.9.3 → elspais-0.11.1}/src/elspais/commands/validate.py +44 -16
  13. {elspais-0.9.3 → elspais-0.11.1}/src/elspais/core/models.py +2 -0
  14. {elspais-0.9.3 → elspais-0.11.1}/src/elspais/core/parser.py +68 -24
  15. elspais-0.11.1/src/elspais/reformat/__init__.py +50 -0
  16. elspais-0.11.1/src/elspais/reformat/detector.py +119 -0
  17. elspais-0.11.1/src/elspais/reformat/hierarchy.py +246 -0
  18. elspais-0.11.1/src/elspais/reformat/line_breaks.py +220 -0
  19. elspais-0.11.1/src/elspais/reformat/prompts.py +123 -0
  20. elspais-0.11.1/src/elspais/reformat/transformer.py +264 -0
  21. elspais-0.11.1/src/elspais/sponsors/__init__.py +432 -0
  22. elspais-0.11.1/src/elspais/trace_view/__init__.py +54 -0
  23. elspais-0.11.1/src/elspais/trace_view/coverage.py +183 -0
  24. elspais-0.11.1/src/elspais/trace_view/generators/__init__.py +12 -0
  25. elspais-0.11.1/src/elspais/trace_view/generators/base.py +329 -0
  26. elspais-0.11.1/src/elspais/trace_view/generators/csv.py +122 -0
  27. elspais-0.11.1/src/elspais/trace_view/generators/markdown.py +175 -0
  28. elspais-0.11.1/src/elspais/trace_view/html/__init__.py +31 -0
  29. elspais-0.11.1/src/elspais/trace_view/html/generator.py +1006 -0
  30. elspais-0.11.1/src/elspais/trace_view/html/templates/base.html +283 -0
  31. elspais-0.11.1/src/elspais/trace_view/html/templates/components/code_viewer_modal.html +14 -0
  32. elspais-0.11.1/src/elspais/trace_view/html/templates/components/file_picker_modal.html +20 -0
  33. elspais-0.11.1/src/elspais/trace_view/html/templates/components/legend_modal.html +69 -0
  34. elspais-0.11.1/src/elspais/trace_view/html/templates/components/review_panel.html +118 -0
  35. elspais-0.11.1/src/elspais/trace_view/html/templates/partials/review/help/help-panel.json +244 -0
  36. elspais-0.11.1/src/elspais/trace_view/html/templates/partials/review/help/onboarding.json +77 -0
  37. elspais-0.11.1/src/elspais/trace_view/html/templates/partials/review/help/tooltips.json +237 -0
  38. elspais-0.11.1/src/elspais/trace_view/html/templates/partials/review/review-comments.js +928 -0
  39. elspais-0.11.1/src/elspais/trace_view/html/templates/partials/review/review-data.js +961 -0
  40. elspais-0.11.1/src/elspais/trace_view/html/templates/partials/review/review-help.js +679 -0
  41. elspais-0.11.1/src/elspais/trace_view/html/templates/partials/review/review-init.js +177 -0
  42. elspais-0.11.1/src/elspais/trace_view/html/templates/partials/review/review-line-numbers.js +429 -0
  43. elspais-0.11.1/src/elspais/trace_view/html/templates/partials/review/review-packages.js +1029 -0
  44. elspais-0.11.1/src/elspais/trace_view/html/templates/partials/review/review-position.js +540 -0
  45. elspais-0.11.1/src/elspais/trace_view/html/templates/partials/review/review-resize.js +115 -0
  46. elspais-0.11.1/src/elspais/trace_view/html/templates/partials/review/review-status.js +659 -0
  47. elspais-0.11.1/src/elspais/trace_view/html/templates/partials/review/review-sync.js +992 -0
  48. elspais-0.11.1/src/elspais/trace_view/html/templates/partials/review-styles.css +2238 -0
  49. elspais-0.11.1/src/elspais/trace_view/html/templates/partials/scripts.js +1741 -0
  50. elspais-0.11.1/src/elspais/trace_view/html/templates/partials/styles.css +1756 -0
  51. elspais-0.11.1/src/elspais/trace_view/models.py +353 -0
  52. elspais-0.11.1/src/elspais/trace_view/review/__init__.py +60 -0
  53. elspais-0.11.1/src/elspais/trace_view/review/branches.py +1149 -0
  54. elspais-0.11.1/src/elspais/trace_view/review/models.py +1205 -0
  55. elspais-0.11.1/src/elspais/trace_view/review/position.py +609 -0
  56. elspais-0.11.1/src/elspais/trace_view/review/server.py +1056 -0
  57. elspais-0.11.1/src/elspais/trace_view/review/status.py +470 -0
  58. elspais-0.11.1/src/elspais/trace_view/review/storage.py +1367 -0
  59. elspais-0.11.1/src/elspais/trace_view/scanning.py +213 -0
  60. elspais-0.11.1/src/elspais/trace_view/specs/README.md +84 -0
  61. elspais-0.11.1/src/elspais/trace_view/specs/tv-d00001-template-architecture.md +36 -0
  62. elspais-0.11.1/src/elspais/trace_view/specs/tv-d00002-css-extraction.md +37 -0
  63. elspais-0.11.1/src/elspais/trace_view/specs/tv-d00003-js-extraction.md +43 -0
  64. elspais-0.11.1/src/elspais/trace_view/specs/tv-d00004-build-embedding.md +40 -0
  65. elspais-0.11.1/src/elspais/trace_view/specs/tv-d00005-test-format.md +78 -0
  66. elspais-0.11.1/src/elspais/trace_view/specs/tv-d00010-review-data-models.md +33 -0
  67. elspais-0.11.1/src/elspais/trace_view/specs/tv-d00011-review-storage.md +33 -0
  68. elspais-0.11.1/src/elspais/trace_view/specs/tv-d00012-position-resolution.md +33 -0
  69. elspais-0.11.1/src/elspais/trace_view/specs/tv-d00013-git-branches.md +31 -0
  70. elspais-0.11.1/src/elspais/trace_view/specs/tv-d00014-review-api-server.md +31 -0
  71. elspais-0.11.1/src/elspais/trace_view/specs/tv-d00015-status-modifier.md +27 -0
  72. elspais-0.11.1/src/elspais/trace_view/specs/tv-d00016-js-integration.md +33 -0
  73. elspais-0.11.1/src/elspais/trace_view/specs/tv-p00001-html-generator.md +33 -0
  74. elspais-0.11.1/src/elspais/trace_view/specs/tv-p00002-review-system.md +29 -0
  75. {elspais-0.9.3 → elspais-0.11.1}/tests/test_parser_resilience.py +216 -0
  76. elspais-0.11.1/tests/test_sponsors.py +491 -0
  77. elspais-0.11.1/tests/test_trace_view/__init__.py +1 -0
  78. elspais-0.11.1/tests/test_trace_view/test_integration.py +225 -0
  79. {elspais-0.9.3 → elspais-0.11.1}/tests/test_validate_json.py +132 -1
  80. {elspais-0.9.3 → elspais-0.11.1}/.gitignore +0 -0
  81. {elspais-0.9.3 → elspais-0.11.1}/LICENSE +0 -0
  82. {elspais-0.9.3 → elspais-0.11.1}/docs/configuration.md +0 -0
  83. {elspais-0.9.3 → elspais-0.11.1}/docs/patterns.md +0 -0
  84. {elspais-0.9.3 → elspais-0.11.1}/docs/roadmap/llm-reformatting-integration.md +0 -0
  85. {elspais-0.9.3 → elspais-0.11.1}/docs/roadmap/new-format.md +0 -0
  86. {elspais-0.9.3 → elspais-0.11.1}/docs/roadmap/plantuml-diagram-support.md +0 -0
  87. {elspais-0.9.3 → elspais-0.11.1}/docs/roadmap/requirements-format-enhancements.md +0 -0
  88. {elspais-0.9.3 → elspais-0.11.1}/docs/rules.md +0 -0
  89. {elspais-0.9.3 → elspais-0.11.1}/src/elspais/__init__.py +0 -0
  90. {elspais-0.9.3 → elspais-0.11.1}/src/elspais/__main__.py +0 -0
  91. {elspais-0.9.3 → elspais-0.11.1}/src/elspais/commands/__init__.py +0 -0
  92. {elspais-0.9.3 → elspais-0.11.1}/src/elspais/commands/analyze.py +0 -0
  93. {elspais-0.9.3 → elspais-0.11.1}/src/elspais/commands/changed.py +0 -0
  94. {elspais-0.9.3 → elspais-0.11.1}/src/elspais/commands/config_cmd.py +0 -0
  95. {elspais-0.9.3 → elspais-0.11.1}/src/elspais/commands/edit.py +0 -0
  96. {elspais-0.9.3 → elspais-0.11.1}/src/elspais/commands/index.py +0 -0
  97. {elspais-0.9.3 → elspais-0.11.1}/src/elspais/commands/init.py +0 -0
  98. {elspais-0.9.3 → elspais-0.11.1}/src/elspais/commands/rules_cmd.py +0 -0
  99. {elspais-0.9.3 → elspais-0.11.1}/src/elspais/config/__init__.py +0 -0
  100. {elspais-0.9.3 → elspais-0.11.1}/src/elspais/config/defaults.py +0 -0
  101. {elspais-0.9.3 → elspais-0.11.1}/src/elspais/config/loader.py +0 -0
  102. {elspais-0.9.3 → elspais-0.11.1}/src/elspais/core/__init__.py +0 -0
  103. {elspais-0.9.3 → elspais-0.11.1}/src/elspais/core/content_rules.py +0 -0
  104. {elspais-0.9.3 → elspais-0.11.1}/src/elspais/core/git.py +0 -0
  105. {elspais-0.9.3 → elspais-0.11.1}/src/elspais/core/hasher.py +0 -0
  106. {elspais-0.9.3 → elspais-0.11.1}/src/elspais/core/patterns.py +0 -0
  107. {elspais-0.9.3 → elspais-0.11.1}/src/elspais/core/rules.py +0 -0
  108. {elspais-0.9.3 → elspais-0.11.1}/src/elspais/mcp/__init__.py +0 -0
  109. {elspais-0.9.3 → elspais-0.11.1}/src/elspais/mcp/__main__.py +0 -0
  110. {elspais-0.9.3 → elspais-0.11.1}/src/elspais/mcp/context.py +0 -0
  111. {elspais-0.9.3 → elspais-0.11.1}/src/elspais/mcp/serializers.py +0 -0
  112. {elspais-0.9.3 → elspais-0.11.1}/src/elspais/mcp/server.py +0 -0
  113. {elspais-0.9.3 → elspais-0.11.1}/src/elspais/testing/__init__.py +0 -0
  114. {elspais-0.9.3 → elspais-0.11.1}/src/elspais/testing/config.py +0 -0
  115. {elspais-0.9.3 → elspais-0.11.1}/src/elspais/testing/mapper.py +0 -0
  116. {elspais-0.9.3 → elspais-0.11.1}/src/elspais/testing/result_parser.py +0 -0
  117. {elspais-0.9.3 → elspais-0.11.1}/src/elspais/testing/scanner.py +0 -0
  118. {elspais-0.9.3 → elspais-0.11.1}/tests/conftest.py +0 -0
  119. {elspais-0.9.3 → elspais-0.11.1}/tests/fixtures/assertions/.elspais.toml +0 -0
  120. {elspais-0.9.3 → elspais-0.11.1}/tests/fixtures/assertions/spec/dev-impl.md +0 -0
  121. {elspais-0.9.3 → elspais-0.11.1}/tests/fixtures/assertions/spec/prd-sample.md +0 -0
  122. {elspais-0.9.3 → elspais-0.11.1}/tests/fixtures/associated-repo/.elspais.toml +0 -0
  123. {elspais-0.9.3 → elspais-0.11.1}/tests/fixtures/associated-repo/spec/dev-sponsor.md +0 -0
  124. {elspais-0.9.3 → elspais-0.11.1}/tests/fixtures/associated-repo/spec/prd-sponsor.md +0 -0
  125. {elspais-0.9.3 → elspais-0.11.1}/tests/fixtures/fda-style/.elspais.toml +0 -0
  126. {elspais-0.9.3 → elspais-0.11.1}/tests/fixtures/fda-style/spec/dev-impl.md +0 -0
  127. {elspais-0.9.3 → elspais-0.11.1}/tests/fixtures/fda-style/spec/prd-core.md +0 -0
  128. {elspais-0.9.3 → elspais-0.11.1}/tests/fixtures/hht-like/.elspais.toml +0 -0
  129. {elspais-0.9.3 → elspais-0.11.1}/tests/fixtures/hht-like/database/schema.sql +0 -0
  130. {elspais-0.9.3 → elspais-0.11.1}/tests/fixtures/hht-like/spec/INDEX.md +0 -0
  131. {elspais-0.9.3 → elspais-0.11.1}/tests/fixtures/hht-like/spec/dev-impl.md +0 -0
  132. {elspais-0.9.3 → elspais-0.11.1}/tests/fixtures/hht-like/spec/ops-deploy.md +0 -0
  133. {elspais-0.9.3 → elspais-0.11.1}/tests/fixtures/hht-like/spec/prd-core.md +0 -0
  134. {elspais-0.9.3 → elspais-0.11.1}/tests/fixtures/invalid/broken-links/.elspais.toml +0 -0
  135. {elspais-0.9.3 → elspais-0.11.1}/tests/fixtures/invalid/broken-links/spec/broken.md +0 -0
  136. {elspais-0.9.3 → elspais-0.11.1}/tests/fixtures/invalid/circular-deps/.elspais.toml +0 -0
  137. {elspais-0.9.3 → elspais-0.11.1}/tests/fixtures/invalid/circular-deps/spec/circular.md +0 -0
  138. {elspais-0.9.3 → elspais-0.11.1}/tests/fixtures/invalid/missing-hash/.elspais.toml +0 -0
  139. {elspais-0.9.3 → elspais-0.11.1}/tests/fixtures/invalid/missing-hash/spec/missing.md +0 -0
  140. {elspais-0.9.3 → elspais-0.11.1}/tests/fixtures/jira-style/.elspais.toml +0 -0
  141. {elspais-0.9.3 → elspais-0.11.1}/tests/fixtures/jira-style/requirements/features.md +0 -0
  142. {elspais-0.9.3 → elspais-0.11.1}/tests/fixtures/named-reqs/.elspais.toml +0 -0
  143. {elspais-0.9.3 → elspais-0.11.1}/tests/fixtures/named-reqs/spec/features.md +0 -0
  144. {elspais-0.9.3 → elspais-0.11.1}/tests/mcp/__init__.py +0 -0
  145. {elspais-0.9.3 → elspais-0.11.1}/tests/mcp/test_context.py +0 -0
  146. {elspais-0.9.3 → elspais-0.11.1}/tests/mcp/test_serializers.py +0 -0
  147. {elspais-0.9.3 → elspais-0.11.1}/tests/test_config.py +0 -0
  148. {elspais-0.9.3 → elspais-0.11.1}/tests/test_content_rules.py +0 -0
  149. {elspais-0.9.3 → elspais-0.11.1}/tests/test_doc_sync.py +0 -0
  150. {elspais-0.9.3 → elspais-0.11.1}/tests/test_edit.py +0 -0
  151. {elspais-0.9.3 → elspais-0.11.1}/tests/test_git.py +0 -0
  152. {elspais-0.9.3 → elspais-0.11.1}/tests/test_hash_bugs.py +0 -0
  153. {elspais-0.9.3 → elspais-0.11.1}/tests/test_hasher.py +0 -0
  154. {elspais-0.9.3 → elspais-0.11.1}/tests/test_models.py +0 -0
  155. {elspais-0.9.3 → elspais-0.11.1}/tests/test_parser.py +0 -0
  156. {elspais-0.9.3 → elspais-0.11.1}/tests/test_patterns.py +0 -0
  157. {elspais-0.9.3 → elspais-0.11.1}/tests/test_rules.py +0 -0
  158. {elspais-0.9.3 → elspais-0.11.1}/tests/testing/__init__.py +0 -0
  159. {elspais-0.9.3 → elspais-0.11.1}/tests/testing/fixtures/junit_results.xml +0 -0
  160. {elspais-0.9.3 → elspais-0.11.1}/tests/testing/fixtures/pytest_results.json +0 -0
  161. {elspais-0.9.3 → elspais-0.11.1}/tests/testing/fixtures/sample_test.py +0 -0
  162. {elspais-0.9.3 → elspais-0.11.1}/tests/testing/test_config.py +0 -0
  163. {elspais-0.9.3 → elspais-0.11.1}/tests/testing/test_mapper.py +0 -0
  164. {elspais-0.9.3 → elspais-0.11.1}/tests/testing/test_result_parser.py +0 -0
  165. {elspais-0.9.3 → elspais-0.11.1}/tests/testing/test_scanner.py +0 -0
@@ -7,6 +7,86 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.11.1] - 2026-01-15
11
+
12
+ ### Changed
13
+ - Improved CLI `--help` output with examples, subcommand hints, and clearer descriptions
14
+
15
+ ## [0.11.0] - 2026-01-15
16
+
17
+ ### Added
18
+ - **Cross-repo hierarchy support** for `reformat-with-claude` command
19
+ - Resolves parent requirements from associated/sponsor repositories
20
+ - New `--core-repo` flag to specify core repository path
21
+ - Builds complete hierarchy graph across repository boundaries
22
+
23
+ ### Changed
24
+ - **Performance optimization** for reformat command: Uses validation to filter requirements before reformatting instead of processing all files
25
+ - Reformat module now uses core modules directly for consistent behavior
26
+
27
+ ### Fixed
28
+ - Hash update robustness improved with better error handling and INFO logging
29
+ - `normalize_req_id()` now uses config-based `PatternValidator` for consistent ID normalization
30
+ - Associated prefix case is now preserved in normalized requirement IDs
31
+
32
+ ## [0.10.0] - 2026-01-10
33
+
34
+ ### Added
35
+ - **trace-view integration**: Enhanced traceability visualization with optional dependencies
36
+ - Interactive HTML generation with Jinja2 templates (`elspais[trace-view]`)
37
+ - Collaborative review server with Flask REST API (`elspais[trace-review]`)
38
+ - New CLI flags: `--view`, `--embed-content`, `--edit-mode`, `--review-mode`, `--server`, `--port`
39
+ - **New `trace_view` package** (`src/elspais/trace_view/`)
40
+ - `TraceViewRequirement` adapter wrapping core `Requirement` model
41
+ - Coverage calculation and orphan detection
42
+ - Implementation file scanning
43
+ - Generators for HTML, Markdown, and CSV output
44
+ - **Review system** for collaborative requirement feedback
45
+ - Comment threads with nested replies
46
+ - Review flags and status change requests
47
+ - Git branch management for review workflows
48
+ - JSON-based persistence in `.elspais/reviews/`
49
+ - **AI-assisted requirement reformatting** with `reformat-with-claude` command
50
+ - Transforms legacy "Acceptance Criteria" format to assertion-based format
51
+ - Format detection and validation
52
+ - Line break normalization
53
+ - Claude CLI integration with structured JSON output
54
+ - **New `reformat` module** (`src/elspais/reformat/`)
55
+ - `detect_format()`, `needs_reformatting()` - format analysis
56
+ - `reformat_requirement()`, `assemble_new_format()` - AI transformation
57
+ - `normalize_line_breaks()`, `fix_requirement_line_breaks()` - cleanup
58
+ - `RequirementNode`, `build_hierarchy()` - requirement traversal
59
+ - New optional dependency extras in pyproject.toml:
60
+ - `elspais[trace-view]`: jinja2 for HTML generation
61
+ - `elspais[trace-review]`: flask, flask-cors for review server
62
+ - `elspais[all]`: all optional features
63
+ - New documentation: `docs/trace-view.md` user guide
64
+ - 18 new integration tests for trace-view features
65
+
66
+ ### Changed
67
+ - `elspais trace` command now delegates to trace-view when enhanced features requested
68
+ - CLAUDE.md updated with trace-view architecture documentation
69
+
70
+ ## [0.9.4] - 2026-01-08
71
+
72
+ ### Added
73
+ - **Roadmap conflict entries**: When duplicate requirement IDs exist (e.g., same ID in spec/ and spec/roadmap/), both requirements are now visible in output
74
+ - Duplicate entries stored with `__conflict` suffix key (e.g., `REQ-p00001__conflict`)
75
+ - New `is_conflict` and `conflict_with` fields on Requirement model
76
+ - Conflict entries treated as orphaned (`implements=[]`) for clear visibility
77
+ - Warning generated for each duplicate (surfaced as `id.duplicate` rule)
78
+ - **Sponsor/associated repository spec scanning**: New `--mode` flag and sponsor configuration support
79
+ - `elspais validate --mode core`: Scan only core spec directories
80
+ - `elspais validate --mode combined`: Include sponsor specs (default)
81
+ - New `sponsors` module with zero-dependency YAML parser
82
+ - Configuration via `.github/config/sponsors.yml` with local override support
83
+ - `traceability.include_associated` config option (default: true)
84
+ - 29 new tests for conflict entries and sponsor scanning
85
+
86
+ ### Changed
87
+ - Parser now keeps both requirements when duplicates found (instead of ignoring second)
88
+ - JSON output includes conflict metadata for both original and conflict entries
89
+
10
90
  ## [0.9.3] - 2026-01-05
11
91
 
12
92
  ### Added
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: elspais
3
- Version: 0.9.3
3
+ Version: 0.11.1
4
4
  Summary: Requirements validation and traceability tools - L-Space connects all libraries
5
5
  Project-URL: Homepage, https://github.com/anspar/elspais
6
6
  Project-URL: Documentation, https://github.com/anspar/elspais#readme
@@ -24,6 +24,11 @@ Classifier: Topic :: Software Development :: Documentation
24
24
  Classifier: Topic :: Software Development :: Quality Assurance
25
25
  Classifier: Typing :: Typed
26
26
  Requires-Python: >=3.9
27
+ Provides-Extra: all
28
+ Requires-Dist: flask-cors>=4.0; extra == 'all'
29
+ Requires-Dist: flask>=2.0; extra == 'all'
30
+ Requires-Dist: jinja2>=3.0; extra == 'all'
31
+ Requires-Dist: mcp>=1.0; extra == 'all'
27
32
  Provides-Extra: binary
28
33
  Requires-Dist: pyinstaller>=6.0; extra == 'binary'
29
34
  Provides-Extra: dev
@@ -34,6 +39,12 @@ Requires-Dist: pytest>=7.0; extra == 'dev'
34
39
  Requires-Dist: ruff>=0.1.0; extra == 'dev'
35
40
  Provides-Extra: mcp
36
41
  Requires-Dist: mcp>=1.0; extra == 'mcp'
42
+ Provides-Extra: trace-review
43
+ Requires-Dist: flask-cors>=4.0; extra == 'trace-review'
44
+ Requires-Dist: flask>=2.0; extra == 'trace-review'
45
+ Requires-Dist: jinja2>=3.0; extra == 'trace-review'
46
+ Provides-Extra: trace-view
47
+ Requires-Dist: jinja2>=3.0; extra == 'trace-view'
37
48
  Description-Content-Type: text/markdown
38
49
 
39
50
  # elspais
@@ -59,11 +70,11 @@ Description-Content-Type: text/markdown
59
70
  ### For End Users
60
71
 
61
72
  ```bash
62
- # Standard installation
63
- pip install elspais
64
-
65
- # Recommended for CLI tools: Isolated installation
73
+ # Recommended: Isolated installation with pipx
66
74
  pipx install elspais
75
+
76
+ # Or standard pip installation
77
+ pip install elspais
67
78
  ```
68
79
 
69
80
  ### For Development
@@ -86,7 +97,7 @@ FROM python:3.11-slim
86
97
  COPY --from=ghcr.io/astral-sh/uv:latest /uv /usr/local/bin/uv
87
98
 
88
99
  # Install elspais (10-100x faster than pip)
89
- RUN uv pip install --system --no-cache elspais==0.9.1
100
+ RUN uv pip install --system --no-cache elspais==0.9.3
90
101
  ```
91
102
 
92
103
  ```yaml
@@ -95,7 +106,7 @@ RUN uv pip install --system --no-cache elspais==0.9.1
95
106
  uses: astral-sh/setup-uv@v2
96
107
 
97
108
  - name: Install elspais
98
- run: uv pip install --system elspais==0.9.1
109
+ run: uv pip install --system elspais==0.9.3
99
110
  ```
100
111
 
101
112
  **Note:** For regulated/medical software projects, always pin the exact version for reproducibility.
@@ -365,19 +376,23 @@ Options:
365
376
  --help Show help
366
377
 
367
378
  Commands:
368
- validate Validate requirements format, links, hashes
369
- trace Generate traceability matrix
370
- hash Manage requirement hashes (verify, update)
371
- index Validate or regenerate INDEX.md
372
- analyze Analyze requirement hierarchy
373
- edit Edit requirements in-place (status, implements, move)
374
- config View and modify configuration
375
- rules View and manage content rules
376
- mcp MCP server commands (requires elspais[mcp])
377
- version Show version and check for updates
378
- init Create .elspais.toml configuration
379
+ validate Validate requirements format, links, and hashes
380
+ trace Generate traceability matrix
381
+ hash Manage requirement hashes (verify, update)
382
+ index Manage INDEX.md file (validate, regenerate)
383
+ analyze Analyze requirement hierarchy (hierarchy, orphans, coverage)
384
+ changed Detect git changes to spec files
385
+ version Show version and check for updates
386
+ init Create .elspais.toml configuration
387
+ edit Edit requirements in-place (implements, status, move)
388
+ config View and modify configuration (show, get, set, ...)
389
+ rules View and manage content rules (list, show)
390
+ reformat-with-claude Reformat requirements using AI (Acceptance Criteria -> Assertions)
391
+ mcp MCP server commands (requires elspais[mcp])
379
392
  ```
380
393
 
394
+ See [docs/commands.md](docs/commands.md) for comprehensive command documentation.
395
+
381
396
  ## Development
382
397
 
383
398
  ```bash
@@ -386,6 +401,9 @@ git clone https://github.com/anspar/elspais.git
386
401
  cd elspais
387
402
  pip install -e ".[dev]"
388
403
 
404
+ # Enable git hooks (verifies docs stay in sync before push)
405
+ git config core.hooksPath .githooks
406
+
389
407
  # Run tests
390
408
  pytest
391
409
 
@@ -21,11 +21,11 @@
21
21
  ### For End Users
22
22
 
23
23
  ```bash
24
- # Standard installation
25
- pip install elspais
26
-
27
- # Recommended for CLI tools: Isolated installation
24
+ # Recommended: Isolated installation with pipx
28
25
  pipx install elspais
26
+
27
+ # Or standard pip installation
28
+ pip install elspais
29
29
  ```
30
30
 
31
31
  ### For Development
@@ -48,7 +48,7 @@ FROM python:3.11-slim
48
48
  COPY --from=ghcr.io/astral-sh/uv:latest /uv /usr/local/bin/uv
49
49
 
50
50
  # Install elspais (10-100x faster than pip)
51
- RUN uv pip install --system --no-cache elspais==0.9.1
51
+ RUN uv pip install --system --no-cache elspais==0.9.3
52
52
  ```
53
53
 
54
54
  ```yaml
@@ -57,7 +57,7 @@ RUN uv pip install --system --no-cache elspais==0.9.1
57
57
  uses: astral-sh/setup-uv@v2
58
58
 
59
59
  - name: Install elspais
60
- run: uv pip install --system elspais==0.9.1
60
+ run: uv pip install --system elspais==0.9.3
61
61
  ```
62
62
 
63
63
  **Note:** For regulated/medical software projects, always pin the exact version for reproducibility.
@@ -327,19 +327,23 @@ Options:
327
327
  --help Show help
328
328
 
329
329
  Commands:
330
- validate Validate requirements format, links, hashes
331
- trace Generate traceability matrix
332
- hash Manage requirement hashes (verify, update)
333
- index Validate or regenerate INDEX.md
334
- analyze Analyze requirement hierarchy
335
- edit Edit requirements in-place (status, implements, move)
336
- config View and modify configuration
337
- rules View and manage content rules
338
- mcp MCP server commands (requires elspais[mcp])
339
- version Show version and check for updates
340
- init Create .elspais.toml configuration
330
+ validate Validate requirements format, links, and hashes
331
+ trace Generate traceability matrix
332
+ hash Manage requirement hashes (verify, update)
333
+ index Manage INDEX.md file (validate, regenerate)
334
+ analyze Analyze requirement hierarchy (hierarchy, orphans, coverage)
335
+ changed Detect git changes to spec files
336
+ version Show version and check for updates
337
+ init Create .elspais.toml configuration
338
+ edit Edit requirements in-place (implements, status, move)
339
+ config View and modify configuration (show, get, set, ...)
340
+ rules View and manage content rules (list, show)
341
+ reformat-with-claude Reformat requirements using AI (Acceptance Criteria -> Assertions)
342
+ mcp MCP server commands (requires elspais[mcp])
341
343
  ```
342
344
 
345
+ See [docs/commands.md](docs/commands.md) for comprehensive command documentation.
346
+
343
347
  ## Development
344
348
 
345
349
  ```bash
@@ -348,6 +352,9 @@ git clone https://github.com/anspar/elspais.git
348
352
  cd elspais
349
353
  pip install -e ".[dev]"
350
354
 
355
+ # Enable git hooks (verifies docs stay in sync before push)
356
+ git config core.hooksPath .githooks
357
+
351
358
  # Run tests
352
359
  pytest
353
360