docs(openspec): owner-moves decision pass (34 decisions, 19 changes) - #4112
Merged
Merged
Conversation
…owner-moved halves
…s and bulk transition changes
…rtable flag changes
…ty filter and PDF house style changes
…te-only and archival changes
… relations, profile beside archive block, concept scheme by slug)
Contributor
Quality Report — ConductionNL/openregister @
|
| Check | PHP | Vue | Security | License | Tests |
|---|---|---|---|---|---|
| lint | ✅ | ||||
| phpcs | ✅ | ||||
| phpmd | ✅ | ||||
| psalm | ✅ | ||||
| phpstan | ✅ | ||||
| phpmetrics | ✅ | ||||
| eslint | ✅ | ||||
| stylelint | ✅ | ||||
| build | ✅ | ||||
| check-specs | ✅ | ||||
| test-l10n | ✅ | ||||
| test-l10n-parity | ✅ | ||||
| format | ✅ | ||||
| check-schema-l10n | ✅ | ||||
| check-l10n-js | ✅ | ||||
| composer | ✅ | ✅ 170/170 | |||
| npm | ✅ | ✅ 649/649 | |||
| app:check-code | ⏭️ | ||||
| info.xml | ✅ | ||||
| REUSE | ✅ | ||||
| lockfile sync | ✅ | ||||
| PHPUnit | ⏭️ not run for this diff — no file in this diff matches the code globs, and none carries a source extension — the heavy tier has nothing to decide about it. | ||||
| Newman | ✅ | ||||
| Playwright | ⏭️ deferred: E2E runs locally and on the promotion path only. This pull request targets development, so the suite is asked once per promotion into beta and main rather than once per push per open pull request. Run it on any branch from the Actions tab, or locally with npx playwright test. |
||||
| Hydra gates | ✅ |
Quality workflow — 2026-09-28 05:29 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 join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Owner-moves decision pass for OpenRegister (28 Sep 2026). During the OpenSpec pass, other product lanes handed rows and halves to OpenRegister after OpenRegister's own lane had finished, so nobody decided them. This PR decides every one of them with the pass's rule (existing, decided-no, build or defer), records the decisions in
openspec/parity/gap-decisions.json, and writes the OpenSpec changes for thebuilddecisions. It touches onlyopenspec/.Decisions
34 records: 25 build, 6 existing, 3 defer, 0 decided-no. A row that sits in another product's matrix keeps that matrix's id; a half with no matrix row uses the requesting change's name as
rowand the requesting repo asmatrix. Where one requesting change asked for two halves with different outcomes, it has two records.auto-ai-stepor-flow-nodesauto-codeflow-code-step-in-a-sidecarauto-error-pathflow-error-branch-and-step-retryauto-compensateauto-templatesstore-over-federated-configsrc-secrets-managercredential-outside-vault-referenceauto-failure-alertsplat-translated-field-namesmodelling-field-names-per-languageacc-row-levelaccess-owner-and-condition-scopesindex-bulk-edit-and-transitionsbulk-action-jobsindex-bulk-edit-and-transitionsrecords-bulk-transitionindex-copy-with-relationsrecords-copy-with-linksnotes-replies-group-mentions-and-imagesnotes-replies-by-parentform-conditions-from-schemamodelling-required-when-enforcedindex-export-follows-the-pagemodelling-schema-exportable-flagform-options-from-concept-schemeproperty-code-list-from-concept-schemeaudit-trail-restore-versionhistory-revert-through-the-save-pathinsight-exports-and-custom-reportsmodelling-schema-exportable-flagoperations-record-reconciliationmdm-merge-relinks-every-referenceevents-world-scope-and-upcomingsearch-value-or-empty-filtersurfaces-document-house-styleexport-pdf-house-styleai-copilot-documents-and-code-helpsearch-file-text-and-vector-facadeai-agents-knowledge-and-run-tracesearch-file-text-and-vector-facadeai-llm-steps-and-computed-fieldsflow-trigger-transitions-and-changed-fieldslogic-automation-actions-that-runflow-trigger-transitions-and-changed-fieldslogic-automation-actions-that-runmacro-flows-with-next-itemlogic-script-stepflow-code-step-in-a-sidecardata-external-database-sourcesdbal-query-schema-guarded-and-previeweddata-model-diagrammodelling-schema-diagramlifecycle-release-test-gaterecords-validate-without-savingplatform-record-lockarchival-frozen-refuses-delete-and-dates-followplatform-client-retentionarchival-frozen-refuses-delete-and-dates-followplatform-client-retentionanonymising-as-an-archival-outcomerequests-inbound-to-queueThe approval stand-in on chains that shillinq asked for is not decided here: its issue text goes to Ruben first.
Changes written (19 new)
flow-trigger-transitions-and-changed-fields: buildiqlogic-automation-actions-that-run(start on a lifecycle transition) andai-llm-steps-and-computed-fields(start only when named fields changed).flow-code-step-in-a-sidecar: integriq rowauto-codeand buildiqlogic-script-step; issue Node sidecar for user code — the option that unlocks a real Code node #2066 as a change.flow-error-branch-and-step-retry: integriq rowauto-error-path.credential-outside-vault-reference: integriq rowsrc-secrets-manager, as a per-credential reference to HashiCorp Vault or OpenBao read by the broker; ADR-064 gets one paragraph.modelling-field-names-per-language: pipelinq rowplat-translated-field-names.access-owner-and-condition-scopes: buildiq rowacc-row-level(the@creatorsentinel,authorization.conditionsand theopenregister.authorization.scopescapability that buildiq's archiveddata-scopes-authoringasks for).records-bulk-transition: nextcloud-vueindex-bulk-edit-and-transitions, transition half.records-copy-with-links: nextcloud-vueindex-copy-with-relations.notes-replies-by-parent: nextcloud-vuenotes-replies-group-mentions-and-images.modelling-required-when-enforced: nextcloud-vueform-conditions-from-schema.modelling-schema-exportable-flag: nextcloud-vueindex-export-follows-the-pageand stackiqinsight-exports-and-custom-reports.history-revert-through-the-save-path: nextcloud-vueaudit-trail-restore-versionand buildiqdata-restore-record-versionfindings.mdm-merge-relinks-every-reference: stackiqoperations-record-reconciliation(relink inside the merge unit, and/duplicates?register=&schema=).search-value-or-empty-filter: larpinqevents-world-scope-and-upcoming.export-pdf-house-style: thematiqsurfaces-document-house-style(tender demand).search-file-text-and-vector-facade: buildiqai-copilot-documents-and-code-help(file text read, issue Reading a file's extracted text always answers 404 #4106) andai-agents-knowledge-and-run-trace(the vector facade hermiqvector-ragdefines), with a read-rights filter on every vector result.dbal-query-schema-guarded-and-previewed: buildiqdata-external-database-sources.records-validate-without-saving: buildiqlifecycle-release-test-gate.archival-frozen-refuses-delete-and-dates-follow: pipelinqplatform-record-lockandplatform-client-retention(D3 and D4).Open changes extended (3)
modelling-schema-diagram: design D-1a, one requirement and task 1.1a, sox-openregister-relationsentries are edges (buildiqdata-model-diagram). Nothing of it is built yet.anonymising-as-an-archival-outcome: design D-6, one scenario and task 2.2a, so the anonymisation profile can sit beside thearchiveblock (pipelinqplatform-client-retentionD6).property-code-list-from-concept-scheme: task 4.4, resolve aconceptSchemevalue by slug as its published description says (nextcloud-vueform-options-from-concept-scheme).What did not hold up
data-external-database-sourcessays OpenRegister owes the query table. Query-backed schemas shipped in feat(dbal): query-backed virtual schemas + snake_case filter fix #2043 (12a52c7) without an OpenSpec change. What is missing is the statement guard, a read-only transaction with a timeout, and the preview route, and that is what the change writes.index-bulk-edit-and-transitionsreads the bulk registry as two actions.openregister:set-propertiesshipped in feat(bulk jobs): a bulk action is one previewed, cancellable job with a per-object outcome #3742, so the set-field half isexisting.auto-ai-stepreadsnoanddecided-no, but hermiq contributeshermiq.agent-stepto OpenRegister's engine throughRegisterFlowNodesEvent(hermiqlib/Flow/HermiqAgentNode.phpat 5ac16d315). The integriq matrix row is for the coordinator.ObjectEntityMapper::update(), and no listener writes an audit entry forObjectRevertedEvent. Thecontent-versioningspec's revert audit requirement is not met today; the revert change covers it.FileSearchControllersemantic and hybrid search return file chunks without a read check (the filinq lane's security candidate, confirmed at 555af72). The vector facade change adds the filter to both routes.Source-matrix rows (not edited here)
No OpenRegister matrix row changes. Rows in other matrices are listed for the coordinator in the lane's hand-back.
Checks
Run once on 575aff8 (the decisions commit; the later merge of development brought in only
openspec/parity/capabilities.jsonfrom #4109), by exit code, with a private HOME and TMPDIR:openspec validate <change> --strictfor all 22 new or extended changes: exit 0 each.python3 -m json.tool openspec/parity/gap-decisions.json: exit 0; every named change directory exists.--scope-to-diff --base origin/development: exit 0, 23 of 23 applicable gates ran. Gate 19 does not readopenspec/changes/*/specs, so it inspected nothing here.composer install: exit 0.npm ci: exit 0.npm run lint: exit 0 (0 errors, 932 warnings, the same count as on development).npm run test:l10n: exit 0.npm run check:schema-l10n: exit 0.parity_verify --strict: not run, because no matrix is edited in this PR.composer check:strictwas not run: the diff touches onlyopenspec/, which no PHP analyser or test reads.