Drop "prototype/carryover" framing now that v1 is shipped

SPEC, DEV docs, and code comments still talked about the codebase as
a rewrite-in-progress against an external prototype. With v1 shipped
the framing reads oddly — it implies code is provisional when it's
the production thing. Recast §18 as "the technical stack," strip
"carryover from the prototype" comments across backend (api.py,
chat.py, providers.py) and frontend (DiffView, PromptBar,
SelectionTooltip, modelStyles), and rework SPEC §1 / §18 to introduce
OHM up front rather than as a follow-on to a prototype reference.

Also:
- RUNBOOK: bump Python prereq to 3.11+ to match the production VM
  (was 3.13).
- Remove IMPLEMENTATION-PROMPT.md — the original implementation brief
  is no longer load-bearing.
- Add deploy/DEPLOY-NEW-SESSION-PROMPT.md as the durable
  deploy-handoff prompt for new sessions.
This commit is contained in:
Ben Stull
2026-05-25 10:32:46 -07:00
parent 7c3b8fc133
commit ee6e3491e7
12 changed files with 411 additions and 155 deletions
+6 -6
View File
@@ -1,10 +1,10 @@
"""Multi-provider LLM abstraction — §18 carryover from the prototype.
"""Multi-provider LLM abstraction — §18 stack.
Each provider speaks a common interface — `send` and `send_streaming` —
so the chat layer in `chat.py` is provider-agnostic. Enabled providers
and their API keys are configured via env per the prototype's
`ENABLED_MODELS` contract; per §16 / §19.2, per-RFC model availability
and credential delegation are deferred until the topic is settled.
and their API keys are configured via env via the `ENABLED_MODELS`
contract; per §16 / §19.2, per-RFC model availability and credential
delegation are deferred until the topic is settled.
"""
from __future__ import annotations
@@ -130,7 +130,7 @@ class OpenAIProvider(BaseProvider):
# ---------------------------------------------------------------------------
# Variants and factory — preserved from the prototype to keep the contract.
# Variants and factory.
# ---------------------------------------------------------------------------
_CLAUDE_VARIANTS: dict[str, tuple[str, str]] = {
@@ -149,7 +149,7 @@ _GEMINI_VARIANTS: dict[str, tuple[str, str]] = {
def load_providers(env: dict) -> dict[str, BaseProvider]:
"""Instantiate enabled providers from env — same contract as the prototype."""
"""Instantiate enabled providers from env."""
enabled = [m.strip() for m in env.get("ENABLED_MODELS", "claude").split(",") if m.strip()]
providers: dict[str, BaseProvider] = {}