one week toward production for amplifier-app-api
A single human author (Mark Licata, AI-assisted — Claude Sonnet 4.5 co-author trailers on ~20 commits) pushed amplifier-app-api toward production in 60 commits. The real step forward was matched by one clever idea that had to be reversed.
Start with the genuine progress…
On Feb 6, the database rewrote from aiosqlite to asyncpg with connection pooling (asyncpg.create_pool()), plus JSONB casts and GIN indexes — a genuine step toward production.
And it wasn’t just plumbing…
aiosqlite — async SQLite database managerasyncpg + create_pool(), JSONB & GIN indexesConfig helper endpoints were removed (config API 8→5), total endpoints dropped 40→37, and the README-documented test count jumped 67+ → 400+ (~6x). Release v0.4.0 landed Feb 11.
With trust earned, here comes the complication…
The plan: lock amplifier-core and amplifier-foundation to specific commits via [tool.uv.sources], so the runtime always used a build known to work.
Then the tooling pushed back…
The pin generated conflicts instead of confidence: URL-format traps, a stale Docker cache, and CI that only limped along behind an override hack.
So the author made a call…
07d6589 — “Requirements contain conflicting URLs for package amplifier-core”; needed override-dependenciesa6e0296 — GitHub Actions cached old config_manager.py; forced no-cache: trueOn Feb 10, the v0.3.0 restructuring dropped the rev= commit hashes for every module source — choosing to stop fighting rather than add another patch.
And the conflicts stopped…
Every module source switched to branch = "main" with canonical URLs (no .git suffix) to prevent format conflicts. The simpler mechanism that cooperates with the tools won — and still holds on HEAD.
The reusable lesson…
branch = "main" sources on HEADThe week’s biggest win wasn’t the PostgreSQL migration or the test growth — it was the decision to undo the clever thing. Choosing the mechanism the tools cooperate with beat choosing the mechanism that looks most in control.
Primary source: marklicata/amplifier-app-api (local clone at /tmp/amplifier-app-api, remote git@github.com:marklicata/amplifier-app-api.git, default branch main). Related repos microsoft/amplifier-core and microsoft/amplifier-foundation are referenced only via pyproject URLs — their internal contents are out of scope.
Window: 2026-02-03 (initial commit 3900950) through 2026-02-11 (Release v0.4.0, commit 1eda1c0). PostgreSQL milestone c6f225f landed 2026-02-06 (UTC).
Feature status: PostgreSQL migration, API simplification, test expansion — SHIPPED. Runtime commit-hash pinning — ABANDONED/REVERTED. @main Docker-time locking — ADOPTED (state on HEAD).
Commands run:
git rev-list --count HEAD → 109 commits, sole human author.git log --oneline -S "400+ tests" -- README.md ; git show c6f225f~1:README.md | grep -i test (67+ → 400+).for c in 3900950 1eda1c0 c6f225f~1 c6f225f; do git checkout $c -q; grep -rn 'def test_' --include='*.py' . | wc -l; done (224→491 across week; 419→609 across c6f225f).git show c6f225f~1:pyproject.toml | grep sqlite ; grep -n 'asyncpg\|create_pool' amplifier_app_api/storage/database.py.git show c6f225f --no-patch --format='%b' | grep -iE '8 endpoints to 5|40 . 37|helper'.git show 07d6589; cache fix: git show a6e0296; the revert: git show 1f6c2c1 -- pyproject.toml ; grep -c 'branch = "main"' pyproject.toml.git log --format='%an <%ae>' | sort | uniq -c ; git log --format='%b' | grep -i co-authored-by | sort | uniq -c.Gaps & qualifiers: The ~6x figure is the project’s own README/commit number (67+→400+); an independent grep of def test_ gives ~2.2x across the week — hence presented as “documented.” The Feb-6 milestone c6f225f carries a “Co-Authored-By: Amplifier” trailer, not a Claude 4.5 one. amplifier-core/-foundation internals were not verified.
Primary contributor: Mark Licata (malicata@microsoft.com) — sole human author, 60 of 109 commits in-window; Claude Sonnet 4.5 co-author trailers on ~20 commits.