From e2bf3a9a48540ea01119053103a354d3763f5a15 Mon Sep 17 00:00:00 2001 From: huangruiteng <14976749+huangruiteng@users.noreply.github.com> Date: Fri, 18 Sep 2026 10:15:04 +0800 Subject: [PATCH] fix(smokes): restore the two public smoke contracts broken on main MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `main` (d8e7af141) fails Full Public Smokes in two shards, both from a contract and its guard drifting apart, not from a flaky job. Reproduced on a clean `origin/main` worktree. - `examples/project/goal-vision-replan-contract-smoke.py` requires the protocol doc to state that a bounded loop's look-back stays explicit "without adding more inline CLI flags or expanding the heartbeat prompt". The Path Delta rewrite in 77798d5a8 replaced that paragraph and dropped the sentence, so the guard lost its contract. Restore it where the rewritten section now describes the same boundary (`--agent-vision-json`). - `examples/blocker-push-runtime-smoke.py` pinned the ASCII form `unchanged->`--vision-unchanged-reason``. 67fcd01fa moved the shipped writeback sentence to `unchanged→真实`--vision-unchanged-reason`` and updated `examples/control_plane/heartbeat-prompt-smoke.py` for it, but not this sibling, so the blocker-runtime path still asserted retired text. Both smokes now pass on this head, and `loopx canary premerge --from-git-diff` reports 0 failures / 0 advisories (with the repository's TypeScript deps linked locally, which `semantic-vocabulary-drift-smoke` needs). Signed-off-by: huangruiteng <14976749+huangruiteng@users.noreply.github.com> --- docs/reference/protocols/goal-vision-replan-contract-v0.md | 4 +++- examples/blocker-push-runtime-smoke.py | 5 ++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/docs/reference/protocols/goal-vision-replan-contract-v0.md b/docs/reference/protocols/goal-vision-replan-contract-v0.md index 624b7f1839..58bf526ed6 100644 --- a/docs/reference/protocols/goal-vision-replan-contract-v0.md +++ b/docs/reference/protocols/goal-vision-replan-contract-v0.md @@ -112,7 +112,9 @@ is its `schema_version`, not its enclosing field. The shared TypeScript authorin boundary rejects misplaced declared deltas before any write, including through CLI and Turn. It does not infer a protocol from ordinary metadata field names. Existing packets may omit the nested schema version; an explicitly supplied -version must match. Historical read compaction remains unchanged. +version must match. The look-back rides the existing `--agent-vision-json` +boundary, so it stays explicit without adding more inline CLI flags or expanding +the heartbeat prompt. Historical read compaction remains unchanged. ```json { diff --git a/examples/blocker-push-runtime-smoke.py b/examples/blocker-push-runtime-smoke.py index e8c297b295..f47e59b616 100644 --- a/examples/blocker-push-runtime-smoke.py +++ b/examples/blocker-push-runtime-smoke.py @@ -219,7 +219,10 @@ def main() -> int: assert "reuse the value on retries" in compact_prompt, prompt assert "guard; 2 stalls->replan" in compact_prompt, prompt assert "no-change=`surface_only`/no spend" in compact_prompt, prompt - assert "unchanged->`--vision-unchanged-reason`" in compact_prompt, prompt + # The shipped writeback sentence moved to the mixed-language form in the + # same change that updated examples/control_plane/heartbeat-prompt-smoke.py; + # this assertion keeps the blocker-runtime path pinned to the same text. + assert "unchanged→真实`--vision-unchanged-reason`" in compact_prompt, prompt print("blocker-push-runtime-smoke ok") return 0