From b9123c2f6da56f506c23333932bef2a22eaea14d Mon Sep 17 00:00:00 2001 From: Levi Neuwirth Date: Mon, 27 Jul 2026 22:39:15 -0400 Subject: [PATCH] test(protocol): advance touched-suite ratchets to v21 Make the statusline and Vterm Stage 3 acceptance suites track the bottom-panel v21 bump, including the real daemon and headless GPU probe. Record the full gate result and the unrelated stale directory-target assertion reproduced on canonical main. --- docs/active-work.md | 34 +++++++++++++++++++++++-- tests/statusline_segments_acceptance.rs | 15 ++++++----- tests/vterm_stage3_acceptance.rs | 6 ++--- 3 files changed, 43 insertions(+), 12 deletions(-) diff --git a/docs/active-work.md b/docs/active-work.md index 6b03343..fb6090a 100644 --- a/docs/active-work.md +++ b/docs/active-work.md @@ -306,12 +306,15 @@ If it does not, stop and repair the remote/fetch configuration. never been enforced. Any CI job that compiles the `crdt` targets has to fix them first or it will be red on arrival. -## Bottom-panel lane (Arc 7) — 2B-1 IN GATING +## Bottom-panel lane (Arc 7) — 2B-1 GATED; PR HELD ON MAIN RATCHET Stage 1, the Stage 2 framing, and Stage 2A are on `main`. Framing revision 5's three-way split of 2B was explicitly approved on 2026-07-27. **Stage 2B-1 is implemented, integrated with canonical -`main`, and awaiting its full gate result before a PR is opened.** +`main`, and its full matrix has run. No PR is open: one deterministic +touched-suite assertion is stale on canonical `main` after #182 and +must be corrected separately before this branch can claim a green +gate.** - **Stage 2B-1 branch:** `bottom-panel-stage2b`, based on `githubsucks/main` @ `c2d56ff` by merge because review had begun. @@ -327,6 +330,33 @@ revision 5's three-way split of 2B was explicitly approved on `9b364ad`: `PanelFrame` now identifies its buffer, the transport ratchet covers the actual attach path rather than a detached codec assertion, and shared grid bounds have one validator. +- **The full gate found and corrected two 2B-1 omissions:** the + statusline version ladder still pinned v20/rejected v21, and Vterm + Stage 3 pinned v20 both structurally and in its real headless probe. + Those ratchets now expect v21 and, where applicable, reject v22. +- **Green evidence on the corrected tree:** formatting and strict + workspace Clippy; library **1,849 passed + 3 ignored default** and + **2,034 passed + 4 ignored CRDT**; bottom-panel Stage 1 / 2A / 2B-1 + **46 / 17 / 15**; folding Stage 2 **48**; GPU font **11**; statusline + **8 CRDT**; m11_5 semantic **2 CRDT**; Vterm Stages 1 / 2 / 3 + **10 / 6 / 9 CRDT**, with Stage 3's real daemon + PTY + wgpu probe + required and green; M4 **121 passed + 3 ignored + 1 filtered**; + required GPU **202**; and the isolated-config, one-invocation full + workspace sweep green on rerun. Its first pass hit the known + completion-before-supersede race in + `m8_1_acceptance::read_dir_supersede_cancels_in_flight_predecessor`; + the exact pin, its full 10-test target, and the complete workspace + rerun all passed. +- **Sole deterministic red — reproduced unchanged on canonical + `main`:** `gpu_initial_target_acceptance` is **13/14**, failing + `malformed_or_unloadable_targets_fail_closed_without_poisoning_the_daemon`. + Its invalid-target table still includes `"."` and demands only a + failure result, while #182 deliberately made a directory target valid + and therefore sends the result plus snapshot. The identical failure + reproduces at the tree-identical #182 head `7a3a55d`; 2B-1 changes no + initial-target behavior. Correct this as a Journey/GPU-initial-target + ratchet side quest on `main`, then integrate it here and rerun that + touched gate before opening the 2B-1 PR. - **Next ordering is fixed:** 2B-2 branches from `main` only after 2B-1 lands; 2B-3 branches only after 2B-2 lands. The daemon epoch machine belongs to 2B-2; the GPU band and negotiated capability flip belong diff --git a/tests/statusline_segments_acceptance.rs b/tests/statusline_segments_acceptance.rs index 120ca23..2f5cfd9 100644 --- a/tests/statusline_segments_acceptance.rs +++ b/tests/statusline_segments_acceptance.rs @@ -786,15 +786,16 @@ fn a12_builtin_lsp_provider_tracks_real_attachment_and_unknown_label() { #[test] fn a13_17_26_protocol_semantic_init_late_join_and_version_cost() { // Vterm Stage 3 appended the terminal family as v19; GPU initial targets - // appended the semantic bootstrap family as v20. This acceptance owns the - // STATUSLINE variant's placement and gate, so it tracks the current wire - // version rather than pinning 18: the v18 floor it actually cares about is - // asserted below and in `peer_accepts_statusline_message`. - assert_eq!(PROTOCOL_VERSION, 20); - for version in 6..=20 { + // appended the semantic bootstrap family as v20; bottom-panel Stage 2B-1 + // appended the panel family as v21. This acceptance owns the STATUSLINE + // variant's placement and gate, so it tracks the current wire version + // rather than pinning 18: the v18 floor it actually cares about is asserted + // below and in `peer_accepts_statusline_message`. + assert_eq!(PROTOCOL_VERSION, 21); + for version in 6..=21 { assert!(is_supported_protocol_version(version)); } - assert!(!is_supported_protocol_version(21)); + assert!(!is_supported_protocol_version(22)); let sample = InstanceMessage::StatuslineSegments { buffer_id: BufferId::from_raw(9), left: vec![StatuslineSegment { diff --git a/tests/vterm_stage3_acceptance.rs b/tests/vterm_stage3_acceptance.rs index b7c2e9c..f729aba 100644 --- a/tests/vterm_stage3_acceptance.rs +++ b/tests/vterm_stage3_acceptance.rs @@ -716,8 +716,8 @@ fn a37_real_daemon_real_pty_and_headless_gpu_render_one_terminal_session() { assert_eq!( facts.get("server_protocol_version").copied(), - Some("20"), - "the real daemon negotiated v20 with the real client: {text}" + Some("21"), + "the real daemon negotiated v21 with the real client: {text}" ); assert_eq!( facts.get("entered_terminal_mode").copied(), @@ -846,7 +846,7 @@ fn terminal_mode_keeps_reporting_presence_so_peers_drop_the_stale_caret() { panic!("timed out waiting for {what}"); } - assert_eq!(PROTOCOL_VERSION, 20); + assert_eq!(PROTOCOL_VERSION, 21); let daemon = common::daemon::TestDaemon::spawn_with_env_and_init( &[ ("PMACS_INSTANCE_SEMANTIC_RENDER", "1"),