Skip to content

🤖 fix: hide archived task_list entries by default#3614

Merged
ThomasK33 merged 2 commits into
mainfrom
fix/task-list-archive-filter
Jun 23, 2026
Merged

🤖 fix: hide archived task_list entries by default#3614
ThomasK33 merged 2 commits into
mainfrom
fix/task-list-archive-filter

Conversation

@ThomasK33

@ThomasK33 ThomasK33 commented Jun 23, 2026

Copy link
Copy Markdown
Member

Summary

Hide archived, non-actionable child workspace work from the agent-facing task_list output by default, while preserving active work visibility and adding an explicit includeArchived: true escape hatch.

Background

Archived child workspaces can leave stale completed/interrupted task records visible to agents. This change makes the normal discovery path focus on actionable work while still allowing archived history/debug inspection on demand.

Implementation

  • Added includeArchived to the task_list input schema using .nullish() for strict-provider compatibility.
  • Added tool-local archive lookup based on workspace config, including archived ancestor handling below the current root.
  • Filtered descendant agent tasks, workspace-turn tasks, and non-running background bash tasks only when they are archived and non-actionable.
  • Left workflow run listing behavior unchanged.
  • Regenerated synced tool docs and built-in skill content.

Validation

  • bun test src/node/services/tools/task_list.test.ts
  • make typecheck
  • MUX_ESLINT_CONCURRENCY=1 make static-check
  • Post-rebase rerun: bun test src/node/services/tools/task_list.test.ts and MUX_ESLINT_CONCURRENCY=1 make static-check
  • Post-Codex-fix rerun: bun test src/node/services/tools/task_list.test.ts, make typecheck, and MUX_ESLINT_CONCURRENCY=1 make static-check
  • Focused dogfood pass with an isolated dev-server sandbox plus a production createTaskListTool smoke harness confirming default hiding and includeArchived: true restoration.

Risks

Moderate-low: this changes agent-facing task discovery semantics, but only for archived, non-actionable child workspace work. Active/actionable tasks remain visible, service-level descendant discovery remains broad, and includeArchived: true preserves the debug/history escape hatch.


📋 Implementation Plan

Implementation Plan: Hide archived child workspaces from task_list by default

1. Goal and product semantics

Implement the behavior that when a workspace-created child workspace is archived, it stops appearing in the parent workspace's task_list tool results by default.

Recommended default semantics:

  • Hide archived, non-actionable child-workspace work by default. If a child workspace created through the task tool is archived and its surfaced task/turn is no longer actionable, omit it from normal task_list output.
  • Treat archived descendants consistently. If an intermediate descendant workspace below the current root is archived, non-actionable descendants under it should also be hidden by default; traversal must still continue so active descendants are not lost.
  • Never hide active/actionable work. If work is still queued, starting, running, awaiting_report, pending, or otherwise active/billable/resumable, keep it visible even when its workspace or ancestor workspace is archived.
  • Provide an explicit escape hatch. Add includeArchived: true to task_list so agents/debug flows can intentionally inspect archived non-actionable work.
  • Keep workflow runs unchanged. Workflow runs are scoped to the current/root workspace and do not represent archived child workspaces.
  • Keep background bash process filtering unchanged in the first pass. Background processes are active/in-memory by default and should remain visible while running. Terminal background processes are only surfaced when explicitly requested by status and are not the core workspace-archive case.

Non-goals

  • Do not change archive/unarchive behavior itself.
  • Do not terminate, interrupt, or clean up work as part of listing.
  • Do not globally change TaskService descendant discovery defaults in a way that could break transcript/report lookup for archived descendants.
  • Do not add a new archived-task history UI in this change.

2. Verified repository evidence

Read-only Explore agents verified the following code paths and constraints:

  • src/node/services/tools/task_list.ts / createTaskListTool aggregates four sources: descendant agent-task workspaces via taskService.listDescendantAgentTasks, workspace turn tasks via taskService.listWorkspaceTurnTasks, workflow runs via workflowService.listRuns({ workspaceId }), and background processes via backgroundProcessManager.list().
  • src/common/utils/tools/toolDefinitions.ts / TaskListToolArgsSchema defines the task_list input schema. New optional tool parameters must use .nullish() rather than .optional() for strict provider compatibility.
  • src/common/schemas/project.ts / WorkspaceConfigSchema stores archive state as archivedAt and unarchivedAt timestamps, plus parentWorkspaceId for child workspace relationships.
  • src/common/utils/archive.ts / isWorkspaceArchived(archivedAt, unarchivedAt) is the canonical archived-state helper.
  • src/node/services/taskService.ts / listDescendantAgentTasks traverses child agent-task workspaces by parentWorkspaceId; taskId in DescendantAgentTaskInfo is the child workspace ID.
  • src/node/services/taskService.ts / listWorkspaceTurnTasks returns WorkspaceTurnTaskHandleRecord; workspaceId on each turn is the child/target workspace where the turn executes.
  • Workflow runs returned by workflowService.listRuns({ workspaceId }) are root-workspace scoped and do not carry a child workspace archive context, so they should not be archived-filtered.
  • Internal consumers, including transcript/report loading paths, rely on descendant discovery continuing to find archived child workspaces. Therefore the default hidden behavior should be localized to the task_list tool rather than changing TaskService.listDescendantAgentTasks globally.

3. Recommended approach and alternatives

Recommended approach: tool-layer archived filtering with an explicit includeArchived flag

Net product LoC estimate: +50 to +85 lines.

Add an includeArchived argument to the task_list tool schema, default it to false in createTaskListTool, and filter only the task_list presentation layer for archived, non-actionable child workspace entries. Keep service discovery broad by default so backend/report-loading paths remain intact.

Why this is preferred:

  • Minimal behavioral blast radius: only the agent-facing task_list result changes.
  • Preserves active work and transcript/report recoverability.
  • Matches user expectation: archive removes stale child work from the active list, not from history/debug access.
  • Supports explicit debugging via includeArchived: true without adding a new UI or route.

Alternative A: add includeArchived filtering directly to TaskService.listDescendantAgentTasks

Net product LoC estimate: +55 to +95 lines.

This would centralize filtering in service methods. It is less attractive because TaskService is used by internal retrieval flows that may need archived descendants. It can still work if every internal caller is audited and defaults to includeArchived: true, but the implementation is easier to get subtly wrong.

Alternative B: change archive behavior to terminate/interrupt hidden work

Net product LoC estimate: +100 to +180 lines.

This would make archive a stronger lifecycle operation. It is over-scoped for the current ask and risks surprising users by conflating a visibility action with execution control.

4. Implementation phases

Phase 1 — Add the tool argument and document the behavior in the schema

Files:

  • src/common/utils/tools/toolDefinitions.ts

Changes:

  1. Extend TaskListToolArgsSchema with:

    includeArchived: z
      .boolean()
      .nullish()
      .describe("Whether to include archived child workspaces/tasks. Defaults to false."),
  2. If the tool description text near the schema explains default status behavior, update it to mention that archived non-actionable child workspace tasks are hidden by default and can be included with includeArchived: true.

Acceptance criteria:

  • The generated tool schema accepts omitted, null, false, and true values for includeArchived.
  • Existing statuses behavior is unchanged.
  • No .optional()-only field is introduced.

Quality gate:

  • Run targeted schema/tool-definition tests if present; otherwise rely on TypeScript plus the task_list tool tests added in later phases.

Phase 2 — Add local archived-in-scope lookup helpers for task_list

Files:

  • src/node/services/tools/task_list.ts
  • Potentially src/node/services/taskUtils.ts only if an existing archive/ancestor helper is already shared there

Changes:

  1. Prefer private/local helpers in task_list.ts rather than a new public TaskService API unless another caller demonstrably needs the helper.
  2. Load the workspace config once per task_list execution, then build a cheap lookup closure or map for archive checks. Do not reload config once per task/turn record.
  3. Add a helper that answers whether a workspace is archived in the listed subtree:
    • direct workspace archive state counts;
    • an archived ancestor below the current root counts;
    • the current root being archived should not by itself hide all of its own descendants when the tool is invoked from that root.
  4. Return false when a workspace ID cannot be found. Missing metadata should not hide potentially active work.
  5. Use the canonical src/common/utils/archive.ts helper for timestamp comparison.
  6. If an existing hasArchivedAncestor helper is suitable and accessible without broad service API changes, reuse it; otherwise implement the local lookup from the loaded config's parent/child workspace metadata.

Defensive-programming expectation:

  • Assert or clearly guard impossible/malformed values only where the existing code style supports it.
  • Do not turn missing workspace metadata into an error path; listing should be resilient.
  • Keep the helper deterministic and side-effect free so tests can cover direct archive, ancestor archive, unarchive, and missing metadata cases through final tool output.

Acceptance criteria:

  • Directly archived, ancestor-archived, unarchived, never-archived, and missing workspace IDs produce deterministic filtering behavior.
  • No service-level descendant traversal defaults change in this phase.
  • Config is loaded once for the archive lookup path in each tool execution.

Quality gate:

  • Cover helper behavior through src/node/services/tools/task_list.test.ts final-output assertions. Add src/node/services/taskService.test.ts only if implementation ends up adding a public TaskService helper despite the preferred local-helper approach.

Phase 3 — Filter task_list child-workspace sources only

Files:

  • src/node/services/tools/task_list.ts

Changes:

  1. In createTaskListTool, compute:

    const includeArchived = args.includeArchived ?? false;
  2. Filter descendant agent tasks after taskService.listDescendantAgentTasks(...) returns and before formatting the final task list:

    • Check archived-in-scope state using task.taskId.
    • Define actionable agent-task statuses positively as queued, starting, running, and awaiting_report.
    • Hide only when all are true:
      • includeArchived is false;
      • the child workspace or an ancestor below the current root is archived;
      • the task status is not actionable.
    • This positive actionable predicate avoids missing terminal/error-like status variants.
  3. Filter workspace turn tasks after taskService.listWorkspaceTurnTasks(...) returns and before formatting the final task list:

    • Check archived-in-scope state using turn.workspaceId.
    • Define actionable turn statuses positively as queued, starting, and running.
    • Hide only when all are true:
      • includeArchived is false;
      • the turn workspace or an ancestor below the current root is archived;
      • the turn status is not actionable.
    • This covers completed, failed/error, interrupted, and any future non-actionable status without maintaining a fragile terminal-status list.
  4. Do not filter workflow runs in this change.

  5. Do not filter active background processes in this change. If existing code can list terminal background processes for archived child workspaces, leave them unchanged unless a focused read shows the product already treats them as child-workspace task records. This keeps the implementation scoped to the user-visible workspace task behavior.

Implementation notes:

  • Keep filtering near the point where each source is converted into output records, so the source-specific status mapping is obvious.
  • Avoid pruning descendant traversal. task_list should still ask for descendants normally, then hide archived non-actionable records at presentation time.
  • Treat an archived ancestor below the current root as archived for non-actionable descendants without pruning traversal. Implement this locally from the loaded config/parent map if the existing hasArchivedAncestor helper is not safely reusable without broad service API changes.

Acceptance criteria:

  • Default task_list omits archived or ancestor-archived non-actionable descendant agent tasks.
  • Default task_list omits archived or ancestor-archived non-actionable workspace turn tasks.
  • Default task_list still returns archived active/actionable descendant agent tasks and workspace turns.
  • task_list({ includeArchived: true }) disables archive filtering and returns archived/ancestor-archived non-actionable descendant agent tasks and workspace turns when their requested statuses match.
  • Explicit statuses filtering still works exactly as before except for the archive visibility rule.
  • Workflow run results are unchanged.

Quality gate:

  • Run the new/updated task_list tests immediately after this phase before expanding validation.

Phase 4 — Tests

Files:

  • src/node/services/tools/task_list.test.ts
  • src/node/services/taskService.test.ts only if adding a public TaskService helper

