Skip to content

fix(manifest): process and audit fields are no longer editable inputs - #587

Merged
rubenvdlinde merged 2 commits into
developmentfrom
fix/lock-process-fields
Aug 20, 2026
Merged

fix(manifest): process and audit fields are no longer editable inputs#587
rubenvdlinde merged 2 commits into
developmentfrom
fix/lock-process-fields

Conversation

@rubenvdlinde

Copy link
Copy Markdown
Contributor

CnObjectDataWidget.editable defaults to true, so every property in a data widget's include list becomes a text box. That put lifecycle state and audit stamps in front of users as editable fields.

Those are written by the backend when a transition lands (TransitionEngine stamps them through saveObject()), so an input for them is a control that can only fail or confuse — the guarded path is the lifecycle buttons.

Locked with per-field overrides.<field>.editable: false rather than editable: false on the widget, because these panels mix process state with fields the user legitimately edits.

Not fixed here: widgets with no include render every schema property; enumerating them would drift as schemas change. 52 such widgets fleet-wide expose 124 process fields. That needs a server-side system-owned marker OpenRegister lacks — filed as ConductionNL/openregister#2644.

Inserted textually, one compact line per widget, so the diff is the change and nothing else. A verifier re-parses both files and asserts the only structural difference is the added overrides. check:manifest passes.

…action-surface

Artifacts only. Every task box is unticked; nothing here is wired to anything
yet, and each change is picked up by `/opsx-apply` when it is scheduled.

Committed because these were sitting UNTRACKED in the shared checkout across ten
apps at once. An untracked directory is one file-sweep away from being swept
into an unrelated commit and one branch switch away from being lost, and these
carry the design reasoning rather than just a title.
`CnObjectDataWidget.editable` defaults to TRUE, so every property named in a
data widget's `include` list becomes a text box the user can type into. That
put lifecycle state and audit stamps — `status`, `lifecycle`, `submittedAt`,
`approvedBy`, `openedAt`, `closedAt`, `publishedAt`, `enactedAt` — in front of
users as editable fields.

These are written by the backend when a transition lands (`TransitionEngine`
stamps them through `saveObject()`), so an input for them is a control that
can only ever fail or confuse: the guarded path is the lifecycle buttons, and
`LifecycleValidationListener` rejects anything that is not a legal transition.

Locked with per-field `overrides.<field>.editable: false` rather than
`editable: false` on the widget: these panels mix process state with fields
the user legitimately edits, and a blanket lock would make those read-only
too.

NOT fixed here: widgets that declare no `include` at all render EVERY schema
property, and enumerating their fields in the manifest would drift the moment
the schema changes. 52 such widgets fleet-wide expose 124 process fields.
Closing those needs a server-side "system-owned" marker, which OpenRegister
does not have — `readOnly:true` has no bypass for backend callers and would
break the transition that writes the field. Filed as
ConductionNL/openregister#2644.

Inserted textually, one compact line per widget, so the diff is the change and
nothing else: a full JSON re-serialisation reflowed hand-compacted lines and
turned this into thousands of lines of churn. A verifier re-parses both files
and asserts the only structural difference is the added overrides, and that no
non-process field was locked.
@github-actions

Copy link
Copy Markdown
Contributor

Quality Report — ConductionNL/softwarecatalog @ 9bedb07

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
build
check-manifest
check-vue-demi
test-l10n
format
composer ✅ 130/130
npm ✅ 704/704
app:check-code ⏭️
info.xml
REUSE
PHPUnit
Newman ⏭️
Playwright
Hydra gates

Quality workflow — 2026-08-20 22:30 UTC

Download the full PDF report from the workflow artifacts.

@rubenvdlinde
rubenvdlinde merged commit fc64d96 into development Aug 20, 2026
81 checks passed
@rubenvdlinde
rubenvdlinde deleted the fix/lock-process-fields branch August 20, 2026 22:31
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