Skip to content

feat(usages): record the applications your organisation uses, with version, status and owners - #1194

Merged
rubenvdlinde merged 4 commits into
developmentfrom
feat/usage-registration
Sep 29, 2026
Merged

rubenvdlinde merged 4 commits into
developmentfrom
feat/usage-registration

Conversation

@rubenvdlinde

Copy link
Copy Markdown
Contributor

Change: landscape-usage-registration (archived here as 2026-09-29-landscape-usage-registration; its spec is now openspec/specs/application-usage-pages/spec.md). Built ahead of its queue place because four queued changes depend on it (maintenance and supplier roadmap, value assessment, technology components, data model and GGM).

Rows moved to built: stackiq:land-register-application, stackiq:life-version-in-use and stackiq:land-application-owner (all rated yes now).

What a user can now do: open Applications, then Applications in use, and see every application the organisation uses with its version, status, business owner, technical owner and TIME classification, filtered on status. From an application's page, Add to our landscape opens the usage form with the application filled in; the version picker offers only that application's versions. The usage page shows the owners, the phase dates and the documents, and offers Plan, Go live, Phase out and Retire. The organisation page lists its applications in use.

How: the register (2.5.4) adds businessOwner and technicalOwner (contact persons of the consumer organisation) to usage, names a usage {{ module }} ({{ consumer }}), makes status facetable and bumps usage to 1.5.2. src/manifest.d/usages.json adds the pages Gebruik and GebruikDetail under Applications (ADR-097). ModuleDetail's usages list gets the row route, a view-all link and the Add to our landscape button; OrganisatieDetail gets org-usages. The three seeded usages in the register held in-gebruik, outside the status enum; they now read In production and Planned.

Design changes at build, recorded in the archived design: the lifecycle fix and the 1.5.1 bump had already landed in register 2.5.1 (#1140). The design asked the add action to fill in the active organisation; no manifest token names it (the library fills only a field called organisation), so the user picks the organisation in the form, and the spec says so. The owners went into the register itself rather than a register.d fragment, because the relation-dialect gate reads a fragment on its own and cannot see consumer.

Scenarios and the tests that prove them:

  • Owners, name template, lifecycle on enum values, version bump, supplier cannot open a customer's contact persons, seeds on enum values: tests/Unit/Settings/UsageSchemaTest.php (7 tests, all red on development: the fragment did not exist and the seeds held in-gebruik).
  • The pages, the menu entry, the add button with the application filled in, the version filter, the organisation list, the seeds validated against the real usage schema with the owners merged in: tests/vitest/usages.spec.js (9 tests, red on development).
  • The four user scenarios: tests/e2e/workflows/usages.spec.ts (Playwright, seeds and removes its own rows). It lists (4 tests); it was not run here, because no local instance has a seeded stackiq register.

New text is in English and Dutch. Docs: docs/features/applications-in-use.md; its screenshot waits for a seeded instance.

Checks (one run on the branch head, which contains development at f280e80): composer check:strict exit 0; PHPUnit 934 tests, 20 errors, all 20 inherited (the same names as on development: MigrateRegisterSlugTest x12, MigrateSchemaApplicationIdTest x7, PortfolioReportControllerTest::testCsvFormatReturnsDownloadResponse); npm lint, stylelint, format, test:l10n, check:schema-l10n, check:l10n-js, check:manifest, check:vue-demi exit 0; jest 100 passed; vitest 338 passed; Hydra gates (ConductionNL/.github main, full scope, --require-full-coverage) exit 0, 85 of 85 applicable gates pass. The first run found gate 54 (relation dialect) red on the owners fragment and prettier on two test files; both fixed, and PHPUnit, vitest, format, check:schema-l10n and the gates were re-run on the fixed head.

Live check: after the register re-imports, open Applications, Applications in use; the seeded usages show with status. Open an application, click Add to our landscape, pick your organisation and a version, save; the usage appears in the list. Open it, set a business owner and a technical owner, and click Go live on a planned one.

@rubenvdlinde
rubenvdlinde merged commit a4a28c4 into development Sep 29, 2026
35 of 37 checks passed
@github-actions

Copy link
Copy Markdown
Contributor

Quality Report — ConductionNL/stackiq @ bb4d424

Check PHP Vue Security License Tests
lint ✅
phpcs ✅
phpmd ✅
psalm ✅
phpstan ✅
phpmetrics ✅
eslint ❌
stylelint ✅
build ✅
check-manifest ✅
check-vue-demi ✅
test-l10n ✅
format ✅
check-schema-l10n ✅
check-l10n-js ✅
composer ✅ ✅ 130/130
npm ✅ ✅ 807/807
app:check-code ⏭️
info.xml ✅
REUSE ❌
lockfile sync ✅
PHPUnit ✅
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-29 20:40 UTC

Download the full PDF report from the workflow artifacts.

rubenvdlinde added a commit that referenced this pull request Sep 29, 2026
rubenvdlinde added a commit that referenced this pull request Sep 29, 2026
… use, and read a supplier's roadmap (#1197)

* test(maintenance): the window schema, rules, owner resolution, pages and roadmap, red before the change

* feat(maintenance): follow planned maintenance on the applications you use, and read a supplier's roadmap

* fix(maintenance): a third demo window per register, a spec tag on refId, and the usages test lint error #1194 left
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