Skip to content

work-items: triage/work lanes have no documented no-local-checkout mode — seam assumes a project root #449

Description

@kyle-sexton

Category: improvement (operational)
Lane that hit it: triage

Triggering example

Autonomous triage lane invoked as /work-items:triage from a home directory (C:\Users\KyleSexton, not a git repo) targeting the remote melodic-software/claude-code-plugins. The provider mutations (label edits, comments, list) route fine through gh -R <repo>, but two skill steps assume a local project checkout that did not exist:

  1. Role-label resolution (reference/tracker-seam.md "Role-label resolution is an action-entry invariant"): reads .work-item-tracker.json at the project root to resolve canonical roles from config.role_labels. With no checkout, there is no binding file — the action silently falls back to documented defaults (agent-ready/needs-human/recurring). Here the defaults happened to match the repo's live labels, but a repo that remapped roles would be queried under the wrong strings with no signal.
  2. Redundancy / rejected-concept check (triage workflow step 1): "search the codebase for an existing implementation" and match against docs/out-of-scope/. Neither is possible without a working tree; I had to manually git clone the repo to run these, which the skill never instructs.

What happened vs. what should happen

  • Happened: skill assumes it runs inside the consuming repo; a remote-only / no-checkout invocation degrades silently (role defaults) or is blocked (redundancy/codebase search) with no documented remediation. The operator improvises a clone.
  • Should: either (a) document that these lanes require a local checkout and stop with a clear remediation when CLAUDE_PROJECT_DIR/git-toplevel is absent (mirroring the existing jq/seam presence checks), or (b) define a remote-repo mode where the binding + codebase checks resolve against a fetched/target repo. Silent role-default fallback in particular should be an explicit warning, not silent.

Scope note

Affects triage (redundancy + role resolution) and work (frontier/claim also read the binding). track/decompose likely too. The seam presence-check pattern already exists for jq and the dispatcher — this is the same class of missing entry-invariant for "am I in a resolvable project context".

Metadata

Metadata

Assignees

No one assigned

    Labels

    priority: mediumReal value, no hard deadline; normal backlog flow.status: needs-decisionAwaiting a human or maintainer judgment call.status: readyTriaged, unblocked, and fully specified; eligible to pick up.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions