Skip to content

Commit ffc9066

Browse files
authored
Merge pull request #1835 from chsami/codex/revert-pr-1832
[codex] revert walker upstream sync from development
2 parents 5c1afb1 + 8ea1785 commit ffc9066

222 files changed

Lines changed: 1701 additions & 40963 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎.github/workflows/shortest-path-upstream-drift.yml‎

Lines changed: 0 additions & 90 deletions
This file was deleted.

‎docs/F2P_WEBWALKER_HARNESS.md‎

Lines changed: 1 addition & 171 deletions
Original file line numberDiff line numberDiff line change
@@ -35,164 +35,6 @@ scripts/run-f2p-webwalker-harness.sh F2P-15
3535

3636
The runner forwards route settings through `microbot.test.webwalker.*` system properties because the Gradle `runTest` task only propagates `microbot.test.*` properties into the launched client JVM.
3737

38-
`TestRunnerPlugin` starts before ordinary plugins and clears the persisted enabled flag for the selected
39-
test target. It starts that target only after a game tick reports `LOGGED_IN`, a local player is present and
40-
the welcome-screen Play widget is no longer visible, then clears the enabled flag again while leaving the
41-
target active for the current process. This readiness contract is intentional: RuneLite can report
42-
`LOGGED_IN` and expose a local player before the welcome overlay has stopped blocking interaction, and a
43-
persisted harness flag must not start its private route timeout during the next client's login sequence.
44-
45-
## Planner modes and evidence
46-
47-
Planner selection is explicit and defaults to `LOCAL`:
48-
49-
- `LOCAL` runs only the local planner;
50-
- `SHADOW` executes local and compares upstream asynchronously;
51-
- `UPSTREAM_F2P_CANARY` calculates both candidates for non-members policy and selects upstream only after a
52-
semantic match. Members-policy requests remain local.
53-
54-
Enable shadow evidence for a harness run with:
55-
56-
```bash
57-
MICROBOT_WEBWALKER_PLANNER_MODE=SHADOW \
58-
scripts/run-f2p-webwalker-harness.sh F2P-17
59-
```
60-
61-
`MICROBOT_WEBWALKER_UPSTREAM_PLANNER_SHADOW=true` remains a harness compatibility alias for `SHADOW`; new
62-
automation should set the mode directly.
63-
64-
The harness waits up to two minutes for the bounded shadow worker to settle and embeds the same
65-
coordinate-free schema-v2 object served by `/walker/shadow` under `shadowEvidence` in `result.json`. An
66-
enabled run fails if it submits no comparison, leaves work pending, or observes a semantic divergence or
67-
planner failure. Extract and run the full coverage evaluator with:
68-
69-
```bash
70-
jq '.shadowEvidence' ~/.runelite/test-results/f2p-webwalker/result.json \
71-
> build/walker-shadow-snapshot.json
72-
scripts/evaluate-walker-shadow-evidence.py \
73-
build/walker-shadow-snapshot.json \
74-
--json-output build/walker-shadow-evidence.json \
75-
--markdown-output build/walker-shadow-evidence.md
76-
```
77-
78-
A single route can prove that evidence collection works but cannot satisfy the production selection gate's
79-
cross-category minimums. Run the representative route mix described in `docs/walker-planner-selection-gate.md`.
80-
81-
The accepted 2026-08-05 aggregate combines 12 independently validated fresh-client snapshots and passes the
82-
full F2P live gate: 141/141 semantic matches, 75 active routes, 15 active replans, 11 recovery replans, 39
83-
underground comparisons, 18 walking-only cave selections and 71 exact arrivals, with no divergence, planner
84-
failure, pending/discarded work, unreachable outcome or exit. Keep the inputs separate and use the evaluator;
85-
do not treat one long process or hand-added counters as equivalent evidence.
86-
87-
Run the opt-in F2P selection canary separately:
88-
89-
```bash
90-
MICROBOT_WEBWALKER_PLANNER_MODE=UPSTREAM_F2P_CANARY \
91-
MICROBOT_WEBWALKER_OUTPUT_DIR=/tmp/microbot-f2p-canary \
92-
scripts/run-f2p-webwalker-harness.sh F2P-17
93-
```
94-
95-
The canary keeps the active route calculating until both planners have completed, then atomically exposes one
96-
selected route. It fails evidence collection if an ordinary canary run records a semantic divergence, planner
97-
failure or no upstream selection. The accepted 2026-08-05 underground run completed five repetitions, made
98-
ten upstream selections and recorded ten arrivals with no divergence or failure.
99-
100-
The test-only forced-failure mode proves the release-independent local fallback without changing production
101-
failure handling:
102-
103-
```bash
104-
MICROBOT_WEBWALKER_PLANNER_MODE=UPSTREAM_F2P_CANARY \
105-
MICROBOT_WEBWALKER_FORCE_UPSTREAM_FAILURE=true \
106-
MICROBOT_WEBWALKER_EXPECT_LOCAL_FALLBACK=true \
107-
MICROBOT_WEBWALKER_OUTPUT_DIR=/tmp/microbot-f2p-rollback \
108-
scripts/run-f2p-webwalker-harness.sh F2P-17
109-
```
110-
111-
The failure hook is honored only in test mode. An accepted rollback run requires planner failures and local
112-
failure fallbacks, requires zero upstream selections, and still requires every live route arrival. The
113-
2026-08-05 run recorded ten injected failures, ten local fallbacks and ten arrivals. Terminal outcomes are
114-
bound to the generation-matched ready route, so `LOCAL` walks and members-policy walks under the F2P canary
115-
cannot inflate these counts; the normal and forced-failure F2P-17 runs each retained all ten eligible arrivals.
116-
117-
Evaluate the two fresh-client artifacts as one release decision instead of reviewing their embedded checks
118-
independently:
119-
120-
```bash
121-
scripts/evaluate-walker-rollout-evidence.py \
122-
/tmp/microbot-f2p-canary/result.json \
123-
/tmp/microbot-f2p-rollback/result.json \
124-
--json-output build/walker-f2p-rollout-evidence.json \
125-
--markdown-output build/walker-f2p-rollout-evidence.md
126-
```
127-
128-
The paired evaluator requires the pinned candidate, distinct client sessions, the same required route set,
129-
settled accounting, ten normal upstream selections and arrivals, and ten forced failure fallbacks and
130-
arrivals. It also requires one coordinate-free canary-readiness timing sample per completed comparison,
131-
rejects a submission-to-ready maximum above `2,000 ms`, and rejects average non-search overhead above `250 ms`
132-
per decision after subtracting both measured searches. Readiness includes executor queueing, both searches,
133-
semantic comparison, selection/fallback and route materialization. Its report is coordinate-free and rejects
134-
exception-message exposure. The fresh 2026-08-05 pair passes with no failure, shortfall or warning: normal
135-
readiness averaged `304.3 ms`, peaked at `645.7 ms` and averaged `172.0 ms` of non-search overhead; forced
136-
rollback averaged `260.8 ms`, peaked at `675.1 ms` and averaged `123.4 ms` of non-search overhead.
137-
138-
Prerequisite-bearing selection-gate routes are intentionally excluded from the default fresh-account suite.
139-
Run them explicitly on a suitable profile:
140-
141-
```bash
142-
MICROBOT_WEBWALKER_PLANNER_MODE=SHADOW \
143-
scripts/run-f2p-webwalker-harness.sh F2P-18
144-
```
145-
146-
It first performs ten real `compareRoutes` calls and requires all ten explicit bank-to-target shadow legs to
147-
settle and select an item-gated transport. It then performs three Lumbridge-to-Champions' Guild repetitions,
148-
disables agility shortcuts and teleports, enables canoes, and requires at least five completed `CANOE` shadow
149-
selections in addition to exact arrivals. The accepted 2026-08-05 rerun produced 49/49 matching comparisons,
150-
10/10 matching item-gated bank legs and six exact terminal arrivals.
151-
152-
The representative terminal-travel slice requires at least 90 coins for two outbound journeys and one reverse
153-
setup journey:
154-
155-
```bash
156-
MICROBOT_WEBWALKER_PLANNER_MODE=SHADOW \
157-
scripts/run-f2p-webwalker-harness.sh F2P-19
158-
```
159-
160-
It disables agility shortcuts and teleports, enables ships, and requires at least three completed
161-
`TERMINAL_TRAVEL` shadow selections in addition to exact arrivals.
162-
163-
The ordinary-replan slice injects twelve replans only while a long surface route is active and requires each
164-
one to finish in the upstream shadow before accepting the final arrival:
165-
166-
```bash
167-
MICROBOT_WEBWALKER_PLANNER_MODE=SHADOW \
168-
scripts/run-f2p-webwalker-harness.sh F2P-20
169-
```
170-
171-
The recovery slice queues its replans through a test-only hook that is consumed by the walker thread. This
172-
exercises the same recovery evidence context as a real stall without manufacturing a client-thread sleep or
173-
calling the recovery helper from the harness thread. Three repetitions produce at least five alternating Port
174-
Sarim / Rimmington legs; each sufficiently long outbound or reverse setup leg attempts two progress-gated
175-
recovery replans. The verifier uses observed results rather than requested injections and requires ten
176-
completed comparisons plus five recovered arrivals. The accepted 2026-08-05 session produced 11/11 matching
177-
recovery comparisons and six recovered arrivals with no exit or unreachable outcome:
178-
179-
```bash
180-
MICROBOT_WEBWALKER_PLANNER_MODE=SHADOW \
181-
scripts/run-f2p-webwalker-harness.sh F2P-21
182-
```
183-
184-
The existing spell-teleport stress harness can capture a separate fresh-session slice:
185-
186-
```bash
187-
MICROBOT_GE_LUMBRIDGE_ITERATIONS=3 \
188-
MICROBOT_GE_LUMBRIDGE_UPSTREAM_PLANNER_SHADOW=true \
189-
scripts/run-ge-lumbridge-teleport-harness.sh
190-
```
191-
192-
Extract its `shadowEvidence` as a second file and pass both snapshots to the evaluator. It validates every
193-
session before aggregation and rejects duplicate session start identities. Do not concatenate JSON or add
194-
counters by hand.
195-
19638
## Agent Loop
19739

