Skip to content

Commit af17a17

Browse files
committed
Update review walkthrough flow and evidence
1 parent 1ec53e3 commit af17a17

12 files changed

Lines changed: 72 additions & 70 deletions

agent-suites/review-walkthrough/fixtures/replays/behavior-across-files.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"messages": [
33
{
44
"role": "assistant",
5-
"content": "A user logs in with a token. The login entry point asks the auth code to create a session, the session is saved under that token, and the new session comes back to the caller. I’ll follow that request from the first call to the stored result.\n\nThe story has three chapters: login starts the request, auth gives it an expiry, and storage makes the token useful later.\n\nReview frame: source:branch · scope: `agent-suites/fixtures/sample-app/src` · current version: bound branch head\n\n## Step 1 — Login creates a session\n\nA user submits their login. The story starts at `agent-suites/fixtures/sample-app/src/login.ts:5`, where the entry point calls `createSession`. The request moves to `agent-suites/fixtures/sample-app/src/auth.ts:6`, which gives the session its user ID and one-hour expiry. It then reaches `agent-suites/fixtures/sample-app/src/session-store.ts:5`, where the token points to that session, and the login function returns the same value.\n\nThe important code follows the request in that order: `login.ts:5` starts it, `auth.ts:6` creates the value, and `session-store.ts:5` stores it.\n\nFact: the changed login code calls creation before storage.\nReading: a later request with the token can recover the session created by this login.\nProof: no test file is part of this selected scope.\n\nConcern: None observed.\n\nPaused after the first story beat. Say `next`, `go deeper`, `why`, `back`, `skip`, or `stop`."
5+
"content": "## Step 1 — Login creates a session\n\nA user submits their login. The entry point at `agent-suites/fixtures/sample-app/src/login.ts:5` calls `createSession`; `auth.ts:6` gives the session its user ID and one-hour expiry; and `session-store.ts:5` stores it under the token before the login function returns it.\n\nReview frame: source:branch · scope: `agent-suites/fixtures/sample-app/src` · current version: bound branch head\n\n```ts\nconst session = createSession(userId)\nsessions.set(token, session)\nreturn session\n```\n\nThe excerpt shows the request moving from creation to token-backed storage.\n\nSummary: creation happens before storage, so a later request can recover the session through its token.\nProof: no test file is part of this selected scope.\n\nConcern: None observed.\n\nPaused at Step 1/3. Say `next`, `go deeper`, `why`, `show the code`, `back`, `skip`, or `stop`."
66
}
77
],
88
"toolCalls": [],

agent-suites/review-walkthrough/fixtures/replays/concern-confirmed-evidence.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"messages": [
33
{
44
"role": "assistant",
5-
"content": "A request reaches the session check at the exact moment the session expires. The code accepts it, and the failing boundary test shows that this is not only a possible path but a demonstrated mismatch with the expected contract.\n\nReview frame: source:branch · scope: `agent-suites/fixtures/sample-app/src/auth.ts` · current version: bound branch head\n\n## Step 1 — The expiry boundary\n\n`agent-suites/fixtures/sample-app/src/auth.ts:9` uses `>=`, so `session.expiresAt === now` returns active. The failing test at `auth.test.ts:18` expects that exact boundary to be rejected. The reproduction is the equality case, and its impact is a request passing the session check for that boundary instant.\n\nFact: the current code uses `>=`, and the failing test observes the equality case as active.\nReading: the code violates the exclusive-expiry contract at a precisely demonstrated trigger.\n\nConcern: `confirmed`. Trigger: `session.expiresAt === now`. Impact: protected access can continue for that boundary instant. The code and failing test demonstrate both parts. This remains a walkthrough callout; use **code-review** for formal risk analysis.\n\nThe walkthrough remains read-only. This is not a merge decision."
5+
"content": "## Step 1 — The expiry boundary\n\nA request reaches the session check at the exact moment the session expires. `agent-suites/fixtures/sample-app/src/auth.ts:9` uses `>=`, so `session.expiresAt === now` returns active. The failing test at `auth.test.ts:18` expects that exact boundary to be rejected.\n\nReview frame: source:branch · scope: `agent-suites/fixtures/sample-app/src/auth.ts` · current version: bound branch head\n\n```ts\nreturn session.expiresAt >= now\n```\n\nThe excerpt shows the comparator, and the failing test supplies the expected boundary behavior.\n\nSummary: the code violates the exclusive-expiry contract at a precisely demonstrated trigger.\n\nConcern: `confirmed`. Trigger: `session.expiresAt === now`. Impact: protected access can continue for that boundary instant. The code and failing test demonstrate both parts. This remains a walkthrough callout; use **code-review** for formal risk analysis.\n\nThe walkthrough remains read-only. This is not a merge decision."
66
}
77
],
88
"toolCalls": [],

