fix(scrape): use the full job_scraper/seen_jobs.json path in every step of the spec (#608)

* fix(scrape): use the full job_scraper/seen_jobs.json path in every step of the spec

Step 0 reads job_scraper/seen_jobs.json but Steps 1-4 and the rules used the bare
filename. Step 4 is where the file is written, so an agent following it literally
can create seen_jobs.json in the repo root, outside the **/job_scraper/seen_jobs.json
ignore rule, where it gets committed with the user's scrape history.

Adds a spec test that rejects bare references; relaxes the existing dedup-continuity
regex to accept the qualified path.

* docs(changelog): entry for #608

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

---------

Co-authored-by: Mads Lorentzen <madslorentzen_17@hotmail.com>
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
authored and GitHub committed 2026-10-17 20:10:20 +02:00
1 parent 822d19a2ba
commit 8123d88f30
4 files changed
+45 -8

No files matched your search

+7
View File
@@ -68,6 +68,13 @@ per-file diff commands.
### Fixed
- **`/scrape` names `job_scraper/seen_jobs.json` by its full path in every step** (#608,
`.claude/skills/job-scraper/SKILL.md`, `tests/test_scrape_seen_jobs_path.py`) - seven references
after Step 0, including the Step 4 write instruction, used the bare filename, and an assistant
following them wrote the state file at the repository root, where the
`**/job_scraper/seen_jobs.json` ignore rule does not reach it; one fork committed its scrape
history that way. Every reference now carries the directory, and a test fails on any bare mention.
- **`salary_lookup.py` accepts a BOM-prefixed `salary_data.json`** (#594, #602, `salary_lookup.py`,
`tests/test_salary_lookup.py`) - the data file is opened with `utf-8-sig`, so a file saved by
Windows PowerShell `Out-File`/`Set-Content` or by an editor that prepends a byte-order mark now