Skip to content

refactor: project goal routes in the existing planning batch - #8123

Draft
hhyykk wants to merge 2 commits into
mainfrom
codex/goal-route-projection
Draft

hhyykk wants to merge 2 commits into
mainfrom
codex/goal-route-projection

Conversation

@hhyykk

@hhyykk hhyykk commented Nov 5, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

  • Move the complete read-only Goal-route projection into TypeScript and consume it through the existing work_item.action_portfolio.project planning batch.
  • Introduce the internal v1 planning packet request/result contracts while preserving the external goal_route_hint_v0 read-model shape and v0 compatibility.
  • Retire the Python route rule builder and task-override composer; retain existing shared codecs/alignment facts without a second production rule owner.
  • Preserve selection order, empty-versus-absent source semantics, task override behavior, and monitor/settlement/cadence cleanup.
  • Add Python adapter and TypeScript regressions, update canary profile selection and bilingual migration documentation, and fix the peer-continuation smoke test to inspect captured CLI output.

Validation

  • 214 focused Python tests passed.
  • 12 real CLI parity cases passed.
  • Focused TypeScript checks and review completed.
  • Full TypeScript run: 6,105 passed and 30 environmental failures. The failures passed individually in isolated reruns; the original aggregate run is not claimed as fully green.
  • Premerge canary passed with one inherited maintainability advisory.
  • Performance qualification remains pending. No latency improvement, complete end-to-end acceptance, or merge readiness is claimed.

Performance warning: unresolved readiness blocker

Matched 20-sample measurements found three p95 regressions:

  • SQLite current JSON: 879.85 → 975.16 ms (+10.83%, +95.31 ms).
  • SQLite current Markdown: 851.66 → 877.88 ms (+26.23 ms).
  • File durable Markdown: 583.29 → 618.80 ms (+6.09%, +35.51 ms).
    The other nine p95 cases improved. The regressions exceed the plan's owner-review thresholds (over 5% or an unexplained additional 25 ms). Attribution and owner review are still pending. This draft is not ready to merge; performance acceptance remains unresolved.

A follow-up with 20 paired, instrumented SQLite current JSON samples measured total p95 723.73 → 694.55 ms, planning RPC p95 1.294 → 1.797 ms, codec p50 0.494 → 0.533 ms, and unchanged RPC count. This follow-up does not explain the original tail regression and does not clear the failed performance gate or owner-review requirement.

Revision and scope

  • Published against main at 2ce6a5dcd8a5396f5d60312f37958e1b05d529ca.
  • Current published tree 34aad7682c7311f32851edcd0e00e9035cf2a194 exactly matches the local candidate including the bilingual evidence ledger update. The documentation-only follow-up commit is 1b6468f961b6d08b418e523cde210132e3a3b4bb; implementation is unchanged. Connector publication preserves content rather than local commit IDs.
  • The checked-in bilingual ledger now records the validation and unresolved performance evidence.
  • No persisted-state migration, execution/claim/lease permission, or new authoritative read API.
  • This PR is intentionally a draft. Merge is not authorized; outstanding performance gates and repository CI require review.

CI evidence

Checks are running on the documentation follow-up head. That head has DCO Sign-off failure (no certification added); dashboard-browser (2), chat-bundle-browser (2), and package-build conversation-history-recovery network-idle timeouts; and a chat-bundle-browser (3) disabled ZCode Start-button timeout. These are not passes.

The dashboard-browser (2) conversation-history-recovery network-idle timeout also occurs in the base PR #8110: base failure evidence. This supports a pre-existing failure diagnosis for that check, not a green result.

The ZCode disabled Start-button timeout also reproduces the failure on base PR #8110: base ZCode failure evidence. The preceding 503 is an expected negative-test response and is not established as the root cause. The pre-existing evidence does not clear either failed check.

A separate current-head dashboard-browser (3) failure exceeded the frozen 1-second loaded-lens switch budget: one sample was 1299.39 ms. The base PR #8110 job passed, but there is no matched performance baseline for these samples. This scenario uses mocked 200-item fixtures rather than the Goal-route RPC. Attribution remains unresolved; this failure is not attributed to an inherited issue. A one-time isolated job rerun is pending because GitHub rejects reruns while the containing workflow is still running. Current failure.

Python shard 4: incomplete, with failures before cancellation

Shard 4 recorded 123 failed test nodes before cancellation at approximately 60 minutes and 88% progress; no final traceback summary or JUnit was produced. The actual CI checkout was merge 6195dd50b against base 68318d14d2db02bd4855fa03a9af46ebc64be2bc, not merely the original publication base. Nine representative cases were reproduced on both that exact base and merge: both produced 8 failures and 1 pass. Representative live-CLI failure: the unchanged work_item.execution_preparation.project rejects legacy handoff_mode. This establishes inherited evidence for the sampled cases only. It does not attribute all 123 failures or the global timeout, and does not clear the incomplete Python validation gate. Remaining shards are still queued.

Move read-only goal-route projection into TypeScript, retire the Python rule owner, and preserve quota planning and CLI compatibility.
@mergify

mergify Bot commented Nov 8, 2026

Copy link
Copy Markdown

This pull request has merge conflicts with main and cannot be merged
until they are resolved. Please rebase or merge the base branch, @hhyykk.

Choose the remote for the base repository, not an out-of-date fork.
For a fork clone, first inspect git remote -v; upstream must point
to https://github.com/loopx-project/loopx.git. If it is absent, add it
with git remote add upstream https://github.com/loopx-project/loopx.git.
Then run:

git fetch upstream
git rebase upstream/main
# Resolve each conflict, git add the resolved files, then git rebase --continue.
git push --force-with-lease origin HEAD

For a same-repository clone whose origin points to
https://github.com/loopx-project/loopx.git, use origin instead of
upstream for fetch/rebase. If you prefer merging the base, use
git merge <base-remote>/main and push normally.

Keep the DCO Signed-off-by trailer on every commit when you rebase.
https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/syncing-a-fork

@mergify mergify Bot added the needs-rebase Mergify: the pull request has merge conflicts with its base branch label Nov 8, 2026

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

needs-rebase Mergify: the pull request has merge conflicts with its base branch

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant