Auction Detail Component Boundary
This document is the Sprint 04 component-boundary note for the auction detail surface.
It is intentionally code-first.
Labels used here:
VERIFIEDINFERREDUNVERIFIEDREALMIXEDUI-FIRSTSHELLMISSING
1. Boundary Goal
VERIFIED
Sprint 03 separated the auction web surface into:
canonicalReadcompatibilitysessionfutureDurable
Sprint 04 does not change those backend-truth boundaries.
It makes the AuctionDetailClient UI structure match them more honestly.
2. Current Component Map
| Module | Status | Responsibility | Notes |
| --- | --- | --- | --- |
| apps/web/src/portal/components/AuctionDetailClient.tsx | VERIFIED MIXED | Top-level detail orchestrator | Still owns session subscriptions, bidder identity resolution, derived view models, and explicit compatibility action handlers. |
| apps/web/src/portal/components/auctionDetail/AuctionReadPresentation.tsx | VERIFIED MIXED | Canonical read/presentation surface | Renders lot summary, key facts, dossier, instrument terms, transport terms, and auction context from the existing read payload. |
| apps/web/src/portal/components/auctionDetail/AuctionDeliveryOptionsPanel.tsx | VERIFIED UI-FIRST | Pre-commit transport selection surface | Shows transport choices before bid/Buy Now and keeps degraded delivery-data states explicit. |
| apps/web/src/portal/components/auctionDetail/AuctionBidActionCluster.tsx | VERIFIED UI-FIRST | Compatibility bid action cluster | Pure UI surface for bid input, bidder identity summary, and current bid guidance. It does not write directly. |
| apps/web/src/portal/components/auctionDetail/AuctionBuyNowAction.tsx | VERIFIED UI-FIRST | Compatibility Buy Now surface | Pure UI surface for immediate purchase presentation. It does not write directly. |
| apps/web/src/portal/components/auctionDetail/AuctionFulfillmentPanel.tsx | VERIFIED UI-FIRST | Winner fulfillment surface | Renders post-award inputs and confirmation UI, but still depends on compatibility/session actions. |
| apps/web/src/portal/components/auctionDetail/AuctionCompatibilityNotice.tsx | VERIFIED MIXED | Explicit degraded/compatibility notice block | Used to make missing delivery data visible instead of silently hiding the block. |
| apps/web/src/portal/components/auctionDetail/types.ts | VERIFIED REAL | Shared detail-surface view types | Keeps component contracts explicit instead of letting prop shapes drift inline. |
3. What Still Lives In AuctionDetailClient
VERIFIED
The parent component still owns the following on purpose:
- session overlay subscriptions from:
- bidder identity resolution from:
- compatibility mutation calls through:
- derived action/read view models:
- bid constraints
- buy now state
- delivery options state
- fulfillment summary state
This is intentional for Sprint 04. It keeps behavior stable while shrinking the render surface.
4. What Counts As Canonical Read Rendering
VERIFIED MIXED
The read-only top section now has a clear home:
What it renders:
Lot SummaryKey FactsDossierInstrument TermsTransport & FulfillmentAuction Context
Truth note:
- this is the canonical read presentation layer inside the page
- it still consumes the mixed read payload delivered through the Sprint 03 read boundary, not a guaranteed fully durable upstream source
5. What Counts As Compatibility Mutation UI
VERIFIED UI-FIRST
The public action surfaces are now visibly separated:
- bid entry and bidder identity:
- Buy Now:
- delivery selection before commit:
- winner fulfillment progression:
Important:
- these components are presentation modules only
- they do not call raw session helpers directly
- they receive callbacks from
AuctionDetailClient - those callbacks still use the explicit compatibility port
6. Where Session Behavior Still Lives
VERIFIED UI-FIRST
Raw session behavior still lives only in:
- apps/web/src/ui/auctions/session/bidOverlay.ts
- apps/web/src/ui/auctions/session/fulfillmentOverlay.ts
- apps/web/src/ui/auctions/session/transportSelectionOverlay.ts
The new detail components do not import those modules.
That is the key Sprint 04 cleanup outcome:
- session mechanics are no longer mixed directly into the extracted UI modules
7. Where Future Durable Mutation Plugs In
VERIFIED MISSING
The future durable seam remains:
Current hookup point:
Current explicit seam:
publicAuctionCompatibilityActionPort
When durable bidder mutations exist later:
- keep the extracted UI modules as-is
- replace the port used by
AuctionDetailClient - keep any remaining session compatibility layer explicit if it still survives as demo behavior
8. What Still Remains Mixed
VERIFIED
Still centralized in AuctionDetailClient:
- settlement card
- bid progression table
- traceability card
- audit trail table
- top-level action gating
- page-level form state orchestration
This is acceptable for Sprint 04 because:
- the biggest mixed UI clusters are now isolated
- the mutation seam is still explicit
- future durable integration no longer has to land inside one giant render block
9. Boundary Verdict
VERIFIED
After Sprint 04:
- canonical read presentation has a dedicated module
- compatibility bid/buy/delivery/fulfillment surfaces have dedicated modules
- degraded delivery-data notice rendering has a dedicated module
- raw session mechanics remain outside the extracted UI components
AuctionDetailClientis still the orchestrator, but no longer the only place where the UI is understandable
This does not make the public auction action surface durable.
It makes the current UI-FIRST reality harder to misunderstand and easier to replace later.