Skip to content

refactor(11/12): update manifests, config, docs, and example projects#329

Open
cameroncooke wants to merge 1 commit intorefactor/cli-daemon-mcp-boundariesfrom
refactor/manifests-config-docs
Open

refactor(11/12): update manifests, config, docs, and example projects#329
cameroncooke wants to merge 1 commit intorefactor/cli-daemon-mcp-boundariesfrom
refactor/manifests-config-docs

Conversation

@cameroncooke
Copy link
Copy Markdown
Collaborator

Summary

This is PR 11 of 12 in a stacked PR series that decouples the rendering pipeline from MCP transport. Depends on PR 10 (boundary rewiring).

Updates all configuration files, YAML manifests, documentation, and example projects to reflect the rendering pipeline refactor. No behavioral code changes -- this is metadata, documentation, and project configuration.

Manifest YAML updates (28 files)

All tool manifests updated to reflect the simplified handler contract. Changes are consistent across all manifests:

  • Removed output format configuration that is now handled by the render session
  • Updated parameter descriptions where they referenced the old rendering model

New resource manifests

Added manifests/resources/ directory with resource manifest definitions that were previously inline.

Configuration

  • package.json + package-lock.json: Dependency updates and script changes
  • knip.json: Dead code analysis configuration for the new module structure
  • vitest.config.ts: Minor updates for new test paths
  • vitest.flowdeck.config.ts + vitest.snapshot.config.ts: New vitest configs for flowdeck integration tests and snapshot tests respectively

Documentation

New developer documentation explaining the rendering pipeline architecture:

  • RENDERING_PIPELINE.md: Architecture overview for contributors
  • RENDERING_PIPELINE_REFACTOR.md: Migration guide and decision log
  • QUERY_TOOL_FORMAT_SPEC.md: Specification for query tool output formatting
  • FIXTURE_DESIGNS.md: Snapshot test fixture design documentation
  • STRUCTURED_XCODEBUILD_EVENTS_PLAN.md: Design document for the xcodebuild event model
  • Updated ARCHITECTURE.md, TESTING.md, MANIFEST_FORMAT.md, TOOL_DISCOVERY_LOGIC.md

Example projects

Minor updates to example projects to work with the updated tool interfaces. Updated test files and project configuration.

Other

  • AGENTS.md: Updated project rules
  • New test infrastructure: test-helpers.ts, vitest-executor-safety.setup.ts
  • Build scripts updated: removed copy-build-assets.js (no longer needed), added benchmark and capture wrapper scripts

Stack navigation

  • PR 1-10/12: All code changes
  • PR 11/12 (this PR): Manifests, config, docs, examples
  • PR 12/12: Snapshot test fixtures and benchmarks

Test plan

  • npx vitest run passes
  • Manifest validation passes for all YAML files
  • Documentation renders correctly in GitHub
  • Example projects build successfully

Copy link
Copy Markdown
Contributor

@cursor cursor bot left a comment

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes and found 2 potential issues.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 55a323e. Configure here.

);
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = io.sentry.MCPTest;
PRODUCT_BUNDLE_IDENTIFIER = io.sentry.calculatorapp;
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.

macOS MCPTest reuses iOS Calculator bundle identifier

Medium Severity

The macOS MCPTest app's PRODUCT_BUNDLE_IDENTIFIER was updated to io.sentry.calculatorapp. This bundle ID is already in use by the iOS Calculator example app. Sharing the same bundle ID across two distinct example apps can lead to issues with app identification, automation, snapshot tests, and Keychain collisions.

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 55a323e. Configure here.

| `build_run_macos.ts` | 242 | ~30-40 lines (launch/bundleid/pid blocks) |
| Step tools (6 files) | ~705 total | ~50-80 lines (delegating to shared primitives) |

Total: ~260-350 lines of duplicated logic consolidated into ~100-150 lines of shared step primitives.
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.

Internal research notes committed to repository

Low Severity

The local-research/ directory contains four internal investigation documents with git commit hashes, WIP notes, TODO-style remaining cleanup items, and developer-specific analysis. These read as personal working notes (e.g., "Investigation Log", "Phase 1 — Identifying the coupling", "Remaining Cleanup (technical debt)") rather than project documentation. The directory is not in .gitignore and isn't referenced by any project docs or the PR description.

Additional Locations (2)
Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 55a323e. Configure here.

@cameroncooke cameroncooke force-pushed the refactor/cli-daemon-mcp-boundaries branch from b91063e to e6d00fe Compare April 8, 2026 21:29
@cameroncooke cameroncooke force-pushed the refactor/manifests-config-docs branch from 55a323e to 22247c9 Compare April 8, 2026 21:29
await mkdir(logDir, { recursive: true });
await createWrapperScript(wrapperDir);

const child = spawn(command[0]!, command.slice(1), {
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Bug: The script crashes if no arguments are provided after -- because it attempts to access command[0] on an empty array, which is undefined.
Severity: MEDIUM

Suggested Fix

Add a check to verify that the command array is not empty before accessing command[0]. If it is empty, print the usage information and exit gracefully instead of attempting to execute the spawn command.

Prompt for AI Agent
Review the code at the location below. A potential bug has been identified by an AI
agent.
Verify if this is a real issue. If it is, propose a fix; if not, explain why it's not
valid.

Location: scripts/capture-xcodebuild-wrapper.ts#L91

Potential issue: When the script is invoked with no arguments following '--' (e.g., `npm
run capture:xcodebuild --`), the `command` array becomes empty. The subsequent call to
`spawn(command[0]!, ...)` at line 91 attempts to access `undefined` because of the
non-null assertion `!`, causing a runtime crash instead of showing the intended usage
message.

Did we get this right? 👍 / 👎 to inform future reviews.


const text = chunk.toString();
stdoutChunks.push(text);
normalizedStdout += normalizeTerminalTranscript(text);
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Bug: Processing streamed output in chunks can merge lines across chunk boundaries, breaking regex matching for benchmark milestones and resulting in incorrect metrics.
Severity: MEDIUM

Suggested Fix

Buffer the incoming data chunks and process the stream line-by-line instead of chunk-by-chunk. This ensures that normalizeTerminalTranscript and any subsequent pattern matching operate on complete lines, preventing milestone markers from being broken apart.

Prompt for AI Agent
Review the code at the location below. A potential bug has been identified by an AI
agent.
Verify if this is a real issue. If it is, propose a fix; if not, explain why it's not
valid.

Location: scripts/benchmark-simulator-test.ts#L140

Potential issue: When processing streamed output, the `normalizeTerminalTranscript`
function is called on each data chunk. This function joins lines without a trailing
newline. If a log line containing a benchmark milestone (e.g., `/🛠️\s*Compiling/`) is
split across two chunks, the last part of the line from the first chunk and the first
part from the next are concatenated. This breaks the pattern matching, leading to
incorrect metrics.

Did we get this right? 👍 / 👎 to inform future reviews.

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