4.1 KiB
4.1 KiB
context, phase, task, total_tasks, status, last_updated
| context | phase | task | total_tasks | status | last_updated |
|---|---|---|---|---|---|
| phase | 07-redo-and-optimize-llm-integration | 0 | 15 | planned | 2026-06-03T16:33:39Z |
BLOCKING CONSTRAINTS — Read Before Anything Else
No constraints discovered through failure this session — planning only.
<current_state> Phase 7 planning is 100% complete. All 5 plans created, plan checker passed (4 blockers fixed in 1 revision round). Nothing has been executed yet. Next step is /gsd:execute-phase 7. </current_state>
<completed_work> This session (2026-06-03):
- Phase 7 discuss-phase was already complete (07-CONTEXT.md existed)
- Research completed → 07-RESEARCH.md (D-03 and D-07 resolved)
- 07-VALIDATION.md created (13 Wave 0 test stubs mapped)
- 07-PATTERNS.md created (14 files mapped to analogs)
- 5 PLAN.md files created (07-01 through 07-05)
- Plan checker ran — 4 blockers, 3 warnings found
- Revision round fixed all 7 issues
- Plan checker re-run → VERIFICATION PASSED
- STATE.md and ROADMAP.md updated
- All artifacts committed:
3df6250</completed_work>
<remaining_work> Execute all 5 plans in order:
- 07-01 (Wave 1): Alembic migration 0005 + SystemSettings ORM + ai_config.py HKDF helpers + 13 xfail stubs
- 07-02 (Wave 2): ProviderConfig + GenericOpenAIProvider + OpenAI singleton + registry + MAX_AI_CHARS removal + anthropic>=0.95.0 pin
- 07-03 (Wave 3): AnthropicProvider output_config + classifier wiring via load_provider_config
- 07-04 (Wave 4): Celery retry 30/90/270s + _ClassificationError + re-classify endpoint
- 07-05 (Wave 5): Admin AI Providers panel + DocumentCard badge + Re-analyze button + human UAT checkpoint (autonomous=false) </remaining_work>
<decisions_made>
- D-03 (Anthropic structured output): Use output_config.format.type="json_schema" — constrained decoding, no beta headers, SDK >=0.95.0 required
- D-07 (Client lifecycle): Instance-level singleton self._client in init — AsyncOpenAI/AsyncAnthropic manage httpx pools internally; recreating per call destroys pool reuse
- D-14 (extra_hosts): Already done in docker-compose.yml — no changes needed (verified by RESEARCH.md)
- D-02/Gemini: GenericOpenAIProvider has supports_json_mode=False for Gemini preset — falls back to parse_classification()
- Celery retry: _ClassificationError raised from _run(), caught in outer sync extract_and_classify() which calls self.retry() — NOT inside asyncio.run()
- AdminAiConfigTab.vue: ADDITIVE change only — new global System AI Providers section goes ABOVE existing per-user assignment table (Pitfall 6)
- MAX_AI_CHARS: Defined in 3 places (openai_provider.py L5, anthropic_provider.py L5, classifier.py L28) — all 3 removed across Plans 02+03 </decisions_made>
Required Reading (in order)
.planning/phases/07-redo-and-optimize-llm-integration/07-CONTEXT.md— locked decisions D-01..D-18.planning/phases/07-redo-and-optimize-llm-integration/07-RESEARCH.md— resolved patterns (Anthropic output_config, singleton client, Celery retry, system_settings design).planning/phases/07-redo-and-optimize-llm-integration/07-01-PLAN.mdthrough07-05-PLAN.md— execution plans
Critical Anti-Patterns (do NOT repeat these)
- Wrong phase number: User typed
/gsd-plan-phase 3but meant Phase 7. Phase 3 is complete. Phase 7 is the active phase. - Celery retry inside asyncio.run(): self.retry() must be raised from the OUTER sync task body. Raising it inside asyncio.run(_run()) corrupts async state (RESEARCH Pitfall 3).
- AdminAiConfigTab.vue overwrite: Existing per-user assignment table (ADMIN-05) must NOT be removed. New section is additive only (RESEARCH Pitfall 6).
Infrastructure State
- Docker services: not running (stopped between sessions)
- Last test run: 344 passed / 1 pre-existing failure (test_extract_docx missing module) — from Phase 6.2 execution
- Git: clean working tree, commit
3df6250
<next_action> /clear, then: /gsd:execute-phase 7 </next_action>