Skip to content

feat(packages): a seed file can write its rows into another app's register - #3792

Merged
rubenvdlinde merged 6 commits into
developmentfrom
refactor/r1-installer-seed-other-register
Oct 12, 2026
Merged

rubenvdlinde merged 6 commits into
developmentfrom
refactor/r1-installer-seed-other-register

Conversation

@rubenvdlinde

@rubenvdlinde rubenvdlinde commented Oct 12, 2026 •

Copy link
Copy Markdown
Contributor

Status, 12 October

Ready. #3778 and #3654 are on development, so this merges on its own, and #3808 lands with it.

Where a line below disagrees with this section, this section is the current one.

What

A package seed file can now write its rows into another app's register. Stacked on #3778 (which is on #3654). Merge those first.

  • A seed file names its schema by a settings key of dossiq, as before, or by {"app", "register", "slug"}. The second form is the same address a package setting already uses (REQ-CT-53).
  • The installer finds the register and schema on the instance and writes the rows there. Each row is recorded in the shipped-set ledger. A failed install takes each row back out of the register it went into.
  • The app is not installed, or no named register holds the schema: the package is refused, the message names the app and the schema, and nothing is written.
  • A seed file may name match, one property that recognises a row the instance already holds under another id. That row is adopted and left as it is. This is how a row outside a case type is adopted.
  • New neutral fixture tests/fixtures/packages/fixture-shared-seed. The packages workflow checks that it is refused on an instance without fixture-app.

REQ-CT-55 in openspec/changes/case-definition-packages.

Why

The LHS intervention table is a row in OpenRegister's decision-tables register (openregister#4572), not in dossiq's. The LHS package needs to seed it.

Verified

  • Red first: refactor/r1-logs/r6-seed-red.log, 7 failures, the 28 existing installer tests green.
  • Green: the 35 installer tests and the 100 architecture tests pass. phpcs, phpmd, phpstan and psalm pass on the changed files.
  • composer check:strict has not run on this head.
  • CI not read.

Not in this PR

  • The LHS package itself. It follows on this branch.

Round 7: a seed file may recognise a row by a flag or by several properties (REQ-CT-56)

  • match is one property name or a list of them. A row the instance holds is adopted when it is equal on every property named.
  • A matched value is a text, a whole number or a flag. A flag and a number are compared by meaning, so a flag the store answers as 1 or "true" counts as set.
  • Matching on a flag alone adopts the row that has the flag set, whatever it is called. An instance that replaced a shipped default gets no second one (decision 204).
  • A match that names no property, or a row that lacks a named property, makes the package invalid.

Red first (r7-match-red.log, 4 failures), then 45 installer tests green (r7-match-green.log). phpcs and phpmd on the four changed classes: clean. The LHS packages that use this are in #3808.

@github-actions

Copy link
Copy Markdown
Contributor

Quality Report — ConductionNL/dossiq @ 572a54b

Check PHP Vue Security License Tests
lint ✅
phpcs ✅
phpmd ❌
psalm ✅
phpstan ✅
phpmetrics ✅
eslint ✅
stylelint ✅
build ✅
check-manifest ✅
check-vue3-compile ✅
test-l10n ✅
format ❌
check-schema-l10n ✅
check-l10n-js ✅
check-debt-ratchet ❌
check-types-e2e ✅
composer ✅ ✅ 109/109
npm ✅ ✅ 659/659
app:check-code ⏭️
info.xml ✅
REUSE ❌
lockfile sync ✅
PHPUnit 🚨 NO VERDICT — enabled but never ran
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 locally with npx playwright test, or from the Actions tab on a branch with no open pull request into development.
Hydra gates ⏭️

Quality workflow — 2026-10-12 07:19 UTC

Download the full PDF report from the workflow artifacts.

…staller-seed-other-register

# Conflicts:
#	appinfo/info.xml
@github-actions

Copy link
Copy Markdown
Contributor

Quality Report — ConductionNL/dossiq @ 2a61b06

