Remove candidate assessment from Foundry - #8
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Candidate Assessment was added here by mistake. Foundry is the build process, not the home for unrelated personal skills.\n\nThe verified skill and its five contract tests now live in a separate private repository. This removes the public skill bundle and its README entry from Foundry.\n\nValidation:
[context-budgets] AGENTS.md: 6528 / 8192 bytes
[context-budgets] source commands: 106206 / 112640 bytes across 19 files
[context-budgets] 8556 .cursor/commands/test-it.md
[context-budgets] 7213 .cursor/commands/challenge-implementation-1.md
[context-budgets] 7060 .cursor/commands/wrap-up.md
[context-budgets] 6829 .cursor/commands/challenge-plan-3.md
[context-budgets] 6760 .cursor/commands/challenge-implementation-5.md
[context-budgets] 6730 .cursor/commands/security-scan.md
[context-budgets] 6286 .cursor/commands/build-it.md
[context-budgets] 5894 .cursor/commands/challenge-plan-1.md
[context-budgets] 5362 .cursor/commands/frame-it.md
[context-budgets] 5336 .cursor/commands/construct-the-plan.md
[context-budgets] 5333 .cursor/commands/challenge-plan-4.md
[context-budgets] 5103 .cursor/commands/challenge-implementation-4.md
[context-budgets] 5077 .cursor/commands/challenge-plan-5.md
[context-budgets] 4903 .cursor/commands/challenge-plan-2.md
[context-budgets] 4715 .cursor/commands/challenge-implementation-3.md
[context-budgets] 4685 .cursor/commands/challenge-implementation-2.md
[context-budgets] 3861 .cursor/commands/handoff.md
[context-budgets] 3483 .cursor/commands/quiz.md
[context-budgets] 3020 .cursor/commands/start-up.md
✔ only the five prose-heavy stages require an explicit live voice gate (2.637333ms)
✔ middle review rounds use freshness escapes while rounds 1 and 5 require full reads (0.992417ms)
✔ test-it and wrap-up share the validation ladder without a universal green rerun (0.699583ms)
[context-budgets] OVER: source commands is 112641 bytes, 1 byte above its 112640-byte limit
[context-budgets] OVER: AGENTS.md is 8193 bytes, 1 byte above its 8192-byte limit
[context-budgets] OVER: AGENTS.md is 8193 bytes, 1 byte above its 8192-byte limit
✔ passes ordinary input and reports the measured command set (2.112042ms)
✔ the exact boundaries pass and one byte over fails with an exact overage (35.049375ms)
✔ normalizes CRLF and lone CR before measuring (3.405209ms)
✔ refuses missing AGENTS.md, a missing command directory, and an empty command directory (4.687917ms)
✔ refuses an unreadable command file (1.662375ms)
✔ counts symlinked markdown commands instead of permitting a budget bypass (1.195542ms)
✔ report mode stays informational while check mode enforces the ceiling (64.198792ms)
✔ the extensionless CLI spelling still executes the checker (34.271084ms)
✔ importing the checker never measures the checkout or exits (28.337917ms)
[jargon] HIT: docs/page.md:3: "zorbly flux" -> try: "plain thing"
[jargon] 1 listed phrase(s) in committed prose. Rewrite the prose; never widen an exclusion to dodge the gate.
[jargon] HIT: .cursor/commands/thing.md:1: "zorbly flux" -> try: "plain thing"
[jargon] 1 listed phrase(s) in committed prose. Rewrite the prose; never widen an exclusion to dodge the gate.
[jargon] HIT: docs/page.md:1: "zorbly flux" -> try: "plain thing"
[jargon] 1 listed phrase(s) in committed prose. Rewrite the prose; never widen an exclusion to dodge the gate.
[jargon] HIT: scripts/a.js:1: "zorbly flux" -> try: "plain thing"
[jargon] HIT: tests/b.js:3: "zorbly flux" -> try: "plain thing"
[jargon] 2 listed phrase(s) in committed prose. Rewrite the prose; never widen an exclusion to dodge the gate.
[jargon] BROKEN LIST: scripts/phrase-list.json — phrase list is unreadable or not valid JSON (Expected property name or '}' in JSON at position 2 (line 1 column 3)). The gate refuses to pass with a damaged config.
[jargon] BROKEN LIST: scripts/phrase-list.json — 1 entr(y/ies) not shaped {"bad": string, "good": string}:
{"bad":"half an entry"} The gate refuses to pass with a damaged config.
[jargon] HIT: docs/handoff.md:2: "zorbly flux" -> try: "plain thing"
[jargon] 1 listed phrase(s) in committed prose. Rewrite the prose; never widen an exclusion to dodge the gate.
✔ a clean tree passes (38.271833ms)
✔ a listed phrase in doc prose fails with file, line, and rewrite (36.25425ms)
✔ a listed phrase in a command file fails (32.104834ms)
✔ matching is case-insensitive (36.506625ms)
✔ fenced blocks and inline code spans do not trip the gate (33.637375ms)
✔ a listed phrase in a JS line comment and a multi-line block comment fails (35.687208ms)
✔ string and template literals are code, not prose (36.176208ms)
✔ a doubled slash inside a string literal is not a comment (33.57475ms)
✔ an unparseable list fails loud instead of passing silently (32.936458ms)
✔ a malformed entry fails loud and names the entry (30.840833ms)
✔ the listed phrase inside a larger word does not fail the gate (31.501542ms)
✔ a whole-document markdown copy wrapper is scanned as prose (33.449625ms)
✔ the phrase list itself is not scanned (32.685208ms)
✔ the real repo passes its own jargon gate (45.646ms)
✔ the shipped phrase list holds its validity properties (2.716291ms)
✔ the shipped phrase list guards the em dash (0.135625ms)
✔ the wrap-up growth step invokes the gate after appending (0.126292ms)
[links] DEAD: docs/page.md:3:
AGENTS.md § Ghost Section(no heading "Ghost Section" in AGENTS.md)[links] 1 dead reference(s). Fix the reference or the file it points at.
[links] DEAD: docs/page.md:1: AGENTS.md § Nonexistent Thing (no such heading in AGENTS.md)
[links] 1 dead reference(s). Fix the reference or the file it points at.
[links] DEAD: docs/page.md:1:
node scripts/gone.js(script scripts/gone.js not found)[links] 1 dead reference(s). Fix the reference or the file it points at.
[links] DEAD: docs/page.md:1:
/made-up-command(no command file .cursor/commands/made-up-command.md)[links] 1 dead reference(s). Fix the reference or the file it points at.
[links] DEAD: docs/page.md:1:
nowhere/<name>/SKILL.md(path does not resolve)[links] 1 dead reference(s). Fix the reference or the file it points at.
[links] DEAD: docs/page.md:1: ](missing.md) (target docs/missing.md not found in the repo)
[links] 1 dead reference(s). Fix the reference or the file it points at.
[links] DEAD: docs/page.md:1: docs/absent.md (prose path does not resolve)
[links] 1 dead reference(s). Fix the reference or the file it points at.
[links] DEAD: docs/page.md:1:
docs/../../escapee-links-fixture-Z2r4Ua.md(path does not resolve)[links] DEAD: docs/page.md:1: ](../../escapee-links-fixture-Z2r4Ua.md) (target ../escapee-links-fixture-Z2r4Ua.md not found in the repo)
[links] 2 dead reference(s). Fix the reference or the file it points at.
[links] DEAD: docs/page.md:1: ../../escapee-cite-links-fixture-cyzatC.md § Secret here (file ../../escapee-cite-links-fixture-cyzatC.md not found in the repo)
[links] 1 dead reference(s). Fix the reference or the file it points at.
[links] DEAD: docs/bad.md:3: ](../AGENTS.md#ghost-heading) (anchor #ghost-heading not found in AGENTS.md)
[links] 1 dead reference(s). Fix the reference or the file it points at.
[links] DEAD: docs/bad2.md:3: ](#no-such-anchor) (anchor not found in this file)
[links] 1 dead reference(s). Fix the reference or the file it points at.
✔ healthy fixture passes (41.242291ms)
✔ backticked section reference with a dead heading fails with file and line (34.600459ms)
✔ plain-prose citation with a dead heading fails; punctuation bounds the capture (33.184542ms)
✔ prose citation of a real heading passes even mid-sentence (36.096166ms)
✔ missing file reference fails (34.754083ms)
✔ unresolvable slash command fails while the external allowlist passes (34.299667ms)
✔ placeholder paths need only their static prefix; a missing prefix fails (33.880166ms)
✔ relative markdown link to a missing target fails; web links are ignored (31.495958ms)
✔ references inside fenced code blocks are ignored (33.924333ms)
✔ trailing sentence punctuation on a bare prose path is stripped (30.93775ms)
✔ a reference that climbs out of the repo with .. fails even when the outside file exists (29.634833ms)
✔ a plain-prose section citation cannot escape the repo either (34.285125ms)
✔ markdown anchor links resolve against real headings and fail on ghosts (87.422583ms)
✔ the real repo passes its own link check (34.934458ms)
✔ AGENTS.md still carries the "Voice" heading (0.217833ms)
✔ AGENTS.md still carries the "The flow guarantee" heading (0.106083ms)
✔ AGENTS.md still carries the "The background-work barrier" heading (0.071834ms)
✔ AGENTS.md still carries the "Plans" heading (0.059333ms)
[FAIL] .cursor/skills/engineering/SKILL.md: /var/folders/5x/22df57rj20jb1w7n5209br080000gn/T/wiki-pointers-6vj5jD/upstream/docs/wiki/engineering/gone.md does not resolve (renamed or deleted upstream?)
1 pointer failure(s). Fix the pointer or the fallback note; the wiki page may have moved upstream.
[FAIL] .cursor/skills/engineering/SKILL.md: carries checkout pointers but no raw-URL fallback note (raw.example.com/owner/repo); machines without the checkout lose their route
1 pointer failure(s). Fix the pointer or the fallback note; the wiki page may have moved upstream.
[FAIL] .cursor/skills/engineering/SKILL.md: /var/folders/5x/22df57rj20jb1w7n5209br080000gn/T/wiki-pointers-zApnbp/upstream/../outside.md escapes the checkout after resolving; pointers must stay under it
1 pointer failure(s). Fix the pointer or the fallback note; the wiki page may have moved upstream.
[wiki-pointers] missing --raw-host; this check refuses to guess a consumer's layout
✔ healthy consumer passes (35.754666ms)
✔ a pointer at a renamed page fails and names the token (34.008625ms)
✔ sentence-ending punctuation is stripped before resolving (31.662042ms)
✔ a carrier without the raw-URL fallback note fails (33.996125ms)
✔ a token that escapes the checkout after resolving fails (32.639583ms)
✔ absent checkout skips with exit 0 (34.143375ms)
✔ tilde-form pointers resolve when the checkout sits under HOME (32.384459ms)
✔ missing required arguments refuse loudly instead of guessing (31.637042ms)
[shapes] DRIFT: .claude/commands/alpha.md (differs from source)
[shapes] 1 generated file(s) out of sync. Edit .cursor/commands/ and run: npm run shapes
[shapes] DRIFT: .claude/commands/stray.md (no source produces this file)
[shapes] 1 generated file(s) out of sync. Edit .cursor/commands/ and run: npm run shapes
[shapes] DRIFT: .agents/skills/alpha/SKILL.md (missing)
[shapes] DRIFT: .agents/skills/alpha/agents/openai.yaml (missing)
[shapes] 2 generated file(s) out of sync. Edit .cursor/commands/ and run: npm run shapes
✔ generates a byte-identical Claude copy and a frontmattered Codex skill (39.621625ms)
✔ description falls back to the whole first line when it has no sentence break, and survives hostile punctuation (36.322208ms)
✔ confirm mode passes on a freshly generated tree (64.476917ms)
✔ confirm mode fails when a generated copy is edited directly (64.261584ms)
✔ confirm mode fails on an orphan file no source produces (64.674667ms)
✔ confirm mode fails when a shape is missing entirely (61.696875ms)
✔ the real repo tree is in sync (confirm against the actual shapes) (32.696375ms)
[install] target resolves to /Users/simoncorry/Sites/foundry/tmp-install-refusal-probe, inside the Foundry repo itself; install into your own project instead
[install] target resolves to /Users/simoncorry/Sites/foundry/sub, inside the Foundry repo itself; install into your own project instead
[install] target /var/folders/5x/22df57rj20jb1w7n5209br080000gn/T/install-file-p9devv/plain.txt is a file; pass a directory
✔ fresh install populates the documented set and only that set (67.576208ms)
✔ install copies the budget checker without rewriting consumer package scripts (63.969583ms)
✔ --wiki includes the reference library (70.348375ms)
✔ re-run updates a changed copy and reports it (107.90575ms)
✔ dry run reports without writing (30.604042ms)
✔ a target inside the Foundry repo refuses before creating anything (28.286583ms)
✔ a symlinked parent pointing into the repo cannot dodge the refusal (27.179375ms)
✔ a file as target refuses (27.551875ms)
✔ every motion page names its MIT source (0.834792ms)
✔ the overview carries the full attribution with both source repos (0.182125ms)
✔ matches at sentence start and mid-sentence, any capitalization (1.361541ms)
✔ the same letters inside a larger word do not match (0.081166ms)
✔ punctuation right after a word-edged phrase still matches (0.055167ms)
✔ a punctuation-edged phrase keeps substring semantics (1.219416ms)
✔ unicode neighbours count as word characters (0.067125ms)
✔ phrases containing regex special characters are matched literally (0.292834ms)
✔ fenced blocks are skipped and line numbers survive (0.65ms)
✔ inline code spans are blanked (0.07775ms)
✔ a tilde fence works like a backtick fence (0.081917ms)
✔ a longer closing run still closes the fence (0.096ms)
✔ a whole-document markdown fence is scanned as prose (0.064417ms)
✔ a markdown wrapper behind a lead-in sentence is still scanned (the handoff shape) (0.049417ms)
✔ a real code fence inside a wrapper is skipped; wrapper prose around it is scanned (0.042292ms)
✔ a plain code fence is still skipped even with a lead-in (0.604042ms)
✔ a non-markdown language fence stays code (0.117334ms)
✔ extractProseLines reports 1-based line numbers (0.072708ms)
✔ a non-array root throws (0.251458ms)
✔ a malformed entry throws and names the entry (0.087792ms)
✔ an extra key on an entry is malformed (0.049458ms)
✔ loadPhraseList throws on unreadable or invalid JSON (0.697709ms)
✔ a valid list loads and compiles (0.458667ms)
[rotate-sessions] REFUSING to rotate: entry heading(s) without a YYYY-MM-DD date:
someday:
[rotate-sessions] Fix the heading(s); nothing was written.
[rotate-sessions] REFUSING to rotate: entry heading(s) without a YYYY-MM-DD date:
2026-06-31:
[rotate-sessions] Fix the heading(s); nothing was written.
[rotate-sessions] LOSS CHECK FAILED: staged writes would change the entry set. Nothing was written.
✔ week math holds at year boundaries (2.053875ms)
✔ entries older than the current week rotate into per-week files (35.706667ms)
✔ a dateless entry heading refuses the whole run with nothing written (34.85675ms)
✔ an impossible calendar date refuses instead of rolling over (35.831042ms)
✔ everything in the current week is a no-op (35.115625ms)
✔ a heading-shaped line inside a fence stays part of its entry (35.500708ms)
✔ preamble above the first entry survives rotation verbatim (33.383875ms)
✔ a missing log is a clean no-op for copy-install projects (31.740584ms)
✔ dry-run prints the plan and writes nothing (33.083208ms)
✔ rotation appends to an existing week file without losing its entries (65.564958ms)
✔ the loss check refuses when an archive would swallow an appended entry (29.954375ms)
✔ the extensionless spelling still runs the rotation (32.382416ms)
✔ importing the module never runs a rotation (30.910833ms)
✔ parseLog splits entries and keeps preamble separate (0.288917ms)
✔ flags a listed phrase with its rewrite (32.654708ms)
✔ matching is case-insensitive (38.614916ms)
✔ a clean draft passes (31.245958ms)
✔ kill switch silences the gate entirely (30.005625ms)
✔ empty stdin reports itself instead of passing (31.279667ms)
✔ hits report their line number (33.802083ms)
✔ the listed phrase inside a larger word does not match (34.118792ms)
✔ code blocks in a draft are not flagged (33.945625ms)
✔ a whole-draft markdown copy wrapper is still scanned (33.028125ms)
✔ every page in the real wiki is listed in its index (1.692708ms)
✔ an unlisted page is caught as an orphan (1.751042ms)
✔ anchor links still count as listing the page (0.99ms)
ℹ tests 119
ℹ suites 0
ℹ pass 119
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 583.43325
[shapes] OK: 19 commands, all three shapes in sync.
[links] OK: every reference resolves.
[jargon] OK: no listed phrases in committed prose (93 phrases checked). passes (119 tests).