Skip to content

Codex/design extensible issue tracking system zpx6pa#50

Closed
dgarson wants to merge 5 commits intocodex/design-extensible-issue-tracking-systemfrom
codex/design-extensible-issue-tracking-system-zpx6pa
Closed

Codex/design extensible issue tracking system zpx6pa#50
dgarson wants to merge 5 commits intocodex/design-extensible-issue-tracking-systemfrom
codex/design-extensible-issue-tracking-system-zpx6pa

Conversation

@dgarson
Copy link
Owner

@dgarson dgarson commented Feb 22, 2026

Summary

Describe the problem and fix in 2–5 bullets:

  • Problem:
  • Why it matters:
  • What changed:
  • What did NOT change (scope boundary):

Change Type (select all)

  • Bug fix
  • Feature
  • Refactor
  • Docs
  • Security hardening
  • Chore/infra

Scope (select all touched areas)

  • Gateway / orchestration
  • Skills / tool execution
  • Auth / tokens
  • Memory / storage
  • Integrations
  • API / contracts
  • UI / DX
  • CI/CD / infra

Linked Issue/PR

  • Closes #
  • Related #

User-visible / Behavior Changes

List user-visible changes (including defaults/config).
If none, write None.

Security Impact (required)

  • New permissions/capabilities? (Yes/No)
  • Secrets/tokens handling changed? (Yes/No)
  • New/changed network calls? (Yes/No)
  • Command/tool execution surface changed? (Yes/No)
  • Data access scope changed? (Yes/No)
  • If any Yes, explain risk + mitigation:

Repro + Verification

Environment

  • OS:
  • Runtime/container:
  • Model/provider:
  • Integration/channel (if any):
  • Relevant config (redacted):

Steps

Expected

Actual

Evidence

Attach at least one:

  • Failing test/log before + passing after
  • Trace/log snippets
  • Screenshot/recording
  • Perf numbers (if relevant)

Human Verification (required)

What you personally verified (not just CI), and how:

  • Verified scenarios:
  • Edge cases checked:
  • What you did not verify:

Compatibility / Migration

  • Backward compatible? (Yes/No)
  • Config/env changes? (Yes/No)
  • Migration needed? (Yes/No)
  • If yes, exact upgrade steps:

Failure Recovery (if this breaks)

  • How to disable/revert this change quickly:
  • Files/config to restore:
  • Known bad symptoms reviewers should watch for:

Risks and Mitigations

List only real risks for this PR. Add/remove entries as needed. If none, write None.

  • Risk:
    • Mitigation:

dgarson and others added 5 commits February 21, 2026 12:55
…on, and complexity comparison

- GitHub provider updateTicket now fetches existing issue before PATCH to
  merge metadata (classifications, references, relationships) instead of
  overwriting them. addRelationship/addReference previously wiped all
  existing metadata.
- createTicket returns the result of updateTicket when closing on create,
  so the returned ticket reflects the correct status.
- serializeTicket excludes body from YAML frontmatter since it is already
  stored as markdown content after the closing ---.
- matchesQuery uses ordinal complexity ranking instead of lexicographic
  string comparison (e.g., "medium" > "high" was incorrectly true).
- Added unit tests for body round-trip, complexity filtering, and GitHub
  metadata serialization/merge.

https://claude.ai/code/session_0129tj2WT2v7pjiktvWx2WFR
TypeScript fixes:
- send.components.test.ts: restore Parameters<> typing on loadConfig spread
  to fix TS2556 (unknown[] spread is not a tuple type)
- gateway e2e test: add explicit 'return undefined' in mock implementations
  so they resolve Promise<undefined> rather than Promise<void>, which is
  not assignable to Promise<ReplyPayload | ReplyPayload[] | undefined>

issue-tracking improvements:
1. Status fidelity (GitHub provider): persist the granular OpenClaw status
   (backlog/ready/in_progress/blocked/in_review/done/canceled) inside the
   openclaw-issue-meta comment so it survives round-trips through GitHub,
   rather than collapsing to the coarse open/closed mapping on every read
2. queryDag caps: local provider caps at 10 000 tickets; GitHub provider
   caps at 500 and also fixes per_page being clamped to the GitHub API
   maximum of 100 (previously Number.MAX_SAFE_INTEGER caused a 422 error)
3. Duplicate relationship prevention: both providers now deduplicate by
   (kind, ticketId) when appending relationships so calling addRelationship
   twice with the same edge is idempotent
4. Injectable lock strategy: extract TicketLockStrategy interface and
   FileTicketLockStrategy class so callers can supply an alternative
   (e.g. Redis SET NX, network advisory lock) for multi-machine deployments
5. New agent tools: issue_tracking_get and issue_tracking_update expose
   single-ticket fetch and field-level updates to agents; previously only
   create/query/link/dag were available

https://claude.ai/code/session_0129tj2WT2v7pjiktvWx2WFR
@dgarson dgarson closed this Feb 22, 2026
dgarson added a commit that referenced this pull request Feb 22, 2026
CommandPalette: 30 commands, keyboard nav, highlight, shortcuts cheatsheet
SupportCenter (Piper): 3 tabs (Help/Tickets/NewTicket), 8 articles, fixed TS dupe-role

Sprint total: 51 views
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants