Skip to content

fix: remaining untested qa - #279

Merged
pedronauck merged 13 commits into
mainfrom
qa-untested
Jul 30, 2026
Merged

pedronauck merged 13 commits into
mainfrom
qa-untested

Conversation

@pedronauck

@pedronauck pedronauck commented Jul 30, 2026 •

Copy link
Copy Markdown
Member

Summary by CodeRabbit

  • New Features

    • Automation jobs and triggers now support Loop targets with workspace selection, inputs, mappings, and network participation.
    • Network status responses consistently include zero-valued metrics and empty collections.
    • Documentation pages now use canonical URLs for breadcrumbs and metadata.
    • Marketplace listings provide improved setup links, descriptions, and bundled walkthrough navigation.
  • Bug Fixes

    • Unresolved tool calls now finish with clear failure results instead of remaining pending.
    • Invalid memory resets and inactive prompt interruptions are rejected safely.
    • Unknown loop configuration fields are now reported before changes are applied.
  • Style

    • Refined documentation, API, sidebar, diagram, and marketplace presentation styling.

@pedronauck pedronauck self-assigned this Jul 30, 2026
@greptile-apps

greptile-apps Bot commented Jul 30, 2026 •

Copy link
Copy Markdown

Too many files changed for review. (522 files found, 100 file limit)

@vercel

vercel Bot commented Jul 30, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
compozy-site Ready Ready Preview Jul 30, 2026 2:16pm

Request Review

@github-actions

github-actions Bot commented Jul 30, 2026 •

Copy link
Copy Markdown
Contributor

React Doctor found no new issues. 🎉

Reviewed by React Doctor for commit 89384ef.

@coderabbitai

coderabbitai Bot commented Jul 30, 2026 •

Copy link
Copy Markdown
Contributor

Review Change Stack

Walkthrough

The pull request updates API serialization and stream terminalization, adds automation loop-target support and stricter CLI validation, revises marketplace and documentation metadata and styling, improves UI accessibility states, and hardens gate and lint tooling.

Changes

API and runtime behavior

Layer / File(s) Summary
Network contracts and stream completion
internal/api/..., sdk/go/contracts/...
Network zero-values and empty collections are serialized; unresolved prompt-stream tool calls receive synthetic terminal results before completion.
Memory and session guards
internal/api/core/..., internal/session/...
Unsupported full memory resets and idle prompt interruptions return explicit errors without side effects.

Automation and CLI

Layer / File(s) Summary
Automation target construction
internal/cli/automation*
Jobs and triggers support validated Agent and Loop targets, workspace resolution, loop inputs, mappings, and network participation.
CLI validation and wiring
internal/cli/loop*, internal/cli/network*, internal/cli/docpost/*
Configuration decoding rejects unknown fields, positional arguments are rejected where required, and shared command/output helpers are introduced.

Marketplace and site

Layer / File(s) Summary
Marketplace discovery and metadata
packages/site/lib/marketplace-*, packages/site/app/marketplace/*
Bridge setup URLs resolve through docs sources, bundled metadata is validated, and marketplace descriptions and walkthrough links are centralized.
Documentation routing and styling
packages/site/app/docs/*, packages/site/app/styles/*, packages/site/app/global.css
Resolved documentation URLs drive breadcrumbs and images, while site typography, layout, diagrams, and overlays use shared tokens.

Tooling and UI

Layer / File(s) Summary
Gate and lint tooling
scripts/gate.sh, scripts/gate_integration_test.go, magefiles/deps_lint*
Gate fingerprints, merge-base escalation, pipeline status handling, and project-scoped lint caches are updated and tested.
UI behavior
packages/ui/src/components/popover.tsx, web/src/systems/session/lib/message-parts.ts
Closing popovers become hidden and inert during exit animation, and settled resultless tool calls render as failed.

Estimated code review effort: 5 (Critical) | ~120 minutes

🚥 Pre-merge checks | ✅ 3 | ❌ 2

❌ Failed checks (1 warning, 1 inconclusive)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 3.03% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Title check ❓ Inconclusive The title is too vague and generic; it doesn't clearly describe the main change in the changeset. Use a concise title that names the primary change, such as the main subsystem or behavior being fixed or tested.
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches 💡 2
📝 Generate docstrings 💡
  • Create stacked PR
  • Commit on current branch
⚔️ Resolve merge conflicts 💡
  • Resolve merge conflict in branch qa-untested
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch qa-untested

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 4

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
internal/api/contract/diagnostics_test.go (1)

40-46: 🗄️ Data Integrity & Integration | 🟡 Minor | ⚡ Quick win

Cover all fields in the round-trip assertion.

Title, Message, and Evidence are populated but never compared after unmarshalling, so regressions in those serialized fields still pass. Add assertions for them, using a deep comparison for Evidence.

As per path instructions, tests must verify behavior outcomes and fail when the covered contract changes.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@internal/api/contract/diagnostics_test.go` around lines 40 - 46, Add Title
and Message comparisons to the round-trip assertion in the diagnostics test, and
compare Evidence using deep equality rather than pointer or shallow comparison.
Keep the existing field checks intact so every populated diagnostic field is
validated after unmarshalling.

Source: Path instructions

🧹 Nitpick comments (2)
web/src/systems/network/components/shell/__tests__/network-head-status.test.tsx (1)

5-10: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Use the configured @/* alias for the new import.

Import networkStatusFixture through @/systems/network/mocks/fixtures instead of a relative web/src path.

As per coding guidelines, imports resolving to web/src should use the @/* alias where applicable.

Proposed fix
-import { networkStatusFixture } from "../../../mocks/fixtures";
+import { networkStatusFixture } from "`@/systems/network/mocks/fixtures`";
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@web/src/systems/network/components/shell/__tests__/network-head-status.test.tsx`
around lines 5 - 10, Update the networkStatusFixture import in
network-head-status.test.tsx to use the configured
`@/systems/network/mocks/fixtures` alias instead of the relative path, leaving the
other imports unchanged.

Source: Coding guidelines

internal/cli/automation_test.go (1)

180-244: 🎯 Functional Correctness | 🔵 Trivial | ⚡ Quick win

Add coverage for the Network-flags-only validation branch.

automationLoopTargetOptionsPresent (internal/cli/automation_loop_target_flags.go) also treats Network participation flags as "Loop target options," so passing --network/--network-channel* without --loop (or combined with --agent) should trigger validation errors. This branch isn't covered by the current table.

✅ Suggested additional table case
 		{
 			name: "Should require a Loop workspace for global automation",
 			args: []string{"--loop", "release"},
 			want: "--loop-workspace is required for a global Loop target",
 		},
+		{
+			name: "Should require --loop when only Network flags are set",
+			args: []string{"--network", "live"},
+			want: "--loop is required when Loop target flags are set",
+		},
 	}
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@internal/cli/automation_test.go` around lines 180 - 244, Add invalidJobs
coverage for Network participation flags handled by
automationLoopTargetOptionsPresent: include a case using --network and/or
--network-channel* without --loop, asserting the Loop-required validation error,
and a case combining those flags with --agent, asserting the agent/loop
exclusivity error. Keep the existing assertion that createAutomationJob is not
called.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@internal/api/core/prompt_stream_test.go`:
- Around line 212-247: The prompt stream tests only cover unresolved tool calls;
add a completed-tool case in the relevant test suite that emits a tool call, its
real tool result, and a done event, then assert the resulting frames contain
exactly one tool-output-available frame for that tool. Keep the assertion
focused on the completed path and terminal output behavior, using the existing
prompt stream helpers and symbols such as NewPromptStreamEncoder and
mustEmitPromptEvent.

In `@internal/cli/loop_support.go`:
- Around line 132-141: Document the Web/Docs Impact analysis for the YAML
validation changes in the loop configuration parsing flow around decoder.Decode.
Check the affected web/ surfaces and packages/site documentation, stating why
they are unchanged or identifying the required updates; do not alter the parsing
behavior.

In `@internal/cli/loop_test.go`:
- Around line 364-365: Update the error validation in the executeRootCommand
test to use the suite’s ErrorContains-style assertion for the “unknown_field”
message. Remove the manual err nil/string containment condition while preserving
the existing rejection expectation and test context.

In `@scripts/gate_test.go`:
- Around line 1-11: Add the repository’s integration-test build tag to
scripts/gate_test.go, using the same tag syntax and placement as other
integration tests. Keep the existing imports and test implementation unchanged
so make verify includes this subprocess-based test when integration tests are
enabled.

---

Outside diff comments:
In `@internal/api/contract/diagnostics_test.go`:
- Around line 40-46: Add Title and Message comparisons to the round-trip
assertion in the diagnostics test, and compare Evidence using deep equality
rather than pointer or shallow comparison. Keep the existing field checks intact
so every populated diagnostic field is validated after unmarshalling.

---

Nitpick comments:
In `@internal/cli/automation_test.go`:
- Around line 180-244: Add invalidJobs coverage for Network participation flags
handled by automationLoopTargetOptionsPresent: include a case using --network
and/or --network-channel* without --loop, asserting the Loop-required validation
error, and a case combining those flags with --agent, asserting the agent/loop
exclusivity error. Keep the existing assertion that createAutomationJob is not
called.

In
`@web/src/systems/network/components/shell/__tests__/network-head-status.test.tsx`:
- Around line 5-10: Update the networkStatusFixture import in
network-head-status.test.tsx to use the configured
`@/systems/network/mocks/fixtures` alias instead of the relative path, leaving the
other imports unchanged.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: ab962418-6888-497c-a988-61589de3ba8c

📥 Commits

Reviewing files that changed from the base of the PR and between 7285bf3 and 125c30d.

⛔ Files ignored due to path filters (447)
  • .agents/skills/cy-create-tasks/SKILL.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/cy-create-tasks/references/task-context-schema.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/cy-create-tasks/references/task-template.md is excluded by !**/*.md, !.agents/**
  • .compozy/config.toml is excluded by !**/*.toml, !.compozy/**
  • DESIGN.md is excluded by !**/*.md
  • docs/qa/bugs/BUG-20260729-doctor-log-tail-evidence.md is excluded by !**/*.md
  • docs/qa/bugs/BUG-20260729-explorer-active-home-schema.md is excluded by !**/*.md
  • docs/qa/bugs/BUG-20260729-heartbeat-status-stale-eligibility.md is excluded by !**/*.md
  • docs/qa/bugs/BUG-20260729-heartbeat-wake-rollback-stale-policy.md is excluded by !**/*.md
  • docs/qa/bugs/BUG-20260729-loop-sidecar-lifecycle.md is excluded by !**/*.md
  • docs/qa/bugs/BUG-20260729-marketplace-file-cursor-fence.md is excluded by !**/*.md
  • docs/qa/bugs/BUG-20260729-marketplace-json-parity.md is excluded by !**/*.md
  • docs/qa/bugs/BUG-20260729-mcp-manual-exchange-timeout.md is excluded by !**/*.md
  • docs/qa/bugs/BUG-20260729-overview-json-parity.md is excluded by !**/*.md
  • docs/qa/bugs/BUG-20260729-provider-model-pricing-roundtrip.md is excluded by !**/*.md
  • docs/qa/bugs/BUG-20260729-provider-model-validation-status.md is excluded by !**/*.md
  • docs/qa/bugs/BUG-20260729-session-attach-openapi-ttl.md is excluded by !**/*.md
  • docs/qa/bugs/BUG-20260730-goal-outbox-config-rejected.md is excluded by !**/*.md
  • docs/qa/bugs/BUG-20260730-idle-interrupt-false-success.md is excluded by !**/*.md
  • docs/qa/bugs/BUG-20260730-loop-automation-target-cli.md is excluded by !**/*.md
  • docs/qa/bugs/BUG-20260730-loop-config-unknown-fields.md is excluded by !**/*.md
  • docs/qa/bugs/BUG-20260730-memory-reset-wrong-status.md is excluded by !**/*.md
  • docs/qa/bugs/BUG-20260730-network-zero-counters-omitted.md is excluded by !**/*.md
  • docs/qa/bugs/BUG-20260730-repository-config-hardcut.md is excluded by !**/*.md
  • docs/qa/bugs/BUG-20260730-resultless-tool-call-running.md is excluded by !**/*.md
  • docs/qa/bugs/BUG-20260730-runtime-selector-escape-stale.md is excluded by !**/*.md
  • docs/qa/charters/CH-automation-manual-trigger.md is excluded by !**/*.md
  • docs/qa/charters/CH-nested-skill-groups.md is excluded by !**/*.md
  • docs/qa/charters/CH-provider-settings-model-delta.md is excluded by !**/*.md
  • docs/qa/charters/CH-session-calm-transcript.md is excluded by !**/*.md
  • docs/qa/charters/CH-session-goal-strip.md is excluded by !**/*.md
  • docs/qa/charters/CH-session-permission-dock.md is excluded by !**/*.md
  • docs/qa/charters/CH-site-docs-search-context.md is excluded by !**/*.md
  • docs/qa/reports/2026-07-28-untested-full.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-001.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-012.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-013.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-016.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-017.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-019.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-046.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-050.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-api-marketplace-namespace.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-api-mcp-catalog-install.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-api-mcp-oauth-endpoints.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-cli-extension-sideload-policy-block.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-cli-marketplace-info.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-cli-marketplace-search.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-cli-mcp-auth-manual-exchange.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-cli-mcp-authorize.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-cli-mcp-install.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-cli-tool-invoke-structural-handles.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-compozy-extension-contract-identity.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-compozy-public-brand-navigation.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-ext-curated-digest-verify.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-extension-dev-reload-loop.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-extension-passive-update-discovery.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-layout-editor-drag-rebalance.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-layout-editor-gaps-follow-canvas.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-layout-editor-group-overlap-refused.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-layout-editor-load-saved-layout.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-layout-editor-shortcut-recorder.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-layout-editor-split-orientation.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-layout-editor-split-weights.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-marketplace-kill-switch.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-model-source-five-rate-pricing.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-native-tool-approval-grants.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-native-workspace-scope-isolation.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-nested-skill-groups.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-site-docs-search-context.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-skill-activation-gates.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-tool-result-artifact-recovery.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-web-agent-detail-tab-parity.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-web-bundle-activation-detail.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-web-bundle-preview-activate.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-web-catalog-navigation.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-web-command-palette-shortcuts.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-web-desktop-shell-lifecycle.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-web-dock-default-window-size.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-web-dock-magnification.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-web-ext-policy-block.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-web-extension-detail.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-web-extensions-manage.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-web-inter-opsz-medium-510.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-web-jobs-triggers-catalog.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-web-loop-editor-node-truncate.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-web-loop-editor-sidebar-tabs.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-web-loop-editor-topbar.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-web-marketplace-installed-management.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-web-marketplace-kind-navigation.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-web-marketplace-mcp-authorize-installed.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-web-marketplace-remove-scope-return.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-web-mcp-authorize-manual.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-web-mcp-authorize.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-web-mcp-guided-install.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-web-mcp-remote-editor.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-web-mcp-status-matrix.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-web-menubar-menu-set.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-web-page-content-gutter.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-web-route-chrome-topbar.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-web-runtime-selector-minimal-slider.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-web-session-cross-workspace-confirm.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-web-session-deep-link-isolation.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-web-session-goal-strip.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-web-session-inspector-toggle.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-web-session-permission-dock.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-web-session-thread-full-bleed.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-web-session-transcript-calm-grammar.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-web-sessions-catalog-modal.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-web-settings-extensions-policy.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-web-settings-hooks.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-web-tasks-mode-url.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-web-ui-resilience.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-web-vault-opendesign-listing.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-web-vault-overwrite-confirmation.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-web-window-routing-lifecycle.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-window-manager-drop-swap.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-window-manager-hooks-resources.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-window-manager-layout-gestures.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-window-manager-layout-recovery.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-window-manager-multi-client.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-window-manager-public-parity.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-workspace-access-mode-matrix.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-workspace-access-prompt-outcomes.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-workspace-host-api-mcp.md is excluded by !**/*.md
  • docs/qa/scenarios/GL-001.md is excluded by !**/*.md
  • docs/qa/scenarios/GL-003.md is excluded by !**/*.md
  • docs/qa/scenarios/GL-005.md is excluded by !**/*.md
  • docs/qa/scenarios/GL-006.md is excluded by !**/*.md
  • docs/qa/scenarios/GL-008.md is excluded by !**/*.md
  • docs/qa/scenarios/GL-019.md is excluded by !**/*.md
  • docs/qa/scenarios/GL-028.md is excluded by !**/*.md
  • docs/qa/scenarios/GL-036.md is excluded by !**/*.md
  • docs/qa/scenarios/GL-judge-session-contract.md is excluded by !**/*.md
  • docs/qa/scenarios/GL-use-response-as-goal.md is excluded by !**/*.md
  • docs/qa/scenarios/LP-001.md is excluded by !**/*.md
  • docs/qa/scenarios/LP-002.md is excluded by !**/*.md
  • docs/qa/scenarios/LP-003.md is excluded by !**/*.md
  • docs/qa/scenarios/LP-005.md is excluded by !**/*.md
  • docs/qa/scenarios/LP-006.md is excluded by !**/*.md
  • docs/qa/scenarios/LP-008.md is excluded by !**/*.md
  • docs/qa/scenarios/LP-009.md is excluded by !**/*.md
  • docs/qa/scenarios/LP-014.md is excluded by !**/*.md
  • docs/qa/scenarios/LP-016.md is excluded by !**/*.md
  • docs/qa/scenarios/LP-017.md is excluded by !**/*.md
  • docs/qa/scenarios/LP-018.md is excluded by !**/*.md
  • docs/qa/scenarios/LP-019.md is excluded by !**/*.md
  • docs/qa/scenarios/LP-020.md is excluded by !**/*.md
  • docs/qa/scenarios/LP-021.md is excluded by !**/*.md
  • docs/qa/scenarios/LP-022.md is excluded by !**/*.md
  • docs/qa/scenarios/LP-023.md is excluded by !**/*.md
  • docs/qa/scenarios/LP-024.md is excluded by !**/*.md
  • docs/qa/scenarios/LP-025.md is excluded by !**/*.md
  • docs/qa/scenarios/LP-026.md is excluded by !**/*.md
  • docs/qa/scenarios/LP-027.md is excluded by !**/*.md
  • docs/qa/scenarios/LP-028.md is excluded by !**/*.md
  • docs/qa/scenarios/LP-029.md is excluded by !**/*.md
  • docs/qa/scenarios/LP-030.md is excluded by !**/*.md
  • docs/qa/scenarios/LP-033.md is excluded by !**/*.md
  • docs/qa/scenarios/LP-034.md is excluded by !**/*.md
  • docs/qa/scenarios/LP-035.md is excluded by !**/*.md
  • docs/qa/scenarios/LP-036.md is excluded by !**/*.md
  • docs/qa/scenarios/LP-040.md is excluded by !**/*.md
  • docs/qa/scenarios/LP-041.md is excluded by !**/*.md
  • docs/qa/scenarios/LP-042.md is excluded by !**/*.md
  • docs/qa/scenarios/LP-043.md is excluded by !**/*.md
  • docs/qa/scenarios/LP-044.md is excluded by !**/*.md
  • docs/qa/scenarios/LP-045.md is excluded by !**/*.md
  • docs/qa/scenarios/LP-046.md is excluded by !**/*.md
  • docs/qa/scenarios/LP-047.md is excluded by !**/*.md
  • docs/qa/scenarios/LP-048.md is excluded by !**/*.md
  • docs/qa/scenarios/LP-049.md is excluded by !**/*.md
  • docs/qa/scenarios/LP-050.md is excluded by !**/*.md
  • docs/qa/scenarios/LP-action-failure-detail.md is excluded by !**/*.md
  • docs/qa/scenarios/LP-delete-custom-loop.md is excluded by !**/*.md
  • docs/qa/scenarios/LP-run-detail-story-redesign.md is excluded by !**/*.md
  • docs/qa/scenarios/LP-task-rollup-wakes-loop.md is excluded by !**/*.md
  • docs/qa/scenarios/LP-toggle-loop-goal.md is excluded by !**/*.md
  • docs/qa/scenarios/LP-web-loop-configure-modal.md is excluded by !**/*.md
  • docs/qa/scenarios/MS-001.md is excluded by !**/*.md
  • docs/qa/scenarios/MS-006.md is excluded by !**/*.md
  • docs/qa/scenarios/MS-008.md is excluded by !**/*.md
  • docs/qa/scenarios/MS-009.md is excluded by !**/*.md
  • docs/qa/scenarios/MS-011.md is excluded by !**/*.md
  • docs/qa/scenarios/MS-015.md is excluded by !**/*.md
  • docs/qa/scenarios/MS-016.md is excluded by !**/*.md
  • docs/qa/scenarios/MS-025.md is excluded by !**/*.md
  • docs/qa/scenarios/MS-027.md is excluded by !**/*.md
  • docs/qa/scenarios/MS-028.md is excluded by !**/*.md
  • docs/qa/scenarios/MS-029.md is excluded by !**/*.md
  • docs/qa/scenarios/MS-030.md is excluded by !**/*.md
  • docs/qa/scenarios/MS-035.md is excluded by !**/*.md
  • docs/qa/scenarios/MS-036.md is excluded by !**/*.md
  • docs/qa/scenarios/MS-037.md is excluded by !**/*.md
  • docs/qa/scenarios/MS-038.md is excluded by !**/*.md
  • docs/qa/scenarios/MS-040.md is excluded by !**/*.md
  • docs/qa/scenarios/MS-041.md is excluded by !**/*.md
  • docs/qa/scenarios/MS-049.md is excluded by !**/*.md
  • docs/qa/scenarios/MS-056.md is excluded by !**/*.md
  • docs/qa/scenarios/MS-058.md is excluded by !**/*.md
  • docs/qa/scenarios/MS-059.md is excluded by !**/*.md
  • docs/qa/scenarios/MS-atomic-memory-batch.md is excluded by !**/*.md
  • docs/qa/scenarios/MS-background-role-fallback.md is excluded by !**/*.md
  • docs/qa/scenarios/MS-background-role-routing.md is excluded by !**/*.md
  • docs/qa/scenarios/MS-configure-window-manager.md is excluded by !**/*.md
  • docs/qa/scenarios/MS-daemon-memory-reporting.md is excluded by !**/*.md
  • docs/qa/scenarios/MS-layout-editor-clear-selection.md is excluded by !**/*.md
  • docs/qa/scenarios/MS-layout-profile-cli-roundtrip.md is excluded by !**/*.md
  • docs/qa/scenarios/MS-marketplace-catalog-live-config.md is excluded by !**/*.md
  • docs/qa/scenarios/MS-provider-detail-modal.md is excluded by !**/*.md
  • docs/qa/scenarios/MS-provider-settings-model-delta-roundtrip.md is excluded by !**/*.md
  • docs/qa/scenarios/MS-settings-roles-panel.md is excluded by !**/*.md
  • docs/qa/scenarios/MS-web-bridge-create-secret-slots.md is excluded by !**/*.md
  • docs/qa/scenarios/MS-web-bridge-edit-delivery-fold.md is excluded by !**/*.md
  • docs/qa/scenarios/MS-web-entity-modal-shell.md is excluded by !**/*.md
  • docs/qa/scenarios/MS-web-knowledge-edit-immutable-identity.md is excluded by !**/*.md
  • docs/qa/scenarios/MS-web-mcp-editor-simple-advanced.md is excluded by !**/*.md
  • docs/qa/scenarios/MS-web-modal-help-tips.md is excluded by !**/*.md
  • docs/qa/scenarios/MS-web-provider-auth-gate.md is excluded by !**/*.md
  • docs/qa/scenarios/MS-web-sandbox-profile-advanced.md is excluded by !**/*.md
  • docs/qa/scenarios/MS-web-session-simple-advanced-launch.md is excluded by !**/*.md
  • docs/qa/scenarios/MS-web-settings-providers-redesign.md is excluded by !**/*.md
  • docs/qa/scenarios/MS-web-settings-takeover-redesign.md is excluded by !**/*.md
  • docs/qa/scenarios/MS-web-task-editor-window-modal.md is excluded by !**/*.md
  • docs/qa/scenarios/MS-web-workspace-add-directory-browser.md is excluded by !**/*.md
  • docs/qa/scenarios/MS-workspace-checkpoint-continuity.md is excluded by !**/*.md
  • docs/qa/scenarios/MS-workspace-resolution-provenance.md is excluded by !**/*.md
  • docs/qa/scenarios/NB-001.md is excluded by !**/*.md
  • docs/qa/scenarios/NB-002.md is excluded by !**/*.md
  • docs/qa/scenarios/NB-003.md is excluded by !**/*.md
  • docs/qa/scenarios/NB-004.md is excluded by !**/*.md
  • docs/qa/scenarios/NB-005.md is excluded by !**/*.md
  • docs/qa/scenarios/NB-006.md is excluded by !**/*.md
  • docs/qa/scenarios/NB-007.md is excluded by !**/*.md
  • docs/qa/scenarios/NB-008.md is excluded by !**/*.md
  • docs/qa/scenarios/NB-009.md is excluded by !**/*.md
  • docs/qa/scenarios/NB-010.md is excluded by !**/*.md
  • docs/qa/scenarios/NB-011.md is excluded by !**/*.md
  • docs/qa/scenarios/NB-012.md is excluded by !**/*.md
  • docs/qa/scenarios/NB-013.md is excluded by !**/*.md
  • docs/qa/scenarios/NB-014.md is excluded by !**/*.md
  • docs/qa/scenarios/NB-015.md is excluded by !**/*.md
  • docs/qa/scenarios/NB-016.md is excluded by !**/*.md
  • docs/qa/scenarios/NB-017.md is excluded by !**/*.md
  • docs/qa/scenarios/NB-019.md is excluded by !**/*.md
  • docs/qa/scenarios/NB-020.md is excluded by !**/*.md
  • docs/qa/scenarios/NB-027.md is excluded by !**/*.md
  • docs/qa/scenarios/NB-031.md is excluded by !**/*.md
  • docs/qa/scenarios/NB-032.md is excluded by !**/*.md
  • docs/qa/scenarios/NB-037.md is excluded by !**/*.md
  • docs/qa/scenarios/NB-039.md is excluded by !**/*.md
  • docs/qa/scenarios/NB-045.md is excluded by !**/*.md
  • docs/qa/scenarios/NB-047.md is excluded by !**/*.md
  • docs/qa/scenarios/NB-agent-manages-participation.md is excluded by !**/*.md
  • docs/qa/scenarios/NB-bridge-edit-reply.md is excluded by !**/*.md
  • docs/qa/scenarios/NB-bridge-overload-recovery.md is excluded by !**/*.md
  • docs/qa/scenarios/NB-bridge-provider-setup.md is excluded by !**/*.md
  • docs/qa/scenarios/NB-bridge-restart-recovery.md is excluded by !**/*.md
  • docs/qa/scenarios/NB-bridge-tool-progress.md is excluded by !**/*.md
  • docs/qa/scenarios/NB-coordination-invitation-future-runs.md is excluded by !**/*.md
  • docs/qa/scenarios/NB-indeterminate-bridge-delivery.md is excluded by !**/*.md
  • docs/qa/scenarios/NB-long-bridge-replies.md is excluded by !**/*.md
  • docs/qa/scenarios/NB-network-availability-toggle.md is excluded by !**/*.md
  • docs/qa/scenarios/NB-network-empties-onboarding-settings.md is excluded by !**/*.md
  • docs/qa/scenarios/NB-network-live-config-lifecycle.md is excluded by !**/*.md
  • docs/qa/scenarios/NB-participation-controls-serialize.md is excluded by !**/*.md
  • docs/qa/scenarios/NB-provider-progress-rendering.md is excluded by !**/*.md
  • docs/qa/scenarios/NB-run-bounded-live-collaboration.md is excluded by !**/*.md
  • docs/qa/scenarios/NB-run-conversation-bounds-usage.md is excluded by !**/*.md
  • docs/qa/scenarios/NB-web-bridge-setup.md is excluded by !**/*.md
  • docs/qa/scenarios/NB-web-channel-fanout-policy.md is excluded by !**/*.md
  • docs/qa/scenarios/NB-web-network-head-trail.md is excluded by !**/*.md
  • docs/qa/scenarios/REL-beta-channel-contract.md is excluded by !**/*.md
  • docs/qa/scenarios/REL-beta-installer-provenance.md is excluded by !**/*.md
  • docs/qa/scenarios/REL-beta-self-update.md is excluded by !**/*.md
  • docs/qa/scenarios/REL-release-candidate-plan.md is excluded by !**/*.md
  • docs/qa/scenarios/REL-stable-changelog-hard-cut.md is excluded by !**/*.md
  • docs/qa/scenarios/RT-002.md is excluded by !**/*.md
  • docs/qa/scenarios/RT-004.md is excluded by !**/*.md
  • docs/qa/scenarios/RT-008.md is excluded by !**/*.md
  • docs/qa/scenarios/RT-010.md is excluded by !**/*.md
  • docs/qa/scenarios/RT-013.md is excluded by !**/*.md
  • docs/qa/scenarios/RT-015.md is excluded by !**/*.md
  • docs/qa/scenarios/RT-017.md is excluded by !**/*.md
  • docs/qa/scenarios/RT-018.md is excluded by !**/*.md
  • docs/qa/scenarios/RT-019.md is excluded by !**/*.md
  • docs/qa/scenarios/RT-021.md is excluded by !**/*.md
  • docs/qa/scenarios/RT-028.md is excluded by !**/*.md
  • docs/qa/scenarios/RT-030.md is excluded by !**/*.md
  • docs/qa/scenarios/RT-032.md is excluded by !**/*.md
  • docs/qa/scenarios/RT-037.md is excluded by !**/*.md
  • docs/qa/scenarios/RT-039.md is excluded by !**/*.md
  • docs/qa/scenarios/RT-041.md is excluded by !**/*.md
  • docs/qa/scenarios/RT-043.md is excluded by !**/*.md
  • docs/qa/scenarios/RT-044.md is excluded by !**/*.md
  • docs/qa/scenarios/RT-045.md is excluded by !**/*.md
  • docs/qa/scenarios/RT-046.md is excluded by !**/*.md
  • docs/qa/scenarios/RT-047.md is excluded by !**/*.md
  • docs/qa/scenarios/RT-048.md is excluded by !**/*.md
  • docs/qa/scenarios/RT-051.md is excluded by !**/*.md
  • docs/qa/scenarios/RT-052.md is excluded by !**/*.md
  • docs/qa/scenarios/RT-055.md is excluded by !**/*.md
  • docs/qa/scenarios/RT-056.md is excluded by !**/*.md
  • docs/qa/scenarios/RT-058.md is excluded by !**/*.md
  • docs/qa/scenarios/RT-059.md is excluded by !**/*.md
  • docs/qa/scenarios/RT-061.md is excluded by !**/*.md
  • docs/qa/scenarios/RT-063.md is excluded by !**/*.md
  • docs/qa/scenarios/RT-064.md is excluded by !**/*.md
  • docs/qa/scenarios/RT-066.md is excluded by !**/*.md
  • docs/qa/scenarios/RT-067.md is excluded by !**/*.md
  • docs/qa/scenarios/RT-068.md is excluded by !**/*.md
  • docs/qa/scenarios/RT-069.md is excluded by !**/*.md
  • docs/qa/scenarios/RT-071.md is excluded by !**/*.md
  • docs/qa/scenarios/RT-072.md is excluded by !**/*.md
  • docs/qa/scenarios/RT-074.md is excluded by !**/*.md
  • docs/qa/scenarios/RT-075.md is excluded by !**/*.md
  • docs/qa/scenarios/RT-077.md is excluded by !**/*.md
  • docs/qa/scenarios/RT-078.md is excluded by !**/*.md
  • docs/qa/scenarios/RT-079.md is excluded by !**/*.md
  • docs/qa/scenarios/RT-080.md is excluded by !**/*.md
  • docs/qa/scenarios/RT-083.md is excluded by !**/*.md
  • docs/qa/scenarios/RT-agent-detail-runtime-live-edit.md is excluded by !**/*.md
  • docs/qa/scenarios/RT-compozy-global-database.md is excluded by !**/*.md
  • docs/qa/scenarios/RT-cursor-agent-mode.md is excluded by !**/*.md
  • docs/qa/scenarios/RT-daemon-drain-admission.md is excluded by !**/*.md
  • docs/qa/scenarios/RT-desktop-pager-overview.md is excluded by !**/*.md
  • docs/qa/scenarios/RT-dev-bootstrap-ready.md is excluded by !**/*.md
  • docs/qa/scenarios/RT-home-approve-from-dashboard.md is excluded by !**/*.md
  • docs/qa/scenarios/RT-mcp-dead-recovery.md is excluded by !**/*.md
  • docs/qa/scenarios/RT-migrate-memory-stream-when-disabled.md is excluded by !**/*.md
  • docs/qa/scenarios/RT-new-session-fast-feedback.md is excluded by !**/*.md
  • docs/qa/scenarios/RT-observe-overview-cli.md is excluded by !**/*.md
  • docs/qa/scenarios/RT-onboarding-setup-panel-over-shell.md is excluded by !**/*.md
  • docs/qa/scenarios/RT-preserve-corrupt-database-family.md is excluded by !**/*.md
  • docs/qa/scenarios/RT-pressure-context-compaction.md is excluded by !**/*.md
  • docs/qa/scenarios/RT-refuse-ahead-database.md is excluded by !**/*.md
  • docs/qa/scenarios/RT-refuse-cross-stream-legacy-marker.md is excluded by !**/*.md
  • docs/qa/scenarios/RT-refuse-legacy-cli-open.md is excluded by !**/*.md
  • docs/qa/scenarios/RT-refuse-legacy-database.md is excluded by !**/*.md
  • docs/qa/scenarios/RT-refuse-legacy-session-database.md is excluded by !**/*.md
  • docs/qa/scenarios/RT-reserved-builtin-agent-names.md is excluded by !**/*.md
  • docs/qa/scenarios/RT-secret-redaction-boundary.md is excluded by !**/*.md
  • docs/qa/scenarios/RT-session-clarification-roundtrip.md is excluded by !**/*.md
  • docs/qa/scenarios/RT-session-context-rebuild.md is excluded by !**/*.md
  • docs/qa/scenarios/RT-session-cost-provenance.md is excluded by !**/*.md
  • docs/qa/scenarios/RT-session-cwd-resume.md is excluded by !**/*.md
  • docs/qa/scenarios/RT-session-delete-owned-history.md is excluded by !**/*.md
  • docs/qa/scenarios/RT-session-lifecycle-affordances.md is excluded by !**/*.md
  • docs/qa/scenarios/RT-subprocess-health-escalation.md is excluded by !**/*.md
  • docs/qa/scenarios/RT-workspace-active-session-badge.md is excluded by !**/*.md
  • docs/qa/scenarios/SITE-changelog-release-receipts.md is excluded by !**/*.md
  • docs/qa/scenarios/SITE-resource-mutation-boundary.md is excluded by !**/*.md
  • docs/qa/scenarios/TA-001.md is excluded by !**/*.md
  • docs/qa/scenarios/TA-002.md is excluded by !**/*.md
  • docs/qa/scenarios/TA-003.md is excluded by !**/*.md
  • docs/qa/scenarios/TA-004.md is excluded by !**/*.md
  • docs/qa/scenarios/TA-017.md is excluded by !**/*.md
  • docs/qa/scenarios/TA-018.md is excluded by !**/*.md
  • docs/qa/scenarios/TA-019.md is excluded by !**/*.md
  • docs/qa/scenarios/TA-022.md is excluded by !**/*.md
  • docs/qa/scenarios/TA-023.md is excluded by !**/*.md
  • docs/qa/scenarios/TA-024.md is excluded by !**/*.md
  • docs/qa/scenarios/TA-027.md is excluded by !**/*.md
  • docs/qa/scenarios/TA-033.md is excluded by !**/*.md
  • docs/qa/scenarios/TA-039.md is excluded by !**/*.md
  • docs/qa/scenarios/TA-040.md is excluded by !**/*.md
  • docs/qa/scenarios/TA-044.md is excluded by !**/*.md
  • docs/qa/scenarios/TA-047.md is excluded by !**/*.md
  • docs/qa/scenarios/TA-050.md is excluded by !**/*.md
  • docs/qa/scenarios/TA-052.md is excluded by !**/*.md
  • docs/qa/scenarios/TA-053.md is excluded by !**/*.md
  • docs/qa/scenarios/TA-054.md is excluded by !**/*.md
  • docs/qa/scenarios/TA-055.md is excluded by !**/*.md
  • docs/qa/scenarios/TA-056.md is excluded by !**/*.md
  • docs/qa/scenarios/TA-061.md is excluded by !**/*.md
  • docs/qa/scenarios/TA-062.md is excluded by !**/*.md
  • docs/qa/scenarios/TA-063.md is excluded by !**/*.md
  • docs/qa/scenarios/TA-064.md is excluded by !**/*.md
  • docs/qa/scenarios/TA-065.md is excluded by !**/*.md
  • docs/qa/scenarios/TA-066.md is excluded by !**/*.md
  • docs/qa/scenarios/TA-068.md is excluded by !**/*.md
  • docs/qa/scenarios/TA-069.md is excluded by !**/*.md
  • docs/qa/scenarios/TA-070.md is excluded by !**/*.md
  • docs/qa/scenarios/TA-071.md is excluded by !**/*.md
  • docs/qa/scenarios/TA-075.md is excluded by !**/*.md
  • docs/qa/scenarios/TA-077.md is excluded by !**/*.md
  • docs/qa/scenarios/TA-078.md is excluded by !**/*.md
  • docs/qa/scenarios/TA-079.md is excluded by !**/*.md
  • docs/qa/scenarios/TA-080.md is excluded by !**/*.md
  • docs/qa/scenarios/TA-081.md is excluded by !**/*.md
  • docs/qa/scenarios/TA-082.md is excluded by !**/*.md
  • docs/qa/scenarios/TA-083.md is excluded by !**/*.md
  • docs/qa/scenarios/TA-084.md is excluded by !**/*.md
  • docs/qa/scenarios/TA-085.md is excluded by !**/*.md
  • docs/qa/scenarios/TA-086.md is excluded by !**/*.md
  • docs/qa/scenarios/TA-087.md is excluded by !**/*.md
  • docs/qa/scenarios/TA-088.md is excluded by !**/*.md
  • docs/qa/scenarios/TA-089.md is excluded by !**/*.md
  • docs/qa/scenarios/TA-090.md is excluded by !**/*.md
  • docs/qa/scenarios/TA-091.md is excluded by !**/*.md
  • docs/qa/scenarios/TA-092.md is excluded by !**/*.md
  • docs/qa/scenarios/TA-093.md is excluded by !**/*.md
  • docs/qa/scenarios/TA-094.md is excluded by !**/*.md
  • docs/qa/scenarios/TA-095.md is excluded by !**/*.md
  • docs/qa/scenarios/TA-096.md is excluded by !**/*.md
  • docs/qa/scenarios/TA-097.md is excluded by !**/*.md
  • docs/qa/scenarios/TA-098.md is excluded by !**/*.md
  • docs/qa/scenarios/TA-099.md is excluded by !**/*.md
  • docs/qa/scenarios/TA-100.md is excluded by !**/*.md
  • docs/qa/scenarios/TA-101.md is excluded by !**/*.md
  • docs/qa/scenarios/TA-102.md is excluded by !**/*.md
  • docs/qa/scenarios/TA-103.md is excluded by !**/*.md
  • docs/qa/scenarios/TA-104.md is excluded by !**/*.md
  • docs/qa/scenarios/TA-105.md is excluded by !**/*.md
  • docs/qa/scenarios/TA-106.md is excluded by !**/*.md
  • docs/qa/scenarios/TA-107.md is excluded by !**/*.md
  • docs/qa/scenarios/TA-action-run-liveness.md is excluded by !**/*.md
  • docs/qa/scenarios/TA-automation-crud-loop-target.md is excluded by !**/*.md
  • docs/qa/scenarios/TA-automation-suggestions.md is excluded by !**/*.md
  • docs/qa/scenarios/TA-daemon-lifecycle-command-guard.md is excluded by !**/*.md
  • docs/qa/scenarios/TA-exact-claim-single-owner.md is excluded by !**/*.md
  • docs/qa/scenarios/TA-lease-recovery-attempt-budget.md is excluded by !**/*.md
  • docs/qa/scenarios/TA-loop-failure-breaker.md is excluded by !**/*.md
  • docs/qa/scenarios/TA-parent-rollup-completion.md is excluded by !**/*.md
  • docs/qa/scenarios/TA-schedule-catchup-overlap.md is excluded by !**/*.md
  • docs/qa/scenarios/TA-task-create-async-activation.md is excluded by !**/*.md
  • docs/qa/scenarios/TA-task-role-session-activation.md is excluded by !**/*.md
  • docs/qa/scenarios/TA-task-run-cost-provenance.md is excluded by !**/*.md
  • docs/qa/scenarios/TA-task-template-preserves-draft.md is excluded by !**/*.md
  • docs/qa/scenarios/TA-task-wake-dedup.md is excluded by !**/*.md
  • docs/qa/scenarios/TA-terminal-run-inspect.md is excluded by !**/*.md
  • docs/qa/scenarios/TA-web-automation-preview-toggle.md is excluded by !**/*.md
  • docs/qa/scenarios/TA-web-task-detail-redesign.md is excluded by !**/*.md
  • docs/qa/scenarios/TA-web-task-run-detail-redesign.md is excluded by !**/*.md
  • docs/qa/scenarios/TA-workspace-run-capacity.md is excluded by !**/*.md
  • extensions/dev-cycle/skills/cy-create-tasks/SKILL.md is excluded by !**/*.md
  • extensions/dev-cycle/skills/cy-create-tasks/references/task-context-schema.md is excluded by !**/*.md
  • extensions/dev-cycle/skills/cy-create-tasks/references/task-template.md is excluded by !**/*.md
  • openapi/compozy.json is excluded by !**/*.json
  • packages/site/content/docs/automation/index.mdx is excluded by !**/*.mdx
  • packages/site/content/docs/automation/jobs.mdx is excluded by !**/*.mdx
  • packages/site/content/docs/automation/triggers.mdx is excluded by !**/*.mdx
  • packages/site/content/docs/cli/automation/jobs/create.mdx is excluded by !**/*.mdx
  • packages/site/content/docs/cli/automation/triggers/create.mdx is excluded by !**/*.mdx
  • sdk/typescript/src/generated/contracts.ts is excluded by !**/generated/**, !**/generated/**
  • skills/compozy/references/capabilities-and-bundles.md is excluded by !**/*.md
  • web/src/generated/compozy-openapi.d.ts is excluded by !**/generated/**, !**/generated/**, !**/*.d.ts
