Skip to content

feat: Enrich all OpenSpec specifications#942

Merged
rubenvdlinde merged 19 commits intodevelopmentfrom
feature/enrich-openspec-specs
Mar 22, 2026
Merged

feat: Enrich all OpenSpec specifications#942
rubenvdlinde merged 19 commits intodevelopmentfrom
feature/enrich-openspec-specs

Conversation

@rubenvdlinde
Copy link
Contributor

@rubenvdlinde rubenvdlinde commented Mar 20, 2026

⚠️ Stacked PR chain: Feature implementation PRs will be based on this branch. Review and merge this first to unblock the feature PRs that follow.

Summary

  • Enriched all active OpenSpec specifications with deep research
  • Each spec now has 10-15+ requirements with 3-5 GIVEN/WHEN/THEN scenarios
  • Research includes: codebase analysis, competitor analysis, Dutch government standards, ADR compliance
  • All specs pass openspec validate --strict

Changes

  • Spec enrichment only (no code changes)
  • All changes are in openspec/specs/ directory

Test plan

  • Specs pass validation
  • Requirements reference actual code patterns
  • No duplicate requirement names

🤖 Generated with Claude Code

Enriched all active specs to 10-15+ requirements with 3-5 GIVEN/WHEN/THEN
scenarios each. Research includes codebase analysis, competitor analysis,
Dutch government standards, and ADR compliance.

Moved 8 specs to their correct app homes (redirect stubs remain).
Reframed 6 specs as extensions of existing functionality.
All specs pass openspec validate --strict.
@github-actions
Copy link
Contributor

Quality Report

Repository ConductionNL/openregister
Commit 9bb17ca
Branch 942/merge
Event pull_request
Generated 2026-03-20 08:16 UTC
Workflow Run https://github.com/ConductionNL/openregister/actions/runs/23334521464

Summary

Group Result
PHP Quality FAIL
Vue Quality PASS
Security PASS
License PASS
PHPUnit SKIP
Newman SKIP

PHP Quality

Tool Result
lint PASS
phpcs FAIL
phpmd PASS
psalm PASS
phpstan PASS
phpmetrics PASS

Vue Quality

Tool Result
eslint PASS
stylelint PASS

Security

Ecosystem Result
composer PASS
npm PASS

License Compliance

Ecosystem Result
composer PASS
npm PASS

composer dependencies (147 total)

Metric Count
Approved (allowlist) 146
Approved (override) 1
Denied 0

npm dependencies (586 total)

Metric Count
Approved (allowlist) 585
Approved (override) 1
Denied 0

PHPUnit Tests

PHPUnit tests were not enabled for this run.

Integration Tests (Newman)

Newman integration tests were not enabled for this run.


Generated automatically by the Quality workflow.

Download the full PDF report from the workflow artifacts.

Copy link
Member

@remko48 remko48 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

PhpCs needs to be fixed before merging

Audited all 49 specs in openspec/specs/ and restructured:

Implemented (14 specs stay in specs/ with status: implemented):
- audit-trail-immutable, content-versioning, deep-link-registry,
  deletion-audit-trail, event-driven-architecture, faceting-configuration,
  graphql-api, mariadb-ci-matrix, schema-hooks, webhook-payload-mapping,
  workflow-engine-abstraction, workflow-in-import, workflow-integration,
  zoeken-filteren

Partial (6 specs split — implemented in specs/, unimplemented in changes/):
- data-import-export, mcp-discovery, mock-registers, notificatie-engine,
  object-interactions, rbac-scopes

Moved to changes/ (21 unimplemented specs with full artifact chain):
- api-test-coverage, archivering-vernietiging, auth-system,
  avg-verwerkingsregister, besluiten-management, computed-fields,
  data-sync-harvesting, deprecate-published-metadata, geo-metadata-kaart,
  oas-validation, openapi-generation, production-observability,
  rapportage-bi-export, rbac-zaaktype, realtime-updates,
  reference-existence-validation, referential-integrity, register-i18n,
  row-field-level-security, unit-test-coverage, urn-resource-addressing

Redirect stubs (8) kept as navigation pointers.

Each change directory contains:
- .openspec.yaml (schema + status + created date)
- proposal.md (problem + proposed solution)
- design.md (approach + files affected)
- tasks.md (checklist derived from requirements)
- specs/{name}/spec.md (delta spec with ADDED requirements)
…changes

- Add YAML frontmatter with status to all 49 spec files
- Fix 12 specs with misplaced frontmatter (after title instead of before)
- Add status frontmatter to 17 specs that had none
- Move 9 unimplemented specs (draft/ready/proposed) to changes/:
  api-test-coverage, archivering-vernietiging, avg-verwerkingsregister,
  besluiten-management, data-sync-harvesting, geo-metadata-kaart,
  rapportage-bi-export, referential-integrity, urn-resource-addressing
- Each moved spec gets .openspec.yaml, proposal.md, tasks.md, and delta spec
- Original spec locations replaced with stubs pointing to changes/
- Delta specs in changes/ use ## ADDED Requirements header
- Add status field to existing deprecate-published-metadata and
  unit-test-coverage-phase2 .openspec.yaml files
- Status breakdown: 24 implemented, 3 partial, 1 active, 9 proposed,
  7 redirect stubs, 5 cross-app redirects
All specs moved from openspec/specs/ to openspec/changes/ with proper
proposal.md as the entry point. Follows the spec-driven workflow:
proposal -> design -> specs -> tasks
Processed all changes with status: implemented. For each:
- Generated design.md and tasks.md where missing
- Synced spec.md to openspec/specs/ with status: implemented
- Archived to openspec/changes/archive/2026-03-21-{name}