Add or update tests for:

  1. Tool argument behavior

    • Calling the tool without includeArchived behaves as false in final output.
    • Calling with includeArchived: true exposes archived non-actionable entries when their statuses are requested.
    • Calling with includeArchived: null behaves as false.
    • includeArchived: true disables both direct-archive and ancestor-archive filtering while preserving normal statuses filtering.
  2. Descendant agent-task filtering

    • Archived + reported is hidden by default when reported is requested.
    • Archived + interrupted is hidden by default when interrupted is requested.
    • Archived + running is still returned.
    • Ancestor-archived + non-actionable descendant is hidden by default.
    • Ancestor-archived + actionable descendant is still returned.
    • Non-archived + non-actionable is still returned when the matching statuses are requested.
  3. Workspace turn filtering

    • Archived + completed/failed/error/interrupted non-actionable turn is hidden by default when the corresponding status is requested.
    • Archived + running turn is still returned.
    • Ancestor-archived + non-actionable turn is hidden by default.
    • includeArchived: true restores archived/ancestor-archived non-actionable turn visibility.
  4. Regression coverage

    • Existing default active statuses remain unchanged.
    • Workflow run output is not affected by includeArchived.
    • Missing workspace metadata does not hide a record.

Testing cautions:

  • Avoid tautological tests that only assert new description strings.
  • Prefer behavioral assertions against the final tool result and service calls.
  • Keep mocks minimal and aligned with existing test style.

5. Validation and quality gates

Run validation in increasing scope:

  1. Targeted unit tests:

    bun test src/node/services/tools/task_list.test.ts
    bun test src/node/services/taskService.test.ts

    The second command is required only if taskService.ts gets a public helper or otherwise changes.

  2. Typecheck:

    make typecheck
  3. Lint/static validation:

    MUX_ESLINT_CONCURRENCY=1 make static-check

    Use the low-concurrency setting to avoid known local ESLint worker OOMs in constrained workspaces.

  4. If static-check is too broad or blocked by an unrelated repo issue, record the exact failure and run the narrowest replacement set: targeted tests, make typecheck, and MUX_ESLINT_CONCURRENCY=1 make lint.

6. Dogfooding plan

Dogfood in an isolated Mux dev-server sandbox before claiming the behavior works. This section incorporates the dev-server-sandbox, agent-browser, and dogfood skills.

Setup

  1. Start a sandboxed dev server with its own temporary MUX_ROOT so it does not conflict with other workspaces or the normal <MUX_ROOT>/server.lock:

    make dev-server-sandbox

    Options to use when appropriate:

    # Start with no copied providers or projects
    make dev-server-sandbox DEV_SERVER_SANDBOX_ARGS="--clean-providers --clean-projects"
    
    # Keep the sandbox root after exit for debugging
    KEEP_SANDBOX=1 make dev-server-sandbox

    Note: the sandbox may seed providers.jsonc and config.json from $MUX_ROOT, ~/.mux-dev, or ~/.mux; it intentionally does not copy secrets.json.

  2. Before using browser automation, load the installed agent-browser runtime guidance so commands match the local CLI version. Use the direct agent-browser binary, never npx agent-browser:

    agent-browser skills get core
  3. Initialize dogfood output:

    mkdir -p dogfood-output/task-list-archive/screenshots dogfood-output/task-list-archive/videos
    cp .mux/skills/dogfood/templates/dogfood-report-template.md dogfood-output/task-list-archive/report.md

    If that template path is unavailable in the executor's environment, create the same report shape manually and keep writing findings incrementally. Read the dogfood issue taxonomy at the start of the dogfood session.

  4. Open the sandboxed app with agent-browser using a named session, then wait for network idle. Get <SANDBOX_URL> from the make dev-server-sandbox output:

    agent-browser --session task-list-archive open <SANDBOX_URL>
    agent-browser --session task-list-archive wait --load networkidle
    agent-browser --session task-list-archive screenshot --annotate dogfood-output/task-list-archive/screenshots/initial.png
    agent-browser --session task-list-archive snapshot -i
  5. Create or select a disposable parent workspace.

  6. From the parent workspace, create at least two child workspaces/tasks with the task tool:

    • one short child task that completes;
    • one child task that remains active long enough to inspect.
  7. Start a repro video before archiving so the evidence captures the archive + default task-list + include-archived flow:

    agent-browser --session task-list-archive record start dogfood-output/task-list-archive/videos/archive-task-list-flow.webm
  8. Archive the completed child workspace through the normal UI flow.

  9. If practical, also archive the active child workspace to confirm active work still appears.

