Repository navigation
batch: benchmark, scoreboard and README (#1340 #1352 #1380 #1365 #1338) — after #1384 - #1385
Merged
Merged
Conversation
The transcript is scrubbed with openadapt-privacy before it is stored, and recording refuses before the microphone opens when no scrubber is installed. Scrubbed sentences go to narration.json on the recording clock; per-word text is no longer stored. capture transcribe scrubs too. Synthetic WAV fixture. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…certify them A sentence lined up near a branch point (an optional step or a two-path divergence) is parsed into a guard on a recorded field or a screen element. It certifies only when every recording agrees or a person accepts it; a contradicting recording keeps the point refused. Certified guards carry their sentence in Workflow.guard_sources. Narration sidecar, alignment, attach, and capture-adapter carry-over. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…tion CLI induce --probe-on also replays the narrated reading where narration proposed a guard nobody contradicted; it certifies when that reading produces every recorded effect and dropping the step does not. induce --accept-narrated LOCATION --accepted-by NAME, --narration-model (opt-in, own key). New narration attach/show command. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ion in teach-branch visualize (HTML, Mermaid, JSON) shows each guard with the sentence that suggested it and what certified it; non-local profiles drop the sentence. teach-branch uses a narrated sentence to pick the narrowing parameter only when every example and normal run agrees. repair show lists the sentences. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- check a param guard against the recordings with the runtime's exact compare - leave a divergence refused when another step sits inside it, and insert branches at the same position in column order - pin acceptances and probe results to the guard id (LOCATION@GUARD_ID) - accept only a JSON boolean from the model, and screen text the person said - parser: stop at 'otherwise', flip 'it's not X', read 'isn't needed' as skip, drop double negatives and unplaced negations - skip a malformed narration.json instead of failing - link the capability row to #1291 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
When the browser sees the server answer a save request (POST, PUT, PATCH, DELETE), the replayer keeps the answer on the save step (StepResult.server_responses) and the receipt counts it (server_responses: observed, 2xx, check_level same_screen). Kept: method, status, a digest of the endpoint (no query string), a digest and size of the body, the media type. Never a body, URL, header or value. The answer comes from the same transaction as the save, so on its own it never confirms an effect and never makes a run VERIFIED; the configured verifier still decides. Results and receipts without answers keep their exact bytes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Keep only method, status and media type: no endpoint or body digests (a digest of a short path or body can be guessed). - Never read a response body, so a streaming answer can't hold up a run. - Count only the page's own fetch, XHR and form writes to its origin, sent after the save began; never beacons, other origins, requests already in flight, or service-worker answers. - "Not an error" is a status below 400: a form save often redirects. - Keep up to 64 answers per step. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ventory Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
# Conflicts: # packages/flow/docs/VERIFICATION.md # packages/flow/docs/verification.json # packages/flow/openadapt_flow/receipt.py # packages/flow/public-artifacts.json
# Conflicts: # CAPABILITIES.md # packages/capture/README.md # packages/flow/openadapt_flow/ir.py
# Conflicts: # packages/flow/docs/VERIFICATION.md # packages/flow/docs/verification.json # packages/flow/public-artifacts.json
# Conflicts: # CAPABILITIES.md
Regenerate the public artifact inventory for the changed visualize files, apply ruff format, and fix three mypy errors. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The page gets no request/response listeners until a save step marks the log (nothing earlier is kept anyway), so a page that never saves keeps the exact listener set it had, and the mask-tracking teardown check holds. close() removes the listeners. Masking is unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
openadapt-agent serve --teach VERIFY_YAML adds teach_start, teach_observe, teach_act, teach_screen, teach_finish, teach_abort, teach_status, teach_confirm_checks and teach_admit. The connected agent is the inner agent of compile-agent's FirstRunCompiler (compile_agent.driven.DrivenRun): run 1 goes through the same harness and save gate, the record check reads the system of record, a person confirms the proposed check in the client's form, and teach_admit admits only as the registered agent the operator configured, under a person-signed policy (self-admission needs allow_self_admission). An admitted program joins list_workflows and run_workflow and gets a taught_<name> tool; the server sends tools/list_changed. FirstRunCompiler takes surface= (a deployment backend section) and uses a new SurfaceHarness off the web: same gating, and a person approves every gated action because the harness can't read which record a form shows. openadapt-flow compile-agent admit TASK_DIR is the person's terminal path. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…9950e' into claude/mcp-teach-compile-a652e8
# Conflicts: # CAPABILITIES.md
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…y: triggers and a poller) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…the web Review fixes for the MCP teach tools: - An approval covers one run, one exact action and the app as it was (run id, action, actions performed so far). A changed screen, another run or another action in between refuses it; nothing is done. - Off the web, every click is gated unless it is on a ref'd text field, check box, tab or a plainly navigating control; clicks at x,y, Enter, typing outside a text field, single-letter keys and shortcuts are gated. Focus resets after Tab and other focus keys, so Space after Tab is gated. The gate uses the ref's control, not a coordinate match. - On the web, typing a space on a focused button is gated. - type with a ref refuses a ref that isn't a text field. - An action that times out ends run 1 instead of running later. - A run that fails to start stays tracked until its thread ends. - One app lock for run 1, canaries and taught runs. - The server stops an unfinished run 1 on exit. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- The copy drag now runs to the edges of the identifier's text box; it stopped inside the last glyph and copied one character short. - A split identifier (103 045 against 103045) is matched as one string, against the read and the known-ID list. - The check just before the click reuses the step-entry verdict when the identifier shows the same pixels, instead of re-reading the selected text. - A run-parameter mismatch that is only a look-alike misread (C0X1234 read as COX1234) gets the same looks. The mismatch stands unless the list or an exact copy of the run value settles the record. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Removes 'in review', 'being merged', 'not yet released', 'being built' and the 'What is not done yet' section from README, CAPABILITIES, llms.txt and the agent README. Rows for merged PRs read 'On main'; rows for unmerged ones are removed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
# Conflicts: # packages/flow/public-artifacts.json
# Conflicts: # llms-full.txt
# Conflicts: # llms-full.txt
# Conflicts: # CAPABILITIES.md # llms-full.txt
# Conflicts: # .gitleaksignore
# Conflicts: # llms-full.txt
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
# Conflicts: # llms-full.txt
# Conflicts: # llms-full.txt
# Conflicts: # llms-full.txt # packages/flow/public-artifacts.json
# Conflicts: # llms-full.txt
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Oct 19, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Batch merge, stacked on #1384. Merge it right after #1384. Until then the diff also shows batch 2. CI here tests batches 2 and 3 together.
Included:
tests/test_shipped_only_copy.py#1338's copy cleanup duplicates edits batch 2 already made, so batch 2's version is kept wherever they overlap. Two pixel-identity rows go from "In review" to "On main".
Locally:
🤖 Generated with Claude Code