Skip to content

Release: merge development into beta - #1318

Open
github-actions[bot] wants to merge 282 commits into
betafrom
development
Open

github-actions[bot] wants to merge 282 commits into
betafrom
development

Conversation

@github-actions

Copy link
Copy Markdown
Contributor

Automated PR to sync development changes to beta for beta release.

Merging this PR will trigger the beta release workflow.

Reminder: Add a major, minor, or patch label to this PR to control the version bump. Default is patch.

rubenvdlinde and others added 30 commits October 30, 2026 18:52
…recatalogus (#1345)

* docs(openspec): bring over the registrations from the previous Softwarecatalogus

* docs(openspec): land-migrate-legacy no longer says spec none
121 screens.md files generated with spec-screens.py from the coverage
matrix's board column (design-system main). Supersedes #1282.
…registration-through-the-portal (#1349)

Both changes have every task ticked and their work on development. The
delta specs merge into specs/cmdb-export-import and the new
specs/organisation-registration; @SPEC citations in 8 code and test files
point at the merged spec or the archived change.
Exclude .claude/** (Claude Code skills and agent config, partly copied
from upstream) from the Sigrid analysis scope.

Assisted-by: ClaudeCode:claude-opus-5-5
…ns.md (#1352)

Assisted-by: ClaudeCode:claude-opus-5-5
print_report() took six values and printed the whole report. It now takes
a Comparison (both models, the results and the verdict) and the two paths,
and delegates to print_counts(), print_checks() and print_count_row().
print_json() takes the Comparison too. Output and exit codes are
unchanged: a golden run over 19 file pairs compares stdout, stderr and the
exit code byte for byte.

Assisted-by: ClaudeCode:claude-opus-5-5
…ort-steps

refactor(scripts): print the ArchiMate comparison report in small steps
Runs compare_archimate.py over ten fixture models in 28 argument sets,
each under three hash seeds, and compares exit code, stdout and stderr
with a recorded golden, case by case.

Assisted-by: ClaudeCode:claude-opus-5-5
parse_archimate() and compare() each did all sections in one body (62 and
123 lines, McCabe 20 and 16), and main() parsed, reported and exited in
32 lines. Parsing now reads each section through parse_section() and
parse_organizations(); compare() runs one check function per section
(model, elements, relationships, views, organizations, property
definitions) on shared helpers check(), count_check(), compare_ids() and
compare_distribution(). all_pass is derived from the results, which is
what the old flag tracked: it went false exactly when a FAIL was added.
main() loads each model through load_model(). Output and exit codes are
unchanged, golden-checked under three hash seeds.

Assisted-by: ClaudeCode:claude-opus-5-5
…ants

voorzieningenItems and amefItems built the same fixed lists of schema
rows inside the computed body on every evaluation (69 and 34 lines).
The lists are now VOORZIENINGEN_ITEMS and AMEF_ITEMS next to the
imports, and the computed properties return them.

Assisted-by: ClaudeCode:claude-opus-5-5
…steps

convertToUser() did the row lookup, the loading flag, the store call, the
row replacement, the refresh and the error handling in one 78-line body
(McCabe 11). It now calls claimContactRow(), createUserAccount() and
reportConversionError(), with contactRowFromApi() building the new row
and markLoading() setting the flag. Calls, toasts, log lines and the row
written are unchanged.

Assisted-by: ClaudeCode:claude-opus-5-5
Assisted-by: ClaudeCode:claude-opus-5-5
Seven utility modules each carried the same dataOf() (read the data bag of
an OR object envelope or plain data), complianceMatrix repeated
lifecyclePhase's resolveUuid(), and sbomVulnerabilityMatch repeated
vulnerabilityExposure's affectedModuleIds(). dataOf() is now exported from
lifecyclePhase next to resolveUuid() and imported everywhere;
complianceMatrix re-exports both, so its public API is unchanged.

Assisted-by: ClaudeCode:claude-opus-5-5
Assisted-by: ClaudeCode:claude-opus-5-5
…ttings store

Twenty actions each fetched, threw `HTTP <status>: <statusText>` on a
non-ok answer and parsed the JSON in the same seven lines; they now call
fetchJson(url, options). The empty configuration and statistics were
written out in state(), initializeConfiguration() and reset(); they now
come from emptyConfiguration() and emptyStatistics(), fresh objects each
call. The user group and ArchiMate status writes that two actions each
repeated are applyUserGroups() and applyArchiMateStatus().

Assisted-by: ClaudeCode:claude-opus-5-5
Assisted-by: ClaudeCode:claude-opus-5-5
importArchiMateFile() did the state reset, progress polling, upload,
answer checks, notifications and cleanup in one 49-line body; it now
calls beginImport(), uploadArchiMateFile(), finishImport(), failImport()
and endImport(), with importResultOrThrow() checking the answer. The two
exports wrote out the same download code (blob, file name from
Content-Disposition, temporary link); they now share downloadResponse()
and throwExportError(). Requests, file names, notifications and state are
unchanged.

The Content-Disposition pattern spells its double quote as \x22, the same
regular expression, because a lone double quote makes lizard stop reading
the file.

Assisted-by: ClaudeCode:claude-opus-5-5
Records, on the current code, what publishObjects, depublishObjects,
lockObjects, unlockObjects, validateObjects and deleteObject do for each
store answer: the store call and its arguments, the publication refresh,
the auto-close timer, the error texts and the dialog state afterwards.

Assisted-by: ClaudeCode:claude-opus-5-5
publishObjects, depublishObjects, lockObjects, unlockObjects,
validateObjects and deleteObject each carried the same 30-line body
(McCabe 6 to 8): store call, publication refresh, auto-close timer and
error texts. They now pass their store call and their translated texts
to runMassObjectAction() in src/utils/massObjectAction.js, which sets the
dialog state through applyMassResult(). Store calls, arguments, texts,
timer and dialog state are unchanged.

Assisted-by: ClaudeCode:claude-opus-5-5
Records, on the current code, what ChangeOrganisatieStatusDialog's
changeStatus does: which organisation is patched with which status, the
transfer data written on activation, the log lines, the auto-close timer,
the error texts and the dialog state, including the missing organisation,
id and status paths.

Assisted-by: ClaudeCode:claude-opus-5-5
changeStatus() read and checked the organisation and the new status,
patched it, wrote the activation transfer data and handled errors in one
49-line body (McCabe 9). It now calls statusChangeTarget(), which returns
the organisation and status or throws, and announceActivation() for the
transfer data. The patch, log lines, transfer data, timer, error texts
and dialog state are unchanged.

Assisted-by: ClaudeCode:claude-opus-5-5
Records, on the current code, what Step2Applications' loadApplications
does: when the settings are fetched, when and with which register the
module type is registered, the collection fetch, the error text, the log
line and the loading state, including the store functions that are
missing or fail.

Assisted-by: ClaudeCode:claude-opus-5-5
loadApplications() fetched the settings, read the register id under two
keys, registered the module type and fetched the collection in one
41-line body (McCabe 10). The registration is now registerModuleType(),
with moduleRegisterId() reading the register id. Store calls, their
order, the error text and the loading state are unchanged.

Assisted-by: ClaudeCode:claude-opus-5-5
…csOverview

When BulkSyncDialog was moved into its own file, its 223 lines of styles
stayed behind in StatisticsOverview's scoped style block as well. None of
those classes occur in StatisticsOverview's template, and scoped rules
only reach the component's own elements and the root of BulkSyncDialog
(NcModal's .modal-mask), so they matched nothing. BulkSyncDialog keeps
its own copy.

Assisted-by: ClaudeCode:claude-opus-5-5
Copy quality-config/coverage-guard.php from ConductionNL/.github main (ConductionNL/.github#890, merge commit 923b0e7f9). The guard is split into small units with byte-identical behaviour, pinned by a 100-case golden test.

Assisted-by: ClaudeCode:claude-opus-5-5
rubenvdlinde and others added 30 commits November 3, 2026 22:38
…reation

refactor(organisations): delete StackiqService's unused organisation sync, fix the contact backup entity (REVIEW)
…-listener

refactor(listener): split the three object event handlers (REVIEW)
Each of the 101 CmdbExportImportService tests now also compares what it
left in the doubles (register, saves, archive states, transitions,
searches, log lines, address books, progress cache) with a recording made
on the current code. Run times, operation ids and generated uuids are
replaced by placeholders, so the recording is the same in every time zone.

Assisted-by: ClaudeCode:claude-opus-5-5
CmdbImportRun holds what every row of an import shares and CmdbImportRow
what one row found so far, so the row and reconciliation steps take one
or two arguments in place of up to seven. The behaviour is unchanged: the
golden recorded on the previous commit's code passes as it is.

Assisted-by: ClaudeCode:claude-opus-5-5
The wall clock can step back during a run, which logs a duration of -1.

Assisted-by: ClaudeCode:claude-opus-5-5
…llback-name-slug

# Conflicts:
#	appinfo/info.xml
#	tests/Unit/Service/OrganizationSyncEntityGoldenTest.php
Its constructor matched ReferencesAuditCommand's line for line, which gate
122 counts as a new clone.

Assisted-by: ClaudeCode:claude-opus-5-5
…slug

fix(organisations): check the slug of the name OpenRegister receives, link command safeguards (REVIEW)
…mport-context

refactor(cmdb): carry the import run and row in context objects (REVIEW)
…that is not its own

The sync links an organisatie to the OpenRegister organisation with its uuid. It
now does so only when that organisation is at least as new as the object, or when
an administrator linked the two, and counts the rest under organisationIdConflicts.
An anonymous organisation create carrying such a uuid is refused. The link command
refuses when OpenRegister cannot name its default organisation, records the link,
and can confirm a refused pair.

Assisted-by: ClaudeCode:claude-opus-5-5
Assisted-by: ClaudeCode:claude-opus-5-5
… of the real code

Assisted-by: ClaudeCode:claude-opus-5-5
…e-unused-services

refactor(stackiq): delete the unreferenced StackiqService and its three sub-services
…arnings

test(cmdb): pin which mappings warn on an optional column
…uard

chore(quality): take the canonical coverage-guard
…d-binds-organisation

fix(organisations): check that an organisation belongs to the organisatie before linking (REVIEW)
…user-tests

test(contacts): replace the skipped contact and user tests with tests of the real code (REVIEW)
… system reads cross-organisation

Assisted-by: ClaudeCode:claude-opus-5-5
…members to its organisation

Assisted-by: ClaudeCode:claude-opus-5-5
…isation-marker

fix(rbac): mark provider, consumer and public catalogue reads as cross-organisation
…tic calls

Assisted-by: ClaudeCode:claude-opus-5-5
…only skip stackiq's own writes

Assisted-by: ClaudeCode:claude-opus-5-5
…ation-guard

fix(contacts): accept a contact person only from someone who may add members to its organisation (REVIEW)

This branch has not been deployed

No deployments
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