Changes archived: audit-trail-immutable, auth-system, computed-fields,
content-versioning, data-import-export, deep-link-registry,
deletion-audit-trail, event-driven-architecture, faceting-configuration,
graphql-api, mariadb-ci-matrix, mcp-discovery, mock-registers,
oas-validation, object-interactions, openapi-generation,
production-observability, rbac-scopes, realtime-updates,
reference-existence-validation, row-field-level-security, schema-hooks,
webhook-payload-mapping, workflow-engine-abstraction, workflow-in-import,
workflow-integration, zoeken-filteren
Object-level published/depublished metadata fully removed from codebase.
RBAC $now dynamic variable provides replacement via authorization rules.
Migration Version1Date20260313130000 drops columns from magic tables.
Processed 4 changes: notificatie-engine (partial), rbac-zaaktype (partial),
register-i18n (partial), referential-integrity (implemented).
Core infrastructure exists for all. Synced specs and archived.
…hase2

Added 3 missing unit tests:
- HookRetryJobTest (5 tests): retry logic, max retries, re-queuing
- GraphQLSubscriptionListenerTest (5 tests): event routing, error handling
- FileChangeListenerTest (7 tests): scope filtering, extraction modes

All 31 new tests pass. Marked batches 1-3 as complete (already covered
by existing SimpleCrudEventsTest, ExceptionsTest, BsnFormatTest).
Total: 317+ test files covering the entire lib/ directory.
Generated design.md for all. Synced specs to openspec/specs/.
These are roadmap features awaiting prioritization:
api-test-coverage, archivering-vernietiging, avg-verwerkingsregister,
besluiten-management, data-sync-harvesting, geo-metadata-kaart,
rapportage-bi-export, urn-resource-addressing
- Dashboard, Registers, Schemas, Search/Views screenshots
- Feature overview doc with all 42 specs categorized by status
Make ADR-011 more specific: list concrete directories to search
(lib/Formats/, lib/Service/, lib/Handler/) and common duplications
(BSN validation, date formatting, slug generation, UUID handling).
1. archival-destruction-workflow (227 tenders) — NEN 15489
2. retention-management (154 tenders) — bewaartermijnen
3. edepot-transfer (273 tenders) — MDTO/TMLO
4. enhanced-audit-trail (262 tenders) — verwerkingenlogging
5. authorization-rbac-enhancement (405 tenders) — fine-grained RBAC
6. saas-multi-tenant (378 tenders) — SaaS readiness
…changes

chore: Restructure specs to proper OpenSpec format
chore(openregister): Convert all specs to change proposals
@github-actions
Copy link
Contributor

Quality Report

Repository ConductionNL/openregister
Commit 5bec392
Branch 942/merge
Event pull_request
Generated 2026-03-22 21:15 UTC
Workflow Run https://github.com/ConductionNL/openregister/actions/runs/23412635418

Summary

Group Result
PHP Quality FAIL
Vue Quality PASS
Security PASS
License PASS
PHPUnit SKIP
Newman SKIP

PHP Quality

Tool Result
lint PASS
phpcs FAIL
phpmd PASS
psalm PASS
phpstan PASS
phpmetrics PASS

Vue Quality

Tool Result
eslint PASS
stylelint PASS

Security

Ecosystem Result
composer PASS
npm PASS

License Compliance

Ecosystem Result
composer PASS
npm PASS

composer dependencies (147 total)

Metric Count
Approved (allowlist) 146
Approved (override) 1
Denied 0

npm dependencies (586 total)

Metric Count
Approved (allowlist) 585
Approved (override) 1
Denied 0

PHPUnit Tests

PHPUnit tests were not enabled for this run.

Integration Tests (Newman)

Newman integration tests were not enabled for this run.


Generated automatically by the Quality workflow.

Download the full PDF report from the workflow artifacts.

…ionNL/openregister into feature/enrich-openspec-specs

# Conflicts:
#	openspec/changes/archive/2026-03-21-deprecate-published-metadata/.openspec.yaml
#	openspec/changes/auth-system/specs/auth-system/spec.md
#	openspec/changes/computed-fields/specs/computed-fields/spec.md
#	openspec/changes/data-sync-harvesting/specs/data-sync-harvesting/spec.md
#	openspec/changes/deprecate-published-metadata/specs/deprecate-published-metadata/spec.md
#	openspec/changes/oas-validation/specs/oas-validation/spec.md
#	openspec/changes/openapi-generation/specs/openapi-generation/spec.md
#	openspec/changes/production-observability/specs/production-observability/spec.md
#	openspec/changes/rbac-zaaktype/specs/rbac-zaaktype/spec.md
#	openspec/changes/realtime-updates/specs/realtime-updates/spec.md
#	openspec/changes/reference-existence-validation/specs/reference-existence-validation/spec.md
#	openspec/changes/referential-integrity/specs/referential-integrity/spec.md
#	openspec/changes/register-i18n/specs/register-i18n/spec.md
#	openspec/changes/row-field-level-security/specs/row-field-level-security/spec.md
#	openspec/changes/unit-test-coverage/specs/unit-test-coverage/spec.md
#	openspec/specs/data-import-export/spec.md
#	openspec/specs/deprecate-published-metadata/spec.md
#	openspec/specs/event-driven-architecture/spec.md
#	openspec/specs/mcp-discovery/spec.md
#	openspec/specs/mock-registers/spec.md
#	openspec/specs/notificatie-engine/spec.md
#	openspec/specs/object-interactions/spec.md
#	openspec/specs/rbac-scopes/spec.md
@rubenvdlinde rubenvdlinde merged commit da59a16 into development Mar 22, 2026
12 of 14 checks passed
@rubenvdlinde rubenvdlinde deleted the feature/enrich-openspec-specs branch March 22, 2026 21:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants