mirror of
https://github.com/MadsLorentzen/ai-job-search.git
synced 2026-11-02 13:12:50 +00:00
fix(specs): carry the untrusted-input rule into every spec that reads third-party content
/apply and /rank state that postings are untrusted third-party data, never instructions. Ten other specs that fetch or read such content did not: /scrape ingested portal CLI output and WebSearch results with no rule, /gmail-sync classified inbound email - the input anyone can send - with none, and /setup Path A read the verbatim archived posting and email-quoting outcome notes and wrote calibration into 04-job-evaluation.md, which every later /apply and /rank loads. Each spec now points at the Trust boundary section of 09-web-research.md instead of copying it. /gmail-sync gains Important Rule 10 (no link fetched, no attachment opened, no reply, draft, label or forward), and /setup Step A3 never copies archive wording into a skill file. The new test derives the set of specs from the tools they call, so a future fetching command without the rule fails CI. On master it lists all ten. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
bc2c583c44
commit
37e81a652c
13 files changed
+107
-2
No files matched your search
@@ -46,7 +46,10 @@ class OtherFrontDoors(unittest.TestCase):
|
||||
text = (REPO / ".claude" / "skills" / "job-application-assistant" / "SKILL.md").read_text(encoding="utf-8")
|
||||
step1 = re.search(r"### Step 1: Research & Evaluate Fit(.*?)(?=### Step 2)", text, re.DOTALL).group(1)
|
||||
self.assertIn("posting_guard", step1)
|
||||
self.assertIn("framework_version: 1.3.6", text)
|
||||
# The gate shipped in 1.3.6; any later edit bumps the marker again.
|
||||
version = re.search(r"^framework_version: (\d+)\.(\d+)\.(\d+)$", text, re.MULTILINE)
|
||||
self.assertIsNotNone(version)
|
||||
self.assertGreaterEqual(tuple(int(part) for part in version.groups()), (1, 3, 6))
|
||||
|
||||
def test_outcome_fresh_fetch_is_gated(self):
|
||||
text = (REPO / ".claude" / "commands" / "outcome.md").read_text(encoding="utf-8")
|
||||
|
||||
Reference in new issue
Block a user