This repository was archived by the owner on May 29, 2026. It is now read-only.
feat(openspec): four OR abstraction specs from the 2026-05-03 audit#1420
Merged
Conversation
Adds four openspec changes implementing the audit's top hardcoded- functionality findings + ADR-019 + ADR-025. - openspec/changes/register-resolver-service/ (4 files, 560 lines) publishable RegisterResolverService that absorbs the `getValueString(...register/schema...)` pattern duplicated across 13 call sites in opencatalogi (5 controllers), pipelinq (8 services/jobs), and docudesk (OpenRegisterResolver). Five public methods (resolveRegisterId/SchemaId/Register/Schema/Pair), request-scoped caching, multi-tenant scoping via MultiTenancyTrait, three structured exceptions (MissingConfig / RegisterNotFound / SchemaNotFound), enumerateAppConfigs() for admin tooling. - openspec/changes/pluggable-integration-registry/ (4 files, 472 lines) Implements hydra ADR-019 — two-sided integration registry. IntegrationProvider PHP interface + IntegrationRegistry service + DI tag auto-registration; migrates the 8 built-in NC types (files/notes/tasks/calendar/mail/contacts/deck/talk) from the hardcoded `LinkedEntityService::TYPE_COLUMN_MAP`; routes external providers through OpenConnector; advertises capabilities via OCS; CI parity gate ensures backend ↔ frontend pairing. - openspec/changes/i18n-source-of-truth/ (4 files, 510 lines) Implements hydra ADR-025 (source-of-truth half). Adds `sourceLanguage` schema-property modifier + per-object override via `_translationMeta` + new `source_language` column on openregister_translations + render envelope `_meta.languageMeta` + `X-Source-Language` response header + automatic outdated-status flip on source-value change. Closes the gap from audit R4. - openspec/changes/i18n-api-language-negotiation/ (4 files, 437 lines) Implements hydra ADR-025 (API contract half). Adds `?_lang=` / `?language=` query params with explicit precedence over Accept-Language, lax fallback (no 406), and a write-side `X-Translation-Target-Language` header for scalar-body PATCH/PUT to non-default languages. Conflicting body+header → 400. References: .claude/audit-2026-05-03/research/R4-or-i18n-source-of-truth.md .claude/audit-2026-05-03/research/R5-or-api-language-negotiation.md .claude/audit-2026-05-03/04-hardcoded.md (top-10 findings #1-#10) hydra/openspec/architecture/adr-019-integration-registry.md hydra/openspec/architecture/adr-022-apps-consume-or-abstractions.md hydra/openspec/architecture/adr-025-i18n-source-of-truth.md
rubenvdlinde
added a commit
that referenced
this pull request
May 3, 2026
…doption (#1422) Phase 3 of the OR-abstraction audit (2026-05-03). Spec-only — no code changes. Drafts the per-app adoption openspec change so each app can run /opsx-apply against it when ready. References .claude/audit-2026-05-03/ research, Phase 2 OR/nc-vue/ hydra specs (#1420, #113, #218), and ADRs 022/024/025.
Contributor
Quality Report — ConductionNL/openregister @
|
| Check | PHP | Vue | Security | License | Tests |
|---|---|---|---|---|---|
| lint | ✅ | ||||
| phpcs | ✅ | ||||
| phpmd | ✅ | ||||
| psalm | ✅ | ||||
| phpstan | ✅ | ||||
| phpmetrics | ✅ | ||||
| eslint | ✅ | ||||
| stylelint | ✅ | ||||
| composer | ✅ | ✅ 147/147 | |||
| npm | ✅ | ✅ 598/598 | |||
| PHPUnit | ❌ | ||||
| Newman | ❌ | ||||
| Playwright | ⏭️ |
Quality workflow — 2026-05-03 20:23 UTC
Download the full PDF report from the workflow artifacts.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Phase 2 of the OR-abstraction audit (2026-05-03). Four openspec changes implementing the audit's top hardcoded-functionality findings + ADR-019 + ADR-025.
register-resolver-service/— PublishableRegisterResolverServicethat absorbs thegetValueString(...register/schema...)pattern duplicated across 13 call sites (opencatalogi 5, pipelinq 8, docudesk). 5 public methods + request-scoped caching + multi-tenant scoping + 3 structured exceptions + admin diagnostics.pluggable-integration-registry/— Implements hydra ADR-019. Two-sided registry (PHP interface + JS register call), DI-tag auto-registration, migrates 8 built-in NC types away fromLinkedEntityService::TYPE_COLUMN_MAP, external providers via OpenConnector, OCS capability surface, CI parity gate.i18n-source-of-truth/— Implements hydra ADR-025 (DB/schema/render half). SchemasourceLanguagemodifier,Translation.source_languagecolumn,_meta.languageMetarender envelope,X-Source-Languageresponse header, automatic outdated-status flip on source-value change.i18n-api-language-negotiation/— Implements hydra ADR-025 (API contract half).?_lang=/?language=query params with explicit precedence, lax fallback (no 406), write-sideX-Translation-Target-Languageheader, conflict body+header → 400.Test plan
hydra/openspec/architecture/; audit research at.claude/audit-2026-05-03/research/R4-*.md+R5-*.md+04-hardcoded.md.Sequencing
Each change has its own implementation track (Phase 4 of the audit follow-up). The two i18n changes share a migration but otherwise decouple; they can ship in either order. Consumer apps' adoption changes (
{app}-adopt-manifest,{app}-adopt-or-abstractions) cite these specs by their merged slugs.Stats
16 files, 1,979 lines of openspec content.