Skip to content

feat(agent): wire assert_spreadsheet into the grammar, record, and replay - #486

Merged
HappyDevs1 merged 1 commit into
feat/assert-spreadsheet-probefrom
feat/assert-spreadsheet-grammar
Aug 18, 2026
Merged

feat(agent): wire assert_spreadsheet into the grammar, record, and replay#486
HappyDevs1 merged 1 commit into
feat/assert-spreadsheet-probefrom
feat/assert-spreadsheet-grammar

Conversation

@HappyDevs1

Copy link
Copy Markdown
Collaborator

Summary

Stacked on #485 (Slice 3b: the driver-side probe).

  • 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.
  • No example flow yet exercising this end-to-end — that's the next PR, which also carries the docs/authoring.md prose 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 warnings
  • cargo fmt --check
  • scripts/gate/ratchets.sh (against this PR's actual base) — diff size 379/400

🤖 Generated with Claude Code

https://claude.ai/code/session_01FrvHcYH5Soxy5x9hBMjEob

@HappyDevs1
HappyDevs1 marked this pull request as ready for review August 18, 2026 09:08
Copilot AI lite review requested due to automatic review settings August 18, 2026 09:08

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

…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
HappyDevs1 force-pushed the feat/assert-spreadsheet-grammar branch from c433aa9 to 7859e55 Compare August 18, 2026 09:09
@HappyDevs1
HappyDevs1 merged commit c9dcc2e into main Aug 18, 2026
9 checks passed
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