P08-03: 配置の通常操作受入

This commit is contained in:
Agent Control Runner
2026-10-14 06:20:46 +09:00
parent d01286360e
commit 0c5e0022f2
12 changed files with 6899 additions and 42 deletions
@@ -167,7 +167,7 @@ freeze, separate Opus review and integration/current final verification remain
open. All five conditions and the 30/88 denominator are unchanged. No Runtime,
UI, SaveService, collector, specification or historical evidence edits.
## R05 consolidated repair (current submission)
## R05 consolidated repair (historical submission)
The supplied ROOT_CHECKER_R05_INFRASTRUCTURE_ORACLE.json and
ROOT_OS_R05_GUIDE_INTERCEPTION.json are failure authorities, not acceptance.
@@ -194,8 +194,8 @@ chooses a visible cell with the unchanged UNSUPPORTED predicate outside the
opening guide rectangle after normal palette selection. It reads bounds,
preview and guide geometry; it does not suppress the guide or mutate models.
Cell requests include viewport-to-screen affine mapping derived from existing
Godot transforms, including stretch and window translation, and current guide
geometry. The checker recomputes the mapping and rejects guide interception.
Godot transforms and current guide geometry. The engine matrix is separate
from physical stretch and screenshot/window translation (R06 correction). The checker recomputes the mapping and rejects guide interception.
Root must retain actual CUA coordinates, screenshots and raw receipts and check
the mapping against the real window; no OS success is claimed by this worker.
@@ -205,3 +205,44 @@ local-validation.json and implementation.json. Godot parsing, fresh native and
OS collection, final full regression, independent review, integration/current
verification and Windows device evidence remain pending. No context gap or
outside-scope service defect has been demonstrated in this batch.
## R06 targeted repair (preserved repair)
Only the OS per-child total wait changes from 900 to 2400 seconds, with
truthful start/end receipt provenance. Per-request 300, provider 900, validation
180 and every source/acceptance guard remain unchanged. Product and fixtures
are unchanged. Historical R06 native passes do not establish changed-source PASS.
R06 calibration correction (ROOT_NATIVE_R06_OS_TIMEOUT.json): the engine
viewport_to_screen affine matrix [a,b,c,d,tx,ty] maps viewport (x,y) to
(a*x+c*y+tx, b*x+d*y+ty) in engine coordinates. It reports identity in the
real window and does not include physical stretch or the screenshot titlebar.
Keep 1440x810 virtual coordinates separate from 1280x720 window content and
1280x752 screenshot coordinates. For this measured window, apply scale 8/9
(approximately 0.8889), then add 32 pixels to screenshot y for the titlebar.
For modal controls, first apply the dialog offset reported by Godot, then
physical stretch and titlebar. Desktop CUA coordinates additionally require
the observed screenshot/window origin. Retain actual CUA coordinates, raw
screenshots and window geometry; recalibrate whenever geometry changes.
guide_rect remains in viewport coordinates. Preserve historical failed
evidence: R06 request 33 was unacknowledged after PID 17863 ended and cannot
count as evidence. Fresh guarded native/OS collection, full regression,
independent review and integration remain pending.
Historical R06 local validation: syntax passed; 75 checker tests ran with one failure.
The existing OS mock expects 900 rather than 2400. Blocked pending authority
to update only that mock expectation in tools/test_p08_normal_placement_evidence.py
and rerun local checks. No test was disabled or changed.
## R06 authorized mock synchronization (current submission)
The independent literal expected2400 is asserted against the driver constant,
actual wait argument and actual started/ended receipts for both writer and
reader. The timeout case also checks its writer receipts and preserves owned
child cleanup, project restoration and existing protection controls. All 75
checker tests are retained. Final local syntax/test results and exact source
and input SHAs are recorded in local-validation.json, local-source-manifest.json
and implementation.json. These are mocked Python controls, not native or OS
acceptance. Root native, OS, final full regression, independent review and
integration/current verification remain pending, including Windows device
acceptance. Existing driver2400, calibration and earlier repair work is retained.
@@ -61,7 +61,9 @@ headless flag or headless proof gate. `started.json`, `process-started.json`,
`ended.json`, raw engine log, actual profile/engine report, source/stage/default
player inventories and ordinary owner/audio records remain in the evidence.
Controller and recorder SHA appear in start/end documents. Each OS child
has a 900-second bound and each Root acknowledgement a 300-second bound.
has a 2400-second total wait recorded as timeout_seconds in start/end receipts,
using the same value passed to process.wait. Each acknowledgement retains its
300-second bound; provider 900 and validation 180 remain unchanged.
Timeout/error preserves failure records and cleans only owned children.
## CUA request / read-only acknowledgement bridge
@@ -126,11 +128,18 @@ Do not edit evidence after collection to force a pass. Correct source/input
defects through the fixed repair workflow. GDScript parsing, actual native
and OS success, full regression, review and integration are all pending.
R05 repair: cell requests now retain `viewport_to_screen` as six affine entries
`[a,b,c,d,tx,ty]`. Apply it to viewport `(x,y)` to obtain screen
`(a*x+c*y+tx, b*x+d*y+ty)`; retain the actual CUA coordinate in the raw receipt
and compare against screenshots/window geometry, including titlebar and stretch.
Do not multiply by canvas scale a second time. `guide_rect` is in viewport
coordinates and `guide_visible` records interception geometry. The unsupported
target is chosen by read-only production preview inspection outside that guide;
the failed R05 request is historical evidence and must remain preserved.
R06 calibration correction (ROOT_NATIVE_R06_OS_TIMEOUT.json): the engine
viewport_to_screen affine matrix [a,b,c,d,tx,ty] maps viewport (x,y) to
(a*x+c*y+tx, b*x+d*y+ty) in engine coordinates. It reports identity in the
real window and does not include physical stretch or the screenshot titlebar.
Keep 1440x810 virtual coordinates separate from 1280x720 window content and
1280x752 screenshot coordinates. For this measured window, apply scale 8/9
(approximately 0.8889), then add 32 pixels to screenshot y for the titlebar.
For modal controls, first apply the dialog offset reported by Godot, then
physical stretch and titlebar. Desktop CUA coordinates additionally require
the observed screenshot/window origin. Retain actual CUA coordinates, raw
screenshots and window geometry; recalibrate whenever geometry changes.
guide_rect remains in viewport coordinates. Preserve historical failed
evidence: R06 request 33 was unacknowledged after PID 17863 ended and cannot
count as evidence. Fresh guarded native/OS collection, full regression,
independent review and integration remain pending.
@@ -0,0 +1,36 @@
{
"unit": "P08-03",
"candidate": "d01286360ee88046e06b80d840fc303a71e0d661",
"local_final_tests": 75,
"native_import_parse_writer_reader": "all_pass",
"OS_acknowledged_requests": 32,
"OS_unacknowledged_request": 33,
"OS_writer_pid": 17863,
"OS_error": "TimeoutExpired: Command '['/Applications/Godot.app/Contents/MacOS/Godot', '--path', '/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-native-os-r06/stage', '--script', '/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-native-os-r06/os-runs/writer/passive_os.gd']' timed out after 900 seconds",
"owned_ended": true,
"guards": [],
"cleanup": [],
"formal_acceptance": false,
"deficits": [
"OS total child wait900 exceeded before rebuild/camera/finalsave",
"Godot viewport_to_screen is identity in actual real window; documents cannot claim it already includes canvas stretch/CUA titlebar"
],
"actual_CUA_mapping": {
"viewport_dimensions": [
1440,
810
],
"window_content": [
1280,
720
],
"screenshot_dimensions": [
1280,
752
],
"scale": 0.8888888888888888,
"titlebar_pixels": 32,
"modal_mapping": "apply native-reported dialog translation then physical stretch/titlebar"
},
"requested_fix": "Only OS child total wait to2400 with actual provenance; preserve per-request300, provider900, validation180, acceptance and source guards. Correct calibration docs/metadata to distinguish engine virtual matrix from CUA screenshot/window coordinates. No product/fixture rewrite or duplicated regression. Request33 after screenshot shows project manager because original child already terminal: unacknowledged, not valid evidence."
}
@@ -0,0 +1,38 @@
{
"task_id": "P08-03",
"started_at": "2026-10-13T20:49:58.133267+00:00",
"ended_at": "2026-10-13T20:51:06.466499+00:00",
"syntax": {
"method": "ast.parse in memory; no pyc",
"files": {
"tools/run_p08_normal_placement.py": "191831b4f684bdd7e99b3be6038c15a6830f544d17c941869b1c2a8fbe4a2aa3",
"tools/check_p08_normal_placement_evidence.py": "dfa37ed586240972e57cbb6a962beb856ba289abd58dbfaf83706d3a227a0116",
"tools/test_p08_normal_placement_evidence.py": "d40edc5518e8bfcb59a1da3f55305955581209cfd24a0223c764d6e39c4c361e",
"tests/fixtures/p08-03/checker_fixture.py": "508e8bc0f9ff3dc578a3b34fdfb3354fe31e5e604e2d7731cd25511c4261e93a"
},
"passed": true
},
"checker_tests": {
"argv": [
"python3",
"-B",
"tools/test_p08_normal_placement_evidence.py"
],
"timeout_seconds": 900,
"exit_code": 0,
"log": "repair-r05-local-checker-tests.log",
"log_sha256": "84c71a911af1ea79ad6cb005513ce2d3b245a1cc3577baa014817714dc08d413",
"test_count": 75,
"retained_previous_tests": 56,
"new_tests": 19,
"synthetic_and_actual_snapshot_controls_only": true
},
"source_and_inputs_unchanged_during_tests": true,
"native_engines_started": 0,
"OS_operations": 0,
"full_regression_executed": false,
"acceptance": "pending",
"local_source_manifest": "local-source-manifest.json",
"local_source_manifest_sha256": "f897d2713f64e1b3338e3e24a9e61859db190643a6eadbd202dde91c5bb0df04",
"git_diff_check": "pass"
}
@@ -18,8 +18,8 @@
},
"final_local_files_sha256": {
"docs/plans/original-completion-2026-10-02/execution/completion_marker_contracts.json": "f59f01f65c795057117fda753706a6200928d4954af901fc965cf1a7c09232b5",
"docs/plans/original-completion-2026-10-02/execution/p08-03/CONDITION_MATRIX.md": "6dad13394a647cecae79e55ecfe42e57c4266565f131ad298ac0305942c6159d",
"docs/plans/original-completion-2026-10-02/execution/p08-03/ROOT_COLLECTION.md": "bc3f4045cae8c59dce340ac9b1fb523ad6bb50882f794fdbf89ec326213ac7db",
"docs/plans/original-completion-2026-10-02/execution/p08-03/CONDITION_MATRIX.md": "a1b1c5f29863696ac05f6aa2061b7f6a0cf9b227400f9b53bed4708e4c9d6ba3",
"docs/plans/original-completion-2026-10-02/execution/p08-03/ROOT_COLLECTION.md": "0bf5a4b0f6f1fc21e4e0dd314f74030cdae9073c7531f77fb8b6177dfb0b2823",
"docs/plans/original-completion-2026-10-02/execution/p08-03/passive_os_placement_recorder.gd": "21855e3b32263eb98127202467b770cb1334fa70c6b357825a122db385ffa8d6",
"docs/plans/original-completion-2026-10-02/execution/p08-03/passive_os_placement_recorder.gd.uid": "d7f97560c8bbdfdaed173b2b48261e65b92847bd0493dd1cc2ebb309d0622314",
"scenes/main/main.gd": "e015e18fee8c114ddce39e46a04be139e694a4e3569855065576c0c909b94fc6",
@@ -33,8 +33,8 @@
"tests/ui/test_p08_normal_placement_ops.gd.uid": "7d168ac50ca82ae1979da31c467f9a5020ca5ec7616b5bf99294413d85b3b299",
"tools/check_p08_normal_placement_evidence.py": "dfa37ed586240972e57cbb6a962beb856ba289abd58dbfaf83706d3a227a0116",
"tools/regression/suite-policy.json": "e875e6b05bbac8dfb98c2af007221436fa558ddb8806b6214689830295b32e8d",
"tools/run_p08_normal_placement.py": "191831b4f684bdd7e99b3be6038c15a6830f544d17c941869b1c2a8fbe4a2aa3",
"tools/test_p08_normal_placement_evidence.py": "d40edc5518e8bfcb59a1da3f55305955581209cfd24a0223c764d6e39c4c361e",
"tools/run_p08_normal_placement.py": "5cb1f58664a0bec71c8b5e853749d1c3656e0a2a027201e33fbaa6b0c0291fc6",
"tools/test_p08_normal_placement_evidence.py": "8b98647990e45588e117b6e9ecb87e5a1fcf8d83ddbd6c27da8b0a2edd74da86",
"docs/plans/original-completion-2026-10-02/execution/p08-03/NATIVE_R02_READER_OPERATION_DELTA.json": "60463e735d4f473bdad7b0925c37b9ca71ee34d6f0eb74ea6c07b508b5153e41",
"docs/plans/original-completion-2026-10-02/execution/p08-03/native-r02-reader-stderr.log": "8079b3dc2ba7b9a9c37fcd9a5a8df0971354027c60def4b95fb15c7310832040",
"docs/plans/original-completion-2026-10-02/execution/p08-03/OS_R04_INITIAL_LOAD_ORACLE_FINDING.json": "6a796bd63f5a16bd0bf0fcf07cec3f4414a5e6704409a79522a2677eae53b417",
@@ -45,7 +45,7 @@
},
"executed_source_manifest": {
"path": "local-source-manifest.json",
"sha256": "f897d2713f64e1b3338e3e24a9e61859db190643a6eadbd202dde91c5bb0df04",
"sha256": "a8f442062ef4d4c791e07ad00271c7123c80997bf76897f12c78c303d90173a8",
"source_file_count": 1328,
"contains": "Complete final local execution source and immutable/fixture/evidence input map; no material-size omission"
},
@@ -71,13 +71,12 @@
},
"actual_local_validation": {
"path": "local-validation.json",
"sha256": "0b4bda3555f9dcf2ba1e79df532d1a55543b73e2a38002238e49a0850fe67d0a",
"sha256": "6393caaffaae4e289871e96b241ea3aeb94fbba385b39fcd71d6bf14e2d1c12a",
"python_syntax": "pass: four final Python sources parsed in memory",
"checker_control_tests": 75,
"checker_exit_code": 0,
"log_sha256": "84c71a911af1ea79ad6cb005513ce2d3b245a1cc3577baa014817714dc08d413",
"native_OS_full_regression": "not executed",
"git_diff_check": "pass"
"log_sha256": "74a86ece9204fadf39c763ec089b46b94ecfb9a04206c4aaeaeadda423879bda",
"native_OS_full_regression": "not executed"
},
"conditions": {
"support_connection": {
@@ -212,6 +211,45 @@
"collector_changes": false,
"native_OS_full_regression_review_integration": "pending",
"local_test_repair": "First final run rejected both corrupt reader checkpoints through earlier strict resume oracle; controls retargeted to construction-completed snapshots to exercise topology gate directly. Failure log retained."
},
"r06": {
"authority": "ROOT_NATIVE_R06_OS_TIMEOUT.json",
"OS_child_timeout_seconds": 2400,
"per_request_timeout_seconds": 300,
"provider_timeout_seconds": 900,
"validation_timeout_seconds": 180,
"production_changes": false,
"fixture_changes": false,
"collector_changes": true,
"calibration": {
"engine_virtual_dimensions": [
1440,
810
],
"engine_viewport_to_screen": "identity; separate physical calibration",
"window_content": [
1280,
720
],
"screenshot_dimensions": [
1280,
752
],
"physical_scale": 0.8888888888888888,
"titlebar_pixels": 32,
"modal_mapping": "Godot dialog offset first, then stretch and titlebar; desktop adds window origin"
},
"native_OS_full_regression_review_integration": "pending",
"historical_blocked": "Existing checker mock hardcodes OS wait=900; targeted scope excludes test edits.",
"historical_minimal_proposal": "Update only tools/test_p08_normal_placement_evidence.py:397 expected OS wait to 2400 and rerun local tests.",
"mock_synchronization": {
"authorized": true,
"independent_literal_expected2400": true,
"actual_wait_and_started_ended_receipts": "writer and reader; timeout writer also checked",
"checker_tests": 75,
"checker_exit_code": 0,
"pending": "Root native, OS, full regression, independent review and integration"
}
}
}
}
@@ -6613,8 +6613,8 @@
},
"tools/run_p08_normal_placement.py": {
"path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p08-03-code/P08-03-implement/tools/run_p08_normal_placement.py",
"bytes": 15233,
"sha256": "191831b4f684bdd7e99b3be6038c15a6830f544d17c941869b1c2a8fbe4a2aa3"
"bytes": 15345,
"sha256": "5cb1f58664a0bec71c8b5e853749d1c3656e0a2a027201e33fbaa6b0c0291fc6"
},
"tools/run_upkeep_ui_flow.py": {
"path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p08-03-code/P08-03-implement/tools/run_upkeep_ui_flow.py",
@@ -6633,8 +6633,8 @@
},
"tools/test_p08_normal_placement_evidence.py": {
"path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p08-03-code/P08-03-implement/tools/test_p08_normal_placement_evidence.py",
"bytes": 26725,
"sha256": "d40edc5518e8bfcb59a1da3f55305955581209cfd24a0223c764d6e39c4c361e"
"bytes": 27317,
"sha256": "8b98647990e45588e117b6e9ecb87e5a1fcf8d83ddbd6c27da8b0a2edd74da86"
},
"tools/verify_exported_opening.py": {
"path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p08-03-code/P08-03-implement/tools/verify_exported_opening.py",
@@ -6660,6 +6660,7 @@
"docs/plans/original-completion-2026-10-02/execution/p08-03/ROOT_CHECKER_R05_INFRASTRUCTURE_ORACLE.json": "9fd11c89e53d4fa569f809c06be1d0592741c58691fae3e515cd1c12da86758c",
"docs/plans/original-completion-2026-10-02/execution/p08-03/ROOT_OS_R05_GUIDE_INTERCEPTION.json": "b8a9041b59b87c7b01ebbf36f320a5227734034c6b2d45d26fd22ce654d2c612",
"docs/plans/original-completion-2026-10-02/execution/p08-03/ROOT_R05_READER_CHECKPOINT.json.gz": "27fd3b41834106ccd6a0980dfa2bc91cc19806dd3f552ba04246efb400763233",
"docs/plans/original-completion-2026-10-02/execution/p08-03/ROOT_R05_READER_CHECKPOINT_PROVENANCE.json": "daf034375facf36e9cc8da4ec0001d7c7b017c315a9155680b4b490e582ec5b9"
"docs/plans/original-completion-2026-10-02/execution/p08-03/ROOT_R05_READER_CHECKPOINT_PROVENANCE.json": "daf034375facf36e9cc8da4ec0001d7c7b017c315a9155680b4b490e582ec5b9",
"docs/plans/original-completion-2026-10-02/execution/p08-03/ROOT_NATIVE_R06_OS_TIMEOUT.json": "7e3068026e0f779cd05273b8e4d64e78f7cb923c9241172c6bad7b347682445e"
}
}
@@ -1,13 +1,11 @@
{
"task_id": "P08-03",
"started_at": "2026-10-13T20:49:58.133267+00:00",
"ended_at": "2026-10-13T20:51:06.466499+00:00",
"syntax": {
"method": "ast.parse in memory; no pyc",
"files": {
"tools/run_p08_normal_placement.py": "191831b4f684bdd7e99b3be6038c15a6830f544d17c941869b1c2a8fbe4a2aa3",
"tools/run_p08_normal_placement.py": "5cb1f58664a0bec71c8b5e853749d1c3656e0a2a027201e33fbaa6b0c0291fc6",
"tools/check_p08_normal_placement_evidence.py": "dfa37ed586240972e57cbb6a962beb856ba289abd58dbfaf83706d3a227a0116",
"tools/test_p08_normal_placement_evidence.py": "d40edc5518e8bfcb59a1da3f55305955581209cfd24a0223c764d6e39c4c361e",
"tools/test_p08_normal_placement_evidence.py": "8b98647990e45588e117b6e9ecb87e5a1fcf8d83ddbd6c27da8b0a2edd74da86",
"tests/fixtures/p08-03/checker_fixture.py": "508e8bc0f9ff3dc578a3b34fdfb3354fe31e5e604e2d7731cd25511c4261e93a"
},
"passed": true
@@ -20,19 +18,14 @@
],
"timeout_seconds": 900,
"exit_code": 0,
"log": "repair-r05-local-checker-tests.log",
"log_sha256": "84c71a911af1ea79ad6cb005513ce2d3b245a1cc3577baa014817714dc08d413",
"log": "repair-r06-mock-sync-local-checker-tests.log",
"log_sha256": "74a86ece9204fadf39c763ec089b46b94ecfb9a04206c4aaeaeadda423879bda",
"test_count": 75,
"retained_previous_tests": 56,
"new_tests": 19,
"synthetic_and_actual_snapshot_controls_only": true
"failures": 0
},
"source_and_inputs_unchanged_during_tests": true,
"native_engines_started": 0,
"OS_operations": 0,
"full_regression_executed": false,
"acceptance": "pending",
"local_source_manifest": "local-source-manifest.json",
"local_source_manifest_sha256": "f897d2713f64e1b3338e3e24a9e61859db190643a6eadbd202dde91c5bb0df04",
"git_diff_check": "pass"
"local_source_manifest_sha256": "a8f442062ef4d4c791e07ad00271c7123c80997bf76897f12c78c303d90173a8"
}
@@ -0,0 +1,19 @@
..................F........................................................
======================================================================
FAIL: test_mock_native_controller_two_private_pids (__main__.EvidenceTests)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p08-03-code/P08-03-implement/tools/test_p08_normal_placement_evidence.py", line 430, in test_mock_native_controller_two_private_pids
self.collector_mock()
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p08-03-code/P08-03-implement/tools/test_p08_normal_placement_evidence.py", line 423, in collector_mock
phases = D.collect_os(r,self.root,output,stage,str(Path(self.temp.name)/'synthetic-engine-not-executable'),'1'*40,refs,protected,outer)
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p08-03-code/P08-03-implement/tools/run_p08_normal_placement.py", line 120, in collect_os
r.require(passed, 'native OS collection failed: '+str(error or guards or cleanup_errors))
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p08-03-code/P08-03-implement/tools/run_all_tests.py", line 22, in require
if not ok: raise AssertionError(reason)
AssertionError: native OS collection failed: AssertionError: 900 != 2400
----------------------------------------------------------------------
Ran 75 tests in 64.918s
FAILED (failures=1)
@@ -0,0 +1,5 @@
...........................................................................
----------------------------------------------------------------------
Ran 75 tests in 65.333s
OK
+3 -1
View File
@@ -18,6 +18,7 @@ HERE = Path(__file__).resolve().parent
CONTRACT = 'docs/plans/original-completion-2026-10-02/execution/completion_marker_contracts.json'
CONDITIONS = ('support_connection', 'invalid_position_reason', 'demolish_rebuild',
'pan_zoom_world_identity', 'separate_pid_resume')
OS_CHILD_TIMEOUT_SECONDS = 2400
RECORDER = 'docs/plans/original-completion-2026-10-02/execution/p08-03/passive_os_placement_recorder.gd'
def collect_os(r, root, out, stage, engine, commit, refs, protected, outer):
@@ -68,6 +69,7 @@ def collect_os(r, root, out, stage, engine, commit, refs, protected, outer):
'default_before':protected, 'command':command, 'engine_sha256':r.sha(engine),
'controller_sha256':r.sha(root/'tools/run_p08_normal_placement.py'),
'recorder_sha256':r.sha(recorder), 'formal_acceptance':False,
'timeout_seconds':OS_CHILD_TIMEOUT_SECONDS,
'environment':{k:v for k,v in env.items() if k.startswith(('P08_', 'THE_TREE_'))},
'environment_sha256':hashlib.sha256(json.dumps(env,sort_keys=True).encode()).hexdigest()}
r.write(folder/'started.json', base)
@@ -81,7 +83,7 @@ def collect_os(r, root, out, stage, engine, commit, refs, protected, outer):
monotonic_ns=time.monotonic_ns(), state='waiting_for_root_cua_requests'))
print(json.dumps({'actual_pid':process.pid, 'request_directory':str(pair),
'state':'waiting_for_root_cua', 'role':role}), flush=True)
exit_code = process.wait(timeout=900)
exit_code = process.wait(timeout=base['timeout_seconds'])
r.require(exit_code == 0, 'ordinary native OS exit0')
raw = (folder/'engine-native.log').read_text()
r.require('ERROR:' not in raw and 'SCRIPT ERROR:' not in raw, 'OS native diagnostics')
+12 -2
View File
@@ -375,6 +375,10 @@ class EvidenceTests(unittest.TestCase):
def collector_mock(self, fail_wait=False):
"""No native engine: Popen, profiles, live engine probes are all mocked."""
expected2400 = 2400
self.assertEqual(expected2400, D.OS_CHILD_TIMEOUT_SECONDS)
def assert2400(receipt):
self.assertEqual(expected2400, receipt['timeout_seconds'])
output = Path(self.temp.name)/'mock-collection'
stage = output/'stage'; stage.mkdir(parents=True)
shutil.copyfile(self.root/'project.godot',stage/'project.godot')
@@ -392,9 +396,10 @@ class EvidenceTests(unittest.TestCase):
profile_text = (stage/'project.godot').read_text()
name = __import__('re').search(r'config/custom_user_dir_name="([^"]+)"',profile_text).group(1)
pid = 801+len(captured)
process = SimpleNamespace(pid=pid)
process = SimpleNamespace(pid=pid, role=role)
def wait(timeout):
self.assertEqual(900,timeout)
self.assertEqual(expected2400,timeout)
assert2400(C.load(output/('os-runs/'+role+'/started.json')))
if fail_wait:
raise TimeoutError('mock Root acknowledgement timeout')
kw['stdout'].write('P08 passive OS placement: 2 checks, 0 failures\n')
@@ -425,6 +430,11 @@ class EvidenceTests(unittest.TestCase):
self.assertEqual([p.pid for p in captured],cleaned)
self.assertEqual(public,(stage/'project.godot').read_bytes())
self.assertTrue((output/'os-runs/writer/ended.json').exists())
self.assertEqual(['writer'] if fail_wait else ['writer', 'reader'],
[p.role for p in captured])
for process in captured:
for event in ('started', 'ended'):
assert2400(C.load(output/('os-runs/'+process.role+'/'+event+'.json')))
def test_mock_native_controller_two_private_pids(self):
self.collector_mock()