refactor: shared agent workflows (F01) and one application registry (F02)
Checkpoint for the 2026-09-11 project review remediation. Work by a previous agent that ran out of context; committed unchanged as a rollback point before the remaining findings land on top of it. F01 — the two agent directories had drifted into different processes - Six shared workflows under `resume_builder/reference/workflows/`; both `.agents/skills/` and `.claude/skills/` are now thin entrypoints that route to the same file instead of carrying full copies. - The `.claude` copies were the stale side: fixed bullet line variants and character budgets that the newer process had already dropped. Removing them is the point of the change, not collateral. - Parity/link regression test added; corrected the top-level file map, which pointed at a directory that does not exist. F02 — application status was stored in four places and disagreed - New registry `job_scout/state/applications.json` (26 records) with `application_records.py` (schema, validation, transactional write) and `application_tracker.py` (add/update, no quota). - AGENTS.md and CLAUDE.md no longer keep their own status tables; both point at `current_applications.md`, generated from the registry. - Interview-reached is now independent of outcome, so a withdrawal after an interview can record both facts. The old tables are preserved verbatim in `job_scout/state/history/application_status_before_2026-09-11.json`. Verification: `python -m unittest discover -s tests -v` — 18/18 pass. Spot-checked that the detailed SBB and Kdo Cy notes survived the migration into the registry rather than being flattened. Known unresolved, deliberately not invented (see FIX_PROGRESS.md): Aker BP's application date and its Adjacent-despite-79 classification. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Qej5SBvhcbGXHwLqNWiskM
This commit is contained in:
1 parent
0d999ab21b
commit
afdef7eb94
33 files changed
+1558
-1768
No files matched your search
@@ -66,6 +66,20 @@ class CanonicalSystemTests(unittest.TestCase):
|
||||
|
||||
|
||||
class WorkflowPolicyTests(unittest.TestCase):
|
||||
def test_agent_entrypoints_resolve_the_same_shared_workflow(self) -> None:
|
||||
for entry in sorted((ROOT / ".agents/skills").glob("*/SKILL.md")):
|
||||
other = ROOT / ".claude/skills" / entry.parent.name / "SKILL.md"
|
||||
bodies = []
|
||||
for path in (entry, other):
|
||||
body = re.sub(r"\A---\n.*?\n---\n", "", path.read_text(encoding="utf-8"), count=1, flags=re.S)
|
||||
bodies.append(body)
|
||||
links = re.findall(r"\]\(([^)]+\.md)\)", body)
|
||||
self.assertEqual(1, len(links), path)
|
||||
workflow = (path.parent / links[0]).resolve()
|
||||
self.assertEqual(ROOT / "resume_builder/reference/workflows" / (entry.parent.name + ".md"), workflow)
|
||||
self.assertIn("Shared workflow version:", workflow.read_text(encoding="utf-8"))
|
||||
self.assertEqual(*bodies)
|
||||
|
||||
def test_skills_use_minimal_valid_frontmatter(self) -> None:
|
||||
for skill_file in sorted((ROOT / ".agents/skills").glob("*/SKILL.md")):
|
||||
text = skill_file.read_text(encoding="utf-8")
|
||||
|
||||
Reference in new issue
Block a user