Commit d995668
committed
docs(proposals): apply DX review SHOULD-FIX to v1.5 design
Round 2 review (dx-expert) on PR #538. No architectural blockers; 8
naming/typing/semantic-clarity fixes the python-expert needs answered
before writing implementation code, plus 5 nice-to-haves.
Applied:
- Rename methods finalize_proposal_sync/_async →
finalize_proposal/_with_handoff (and capability flags
finalize_sync/_async → finalize/_with_handoff). Disambiguates from
Python "async def".
- ctx.recipes typed as Mapping[str, Recipe], not dict[str, Any].
Adapters down-cast to their concrete subclass; mypy + Cursor stay
in the typed lane.
- CapabilityOverlap fields are frozenset[str] | None (None = no
gate; frozenset() = deny-all). Matches Python set intuition.
- D5 cross-store consistency: explicit-wiring with hard error
(resolves Resolutions §1 from OPEN); error message names exact
kwarg to add. Auto-allocate-with-warning was the multi-worker
silent-data-loss footgun.
- Default sync-on-both-declared: framework dispatches to inline
finalize_proposal; HUMAN_REVIEW_REQUIRED escalation re-dispatches
to handoff path. Boring default; matches storyboard.
- PROPOSAL_NOT_COMMITTED replaces INVALID_REQUEST for state-mismatch
errors; PROPOSAL_NOT_FOUND covers absent records. Codes ship via
KNOWN_NON_SPEC_CODES allowlist (Resolutions §3).
- ProposalRecord typed dataclass spelled out (not just prose);
recipe_schema_version captured for durable-store migrations.
- Hello-skeleton ~50 LOC sketch for examples/hello_proposal_manager_v15.py
to validate the LOC budget before implementation.
- Multi-tenant mixed-version row added to compatibility matrix.
- Testing primitives + observability hooks one-paragraph notes.
- _await_maybe helper pointer for MaybeAsync await-bridging.1 parent e96270f commit d995668
1 file changed
Lines changed: 275 additions & 116 deletions
0 commit comments