19840
1. Run the full suite.
@@ -222,16 +64,4 @@ counters by hand.
22264
| F2P-14 | `3092,3245,0` | `3109,3341,0` | Draynor Manor approach |
22365
| F2P-15 | `3109,3341,0` | `3106,3363,0` | Draynor Manor door/object handling |
22466
| F2P-16 | `3106,3363,0` | `3092,3245,0` | Reverse manor exit behavior |
225-
| F2P-17 | `3236,3458,0` | `3237,9858,0` | Walks from the fixed Varrock surface manhole to the sewers 5 times on a F2P world with agility shortcuts and teleports disabled; setup climbs out before every repetition, so a prior run ending underground cannot turn the case into a no-op |
226-
227-
## Selection-gate routes
228-
229-
These prerequisite-bearing routes are available by explicit ID and are not included by the default `all`
230-
filter.
231-
232-
| ID | From | To | Coverage |
233-
|---|---:|---:|---|
234-
| F2P-18 | `3243,3237,0` | `3199,3344,0` | Ten explicit item-gated bank-to-target comparisons plus three River Lum canoe repetitions and five or more `CANOE` planner selections |
235-
| F2P-19 | `3029,3217,0` | `2956,3146,0` | Two Port Sarim-to-Musa Point repetitions with three or more fare-gated `TERMINAL_TRAVEL` planner selections |
236-
| F2P-20 | `3029,3217,0` | `2946,3368,0` | Long surface walk with twelve deliberately injected and settled `ACTIVE_REPLAN` comparisons |
237-
| F2P-21 | `3029,3217,0` | `2957,3214,0` | Five alternating surface walks with two walker-thread `RECOVERY_REPLAN` comparisons each and five recovered arrivals |
67+
| F2P-17 | current live player tile | `3237,9858,0` | Captures current origin, then walks to Varrock Sewers 5 times on a F2P world with agility shortcuts and teleports disabled |

‎docs/decisions/adr-0005-walker-transport-execution-boundary.md‎

Lines changed: 0 additions & 58 deletions
This file was deleted.

0 commit comments

Comments
 (0)