Files
ARCADIA-Studio/harness/experiments/wrapped-label-20261001/intent.md
T

2.4 KiB

Bounded E/F label experiment intent (before implementation)

Base: 6ea7518e7be5b5f17d5fbc5d667da8b388058af4; local branch codex/wrapped-label-experiment-01a0d717-20261001. Parent owns compilation, native trials, integration and publication. This worker owns only private diagram/label_layout_experiment.rs, minimal diagram.rs wiring and necessary Scene-literal test adjustments. No implementation files changed at this point.

Predeclared target: diagram 00000000-0038-4000-8000-000000000001, relation 63009b5f-539e-5914-b630-ec6b7fefb4d5, canonical text Technician service conversation. Read-once external ARCADIA_LABEL_EXPERIMENT selects E or F; absence/unknown value leaves exact Baseline behavior. Never persist this profile or alter Project, canonical text, routes, ports, cards, other labels or authored state. No candidate-B cue.

E: Technician service / conversation, fraction .5 centered on own route. F: Technician / service / conversation, fraction .55, backing left at anchor x + 18. Font 13, line advance 16, measured maximum glyph advance + 16 horizontal padding; height 8 + 16 * line count. Shared derived layout must own ordered lines/positions, canonical text, anchor/fraction and backing/hit bounds. Measured geometry must pass flat-card +12, other-label +4, and foreign-stroke +3 guards. E additionally needs one unique straight own crossing; F clears own strokes. Authored target labels keep the profile's shape but use actual authored fraction/offset. Ordinary save/reopen formatting contract remains unresolved.

Evidence required before acceptance: unchanged baseline Project/RoutedView; full unchanged path and unrelated-label records; actual Iced measurement; matching Canvas/SVG line and picking geometry; authored offset preservation; real Scene cache reuse/invalidation. Parent runs tests and all native gates.

Initial API findings: pinned iced_graphics 0.14.0 exposes Paragraph::with_text, its cosmic-text buffer and shaped advances through iced::advanced::graphics. Canvas Text uses that same Paragraph implementation. Measurement is feasible without a new dependency or character-count heuristic. However, focus and Fit currently call core routing directly outside this ownership boundary: diagram_usage.rs and app.rs. Work-preview scenes also consume externally prepared RoutedView. These must be reconciled before any paint-only experiment can claim shared-consumer parity. Report concrete scope conflicts to parent.