Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
370 commits
Select commit Hold shift + click to select a range
e0d7800
fix(ai_assist): bridge from finalize_session to learning DBs
yashb98 May 4, 2026
a15b0f2
fix(nav): _click_navigation falls back to CSS submit selectors + diag…
yashb98 May 4, 2026
74b9a9d
fix(materials): align application_materials to safe_company dir
yashb98 May 4, 2026
dba9d2e
fix(strategy_reflector): replace removed get_llm(tier=) with model kwarg
yashb98 May 4, 2026
c019389
fix(option-match): country-suffix preference for ambiguous options
yashb98 May 4, 2026
0844b65
docs(plan): add Task 16 — session-preserved submit gate to HITL plan
yashb98 May 4, 2026
2a5a588
fix(live-review): map _mark_expired status to Notion-allowed Withdrawn
yashb98 May 4, 2026
2f48bce
fix(live-review): reuse in-progress ATS tab instead of re-clicking Apply
yashb98 May 4, 2026
6fcd7a7
fix(driver): prefer_url tab attach + skip redundant initial navigate
yashb98 May 4, 2026
e3f8579
fix(navigator): gate DOM-fast-path on domain prior success (dynamic)
yashb98 May 4, 2026
149eb82
fix(form): scroll_into_view_if_needed timeout 30s → 5s + skip-on-fail
yashb98 May 5, 2026
db74991
fix(driver): _smart_scroll scroll_into_view 30s → 5s + skip on fail
yashb98 May 5, 2026
ce0d341
fix(scanner): multi-form fallback picks apply form over page noise
yashb98 May 5, 2026
a4d5b45
fix(retry): fast-fail on permanent LLM failures (Ollama OOM etc.)
yashb98 May 5, 2026
3bf4269
fix(corrections): snapshot live form state before each Next click
yashb98 May 5, 2026
589b213
fix(nav): pin _phase_observe to attached tab; never blind-pick pages[-1]
yashb98 May 5, 2026
388fe42
feat(scanner): detect Oracle HCM ul[role=list]+button Yes/No widgets
yashb98 May 5, 2026
27c907b
fix(uploader): don't skip hidden file inputs behind drag-and-drop zones
yashb98 May 5, 2026
a297ab4
fix(nav): make fill_and_advance terminal so file uploads run
yashb98 May 5, 2026
c3910a8
fix(uploader): re-fire input/change events for React drop-zones
yashb98 May 5, 2026
9c4fb14
feat(scanner+filler): detect ARIA switches + salary number inputs
yashb98 May 5, 2026
805702e
feat(scanner): vision-gate predicate for sparse-scan fallback
yashb98 May 5, 2026
57d17a6
feat(scanner): vision_augment_scan finds DOM-missed fields
yashb98 May 5, 2026
248bebb
feat(scanner): wire vision-augment into scan_fields on sparse forms
yashb98 May 5, 2026
7b81c14
feat(gotchas): widget_patterns table for per-domain learned shapes
yashb98 May 5, 2026
a0ed467
feat(ai_assist): capture DOM signature in record_fix
yashb98 May 5, 2026
d28d1ab
feat(scanner): _scan_learned_patterns strategy reads GotchasDB
yashb98 May 5, 2026
14f26df
feat(corrections): auto-capture DOM signatures on user fix
yashb98 May 5, 2026
808353a
feat(scanner): semantic question extractor
yashb98 May 5, 2026
3b135f8
feat(scanner): semantic widget proximity match
yashb98 May 5, 2026
ee725f7
feat(scanner): semantic widget classifier
yashb98 May 5, 2026
22e9767
feat(scanner): wire semantic strategy into parallel runner
yashb98 May 5, 2026
1d39c42
feat(filler): dispatcher uses semantic-scanner selector directly
yashb98 May 5, 2026
ef09526
docs(plans): runbook for live Revolut validation of B/C/A plans
yashb98 May 5, 2026
86790bd
fix(filler): per-widget dispatch for semantic/learned fields
yashb98 May 6, 2026
c909fae
fix(cv): harden CV/cover-letter generation against PDF, validation, a…
yashb98 May 6, 2026
f0631a6
fix(nav): consume reasoner advance_button + action='done' instead of …
yashb98 May 6, 2026
a499cd3
feat(filler): auto-escalate stuck fills to CognitiveEngine
yashb98 May 6, 2026
c0a3796
fix(filler): _fill_resolved_widget handles text/textarea + verbose es…
yashb98 May 6, 2026
a2b0557
docs(plans): universal dynamic form-fill — gap inventory + plan F1-F6
yashb98 May 6, 2026
9152796
fix(nav): F1 — extend Plan D pattern across the rest of the codebase
yashb98 May 6, 2026
6eb367c
fix(scanner): F4 — drop noise labels before they reach _fill_by_label
yashb98 May 6, 2026
68b9bb1
feat(scanner): F2 — pre-fill option scanning for closed comboboxes
yashb98 May 6, 2026
f5d0fd9
feat(filler): F3 — extend _fill_resolved_widget for range/rich-text/n…
yashb98 May 6, 2026
7bdb464
feat(filler): F6 — _escalate_fill retry loop with failure context
yashb98 May 6, 2026
72a7fc7
docs(plans): F5 deep regex-classification purge — 4 files, 4 sessions
yashb98 May 6, 2026
c42d86f
docs: complete URL-to-submit apply pipeline architecture
yashb98 May 6, 2026
2b21009
docs: 100%-verified pipeline coverage (212/212 transitive modules)
yashb98 May 6, 2026
f6be215
fix: 3 wiring bugs surfaced by live Revolut run (apply4.log)
yashb98 May 6, 2026
c179a72
docs(plans): line-by-line pipeline audit prompt — 11 subsystems
yashb98 May 6, 2026
1c36f16
fix(form_fill_dispatch): S1 audit — verification readback + radio sem…
yashb98 May 6, 2026
f7341c2
docs(audit): subsystem-1 — record wider test sweep result
yashb98 May 6, 2026
96cf428
fix(form_engine): S2 audit — intent_healing prompt + short-alias subs…
yashb98 May 6, 2026
c572df7
docs(audit): subsystem-2 — form_fill_widgets line-by-line read
yashb98 May 6, 2026
ec083e3
docs(audit): S2 — note wiring-step weakness + M-A regex rationale
yashb98 May 6, 2026
87d407c
fix(navigation): S3 audit — drop dead cog escalation + unblock email …
yashb98 May 6, 2026
5617ea2
docs(audit): subsystem-3 — navigation line-by-line read
yashb98 May 6, 2026
6b05c8b
docs(audit): S3 — note CLAUDE.md cog-escalation claim + test patch scope
yashb98 May 6, 2026
2317f13
refactor(navigation): S3 audit — clear all 11 minors + M-D one-liner
yashb98 May 6, 2026
a747f16
fix(screening): S4 audit — 4 blockers (UK regex, relocate parens, qdr…
yashb98 May 7, 2026
5d449f3
docs(audit): subsystem-4 — screening_pipeline line-by-line read
yashb98 May 7, 2026
e12cc99
docs(audit): rollup worklist — deferred items from S1-S4
yashb98 May 7, 2026
aae39a2
fix(screening): S4 audit follow-up — MatchExcept schema + B-2 distinc…
yashb98 May 7, 2026
be177f1
fix(post_apply): S5 audit — 3 blockers (transfer signal, post_apply d…
yashb98 May 7, 2026
4b3174b
docs(audit): subsystem-5 — post_apply line-by-line read
yashb98 May 7, 2026
8f2f21b
fix(cognitive): S6 audit — 1 blocker + 3 majors (None-score crash, pe…
yashb98 May 7, 2026
0d7d564
docs(audit): subsystem-6 — cognitive_engine line-by-line read
yashb98 May 7, 2026
7e10b10
fix(scan): S7 audit B-1 — process_single_url tier comparison
yashb98 May 7, 2026
45749a2
fix(skill_gap): S7 audit B-2 — drop import-time DB init
yashb98 May 7, 2026
0de4527
fix(blocklist): S7 audit B-3 — bounded Notion pagination loop
yashb98 May 7, 2026
4fa9fb0
fix(pre_screen): S7 audit M-A + M-B — log + reorder
yashb98 May 7, 2026
6df1fcc
docs(audit): subsystem-7 — pre_screen line-by-line read
yashb98 May 7, 2026
0cbca4c
docs(audit): S7 follow-up — wider-sweep result note
yashb98 May 7, 2026
21e836d
fix(materials): S8 audit B-1 — lazy DB-derived archetype default profile
yashb98 May 8, 2026
d1252a9
fix(materials): S8 audit B-2 + M-B/C/D/E — log silent swallows
yashb98 May 8, 2026
25cff0c
docs(audit): subsystem-8 — materials line-by-line read
yashb98 May 8, 2026
bdb6892
fix(scan_loop): S9 audit B-1 — restore liveness filter
yashb98 May 8, 2026
07f4744
docs(audit): subsystem-9 — scan_loop line-by-line read
yashb98 May 8, 2026
e93320e
fix(scan_loop): S9 audit M-A — guard linkedin record_success on zero …
yashb98 May 8, 2026
aa6fe74
fix(optimization): S10 audit B-1 + M-A — surface forced_level overrid…
yashb98 May 8, 2026
619ee4c
fix(optimization): S10 audit M-B + M-C — drop jobpulse import + promo…
yashb98 May 8, 2026
257e77d
docs(audit): subsystem-10 — optimization_engine line-by-line read
yashb98 May 8, 2026
84ede47
docs(audit): S6 — cross-reference S10 classifier change
yashb98 May 8, 2026
e9b2919
fix(memory_layer): S11 audit B-1 — implement ForgettingEngine.sweep()
yashb98 May 8, 2026
45432ec
fix(memory_layer): S11 audit B-2 — guard Qdrant writes against embedd…
yashb98 May 8, 2026
d7bab1e
docs(audit): subsystem-11 — memory_layer line-by-line read
yashb98 May 8, 2026
a66e39d
fix(ats_adapters): S12 audit — 1 blocker + 5 majors + 1 minor
yashb98 May 8, 2026
067e6eb
docs(audit): subsystem-12 — ats_adapters line-by-line read
yashb98 May 8, 2026
89b9545
docs(audit): consolidated pipeline-bugs catalog across 12 subsystems
yashb98 May 8, 2026
78a33c4
docs(audit): /fix-pipeline-bugs session runner — 18-session plan
yashb98 May 8, 2026
2ab8ffe
fix(pipeline-bugs-S1): doc batch — close 22 contract lies (Section 6)
yashb98 May 8, 2026
0ca44dd
docs(pipeline-bugs-S1): backfill commit hash 2ab8ffe in audit table
yashb98 May 8, 2026
06b6a83
fix(pipeline-bugs-S2): lint rules — bug-class recurrence prevention
yashb98 May 8, 2026
f4803b1
fix(pipeline-bugs-S3): test-DB isolation — close cognitive_outcomes leak
yashb98 May 8, 2026
d72595c
docs(pipeline-bugs-S3): backfill commit hash f4803b1 in audit table
yashb98 May 8, 2026
18464fe
fix(pipeline-bugs-S4): dead code — Tier-1 safe deletions (18 of 34 rows)
yashb98 May 8, 2026
8aa82fc
docs(pipeline-bugs-S4): backfill commit hash 18464fe in audit table
yashb98 May 8, 2026
c812914
fix(pipeline-bugs-S5): wire-or-delete decisions — annotate the audit …
yashb98 May 8, 2026
4848230
docs(pipeline-bugs-S5): backfill commit hash c812914 in audit table
yashb98 May 8, 2026
7409548
fix(pipeline-bugs-S6): linker — wire AutonomousLinker into SyncService
yashb98 May 8, 2026
c8756e0
docs(pipeline-bugs-S6): backfill commit hash 7409548 in audit table
yashb98 May 8, 2026
ef7ae66
fix(pipeline-bugs-S7): memory reads — SQLite-first + SemanticMemory e…
yashb98 May 8, 2026
b21eee9
docs(pipeline-bugs-S7): backfill commit hash ef7ae66 in audit table
yashb98 May 8, 2026
03a4c9f
feat(profile-sync): mirror auto-portfolio entries into user_profile.d…
yashb98 May 8, 2026
323b9ed
fix(pipeline-bugs-S8): cognitive — escalation cost + flush + adaptati…
yashb98 May 8, 2026
55c85ec
fix(pipeline-bugs-S8b): add missing engine.py + audit doc files
yashb98 May 8, 2026
3af3ddf
docs(pipeline-bugs-S8): backfill commit hashes 323b9ed + 55c85ec in a…
yashb98 May 8, 2026
a8485bf
fix(pipeline-bugs-S9): scan_loop — block-event wiring for indeed + reed
yashb98 May 8, 2026
a40500c
docs(pipeline-bugs-S9): backfill commit hash a8485bf in audit table
yashb98 May 8, 2026
5b47982
fix(pipeline-bugs-S10): form_engine — port strategy.submit_selectors …
yashb98 May 8, 2026
85fdd45
docs(pipeline-bugs-S10): backfill commit hash 5b47982 in audit table
yashb98 May 8, 2026
93c1987
fix(cache-llm-S1): catalog every LLM call site
yashb98 May 8, 2026
cbf266a
docs(cache-llm-S1): backfill commit hash 93c1987 in catalog
yashb98 May 8, 2026
3de61d3
fix(cache-llm-S2): verify map_fields dict-first ordering at HEAD
yashb98 May 9, 2026
63dbae0
docs(cache-llm-S2): backfill commit hash 3de61d3 in catalog
yashb98 May 9, 2026
5c5841e
fix(cache-llm-S3): hiring-message cache + cache-hit log line
yashb98 May 9, 2026
c4ac56b
docs(cache-llm-S3): backfill commit hash 5c5841e in catalog
yashb98 May 9, 2026
4509f6d
fix(cache-llm-S4): tailored_cv cache (4 LLM calls → 0 on JD repeat)
yashb98 May 9, 2026
5875512
docs(cache-llm-S4): backfill commit hash 4509f6d in catalog
yashb98 May 9, 2026
0d72e07
chore(setup): guard hiring_message_cache against test-mode pollution
yashb98 May 9, 2026
7aba244
fix(cache-llm-S5): cover_letter polish cache (1 LLM call → 0 on JD re…
yashb98 May 9, 2026
19d3ae9
docs(cache-llm-S5): backfill commit hash 7aba244 in catalog
yashb98 May 9, 2026
e27534d
docs(spec): daily research journal v1 design
yashb98 May 9, 2026
8a9bcc8
fix(cache-llm-S6): verify page_reasoner cache (§2.2 #5 framing stale)
yashb98 May 9, 2026
6d7800e
docs(cache-llm-S6): backfill commit hash 8a9bcc8 in catalog
yashb98 May 9, 2026
0a3cfda
fix(cache-llm-S7): migrate strategy_reflector through cognitive engine
yashb98 May 9, 2026
24ab239
docs(cache-llm-S7): backfill commit hash 0a3cfda in catalog
yashb98 May 9, 2026
f5de8b5
fix(cache-llm-S8): final reconciliation + completion report
yashb98 May 9, 2026
11da01b
docs(cache-llm-S8): backfill commit hash f5de8b5 in catalog
yashb98 May 9, 2026
683e5ec
docs(plan): daily research journal v1 — 33-task TDD implementation plan
yashb98 May 9, 2026
31317ad
chore(setup): bump LLM client timeout + serialise cv_tailor on local …
yashb98 May 9, 2026
f6ced0d
fix(cache-llm-S7-EXT): migrate gmail_agent._classify_email through co…
yashb98 May 9, 2026
d4e22ef
docs(cache-llm-S7-EXT): backfill commit hash f6ced0d in catalog
yashb98 May 9, 2026
5ce0e51
docs(spec+plan): lift journal feature to research_journal/ root package
yashb98 May 9, 2026
f766d68
feat(agents): add Together AI provider for Qwen3-30B-A3B
yashb98 May 9, 2026
ffecd4d
chore(setup): LLM_MODEL_OVERRIDE env var for OpenAI-compatible providers
yashb98 May 9, 2026
6561f5d
fix(agents/test): reset all 3 provider globals; document force_cloud …
yashb98 May 9, 2026
4604836
feat(papers/store): add domain_tag/verification/summary_long/rank_rea…
yashb98 May 9, 2026
64d5761
docs(cache-llm): live §6 acceptance evidence — Kimi-powered cache-war…
yashb98 May 9, 2026
4ffd79e
chore(setup): _max_tokens_for_model — bump cap for reasoning models
yashb98 May 9, 2026
5dfe46b
chore(setup): per-domain LLM routing — reasoning vs content split
yashb98 May 9, 2026
5357ec8
docs(cache-llm): re-verification with per-domain routing — 80 % LLM c…
yashb98 May 9, 2026
ebce61e
feat(form_engine): reasoning-LLM field analyser before screening pipe…
yashb98 May 9, 2026
5636ab5
feat(research_journal): bootstrap package + journal-specific Pydantic…
yashb98 May 9, 2026
98f375a
feat(form_engine): always click-extract + stale-cache validation for …
yashb98 May 9, 2026
5702f95
feat(papers/journal): v0 anchor sets for domain classifier
yashb98 May 9, 2026
f22c60d
feat(papers/journal): domain classifier Pass 1 (embedding similarity)
yashb98 May 9, 2026
5e659a1
fix(research_journal): real embed_text wrapper + move anchors out of …
yashb98 May 9, 2026
3a38e9f
feat(papers/journal): domain classifier Pass 2 (LLM borderline)
yashb98 May 9, 2026
1d96c5f
fix(research_journal): widen Pass-2 except for non-dict JSON outputs
yashb98 May 9, 2026
6dc6372
feat(papers/journal): module-level classify_domain helper
yashb98 May 9, 2026
5bf853b
feat(papers/journal): results filter — has_results + paper_type
yashb98 May 9, 2026
dcf461e
feat(papers/ranker): lab-track-record boost (Anthropic/DM/FAIR/...)
yashb98 May 9, 2026
5b82ca6
feat(papers/ranker): repo-activity boost (+1.0 if commit within 14 days)
yashb98 May 9, 2026
caf0aa1
feat(papers/ranker): paper-type de-boost
yashb98 May 9, 2026
cbf6503
feat(papers/ranker): per-pick LLM rank_reason
yashb98 May 9, 2026
dfbba51
feat(papers/verifier): peer_reviewed check via Semantic Scholar
yashb98 May 9, 2026
6dbcc86
feat(papers/verifier): has_repo check with 24h SQLite cache
yashb98 May 9, 2026
aca261c
feat(papers/verifier): independent_citations via S2 (≥3 distinct labs)
yashb98 May 9, 2026
f661cf4
feat(papers/verifier): compose VerificationBadge from 4 checks
yashb98 May 9, 2026
aa3fc4c
feat(papers/journal): Extractor agent (PDF + abstract fallback)
yashb98 May 9, 2026
a62d066
feat(papers/journal): Writer agent with 6-section structure + word-co…
yashb98 May 9, 2026
1d9d117
feat(papers/journal): hallucination guard — claim extraction
yashb98 May 9, 2026
14e2422
fix(screening): EEO option-matching, LLM-output validation, cache dim…
yashb98 May 9, 2026
042ae05
feat(papers/journal): hallucination guard — deterministic grounding (…
yashb98 May 9, 2026
1320033
feat(papers/journal): hallucination guard regen loop + summarize_pape…
yashb98 May 9, 2026
4dec88e
feat(papers/fetcher): OpenReview ingestion (ICLR/NeurIPS/COLM, best-e…
yashb98 May 9, 2026
f4bad9c
fix(form_engine): option-validate _screen_questions_llm_batch output
yashb98 May 9, 2026
827f19e
feat(papers/fetcher): default fetch_all excludes HN/Reddit/Bluesky (o…
yashb98 May 9, 2026
73f9103
feat(research_journal/delivery): publish_journal_to_notion (free func…
yashb98 May 9, 2026
487f929
feat(research_journal/delivery): Telegram digest builder
yashb98 May 9, 2026
10dbc41
fix(form_filler): align screening answers to options before mapping
yashb98 May 9, 2026
729cfbb
feat(research_journal/pipeline): JournalPipeline orchestrator (daily_…
yashb98 May 9, 2026
e8188e9
feat(runner+cron): journal-daily + journal-quality-audit CLI handlers
yashb98 May 9, 2026
da0db4c
test(research_journal): live e2e test on 5 real papers
yashb98 May 9, 2026
d4ef9c1
feat(research_journal): weekly quality audit (hallucination rate + co…
yashb98 May 9, 2026
e031f60
feat(observability+correctness): DB instrumentation + 5 form-fill fixes
yashb98 May 10, 2026
3eedb67
feat(caches+kimi): cache backlog (Items 6/7/9/10/11/12) + Kimi mandate
yashb98 May 10, 2026
82ef08a
chore(measurement): scan_learning hit-rate scaffold + Setup-2 acceptance
yashb98 May 10, 2026
5e87075
docs(plan): live e2e dry-run goal — single-goal acceptance plan
yashb98 May 10, 2026
e0a88ff
feat(form-fill+reasoner+embedder): live e2e dry-run on Anthropic Gree…
yashb98 May 10, 2026
828e27a
chore(branch-sync): pre-existing modifications + audits + plans + .gi…
yashb98 May 10, 2026
824d3a5
feat(code-intelligence): migrate Voyage Code 3 → BGE-M3 (1024-dim)
yashb98 May 10, 2026
19e3282
chore(audit-infra): semantic-analysis skill + URL matrix updates
yashb98 May 10, 2026
21e6886
refactor(memory-layer): remove Voyage embedder path
yashb98 May 10, 2026
765cf23
refactor(code-intelligence): remove residual Voyage references
yashb98 May 10, 2026
34a4f0f
docs(audits): semantic-analysis cross-ATS audit + Phase 2 continuatio…
yashb98 May 10, 2026
3e776a9
feat(form-fill): silent field-drop invariant — surface every scanned …
yashb98 May 10, 2026
2fdc724
docs(audits): mark S12 LIVE VERIFIED on Graphcore — legal-name now em…
yashb98 May 10, 2026
4f1b575
feat(jd-metadata): adapter-agnostic title+company extraction via LLM
yashb98 May 10, 2026
6eacc5d
docs(audits): mark S6 LIVE VERIFIED — TP-11 closes (cascading TP-22 +…
yashb98 May 10, 2026
733d192
feat(memory-layer): retry + circuit-breaker for BGE-M3 (TP-17)
yashb98 May 10, 2026
1562d93
docs(audits): mark S10 LIVE VERIFIED — TP-17 closes (BGE-M3 loud-fail)
yashb98 May 10, 2026
a3074ad
feat(page-reasoner): bind JSON response_format + emit failure signal …
yashb98 May 10, 2026
e268787
docs(audits): mark S2 LIVE VERIFIED at network layer — TP-3 closes
yashb98 May 10, 2026
6c0e139
feat(vision-recovery): pin to OpenAI + chat.completions API (TP-21)
yashb98 May 10, 2026
3550e66
docs(audits): mark S11 LIVE VERIFIED at HTTP layer — TP-21 closes
yashb98 May 10, 2026
b3a365c
feat(screening-cache): profile_state_hash + jd_context_hash in cache …
yashb98 May 10, 2026
c518d3e
docs(audits): mark S1 LIVE VERIFIED at cache layer — TP-1 closes
yashb98 May 10, 2026
a552722
docs(audits): tighten S1 status — content correctness FAIL pending S13
yashb98 May 10, 2026
0fc7d46
fix(cognitive-routing): close cross-domain procedural-recall leak (S13)
yashb98 May 10, 2026
e6740a1
fix(screening-option-aligner): yes/no prefix tier closes EEO first-pa…
yashb98 May 10, 2026
4215db9
feat(semantic-decisions): per-decision audit log closes dimension H1 …
yashb98 May 10, 2026
69df8f1
merge: audit-slice-s3-semantic-decisions (per-decision audit log, dim…
yashb98 May 10, 2026
864a802
merge: audit-slice-s10-bgem3-loud-fail (TP-17, retry+circuit-breaker)
yashb98 May 10, 2026
f25802e
merge: audit-slice-s6-title-company-extractor (TP-11 adapter-agnostic…
yashb98 May 10, 2026
2774a69
merge: audit-slice-s1-cache-key (TP-1, profile_state_hash + jd_contex…
yashb98 May 10, 2026
60aa752
merge: audit-slice-s13-cognitive-leak (TP-25 cognitive routing leak g…
yashb98 May 10, 2026
21736d6
merge: audit-slice-s4-option-aligner-eeo (TP-7 yes/no prefix tier)
yashb98 May 10, 2026
2cf4322
merge: audit-slice-s2-page-reasoner-json (TP-3 JSON response_format +…
yashb98 May 10, 2026
ae09029
merge: audit-slice-s11-vision-recovery (TP-21 OpenAI pin + chat.compl…
yashb98 May 10, 2026
01b0533
merge: audit-slice-s12-fill-loop-invariant (TP-24 silent field-drop)
yashb98 May 10, 2026
4f6fbc8
Revert "merge: audit-slice-s11-vision-recovery (TP-21 OpenAI pin + ch…
yashb98 May 10, 2026
2451efc
docs(audits): document S11 revert + Kimi-vision redesign plan
yashb98 May 10, 2026
b181d4b
feat(vision-recovery): route via Kimi/Moonshot chat.completions (TP-2…
yashb98 May 10, 2026
6f79cf9
merge: audit-slice-s11-kimi-vision (TP-21 redesign — Kimi vision via …
yashb98 May 10, 2026
1830029
docs(audits): Phase 2B Anthropic Greenhouse evidence (S3+S4+S13 LIVE)
yashb98 May 10, 2026
16ae0f9
docs(audits): Phase 2B end-of-session — TP-26/27 + S17/S18 + continua…
yashb98 May 10, 2026
a843381
docs(audits): TP-28/S19 + TP-29/S20 — P0 gaps revealed by production-…
yashb98 May 10, 2026
769caa9
feat(audit-tooling): direct apply_job invoker for Phase 2B audit work
yashb98 May 10, 2026
10eec12
fix(screening-prompt): frame LLM as the candidate (first person), not…
yashb98 May 10, 2026
87a6c40
merge: audit-slice-s21-first-person-screening (TP-30 first-person scr…
yashb98 May 10, 2026
46e21c1
docs(audits): TP-30/S21 closed in-session — first-person screening pr…
yashb98 May 10, 2026
4837985
docs(audits): S21 LIVE URL verified — apply_job on real Anthropic Gre…
yashb98 May 10, 2026
c14968d
docs(audits): TP-31/32/33 (S22/S23/S24) + reordered continuation plan
yashb98 May 10, 2026
16555c4
docs(audits): live re-run verification — S21 confirmed, TP-34/S25 + T…
yashb98 May 10, 2026
c34c7d8
feat(form_engine): vision-canonical form verifier + correction loop (…
yashb98 May 11, 2026
e5e7177
docs(audits): S26-follow-up-E BLOCKED-WITH-PLAN — visa-No symptom two…
yashb98 May 11, 2026
adfbccc
fix(screening): S26-follow-up-F PARTIAL — drop UK-only visa_sponsorsh…
yashb98 May 11, 2026
b77a755
feat(form_engine): S26-follow-up-K SHIPPED-PARTIAL — single-shot comp…
yashb98 May 11, 2026
f0adaac
docs(audits): tighten S26-K Outcome 2 framing per code-review feedback
yashb98 May 11, 2026
88bd5a1
feat(form_engine): S26-follow-up-L SHIPPED-PARTIAL — vendor fallback …
yashb98 May 11, 2026
c1d5478
feat(form_engine): S26-follow-up-M — Playwright locator.screenshot() …
yashb98 May 12, 2026
2858336
docs(audits): S26-follow-up-M SHIPPED-PARTIAL — vision now sees form …
yashb98 May 12, 2026
4469cd4
fix(form_engine): S26-follow-up-M-5 — align caption + prompt ordinals…
yashb98 May 12, 2026
f702c86
fix(form_engine): S26-follow-up-M — sidecar reachability fields + cle…
yashb98 May 12, 2026
46eb6f9
fix(shared): S26-follow-up-M-2 — _MultiProviderLLM.bind() filters Ope…
yashb98 May 12, 2026
b3488e6
feat(form_engine): S26-follow-up-M-4 — surface scanner-seen unfilled …
yashb98 May 12, 2026
1dcdb27
docs(audits): S26-follow-up-N scoping prompt — scanner-complete cover…
yashb98 May 12, 2026
5097a3a
feat(form_engine): S26-follow-up-N-1 — scanner-complete coverage in v…
yashb98 May 12, 2026
af74d25
feat(form_engine): S26-follow-up-N-2 — DOM-level pre-check skips visi…
yashb98 May 12, 2026
7d57c6e
feat(form_engine): S26-follow-up-N-3 — verified_fills.db cache + fill…
yashb98 May 12, 2026
22f277a
docs(audits): S26-follow-up-N — SHIPPED section, acceptance gates, fo…
yashb98 May 12, 2026
3034813
feat(screening): O-1 — introspection_confirmation intent + SessionFil…
yashb98 May 12, 2026
132f375
feat(form_filler): O-2 — per-field shift-left validation with 3-strik…
yashb98 May 12, 2026
45feed4
feat(form_filler): O-3 — in-run filled-set blocks re-fills within the…
yashb98 May 12, 2026
1f89e53
feat(form_engine): O-4 — coverage_realtime sidecar block (fill-time v…
yashb98 May 12, 2026
344ad40
docs(audits): S26-follow-up-O — SHIPPED-PARTIAL (code complete, live …
yashb98 May 12, 2026
15a5488
fix(infra): kill Anthropic fallback, raise page-reasoner tokens to 40…
yashb98 May 12, 2026
902fee3
refactor(llm): hard-delete Claude / GPT / Gemini code paths — Kimi + …
yashb98 May 12, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion .claude/agents/code-reviewer.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ model: sonnet

You are a code reviewer specializing in multi-agent LangGraph systems.

Read @docs/rules.md for the full list of constraints and conventions before reviewing.
Read @docs/rules.md and `.claude/rules/` for the full list of constraints and conventions before reviewing.

Review code for:

Expand Down
2 changes: 1 addition & 1 deletion .claude/agents/db-auditor.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
description: "Scans test files for accidental production database references. Prevents the 2026-03-25 incident."
tools: Read, Grep, Glob, LS
tools: Read, Grep, Glob
disallowedTools: Write, Edit, Bash
model: haiku
maxTurns: 10
Expand Down
2 changes: 1 addition & 1 deletion .claude/agents/memory-debugger.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ You are a memory system debugger for this multi-agent project.

Read @docs/hooks.md for the 5-tier memory architecture table and tool permission model.

When debugging `shared/memory_layer.py`:
When debugging `shared/memory_layer/` (package: `_manager.py`, `_stores.py`, `_entries.py`, `_pattern.py`, `_router.py`, `_sqlite_store.py`, `_qdrant_store.py`, `_neo4j_store.py`):
- Check `MemoryManager.get_context_for_agent()` for injection logic
- Verify memory is PUSHED to agents (agents should never query memory directly)
- Check retrieval scoring and relevance filtering
Expand Down
2 changes: 2 additions & 0 deletions .claude/agents/pattern-explorer.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,5 +18,7 @@ Key patterns in this project:
- **Peer Debate** (`patterns/peer_debate.py`): Sequential pipeline then cross-critique debate rounds
- **Dynamic Swarm** (`patterns/dynamic_swarm.py`): Task analyzer + priority queue + executor dispatch
- **Enhanced Swarm** (`patterns/enhanced_swarm.py`): Dynamic swarm + factory + GRPO + persona evolution
- **Plan and Execute** (`patterns/plan_and_execute.py`): Upfront planning then sequential step execution
- **Map Reduce** (`patterns/map_reduce.py`): Parallel map across sub-tasks then reduce/merge results

Always ground explanations in the actual code. Quote specific functions and line numbers.
2 changes: 1 addition & 1 deletion .claude/agents/reviewer.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
description: "Reviews code changes against project rules, checks dispatch sync, verifies DB safety in tests."
tools: Read, Grep, Glob, LS
tools: Read, Grep, Glob
disallowedTools: Write, Edit, Bash
model: opus
maxTurns: 15
Expand Down
8 changes: 5 additions & 3 deletions .claude/commands/add-intent.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,11 @@ When adding a new command/intent, multiple files must be updated in sync. This c
4. Ask: What agent function will handle it? (existing file or needs new agent)

Then update ALL of these files:
- `jobpulse/dispatcher.py` — add to AGENT_MAP + correct *_INTENTS set
- `jobpulse/swarm_dispatcher.py` — add to AGENT_MAP + correct *_INTENTS set
- `shared/nlp_classifier.py` — add regex patterns + embedding examples for the new intent
- `jobpulse/handler_registry.py` — add handler to the shared handler map
- `jobpulse/intent_registry.py` — add intent to the correct intent group
- `jobpulse/command_router.py` — add to Intent enum + classification logic
- Verify both `jobpulse/dispatcher.py` AND `jobpulse/swarm_dispatcher.py` pick it up via `get_handler_map()`
- `jobpulse/nlp_classifier.py` — add embedding examples for the new intent (do NOT add regex — regex tier is legacy)
- Create test in `tests/` for dispatch routing (both dispatchers) + NLP classification

Finally, run `/check-dispatch` to verify everything is in sync.
64 changes: 64 additions & 0 deletions .claude/commands/fix-pipeline-bugs.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
# /fix-pipeline-bugs — Run one session of the pipeline-bugs fix plan

> **LAUNCH WITH `--dangerously-skip-permissions`** — this command edits files,
> runs `git commit`, and runs `python -m jobpulse.runner job-process-url`
> against live ATS pages in dry-run mode. Without that flag every tool call
> blocks on a permission prompt and the session can't run unattended.
>
> ```bash
> claude --dangerously-skip-permissions
> # then in the session:
> /fix-pipeline-bugs
> ```

## What this does

One invocation = **one session** of the 18-session plan that systematically
fixes everything in `docs/audits/pipeline-bugs.md`. The runner:

1. **Detects state** by greping `git log` for `fix(pipeline-bugs-S<n>):`
commits. Next session = `max(n) + 1`. Starts from S1 if no prior commits.
2. **Loads the protocol** for that session from `docs/audits/pipeline-bugs-runner.md`.
3. **Pulls a live ATS URL** from production DBs (`data/applications.db`,
`data/form_experience.db`, `data/screening_cache.db`) — only if the
session needs one.
4. **Implements the fix + a regression test** that fails on the bug *pattern*,
not just the instance.
5. **Runs a live `dry_run=True` reproducer** against the real URL when applicable
(browser headed via `chrome-pw`, `JOB_AUTOPILOT_AUTO_SUBMIT=false`,
`JOBPULSE_FAST_FILL=true`).
6. **Commits** with `fix(pipeline-bugs-S<n>): ...` and **marks the row** in
`docs/audits/pipeline-bugs.md` with `✅ FIXED <commit-hash>`.

## Protocol

Read and follow `docs/audits/pipeline-bugs-runner.md` exactly. That file is
the durable prompt — this command is the entry point.

After reading it:

1. Run the **state detection** block.
2. Announce the session number + scope to the user (≤ 3 lines).
3. Execute steps 1-7 of the per-session protocol in `pipeline-bugs-runner.md`.
4. End with the **post-session checklist** before declaring done.

## When to stop

A session ends when **any** of these is true:

- ✅ Acceptance criteria met → commit + mark FIXED + report.
- 🛑 Live reproducer requires user input (Telegram captcha, account creation,
paid ATS interaction) → stop, ask user, do **not** commit partial work.
- 🛑 Fix touches > 2 subsystems → stop, ask user whether to split.
- 🛑 Wider regression sweep introduces > 1 new failure → stop, revert, advisor.

If you're tempted to "just keep going to the next session" — don't. One
session per invocation. The state-detection in the next invocation will pick
up cleanly.

## Reading order on first invocation

1. This file (you are here).
2. `docs/audits/pipeline-bugs-runner.md` — full session protocol + 18-session table.
3. `docs/audits/pipeline-bugs.md` — the bug catalog you are draining.
4. `docs/audits/audit-followup-worklist.md` — per-subsystem source detail.
35 changes: 35 additions & 0 deletions .claude/mistakes.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,13 @@ Append on error. Re-check before committing. Use `semantic_search "mistake <topi

---

- [2026-04-30] Ollama probe must verify model availability, not just server reachability — empty models list = cloud fallback
- [2026-04-30] Vision fallback must use a vision-capable cloud model (gpt-4o-mini), not local text-only model
- [2026-04-30] PageReasoner smart_llm_call() requires (llm, messages) positional args, not keyword-only
- [2026-04-30] Login pages with embedded CAPTCHA/hCaptcha classified as verification_wall — suppress wall score when login/signup signals coexist
- [2026-04-30] PageReasoner caches `abort` from failed LLM calls — stale cache blocks retry on same page
- [2026-04-30] Auth handlers must read actual page content, not follow hardcoded flows — Oracle Cloud email-only page crashed because handler assumed password field exists
- [2026-04-30] PageReasoner must be PRIMARY decision-maker, not fallback — hardcoded classifier→handler chains break on any page layout the code hasn't seen
- [2026-04-04] Use MCP tools before Explore agents — saves ~190k tokens per exploration
- [2026-04-03] Route jobs by `classify_action()` not `determine_match_tier()` — tier is display only
- [2026-04-01] Regex: specific patterns BEFORE general. Test against all question types
Expand All @@ -20,3 +27,31 @@ Append on error. Re-check before committing. Use `semantic_search "mistake <topi
- [2026-03-24] Never wait for Telegram replies in Claude Code — poll API directly
- [2026-03-24] Never use Events API for commits — use Commits API per-repo
- [2026-03-24] Never rewrite a file without grepping for all function names used elsewhere

## DB drop-rate alert — user_profile.screening_defaults (2026-05-10)

DB ``user_profile.screening_defaults`` returned data that was dropped from 7/10 consumed lookups
(70.0% drop rate over the last 1 day(s)).

Top drop reason: ``option_misalignment`` (7 occurrences).

**OPRAL investigation prompt:**
- **Observe**: pull a sample of dropped values from
``data/db_observability.db`` where ``db_name='user_profile' AND table_name='screening_defaults' AND status='dropped'``
- **Plan**: trace which call site produced the lookup and which downstream
consumer dropped it. Use ``mcp__code-intelligence__callers_of`` on the
accessor.
- **Reason**: is the data wrong-shape (option_misalignment, validation_failed),
or is the consumer buggy?
- **Act**: fix the source (rewrite stored row, retrain pattern, replace stale
default) or the consumer (improve alignment, surface a clearer match).
- **Learn**: emit ``adaptation`` or ``correction`` signal once fixed; verify
drop rate drops on next daily summary.

Sample dropped rows (max 5):
- field='Are you willing to commute to the office?' intended='Yes, willing to commute to any UK office' actual='' reason='option_misalignment'
- field='Are you willing to commute to the office?' intended='Yes, willing to commute to any UK office' actual='' reason='option_misalignment'
- field='Are you willing to relocate to the office in London?' intended='Yes, within the UK' actual='' reason='option_misalignment'
- field='Are you willing to relocate to the office in London?' intended='Yes, within the UK' actual='' reason='option_misalignment'
- field='Are you willing to commute to the office?' intended='Yes, willing to commute to any UK office' actual='' reason='option_misalignment'

5 changes: 4 additions & 1 deletion .claude/rules/error-handling.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
paths: ["jobpulse/**/*.py", "shared/**/*.py"]
paths: ["jobpulse/**/*.py", "shared/**/*.py", "patterns/**/*.py", "mindgraph_app/**/*.py"]
description: "Structured error handling for all agent code"
---

Expand Down Expand Up @@ -30,3 +30,6 @@ All errors in agent code MUST return structured error context, not generic strin
- Distinguish access failures (needing retry) from valid empty results (successful query, no matches)
- Only validate at system boundaries (user input, external APIs) — don't add error handling for impossible internal scenarios
- Trust internal code and framework guarantees — no defensive coding against things that can't happen

## OPRAL Error Loop
On every error: follow the OPRAL loop (Observe → Plan → Reason → Act → Learn). See CLAUDE.md.
13 changes: 0 additions & 13 deletions .claude/rules/frontend.md

This file was deleted.

19 changes: 14 additions & 5 deletions .claude/rules/jobpulse.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,17 @@
## Claude = Orchestrator, Not Doer (MANDATORY)
When running the pipeline, invoke the actual AI agents — don't bypass them with ad-hoc scripts. Agents only learn from runs they performed. Observe, diagnose, direct. Manual scripts only as fallback for issues agents can't handle yet — then feed corrections into agent DBs so it's autonomous next time.

## OPRAL Error Loop (MANDATORY)
On every error/issue: **Observe** (capture error + context) → **Plan** (trace root cause via MCP) → **Reason** (why did this fail? which learning system prevents recurrence?) → **Act** (fix surgically, re-run with real data, route to correct DB) → **Learn** (emit signal, verify DB persisted, confirm agent handles it autonomously next run). Every error must make the system smarter — if it can recur, the fix is incomplete.

## Dual Dispatcher Invariant
When adding a new intent or agent:
1. Add handler to jobpulse/dispatcher.py AGENT_MAP
2. Add SAME handler to jobpulse/swarm_dispatcher.py AGENT_MAP
3. Add intent string to the correct *_INTENTS set in both files
4. Add NLP examples to shared/nlp_classifier.py
5. Add tests for the new intent in both dispatch paths
1. Add handler to jobpulse/handler_registry.py handler map
2. Add intent to jobpulse/intent_registry.py in the correct intent group
3. Add routing in jobpulse/command_router.py (Intent enum + classification)
4. Verify both jobpulse/dispatcher.py AND jobpulse/swarm_dispatcher.py pick it up via get_handler_map()
5. Add NLP examples to jobpulse/nlp_classifier.py (embedding examples, NOT regex)
6. Add tests for the new intent in both dispatch paths
NEVER update only one dispatcher. This has caused production bugs (see mistakes.md 2026-03-30).

## Telegram Message Handling
Expand Down Expand Up @@ -67,6 +71,11 @@ Regex MUST NOT be used for semantic work: intent routing, question categorizatio
## Real Data + Wiring Verification (MANDATORY)
Every new agent/feature: test with real URLs, real APIs, real DB queries (never mocks or stale fixtures). Then verify end-to-end that all downstream systems fire — hooks, signals, DB writes, learning chains, Notion syncs, Telegram notifications. Not wired = not done.

## API Pitfalls (from incidents)
- GitHub: use Commits API per-repo, never Events API (Events API misses commits and has aggressive rate limits)
- GitHub: `pushed_at` timestamp filtering uses `>=` or `<`, never `==` (timestamps have sub-second precision)
- ATS numeric fields: plain integers only — no currency symbols, commas, ranges, or units

## Database Safety
- Production DBs live in data/*.db — tests MUST NEVER touch these
- All test fixtures use tmp_path or monkeypatch DB_PATH
Expand Down
Loading
Loading