Check PHP Vue Security License Tests
lint ✅
phpcs ✅
phpmd ✅
psalm ✅
phpstan ✅
phpmetrics ✅
eslint ✅
stylelint ✅
build ✅
check-manifest ✅
check-vue3-compile ✅
test-l10n ✅
format ❌
check-schema-l10n ✅
check-l10n-js ✅
check-debt-ratchet ❌
check-types-e2e ✅
composer ✅ ✅ 109/109
npm ✅ ✅ 659/659
app:check-code ⏭️
info.xml ✅
REUSE ❌
lockfile sync ✅
PHPUnit 🚨 NO VERDICT — enabled but never ran
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 locally with npx playwright test, or from the Actions tab on a branch with no open pull request into development.
Hydra gates ⏭️

Quality workflow — 2026-10-12 07:52 UTC

Download the full PDF report from the workflow artifacts.

…al properties (REQ-CT-56)

A seed file's match is one property name or a list of them. A row is
adopted when it is equal on every property named. A flag and a number
are compared by meaning. Matching on a flag alone adopts the row that
has the flag set, whatever it is called, so an instance that replaced a
shipped default gets no second one (decision 204).
@github-actions

Copy link
Copy Markdown
Contributor

Quality Report — ConductionNL/dossiq @ 53db07c

Check PHP Vue Security License Tests
lint ✅
phpcs ✅
phpmd ✅
psalm ✅
phpstan ✅
phpmetrics ✅
eslint ✅
stylelint ✅
build ✅
check-manifest ✅
check-vue3-compile ✅
test-l10n ✅
format ❌
check-schema-l10n ✅
check-l10n-js ✅
check-debt-ratchet ❌
check-types-e2e ✅
composer ✅ ✅ 109/109
npm ✅ ✅ 659/659
app:check-code ⏭️
info.xml ✅
REUSE ❌
lockfile sync ✅
PHPUnit 🚨 NO VERDICT — enabled but never ran
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 locally with npx playwright test, or from the Actions tab on a branch with no open pull request into development.
Hydra gates ⏭️

Quality workflow — 2026-10-12 08:19 UTC

Download the full PDF report from the workflow artifacts.

@github-actions

Copy link
Copy Markdown
Contributor

Quality Report — ConductionNL/dossiq @ ad0f65d

Check PHP Vue Security License Tests
lint ✅
phpcs ✅
phpmd ✅
psalm ✅
phpstan ✅
phpmetrics ✅
eslint ✅
stylelint ✅
build ✅
check-manifest ✅
check-vue3-compile ✅
test-l10n ✅
format ❌
check-schema-l10n ✅
check-l10n-js ✅
check-debt-ratchet ❌
check-types-e2e ✅
composer ✅ ✅ 109/109
npm ✅ ✅ 659/659
app:check-code ⏭️
info.xml ✅
REUSE ❌
lockfile sync ✅
PHPUnit 🚨 NO VERDICT — enabled but never ran
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 locally with npx playwright test, or from the Actions tab on a branch with no open pull request into development.
Hydra gates ⏭️

Quality workflow — 2026-10-12 10:04 UTC

Download the full PDF report from the workflow artifacts.

…staller-seed-other-register

# Conflicts:
#	appinfo/info.xml
@github-actions

Copy link
Copy Markdown
Contributor

Quality Report — ConductionNL/dossiq @ 59838f3

Check PHP Vue Security License Tests
lint ✅
phpcs ✅
phpmd ✅
psalm ✅
phpstan ✅
phpmetrics ✅
eslint ✅
stylelint ✅
build ✅
check-manifest ✅
check-vue3-compile ✅
test-l10n ✅
format ✅
check-schema-l10n ✅
check-l10n-js ✅
check-debt-ratchet ❌
check-types-e2e ✅
composer ✅ ✅ 109/109
npm ✅ ✅ 659/659
app:check-code ⏭️
info.xml ✅
REUSE ❌
lockfile sync ✅
PHPUnit 🚨 NO VERDICT — enabled but never ran
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 locally with npx playwright test, or from the Actions tab on a branch with no open pull request into development.
Hydra gates ⏭️

Quality workflow — 2026-10-12 10:35 UTC

Download the full PDF report from the workflow artifacts.

@rubenvdlinde
rubenvdlinde marked this pull request as ready for review October 12, 2026 14:08
@rubenvdlinde
rubenvdlinde merged commit a2d3a9e into development Oct 12, 2026
49 of 51 checks passed
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.

1 participant