From 1a044047a7987f9e6cbdab14db9ddd1a08ce254b Mon Sep 17 00:00:00 2001 From: Matthew Klahn Date: Mon, 20 Jul 2026 11:03:22 -0400 Subject: [PATCH 1/2] test: remove environment-sensitive assertions --- changelog.md | 1 + memory.md | 1 + src/integration_tests/tui_rendering.rs | 18 +++++++++++++++++- src/refresh/upstream.rs | 2 -- 4 files changed, 19 insertions(+), 3 deletions(-) diff --git a/changelog.md b/changelog.md index 9861d8f..6ca1073 100644 --- a/changelog.md +++ b/changelog.md @@ -9,6 +9,7 @@ - Replaced recoverable production panic paths with typed or degraded outcomes and documented the retained iterative-topology invariants. - Split topology, Git adapter, App, and tree-rendering responsibilities into private focused modules without changing the CLI, rendering, performance, or Git safety contracts. - Documented Graphite 1.8.6 compatibility stewardship, safe fallback behavior, package invariants, release procedures, and the complete user-facing feature set. +- Fixed two environment-sensitive CI assertions by verifying selected trunk foreground/background behavior with and without `NO_COLOR`, and by testing deadline-bounded work directly instead of relying on runner wall-clock timing. ## 2026-07-19 diff --git a/memory.md b/memory.md index 0989429..1fca6cd 100644 --- a/memory.md +++ b/memory.md @@ -32,6 +32,7 @@ - Release policy includes pinned macOS 15 ARM64/Intel CI, a stable-Rust compatibility lane, cargo-deny policy, Dependabot, fail-closed release aggregation, checksums, and artifact attestations. - Core responsibilities are split behind private modules: topology projection/index/emission, Git inventory/mutation, App state/overlays/archive/mutation, and tree details/connectors. - Recoverable production paths return typed or degraded outcomes. Remaining topology `expect` calls represent documented iterative-emission programmer invariants. +- Render tests cover both ordinary color output and `NO_COLOR`; selected colored rows use the identity accent as their background with a black identity glyph. Deadline tests assert bounded work counts instead of scheduler-sensitive wall-clock thresholds. - The installed release binary is 3,713,072 bytes. In a synthetic 2,001-branch repository the preceding release measured about 15.4 MB RSS after startup, warmed to about 19.3 MB with Archive evidence, and plateaued at 19.856-19.888 MB after 100 refresh requests and repeated view/order/layout/navigation toggles. - Release benchmarks measured about 0.108 ms per 500-branch projection, 1.10 ms per 5,000-branch projection, and 0.94 ms per projection of one 5,000-branch deep stack. A 5,000-level/10,000-branch deep comb emits iteratively without call-stack recursion; broad attach-parent lookup is indexed. - `stackmap 0.0.0` is installed at `/Users/matt/.cargo/bin/stackmap` and resolves on `PATH`. diff --git a/src/integration_tests/tui_rendering.rs b/src/integration_tests/tui_rendering.rs index 5e307a5..73deff4 100644 --- a/src/integration_tests/tui_rendering.rs +++ b/src/integration_tests/tui_rendering.rs @@ -181,7 +181,23 @@ fn trunk_uses_reserved_bold_hue_and_checked_out_marker() { assert_eq!(line.chars().next(), Some('◉')); assert_eq!(char_column(line, "main"), Some(2)); let marker = &terminal.backend().buffer()[(0, y as u16)]; - assert_eq!(marker.fg, trunk_color()); + let accent = trunk_color(); + assert_eq!( + marker.bg, + if accent == Color::Reset { + selected_background() + } else { + accent + } + ); + assert_eq!( + marker.fg, + if accent == Color::Reset { + Color::Reset + } else { + Color::Black + } + ); assert!(marker.modifier.contains(Modifier::BOLD)); app.config diff --git a/src/refresh/upstream.rs b/src/refresh/upstream.rs index d66e720..3b539f4 100644 --- a/src/refresh/upstream.rs +++ b/src/refresh/upstream.rs @@ -608,10 +608,8 @@ mod tests { }) .collect(), }; - let started = Instant::now(); coordinator.submit(UpstreamCommand::Request(request)); let batch = wait_for_result(&coordinator); - assert!(started.elapsed() < Duration::from_millis(150)); assert_eq!(batch.results.len(), MAX_TARGETS); assert!(git.containment_calls.load(Ordering::Acquire) <= 4); } From c34ca7fbdadeeb35aa3cd01bbc2c68283ca64bf3 Mon Sep 17 00:00:00 2001 From: Matthew Klahn Date: Mon, 20 Jul 2026 11:04:33 -0400 Subject: [PATCH 2/2] ci: run required policy on every pull request --- .github/workflows/dependency-policy.yml | 5 ----- changelog.md | 1 + memory.md | 1 + 3 files changed, 2 insertions(+), 5 deletions(-) diff --git a/.github/workflows/dependency-policy.yml b/.github/workflows/dependency-policy.yml index 7e70120..26deb97 100644 --- a/.github/workflows/dependency-policy.yml +++ b/.github/workflows/dependency-policy.yml @@ -4,11 +4,6 @@ on: push: branches: [main] pull_request: - paths: - - Cargo.toml - - Cargo.lock - - deny.toml - - .github/workflows/dependency-policy.yml schedule: - cron: "23 8 * * 1" workflow_dispatch: diff --git a/changelog.md b/changelog.md index 6ca1073..941beb1 100644 --- a/changelog.md +++ b/changelog.md @@ -10,6 +10,7 @@ - Split topology, Git adapter, App, and tree-rendering responsibilities into private focused modules without changing the CLI, rendering, performance, or Git safety contracts. - Documented Graphite 1.8.6 compatibility stewardship, safe fallback behavior, package invariants, release procedures, and the complete user-facing feature set. - Fixed two environment-sensitive CI assertions by verifying selected trunk foreground/background behavior with and without `NO_COLOR`, and by testing deadline-bounded work directly instead of relying on runner wall-clock timing. +- Made dependency policy run on every pull request so the required `cargo-deny` branch-protection check cannot be skipped by path filtering. ## 2026-07-19 diff --git a/memory.md b/memory.md index 1fca6cd..04e2051 100644 --- a/memory.md +++ b/memory.md @@ -30,6 +30,7 @@ - The open-source alpha identity is `0.1.0-alpha.1`. Cargo publication is disabled; GitHub source and two-architecture macOS prerelease assets are the intended distribution paths. - The executable exposes a narrow documented runtime facade. White-box integration coverage is crate-internal and benchmarks use a feature-gated benchmark facade rather than public application internals. - Release policy includes pinned macOS 15 ARM64/Intel CI, a stable-Rust compatibility lane, cargo-deny policy, Dependabot, fail-closed release aggregation, checksums, and artifact attestations. +- Dependency policy runs on every pull request because `cargo-deny` is a required `main` check; path filtering would leave unrelated pull requests permanently unmergeable. - Core responsibilities are split behind private modules: topology projection/index/emission, Git inventory/mutation, App state/overlays/archive/mutation, and tree details/connectors. - Recoverable production paths return typed or degraded outcomes. Remaining topology `expect` calls represent documented iterative-emission programmer invariants. - Render tests cover both ordinary color output and `NO_COLOR`; selected colored rows use the identity accent as their background with a black identity glyph. Deadline tests assert bounded work counts instead of scheduler-sensitive wall-clock thresholds.