Модуль превращает набор точек в управляемую последовательность: задаёт интервалы, ускорение, замедление, размерный ритм, направление, фазу, повтор и контролируемую вариативность. Это уже не кластер, а траектория чтения.
Назначение
00 / scope
Что такое последовательность
Последовательность — упорядоченный набор точек P0...Pn, для которого важен порядок. Алгоритм должен знать, какая точка первая, какая следующая и как меняются расстояния, размеры и направление.
создать путь взгляда;
соединить две массы;
построить «хвост»;
обозначить ускорение или затухание;
сделать технический маркер движения;
сформировать повторяемый модуль.
Главное отличие от кластера
Кластер оценивается как группа. Последовательность — как функция по индексу i.
Локально задаёт нарастающий size-profile. Влияние на маршрут взгляда оценивается внешним eye-flow модулем.
Затухание
r_i = r0 · q^i
q ≈ 0.72..0.92
Локальный decay-profile. Смысловое направление к/от доминанты передаётся как DEFERRED context.
Пульсация
r_i = r0 × [1, 1.35, .9, 1.25...]
Использовать умеренно: слишком сильная пульсация разрушает путь.
Размерный ритм не должен автоматически дублировать интервальный. Если и расстояние, и размер одновременно меняются слишком сильно, sequence становится чрезмерно «объяснённой» и механической.
Траектория
05 / path geometry
Linear
Минимальная неоднозначность. Хорошо для направления.
Curved
Более органичный маршрут. Требует контроля поворотов.
Broken / L
Работает как маршрут по сетке или между блоками.
Path constraints:
mean_turn_angle <= 35° for smooth directional rhythm
single strong turn <= 95° if composition uses L/Z structure
avoid repeated micro-zigzags:
if sign(turn_i) changes > 3 times per 6 points
and role != technical_noise:
add instability_penalty
Контролируемая вариативность
06 / bounded randomness
Рандом не выбирает структуру
Сначала задаётся тип ритма. Рандом только слегка искажает его.
Архитектурное правило: Compo 1.05 не вычисляет плотность поля, negative space, hierarchy, balance, typography collision или eye-flow. Он может только потреблять эти сигналы от их owner-модулей и на их основе генерировать новый локальный candidate.
DEFERRED signal
Локальная реакция-кандидат
Статус
local_density_high
предложить меньше N или увеличить gaps
proposal only
target_focus_anchor
предложить monotonic gap/radius profile к anchor
proposal only
typography_protected_zone
снизить jitter или reroute path
hard/soft по upstream policy
negative_space_pressure
предложить сокращение sequence или sparse profile
DEFERRED_INPUT
grid_route_candidate
пересэмплировать sequence по предоставленному grid route
consume only
global_eye_flow_target
предложить orientation/path variant, не оценивать глобальный eye-flow
DEFERRED_INPUT
context does NOT mutate final layout directly
context owner metric
→ Compo 1.05 receives signal
→ generate/re-generate local rhythm candidate
→ local rhythm metrics recomputed
→ candidate returned to global solver
→ global solver accepts / rejects / requests another pass
Rule priority / overrides
08 / ownership boundary
Compo 1.05 ВЛАДЕЕТ
порядком точек в sequence;
gap profile;
локальной interval variation;
monotonicity выбранного профиля;
bounded jitter;
локальной trajectory consistency;
rhythm.local_score.
НЕ ВЛАДЕЕТ
DEFERRED / EXTERNAL OWNERS:
negative_space
grid_global_fit
dominance
hierarchy
global_balance
global_eye_flow
typography_readability
point_collision / tangency
global_scoring
Rule:
external metrics may cause REGENERATION,
but are never redefined inside Compo 1.05.
Anti-zigzag local Если sign(turnAngle) меняется более 3 раз на N=8, trajectory_consistency должен уменьшиться; конкретный penalty задаётся preset.
T05
External collision integration Compo 1.09 возвращает hardReject=true. Ожидается: candidate удаляется без дополнительного collision penalty в Compo 1.05.
T06
No global metric leakage При одинаковом локальном sequence изменение global.balance_score не должно менять rhythm.local_score; оно влияет только на global solver.
Endpoint связан с реальным объектом или смысловой зоной.
Ритм не забивает типографику.
Global solver может переопределить локальные решения.
Core contract
COMPO 0.00 / API
SCOPE
Compo 1.05 генерирует и оценивает локальную ритмическую структуру упорядоченной последовательности точек. Он не решает глобальный баланс, иерархию, negative space или eye-flow.
FINALITY
LOCAL_PROPOSAL_ONLY
The module MAY:
generate
measure
locally score
request regeneration
The module MUST NOT:
finalize composition
redefine external metrics
select global winner
if owner_available(externalMetric):
consume(externalMetric)
else:
omit(externalMetric)
NEVER create surrogate formula locally.
NEVER fold deferred metric into rhythm.local_score.
Anti-double-counting: collision/tangency принадлежат Compo 1.09; grid relation — Compo 1.06; глобальные композиционные метрики — соответствующим глобальным модулям. Compo 1.05 не дублирует их штрафы.