You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
PR-4 (#1) made update_work_package gracefully skip percentage_done when the instance rejects it
as read-only (HTTP 422 PropertyIsReadOnly — verbatim on our instance: "% Complete was attempted
to be written but is not writable.", attribute percentageDone). This issue investigates why
it is read-only and how best to document it, since the behavior is instance-configuration-dependent.
Finding (research)
OpenProject (14.0+, refined in 14.6) has an admin setting at Administration → Work packages →
Progress tracking → "Progress calculation mode" with two modes:
Status-based — each status is mapped to a fixed % Complete value; % Complete is derived
from the work package's status and is not manually writable (the API returns PropertyIsReadOnly). Remaining work is auto-calculated. Our instance (Core 17.5.1) is in this
mode — hence the 422.
Work-based — % Complete is manually editable/writable (or auto-derived from Work and
Remaining work when those are set).
So whether percentageDone is writable depends entirely on this server setting; different instances
differ. Our existing graceful handling (drop the field, retry, note it was skipped) is the correct
general behavior because the server can't assume one mode.
Proposed scope
Confirm our instance's mode in Administration → Work packages → Progress tracking (expected:
status-based).
(Stretch, optional) decide whether the tool should do more than document — e.g., surface a message
that points at the setting, or detect the mode. Likely doc-only is sufficient; the graceful
handling already covers the runtime case.
Context
PR-4 (#1) made
update_work_packagegracefully skippercentage_donewhen the instance rejects itas read-only (HTTP 422
PropertyIsReadOnly— verbatim on our instance: "% Complete was attemptedto be written but is not writable.", attribute
percentageDone). This issue investigates whyit is read-only and how best to document it, since the behavior is instance-configuration-dependent.
Finding (research)
OpenProject (14.0+, refined in 14.6) has an admin setting at Administration → Work packages →
Progress tracking → "Progress calculation mode" with two modes:
% Completevalue;% Completeis derivedfrom the work package's status and is not manually writable (the API returns
PropertyIsReadOnly). Remaining work is auto-calculated. Our instance (Core 17.5.1) is in thismode — hence the 422.
% Completeis manually editable/writable (or auto-derived from Work andRemaining work when those are set).
So whether
percentageDoneis writable depends entirely on this server setting; different instancesdiffer. Our existing graceful handling (drop the field, retry, note it was skipped) is the correct
general behavior because the server can't assume one mode.
Proposed scope
status-based).
update_work_packagedocstring + README note added in Make wrapped Pydanticinputtools robust to MCP clients that serialize object args as JSON strings #1 to name the specific cause("read-only when the instance uses status-based progress calculation mode") and link the OP docs.
that points at the setting, or detect the mode. Likely doc-only is sufficient; the graceful
handling already covers the runtime case.
Out of scope
inputtools robust to MCP clients that serialize object args as JSON strings #1 (it stays).Acceptance criteria
inputtools robust to MCP clients that serialize object args as JSON strings #1 is warranted (default: no).References
https://www.openproject.org/docs/user-guide/time-and-costs/progress-tracking/
https://www.openproject.org/docs/system-admin-guide/manage-work-packages/work-package-progress-tracking/
https://www.openproject.org/press/press-release-openproject-14-6-progress-reporting/
Type: investigation/docs. Related: #1. Label: backlog.