feat(agent): wire assert_spreadsheet into the grammar, record, and replay - #486
Merged
HappyDevs1 merged 1 commit intoAug 18, 2026
Merged
Conversation
…play
Wires the previous two PRs' Assertion::Spreadsheet and OobProbe::Spreadsheet
into the step grammar: `assert_spreadsheet: {path, sheet?, at | (column +
row_contains), equals?, contains?, timeout_seconds?}`, parsed alongside
assert_sql/assert_api.
Cross-field validation mirrors assert_api's style: exactly one of `at` or
`column`+`row_contains` (both set, or neither, is a parse-time error naming
the two forms), and at most one of equals/contains — a config mistake fails
here, before anything records, not with a probe-time surprise.
`path` resolves `${captured.x}` then `${VAR}` at probe time on both record
and replay, the same two-step ladder TypeText resolves with — the common
case is a path a `Wait until the download completes as <name>` step
captured moments earlier on another surface. Auto-waits like assert_sql:
a just-landed download may still be mid-write when the first poll fires.
No example flow yet exercising this end-to-end — that's the next PR in
the stack, which also carries the docs/authoring.md prose for this
grammar (paired with the flow that actually demonstrates it).
HappyDevs1
force-pushed
the
feat/assert-spreadsheet-grammar
branch
from
August 18, 2026 09:09
c433aa9 to
7859e55
Compare
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.
Summary
Stacked on #485 (Slice 3b: the driver-side probe).
Assertion::SpreadsheetandOobProbe::Spreadsheetinto the step grammar:assert_spreadsheet: {path, sheet?, at | (column + row_contains), equals?, contains?, timeout_seconds?}, parsed alongsideassert_sql/assert_api.assert_api's style: exactly one ofatorcolumn+row_contains(both set, or neither, is a parse-time error naming the two forms), and at most one ofequals/contains— a config mistake fails here, before anything records, not with a probe-time surprise.pathresolves${captured.x}then${VAR}at probe time on both record and replay, the same two-step ladderTypeTextresolves with — the common case is a path aWait until the download completes as <name>step captured moments earlier on another surface. Auto-waits likeassert_sql.docs/authoring.mdprose for this grammar (paired with the flow that actually demonstrates it).Test plan
cargo test --workspace— 59/59 suites, 1001 tests (8 new: cross-field validation, YAML round-trip, typo'd-field parse errors)cargo clippy --workspace --all-targets -- -D warningscargo fmt --checkscripts/gate/ratchets.sh(against this PR's actual base) — diff size 379/400🤖 Generated with Claude Code
https://claude.ai/code/session_01FrvHcYH5Soxy5x9hBMjEob