Skip to content

feat(bench): 3 QA cascade scenarios (#104)#127

Merged
Connorrmcd6 merged 1 commit into
mainfrom
feat/104c-cascade-qa-scenarios
Jun 14, 2026
Merged

feat(bench): 3 QA cascade scenarios (#104)#127
Connorrmcd6 merged 1 commit into
mainfrom
feat/104c-cascade-qa-scenarios

Conversation

@Connorrmcd6

Copy link
Copy Markdown
Owner

Summary

PR-C of the cascade-family expansion: 3 verdict-graded QA cascades. The agent reasons about a hidden dependency from its doc and ends with a VERDICT: line, graded deterministically by rubric (no code execution). Branches off main, independent of the TS PR (#126) — no stacking.

id tier domain drift
cascade-idempotency-window-qa T2 payments is_duplicate body key in setreturn False (dedup guard removed)
cascade-ratelimit-burst-qa T2 rate-limiting admission_mode "fixed_window""token_bucket" (bursts now possible)
cascade-session-expiry-tz-qa T2 dates/tz is_expired threshold > 7200> 3600 (grace removed; 90-min session flips valid→expired)

Each: author.py seals a genuine "changed" divergence, the rubric encodes the T1 truth as [correct] and the stale claim as [misled], and validate_scenario proves polarity via .author/solution_{correct,stale}.txt.

Verification (offline)

  • python tools/validate_scenario.py — all three green (rubric polarity).
  • Mock run over the three — 0 errors across C0–Cw.
  • uv run pytest38 passed; cargo fmt --all --check clean.

Note: no T3 yet

All three are single-anchor (T2). A genuine T3 "multi-claim" scenario (a hub with several anchored claims, one drifted) needs author.py to seal every anchor's hash — it currently seals only the first. I deferred that as a small tooling follow-up rather than block this PR.

Scope / phase-7 status

PR-C of Connorrmcd6/surface-bench#12. With #126 (TS) and this merged, the cascade family is 4 → 14 (10 py, 4 ts; 11 code, 3 qa). That frozen set unblocks the phase-8 pre-registration.

🤖 Generated with Claude Code

PR-C of the cascade expansion: three verdict-graded QA cascades. The agent
reasons about a HIDDEN dependency from its doc and ends with a VERDICT line;
graded deterministically by rubric (no code execution). Each drift is
detectable by surf (structural/literal, not an identifier swap).

- cascade-idempotency-window-qa (T2, payments) — IdempotencyStore.is_duplicate
  body `key in self._processed` -> `return False` (dedup guard removed; a
  retried payment can double-charge).
- cascade-ratelimit-burst-qa (T2, rate-limiting) — RatePolicy.admission_mode
  "fixed_window" -> "token_bucket" (idle clients can now burst above the rate).
- cascade-session-expiry-tz-qa (T2, dates/tz) — is_expired threshold `> 7200`
  (2h, local+grace) -> `> 3600` (1h, UTC); a 90-min session flips valid->expired.

Each: author.py seals a genuine "changed" divergence, the rubric encodes the
T1 truth as [correct] and the stale claim as [misled], and validate_scenario
proves polarity via .author/solution_{correct,stale}.txt.

Note: all three are single-anchor. A genuine T3 "multi-claim" scenario needs
author.py to seal more than the first anchor's hash (it currently seals only
the first) — deferred as a small tooling follow-up.

Verified offline: author.py seals all three, validate_scenario green, a mock
run is error-free, uv run pytest passes (38).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@Connorrmcd6 Connorrmcd6 merged commit f106129 into main Jun 14, 2026
5 checks passed
@Connorrmcd6 Connorrmcd6 deleted the feat/104c-cascade-qa-scenarios branch June 14, 2026 20:08
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.

1 participant