Skip to content

fix(todo): anchor runtime root to registry - #4913

Open
Duang777 wants to merge 1 commit into
loopx-project:mainfrom
Duang777:codex/core-correctness-20260923
Open

Duang777 wants to merge 1 commit into
loopx-project:mainfrom
Duang777:codex/core-correctness-20260923

Conversation

@Duang777

Copy link
Copy Markdown
Contributor

Goal And Delivered Outcome

  • Goal/source and gap: list_goal_todos() resolved a relative common_runtime_root against the caller's working directory because it did not pass registry_path to resolve_runtime_root(). A CLI call from another worktree could miss the promotion fence and return stale Markdown Todos instead of canonical authority state.
  • Observable before -> after, with the validation row that proves it: the new CLI regression returns todo_stale on the parent revision and todo_canonical on this revision, with decision_read_from_provider=true and legacy_fallback_used=false.
  • Issue/task and intended base: self-contained reproduced bug; base main.

Scope And Continuation

  • Completed scope and remaining work: anchor Todo list runtime resolution to the registry project and cover the public CLI path from an independent working directory. No schema or provider contract changes.
  • Slice boundary / successor: complete within this scope; no successor is required.

Validation

  • Tested revision: a368f7cf2ec8786abb7393d4843b9cbf995c98ec
  • Run state: finished
  • Input classes: synthetic, public_fixture
Check kind Result Public-safe evidence / limitation
regression_parity passed python -m pytest -q tests/control_plane/test_registry_relative_runtime_resolution.py -k todo_list_anchors_promoted_authority_to_registry_project; the parent revision returns the stale Markdown Todo, while this revision returns canonical authority state.
unit passed The registry-relative runtime, Todo list, and local coordination authority suites passed: 55 tests.
real_entrypoint passed The regression invokes python -m loopx.cli ... todo list from an independent working directory against the real FileAuthorityStore fixture.
static passed Ruff, Python compilation, git diff --check, and loopx check passed for the changed files.
integration passed loopx canary premerge --from-git-diff passed all 18 selected catalog and risk-profile smokes.
static failed Mypy follows the existing import graph and reports baseline errors, including 17 existing diagnostics in loopx/todos.py; no diagnostic points to the changed call.
  • Coverage and gaps: the regression covers the faulty path-resolution branch, the promotion fence, the canonical read, and the stale Markdown counterexample. No provider implementation or persisted schema changed. Exact-head CI remains pending.

See validation disclosure guidance.

Frontend / Visual Evidence

  • UI impact: none
  • Before: N/A
  • After: N/A
  • States and viewports shown: N/A
  • Source data: synthetic
  • Attention review: N/A

Type of Change

  • Bug fix
  • New feature
  • Breaking change
  • Refactoring (no functional changes)
  • Documentation update
  • Test update

LoopX Area

  • Control plane (goals, todos, quota, scheduler, registry, runtime)
  • Benchmark boundary (adapters, runners, verifiers, scoring, evidence)
  • Capability or extension (providers, adapters, skills)
  • Public docs or presentation surface (README, protocols, dashboard)
  • Build, packaging, installer, or CI
  • Host or runtime integration

Technical Direction

  • Direction / acceptance reference, when applicable: Core control-plane hardening; preserve fail-closed canonical Todo reads when the registry stores a project-relative runtime root.

Shared-authority RFC fixture impact

N/A. This bug fix changes registry-relative path anchoring in one Python caller. It does not change the production-scale fixture, provider semantics, promotion behavior, or compatibility projection.

Boundary Checklist

  • Neither the diff nor this PR body/comments/attachments disclose private state, credentials, raw traces or verifier output, internal links, or local machine paths (including .loopx/, .codex/goals/, and live ACTIVE_GOAL_STATE.md).
  • I did not duplicate maintainer-owned benchmark work unless a maintainer split out a public issue for it.
  • I kept the change scoped to the linked issue/task.
  • I completed the visual evidence section for UI changes, or marked UI impact none.
  • Every commit includes a DCO Signed-off-by trailer (git commit -s).

Signed-off-by: duanjialing.777 <duanjialing.777@bytedance.com>
@Duang777

Copy link
Copy Markdown
Contributor Author

CI triage for head a368f7cf2:

  • test-shard (3) fails in test_legacy_coordination_writer_fence.py and the File case in test_todo_projection_concurrency.py.
  • test-shard (4) fails in the SQLite case in test_todo_projection_concurrency.py.
  • node-minimum-compatibility reports nine failures in authority_archive.test.ts.

This PR changes only loopx/todos.py and test_registry_relative_runtime_resolution.py. PR #4906 changes the three failing test areas and the Node timeout configuration, and its exact head d38410f00 passed the same Node minimum and Python shard jobs. I am keeping #4913 scoped to the Todo runtime-root fix. After #4906 reaches main, I will sync #4913 and rerun exact-head CI.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant