Reject ignored card parameters before proposal preview and approval - #3091
Chris0Jeky wants to merge 1 commit into
Conversation
Address #3029 through the shared contract and defense-in-depth rendering. Preserve shape-only draft admission and existing execution semantics. Supply 126 application and four API cases plus vocabulary and design notes; local dotnet is unavailable.
|
@codex review Please inspect the known-field preflight before hierarchy validation, compatibility with valid card/label/relation/assignment operations, and the independent readable-diff guard. Review the new fixture construction and API refusal/explicit-Apply cases for compilation and meaningful behavior. Local dotnet is unavailable, so no local C# pass is claimed; this stays draft for exact-head hosted qualification. |
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
Hosted evidence update at head a7ad76e, run 34727256057: Ubuntu Backend Unit job 103643562692 reports Run domain tests = success and Run application tests = success. CLI tests were still running. Windows application tests and both API lanes were still in progress at inspection. Architecture, docs governance, SAST and secret scanning had passed. This supplies executable application-test evidence beyond the original local limitation, but is NOT a complete required-CI/API or review verdict. Local dotnet remains unavailable. The two new test files were read back and their Git blob hashes match the local files; fallback patch applicability was verified separately. Keep the PR draft until remaining qualification and review complete. |
|
Codex Review: Didn't find any major issues. Hooray! Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
Outcome
Closes #3029 after qualification and merge.
Move/delete and other card actions now reject the known create/update-only fields they ignore: title, description, dueDate, clearDueDate, replacement labels/labelIds, workItemType, parentCardId and clearParent. Presence matters, including null/false/empty values. The check runs before hierarchy reads so ignored parent fields cannot lead to misleading hierarchy/version errors. Existing relation/lifecycle batch rules, scope, estimates, concurrency, WIP, singular label verbs and create/update semantics remain unchanged.
The readable diff also renders due-date/replacement-label effects only for card create/update, independently protecting rendering from overstating effects. Generic draft creation remains shape-only; validated diff/preview/approval and execution policy share the rejection. No automatic payload rewrite or change to approval/Apply policy. Legacy archive remains Block, distinct from archive-lifecycle.
Implementation, tests and design
Six files: validator, one readable-diff condition, two dedicated test files, the agent-facing proposal vocabulary and
docs/analysis/2026-09-13-proposal-parameter-support.md.These are supplied tests, not a local passing result. dotnet is absent; the attempted command fails to start. No C# compile, API/browser proof, red/green or memory/performance result is invented. Keep draft until exact-head hosted application/API/architecture/full required CI and review qualify the candidate. Local docs governance, GitHub-operations governance, relative links (700 Markdown files, zero broken links) and whitespace checks pass.
Isolation and handoff
Parent is actual main
2cdc4525766101211fe04787e23bfb46b6aa4011. Original changed-file blobs matched that main before editing; surrounding local files are the supplied older snapshot, not a complete current-main checkout. Remote runtime blobs match the local files. No edits to OperationHandlerRegistry or board JSON import/export, which remain independently owned, and no overlap with #3090's timezone work.No new framework, dependency, schema, migration, controller, authority, notification/outbox or CI-control change. Canonical STATUS/MASTERPLAN and existing OUTSTANDING_TASKS.md human device/keyboard, screen-reader, translation, provider, release/hosting and CI-control decisions remain unchanged. No merge or deployment.