Skip to content

Agent UX: full-item --stdin-json update silently ignores edited notes and reports success #1343

Closed

Description

@unbraind

Problem

On installed @unbrained/pm-cli@2026.9.28, pm update <id> --stdin-json silently ignores an edited notes array in a full item document. It exits 0 and reports changed_field_count: 0, while a subsequent full read shows the old note. pm update --help describes --stdin-json as reading a full item JSON document; #438 explicitly intended a get → modify → update round trip. This matters to agents correcting evidence notes because a successful no-op can leave stale context in the tracker.

Minimal reproduction

tracker=$(mktemp -d)
pm --path "$tracker" init --defaults --prefix probe --agent-guidance skip
id=$(pm --path "$tracker" create Chore 'Note round trip' --description 'Disposable repro' --note 'Original evidence' --json | jq -r .id)
pm --path "$tracker" get "$id" --json --full | jq '.item | .notes[0].text = "Corrected evidence"' > /tmp/pm-note-round-trip.json
pm --path "$tracker" update "$id" --stdin-json --json < /tmp/pm-note-round-trip.json
pm --path "$tracker" get "$id" --json --full | jq '.item.notes[0].text'

Observed update response: {"id":"probe-…","status":"open","changed_field_count":0}. Final read returns "Original evidence". I reproduced the same behavior with a second full-item payload on a disposable tracker; there were no validation errors.

Expected

Either apply a valid note edit atomically and record the correction in append-only history, or reject unsupported notes changes with a nonzero, field-specific error that points to pm notes --edit. A successful no-op should only mean the submitted document matches the persisted item.

pm notes --edit <index> --add <text> is an available workaround. This issue is specifically about the silent full-document update result; no pm-cli source files were changed in the reporting workspace.

Activity

  1. unbraind commented on Sep 29, 2026

    @unbraind
    OwnerAuthor

    Tracked as pm-2589e6. The PM item records the reproduction, expected behavior, and related feature lineage.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions