Commit ff2c93a
fix(resume-builder): two regressions caught by transcript replay
QA replay of the user's original 10-turn session against the post-1A+1B
agent exposed two real failure modes:
1. **max_iterations=5 too tight for serial tool calls.** When the model
chose to fetch 6 GitHub READMEs SEQUENTIALLY (one fetch_github_readme
per loop iteration) instead of in parallel, the agentic loop
exhausted at iteration 5, raised AgentExecutionError, and the regex
step-machine fallback dumped the URL list into experience_notes —
producing none of the captured projects/skills the user expected.
Bumped cap to 12 (10 URLs of headroom + 2 for the final answer).
Above ~12 is a runaway-loop signal; below ~10 leaves no room for
the ~6-URL-in-one-turn case the user actually exercised.
2. **projects_notes captured as Python list repr.** The LLM occasionally
emits prose fields as LISTS of per-item descriptions after a
multi-tool round-trip ([{"name": "Proj A", ...}, ...] or
["Proj A — …", "Proj B — …"]). _apply_llm_draft_updates was
wrapping in str(), which captured the Python repr "['…', '…']"
into projects_notes. The structuring LLM then choked on the
malformed shape and the regex fallback rendered the raw list literal
into the markdown. Added _coerce_prose_field(value) that joins
list/tuple inputs with \n\n so the structuring pass sees clean
newline-separated entries instead. Applied to all three prose
fields (experience_notes / education_notes / projects_notes) in
both _apply_draft_updates and _apply_llm_draft_updates for symmetry.
Verification: 61 tests across the affected suites green.
Slice-1B follow-up only — the actual remaining quality bugs visible
in the rendered PDF (projects-not-bulleted, Link field grabs first
tech word, first-person voice leak in education/publications) are
structuring-prompt issues for the next slice.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>1 parent 78184fe commit ff2c93a
1 file changed
Lines changed: 61 additions & 21 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
406 | 406 | | |
407 | 407 | | |
408 | 408 | | |
409 | | - | |
410 | | - | |
411 | | - | |
| 409 | + | |
| 410 | + | |
| 411 | + | |
412 | 412 | | |
413 | | - | |
414 | | - | |
415 | | - | |
| 413 | + | |
| 414 | + | |
| 415 | + | |
416 | 416 | | |
417 | 417 | | |
418 | 418 | | |
| |||
428 | 428 | | |
429 | 429 | | |
430 | 430 | | |
431 | | - | |
| 431 | + | |
| 432 | + | |
| 433 | + | |
432 | 434 | | |
433 | 435 | | |
434 | 436 | | |
| |||
1839 | 1841 | | |
1840 | 1842 | | |
1841 | 1843 | | |
1842 | | - | |
1843 | | - | |
1844 | | - | |
| 1844 | + | |
| 1845 | + | |
| 1846 | + | |
1845 | 1847 | | |
1846 | | - | |
1847 | | - | |
1848 | | - | |
| 1848 | + | |
| 1849 | + | |
| 1850 | + | |
1849 | 1851 | | |
1850 | 1852 | | |
1851 | 1853 | | |
1852 | 1854 | | |
1853 | 1855 | | |
1854 | 1856 | | |
1855 | 1857 | | |
1856 | | - | |
1857 | | - | |
1858 | | - | |
| 1858 | + | |
| 1859 | + | |
| 1860 | + | |
1859 | 1861 | | |
1860 | 1862 | | |
1861 | 1863 | | |
1862 | 1864 | | |
1863 | 1865 | | |
1864 | 1866 | | |
| 1867 | + | |
| 1868 | + | |
| 1869 | + | |
| 1870 | + | |
| 1871 | + | |
| 1872 | + | |
| 1873 | + | |
| 1874 | + | |
| 1875 | + | |
| 1876 | + | |
| 1877 | + | |
| 1878 | + | |
| 1879 | + | |
| 1880 | + | |
| 1881 | + | |
| 1882 | + | |
| 1883 | + | |
| 1884 | + | |
| 1885 | + | |
| 1886 | + | |
| 1887 | + | |
| 1888 | + | |
| 1889 | + | |
| 1890 | + | |
| 1891 | + | |
| 1892 | + | |
| 1893 | + | |
| 1894 | + | |
| 1895 | + | |
| 1896 | + | |
1865 | 1897 | | |
1866 | 1898 | | |
1867 | 1899 | | |
| |||
1943 | 1975 | | |
1944 | 1976 | | |
1945 | 1977 | | |
1946 | | - | |
1947 | | - | |
1948 | | - | |
1949 | | - | |
1950 | | - | |
| 1978 | + | |
| 1979 | + | |
| 1980 | + | |
| 1981 | + | |
| 1982 | + | |
| 1983 | + | |
| 1984 | + | |
| 1985 | + | |
| 1986 | + | |
| 1987 | + | |
| 1988 | + | |
| 1989 | + | |
| 1990 | + | |
1951 | 1991 | | |
1952 | 1992 | | |
1953 | 1993 | | |
| |||
0 commit comments