@juicesharp/rpiv-pi 0.8.0 → 0.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@juicesharp/rpiv-pi",
3
- "version": "0.8.0",
3
+ "version": "0.8.1",
4
4
  "description": "Skill-based development workflow for Pi Agent — discover, research, design, plan, implement, validate",
5
5
  "keywords": [
6
6
  "pi-package",
@@ -111,14 +111,26 @@ Spawn these agents in parallel using the Agent tool. Each receives the `## Disco
111
111
  [paste Discovery Map verbatim]
112
112
 
113
113
  Task: Grep each changed hunk for the following sink patterns and list every match with `file:line` + surrounding 3 lines. Cross-reference the Discovery Map's Auth-boundary crossings.
114
+ For each hit, additionally return `confidence: N/10` reflecting how certain you are that a user-controlled input can reach this sink under current deployment. Do NOT report hits with confidence < 8.
114
115
  - Command execution: `exec(`, `execSync(`, `execFile(`, `child_process`, `spawn(`
115
116
  - Dynamic evaluation: `eval(`, `new Function(`
116
117
  - SQL template-interpolation: multi-line `` `SELECT ... ${ ``, `` `INSERT ... ${ ``, `` `UPDATE ... ${ ``, `` `DELETE ... ${ ``
117
118
  - XSS sinks: `innerHTML =`, `dangerouslySetInnerHTML`, `document.write(`
118
119
  - Path traversal: string concatenation into `fs.readFile`, `fs.writeFile`, `path.join` with user input
119
- - SSRF: `fetch(`, `http.request(`, `axios(`, `got(` with user-controlled origin
120
+ - SSRF: `fetch(`, `http.request(`, `axios(`, `got(` where HOST or PROTOCOL (not just path) is user-controlled
120
121
  - Secrets in diff: `api_key`, `secret`, `password`, `BEGIN PRIVATE KEY`, `.env` content literal
121
- - Missing hardening: auth-boundary crossings without a guard upstream; rate-limit-free POST handlers
122
+ - Missing auth guard: auth-boundary crossings (from Discovery Map) reaching a traced sink without an upstream guard
123
+
124
+ Hard exclusions — do NOT report:
125
+ - DOS / resource exhaustion / rate limiting / memory or CPU exhaustion
126
+ - Missing hardening in isolation (no traced sink), lack of audit logs
127
+ - Theoretical race conditions / timing attacks without a concrete reproducer
128
+ - Log spoofing, prototype pollution, tabnabbing, open redirects, XS-Leaks, regex DOS, regex injection
129
+ - Client-side-only authn/authz gaps (server is the authority)
130
+ - XSS in React/Angular/tsx files unless via `dangerouslySetInnerHTML`, `bypassSecurityTrustHtml`, or equivalent
131
+ - Findings whose sole source is an environment variable, CLI flag, or UUID (trusted in our threat model)
132
+ - Findings in test-only files or `.ipynb` notebooks without a concrete untrusted-input path
133
+ - Outdated-dependency CVEs (handled by the dependencies/CVE lens)
122
134
 
123
135
  For each hit, name the pattern and quote the line. Return evidence only. No CVE lookups — that is a separate agent.
124
136
  ```
@@ -174,9 +186,9 @@ Spawn these agents in parallel using the Agent tool. Each receives the `## Disco
174
186
  - 🔵 Suggestion: pattern divergence with a concrete nearby template.
175
187
  - 💭 Discussion: composite-lesson architecture concerns.
176
188
  - Security evidence → classify:
177
- - 🔴 sink hit with user-reachable exploitability (trace via Discovery Map auth-boundary crossings).
178
- - 🟡 missing hardening (rate-limit, weak hash, non-constant-time compare).
179
- - 🔵 pattern divergence from secure examples in the same file.
189
+ - 🔴 sink hit with a CONCRETE user-reachable source→sink path traced through Discovery Map auth-boundary crossings. Reject any hit lacking an explicit trace.
190
+ - 🟡 crypto-only concrete issues: weak hash in an auth/integrity role (MD5/SHA1), non-constant-time compare on secrets, hardcoded key material in diff. Do NOT use 🟡 for "missing hardening".
191
+ - 🔵 pattern divergence from a secure example in the SAME file (cite the nearby secure `file:line`).
180
192
  - 💭 architectural question.
181
193
  - Dependencies evidence → classify:
182
194
  - 🔴 Known-exploitable CVE in a touched dep (Critical/High per advisory DB) OR lockstep-contract violation (would trip `scripts/sync-versions.js`).
@@ -366,6 +378,7 @@ Ask follow-ups, or run `/skill:revise` to address the findings.
366
378
  - **Always use parallel Agent tool calls** in Phase-2 to maximise efficiency.
367
379
  - **Always read the full diff FIRST** (Step 1) before spawning any Phase-1 or Phase-2 agent.
368
380
  - **Always pass the Discovery Map inline** as `Known Context` to every Phase-2 agent — agents are `isolated: true` and cannot see sibling transcripts.
381
+ - **Security-lens precision stance**: prefer false negatives over false positives. Security evidence must carry `confidence ≥ 8` and 🔴 requires an explicit source→sink trace. Missing hardening without a traced sink is NOT a finding. Keep the Security-lens exclusion list in sync with the reference FP-filter precedents.
369
382
  - **Critical ordering**: Follow the numbered steps exactly.
370
383
  - ALWAYS resolve scope and bail on empty diff (Step 1) before Phase-1.
371
384
  - ALWAYS wait for Phase-1 completion before Phase-2 dispatch.