← docs · ADR

Direction is a two-tier addressable projection: grill-proposed and Voz-set threads, folded from the log

The Direction standing page holds two tiers — proposed (the grill's strategic achados, hypothesis) and set (Voz-ratified, curated) — as addressable items with an explicit propose/set/drop lifecycle, both rendered, folded from the event log (ADR-0006). Artefatos declare candidate steers; the grill consolidates them into proposed. This refines ADR-0006's single direction.set blob and the CONTEXT.md Direction term.

Status

proposed (2026-06-06; Voz ratifies)

Context

last-write-wins on a single {plan} blob (eventlog.py:direction_at/project_direction).

decision not yet made (grill/SKILL.md). Today it dies in the transient handoff: the edge persists facts (clusters/curated) but not strategy. Voz named the gap: "estamos montando os fatos mas não estamos montando isso ainda."

re-states it every consolidation; miss it once and it is silently gone. That is the exact failure the change exists to remove, reproduced one layer up.

are read-only on state (CONTRACT C1) — they cannot write Direction.

Considered options

into two homes; strategy stays homeless.

current tool. Rejected: evaporation-by-omission returns — the property we are trying to kill.

deliberately dropped; promotion and provenance are first-class.

harm-potential funnel — every report's open question would auto-become a steer.

Decision

curado > hipótese: set outranks proposed. "A correção sempre ganha" — set is always Voz-originated.

constraint, thread}`. Events (asserted per ADR-0006 — direct Cypher, no LLM, replayable):

omission — the anti-evaporation property, the whole point.

dropped removes it. direction_at(t) folds to the as-of-then page (both tiers). Strategic versioning = replay.

event: proposes: [{body, kind, relates_to?}] — open a fresh thread, or confirm/challenge an existing one. It never writes Direction itself. The digestion sweep (ADR-0008) auto-writes each candidate into the non-curated proposed tier — eagerly, even when ambiguous — so the tier is current at every dispatch entry. The candidate is optional — a knowledge-only Artefato proposes nothing and only deepens a cluster.

candidates) and by the grill's live orientation; ambiguity is allowed to exist there, flagged. The set tier is the grill's alone: on in-session Voz ratification it promotes proposed → set (the same promotion it runs on knowledge). The grill's harm-potential funnel applies to curation, not entry: it promotes the high-harm and drops/merges the noise — "don't drain the hypothesis tier; consolidate what carries harm potential."

to a per-id fold and a two-tier render.

Consequences

longer loses the steer (see ADR-0008).

after that blob is pruned.

per-id pure-function fold, no framework ("shed scaffolding toward a legible core").

render the Proposed tier; add proposes to artefato.published and to grill_lint's agenda.

edges fold from the log; versioning survives because the edge was declared, not inferred).