Skip to content

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

Closed
2 of 2 issues completed
Closed

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

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: none

    Size: Medium
    Complexity: Medium
    Uncertainty: Known
    Flags: none
    Blocked by: #13486

    Decision recorded.
    Owner, 2026-11-07 in the hub session, answering "Q5 #7577 criterion 1: (c) count it met on the passing suites, with the live GitHub conformance pass deferred, as the contract already defers live gitea, linear and jira passes" with "Go with recommendations.", then "Yes." to posting.

    The GitHub conformance suite closes every open issue in its target repository (bindings/github.sh _cb_close_all_open; CONTRACT.md § Conformance asks for a throwaway sandbox), and no such repository exists. No sandbox repository is created.

    • Criterion 1 is graded met on the tracker suite (156/156) and local-markdown conformance (5/5), with the live GitHub pass recorded as deferred.
    • If a throwaway sandbox repository is ever created, run the GitHub conformance suite there and record the result here.

    #7577 (comment)

    This decision settles the open question on criterion 1, so nothing is asked again. Per the close audit, criterion 3 is met. Criterion 2 still waits on the agent-ready cut-over tracked in #13486, so I list it as the blocker.

    Automated triage. A maintainer reviews it.

  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. 40 remaining items

  7. removed
    needs-triageNot yet classified. Floor until a type and one priority tier are set.
    on Nov 7, 2026
  8. added
    status: confirmedA maintainer confirmed the item is real and in scope; ready to be worked.
    and removed
    status: readyTriaged, unblocked, and fully specified; eligible to pick up.
    on Nov 7, 2026
  9. removed
    status: confirmedA maintainer confirmed the item is real and in scope; ready to be worked.
    on Nov 7, 2026
  10. kyle-sexton commented on Nov 7, 2026

    @kyle-sexton
    MemberAuthor
    No description provided.
  11. kyle-sexton commented on Nov 7, 2026

    @kyle-sexton
    MemberAuthor

    Status, 2026-11-07 (poteto, hub-assigned remainder).

    This issue stays open for done-when 2 and 3.

  12. kyle-sexton commented on Nov 7, 2026

    @kyle-sexton
    MemberAuthor

    Done-when 3 met (field_added trigger run).

    • Run 42241474462, event issues, created 2026-11-06T15:16:17Z, actor and triggering actor kyle-sexton (not the lanes App), conclusion success.
    • Its admit job runs jq -c '{from: .changes.issue_field_value.from, to: .issue_field_value}' "$GITHUB_EVENT_PATH" and logged at 15:16:28Z a non-empty from: option confirmed (id 86380002) on field 16338354.

    Done-when 2 stays open: admit.mjs still writes agent-ready and the lane trigger still listens on labeled until #13486's S4 lands. This issue stays open for that item.

    Posted by the github-support hub session. This was generated by AI.

  13. kyle-sexton commented on Nov 7, 2026

    @kyle-sexton
    MemberAuthor

    #13486 S4 (d) migration record: none moved.

  14. kyle-sexton commented on Nov 7, 2026

    @kyle-sexton
    MemberAuthor

    Done-when 2: met. All three done-when items now hold, so this closes as completed.

    Follow-up work stays on #13486 (#14017, the last capped-close label writer).

  15. removed
    host-runNeeds an unattended run on a host; the host runner takes it, not a person or the issue lane.
    on Nov 7, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

priority: mediumReal value, no hard deadline; normal backlog flow.work-class: structuralRefactors, migrations, contract changes; cross-cutting and hard to reverse.

Fields

Work status

confirmed

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions