You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A timeline with multiple research routes scanned every node and every edge for each route. Group parent nodes and recorded edges once, preserving their source order and the existing handling of missing or unplaced endpoints. A single route keeps the direct read.
Validation
Main 45cfd0c follow-up: the timeline file merged in memory without a text conflict. A Vite SSR comparison used the same verified main-source overlay and the PR benchmark harness for baseline and candidate; the public-checkpoint source fixture and dependency lockfile matched the existing checkout. The synthetic fixture included timed and undated structured decisions. The original 40-route scan check failed on baseline with 3,280 node identity reads and passed on the candidate with 293 node and 126 edge reads. Eight counterbalanced processes (A-B-B-A repeated), each with 12 warm samples, produced 72 byte-identical complete HTML outputs. The median of process medians for 1,200 routes was 154.314 ms before and 54.281 ms after (-64.8%); the single-route case was 3.995 ms versus 4.205 ms, and the public checkpoint was 0.560 ms versus 0.705 ms. Fixture SHA-256: ae2a098fa21857c79c6cc9c454ee8978556ca7573ab3f879694242cacad9944a. This is local Node 26 production SSR with an in-memory source overlay, not browser, online or native CI latency; no combined checkout was created.
Main 859a23e preflight: the merge base is 53e80ca. Complete GitHub inventories contain five branch paths and 278 main paths, with two overlaps. Each overlap merged without text conflicts using in-memory git merge-file. A static YAML check retained all 20 main jobs, their job controls, and all existing step and nonblank run lines; one smoke line was added. The dashboard package retained all 87 main scripts and dependency sections, with two scripts added. Negative controls detected a removed job, a changed job control and removed run content. Both PR commits have Signed-off-by trailers. This is a file-level and static check, not a full-tree merge, runtime workflow execution or CI result.
Current-main compatibility note: PR #8703 TypeScript core shard 2 exposed a duplicate SHA-256 matcher already present in its main parent. The old main base used by this PR did not contain the new inbox module. A virtual-source scan of main 97fb254 reproduces the guard failure; this PR has not been tested as a full merge against that main.
Dashboard browser shard 3 passed the uninstrumented goal-workspace-m2 qualification with 200 items and a 771 ms expansion; its coverage pass also completed. This is CI on the recorded merge revision and does not establish performance on newer main.
Main follow-up at dd53ca5: the workflow and dashboard package file merge without text conflicts in an in-memory three-way check. For python-tests.yml, a static YAML comparison found no removed or reordered main jobs, steps or existing run lines, and no changes to the checked job, step or workflow controls. The PR adds one run line. This is not a full-tree merge or an integrated CI run.
CI queue snapshot (2026-11-14 around 09:36 UTC): each of the six Python test shards was pending behind 22 entries in its repository-wide concurrency group, including one running shard from this main run. The GitHub concurrency API was queried for each job, including shard 1. Queue positions can change and are not an estimated completion time. This snapshot does not establish the result of other checks.
Latest-main follow-up (2026-11-14): main at f17ce83544f8b0420b6cb13dfdd086ca23cf6646 changed apps/presentation/dashboard/package.json, which this PR also changes, since the earlier comparison at baaf657e5df6b779be1401d143af6aa5970454ef. An in-memory three-way merge of that file found no text conflicts. This is not a whole-tree merge check. The benchmark and browser smoke have not run on the new combined tree; the current CI test merge has parent 53e80ca8a1979fb176fc3b76962b75a73fac8599.
Follow-up comparison: PR head ba4b9b6b109f826e88e3cec6cf448e37fa58a8a0 and main baaf657e5df6b779be1401d143af6aa5970454ef have a clean local merge-tree. All 15 main workflow lines invoking npm/node/python smokes remain; the merged tree has 16 such lines. The Windows native job on Fix release recovery and runtime compatibility #8703 head 657de032 passed; other CI remains independently reported.
Earlier main comparison: 3cf2f45552dc2fdad0a160e3e736c1b7c9be21ee changed 26 files since the branch base; none overlap this PR, and a local merge-tree check is clean. The checks below cover the branch head, not the newer combined tree.
At ba4b9b6b109f826e88e3cec6cf448e37fa58a8a0, merged main 53e80ca8a1979fb176fc3b76962b75a73fac8599 into the feature branch and preserved both CI smoke commands. The packaged conversation-find scenario, timeline scan smoke, 14 Explore history tests and Chat bundle build passed; nine complete rendered outputs remained byte-identical to the baseline.
npm run build:chat, including the dashboard TypeScript check, passed.
npm run smoke:explore-timeline-scan passed. It checks 40 routes, the correct edge-to-route association and order, missing and unknown-time endpoints, and bounded source reads. The same test failed on the original component because it read node identities 3,280 times; the changed component read them 293 times.
Both benchmark and smoke files passed a standalone strict TypeScript check.
Packaged research-route-reading browser scenario passed against an isolated real history owner.
Local performance and complete-output comparison
The baseline component is byte-identical to main at 78e936f9d1f1a00505c4026ee0a5857de95cee27; the candidate component is byte-identical to this PR. The same fixed input (SHA-256 d4a1ba1ef8c0dc5623f97847a73a148346dd5fe8be9b5a906fcd05c769183e77) was used for every run. The test alternated four baseline and four candidate Node processes. Each process took 12 warm, uninstrumented render samples; the table reports the median of the four process medians.
Dataset
Baseline
Candidate
Difference
Synthetic: 1,200 routes, 2,400 nodes, 1,248 edges
147.84 ms
46.84 ms
-68.3%
Synthetic: one route, 800 nodes, 799 edges
3.70 ms
4.03 ms
+0.33 ms
Repository public checkpoint: 66 nodes, no edges or routes
0.71 ms
0.76 ms
+0.06 ms
All 72 complete HTML outputs across the eight processes and three rendering modes were byte-identical to the baseline. The input includes unknown timestamps, dangling edges, source-order differences and both explicit and parent links. The single-route and public-checkpoint samples are short and their small differences may be noise.
This is a local React server-render measurement on Node 26.12.1 with NODE_ENV=production, two available CPUs and an AMD EPYC 7K62 host. It excludes browser DOM/layout, network, data loading and online workloads. A separate V8 CPU capture identified the original per-route scans; its sample weights are not used as latency measurements.
To regenerate the fixed input and render snapshots from this checkout, run from apps/presentation/dashboard with fresh paths:
npm run benchmark:explore-timeline -- --make-fixture /tmp/loopx-timeline-input.json
npm run benchmark:explore-timeline -- /tmp/loopx-timeline-input.json /tmp/loopx-timeline-output
For an independent baseline, run the same benchmark harness and input against the base component in an isolated checkout, then compare every HTML output. The fixture and output paths must not already exist.
Current-main overlap audit (2026-11-14)
A read-only tree comparison used main 8d7d234 and each PR's actual base and merge base. It checked every path changed on both sides with an in-memory three-way merge. This is not a full checkout, build or CI run.
For #8733, five PR paths and 286 main paths changed from merge base 53e80ca; all three overlapping paths merged cleanly in memory. The merged workflow retained all 20 main jobs, their step metadata, and 186 existing run lines; the dashboard package retained every main script.
The fixed-data performance measurements above were run against main 45cfd0c, not rerun at 8d7d234. The later main change inspected here affects an unrelated Python test. No online performance claim follows from the local measurement.
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.
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
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.
Problem and change
A timeline with multiple research routes scanned every node and every edge for each route. Group parent nodes and recorded edges once, preserving their source order and the existing handling of missing or unplaced endpoints. A single route keeps the direct read.
Validation
Main 45cfd0c follow-up: the timeline file merged in memory without a text conflict. A Vite SSR comparison used the same verified main-source overlay and the PR benchmark harness for baseline and candidate; the public-checkpoint source fixture and dependency lockfile matched the existing checkout. The synthetic fixture included timed and undated structured decisions. The original 40-route scan check failed on baseline with 3,280 node identity reads and passed on the candidate with 293 node and 126 edge reads. Eight counterbalanced processes (A-B-B-A repeated), each with 12 warm samples, produced 72 byte-identical complete HTML outputs. The median of process medians for 1,200 routes was 154.314 ms before and 54.281 ms after (-64.8%); the single-route case was 3.995 ms versus 4.205 ms, and the public checkpoint was 0.560 ms versus 0.705 ms. Fixture SHA-256: ae2a098fa21857c79c6cc9c454ee8978556ca7573ab3f879694242cacad9944a. This is local Node 26 production SSR with an in-memory source overlay, not browser, online or native CI latency; no combined checkout was created.
Main 859a23e preflight: the merge base is 53e80ca. Complete GitHub inventories contain five branch paths and 278 main paths, with two overlaps. Each overlap merged without text conflicts using in-memory git merge-file. A static YAML check retained all 20 main jobs, their job controls, and all existing step and nonblank run lines; one smoke line was added. The dashboard package retained all 87 main scripts and dependency sections, with two scripts added. Negative controls detected a removed job, a changed job control and removed run content. Both PR commits have Signed-off-by trailers. This is a file-level and static check, not a full-tree merge, runtime workflow execution or CI result.
Current-main compatibility note: PR #8703 TypeScript core shard 2 exposed a duplicate SHA-256 matcher already present in its main parent. The old main base used by this PR did not contain the new inbox module. A virtual-source scan of main 97fb254 reproduces the guard failure; this PR has not been tested as a full merge against that main.
Dashboard browser shard 3 passed the uninstrumented goal-workspace-m2 qualification with 200 items and a 771 ms expansion; its coverage pass also completed. This is CI on the recorded merge revision and does not establish performance on newer main.
Main follow-up at dd53ca5: the workflow and dashboard package file merge without text conflicts in an in-memory three-way check. For python-tests.yml, a static YAML comparison found no removed or reordered main jobs, steps or existing run lines, and no changes to the checked job, step or workflow controls. The PR adds one run line. This is not a full-tree merge or an integrated CI run.
CI queue snapshot (2026-11-14 around 09:36 UTC): each of the six Python test shards was pending behind 22 entries in its repository-wide concurrency group, including one running shard from this main run. The GitHub concurrency API was queried for each job, including shard 1. Queue positions can change and are not an estimated completion time. This snapshot does not establish the result of other checks.
Latest-main follow-up (2026-11-14): main at
f17ce83544f8b0420b6cb13dfdd086ca23cf6646changedapps/presentation/dashboard/package.json, which this PR also changes, since the earlier comparison atbaaf657e5df6b779be1401d143af6aa5970454ef. An in-memory three-way merge of that file found no text conflicts. This is not a whole-tree merge check. The benchmark and browser smoke have not run on the new combined tree; the current CI test merge has parent53e80ca8a1979fb176fc3b76962b75a73fac8599.Follow-up comparison: PR head
ba4b9b6b109f826e88e3cec6cf448e37fa58a8a0and mainbaaf657e5df6b779be1401d143af6aa5970454efhave a clean local merge-tree. All 15 main workflow lines invoking npm/node/python smokes remain; the merged tree has 16 such lines. The Windows native job on Fix release recovery and runtime compatibility #8703 head657de032passed; other CI remains independently reported.Earlier main comparison:
3cf2f45552dc2fdad0a160e3e736c1b7c9be21eechanged 26 files since the branch base; none overlap this PR, and a local merge-tree check is clean. The checks below cover the branch head, not the newer combined tree.At
ba4b9b6b109f826e88e3cec6cf448e37fa58a8a0, merged main53e80ca8a1979fb176fc3b76962b75a73fac8599into the feature branch and preserved both CI smoke commands. The packaged conversation-find scenario, timeline scan smoke, 14 Explore history tests and Chat bundle build passed; nine complete rendered outputs remained byte-identical to the baseline.npm run build:chat, including the dashboard TypeScript check, passed.npm run smoke:explore-timeline-scanpassed. It checks 40 routes, the correct edge-to-route association and order, missing and unknown-time endpoints, and bounded source reads. The same test failed on the original component because it read node identities 3,280 times; the changed component read them 293 times.node --experimental-strip-types --test tests/control_plane_ts/explore_history.test.ts: 14 passed.Both benchmark and smoke files passed a standalone strict TypeScript check.
Packaged
research-route-readingbrowser scenario passed against an isolated real history owner.Local performance and complete-output comparison
The baseline component is byte-identical to
mainat78e936f9d1f1a00505c4026ee0a5857de95cee27; the candidate component is byte-identical to this PR. The same fixed input (SHA-256d4a1ba1ef8c0dc5623f97847a73a148346dd5fe8be9b5a906fcd05c769183e77) was used for every run. The test alternated four baseline and four candidate Node processes. Each process took 12 warm, uninstrumented render samples; the table reports the median of the four process medians.All 72 complete HTML outputs across the eight processes and three rendering modes were byte-identical to the baseline. The input includes unknown timestamps, dangling edges, source-order differences and both explicit and parent links. The single-route and public-checkpoint samples are short and their small differences may be noise.
This is a local React server-render measurement on Node 26.12.1 with
NODE_ENV=production, two available CPUs and an AMD EPYC 7K62 host. It excludes browser DOM/layout, network, data loading and online workloads. A separate V8 CPU capture identified the original per-route scans; its sample weights are not used as latency measurements.To regenerate the fixed input and render snapshots from this checkout, run from
apps/presentation/dashboardwith fresh paths:For an independent baseline, run the same benchmark harness and input against the base component in an isolated checkout, then compare every HTML output. The fixture and output paths must not already exist.
Current-main overlap audit (2026-11-14)
A read-only tree comparison used main 8d7d234 and each PR's actual base and merge base. It checked every path changed on both sides with an in-memory three-way merge. This is not a full checkout, build or CI run.
For #8733, five PR paths and 286 main paths changed from merge base 53e80ca; all three overlapping paths merged cleanly in memory. The merged workflow retained all 20 main jobs, their step metadata, and 186 existing run lines; the dashboard package retained every main script.
The fixed-data performance measurements above were run against main 45cfd0c, not rerun at 8d7d234. The later main change inspected here affects an unrelated Python test. No online performance claim follows from the local measurement.