Functional checks

  1. Continue the repro video started before archiving, and in the parent workspace trigger task_list with default arguments.

    • Expected: archived completed child workspace is absent.
    • Expected: active/actionable child workspace remains present.
  2. Trigger task_list with includeArchived: true and non-actionable statuses requested, such as reported/interrupted for agent tasks or completed/failed turn statuses.

    • Expected: archived completed child workspace is present.
  3. Confirm workflow runs are unaffected.

  4. Confirm no active/billable process disappears from task_list merely because its workspace was archived.

  5. Stop the repro video:

    agent-browser --session task-list-archive record stop
  6. During the run, use snapshot -i for interactive element discovery, plain snapshot for reading output text, and periodically check browser errors/console:

    agent-browser --session task-list-archive errors
    agent-browser --session task-list-archive console

Evidence to collect for review

  • Initial annotated screenshot of the sandboxed app.
  • Screenshot of the archived child workspace in the UI.
  • Screenshot of default task_list output showing the archived completed child omitted.
  • Screenshot of includeArchived: true output showing the archived completed child included.
  • Screenshot or terminal capture showing the active/actionable child remains visible.
  • Short screen recording of the archive + default task-list + include-archived task-list flow.
  • Dogfood report entries written as findings are discovered, with repro steps mapped to screenshots.
  • Attach collected screenshots/video to the final report or PR description if a PR is later requested.

Dogfood wrap-up

  • Validate only through browser-observed behavior during dogfooding; do not inspect source code as part of the dogfood evidence pass.

  • Update the dogfood report summary counts/findings before closing the session.

  • Close the browser session:

    agent-browser --session task-list-archive close

7. Rollout and review notes

  • This is a backwards-compatible tool-result visibility change with an explicit opt-in for archived entries.
  • The most important review focus is preserving active work visibility and avoiding service-level filtering that breaks archived transcript/report access.
  • If reviewers prefer ancestor-cascade archive semantics, implement it only if it can be done without changing TaskService defaults or pruning traversal.
  • If reviewers prefer background-process filtering too, treat it as a follow-up unless product evidence shows terminal background processes from archived child workspaces are a frequent source of noise.

8. Final acceptance checklist

  • TaskListToolArgsSchema includes includeArchived: z.boolean().nullish().
  • Default task_list hides archived or ancestor-archived non-actionable descendant agent tasks.
  • Default task_list hides archived or ancestor-archived non-actionable workspace turn tasks.
  • Active/actionable archived work remains visible.
  • includeArchived: true disables archive filtering while preserving normal statuses filtering.
  • Workflow runs are unchanged.
  • Internal descendant discovery defaults remain broad enough for transcript/report recovery.
  • Targeted tests pass.
  • Typecheck passes.
  • Static validation or documented fallback validation passes.
  • Dogfooding screenshots and video are collected.

9. Advisor review status

Approved by advisor after review loop. Advisor requested and the plan incorporated: explicit archived-ancestor semantics without pruning traversal, positive actionable-status predicates, includeArchived: true disabling archive filtering while preserving normal status filtering, local/private archive lookup with config loaded once per tool execution, and final-output-oriented tests. After the requested dev-server-sandbox, agent-browser, and dogfood skill reads, the advisor re-approved the updated dogfooding plan with minor polish; the plan now starts recording before archive, uses direct agent-browser, derives <SANDBOX_URL> from sandbox output, avoids source inspection during dogfooding, and includes dogfood report wrap-up plus session close.

10. PR, CI, review, and merge-queue execution plan

