Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

tech-debt: stale Status option IDs in project_config.py cause silent no-op board updates

Đang mở
#800 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

Đánh giá

Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức phù hợp với người mới
64/100
Loại issue
Lỗi
Độ rõ ràng
Khá rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
github, python
Lĩnh vực
cli, tooling

Hướng nghiên cứu

Start by reading scripts/lib/project_config.py, scripts/lib/project_board.py, and scripts/lib/helpers.py, then trace the /issue and /epic status commands that call update_project_status(). Verify the failure path for gh project item-edit and the six live project statuses. Done means status updates fail visibly, all six statuses are handled, and the acceptance checks pass, including end-to-end movement across the board.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

tech-debt

Summary

STATUS_OPTIONS in scripts/lib/project_config.py holds stale single-select option IDs that
no longer match the live project board, and it is missing three of the six statuses entirely.
update_project_status() reports success anyway, so every workflow command that moves an issue on
the board is almost certainly a no-op today.

Found while planning the Cloud Accounts & Storage
milestone.

Evidence

scripts/lib/project_config.py:

STATUS_OPTIONS = {
    "In Progress": "47fc9ee4",
    "Needs Review": "44687678",
    "Done": "98236657",
}

Live, via gh project field-list 3 --owner jcollard:

Status In project_config.py Live board Match
Concept missing c1706669 ❌
Todo missing a05f3ea6 ❌
Blocked missing 23cd6cc3 ❌
In Progress 47fc9ee4 c6ed3476 ❌
Needs Review 44687678 ea94e8c4 ❌
Done 98236657 351c8535 ❌

STATUS_FIELD_ID itself is correct (PVTSSF_lAHOADXapM4BKKH8zg6G6Vo), as are the Priority,
Effort, and Type option IDs. Only the Status option IDs have drifted.

Why it fails silently

scripts/lib/project_board.py:149-158 calls run(...) with check=False:

result, err = run(f'gh project item-edit ... --single-select-option-id {option_id}', check=False)

if result is None and err:
    return False, f"Failed to update status: {err}"

return True, f"Status updated to {status}"

But scripts/lib/helpers.py:44-47 only returns None when check=True:

if check and result.returncode != 0:
    return None, result.stderr
return result.stdout.strip() if capture else "", result.stderr

With check=False the function returns (stdout, stderr) regardless of exit code, so
result is None is never true and the caller reports "Status updated to ..." on a failed
gh invocation. The bad option ID and the swallowed exit code combine into a false success.

Impact

update_project_status() is called by /issue begin, /issue review, /epic begin,
/epic review, and /pr-review accept. Board status has to be maintained by hand, and the
commands actively report otherwise.

Suggested fix

  1. Refresh all six option IDs, including the missing Concept, Todo, and Blocked.
  2. Better: look the IDs up at runtime by name via gh project field-list instead of hardcoding
    them, so the next board edit does not silently break this again.
  3. Fix the error check in update_project_status so a non-zero gh exit is a failure. Either pass
    check=True, or have run() surface the return code so callers can test it directly.
  4. Add a check that fails loudly when a status name is not present on the live board.

Acceptance criteria

  • All six board statuses are settable programmatically
  • A failed gh project item-edit returns (False, ...), never a false success
  • Option IDs are resolved by name at runtime, or a test asserts the hardcoded IDs match the live board
  • Verified end-to-end by moving a real issue between all six statuses

Priority

Medium — nothing is broken in the product, but the documented workflow silently does not do what it
says, and the failure is invisible to whoever runs it.

Ngôn ngữ chính
TypeScript
Star
1
Fork
0
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Chuẩn bị môi trường

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của jcollard/LuaInTheWeb

Tất cả issue của jcollard/LuaInTheWeb

Issue tương tự

Thêm issue về TypeScript

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.