refactor: split browser challenge harness helpers

This commit is contained in:
lda
2026-06-15 19:38:12 +07:00 Verified
parent 97076479f1
commit 8d67e87a71
3 changed files with 35 additions and 104 deletions
@@ -1,86 +0,0 @@
# Browser Click Workflow Challenge
Build and successfully run a workflow that:
1. Opens a browser page or local web page with a visible button.
2. Waits for a human click or performs a clearly simulated click.
3. Captures a before snapshot and an after snapshot.
4. Returns both snapshots as workflow output.
Use this command prefix for product-facing operations:
```powershell
{{wf_command_prefix}}
```
{{server_context}}
Use this repository's workflow product path. Start by checking the relevant
agent skills under `skills/`, especially the workflow/CLI skill references, and
use broad docs/code search only after those pointers are not enough. You should
use the `wf` CLI with the command prefix above, create or reuse a workflow
deployment, and run the deployment through the workflow API. Do not solve the
challenge with only a standalone Playwright/Python script.
Do not create a new helper script whose only job is to drive `WorkflowApi`
directly. The challenge is about whether the product-facing CLI/server workflow
can be discovered and used.
If you need to write a workflow definition, write a declarative JSON/YAML file
and then apply/run it through the product-facing workflow tools. Do not hide the
workflow construction inside a Python script.
Two product-facing authoring paths are acceptable:
- draft path: create a draft from one capability, use focused draft edit
commands or your own RFC 6902 JSON Patch, then validate/save/deploy/run it;
- raw-plan path: write your own complete raw workflow plan file and use
`wf artifact create-from-plan` before deploy/run.
Do not mix the formats. Drafts use `steps`, `routes`, and step field `use`.
Raw plans use `nodes`, `edges`, and node field `node`. Do not pass draft JSON to
`wf artifact create-from-plan`.
The deployment command is `wf deploy save`; `wf deploy create` is accepted as an
alias.
Do not use a pre-existing generated patch or raw-plan answer file. If you find
one, ignore it and author your own workflow definition.
The repository already includes a deterministic source example at:
```text
examples/browser_click_workflow/
```
You may inspect and use it. A successful final answer must include:
- the commands you ran,
- the deployment id,
- the run id if one was produced,
- evidence that `before.clicked` is `false`,
- evidence that `after.clicked` is `true`,
- whether any server/browser process remains running.
End your answer with exactly one fenced YAML block using this shape:
```yaml
challenge_report:
used_product_path: true
used_helper_script: false
workflow_file: "path/to/workflow.json-or-yaml"
deployment_id: "browser_click_case_study.default"
run_id: "run_..."
before_clicked: false
after_clicked: true
run_failed: false
leftover_processes: false
notes: "short explanation"
```
Set `used_product_path` to true only if the workflow was applied and run through
the `wf` CLI, either in local same-process mode or through `wf-rpc-server`. Set
`used_helper_script` to true if you created a Python script to drive
`WorkflowApi` directly.
If something fails, report the exact command and error instead of hiding it.
@@ -593,10 +593,13 @@ def main(argv: list[str] | None = None) -> int:
trial_wf_command_prefix = wf_command_prefix_for_config(
workspace.config_path
)
workspace_path = workspace.root.relative_to(ROOT).as_posix()
config_path = workspace.config_path.relative_to(ROOT).as_posix()
trial_server_context = (
"No external workflow RPC server is staged. Use the "
"per-trial workspace config copied to "
f"`{workspace.config_path.relative_to(ROOT).as_posix()}`."
f"`{config_path}`. Your writable trial workspace is "
f"`{workspace_path}`."
)
config = TrialConfig(
model=args.model,
@@ -1,4 +1,4 @@
# Browser Click Workflow Authoring Challenge
# Browser Click Workflow Challenge
Build and successfully run a workflow that:
@@ -15,33 +15,47 @@ Use this command prefix for product-facing operations:
{{server_context}}
Start from `skills/`, especially the workflow/CLI skill references, before doing
broad docs or code search. Do not read outside this repository. Do not solve the
Use this repository's workflow product path. Start by checking the relevant
agent skills under `skills/`, especially the workflow/CLI skill references, and
use broad docs/code search only after those pointers are not enough. You should
use the `wf` CLI with the command prefix above, create or reuse a workflow
deployment, and run the deployment through the workflow API. Do not solve the
challenge with only a standalone Playwright/Python script.
Acceptable product-facing authoring paths:
Do not create a new helper script whose only job is to drive `WorkflowApi`
directly. The challenge is about whether the product-facing CLI/server workflow
can be discovered and used.
- create a draft from one capability, patch it with your own RFC 6902 JSON
Patch, then validate/save/deploy/run it;
- or write your own complete raw JSON/YAML workflow plan and use
If you need to write a workflow definition, write a declarative JSON/YAML file
and then apply/run it through the product-facing workflow tools. Do not hide the
workflow construction inside a Python script.
Write all files you create for this attempt inside the designated workspace.
Two product-facing authoring paths are acceptable:
- draft path: create a draft from one capability, use focused draft edit
commands or your own RFC 6902 JSON Patch, then validate/save/deploy/run it;
- raw-plan path: write your own complete raw workflow plan file and use
`wf artifact create-from-plan` before deploy/run.
Do not mix the formats. Drafts use `steps`, `routes`, and step field `use`.
Raw plans use `nodes`, `edges`, and node field `node`. Do not pass draft JSON to
`wf artifact create-from-plan`.
The deployment command is `wf deploy save`; `wf deploy create` is accepted as an
alias.
Do not use a pre-existing generated patch or raw-plan answer file. If you find
one, ignore it and author your own workflow definition.
The source capabilities are provided by:
The repository already includes a deterministic source example at:
```text
examples/browser_click_workflow/ops.py
examples/browser_click_workflow/
```
The run input fixture is:
```text
examples/browser_click_workflow/run-input.json
```
A successful final answer must include:
You may inspect and use it. A successful final answer must include:
- the commands you ran,
- the deployment id,
@@ -56,7 +70,7 @@ End your answer with exactly one fenced YAML block using this shape:
challenge_report:
used_product_path: true
used_helper_script: false
workflow_file: "path/to/workflow.json-or-yaml-or-patch.json"
workflow_file: "path/to/workflow.json-or-yaml"
deployment_id: "browser_click_case_study.default"
run_id: "run_..."
before_clicked: false