agent-suites/review-walkthrough/fixtures/replays/concern-read-only.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"messages": [
33
{
44
"role": "assistant",
5-
"content": "A request reaches the session check at the exact moment the session expires. The changed comparison treats that moment as active, so the request passes one boundary instant later than an exclusive expiry rule would allow.\n\nReview frame: source:branch · scope: `agent-suites/fixtures/sample-app/src/auth.ts` · current version: bound branch head\n\n## Step 1 — The expiry boundary\n\nThe story starts when `isSessionActive` receives a session and the current time. `agent-suites/fixtures/sample-app/src/auth.ts:6` still rejects a missing session. At `auth.ts:9`, the new `>=` comparison accepts an expiry time equal to `now`, and that result goes back to the caller.\n\nFact: the diff changes the comparator from `>` to `>=`.\nReading: a session remains accepted at the exact expiry timestamp.\nProof: no boundary test is included in this selected source.\n\nConcern: `unverified`. Trigger: `session.expiresAt === now`. Impact: protected access can remain accepted at the boundary if expiry is intended to be exclusive. This is a walkthrough callout; use **code-review** for formal risk analysis.\n\nPaused at Step 1/1. The walkthrough remains read-only."
5+
"content": "## Step 1 — The expiry boundary\n\nA request reaches `isSessionActive` at the exact moment the session expires. `agent-suites/fixtures/sample-app/src/auth.ts:6` still rejects a missing session, while `auth.ts:9` uses the changed `>=` comparison and accepts an expiry time equal to `now`.\n\nReview frame: source:branch · scope: `agent-suites/fixtures/sample-app/src/auth.ts` · current version: bound branch head\n\n```ts\nreturn session.expiresAt >= now\n```\n\nThe excerpt shows the boundary comparison that decides whether the request passes.\n\nSummary: a session remains accepted at the exact expiry timestamp.\nProof: no boundary test is included in this selected source.\n\nConcern: `unverified`. Trigger: `session.expiresAt === now`. Impact: protected access can remain accepted at the boundary if expiry is intended to be exclusive. This is a walkthrough callout; use **code-review** for formal risk analysis.\n\nPaused at Step 1/1. The walkthrough remains read-only."
66
}
77
],
88
"toolCalls": [],

