Repository navigation
fix(vision): restore history-to-writeback roundtrips - #7922
Merged
Merged
Conversation
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Goal And Delivered Outcome
从
loopx history读回当前 Agent 的完整 Vision、修改验收证据再交给refresh-state --agent-vision-json时,索引中的stride_decision: null会触发must be an object,导致正常续写被拒绝。现将 null 与省略字段统一解释为“未提供决策”;开启 stride 的评审仍必须提交有效、绑定当前来源的决策。214afbb62的两个 File/SQLite history 续写用例失败且未追加记录;候选在完整读回后可续写并保留已有目标、角色、验收和继续策略。main。无需新建 issue 或后继任务。Author Declaration
model_agent— OpenAI GPT-6 (Codex).docs/reference/protocols/goal-vision-replan-contract-v0.md与docs/architecture/rfcs/controller-executor-unified-contract-v0.md,检查基线214afbb6222c4f0b410a6a1cc084d0262e91925f。本 PR 只修复上述可复现的兼容性缺口。normalizeStrideDecisionScope And Continuation
Validation
fefb624cb761059093d7d14d952ea65b382c7c24;生产基线214afbb6222c4f0b410a6a1cc084d0262e91925f。finished.synthetic,public_fixture.tests/control_plane/test_vision_budget_cli.py::test_projected_autonomous_example_updates_evidence_without_changing_goal -k 'history and True':基线两例均因 null codec 拒绝;修复后通过。TS 负反事实也在基线复现同一错误。tests/control_plane/test_vision_budget_cli.py:15 通过,覆盖原生 status/history→续写、完整意图保留与非法输入不追加。临时 File 与 SQLite 3.53.4(Node 24.21.0),非 live 状态。stride_policy.test.ts+vision_checkpoint.test.ts:59 通过、0 跳过;null/省略保持无决策,开启 stride 时仍拒绝缺失决策。test_vision_checkpoint_runtime.py、test_required_vision_closeout_behavior.py、test_refresh_state_replan_gate.py、test_host_vision_recovery.py、test_stride_comparison_followthrough_cli.py:103 通过。npm run test:control-plane:5888 通过、77 条件跳过、0 失败;真实 PostgreSQL 集成环境未配置,当前 stride/Vision 用例无跳过。uv build --wheel后在源码目录外执行打包 CLI:File/SQLite 两条 history→续写→冷读路径通过,每 backend 五种非法 proposal 均不追加历史;wheel 的 owner 字节与候选一致。cqr_ba6fd06b6b55ea0f320f已验证匹配该 head 与所记录 base;不代替独立评审。canary premerge --from-git-diff --git-diff-base origin/main:5 direct + 13 selected 全通过,0 failure/warning/skip/manual hold;相同 head 的严格 CQR 同时验证有效。作者质量凭据:4 个改动文件;scope fingerprint
ba6fd06b6b55ea0f320f7a2139c1677ecc816d5b482af1c73bc578cf9cefbac4;safe-fix 允许但未在质量评审阶段应用(0 次);0 blocker/warning/advisory。基于4494c85d36cc1f4a5731a46b9d065970d3457761记录并验证。准备阶段的失败保留:首轮 TS 夹具缺少独立进展条件,补齐语义 oracle 后基线才复现真实 null 拒绝;首轮打包夹具缺少重规划路径证据,被现有规则拒绝,按实际返回契约修正后通过。直接
setup.py构建因缺构建依赖未执行,改用隔离uv build;隐式路由扫描在扫描前拒绝,显式路由扫描通过。生产校验未因这些失败放宽。Frontend / Visual Evidence
none。沿现有 JSON authoring 与 typed owner 修复元数据兼容性;没有布局、控件或新配置。none.Type of Change
LoopX Area
Technical Direction
Shared-authority RFC fixture impact
N/A:未改变 authority store、迁移、provider 路由或协调投影规则。
Boundary Checklist