Skip to content

Add click-channel workflow harness for New, Sketch/Pad, and Export - #1

Closed
jkbennitt wants to merge 1 commit into
mainfrom
cursor/workflow-harness-9d23
Closed

jkbennitt wants to merge 1 commit into
mainfrom
cursor/workflow-harness-9d23

Conversation

@jkbennitt

@jkbennitt jkbennitt commented Sep 17, 2026 •

Copy link
Copy Markdown
Member

Adds a CI-safe operator harness that clicks real VibeCAD controls through the existing authenticated loopback channel.

Upstream PR (the one requested): 10-X-eng#242

AppSprout-dev/vibecad main was fast-forwarded to 10-X-eng/vibecad main at 3fb66124 before this branch. No merge commit was required.

What this checks

Three workflows go through POST /v1/ui/click / VibeCADAgentCli ui-click. They do not move the OS cursor.

  1. New document — command VibeCADRibbonNew (Std_New). Asserts a semantically verified click, document count +1, and an active document.
  2. Sketch then pad — New document, ribbon Model, Sketcher_NewSketch, PartDesign_Pad. Asserts the Model tab, then sketch and pad document objects.
  3. Export — New document, command Std_Export. Asserts a semantically verified click with an active document still present.

Invoke-VibeCAD-VisibleTour.ps1 stays the human-watchable demo. This harness is the workflow suite.

Jev

Optional, default off. After a step, one System One request may classify landed (Noul), failure_class (Choice: geometry_bug | wrong_button | model_lied | flake), and progress (Score). Code owns click, timeout, and pass/fail. Low confidence cannot turn a green step red. A live call happens only when both VIBECAD_JEV_JUDGE=1 and TYPESAFE_API_KEY are set. CI mocks or skips. No key is committed.

GitHub Actions runs the fake-channel assertions. A full FreeCAD GUI e2e is not required for CI green.

Test plan

  • PYTHONPATH=src/Mod/VibeCAD python -m pytest -q src/Mod/VibeCAD/vibecad_tests/test_workflow_harness.py
  • PYTHONPATH=src/Mod/VibeCAD python src/Mod/VibeCAD/VibeCADWorkflowHarness.py --fake-channel
  • Existing ribbon/menu click contract tests still pass.

Compatibility

  • Existing public functions/APIs still present and behaviorally compatible.
  • No preference keys, tool names, or schema fields renamed/removed without approval.
  • Defaults preserve previous behavior for users who do not opt into new features.
  • Deprecations (if any) are documented and dual-path supported.
  • Breaking changes are listed with owner approval reference.

/v1/ui/click still accepts kind=ribbon|menu. kind=command is additive.

Issues

None linked.

This work was assisted by Cursor Grok 4.6. I take responsibility for the change.

  • This PR is not unverified AI output, I take responsibility for it, and all communication from my side in this PR is done by me personally.
Open in Web Open in Cursor 

Drive three operator workflows through the existing /v1/ui/click channel,
keep VisibleTour as the demo, and leave optional Jev classification off
by default so CI stays green without a TypeSafe key.

Assisted-by: Cursor Grok 4.6

Co-authored-by: Jason <[email protected]>
@jkbennitt

Copy link
Copy Markdown
Member Author

Closing this one. The harness continued on #2.

@jkbennitt jkbennitt closed this Sep 18, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants