FE-1317: Close host-landing oracle identity over PTY behavior - #413
Conversation
PR SummaryLow Risk Overview Planning artifacts move Separate test hardening: tier-2 “no model” boot stubs Reviewed by Cursor Bugbot for commit c69463b. Bugbot is set up for automated code reviews on this repo. Configure here. |
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Want reviews to match your repository better? Bugbot Learning can learn team-specific rules from PR activity. A team admin can enable Learning in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit f109ea4. Configure here.
There was a problem hiding this comment.
Pull request overview
This PR closes a provenance gap in Brunch’s execution-comparison system by ensuring the host-landing oracle’s immutable “oracle pack” fingerprint includes all PTY behavior-bearing inputs, and adds regression coverage to prove the fingerprint changes on any relevant input change while remaining stable for identical inputs. It also includes small changes intended to reduce test flakiness from ambient developer environment configuration.
Changes:
- Extend the compiled
brunch-host-landing-oracles-v1implementation file set to includetui-driver/keys.tsandtui-driver/driver.expso PTY-driving behavior is fully captured in the oracle pack hash. - Add a regression test that mutates each PTY input one-at-a-time and asserts the oracle pack hash changes, while identical inputs produce an identical hash.
- Hardening for local-environment flakiness: force “no model available” in Tier-2 harness services, avoid signed tags in git fixtures, and isolate provider creds from a determinism test.
Reviewed changes
Copilot reviewed 8 out of 8 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| src/dev/tier-2-harness.ts | Forces the “no model available” harness path to stay deterministic by overriding model availability to empty. |
| src/dev/execution-comparison/tests/operator-oracle-dispatch.test.ts | Adds regression coverage asserting oracle pack hash sensitivity per PTY input and stability for identical inputs. |
| src/dev/execution-comparison-operator.ts | Adds keys.ts and driver.exp to host-landing compiled oracle implementationFiles for fingerprint completeness. |
| src/dev/comparison-provenance.test.ts | Prevents local git signing config from affecting tag creation in fixtures via git tag --no-sign. |
| src/dev/tests/tier-2-harness.test.ts | Stubs provider env vars to ensure deterministic boots don’t become live turns due to ambient credentials. |
| memory/PLAN.md | Marks FE-1317 as completed and removes the now-closed frontier definition entry. |
| docs/archive/PLAN_HISTORY.md | Archives the FE-1317 closeout summary and traceability notes. |
| .pi/settings.json | Updates Pi settings (currently introduces machine-local absolute paths). |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
f109ea4 to
c69463b
Compare
51f3e07 to
d3b8451
Compare
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 7 out of 7 changed files in this pull request and generated no new comments.
Suppressed comments (2)
src/dev/execution-comparison/tests/operator-oracle-dispatch.test.ts:169
- Building rivalPath via inputPath.split('/') can fail on Windows and the current
?? ''fallback risks writing to the temp dir itself (or, if split fails and returns an absolute path, escaping the temp dir). Use a separator-agnostic split and remove the empty fallback.
const rivalPath = join(root, inputPath.split('/').at(-1) ?? '');
src/dev/execution-comparison/tests/operator-oracle-dispatch.test.ts:153
- This test extracts file names by splitting on '/', which breaks on Windows paths (fileURLToPath returns platform-native separators). Use a separator-agnostic split (or basename) so the assertion is portable.
This issue also appears on line 169 of the same file.
expect(ptyInputs.map((path) => path.split('/').at(-1))).toEqual(hostLandingPtyInputNames);
kostandinang
left a comment
There was a problem hiding this comment.
The pack now fingerprints the PTY inputs that actually change host-landing behavior, and the tests isolate ambient credentials/signing. That's the right identity contract.
c69463b to
943cc1f
Compare
d3b8451 to
28922fd
Compare
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 7 out of 7 changed files in this pull request and generated no new comments.
Suppressed comments (2)
src/dev/execution-comparison/tests/operator-oracle-dispatch.test.ts:169
inputPath.split('/')is not portable. On Windows it will return the full absolute path, andjoin(root, <absolute path>)will ignoreroot, causing the test to write into the real source file path instead of the temp directory.
const rivalPath = join(root, inputPath.split('/').at(-1) ?? '');
src/dev/execution-comparison/tests/operator-oracle-dispatch.test.ts:153
- Using
path.split('/')assumes POSIX separators. On Windows this expression returns the full absolute path (no '/' separators), which makes the assertion fail and can mask later issues in this test.
This issue also appears on line 169 of the same file.
expect(ptyInputs.map((path) => path.split('/').at(-1))).toEqual(hostLandingPtyInputNames);
Include every behavior-bearing PTY input in the immutable oracle pack and pin per-input hash sensitivity so retained comparisons cannot reuse a stale identity. Co-authored-by: Cursor <cursoragent@cursor.com>
Keep deterministic Tier-2 boots isolated from ambient provider credentials and make provenance fixtures independent of global Git signing configuration. Co-authored-by: Cursor <cursoragent@cursor.com>
943cc1f to
5334a63
Compare
28922fd to
820e7ec
Compare
Merge activity
|


Why
Comparison evidence must become stale whenever terminal-driving behavior changes. Several PTY-affecting files were missing from the oracle fingerprint, allowing old evidence to appear current.
What
How to test