How it ran (no sugarcoat)
12 ork specialists, one per cluster. 5 of them edited their files correctly but flaked on the structured-summary return (the heavy ork system prompts didn't reliably call StructuredOutput). Rather than trust reports, an aggregate repo-wide gap-sweep verified actual state — it caught one half-applied bug (
SettingsConfigDict used without import), a few cluster-internal misses (2× gpt-5.2, a Cohere comparison row), and a large body of the same deprecated patterns outside the audited clusters (123× gpt-4o/5.2, 27× z.string().email across all 111 skills). The cluster misses were completed; the repo-wide proliferation is deliberately scoped out (blind-replacing gpt-4o across comparison tables would be reckless) and filed as a follow-up.
Per-cluster fixes (Lane 2 deprecated + Lane 3 new-best-practice)
| cluster | ork agent | fixes |
|---|---|---|
| next-react | frontend-ui-developer | rewrote 3 fabricated APIs to real forms (revalidateTag profile-arg, proxy.ts via next/server, PPR cacheComponents+'use cache'), next-browser→next-devtools-mcp, next/image v16 defaults, pins 16.2.6/19.2.6 |
| frontend-libs | frontend-ui-developer | Zod 4 z.email()/z.uuid()/z.iso.datetime(), flatten()→treeifyError() (shape-change noted), Zustand backwards-label fix, Biome types-domain, shadcn 8 styles |
| llm-sdk | llm-integrator | google.generativeai→genai.Client, Responses API, Claude 4.6→4.8 / gpt-5.2→5.5 in multimodal-llm (no fabricated price), Gemini 3 Flash GA |
| db-migrations | database-engineer | PG18 uuidv7(), native temporal WITHOUT OVERLAPS/PERIOD (+btree_gist caveat, kept temporal_tables for history), in_greenlet() env.py guard, skip-scan nuance |
| security | default (sec framing) | OWASP LLM 2023→2025 labels (+test-cases.json), python-jose→PyJWT (CVE), OWASP web 2025 (deser→A08 not A03), Zod v4 (.errors→.issues), LLM07/08 mappings |
| python-backend | backend-system-architect | .dict()→model_dump(), class Config→SettingsConfigDict, utcnow()→now(UTC), get_event_loop()→get_running_loop(), Depends()→Annotated |
| vector-rag | data-pipeline-engineer | Cohere ClientV2/rerank-v4.0-pro/max_tokens_per_doc, voyage-3→3.5, pgvector halfvec/binary_quantize() guidance |
| langgraph | workflow-architect | create_react_agent→langchain.agents.create_agent (system_prompt), hook-framing fix, metadata drift, defer docstring |
| testing-js | test-generator | removed fabricated use.aiAgents config (CLI-only), wcag21aa→wcag22aa, jest-axe note |
| testing-py-llm | test-generator | hypothesis whitelist_categories→categories, pytest pin |
| json-render | frontend-ui-developer | import ./app.html → buildAppHtml |
| infra-events | event-driven-architect | Stripe error.*→top-level, PaymentIntent→StripeClient().v1 |
Scoped out — filed as follow-up (NOT blind-replaced)
| pattern | repo-wide count | why deferred |
|---|---|---|
gpt-4o / gpt-5.2 in non-audited skills | ~123 | many are legit comparison-table rows / transcription model ids (gpt-4o-transcribe is real); needs case-by-case |
z.string().email() in non-audited skills | ~27 | same Zod deprecation, but outside the 14-cluster audit scope |
asyncio.get_event_loop() in distributed-systems | 7 | separate skill not in the python-backend cluster |