Current verified state

  • The implementation is already present in the working tree.
  • Current branch: workspace-admg.
  • Remote tracking state from git status --short --branch: workspace-admg...origin/main [behind 1].
  • Modified tracked files:
    • src/node/services/tools/task_list.ts
    • src/node/services/tools/task_list.test.ts
    • src/common/utils/tools/toolDefinitions.ts
    • docs/hooks/tools.mdx
    • src/node/services/agentSkills/builtInSkillContent.generated.ts
  • Current diff line counts:
    • Product code: src/node/services/tools/task_list.ts +167/-2, src/common/utils/tools/toolDefinitions.ts +7/-0; approximate net product LoC: +172.
    • Tests: src/node/services/tools/task_list.test.ts +287/-2.
    • Generated/docs: docs/hooks/tools.mdx +6/-5, src/node/services/agentSkills/builtInSkillContent.generated.ts +6/-5.
  • Local validation already run successfully after implementation:
    • bun test src/node/services/tools/task_list.test.ts
    • make typecheck
    • make fmt
    • MUX_ESLINT_CONCURRENCY=1 make static-check
  • Dogfood evidence already collected:
    • dogfood-output/task-list-archive/screenshots/initial.png
    • dogfood-output/task-list-archive/screenshots/task-list-default-and-include-archived.png
    • dogfood-output/task-list-archive/videos/archive-task-list-flow.webm
    • dogfood-output/task-list-archive/report.md

Plan-mode boundary

This section is the executable handoff for the next Exec-mode pass. Do not commit, rebase, push, open PRs, or merge while still in Plan Mode.

