Skip to content

Commit b826fb6

Browse files
authored
docs: align arch-05 scope with protocol migration cleanup (#212)
Co-authored-by: Dominikus Nold <djm81@users.noreply.github.com>
1 parent 7656d7c commit b826fb6

File tree

6 files changed

+90
-37
lines changed

6 files changed

+90
-37
lines changed

openspec/changes/arch-05-bridge-registry/proposal.md

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,10 @@
1111
- **NEW**: Add `src/specfact_cli/registry/bridge_registry.py` with `SchemaConverter` protocol and `BridgeRegistry` for converter registration/discovery.
1212
- **MODIFY**: Extend module package metadata to declare `service_bridges` in `module-package.yaml`.
1313
- **MODIFY**: Extend module lifecycle registration to validate and register declared service bridges without direct core-to-module imports.
14+
- **MODIFY**: Fix module protocol compliance detection so lifecycle reporting reflects real ModuleIOContract support (no false legacy results for compliant modules).
15+
- **MODIFY**: Reduce lifecycle protocol logging noise (no duplicate warning lines; clear summary-first reporting).
1416
- **MODIFY**: Add backlog bridge converter implementations (ADO, Jira, Linear, GitHub) under module-local adapters and register them via manifest metadata.
17+
- **MODIFY**: Complete ModuleIOContract migration coverage for remaining modules and verify registry reporting against upgraded modules.
1518
- **NEW**: Add user and developer documentation for bridge registry usage and custom bridge mappings.
1619
- **NEW**: Add tests for bridge registry behavior, manifest parsing, registration-time validation, and module integration.
1720

@@ -23,7 +26,7 @@
2326
### Modified Capabilities
2427

2528
- `module-packages`: Extend module package manifest schema with declarative bridge metadata.
26-
- `module-lifecycle-management`: Extend discovery/registration flow to validate and register bridge converters safely.
29+
- `module-lifecycle-management`: Extend discovery/registration flow to validate/register bridge converters safely and report protocol compliance accurately without duplicate warnings.
2730
- `backlog-adapter`: Add bridge converter implementations and mapping behaviors for backlog service integrations.
2831

2932
## Impact
@@ -32,10 +35,13 @@
3235
- **Affected code**:
3336
- `src/specfact_cli/registry/bridge_registry.py` (new)
3437
- `src/specfact_cli/registry/module_packages.py` (bridge metadata loading and registration)
38+
- `src/specfact_cli/common/logger_setup.py` (logging deduplication path if required by lifecycle reporting changes)
3539
- `src/specfact_cli/models/module_package.py` (service bridge metadata)
40+
- `src/specfact_cli/modules/*/src/commands.py` (remaining ModuleIOContract migration where missing)
3641
- `src/specfact_cli/modules/backlog/src/adapters/*.py` (new converter modules)
3742
- `tests/unit/registry/test_bridge_registry.py` (new)
3843
- `tests/unit/registry/test_module_bridge_registration.py` (new)
44+
- `tests/unit/specfact_cli/registry/test_module_packages.py` (protocol detection and reporting assertions)
3945
- **Affected documentation**:
4046
- `docs/reference/bridge-registry.md` (new)
4147
- `docs/guides/creating-custom-bridges.md` (new)

openspec/changes/arch-05-bridge-registry/specs/module-lifecycle-management/spec.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,3 +36,19 @@ The system SHALL degrade gracefully when individual bridge declarations fail.
3636
- **WHEN** a module declares a converter class that cannot be imported
3737
- **THEN** lifecycle registration SHALL skip that bridge declaration
3838
- **AND** continue registering other valid modules and bridges.
39+
40+
### Requirement: Lifecycle protocol reporting is accurate and non-duplicative
41+
42+
The system SHALL report ModuleIOContract compliance based on actual module capabilities and avoid duplicate warning emission.
43+
44+
#### Scenario: Compliant module is not misreported as legacy
45+
46+
- **WHEN** lifecycle registration inspects an enabled module that exposes required ModuleIOContract operations
47+
- **THEN** compliance reporting SHALL classify it as full or partial support
48+
- **AND** SHALL NOT classify it as legacy due to inspection-path mismatch.
49+
50+
#### Scenario: Warning output is emitted once per condition
51+
52+
- **WHEN** lifecycle registration logs protocol warnings during startup
53+
- **THEN** each warning condition SHALL be emitted once per module/event
54+
- **AND** a single summary line SHALL report aggregate full/partial/legacy counts.

openspec/changes/arch-05-bridge-registry/specs/module-packages/spec.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,3 +32,13 @@ The system SHALL validate service bridge metadata structure before module regist
3232

3333
- **WHEN** a manifest contains valid bridge declarations
3434
- **THEN** the parsed `ModulePackageMetadata` SHALL expose those declarations for lifecycle registration.
35+
36+
### Requirement: Protocol metadata reflects real module operations
37+
38+
The system SHALL derive protocol operation metadata from the effective module interface used at runtime.
39+
40+
#### Scenario: Protocol operations are populated from runtime-accessible module interface
41+
42+
- **WHEN** module metadata is loaded for an enabled module
43+
- **THEN** protocol operation detection SHALL inspect the runtime-accessible interface used by lifecycle registration
44+
- **AND** detected operations SHALL be persisted in `ModulePackageMetadata.protocol_operations`.

openspec/changes/arch-05-bridge-registry/tasks.md

Lines changed: 53 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -60,52 +60,69 @@ Do not implement production code for new behavior until corresponding tests exis
6060
- [ ] 7.4 Ensure no direct core imports from module command internals
6161
- [ ] 7.5 Run `pytest tests/unit/registry/test_module_bridge_registration.py -v` and expect pass
6262

63-
## 8. Tests: backlog bridge converters (TDD)
63+
## 8. Tests: protocol reporting accuracy and warning deduplication (TDD)
6464

65-
- [ ] 8.1 Add tests under `tests/unit/modules/backlog/` for converter contract compliance
66-
- [ ] 8.2 Add tests for ADO, Jira, Linear, GitHub converter mapping behavior
67-
- [ ] 8.3 Add tests for custom mapping override loading behavior
68-
- [ ] 8.4 Run `pytest tests/unit/modules/backlog -k converter -v` and expect failure
65+
- [ ] 8.1 Extend `tests/unit/specfact_cli/registry/test_module_packages.py` with protocol compliance detection assertions for full/partial/legacy modules
66+
- [ ] 8.2 Add test coverage ensuring lifecycle warnings are not emitted twice for the same module condition
67+
- [ ] 8.3 Add CLI smoke assertion (`specfact -v`) for single summary emission pattern
68+
- [ ] 8.4 Run targeted registry tests and expect failure
6969

70-
## 9. Implementation: backlog bridge converters
70+
## 9. Implementation: protocol reporting and logging cleanup
7171

72-
- [ ] 9.1 Add converter modules under `src/specfact_cli/modules/backlog/src/adapters/`
73-
- [ ] 9.2 Update backlog module manifest to declare `service_bridges`
74-
- [ ] 9.3 Ensure converters satisfy `SchemaConverter` protocol and contract decorators
75-
- [ ] 9.4 Run `pytest tests/unit/modules/backlog -k converter -v` and expect pass
72+
- [ ] 9.1 Update protocol inspection path in `src/specfact_cli/registry/module_packages.py` to classify compliant modules correctly
73+
- [ ] 9.2 Ensure protocol operations are persisted on `ModulePackageMetadata.protocol_operations` from effective runtime interface
74+
- [ ] 9.3 Eliminate duplicate warning emission in lifecycle startup logs (registry/logger integration)
75+
- [ ] 9.4 Run targeted registry tests and expect pass
7676

77-
## 10. Quality gates and validation
77+
## 10. Tests: backlog bridge converters (TDD)
7878

79-
- [ ] 10.1 Run `hatch run format`
80-
- [ ] 10.2 Run `hatch run lint`
81-
- [ ] 10.3 Run `hatch run type-check`
82-
- [ ] 10.4 Run `hatch run contract-test`
83-
- [ ] 10.5 Run `hatch run smart-test`
84-
- [ ] 10.6 Run `openspec validate arch-05-bridge-registry --strict`
79+
- [ ] 10.1 Add tests under `tests/unit/modules/backlog/` for converter contract compliance
80+
- [ ] 10.2 Add tests for ADO, Jira, Linear, GitHub converter mapping behavior
81+
- [ ] 10.3 Add tests for custom mapping override loading behavior
82+
- [ ] 10.4 Run `pytest tests/unit/modules/backlog -k converter -v` and expect failure
8583

86-
## 11. Documentation research and review
84+
## 11. Implementation: backlog bridge converters and module protocol migration completion
8785

88-
- [ ] 11.1 Identify affected docs: `docs/reference/`, `docs/guides/`, `README.md`, `docs/index.md`
89-
- [ ] 11.2 Add `docs/reference/bridge-registry.md` with contract and usage examples
90-
- [ ] 11.3 Add `docs/guides/creating-custom-bridges.md` with manifest and converter examples
91-
- [ ] 11.4 Update `docs/reference/architecture.md` with bridge registry integration notes
92-
- [ ] 11.5 Update `docs/_layouts/default.html` sidebar links for new docs
86+
- [ ] 11.1 Add converter modules under `src/specfact_cli/modules/backlog/src/adapters/`
87+
- [ ] 11.2 Update backlog module manifest to declare `service_bridges`
88+
- [ ] 11.3 Ensure converters satisfy `SchemaConverter` protocol and contract decorators
89+
- [ ] 11.4 Upgrade remaining modules to implement/ expose ModuleIOContract operations required for non-legacy classification
90+
- [ ] 11.5 Run `pytest tests/unit/modules/backlog -k converter -v` and expect pass
91+
- [ ] 11.6 Run module protocol tests and verify improved compliance summary
9392

94-
## 12. Version and changelog
93+
## 12. Quality gates and validation
9594

96-
- [ ] 12.1 Determine semantic version bump for new capability
97-
- [ ] 12.2 Sync version updates in `pyproject.toml`, `setup.py`, `src/__init__.py`, `src/specfact_cli/__init__.py`
98-
- [ ] 12.3 Add CHANGELOG entry for bridge registry and manifest bridge metadata support
95+
- [ ] 12.1 Run `hatch run format`
96+
- [ ] 12.2 Run `hatch run lint`
97+
- [ ] 12.3 Run `hatch run type-check`
98+
- [ ] 12.4 Run `hatch run contract-test`
99+
- [ ] 12.5 Run `hatch run smart-test`
100+
- [ ] 12.6 Run `openspec validate arch-05-bridge-registry --strict`
99101

100-
## 13. GitHub issue creation
102+
## 13. Documentation research and review
101103

102-
- [ ] 13.1 Create issue in `nold-ai/specfact-cli` with title `[Change] Bridge Registry for Cross-Module Service Interoperability`
103-
- [ ] 13.2 Use labels `enhancement` and `change-proposal`
104-
- [ ] 13.3 Build issue body from proposal Why/What Changes and append footer `*OpenSpec Change Proposal: arch-05-bridge-registry*`
105-
- [ ] 13.4 Update `proposal.md` Source Tracking with issue number and URL
104+
- [ ] 13.1 Identify affected docs: `docs/reference/`, `docs/guides/`, `README.md`, `docs/index.md`
105+
- [ ] 13.2 Add `docs/reference/bridge-registry.md` with contract and usage examples
106+
- [ ] 13.3 Add `docs/guides/creating-custom-bridges.md` with manifest and converter examples
107+
- [ ] 13.4 Update `docs/reference/architecture.md` with bridge registry integration notes
108+
- [ ] 13.5 Document protocol compliance reporting behavior and migration status in reference docs
109+
- [ ] 13.6 Update `docs/_layouts/default.html` sidebar links for new docs
106110

107-
## 14. Create pull request to dev (LAST)
111+
## 14. Version and changelog
108112

109-
- [ ] 14.1 Commit all completed work with conventional commit message
110-
- [ ] 14.2 Push branch `feature/arch-05-bridge-registry`
111-
- [ ] 14.3 Create PR to `dev` with OpenSpec change reference and quality gate evidence
113+
- [ ] 14.1 Determine semantic version bump for new capability
114+
- [ ] 14.2 Sync version updates in `pyproject.toml`, `setup.py`, `src/__init__.py`, `src/specfact_cli/__init__.py`
115+
- [ ] 14.3 Add CHANGELOG entry for bridge registry, protocol-reporting fixes, and manifest bridge metadata support
116+
117+
## 15. GitHub issue creation
118+
119+
- [ ] 15.1 Create issue in `nold-ai/specfact-cli` with title `[Change] Bridge Registry for Cross-Module Service Interoperability`
120+
- [ ] 15.2 Use labels `enhancement` and `change-proposal`
121+
- [ ] 15.3 Build issue body from proposal Why/What Changes and append footer `*OpenSpec Change Proposal: arch-05-bridge-registry*`
122+
- [ ] 15.4 Update `proposal.md` Source Tracking with issue number and URL
123+
124+
## 16. Create pull request to dev (LAST)
125+
126+
- [ ] 16.1 Commit all completed work with conventional commit message
127+
- [ ] 16.2 Push branch `feature/arch-05-bridge-registry`
128+
- [ ] 16.3 Create PR to `dev` with OpenSpec change reference and quality gate evidence

openspec/changes/arch-06-enhanced-manifest-security/proposal.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44

55
`arch-05-bridge-registry` enables modular interoperability, but marketplace readiness still lacks trust guarantees for published modules. To prevent tampering and unsafe dependency drift, module manifests must carry integrity metadata and installation must verify checksums/signatures before enabling modules.
66

7+
This change depends on `arch-05-bridge-registry` for stable lifecycle/protocol reporting behavior. Protocol false-legacy classification and duplicate lifecycle warning cleanup are owned by `arch-05`, not this change.
8+
79
## What Changes
810

911
- **MODIFY**: Extend module manifest metadata (`ModulePackageMetadata`) with publisher identity, integrity fields, and versioned dependency entries.
@@ -41,6 +43,7 @@
4143
- **Integration points**: module manifest parsing, module install/registration paths, CI packaging/signing pipeline.
4244
- **Backward compatibility**: Backward compatible by default; unsigned modules remain possible only with explicit opt-in policy.
4345
- **Rollback plan**: Disable signature enforcement and fallback to checksum-only or legacy manifest fields while preserving compatibility parsing.
46+
- **Out of scope**: ModuleIOContract migration completion and protocol warning deduplication (addressed in `arch-05-bridge-registry`).
4447

4548
---
4649

openspec/changes/arch-06-enhanced-manifest-security/tasks.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ Do not implement production code for changed behavior until corresponding tests
1616

1717
- [ ] 1.1 Ensure `dev` is current and create `feature/arch-06-enhanced-manifest-security`
1818
- [ ] 1.2 Verify current branch is `feature/arch-06-enhanced-manifest-security`
19+
- [ ] 1.3 Confirm `arch-05-bridge-registry` protocol-reporting fixes are merged or explicitly cherry-picked prerequisite for this change
1920

2021
## 2. Tests: manifest security metadata models (TDD)
2122

0 commit comments

Comments
 (0)