makeplane / makeplane/plane

[bug]: plane push silently creates duplicate work items instead of updating existing ones

Open
#9,001 0 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
TypeScript
Stars
59.6k
Forks
5.8k
Avg merge
1d 22h
Merged PRs (30d)
49

Description

Context for this and four related tickets: https://github.com/orgs/makeplane/discussions/8999

I have searched existing issues; no existing report covers this. Filing via API rather than the issue form, so the form fields (Environment, Browser, Variant, Version) are inlined below.

  • Environment: Production
  • Browser: Other (CLI tool)
  • Variant: Cloud (tested against api.plane.so)
  • Version: plane-compose 0.2.0 (note: plane --version self-reports 0.1.0 -- separate ticket forthcoming)
Current behavior

When I add a work item with an existing id (e.g. PLOC-7) to work/inbox.yaml and run plane push, Compose plans to create a new work item with a fresh sequence ID rather than update the existing one. The id field appears to be silently ignored. There is no warning, no error, and --dry-run confirms a duplicate would be created.

What I expect: push respects the id field and either updates the existing item, or fails loudly with a message like "item with id X already exists; updating existing items is not supported."

There is no documented workaround. Both plane import (referenced in the auto-generated inbox.yaml) and plane apply (referenced in the PyPI README) return No such command in 0.2.0 -- see #9000.

Steps to reproduce
  1. pipx install plane-compose (installs 0.2.0).
  2. plane auth login against an existing Plane Cloud workspace.
  3. plane clone <uuid> --workspace <slug> for any project that has at least one work item.
  4. Open .plane/remote/items.yaml, copy the YAML block for one existing item (call it PROJ-7) verbatim into work/inbox.yaml.
  5. In work/inbox.yaml, change one property of that item (e.g. priority: medium -> priority: low). Leave the id: PROJ-7 field as-is.
  6. Run plane push --work-only --dry-run.
  7. Observe the output -- the item is listed under "Work Items to Create", and push would create a new sequence ID rather than update PROJ-7. Sample output from my run:
    Work Items Push Plan
    
                      1 Work Items to Create
    ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━┳━━━━━━━━━━┳━━━━━━━━┓
    ┃ Title                        ┃ Type ┃ Priority ┃ Labels ┃
    ┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━╇━━━━━━━━━━╇━━━━━━━━┩
    │ Customer reference call list │ task │ low      │        │
    └──────────────────────────────┴──────┴──────────┴────────┘
    
    Dry run mode - no changes applied
    
    Note that the id: PLOC-7 from inbox.yaml is absent from the plan, indicating it was ignored.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the plane push --work-only --dry-run entry point and compare .plane/remote/items.yaml with work/inbox.yaml. Reproduce the plan using an existing item such as PROJ-7, then trace how the id field is handled. Done means an existing ID updates the item or produces a clear unsupported-operation error instead of silently scheduling a duplicate.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
cli
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.