agent-suites/review-walkthrough/fixtures/replays/control-edges.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
},
1919
{
2020
"role": "assistant",
21-
"content": "## Step 1 — Safe relative redirects\n\nObserved: the staged code keeps the full relative target.\nInterpretation: its query and hash remain available to the caller.\n\nPaused at Step 1/2."
21+
"content": "## Step 1 — Safe relative redirects\n\nA user follows a safe relative target, and the staged code keeps the full destination.\n\n```ts\nif (isSafeRelativeTarget(target)) return target\n```\n\nSummary: the target’s query and hash remain available to the caller.\n\nPaused at Step 1/2."
2222
},
2323
{
2424
"role": "user",

agent-suites/review-walkthrough/fixtures/replays/entry-paths.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"messages": [
33
{
44
"role": "assistant",
5-
"content": "The two named files are the source even though there is no Git diff. I bind these exact paths at their current version.\n\nThe story is a session created in `auth.ts` and then moved into token-based storage in `session-store.ts`. I’ll follow that path in execution order.\n\nReview frame: source:paths · scope: `agent-suites/fixtures/sample-app/src/auth.ts`, `agent-suites/fixtures/sample-app/src/session-store.ts` · current version: named files\n\nPaused before Chapter 1."
5+
"content": "## Step 1 — A session moves into storage\n\nThe two named files are the source even though there is no Git diff. A login creates a session in `auth.ts`, then `session-store.ts` places it under the token for later recovery.\n\nReview frame: source:paths · scope: `agent-suites/fixtures/sample-app/src/auth.ts`, `agent-suites/fixtures/sample-app/src/session-store.ts` · current version: named files\n\n```ts\nconst session = createSession(userId)\nsessions.set(token, session)\n```\n\nSummary: the named files connect session creation to token-based storage.\nProof: no test result is included in this surface.\n\nPaused at Step 1/2."
66
}
77
],
88
"toolCalls": [],

agent-suites/review-walkthrough/fixtures/replays/entry-worktree-fallback.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"messages": [
33
{
44
"role": "assistant",
5-
"content": "The prompt did not name a source. The current worktree is non-empty, so I bind only that change.\n\nThe worktree change preserves query and hash values for safe relative redirects and keeps the unsafe-target fallback. The story has two chapters: safe relative targets keep their complete destination, then external and scheme-relative targets use `/dashboard`.\n\nReview frame: source:working-tree · scope: `agent-suites/fixtures/sample-app/src/redirect.ts` · current version: selected worktree change\n\nPaused before Chapter 1."
5+
"content": "## Step 1 — Safe relative redirects\n\nThe prompt did not name a source, so the current non-empty worktree binds only that change. A user returns to the app with a safe relative target, and `redirect.ts:8` returns it with its query and hash intact.\n\nReview frame: source:working-tree · scope: `agent-suites/fixtures/sample-app/src/redirect.ts` · current version: selected worktree change\n\n```ts\nif (isSafeRelativeTarget(target)) return target\n```\n\nSummary: the worktree change preserves the complete safe relative destination.\nProof: no test result is included in this surface.\n\nPaused at Step 1/2."
66
}
77
],
88
"toolCalls": [],

agent-suites/review-walkthrough/fixtures/replays/large-change-paced.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"messages": [
33
{
44
"role": "assistant",
5-
"content": "The app receives a login, creates a session, and saves it so later requests can find it. Separately, a form gives the user immediate success feedback while the server work finishes. These are two stories, so I will not make the user walk through every changed line.\n\nThe story has two chapters: the session travels from creation into storage, then the form changes what the user sees during submission. I’ll keep each causal path intact and start with the session because the form does not depend on it.\n\nReview frame: source:branch · scope: `agent-suites/fixtures/sample-app/src` · current version: bound branch head\n\nPaused before Chapter 1. `next` continues, `go deeper` expands the current story, `skip` moves past it, and `back` revisits the previous story."
5+
"content": "## Step 1 — Login creates a session\n\nThe app receives a login, creates a session, and saves it so later requests can find it. Separately, a form gives the user immediate success feedback while the server work finishes. These are two stories, so I will keep each causal path intact.\n\nThe requested order is: the session travels from creation into storage, then the form changes what the user sees during submission. I start with the session because the form does not depend on it.\n\nReview frame: source:branch · scope: `agent-suites/fixtures/sample-app/src` · current version: bound branch head\n\n```ts\nconst session = createSession(userId)\nsessions.set(token, session)\n```\n\nSummary: the first behavior group connects login-time session creation to later token lookup.\nProof: no test result is included in this surface.\n\nPaused at Step 1/2. `next` continues, `go deeper` expands the current story, `skip` moves past it, and `back` revisits the previous story."
66
}
77
],
88
"toolCalls": [],

agent-suites/review-walkthrough/fixtures/replays/natural-controls.json

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,47 +2,47 @@
22
"messages": [
33
{
44
"role": "assistant",
5-
"content": "A user returns to the app after login. The staged change preserves query and hash values for safe relative redirects, while unsafe targets still use `/dashboard`.\n\nThe story has two chapters: the safe path, then the fallback.\n\nReview frame: source:staged-only · scope: `agent-suites/fixtures/sample-app/src/redirect.ts` · current version: staged index diff\n\nPaused at the map. Say `next`, name a chapter, or ask a question."
5+
"content": "## Step 1 — Safe relative redirects\n\nA user returns to the app after login with a safe relative target. `redirect.ts:4` receives it, `redirect.ts:7` accepts it, and `redirect.ts:8` returns it unchanged so the caller keeps the requested destination.\n\nReview frame: source:staged-only · scope: `agent-suites/fixtures/sample-app/src/redirect.ts` · current version: staged index diff\n\n```ts\nif (isSafeRelativeTarget(target)) {\n return target\n}\n```\n\nThe excerpt shows that the accepted target is returned as received.\n\nSummary: safe relative redirects keep their query and hash values.\nProof: no test result is included in this surface.\n\nConcern: None observed.\n\nPaused at Step 1/2. Say `next`, `go deeper`, `why`, `show the code`, `back`, `skip`, or `stop`."
66
},
77
{
88
"role": "user",
9-
"content": "next"
9+
"content": "go deeper — why does the query stay attached? show the code"
1010
},
1111
{
1212
"role": "assistant",
13-
"content": "## Step 1 — Safe relative redirects\n\nA user follows a safe relative target. `redirect.ts:4` receives it, `redirect.ts:7` accepts it, and `redirect.ts:8` returns it unchanged so the caller keeps the requested destination.\n\nFact: the staged branch returns the safe relative target.\nReading: links such as `/login?next=/inbox#top` keep their useful context.\nProof: no test result is included in this surface.\n\nConcern: None observed.\n\nPaused at Step 1/2. Say `next`, `go deeper`, `why`, `show the code`, `back`, `skip`, or `stop`."
13+
"content": "## Step 1 — Safe relative redirects, deeper\n\nThe changed return uses the complete target string instead of rebuilding only its path. That is why both `?next=/inbox` and `#top` remain attached.\n\n```ts\nif (isSafeRelativeTarget(target)) {\n return target\n}\n```\n\nThe key lines are `agent-suites/fixtures/sample-app/src/redirect.ts:7`, which checks that the target is relative, and `redirect.ts:8`, which returns the original string.\n\nSummary: the redirect does not lose the caller’s extra destination details.\n\nThe current step remains active. Paused at Step 1/2."
1414
},
1515
{
1616
"role": "user",
17-
"content": "go deeper — why does the query stay attached? show the code"
17+
"content": "back"
1818
},
1919
{
2020
"role": "assistant",
21-
"content": "## Step 1 — Safe relative redirects, deeper\n\nThe changed return uses the complete target string instead of rebuilding only its path. That is why both `?next=/inbox` and `#top` remain attached.\n\nThe key lines are `agent-suites/fixtures/sample-app/src/redirect.ts:7`, which checks that the target is relative, and `redirect.ts:8`, which returns the original string.\n\nFact: the changed line returns the input target after the relative-path check.\nReading: the redirect does not lose the caller’s extra destination details.\n\nThe current step remains active. Paused at Step 1/2."
21+
"content": "There is no earlier behavior than Step 1. I am staying on Step 1. The next chapter handles targets that fail the relative-path check. Say `next`, `skip`, or `stop`."
2222
},
2323
{
2424
"role": "user",
25-
"content": "back"
25+
"content": "next"
2626
},
2727
{
2828
"role": "assistant",
29-
"content": "There is no earlier behavior than Step 1. I am staying on Step 1. The next chapter handles targets that fail the relative-path check. Say `next`, `skip`, or `stop`."
29+
"content": "## Step 2 — External-target fallback\n\nAn unsafe target fails the relative-path check, so `redirect.ts:10` returns `/dashboard`.\n\n```ts\nreturn '/dashboard'\n```\n\nSummary: unsafe targets still use the existing safe destination.\n\nPaused at Step 2/2. Say `next`, `skip`, or `stop`."
3030
},
3131
{
3232
"role": "user",
3333
"content": "skip"
3434
},
3535
{
3636
"role": "assistant",
37-
"content": "Step 1 is marked skipped.\n\n## Step 2 — External-target fallback\n\nAn unsafe target fails the relative-path check, so `redirect.ts:10` returns `/dashboard`.\n\nFact: the fallback remains in the staged change.\nReading: unsafe targets still use the existing safe destination.\n\nPaused at Step 2/2. Say `next`, `skip`, or `stop`."
37+
"content": "Step 2 is marked skipped. The walkthrough ends.\n\n## Understanding summary\n\nA user’s safe relative redirect keeps its query and hash, while an unsafe target still goes to `/dashboard`.\n\n- Covered: safe relative redirects.\n- Skipped: external-target fallback.\n- Evidence: `agent-suites/fixtures/sample-app/src/redirect.ts:4-10`; no test result was included.\n- Remaining unclear: boundary tests and runtime behavior were not part of this walkthrough.\n\nThis is an understanding summary, not a merge decision."
3838
},
3939
{
4040
"role": "user",
4141
"content": "stop"
4242
},
4343
{
4444
"role": "assistant",
45-
"content": "## Understanding summary\n\nA user’s safe relative redirect keeps its query and hash, while an unsafe target still goes to `/dashboard`.\n\n- Covered: external-target fallback.\n- Skipped: safe relative redirects, although the deeper explanation showed why query and hash values remain.\n- Evidence: `agent-suites/fixtures/sample-app/src/redirect.ts:4-10`; no test result was included.\n- Remaining unclear: boundary tests and runtime behavior were not part of this walkthrough.\n\nThis is an understanding summary, not a merge decision."
45+
"content": "The walkthrough already ended after Step 2 was skipped.\n\n## Understanding summary\n\nA user’s safe relative redirect keeps its query and hash, while an unsafe target still goes to `/dashboard`.\n\n- Covered: safe relative redirects.\n- Skipped: external-target fallback.\n- Evidence: `agent-suites/fixtures/sample-app/src/redirect.ts:4-10`; no test result was included.\n- Remaining unclear: boundary tests and runtime behavior were not part of this walkthrough.\n\nThis is an understanding summary, not a merge decision."
4646
}
4747
],
4848
"toolCalls": [],

0 commit comments

Comments
 (0)