Record P08-03 completed OS input sequence and event observer repair
This commit is contained in:
+7
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"action": "request-repair",
|
||||
"task_id": "P08-03",
|
||||
"reason": "I checked the source read-only. The ROOT_OS_R07 writer completed all 64 requests: every operation, the camera 50/400 clamp, the selected-reception screenshot at (-8,0), and the normal save/export. Only 2 of 294 checks failed: \"observed OS selected cell\" and the camera world-identity check that depends on it. Owned processes ended and the source/player/cleanup guards were all 0, but the writer exited 1, so the OS reader never started.\n\nCause: in tests/fixtures/p08-03/passive_placement.gd:155-161, when observed_cell is missing, `selected` falls back to view.canvas_to_cell(view.get_local_mouse_position()). That read happens after the Root request and frames have already been awaited, not when the left-press event was dispatched, so it returned empty (selected_cell []). The product predicate selected_entity_id == occupant did not fail, and the UI shows reception at (-8,0). Recomputing the cell from the recorded inputs (viewport [625.5,580.5], offset [79,65], map [475,360], cell size [16,24], bounds minX -12 / maxY 6) gives [-8,0,0], the requested cell. So this looks like an observer timing defect, not a product defect. The raw getter value was not recorded, so we don't claim the exact mechanism.\n\nTargeted repair, limited to the allowed fixture/checker/test/docs paths:\n(1) In the read-only InputObserver, record the actual left-press viewport/local coordinates and the cell from canvas_to_cell at dispatch, before any UI side effects. Record them together with the canvas/global transforms, camera offset/zoom and map bounds at that moment. Also record the raw value of the late getter for diagnosis only.\n(2) Pair the captured event cell with the product's actual selected_entity_id, its occupant and that occupant's world cell. Never use the requested cell as the result. Remove the late fallback from the pass path, and do not call product handlers or mutate the model.\n(3) In the checker, recompute the event cell from the captured transforms and bounds, and require: event cell == expected world cell, selected entity == occupant of that cell, and capture present.\n(4) Add meaningful negatives: wrong event cell, wrong selected entity, missing input capture, and transform/bounds inconsistent with the cell.\n(5) Keep strict no-loss and raw whole states, the native ordinary exit/error criteria and all 5 original facets.\n(6) Do not modify or relabel the raw failed R07 output (64 requests, exit 1). It stays as history.\n(7) Update CONDITION_MATRIX.md and implementation.json with the honest state and an evidence-reuse assessment. Reuse is only valid where the product source, input, settings and applicability are identical. Fixture/checker changes need a new Root native/OS/final full run, and OS evidence must be recollected.\n\nWorker scope: local Python syntax and checker tests only. Root collects native, OS and final full regression. No new task, no duplicate implementation, no product changes.",
|
||||
"codex_model": "gpt-6.1-sol",
|
||||
"codex_model_reason": "This is a narrow, well-diagnosed observer/checker fix. The faulty lines are already pinned down (passive_placement.gd:155-161) and the inputs to recompute the cell are already recorded. It needs no product-logic redesign and no new architecture. The same worker already has this context, so the default model is enough for quality and saves time and usage. gpt-6-astra isn't warranted."
|
||||
}
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"action": "run",
|
||||
"task_id": "P08-03",
|
||||
"reason": "P08-03 is in repair_ready with submitted commit 0c5e002, and the owner asked for the same Sol worker to fix the actual-input observer. The fix stays inside allowed_paths: fixtures, checker, tests and docs, plus dependent test and metadata updates. Scope: (1) At dispatch time, record the actual input coordinates, the world cell and the pan/zoom transforms. Separately record the selected entity and the cell occupancy. Getter reads taken later count only as diagnostics. (2) Keep the old raw failed64 data, the strict native exit status and all five condition records unchanged. (3) Keep the 2400 OS receipt values and the existing timeout cleanup guards. (4) The worker runs only local syntax checks and meaningful checker tests: no Godot, native or full regression. (5) It returns a genuine submitted result and lists the pending Root items: actual native, OS and final full runs, then a separate review. Product work is not redone or duplicated. This does not change the spec, the acceptance denominator or the budget, and does not approve or integrate anything.",
|
||||
"codex_model": "gpt-6.1-sol",
|
||||
"codex_model_reason": "The owner asked for the same existing Sol worker, and gpt-6.1-sol is the default. This repair has a clear scope: the evidence observer, checker and tests, with the product logic already submitted. It doesn't need gpt-6-astra's deeper reasoning. Keeping the same worker keeps the context it already has, avoids repeating earlier work, and limits time and usage."
|
||||
}
|
||||
+60
@@ -0,0 +1,60 @@
|
||||
{
|
||||
"unit": "P08-03",
|
||||
"candidate": "0c5e0022f2d809e4735804f67582b9c96a1dc025",
|
||||
"native4_phases": "pass",
|
||||
"local75": "pass final SHA matched",
|
||||
"actual_OS_requests": 64,
|
||||
"OS_writer_pid": 35236,
|
||||
"OS_timeout_seconds": 2400,
|
||||
"actual_failures": [
|
||||
"observed OS selected cell",
|
||||
"camera world identity"
|
||||
],
|
||||
"raw_recorded_selected_cell": [],
|
||||
"actual_input_viewport": [
|
||||
625.5,
|
||||
580.5
|
||||
],
|
||||
"preclick_viewport_transform": [
|
||||
1.0,
|
||||
0.0,
|
||||
0.0,
|
||||
1.0,
|
||||
79.0,
|
||||
65.0
|
||||
],
|
||||
"local_actual_input": [
|
||||
546.5,
|
||||
515.5
|
||||
],
|
||||
"map_position": [
|
||||
475.0,
|
||||
360.0
|
||||
],
|
||||
"cell_dimensions": [
|
||||
16.0,
|
||||
24.0
|
||||
],
|
||||
"bounds": {
|
||||
"max_x": 12,
|
||||
"max_y": 6,
|
||||
"min_x": -12,
|
||||
"min_y": 0
|
||||
},
|
||||
"derived_actual_input_cell": [
|
||||
-8,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"formula_source": "scenes/main/world_preview.gd:391-401",
|
||||
"UI_after_click": "request0063 screen-after.png shows selected reception at coordinate(-8,0)",
|
||||
"observer_source": "tests/fixtures/p08-03/passive_placement.gd:156-161 uses view.canvas_to_cell(view.get_local_mouse_position()) after awaiting Root and frames",
|
||||
"diagnosis_limit": "raw getter value was not recorded; exact reason it returns null remains unproven. Input-event-derived cell and actual selected-entity/UI identity must both be verified, not replaced by requested cell.",
|
||||
"ordinary_save": "request0064 actual normal save completed and exported formal",
|
||||
"OS_reader": "not started, writer exit1",
|
||||
"owned_ended": true,
|
||||
"guard_errors": [],
|
||||
"cleanup_errors": [],
|
||||
"formal_acceptance": false,
|
||||
"requested_fix": "Capture actual left-press world coordinate from read-only input event before UI side effects; retain matching selected entity ID check and whole-model guards. Add negative wrong-input-cell/entity tests. Never alter raw failed proof or waive native exit/error criteria. Opus should assess narrowly applicable evidence reuse to avoid needless duplicate replay."
|
||||
}
|
||||
Reference in New Issue
Block a user