Reviewer packet · Practical assessment reviewer demo
Fix invite acceptance regression
Alex Chen · Senior Backend Developer
Provisioned 2026-04-30T18:02:00.000Z · Submitted 2026-04-30T18:31:44.000Z · Active work ~25 min across 1 session
Read the packet before scoring.
Overview, then the code changes and session replay — the core review — then score. The section bar above jumps anywhere.
Suggested score — reviewer aid, not a verdict
Heuristic signal (keyword-based, see rubric)
Candidate prompts
Agent responses
AI session records
Git snapshots
Test runs
VM recorder events
Anomaly flags
No anomaly flags.
Evidence checks 3/3 passed
Author-defined checks evaluated against the full evidence record at submission.
matched in evidence
matched in evidence
matched in evidence
AI fluency Reviewer only
Total turns
Assistant turns
Tool calls
Write/Edit calls
Read calls
Bash calls
Models used: claude-sonnet-4-5 · parsed 6 JSONL lines across 1 session(s)
Process analysis Reviewer only
Candidate directed the AI with precise, narrow prompts ("find the smallest fix", "what edge cases should I preserve") rather than open-ended delegation, showing awareness of AI over-reach risk. They verified the fix independently by running all four test cases and reviewing the branch-order change before submitting, rather than accepting the AI-suggested output without validation. Redirection quality and verification habit are both strong signals for senior-level independent judgment.
Activity timeline
Chronology reconstructed from the recorded event chain. Active-work time excludes idle gaps — unlike raw wall-clock completion time.
Session 1 · Apr 30, 18:07–18:31 · 25 min · 6 events
- 18:07Candidate promptFind the smallest fix for the expired invite regression before I edit.
- 18:07Agent responseStart in src/invites.js and compare branch order against the failing expired retry test. The expiry guard sho…
- 18:18Candidate promptI moved expiry above retryableError. What edge cases should I preserve?
- 18:18Agent responsePreserve revoked=false plus future expiresAt for pending members, reject revoked invites, and reject active m…
- 18:28Test run — passed
- 18:31Evidence submittedfinal evidence packet
Code changes
git snapshot at submit · 2026-04-30T18:29:03.000Z. Every line below is candidate-submitted evidence; nothing is edited or summarized.
## git status M src/invites.js M test/invites.test.js ## git diff - if (membership?.retryableError) return true; if (new Date(invite.expiresAt).getTime() <= now.getTime()) return false; + if (membership?.retryableError) return true;
Earlier git snapshots (1)
## git status clean ## git diff
AI session replay
Reconstructed turn by turn from the candidate's recorded sessions — prompts, agent responses, and tool calls in order. Raw exports stay available under “Inspect raw evidence”.
2026-04-30T18:22:11.000Z · session-test.jsonl · 0 turns (raw — not parseable as session JSONL)
Claude JSONL export: candidate asked Claude to inspect invite tests, review the branch-order fix, run npm test, and explain product/infra follow-up questions.
Terminal capture · 2026-04-30T18:21:36.000Z · agent · 164 chars
codex session: inspected invite tests, identified retryableError branch above expiry guard, moved expiry check before retry path, ran npm test, reviewed edge cases.
Post-interview transcript review Reviewer only
No interview transcript artifact stored yet.
Inspect raw evidence
Unprocessed records exactly as captured — the source of truth behind every rendered section above.
Rubric
{
"score": 87,
"score10": 9,
"taskDecomposition": "observable",
"verification": "observable",
"aiCollaboration": "observable in recorded AI session evidence",
"reviewerConfidence": "usable evidence packet"
}Audit integrity
{
"verified": true,
"coveredEvents": 6,
"totalEvents": 6,
"lastAuditHash": "sample-tamper-evident-chain"
}Developer VM
{
"status": "recording",
"provider": "fly-machines",
"appName": "agentic-evidence-vms",
"machineId": "e82ee40c0d5758",
"region": "sjc",
"image": "registry.fly.io/agentic-evidence-vms:candidate-vm-terminal-router",
"teardownDueAt": "2026-04-30T22:04:13.000Z"
}Agent session transcripts (1)
codex session: inspected invite tests, identified retryableError branch above expiry guard, moved expiry check before retry path, ran npm test, reviewed edge cases.
Claude session JSONL exports (1)
Claude JSONL export: candidate asked Claude to inspect invite tests, review the branch-order fix, run npm test, and explain product/infra follow-up questions.
External AI session evidence (0)
No external AI session evidence uploaded.
Git snapshots (2)
## git status clean ## git diff
## git status M src/invites.js M test/invites.test.js ## git diff - if (membership?.retryableError) return true; if (new Date(invite.expiresAt).getTime() <= now.getTime()) return false; + if (membership?.retryableError) return true;
Final evidence
{
"tests": "npm test -> 4/4 tests passed. HotTea runner -> 4/4 checks passed.",
"diff": "Moved invite expiry validation before the retryable membership-error branch and added regression coverage for expired retryable invites, revoked invites, valid pending invites, and already-active members.",
"notes": "Kept the production change small. Verified the valid pending path still passes after changing branch order."
}Audit trail
[
{
"type": "candidate_prompt",
"createdAt": "2026-04-30T18:07:10.000Z"
},
{
"type": "agent_response",
"createdAt": "2026-04-30T18:07:12.000Z"
},
{
"type": "candidate_prompt",
"createdAt": "2026-04-30T18:18:22.000Z"
},
{
"type": "agent_response",
"createdAt": "2026-04-30T18:18:24.000Z"
},
{
"type": "test_run",
"createdAt": "2026-04-30T18:28:51.000Z",
"passed": true
},
{
"type": "evidence_submission",
"createdAt": "2026-04-30T18:31:44.000Z"
}
]Full event log (6)
[
{
"type": "candidate_prompt",
"createdAt": "2026-04-30T18:07:10.000Z",
"prompt": "Find the smallest fix for the expired invite regression before I edit."
},
{
"type": "agent_response",
"createdAt": "2026-04-30T18:07:12.000Z",
"response": "Start in src/invites.js and compare branch order against the failing expired retry test. The expiry guard should run before retryable membership errors."
},
{
"type": "candidate_prompt",
"createdAt": "2026-04-30T18:18:22.000Z",
"prompt": "I moved expiry above retryableError. What edge cases should I preserve?"
},
{
"type": "agent_response",
"createdAt": "2026-04-30T18:18:24.000Z",
"response": "Preserve revoked=false plus future expiresAt for pending members, reject revoked invites, and reject active members. Run tests after adding coverage."
},
{
"type": "test_run",
"createdAt": "2026-04-30T18:28:51.000Z",
"passed": true
},
{
"type": "evidence_submission",
"createdAt": "2026-04-30T18:31:44.000Z"
}
]Save reviewer scores Reviewer only
Score after you have read the overview, process analysis, diff, and evidence detail.
No reviewer scores have been saved yet.
Copy/paste reviewer note
Formatted for an ATS or assessment-platform review field. This is a reviewer aid, not a hiring verdict.
HotTea reviewer note Candidate: Alex Chen Assessment: Fix invite acceptance regression Score: 9/10 (rubric) · Suggested: 9/10 (AI fluency + verification) Reviewer scores: not yet scored Evidence captured: 1 AI session transcript(s), 1 Claude JSONL export(s), 0 external AI evidence upload(s), 2 git snapshot(s), 1 test run(s), 6 recorder event(s) Summary: Kept the production change small. Verified the valid pending path still passes after changing branch order. Verification observed: observable AI fluency observed: observable in recorded AI session evidence Post-interview transcript review: no transcript artifact stored Report: https://hottea.ai/report/sess_hatchways_sample?token=rpt_sample Suggested follow-up questions: 1. Walk through the highest-impact change and why that was the right first move. 2. Explain one tradeoff or shortcut from the assessment and what would change in production. 3. Describe how AI was used, what was accepted or rejected, and how the result was verified.
Interview transcript artifacts
0 transcript artifact(s) stored and summarized for reviewer follow-up. They remain reviewer-only and do not change the automated score.