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.
- {elspais-0.9.3 → elspais-0.11.1}/CHANGELOG.md +80 -0
- {elspais-0.9.3 → elspais-0.11.1}/PKG-INFO +36 -18
- {elspais-0.9.3 → elspais-0.11.1}/README.md +24 -17
- elspais-0.11.1/docs/commands.md +672 -0
- {elspais-0.9.3 → elspais-0.11.1}/docs/multi-repo.md +35 -8
- elspais-0.11.1/docs/trace-view.md +316 -0
- {elspais-0.9.3 → elspais-0.11.1}/pyproject.toml +20 -1
- {elspais-0.9.3 → elspais-0.11.1}/src/elspais/cli.py +141 -10
- {elspais-0.9.3 → elspais-0.11.1}/src/elspais/commands/hash_cmd.py +72 -26
- elspais-0.11.1/src/elspais/commands/reformat_cmd.py +458 -0
- {elspais-0.9.3 → elspais-0.11.1}/src/elspais/commands/trace.py +157 -3
- {elspais-0.9.3 → elspais-0.11.1}/src/elspais/commands/validate.py +44 -16
- {elspais-0.9.3 → elspais-0.11.1}/src/elspais/core/models.py +2 -0
- {elspais-0.9.3 → elspais-0.11.1}/src/elspais/core/parser.py +68 -24
- elspais-0.11.1/src/elspais/reformat/__init__.py +50 -0
- elspais-0.11.1/src/elspais/reformat/detector.py +119 -0
- elspais-0.11.1/src/elspais/reformat/hierarchy.py +246 -0
- elspais-0.11.1/src/elspais/reformat/line_breaks.py +220 -0
- elspais-0.11.1/src/elspais/reformat/prompts.py +123 -0
- elspais-0.11.1/src/elspais/reformat/transformer.py +264 -0
- elspais-0.11.1/src/elspais/sponsors/__init__.py +432 -0
- elspais-0.11.1/src/elspais/trace_view/__init__.py +54 -0
- elspais-0.11.1/src/elspais/trace_view/coverage.py +183 -0
- elspais-0.11.1/src/elspais/trace_view/generators/__init__.py +12 -0
- elspais-0.11.1/src/elspais/trace_view/generators/base.py +329 -0
- elspais-0.11.1/src/elspais/trace_view/generators/csv.py +122 -0
- elspais-0.11.1/src/elspais/trace_view/generators/markdown.py +175 -0
- elspais-0.11.1/src/elspais/trace_view/html/__init__.py +31 -0
- elspais-0.11.1/src/elspais/trace_view/html/generator.py +1006 -0
- elspais-0.11.1/src/elspais/trace_view/html/templates/base.html +283 -0
- elspais-0.11.1/src/elspais/trace_view/html/templates/components/code_viewer_modal.html +14 -0
- elspais-0.11.1/src/elspais/trace_view/html/templates/components/file_picker_modal.html +20 -0
- elspais-0.11.1/src/elspais/trace_view/html/templates/components/legend_modal.html +69 -0
- elspais-0.11.1/src/elspais/trace_view/html/templates/components/review_panel.html +118 -0
- elspais-0.11.1/src/elspais/trace_view/html/templates/partials/review/help/help-panel.json +244 -0
- elspais-0.11.1/src/elspais/trace_view/html/templates/partials/review/help/onboarding.json +77 -0
- elspais-0.11.1/src/elspais/trace_view/html/templates/partials/review/help/tooltips.json +237 -0
- elspais-0.11.1/src/elspais/trace_view/html/templates/partials/review/review-comments.js +928 -0
- elspais-0.11.1/src/elspais/trace_view/html/templates/partials/review/review-data.js +961 -0
- elspais-0.11.1/src/elspais/trace_view/html/templates/partials/review/review-help.js +679 -0
- elspais-0.11.1/src/elspais/trace_view/html/templates/partials/review/review-init.js +177 -0
- elspais-0.11.1/src/elspais/trace_view/html/templates/partials/review/review-line-numbers.js +429 -0
- elspais-0.11.1/src/elspais/trace_view/html/templates/partials/review/review-packages.js +1029 -0
- elspais-0.11.1/src/elspais/trace_view/html/templates/partials/review/review-position.js +540 -0
- elspais-0.11.1/src/elspais/trace_view/html/templates/partials/review/review-resize.js +115 -0
- elspais-0.11.1/src/elspais/trace_view/html/templates/partials/review/review-status.js +659 -0
- elspais-0.11.1/src/elspais/trace_view/html/templates/partials/review/review-sync.js +992 -0
- elspais-0.11.1/src/elspais/trace_view/html/templates/partials/review-styles.css +2238 -0
- elspais-0.11.1/src/elspais/trace_view/html/templates/partials/scripts.js +1741 -0
- elspais-0.11.1/src/elspais/trace_view/html/templates/partials/styles.css +1756 -0
- elspais-0.11.1/src/elspais/trace_view/models.py +353 -0
- elspais-0.11.1/src/elspais/trace_view/review/__init__.py +60 -0
- elspais-0.11.1/src/elspais/trace_view/review/branches.py +1149 -0
- elspais-0.11.1/src/elspais/trace_view/review/models.py +1205 -0
- elspais-0.11.1/src/elspais/trace_view/review/position.py +609 -0
- elspais-0.11.1/src/elspais/trace_view/review/server.py +1056 -0
- elspais-0.11.1/src/elspais/trace_view/review/status.py +470 -0
- elspais-0.11.1/src/elspais/trace_view/review/storage.py +1367 -0
- elspais-0.11.1/src/elspais/trace_view/scanning.py +213 -0
- elspais-0.11.1/src/elspais/trace_view/specs/README.md +84 -0
- elspais-0.11.1/src/elspais/trace_view/specs/tv-d00001-template-architecture.md +36 -0
- elspais-0.11.1/src/elspais/trace_view/specs/tv-d00002-css-extraction.md +37 -0
- elspais-0.11.1/src/elspais/trace_view/specs/tv-d00003-js-extraction.md +43 -0
- elspais-0.11.1/src/elspais/trace_view/specs/tv-d00004-build-embedding.md +40 -0
- elspais-0.11.1/src/elspais/trace_view/specs/tv-d00005-test-format.md +78 -0
- elspais-0.11.1/src/elspais/trace_view/specs/tv-d00010-review-data-models.md +33 -0
- elspais-0.11.1/src/elspais/trace_view/specs/tv-d00011-review-storage.md +33 -0
- elspais-0.11.1/src/elspais/trace_view/specs/tv-d00012-position-resolution.md +33 -0
- elspais-0.11.1/src/elspais/trace_view/specs/tv-d00013-git-branches.md +31 -0
- elspais-0.11.1/src/elspais/trace_view/specs/tv-d00014-review-api-server.md +31 -0
- elspais-0.11.1/src/elspais/trace_view/specs/tv-d00015-status-modifier.md +27 -0
- elspais-0.11.1/src/elspais/trace_view/specs/tv-d00016-js-integration.md +33 -0
- elspais-0.11.1/src/elspais/trace_view/specs/tv-p00001-html-generator.md +33 -0
- elspais-0.11.1/src/elspais/trace_view/specs/tv-p00002-review-system.md +29 -0
- {elspais-0.9.3 → elspais-0.11.1}/tests/test_parser_resilience.py +216 -0
- elspais-0.11.1/tests/test_sponsors.py +491 -0
- elspais-0.11.1/tests/test_trace_view/__init__.py +1 -0
- elspais-0.11.1/tests/test_trace_view/test_integration.py +225 -0
- {elspais-0.9.3 → elspais-0.11.1}/tests/test_validate_json.py +132 -1
- {elspais-0.9.3 → elspais-0.11.1}/.gitignore +0 -0
- {elspais-0.9.3 → elspais-0.11.1}/LICENSE +0 -0
- {elspais-0.9.3 → elspais-0.11.1}/docs/configuration.md +0 -0
- {elspais-0.9.3 → elspais-0.11.1}/docs/patterns.md +0 -0
- {elspais-0.9.3 → elspais-0.11.1}/docs/roadmap/llm-reformatting-integration.md +0 -0
- {elspais-0.9.3 → elspais-0.11.1}/docs/roadmap/new-format.md +0 -0
- {elspais-0.9.3 → elspais-0.11.1}/docs/roadmap/plantuml-diagram-support.md +0 -0
- {elspais-0.9.3 → elspais-0.11.1}/docs/roadmap/requirements-format-enhancements.md +0 -0
- {elspais-0.9.3 → elspais-0.11.1}/docs/rules.md +0 -0
- {elspais-0.9.3 → elspais-0.11.1}/src/elspais/__init__.py +0 -0
- {elspais-0.9.3 → elspais-0.11.1}/src/elspais/__main__.py +0 -0
- {elspais-0.9.3 → elspais-0.11.1}/src/elspais/commands/__init__.py +0 -0
- {elspais-0.9.3 → elspais-0.11.1}/src/elspais/commands/analyze.py +0 -0
- {elspais-0.9.3 → elspais-0.11.1}/src/elspais/commands/changed.py +0 -0
- {elspais-0.9.3 → elspais-0.11.1}/src/elspais/commands/config_cmd.py +0 -0
- {elspais-0.9.3 → elspais-0.11.1}/src/elspais/commands/edit.py +0 -0
- {elspais-0.9.3 → elspais-0.11.1}/src/elspais/commands/index.py +0 -0
- {elspais-0.9.3 → elspais-0.11.1}/src/elspais/commands/init.py +0 -0
- {elspais-0.9.3 → elspais-0.11.1}/src/elspais/commands/rules_cmd.py +0 -0
- {elspais-0.9.3 → elspais-0.11.1}/src/elspais/config/__init__.py +0 -0
- {elspais-0.9.3 → elspais-0.11.1}/src/elspais/config/defaults.py +0 -0
- {elspais-0.9.3 → elspais-0.11.1}/src/elspais/config/loader.py +0 -0
- {elspais-0.9.3 → elspais-0.11.1}/src/elspais/core/__init__.py +0 -0
- {elspais-0.9.3 → elspais-0.11.1}/src/elspais/core/content_rules.py +0 -0
- {elspais-0.9.3 → elspais-0.11.1}/src/elspais/core/git.py +0 -0
- {elspais-0.9.3 → elspais-0.11.1}/src/elspais/core/hasher.py +0 -0
- {elspais-0.9.3 → elspais-0.11.1}/src/elspais/core/patterns.py +0 -0
- {elspais-0.9.3 → elspais-0.11.1}/src/elspais/core/rules.py +0 -0
- {elspais-0.9.3 → elspais-0.11.1}/src/elspais/mcp/__init__.py +0 -0
- {elspais-0.9.3 → elspais-0.11.1}/src/elspais/mcp/__main__.py +0 -0
- {elspais-0.9.3 → elspais-0.11.1}/src/elspais/mcp/context.py +0 -0
- {elspais-0.9.3 → elspais-0.11.1}/src/elspais/mcp/serializers.py +0 -0
- {elspais-0.9.3 → elspais-0.11.1}/src/elspais/mcp/server.py +0 -0
- {elspais-0.9.3 → elspais-0.11.1}/src/elspais/testing/__init__.py +0 -0
- {elspais-0.9.3 → elspais-0.11.1}/src/elspais/testing/config.py +0 -0
- {elspais-0.9.3 → elspais-0.11.1}/src/elspais/testing/mapper.py +0 -0
- {elspais-0.9.3 → elspais-0.11.1}/src/elspais/testing/result_parser.py +0 -0
- {elspais-0.9.3 → elspais-0.11.1}/src/elspais/testing/scanner.py +0 -0
- {elspais-0.9.3 → elspais-0.11.1}/tests/conftest.py +0 -0
- {elspais-0.9.3 → elspais-0.11.1}/tests/fixtures/assertions/.elspais.toml +0 -0
- {elspais-0.9.3 → elspais-0.11.1}/tests/fixtures/assertions/spec/dev-impl.md +0 -0
- {elspais-0.9.3 → elspais-0.11.1}/tests/fixtures/assertions/spec/prd-sample.md +0 -0
- {elspais-0.9.3 → elspais-0.11.1}/tests/fixtures/associated-repo/.elspais.toml +0 -0
- {elspais-0.9.3 → elspais-0.11.1}/tests/fixtures/associated-repo/spec/dev-sponsor.md +0 -0
- {elspais-0.9.3 → elspais-0.11.1}/tests/fixtures/associated-repo/spec/prd-sponsor.md +0 -0
- {elspais-0.9.3 → elspais-0.11.1}/tests/fixtures/fda-style/.elspais.toml +0 -0
- {elspais-0.9.3 → elspais-0.11.1}/tests/fixtures/fda-style/spec/dev-impl.md +0 -0
- {elspais-0.9.3 → elspais-0.11.1}/tests/fixtures/fda-style/spec/prd-core.md +0 -0
- {elspais-0.9.3 → elspais-0.11.1}/tests/fixtures/hht-like/.elspais.toml +0 -0
- {elspais-0.9.3 → elspais-0.11.1}/tests/fixtures/hht-like/database/schema.sql +0 -0
- {elspais-0.9.3 → elspais-0.11.1}/tests/fixtures/hht-like/spec/INDEX.md +0 -0
- {elspais-0.9.3 → elspais-0.11.1}/tests/fixtures/hht-like/spec/dev-impl.md +0 -0
- {elspais-0.9.3 → elspais-0.11.1}/tests/fixtures/hht-like/spec/ops-deploy.md +0 -0
- {elspais-0.9.3 → elspais-0.11.1}/tests/fixtures/hht-like/spec/prd-core.md +0 -0
- {elspais-0.9.3 → elspais-0.11.1}/tests/fixtures/invalid/broken-links/.elspais.toml +0 -0
- {elspais-0.9.3 → elspais-0.11.1}/tests/fixtures/invalid/broken-links/spec/broken.md +0 -0
- {elspais-0.9.3 → elspais-0.11.1}/tests/fixtures/invalid/circular-deps/.elspais.toml +0 -0
- {elspais-0.9.3 → elspais-0.11.1}/tests/fixtures/invalid/circular-deps/spec/circular.md +0 -0
- {elspais-0.9.3 → elspais-0.11.1}/tests/fixtures/invalid/missing-hash/.elspais.toml +0 -0
- {elspais-0.9.3 → elspais-0.11.1}/tests/fixtures/invalid/missing-hash/spec/missing.md +0 -0
- {elspais-0.9.3 → elspais-0.11.1}/tests/fixtures/jira-style/.elspais.toml +0 -0
- {elspais-0.9.3 → elspais-0.11.1}/tests/fixtures/jira-style/requirements/features.md +0 -0
- {elspais-0.9.3 → elspais-0.11.1}/tests/fixtures/named-reqs/.elspais.toml +0 -0
- {elspais-0.9.3 → elspais-0.11.1}/tests/fixtures/named-reqs/spec/features.md +0 -0
- {elspais-0.9.3 → elspais-0.11.1}/tests/mcp/__init__.py +0 -0
- {elspais-0.9.3 → elspais-0.11.1}/tests/mcp/test_context.py +0 -0
- {elspais-0.9.3 → elspais-0.11.1}/tests/mcp/test_serializers.py +0 -0
- {elspais-0.9.3 → elspais-0.11.1}/tests/test_config.py +0 -0
- {elspais-0.9.3 → elspais-0.11.1}/tests/test_content_rules.py +0 -0
- {elspais-0.9.3 → elspais-0.11.1}/tests/test_doc_sync.py +0 -0
- {elspais-0.9.3 → elspais-0.11.1}/tests/test_edit.py +0 -0
- {elspais-0.9.3 → elspais-0.11.1}/tests/test_git.py +0 -0
- {elspais-0.9.3 → elspais-0.11.1}/tests/test_hash_bugs.py +0 -0
- {elspais-0.9.3 → elspais-0.11.1}/tests/test_hasher.py +0 -0
- {elspais-0.9.3 → elspais-0.11.1}/tests/test_models.py +0 -0
- {elspais-0.9.3 → elspais-0.11.1}/tests/test_parser.py +0 -0
- {elspais-0.9.3 → elspais-0.11.1}/tests/test_patterns.py +0 -0
- {elspais-0.9.3 → elspais-0.11.1}/tests/test_rules.py +0 -0
- {elspais-0.9.3 → elspais-0.11.1}/tests/testing/__init__.py +0 -0
- {elspais-0.9.3 → elspais-0.11.1}/tests/testing/fixtures/junit_results.xml +0 -0
- {elspais-0.9.3 → elspais-0.11.1}/tests/testing/fixtures/pytest_results.json +0 -0
- {elspais-0.9.3 → elspais-0.11.1}/tests/testing/fixtures/sample_test.py +0 -0
- {elspais-0.9.3 → elspais-0.11.1}/tests/testing/test_config.py +0 -0
- {elspais-0.9.3 → elspais-0.11.1}/tests/testing/test_mapper.py +0 -0
- {elspais-0.9.3 → elspais-0.11.1}/tests/testing/test_result_parser.py +0 -0
- {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.
|
|
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
|
-
#
|
|
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.
|
|
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.
|
|
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
|
|
369
|
-
trace
|
|
370
|
-
hash
|
|
371
|
-
index
|
|
372
|
-
analyze
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
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
|
-
#
|
|
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.
|
|
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.
|
|
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
|
|
331
|
-
trace
|
|
332
|
-
hash
|
|
333
|
-
index
|
|
334
|
-
analyze
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
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
|
|