📒 Files selected for processing (74)
  • internal/api/contract/diagnostics_test.go
  • internal/api/contract/network_payloads.go
  • internal/api/core/handlers_observability.go
  • internal/api/core/memory_dream_handlers.go
  • internal/api/core/memory_workspace_test.go
  • internal/api/core/network_status_conversion.go
  • internal/api/core/network_test.go
  • internal/api/core/prompt_stream.go
  • internal/api/core/prompt_stream_blocks.go
  • internal/api/core/prompt_stream_emit.go
  • internal/api/core/prompt_stream_test.go
  • internal/api/spec/registry_memory.go
  • internal/cli/automation.go
  • internal/cli/automation_job_create.go
  • internal/cli/automation_list_commands.go
  • internal/cli/automation_loop_target_flags.go
  • internal/cli/automation_request.go
  • internal/cli/automation_root_command.go
  • internal/cli/automation_test.go
  • internal/cli/automation_trigger_commands.go
  • internal/cli/bundle_output.go
  • internal/cli/config_loops.go
  • internal/cli/config_test.go
  • internal/cli/doc_test.go
  • internal/cli/docpost/docpost_enrichment.go
  • internal/cli/loop.go
  • internal/cli/loop_support.go
  • internal/cli/loop_test.go
  • internal/cli/mcp_auth_test.go
  • internal/cli/memory_test.go
  • internal/cli/network_message_commands.go
  • internal/cli/network_test.go
  • internal/session/manager_busy_input.go
  • internal/session/manager_busy_input_test.go
  • magefiles/deps_lint.go
  • magefiles/deps_lint_test.go
  • packages/site/app/__tests__/global.test.ts
  • packages/site/app/docs/[[...slug]]/page.tsx
  • packages/site/app/global.css
  • packages/site/app/marketplace/bridges/page.tsx
  • packages/site/app/marketplace/bundled/dev-cycle/page.tsx
  • packages/site/app/marketplace/page.tsx
  • packages/site/app/styles/docs-api.css
  • packages/site/app/styles/docs.css
  • packages/site/app/styles/site-graphics.css
  • packages/site/components/docs/page-actions/view-options.tsx
  • packages/site/components/marketplace/marketplace-bridge-grid.tsx
  • packages/site/components/marketplace/marketplace-entry-detail.tsx
  • packages/site/components/marketplace/marketplace-kind-meta.ts
  • packages/site/components/site/sidebar-section-label.tsx
  • packages/site/lib/__tests__/docs-discovery.test.ts
  • packages/site/lib/__tests__/docs-route-metadata.test.ts
  • packages/site/lib/__tests__/marketplace-catalog.test.tsx
  • packages/site/lib/__tests__/public-route-metadata.test.ts
  • packages/site/lib/__tests__/public-search-index.test.ts
  • packages/site/lib/__tests__/section-layouts.test.tsx
  • packages/site/lib/marketplace-bridges.ts
  • packages/site/lib/marketplace-bundled.ts
  • packages/site/lib/marketplace-catalog.ts
  • packages/site/lib/marketplace-copy.ts
  • packages/site/lib/public-search-index.ts
  • packages/site/next.config.mjs
  • packages/ui/src/components/__tests__/popover.test.tsx
  • packages/ui/src/components/custom/catalog-card.tsx
  • packages/ui/src/components/popover.tsx
  • scripts/gate.sh
  • scripts/gate_test.go
  • scripts/sync-design-md.mjs
  • sdk/go/contracts/types_013_gen.go
  • sdk/go/contracts/types_014_gen.go
  • web/src/systems/network/components/shell/__tests__/network-head-status.test.tsx
  • web/src/systems/network/mocks/fixtures.ts
  • web/src/systems/session/components/__tests__/tool-call-card.test.tsx
  • web/src/systems/session/lib/message-parts.ts
💤 Files with no reviewable changes (4)
  • packages/ui/src/components/custom/catalog-card.tsx
  • packages/site/components/marketplace/marketplace-bridge-grid.tsx
  • packages/site/app/tests/global.test.ts
  • packages/site/lib/tests/section-layouts.test.tsx

Comment thread internal/api/core/prompt_stream_test.go
Comment on lines +132 to +141
decoder := yaml.NewDecoder(bytes.NewReader(body))
decoder.KnownFields(true)
if err := decoder.Decode(&cfg); err != nil {
return looppkg.LoopConfig{}, fmt.Errorf("cli: parse loop config file: %w", err)
}
if err := decoder.Decode(&struct{}{}); err == nil {
return looppkg.LoopConfig{}, errors.New("cli: parse loop config file: expected one document")
} else if !errors.Is(err, io.EOF) {
return looppkg.LoopConfig{}, fmt.Errorf("cli: parse loop config file: expected one document: %w", err)
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

📐 Maintainability & Code Quality | 🟠 Major | ⚡ Quick win

Add the required Web/Docs Impact analysis.

This changes the public CLI configuration contract by rejecting unknown fields and multi-document YAML before mutation. Document the checked web/ and packages/site surfaces, including why they are unchanged or the required documentation updates. As per coding guidelines, “Every backend task must include a Web/Docs Impact analysis covering affected web/ surfaces and packages/site documentation.”

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@internal/cli/loop_support.go` around lines 132 - 141, Document the Web/Docs
Impact analysis for the YAML validation changes in the loop configuration
parsing flow around decoder.Decode. Check the affected web/ surfaces and
packages/site documentation, stating why they are unchanged or identifying the
required updates; do not alter the parsing behavior.

Source: Coding guidelines

Comment thread internal/cli/loop_test.go Outdated
Comment thread scripts/gate_integration_test.go
@pedronauck
pedronauck merged commit 262711b into main Jul 30, 2026
15 of 18 checks passed
@pedronauck
pedronauck deleted the qa-untested branch July 30, 2026 14:21

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@internal/api/contract/diagnostics_test.go`:
- Line 5: Update the Evidence comparison in the affected diagnostics test to use
normalized JSON semantics instead of reflect.DeepEqual: marshal both Evidence
values, compare their marshaled representations, and preserve the test’s
existing failure behavior if marshaling fails.

In `@internal/api/core/prompt_stream_test.go`:
- Around line 249-287: Strengthen the completed tool-call test around encoder
behavior in the “Should emit exactly one terminal output for a completed tool
call” case by inspecting the emitted terminal frame payload, not only
promptFrameSignatures. Assert that the tool-output-available frame contains the
expected completed result text, “tests passed,” while preserving the existing
single-terminal-frame and finish-order assertions.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 2fc2f975-6b43-46fc-85e2-e935bc61ca3f

📥 Commits

Reviewing files that changed from the base of the PR and between 125c30d and 89384ef.

📒 Files selected for processing (8)
  • internal/api/contract/diagnostics_test.go
  • internal/api/core/prompt_stream_test.go
  • internal/cli/automation_test.go
  • internal/cli/helpers_test.go
  • internal/cli/loop_support.go
  • internal/cli/loop_test.go
  • scripts/gate_integration_test.go
  • web/src/systems/network/components/shell/__tests__/network-head-status.test.tsx
🚧 Files skipped from review as they are similar to previous changes (3)
  • internal/cli/loop_test.go
  • internal/cli/loop_support.go
  • internal/cli/automation_test.go

@@ -2,6 +2,7 @@ package contract_test

import (
"encoding/json"
"reflect"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🗄️ Data Integrity & Integration | 🟡 Minor | ⚡ Quick win

Compare Evidence using JSON semantics.

json.Unmarshal can convert numbers inside map[string]any to float64 and distinguish empty from nil maps, so reflect.DeepEqual may reject a valid JSON round trip. Marshal both evidence values and compare the normalized JSON instead.

Proposed fix
-	"reflect"
+	"bytes"

+		expectedEvidence, err := json.Marshal(item.Evidence)
+		if err != nil {
+			t.Fatalf("json.Marshal(item.Evidence) error = %v", err)
+		}
+		actualEvidence, err := json.Marshal(decoded.Evidence)
+		if err != nil {
+			t.Fatalf("json.Marshal(decoded.Evidence) error = %v", err)
+		}
+
 		if decoded.ID != item.ID ||
...
-			!reflect.DeepEqual(decoded.Evidence, item.Evidence) {
+			!bytes.Equal(actualEvidence, expectedEvidence) {

Also applies to: 45-50

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@internal/api/contract/diagnostics_test.go` at line 5, Update the Evidence
comparison in the affected diagnostics test to use normalized JSON semantics
instead of reflect.DeepEqual: marshal both Evidence values, compare their
marshaled representations, and preserve the test’s existing failure behavior if
marshaling fails.

Comment on lines +249 to +287
t.Run("Should emit exactly one terminal output for a completed tool call", func(t *testing.T) {
t.Parallel()

writer := &bufferFlusher{}
encoder := core.NewPromptStreamEncoder(func() time.Time {
return time.Date(2026, 7, 30, 9, 1, 0, 0, time.UTC)
})
mustEmitPromptEvent(t, encoder, writer, acp.AgentEvent{
Type: acp.EventTypeToolCall,
TurnID: "turn-completed",
ToolCallID: "tool-completed",
Title: "exec",
Raw: json.RawMessage(`{"tool_input":{"command":"make test"}}`),
})
mustEmitPromptEvent(t, encoder, writer, acp.AgentEvent{
Type: acp.EventTypeToolResult,
TurnID: "turn-completed",
ToolCallID: "tool-completed",
Title: "exec",
Text: "tests passed",
Raw: json.RawMessage(`{"result":{"exit_code":0,"output":"ok"}}`),
})
mustEmitPromptEvent(t, encoder, writer, acp.AgentEvent{
Type: acp.EventTypeDone,
TurnID: "turn-completed",
PromptStopReason: acp.PromptStopReasonEndTurn,
})

terminal := make([]string, 0, 2)
for _, signature := range promptFrameSignatures(t, writer.String()) {
if signature == "finish" || strings.HasPrefix(signature, "tool-output-available:") {
terminal = append(terminal, signature)
}
}
want := []string{"tool-output-available:tool-completed", "finish"}
if !reflect.DeepEqual(terminal, want) {
t.Fatalf("terminal frame signatures = %#v, want %#v", terminal, want)
}
})

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Assert the completed tool result payload.

This test verifies only the terminal frame type and tool ID. Because promptFrameSignatures discards payloads, it would still pass if the completed result were empty or replaced with the unresolved-tool error. Parse the completed frame or assert that its payload contains the expected "tests passed" result.

As per path instructions, Go tests must assert response bodies where applicable and verify behavior outcomes.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@internal/api/core/prompt_stream_test.go` around lines 249 - 287, Strengthen
the completed tool-call test around encoder behavior in the “Should emit exactly
one terminal output for a completed tool call” case by inspecting the emitted
terminal frame payload, not only promptFrameSignatures. Assert that the
tool-output-available frame contains the expected completed result text, “tests
passed,” while preserving the existing single-terminal-frame and finish-order
assertions.

Source: Path instructions

This branch was successfully deployed

1 active deployment
Preview — 89384ef4 Deployed Jul 30, 2026 by vercel[bot]
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