Commit Graph
7 Commits
Author SHA1 Message Date
a59535083f test(reset): let a personalized profile carry its own ## sections (#676)
* test(reset): let a personalized profile carry its own ## sections

test_full_file_skeletons_keep_the_shipped_headings compares /reset's
skeleton with the ## headings of 01-candidate-profile.md and
02-behavioral-profile.md exactly. On a fork those files are the user's
populated profile, so adding one section of their own (Certifications,
say) fails the suite on the fork's CI and in local runs, though /reset
is fine.

Off upstream (is_upstream_checkout(), as the placeholder and
template-token guards already use) the check now requires every skeleton
heading to appear in the file in order, so a renamed, dropped or
reordered template heading still fails. Upstream keeps the exact
comparison. A new test pins the in-order helper, since the fork branch
never runs in upstream CI.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* changelog: place the #676 entry under [Unreleased]

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Mads Lorentzen <madslorentzen_17@hotmail.com>
2026-10-19 20:06:16 +02:00
Rudy Mizrahi Celekli d590aa1b10 fix(reset): clear document entries while preserving scaffolds (#580)
* fix(reset): clear document entries while preserving scaffolds

* fix(reset): preserve scaffolds across Bash versions

* docs(reset): keep document inventory before presentation heading
2026-10-18 07:33:41 +02:00
Ayobami Adegoke 709339758a fix(reset): keep the Languages table header under Identity in the candidate-profile skeleton (#613)
04-job-evaluation.md's Language Gate and job-scraper/search-queries.md's
query-language generation both read "your Languages table" from
01-candidate-profile.md, but the skeleton /reset wrote left "## Identity"
empty, so after a reset /rank and /scrape looked for a table the file no
longer had.

Carry "### Languages" and the table's header and separator rows in the
skeleton. The test derives both rows from the shipped file and pins that
the placeholder data row is not reintroduced; it fails on master.

Follow-up noted on #532.
2026-10-17 19:58:20 +02:00
Ayobami Adegoke eaa73e55ab fix(reset): keep the framework_version frontmatter on the two files /reset profile rewrites (#532)
The full-file skeletons for 01-candidate-profile.md and
02-behavioral-profile.md started at the "#" title, while the shipped
files open with a "---" block carrying framework_version. Applied as
written, one /reset profile left both files failing
tools/check_framework_version.py ("missing 'framework_version' in
frontmatter") and invisible to tools/check_upstream_updates.py, which
records a configuration error for a file with no local version - the
fork update path every fork is sent through.

Say to keep the frontmatter block and replace only what follows, with a
note under "Profile reset" that the marker is framework data, never
candidate data. The version is not hardcoded into the skeleton, where it
would go stale on the next bump. A derived test applies each skeleton
the way the step says and asserts the shipped file's version still
parses out unchanged; it fails on master for both files.
2026-10-15 11:30:49 +02:00
Ayobami Adegoke a011214d60 fix(reset): target the headings the shipped skill files actually have (#519)
* fix(reset): target the headings the shipped skill files actually have

Two of /reset profile's Step 3 targets had drifted from the files they
rewrite.

The 05-cv-templates.md step anchored on a section beginning
"**Profile statement templates", a line the guide has never contained
(its heading is "**Create 2-3 profile statement templates for your main
role types:**"), so the wipe found nothing: the user's role-tailored
profile statements, and any *[Used for: ...]* statements /setup Path A
extracted from archived applications, survived a reset that reported
success.

The 02-behavioral-profile.md skeleton used headings the shipped file
does not have ("Strongest Behavioral Traits", "How I Work Best", a
truncated "Growth Areas") and dropped "## Core Behavioral Drives" - the
assessment table /setup collects and /interview reads - so one reset
left the file's headings permanently different from every other fork's.

Anchor on the real heading and re-emit it in the replacement; carry the
shipped headings in order in the skeleton. 01-candidate-profile.md and
07-interview-prep.md were already correct. Two new tests derive both
checks from the shipped files, so a renamed heading fails until /reset
follows it; both fail on master.

* test(reset): place the heading guards above the __main__ guard so a direct run sees them

python tests/test_reset_command.py ran only the five old tests; unittest
discover imports the module and saw all seven, which is why CI was green.
Also drop the CHANGELOG's claim that /setup and /interview name the Core
Behavioral Drives table - neither does.
2026-10-08 21:23:59 +02:00
Prince chukwuemekaandCursor d82df2fe51 fix(reset): clear the two personalized skill files /reset profile missed (#364) (#365)
/setup Step 3 populates six skill files; /reset profile cleared four.
04-job-evaluation.md was listed by name under "files NOT touched (they
contain framework rules, not candidate data)" while Step 3.4 writes the
user's match areas, career goals, energizing/draining tasks, financial
situation and schedule constraints into it - and ci.yml's
placeholder-integrity job already guards that file under "personal data
may have been committed". job-scraper/search-queries.md, which Step 3.8
fills with their job boards, role titles, domain keywords, city and
commute tiers, appeared nowhere in reset.md at all.

Both are tracked and unignored, so Step 1 asked the user to confirm a
wipe list that omitted them and Step 4 then reported a blank profile
while /rank kept scoring against the old skills and career goals and
/scrape kept running the old city and queries. Re-running /setup does
not necessarily clean them either: Path A skips files whose content is
"no longer placeholder text", and Step 3.8 is phrased as token
replacement, with no tokens left to replace.

Both files are now previewed and cleared, restoring their /setup
placeholders while preserving the scoring framework and the query
structure. 04-job-evaluation.md leaves the preserved list, which keeps
03-writing-style.md and 06-cover-letter-templates.md - the latter
correctly, since its [YOUR_NAME] tokens are LaTeX scaffolding Step 3
never writes to. CLAUDE.md and cv/main_example.tex stay outside the
profile scope, which reset.md:13 defines as skill files only; the
preview and Step 4 now say they still hold personal data instead of
implying a full wipe.

tests/test_reset_command.py gains a profile-scope guard beside its
documents-scope one, deriving the file list from /setup Step 3's own
headings rather than hardcoding it, so a future /setup target that
/reset forgets fails in CI. Against master the three cases fail on
exactly the defect: preview missing search-queries.md, execution
missing both, and the preserved list mislabelling 04-job-evaluation.md
as framework-only - the last of which a filename search alone would
have missed.

Closes #364

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-25 16:55:42 +02:00
Mads LorentzenandClaude Opus 5 2036b97040 fix(reset): include documents/postings/ in the documents scope
/reset's preview, delete block, and scope description all skipped
documents/postings/ - the drop folder for hand-pasted posting text,
documented in documents/README.md and protected as personal data by
security_guards.py - and then asserted "The documents/ folder is now
empty." The new test derives the folder list from the git tree, so any
future drop folder fails it until /reset covers it. Review finding F26
(2026-08-19).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-19 19:50:11 +02:00