Phase A — Pre-commit hygiene

  1. Re-check branch and diff:

    git status --short --branch
    git diff --stat
    git diff --check
  2. Decide whether to commit dogfood artifacts:

    • Recommended: do not commit dogfood-output/**; they are evidence artifacts, not repo source, and they are currently untracked/ignored.
    • If git status --short --untracked-files=all shows dogfood files as tracked candidates, exclude them from the commit unless the user explicitly asks to version dogfood artifacts.
  3. Stage only intended files:

    git add src/node/services/tools/task_list.ts \
      src/node/services/tools/task_list.test.ts \
      src/common/utils/tools/toolDefinitions.ts \
      docs/hooks/tools.mdx \
      src/node/services/agentSkills/builtInSkillContent.generated.ts
    git diff --cached --stat
  4. Commit locally:

    git commit -m "🤖 fix: hide archived task_list entries by default"

Phase B — Rebase on origin/main

  1. Fetch and rebase:

    git fetch origin
    git rebase origin/main
  2. If conflicts occur, resolve surgically in the touched files, rerun targeted validation, then continue:

    bun test src/node/services/tools/task_list.test.ts
    git rebase --continue
  3. After a clean rebase, rerun validation:

    run_and_report task_list_tests bun test src/node/services/tools/task_list.test.ts
    run_and_report static_check env MUX_ESLINT_CONCURRENCY=1 make static-check

Phase C — Push and create PR

  1. Push the rebased branch:

    git push --force-with-lease -u origin workspace-admg
  2. Check attribution environment before creating the PR, per the pull-requests skill:

    printf 'model=%s\nthinking=%s\ncost=%s\n' "$MUX_MODEL_STRING" "$MUX_THINKING_LEVEL" "$MUX_COSTS_USD"
  3. Build the PR body with mktemp, using --body-file. Include the implementation plan verbatim in a collapsed section per repository/user PR instructions. Suggested PR title:

    🤖 fix: hide archived task_list entries by default
    
  4. Suggested PR body skeleton:

    ## Summary
    
    Hides archived, non-actionable child workspace work from `task_list` by default while preserving active work visibility and adding `includeArchived: true` for debugging/history inspection.
    
    ## Background
    
    Archived child workspaces should stop cluttering normal parent task discovery, but active/billable work and explicit archived inspection must remain available.
    
    ## Implementation
    
    - Adds `includeArchived` to `TaskListToolArgsSchema` using `.nullish()`.
    - Adds local archive lookup in `task_list` that checks direct and below-root ancestor archive state without changing `TaskService` descendant traversal.
    - Filters only non-actionable descendant agent tasks and workspace-turn tasks at the tool presentation layer.
    - Leaves workflow runs and background process behavior unchanged.
    
    ## Validation
    
    - `bun test src/node/services/tools/task_list.test.ts`
    - `make typecheck`
    - `make fmt`
    - `MUX_ESLINT_CONCURRENCY=1 make static-check`
    - Dogfood: isolated `make dev-server-sandbox`, browser screenshot/video evidence under `dogfood-output/task-list-archive/`, and production `createTaskListTool` smoke harness confirming default filtering vs. `includeArchived: true`.
    
    ## Risks
    
    Low-to-medium. The filtering is intentionally scoped to `task_list` presentation output, preserving descendant discovery for transcript/report recovery. Main risk is hiding a terminal archived task a caller expected by default; `includeArchived: true` is the escape hatch.
    
    ---
    
    <details>
    <summary>📋 Implementation Plan</summary>
    
    CONTENTS OF THIS PLAN FILE
    
    </details>
    
    ---
    
    _Generated with `mux` • Model: `<modelString>` • Thinking: `<thinkingLevel>` • Cost: `$<costs>`_
    
    <!-- mux-attribution: model=<modelString> thinking=<thinkingLevel> costs=<costs> -->
  5. Create the PR:

    gh pr new --title "🤖 fix: hide archived task_list entries by default" --body-file "$PR_BODY"

Phase D — PR checks and review loop

  1. Request Codex review if PR creation does not trigger it automatically:

    gh pr comment <pr_number> --body-file - <<'EOF'
    @codex review
    EOF
  2. Run the repo helper and keep iterating until ready:

    ./scripts/wait_pr_ready.sh <pr_number>
  3. If checks fail:

    • inspect logs;
    • reproduce locally when possible;
    • fix minimally;
    • rerun local targeted/static validation;
    • commit, push, and return to wait_pr_ready.sh.
  4. If Codex leaves comments:

    • inspect all review comments/threads;
    • address each finding or reply with rationale;
    • resolve each thread with ./scripts/resolve_pr_comment.sh <thread_id>;
    • push fixes if any;
    • comment @codex review again;
    • rerun ./scripts/wait_pr_ready.sh <pr_number>.
  5. Also check non-Codex reviewer/bot comments, including coder-agents-review if present. Do not silently resolve bot review threads.

Phase E — Merge queue

Once all of these are true:

  • required CI checks pass;
  • Codex final review has no issues / explicit approval;
  • all Codex and other review threads are resolved;
  • PR is mergeable and current with origin/main;

then enqueue via merge queue:

HEAD_SHA=$(git rev-parse HEAD)
gh pr merge <pr_number> --match-head-commit "$HEAD_SHA"

Do not pass --delete-branch with merge queue enabled.

If GitHub evicts the PR from the merge queue, re-check CI/reviews/head SHA and re-enqueue only if still green.


Generated with mux • Model: openai:gpt-5.5 • Thinking: xhigh • Cost: 3387294{COSTS_USD}

@ThomasK33

Copy link
Copy Markdown
Member Author

@codex review

@mintlify

mintlify Bot commented Jun 23, 2026

Copy link
Copy Markdown

Preview deployment for your docs. Learn more about Mintlify Previews.

Project Status Preview Updated (UTC)
Mux 🟢 Ready View Preview Jun 23, 2026, 3:25 PM

💡 Tip: Enable Workflows to automatically generate PRs for you.

@chatgpt-codex-connector

This comment has been minimized.

@ThomasK33

Copy link
Copy Markdown
Member Author

@codex review

The previous Codex summary found no code issues but did not emit the approval signal expected by the repo readiness script. Please perform a final review and either leave actionable comments or approve with the standard no-major-issues signal.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: c7c8fa5c4b

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/node/services/tools/task_list.ts
@ThomasK33

Copy link
Copy Markdown
Member Author

@codex review

Addressed the archived background bash task finding and added targeted test coverage. Please take another look.

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Delightful!

Reviewed commit: c2178bbf2a

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@ThomasK33 ThomasK33 added this pull request to the merge queue Jun 23, 2026
@ThomasK33 ThomasK33 removed this pull request from the merge queue due to a manual request Jun 23, 2026
@ThomasK33 ThomasK33 added this pull request to the merge queue Jun 23, 2026
Merged via the queue into main with commit 7f5a0a0 Jun 23, 2026
23 of 24 checks passed
@ThomasK33 ThomasK33 deleted the fix/task-list-archive-filter branch June 23, 2026 17:00
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.

1 participant