Files
aetherbound-guild/docs/runtime/M52_CANDIDATE_LEDGER_COMPONENT_CONTRACT.md
T

44 lines
1.5 KiB
Markdown

# M52 CandidateLedger Component Contract
`ABGM52CandidateLedger` is the second independently reviewable M52 module.
It is a warm adventurer ledger, not a page controller: it receives candidate
data and emits one `action_requested` signal.
## Ownership tree
```text
ABGM52CandidateLedger (Control)
├── LedgerShell
├── LedgerHeader
├── PortraitModule
├── IdentityModule
├── FactCopy
├── TraitModule
├── CostModule
└── ActionButton
```
## Layout rules
- The shell and action use shared market chrome; the page must not add a
second panel or a second button style around this component.
- Portrait, name, trait and cost remain independent clipped modules. Text is
engine-rendered and never baked into generated art.
- The fact copy is limited to profession plus one short detail sentence;
long descriptions belong to a later full-screen detail state.
- The action occupies one bottom dock with a 48px minimum hit target.
## Responsive rules
The parent supplies a normalized slot. The ledger background may stretch, while
portrait and icon content preserve aspect ratio. All dynamic labels clip or
wrap inside their local bounds; no label may paint over the neighboring slot.
## Acceptance
- `m52_candidate_ledger_component_test.gd` verifies the tree, clipping and
non-overlapping slots.
- `m52_candidate_ledger_component_capture.gd` produces a 420x560 normal-render
evidence image.
- Owner visual review is required before Market integration.