Skip to content

feat(bench): 3 TypeScript cascade scenarios (#104)#125

Merged
Connorrmcd6 merged 1 commit into
feat/104a-cascade-py-scenariosfrom
feat/104b-cascade-ts-scenarios
Jun 14, 2026
Merged

feat(bench): 3 TypeScript cascade scenarios (#104)#125
Connorrmcd6 merged 1 commit into
feat/104a-cascade-py-scenariosfrom
feat/104b-cascade-ts-scenarios

Conversation

@Connorrmcd6

Copy link
Copy Markdown
Owner

Summary

PR-B of the cascade-family expansion: 3 TypeScript code cascades (graded by node --test, Node ≥22.18 type-strip). Each introduces a new drift archetype that surf detects via a structural/literal change (not an identifier swap — see PR-A's note).

⚠️ Stacked on #124 (PR-A) for the validate_scenario tooling + edit_path. Base is feat/104a-cascade-py-scenarios; GitHub will retarget this to main once #124 merges. Review #124 first.

New scenarios

id tier domain drift archetype
cascade-serialize-key-order-ts-code T2 serialization canonical key order insertion→sorted (.sort() added)
cascade-default-timeout-ts-code T1 timeouts default param 300005000
cascade-validate-guard-ts-code T2 validation dropped length > 0 guard (empty now accepted)

Each: graders probe the real hidden dependency for ground truth, task.md is neutral (no leaked value), author.py seals a genuine "changed" divergence, and validate_scenario proves the graders discriminate.

Verification (offline)

  • python tools/validate_scenario.py --all7/7 green (4 from PR-A + these 3).
  • Mock run over the three — 0 errors across C0–Cw.
  • uv run pytest38 passed; cargo fmt --all --check clean.

Scope

PR-B of Connorrmcd6/surface-bench#12. Cascade family now 4 → 11 (with PR-A). PR-C (3 QA cascades) reaches ~14 and unblocks the phase-8 pre-registration freeze.

🤖 Generated with Claude Code

PR-B of the cascade expansion: three TS code cascades (graded by
`node --test`, Node >=22.18 type-strip), each a new drift archetype that
surf detects via a structural/literal change (not an identifier swap).

- cascade-serialize-key-order-ts-code (T2, serialization) — canonicalString
  key order insertion -> sorted (Object.keys().sort() added); the visible
  signer must reproduce the canonical string.
- cascade-default-timeout-ts-code (T1, timeouts) — totalDeadlineMs default
  param 30000 -> 5000; the visible caller reports the default budget.
- cascade-validate-guard-ts-code (T2, validation) — isValidName dropped its
  `length > 0` guard (empty names now accepted); the visible intake filter
  must mirror the rule.

Each: graders probe the real hidden dependency for ground truth, task.md is
neutral, author.py seals a genuine "changed" divergence, and
validate_scenario proves grader polarity.

Verified offline: validate_scenario --all green (7/7), a mock run over the
three is error-free, uv run pytest passes (38).

Stacked on PR-A (#124) for the validate_scenario tooling + edit_path; will
retarget to main once #124 merges.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@Connorrmcd6 Connorrmcd6 merged commit 04bd2dc into feat/104a-cascade-py-scenarios Jun 14, 2026
5 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.

1 participant