39 lines
2.4 KiB
Markdown
39 lines
2.4 KiB
Markdown
# 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.
|