Skip to content

work-items: work-item status as a field with labels as fallback #7577

Open
1 of 1 issue completed
Open

Description

@kyle-sexton

Parent

Refs #7555. Source: PLAN Phase 10, topic poteto-review. Thread: Work-item status (fields versus
labels).

Depends on

Outcome

A work item's status lives in one single-valued field when the tracker offers one (the org field
Work status here), with labels as the fallback, detected by the tracker adapter; lanes trigger on
the field change.

Decisions

  • Status set needs-triage, needs-reporter-info, needs-owner-decision, needs-spec,
    agent-ready; Issue Type field, never a type label (D76, Q505). Origin: ours, owner-decided.
  • A single-valued attribute (status) is a field when the tracker offers fields (native first, else a
    created org field); labels where a label fits better (multi-valued tags) and as the fallback
    (user-owned repos, no field access); the adapter detects field availability; prefer the field
    trigger when both work (Q563).
  • Setting: role labels remap for status and pair labels, names per D76, D94 (repo).
  • Q563 probe result (owner sitting, GUIDE 123): GitHub reserves the name status, so the field is
    Work status (single-select, visibility all, the five options above); writes through the
    issue-field-values API succeeded; the Issue events API keeps no value history, so the lane
    triggers on Actions issues: field_added with changes.issue_field_value.from, checked live on
    the first trigger run.
  • Migration (B5, owner): one cut-over, scoped to the open agent-ready issues in this repository,
    count first, dry run, recount; dual-write only if a label reader cannot move in the slice; move
    work-resolve-issue.yml's trigger in the same slice.
  • Rejected: Projects v2 Status (per project, no Actions trigger); Issue Types and state_reason (do
    not model status).

Key interfaces

From the design's contracts, "Pipeline and verdict": "Statuses: needs-triage,
needs-reporter-info, needs-owner-decision, needs-spec, agent-ready; Issue Type field, never a
type label. Status is a field when the tracker offers one (adapter detects), labels as fallback."
"Tracker adapter": "Contract and conformance tests in the work-items tracker contract;
schema_version covers versions."

Variation verdicts: "Work-item status storage: abstract now; tracker adapter; field where offered,
labels as fallback (Q563)."

Slices, filed when this phase starts: status-field-adapter, status-migration.

Done when

  • The tracker test suite and the conformance suite pass for github and local-markdown with
    field detection.
  • After migration, gh issue list --label agent-ready --state open --json number --jq length
    returns 0, and the migration comment lists the same issues with field value agent-ready.
  • The first field_added trigger run logs a non-empty changes.issue_field_value.from and
    concludes success.

Out of scope

  • Creating or changing org-level issue fields (owner stop).
  • Status writes from decompose and track add before this thread lands.

Activity

  1. added
    needs-humanHuman-in-the-loop required; autonomous sessions must not resolve items carrying this.
    on Oct 16, 2026
  2. github-actions commented on Oct 16, 2026

    @github-actions
    Contributor

    Proposed work class: work-class: structural
    Basis: automated intake triage; the lanes App applied this class.

    Size: Large
    Complexity: High
    Uncertainty: Knowable
    Flags: none
    Blocked by: none

    Understood: move work-item status into the single-select Work status issue field when the tracker offers one, keep labels as the fallback, detect which applies in the tracker adapter, and move lane triggers to the field change. The decisions, migration plan and done-when items are already specific, so I see no open intent question. The issue names two slices (status-field-adapter, status-migration), so it needs splitting. #7571 is listed as a dependency but I couldn't find it among the open issues I was given, so I recorded no blocker. The last done-when item (the first live field_added run) can only be checked after the trigger moves. I found no likely duplicates.

    Automated triage, applied by the lanes App.

  3. changed the issue type fromtoon Oct 16, 2026
  4. changed the issue type fromtoon Oct 16, 2026
  5. removed
    needs-humanHuman-in-the-loop required; autonomous sessions must not resolve items carrying this.
    on Oct 24, 2026
  6. kyle-sexton commented on Oct 24, 2026

    @kyle-sexton
    MemberAuthor

    Released for re-triage under the owner's 2026-10-24 rule: an issue stops for a person only for an intent or vision question, a security call, a host or attended run, or spend outside prepaid credit. The hold label came off and intake triage runs again now; it re-applies a hold, with a numbered question, when one of those applies.

    To hold this issue again, add needs-human (or status: needs-decision) and say why in a comment.

  7. added
    needs-triageNot yet classified. Floor until a type and one priority tier are set.
    priority: mediumReal value, no hard deadline; normal backlog flow.
    and removed
    needs-triageNot yet classified. Floor until a type and one priority tier are set.
    on Oct 24, 2026
  8. added
    status: readyTriaged, unblocked, and fully specified; eligible to pick up.
    work-class: structuralRefactors, migrations, contract changes; cross-cutting and hard to reverse.
    on Oct 24, 2026
  9. added
    status: needs-decisionAwaiting a human or maintainer judgment call.
    and removed
    status: readyTriaged, unblocked, and fully specified; eligible to pick up.
    on Oct 24, 2026
  10. melodic-automation-lanes commented on Oct 24, 2026

    @melodic-automation-lanes
    Contributor

    Not admitted to the issue lane yet: Size large: the split into sub-issues at intake is pending (owner Q93).

  11. melodic-automation-lanes commented on Oct 24, 2026

    @melodic-automation-lanes
    Contributor

    The latest triage verdict holds nothing: the issue is at status: ready.

  12. kyle-sexton commented on Oct 26, 2026

    @kyle-sexton
    MemberAuthor

    Released for re-triage under the owner's 2026-10-24 rule: an issue stops for a person only for an intent or vision question, a security call, a host or attended run, or spend outside prepaid credit. The hold label came off and intake triage runs again now; it re-applies a hold, with a numbered question, when one of those applies.

    To hold this issue again, add needs-human (or status: needs-decision) and say why in a comment.

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

    needs-specNeeds a Brief or plan before anyone can build it.priority: mediumReal value, no hard deadline; normal backlog flow.status: readyTriaged, unblocked, and fully specified; eligible to pick up.work-class: structuralRefactors, migrations, contract changes; cross-cutting and hard to reverse.

    Fields

    Work status

    needs-spec

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions