# Research log — UQO WP 24 "From Labor to Capital" Chronological record of completed steps, assumptions taken, residuals, unresolved problems and next actions (required by CLAUDE.md). Dates are 2026-10-27 unless stated. ## Stage A — Source audit (done) * Downloaded the NBER conference PDF (20 pp., July 4 2025 draft) and wrote `docs/source_audit.md` with page references for every primitive, definition and proposition (P1–P11). Observations: no proofs in the source, compute is an endowment, no capital/prices/ownership; P6's own caveat (p. 11) identifies scarce resources as the point of failure of the wage result. * Literature matrix and 118 verified references delivered by the bibliography task (`docs/literature_matrix.md`, `docs/references_verification.md`); 6 entries flagged PARTIAL, none invented. ## Stage B — Smallest exact benchmark (done) * `tasks.py` reproduces Restrepo's static economy with 4 bottleneck + 2 accessory task classes and CES σ_B = 0.5. On a grid Q ∈ {0,…,1e5}: A constant from Q = 5 on, Y linear in Q (slope = A to 1e-6), w_H = A·CEU(H) = 8A, w_L = 2A < 3A = A·CEU(L) (the accessory task with the highest α is not worth automating: the skill is in Restrepo's group 𝒩 and gets the discounted \widetilde{CEU}), labor share 1 → 4e-4, compute share → 1, total wages higher than pre-AGI. Tests in `tests/test_static.py` (P1–P6). * A nuance not in the source: the "discount" of P4 arises whenever the max-α task of a skill is not automated, even if nobody works in it (accessory output abandoned entirely because its marginal value Zγ_a is below the wage available in bottleneck tasks). * Observation on definitions: with a CES aggregator every task is a bottleneck unless the elasticity is infinite; accessory work in the sense of Definition 2 requires asymptotically linear entry. ## Stage C/D — Two-class, four-capital model and solver (done, with lessons) * Static block: SLSQP on scaled variables + Newton polish of the KKT equalities on the active set; the polished solution is independent of the warm start (banded FD Jacobian matches a dense one to 6e-10). Accepting the polish on its residual rather than on fsolve's status flag was necessary (10 % of calls were rejected with residuals of 1e-18). * Accounting identity GDP = factor payments holds to 1e-8 and a deliberately broken version (compute services counted as final output) is caught by `test_income_identity_fails_when_accounting_is_broken`. * Harrod-neutral trend growth on labor, land and the energy resource (TFP constant) gives an exact frozen-AI BGP (residual 2.5e-8 at the BGP guess). A first version with Hicks-neutral Z growing at g produced rentals growing at 1.5 %/yr — not a BGP — and was corrected. * **Lesson 1 (calibration must match the scenario's anticipated prices).** Calibrating the 2026 compute rental with the user cost of a *declining* price (g_pQ = 0.15) and then solving a scenario with a different g_pQ creates a jump at t = 0 (compute Euler off by 60 %), the task block switches regime (task 1 fully automated) and the Newton system becomes nearly singular along the (K_Q, r) direction. With the base point re-calibrated for each scenario's technology rates (`calibrate(overrides=…)`), the frozen case converges in 5 iterations to 1.8e-10. * **Lesson 2 (accessory tasks and energy).** With a linear accessory block and an energy constraint, the marginal value of compute is bounded below by Zγ_a/α_a while the marginal value of energy in the core (σ_T < 1) is bounded above; as ε_t → 0 compute would absorb all energy to produce accessory output and core output would collapse. Accessory tasks are therefore kept in the analytical replication only. * **Lesson 3 (scenario magnitudes).** g_pQ = 0.28 with a floor at 1e-5 and g_alpha = 0.2 produce compute stocks growing by e^40 within the horizon and no terminal state close to a BGP; the solver cannot find a 30-year path. The baseline uses g_pQ = 0.15 (floor 1e-3, Moore's law ends ≈ 2072), g_eps = 0.10, g_alpha = 0.15; the Epoch value (0.34) is a scenario. * Solver: banded Newton (colored FD Jacobian, band 2) with backtracking; homotopy in the size of the shock on T = 40; horizon continuation 40 → 80 → 140 → 200 → 275; truncation check with 50 extra years. A trust-region least-squares alternative (`solve_trf`) was tried and found much slower. ## Stage E — Asset pricing (implemented in `transition.py`) * Tobin's q per capital type, ex-dividend equity values, net payouts (negative = issuance), land prices by backward recursion with a Gordon terminal value, aggregate wealth = sum of claims. Decompositions in `analysis.py` (to do: Campbell–Shiller exact under perfect foresight). ## Stage F — Propositions (in progress) * Regime theorem drafted (see `paper/sections/theory.tex`): labor share → 0 is robust; wage level and the destination of income depend on whether compute is an endowment or a priced reproducible capital good and on the elasticity between the task composite and scarce complements. ## Stage G — Heterogeneous agents (implemented, GE loop to do) * `households.py`: EGM with housing-inclusive price index, Rouwenhorst(5), 3 discount types × 2 skills, 300-point grid; stationary solution in ≈ 1 s. At the reference prices β = (0.93, 0.97, 0.993) with masses (0.5, 0.3, 0.2) give wealth 8.3 × GDP, Gini 0.80, top-10 % share 65 %, top-1 % 13 % (data 32.5 %: not reachable without return heterogeneity — reported as an untargeted moment). ## Stage H — Data (done) * 162 targets retrieved (`data/processed/calibration_targets.csv`), all with URLs, vintages and sha256; FRED reached through a browser-fetch fallback (Akamai timeouts), documented in `data/raw/fred/_RETRIEVAL_NOTE.md`. ## Open problems / next actions 1. Run the scenario catalogue on the cluster; check horizon truncation for the explosive scenarios. 2. HA general-equilibrium loop (relaxation on the interest-rate path) for baseline + 3 scenarios. 3. Stochastic AGI-arrival extension (risk premia) in a two-regime version. 4. Empirical design section (industry exposure × margins/valuation) — design only. ## Stage I–K — Scenarios, figures, paper (2026-10-27, afternoon) * 26 scenarios solved directly at λ = 1 on the full horizon (275 years) from the partial-equilibrium guess; 6–10 Newton iterations, 7–15 minutes each on one core (12 in parallel). The short-horizon homotopy was abandoned: mid-transition terminal conditions made the Newton stall at the last period. * **Lesson 4 (reference scenario).** "Capability frozen" with Moore's law continuing still automates three task classes by 2060 (2026 compute requirements are finite). The clean reference is everything frozen (exact BGP); the capability-only freeze is reported as its own scenario (`no_capability`). * **Lesson 5 (utilization margin cost).** The energy-constrained scenarios spend most of their time in the utilization bisection (200 iterations to 1e-13 in log u); reduced to 60 iterations / 1e-11, which is still far below the Newton tolerance. * **Lesson 6 (welfare metric).** Infinite-horizon CEVs of hand-to-mouth workers whose consumption goes to zero are dominated by the far future (thousands of percent); CEVs are reported over 2026–2065. * **Lesson 7 (HA general equilibrium).** Relaxation with λ = 0.3 on log excess demand diverged at the first step (gap of 4 log points; r driven negative; singular production Jacobian). Replaced by a damped quasi-Newton using the finite-difference Jacobian of household log demand with respect to the return path (275 household solves, ≈ 7 min, terminal policy cached), a crude diagonal for the supply response, steps bounded by 0.2, checkpoints. Gap 4.0 → 1.0 in five iterations. * Baseline facts (two-class): tasks automated 2029/2043/2045/2057; labor share 0.56 → 0.28 (2050) → 3e-5 (2100); w_H transitory premium ×3.5 in 2050; GDP ×3.7 (2050), ×233 (2100); r peaks 40.5 % (2060); W/GDP 4.1 → 2.7 (2042) → 31 (2100); land share 0.60 in 2100; compute value ≤ 0.2 GDP; P/E compute ≈ 2 in the 2040s. * Paper compiles (54 pp.), slides (28 pp., to be extended), 0 undefined references; wide tables wrapped in resizebox; `scripts/55_fallbacks.py` lists macros not yet generated (HA ones until `make ha`). ## Final state (2026-10-27, evening) * 22 of 26 scenarios solved to 1e-9; 4 not (Cobb–Douglas, substitutes, energy-constrained, Moore without end): Newton stalls on utilization kinks / explosive compute stocks; documented in Appendix C and the referee report. * HA GE: baseline gap 2.5e-3, citizen fund 4.0e-3, frozen 9e-5 (quasi-Newton stops improving near 1e-3; reported as such). **Lesson 8:** the asset grid must scale with aggregate wealth (fixed grid → everyone at the cap → Gini → 0, a pure artifact). **Lesson 9:** with a citizen fund, households hold (1−θ_F) of the claims; counting all claims double-counts the fund's payout. * HA result: wealth Gini non-monotonic (0.74 → 0.60 in 2050 → 0.73 in 2100 → 0.80 in 2150): the boom is equalizing (premium of the last-automated skill + high returns on small savings), the limit is a rentier economy. * Paper 55 pp. (0 errors, no missing macro), slides 33 pp., 35 tests pass, README, referee report, pushed to spbgit `wp24_uqo.git`.