From 28a493f6f2aa3f463678a3fa03874add948c1552 Mon Sep 17 00:00:00 2001 From: Cameron Pfiffer Date: Wed, 19 Aug 2026 00:21:13 -0700 Subject: [PATCH] Keep terminal Project seams lint-clean. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Name the opaque agent observation contract and document why the Operations renderer receives one complete frame snapshot so all-target lint guards the production boundary without obscuring it. 👾 Generated with [Letta Code](https://letta.com) Co-Authored-By: Letta Code --- crates/misaligned-terminal/src/agent.rs | 15 +++++++-------- crates/misaligned-terminal/src/ui.rs | 4 ++++ ...r-neutral-project-plot-contract-implemented.md | 4 ++++ 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/crates/misaligned-terminal/src/agent.rs b/crates/misaligned-terminal/src/agent.rs index 74a9b285..ed342892 100644 --- a/crates/misaligned-terminal/src/agent.rs +++ b/crates/misaligned-terminal/src/agent.rs @@ -81,6 +81,12 @@ enum Status { Err(String), } +type ProjectActionObservation = ( + usize, + ProjectActionDescriptor, + BTreeMap>, +); + struct AgentApp { sim: Sim, log: Vec, @@ -91,14 +97,7 @@ struct AgentApp { /// Canonical Project doorway descriptors previously handed to the agent. /// The opaque address keeps an old command attached to those exact bytes; /// core, not this map, decides whether they remain executable. - project_action_observations: BTreeMap< - u64, - ( - usize, - ProjectActionDescriptor, - BTreeMap>, - ), - >, + project_action_observations: BTreeMap, next_project_action_observation: u64, } diff --git a/crates/misaligned-terminal/src/ui.rs b/crates/misaligned-terminal/src/ui.rs index bf0b6ec9..3cd21ebe 100644 --- a/crates/misaligned-terminal/src/ui.rs +++ b/crates/misaligned-terminal/src/ui.rs @@ -2157,6 +2157,10 @@ impl UI { Ok(()) } + // The renderer consumes the complete current workspace selection and timing + // snapshot at one frame boundary; splitting these values would hide that + // atomic projection contract behind mutable UI state. + #[allow(clippy::too_many_arguments)] pub fn render_operations( &mut self, stdout: &mut Stdout, diff --git a/wiki/log/2026-08-13-renderer-neutral-project-plot-contract-implemented.md b/wiki/log/2026-08-13-renderer-neutral-project-plot-contract-implemented.md index 314454d7..3991cba0 100644 --- a/wiki/log/2026-08-13-renderer-neutral-project-plot-contract-implemented.md +++ b/wiki/log/2026-08-13-renderer-neutral-project-plot-contract-implemented.md @@ -48,6 +48,10 @@ Project or Plot state before authored content exists and left the real save untouched. This is a regression check on honest emptiness, not evidence that the new opening is playable. +The final all-target lint pass also names the agent protocol's opaque Project +observation tuple and documents the terminal renderer's intentional atomic frame +arguments; neither cleanup changes the shared projection or command boundary. + **Defense:** the implementation preserves the owning Project and Plot clauses: world owners retain custody, authority never comes from renderer focus or story prose, ACCEPT and START are distinct transactions, event history is immutable, -- 2.51.2