From 2926785d2f534be37afae1e93babac38c36fca44 Mon Sep 17 00:00:00 2001 From: patote85 <47055922+patote85@users.noreply.github.com> Date: Sun, 18 Oct 2026 22:13:15 -0300 Subject: [PATCH 1/2] feat(pstack): add scope and grounding checks to interrogate rubric --- .../skills/interrogate/references/rubric.md | 10 ++++++++++ pstack/skills/interrogate/references/rubric.md | 10 ++++++++++ 2 files changed, 20 insertions(+) diff --git a/harness/pstack/claude-code/skills/interrogate/references/rubric.md b/harness/pstack/claude-code/skills/interrogate/references/rubric.md index 8dab195ab..a5b77f1b2 100644 --- a/harness/pstack/claude-code/skills/interrogate/references/rubric.md +++ b/harness/pstack/claude-code/skills/interrogate/references/rubric.md @@ -16,6 +16,16 @@ Does the code actually do what the intent says it should? When you find a potential bug, trace the execution path. Don't just flag "this could be nil". Show the call chain that makes it nil. +## Scope and Grounding + +Did the change stay inside the intent, and is everything it relies on real? These are the failures agents make most often. Check each one against the stated intent and the diff. + +- Kitchen sink: the intent asked for one thing and the diff also restructures, renames, or "improves" unrelated code. List each change the intent does not explain. +- Runaway refactor: the change started in one place and spread across many files. Ask whether each touched file needed to change for the intent, or whether one edit forced the next. +- Optimistic path: only the happy path is handled. Name the failure the code ignores, such as an empty result, a timeout, a partial write, or a rejected call, show where it would surface, and ask for a test that exercises it. +- Knowledge hallucination: the code calls an API, flag, parameter, config key, or CLI option that does not exist in the version the project uses. Verify each unfamiliar call against the dependency's source, types, or docs before trusting it. +- Invisible decision: the diff makes a design choice (a new dependency, a data format, a storage or concurrency model, a public contract) without saying so in the PR or a decision record. Name the choice and ask for it to be stated with the alternatives considered. + ## Root Causes vs. Symptoms Is the code fixing the actual problem or papering over a symptom? diff --git a/pstack/skills/interrogate/references/rubric.md b/pstack/skills/interrogate/references/rubric.md index 8dab195ab..a5b77f1b2 100644 --- a/pstack/skills/interrogate/references/rubric.md +++ b/pstack/skills/interrogate/references/rubric.md @@ -16,6 +16,16 @@ Does the code actually do what the intent says it should? When you find a potential bug, trace the execution path. Don't just flag "this could be nil". Show the call chain that makes it nil. +## Scope and Grounding + +Did the change stay inside the intent, and is everything it relies on real? These are the failures agents make most often. Check each one against the stated intent and the diff. + +- Kitchen sink: the intent asked for one thing and the diff also restructures, renames, or "improves" unrelated code. List each change the intent does not explain. +- Runaway refactor: the change started in one place and spread across many files. Ask whether each touched file needed to change for the intent, or whether one edit forced the next. +- Optimistic path: only the happy path is handled. Name the failure the code ignores, such as an empty result, a timeout, a partial write, or a rejected call, show where it would surface, and ask for a test that exercises it. +- Knowledge hallucination: the code calls an API, flag, parameter, config key, or CLI option that does not exist in the version the project uses. Verify each unfamiliar call against the dependency's source, types, or docs before trusting it. +- Invisible decision: the diff makes a design choice (a new dependency, a data format, a storage or concurrency model, a public contract) without saying so in the PR or a decision record. Name the choice and ask for it to be stated with the alternatives considered. + ## Root Causes vs. Symptoms Is the code fixing the actual problem or papering over a symptom? From f372b888b159c2b5a2615f902f8d4d492c8ae255 Mon Sep 17 00:00:00 2001 From: patote85 <47055922+patote85@users.noreply.github.com> Date: Sun, 18 Oct 2026 22:14:00 -0300 Subject: [PATCH 2/2] docs(pstack): avoid overlap with correctness in optimistic path check --- .../pstack/claude-code/skills/interrogate/references/rubric.md | 2 +- pstack/skills/interrogate/references/rubric.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/harness/pstack/claude-code/skills/interrogate/references/rubric.md b/harness/pstack/claude-code/skills/interrogate/references/rubric.md index a5b77f1b2..cf0ad444b 100644 --- a/harness/pstack/claude-code/skills/interrogate/references/rubric.md +++ b/harness/pstack/claude-code/skills/interrogate/references/rubric.md @@ -22,7 +22,7 @@ Did the change stay inside the intent, and is everything it relies on real? Thes - Kitchen sink: the intent asked for one thing and the diff also restructures, renames, or "improves" unrelated code. List each change the intent does not explain. - Runaway refactor: the change started in one place and spread across many files. Ask whether each touched file needed to change for the intent, or whether one edit forced the next. -- Optimistic path: only the happy path is handled. Name the failure the code ignores, such as an empty result, a timeout, a partial write, or a rejected call, show where it would surface, and ask for a test that exercises it. +- Optimistic path: Correctness asks whether the sad path works. Here, name the specific failure the code ignores, such as an empty result, a timeout, a partial write, or a rejected call, show where it would surface, and ask for a test that exercises it. - Knowledge hallucination: the code calls an API, flag, parameter, config key, or CLI option that does not exist in the version the project uses. Verify each unfamiliar call against the dependency's source, types, or docs before trusting it. - Invisible decision: the diff makes a design choice (a new dependency, a data format, a storage or concurrency model, a public contract) without saying so in the PR or a decision record. Name the choice and ask for it to be stated with the alternatives considered. diff --git a/pstack/skills/interrogate/references/rubric.md b/pstack/skills/interrogate/references/rubric.md index a5b77f1b2..cf0ad444b 100644 --- a/pstack/skills/interrogate/references/rubric.md +++ b/pstack/skills/interrogate/references/rubric.md @@ -22,7 +22,7 @@ Did the change stay inside the intent, and is everything it relies on real? Thes - Kitchen sink: the intent asked for one thing and the diff also restructures, renames, or "improves" unrelated code. List each change the intent does not explain. - Runaway refactor: the change started in one place and spread across many files. Ask whether each touched file needed to change for the intent, or whether one edit forced the next. -- Optimistic path: only the happy path is handled. Name the failure the code ignores, such as an empty result, a timeout, a partial write, or a rejected call, show where it would surface, and ask for a test that exercises it. +- Optimistic path: Correctness asks whether the sad path works. Here, name the specific failure the code ignores, such as an empty result, a timeout, a partial write, or a rejected call, show where it would surface, and ask for a test that exercises it. - Knowledge hallucination: the code calls an API, flag, parameter, config key, or CLI option that does not exist in the version the project uses. Verify each unfamiliar call against the dependency's source, types, or docs before trusting it. - Invisible decision: the diff makes a design choice (a new dependency, a data format, a storage or concurrency model, a public contract) without saying so in the PR or a decision record. Name the choice and ask for it to be stated with the alternatives considered.