P08-03: 配置の通常操作受入
This commit is contained in:
@@ -3679,6 +3679,17 @@
|
||||
"path": "docs/spec/acceptance/P08-02.json",
|
||||
"scope": "new standalone mixed suite; native execution pending"
|
||||
}
|
||||
},
|
||||
{
|
||||
"test": "tests/ui/test_p08_normal_placement_ops.gd",
|
||||
"template": "P08 normal placement: <checks> checks, <failures> failures",
|
||||
"required": true,
|
||||
"fixed_check_count_used": false,
|
||||
"source_sha256_at_schema_audit": "734f4f85d0b0fc45dc31fc23502425b911635667dabc0341ba0d88b0107f4405",
|
||||
"authority": {
|
||||
"path": "docs/spec/acceptance/P08-03.json",
|
||||
"scope": "normal placement; native and OS pending"
|
||||
}
|
||||
}
|
||||
],
|
||||
"unknown_roster_suite_policy": "refuse, explicitly review its source/schema before accepting",
|
||||
|
||||
@@ -0,0 +1,67 @@
|
||||
# P08-03 condition matrix — implementation submission, not acceptance
|
||||
|
||||
Immutable specification: `docs/spec/acceptance/P08-03.json`, normalized SHA-256
|
||||
`7941da4edbd3c43a636a4a3d834d57c095b56da988fa3a056e55b22d3a5d50e9`.
|
||||
Base HEAD: `12430ba89970bda349781e51157e72e48a4ac06f`. Worker made no commit.
|
||||
This is one existing unit in 30 packages / 88 units, with no partial credit.
|
||||
|
||||
| Condition | Implemented paths / diagnostic cases | Current evidence state |
|
||||
|---|---|---|
|
||||
| support_connection | Normal palette: unsupported standard room; supported/connected reception; supported stair with missing landing; lower/upper stair construction. Real preview and Runtime command results are retained. | Source and synthetic checker controls only; real handler/native/OS pending. |
|
||||
| invalid_position_reason | Reception footprint crosses the boundary from an in-bounds origin; existing reception overlap. Exact displayed Japanese reason and report codes; whole typed before/after preservation. | Source and semantic corruption controls only; actual refusals pending. |
|
||||
| demolish_rebuild | Palette demolition toggle, cell selection, confirmation/cancel, Runtime `demolish_facility`, synchronous/queued results. Lower landing refusal, cancellation, reception removal, same-cell reconstruction. Occupancy, operational/construction instances, costs/refund checked. | Implemented; Godot parsing, actual UI, audio ownership, Runtime results pending. |
|
||||
| pan_zoom_world_identity | Move mode + non-Ctrl wheel; normal wheel zoom, 0.5/4.0 clamps; recomputed local/viewport/screen coordinates and actual selected cell. OS recorder requests CUA only. | Mock bridge/checker controls only; actual OS wheel/screenshot provenance pending. |
|
||||
| separate_pid_resume | Formal four-member save; separate native writer/reader; normal load menu; whole typed/raw checkpoint identity, instance ID, cell and overlap judgement. | Collector/source prepared; real private profiles, actual distinct PIDs and formal saves pending. |
|
||||
|
||||
## Original-matched diagnostic choices
|
||||
|
||||
`BASELINE.txt` §9.3 names reception/checkout in the lobby; current
|
||||
`data/facilities/reception.tres` is FRONT 4×2, cost read directly from the
|
||||
definition. §10.1 explicitly gives standard room 2×1 FRONT; current
|
||||
`standard_room.tres` matches and is used for unsupported-placement rejection.
|
||||
§8.4 names stairs; current `infrastructure/guest_stairs.tres` and
|
||||
`tests/transport/test_runtime_stairs.gd` expose ordinary two-floor stair
|
||||
construction and `STAIR_LANDING_MISSING` / `STAIR_LANDING_IN_USE`.
|
||||
All three IDs are in Main's existing normal palette and Runtime registry.
|
||||
These choices establish this diagnostic slice, never all30 acceptance.
|
||||
|
||||
The handler fixture computes any diagnostic resource top-up from the four
|
||||
planned positive construction definitions. It emits an initial formal save
|
||||
and a budget report explicitly tagged diagnostic. No production costs,
|
||||
services, balance values or definitions are changed. New art is unnecessary;
|
||||
the demolition button reuses Main's existing styling and audio.
|
||||
|
||||
## Evidence boundary
|
||||
|
||||
`placement.gd` contains the shared finite scenario and handler endpoints.
|
||||
`passive_placement.gd` overrides **all** input/setup/progression endpoints:
|
||||
button, reveal, click, wheel, load_menu, complete_build, setup,
|
||||
diagnostic_budget, save_initial_fixture, archive_formal. Its reachable
|
||||
scenario neither calls product handlers nor emits their signals, advances
|
||||
the clock, submits commands, resets Runtime or restores models. It reads
|
||||
snapshots/reports and archives evidence. Root performs all OS gameplay.
|
||||
Constructing/freeing the Main scene uses the existing ordinary cleanup helper.
|
||||
|
||||
The passive executable has a separate completion line. Only the handler UI
|
||||
suite adds one entry to the strict marker contract and one source-pinned
|
||||
ordinary cleanup policy. All previous marker/policy entries are retained.
|
||||
The native OS collector never routes its process through the headless gate.
|
||||
|
||||
Checker controls are synthetic, including fabricated engine, PID, typed-byte
|
||||
stand-ins, screenshots and weak-reference records. A positive local test
|
||||
validates the checker, not the game or OS. Controller tests replace Popen,
|
||||
engine probes, profiles and owner gate with mocks and launch no engine.
|
||||
See `local-validation.json` and `implementation.json` for the actual final
|
||||
executed source/input hashes and results.
|
||||
|
||||
## Still required from Root / independent review
|
||||
|
||||
Freeze a clean exact candidate; collect guarded native handler and real CUA
|
||||
OS writer/reader evidence; run verify-only against that candidate; perform
|
||||
impact checks and final full regression after related sources are frozen;
|
||||
obtain independent Opus review of all five conditions; integrate and verify
|
||||
the current final source, then update the authoritative ledger.
|
||||
No reused P08-02 PASS is claimed for changed sources. P08-01 and the whole
|
||||
P08 package remain open. Windows same-distribution/device evidence remains
|
||||
open; Mac/Linux results cannot substitute for it. No outside-scope service
|
||||
defect or required permission change has been demonstrated by this worker.
|
||||
@@ -0,0 +1,102 @@
|
||||
# Root collection protocol (not executed by worker)
|
||||
|
||||
Read the fixed spec and condition matrix first. Freeze/commit through the
|
||||
authorized Root workflow. The worker has not committed or run this procedure.
|
||||
Use a clean checkout at the exact submitted HEAD, an installed native Godot,
|
||||
and a new output directory **outside** the source checkout:
|
||||
|
||||
```sh
|
||||
python3 tools/run_p08_normal_placement.py --collect \
|
||||
--project-root /absolute/frozen/checkout \
|
||||
--output /absolute/build/p08-normal-placement-evidence \
|
||||
--commit EXACT_FROZEN_HEAD --godot /absolute/Godot \
|
||||
--input-mode native_os
|
||||
BUILD_OUTPUT_DIR=/absolute/build python3 tools/check_p08_normal_placement_evidence.py \
|
||||
--verify-only --project-root /absolute/frozen/checkout
|
||||
```
|
||||
|
||||
`--input-mode handler` collects only the strict headless pair. Its index has
|
||||
no OS proof and intentionally cannot pass the whole checker. `native_os`
|
||||
first collects that same headless pair, then separately starts the passive
|
||||
nonheadless writer/reader. Import and handler phases use unchanged
|
||||
`execute_phase` guards, markers, owner/audio proof. OS phases reuse the
|
||||
P08-02 `collect_native_os.py` / passive recorder protocol, read-only as reuse
|
||||
sources, with P08-03 arguments and paths; no new OS automation framework.
|
||||
|
||||
Before native launch the controller checks live engines, exact HEAD, clean
|
||||
checkout, copied source inventory, disk admission and default player.
|
||||
Each OS role gets a UUID private profile. Writer receives the handler's
|
||||
`pair/initial-formal`; reader receives the OS writer's `os-pair/formal`.
|
||||
All four formal members are copied and SHA-checked. The staged project gets
|
||||
only private-profile settings and is restored in finally. Only captured
|
||||
Popen children are cleaned by `owned_outer.finish_captured`.
|
||||
|
||||
Actual argv is `[engine, --path, stage, --script, passive_os.gd]`, with no
|
||||
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.
|
||||
Timeout/error preserves failure records and cleans only owned children.
|
||||
|
||||
## CUA request / read-only acknowledgement bridge
|
||||
|
||||
The collector prints `waiting_for_root_cua`; the recorder prints each exact
|
||||
request filename and writes:
|
||||
`os-pair/{writer|reader}-request-NNNN/request.json`.
|
||||
It contains PID, sequence, action, target window, instructions and applicable
|
||||
expected world cell, transformed viewport/screen coordinate, window/screen
|
||||
scale. The recorder waits; it never clicks or changes Accessibility settings.
|
||||
|
||||
Root uses its existing CUA tool on the indicated PID/window. A request may
|
||||
ask for normal palette scrolling, a button/cell click, ordinary non-Ctrl
|
||||
wheel, normal manual load, or normal play/speed/pause until construction
|
||||
finishes. Modal buttons include their own window ID and screen transform.
|
||||
If a cell is clipped, the recorder first asks for ordinary zoom-out framing,
|
||||
then recomputes coordinates. Do not substitute old pixels or injected input.
|
||||
Capture real CUA screenshots before and after each request. Retain the raw
|
||||
CUA result and tool-call identity; never manufacture a receipt to advance.
|
||||
|
||||
Root writes its own receipt file within the evidence directory. The bridge
|
||||
envelope references that raw tool call and records:
|
||||
|
||||
```json
|
||||
{
|
||||
"method": "native_os",
|
||||
"target_pid": 123,
|
||||
"timestamp_ns": 123456789,
|
||||
"collector_pid": 456,
|
||||
"tool_name": "actual CUA tool name",
|
||||
"tool_call_id": "actual tool call identity",
|
||||
"events": [{"type": "actual input event", "raw_receipt": "retained raw CUA result"}]
|
||||
}
|
||||
```
|
||||
|
||||
After completing the requested operation, Root writes `ack.json` beside
|
||||
the request. All artifact references are relative to the evidence root:
|
||||
|
||||
```json
|
||||
{
|
||||
"target_pid": 123,
|
||||
"sequence": 1,
|
||||
"request_sha256": "actual request file SHA-256",
|
||||
"input_receipt": "root-receipts/writer-0001.json",
|
||||
"screen_before": "root-receipts/writer-0001-before.png",
|
||||
"screen_after": "root-receipts/writer-0001-after.png"
|
||||
}
|
||||
```
|
||||
|
||||
These numbers/strings are format examples, never evidence. Recorder and
|
||||
controller only **read** Root's acknowledgement/receipt files. The recorder
|
||||
separately retains actual Godot input observations and world selection,
|
||||
whole typed/Variant snapshots, displayed reasons and Runtime results.
|
||||
The checker verifies request/ack hash and sequence/PID binding, raw input
|
||||
presence, PNG structure/CRC, affine coordinate conversions, formal members,
|
||||
model invariants, distinct processes, native lifecycle and real owner proof.
|
||||
Independent review must match tool-call identities/raw CUA results and actual
|
||||
screenshots; an integrity checker is not an OS attestation authority.
|
||||
|
||||
Keep final requests (including save/load) as well as row-specific requests.
|
||||
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.
|
||||
@@ -0,0 +1,142 @@
|
||||
{
|
||||
"task_id": "P08-03",
|
||||
"status": "submitted",
|
||||
"acceptance_ids": [
|
||||
"P08-03"
|
||||
],
|
||||
"base_commit": "12430ba89970bda349781e51157e72e48a4ac06f",
|
||||
"actual_worktree_HEAD": "12430ba89970bda349781e51157e72e48a4ac06f",
|
||||
"worker_committed": false,
|
||||
"final_commit": null,
|
||||
"final_commit_note": "Root must freeze and record the submitted candidate; worker git writes are prohibited.",
|
||||
"spec_normalized_sha256": "7941da4edbd3c43a636a4a3d834d57c095b56da988fa3a056e55b22d3a5d50e9",
|
||||
"counting_scope": {
|
||||
"packages": 30,
|
||||
"units": 88,
|
||||
"additional_units": 0,
|
||||
"partial_credit": false
|
||||
},
|
||||
"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": "656400d0f9028ff7cf272b8e02be9c329f25adb6ff2039708ca04d0251be611c",
|
||||
"docs/plans/original-completion-2026-10-02/execution/p08-03/ROOT_COLLECTION.md": "d2a0da74c3b469350e9130fbd8a024be49b4c8cc9ed09154c3966bf7642c38cc",
|
||||
"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",
|
||||
"scenes/main/world_preview.gd": "2f0e417ae2ff1745062bdbdcec74b3b058cfcffbbd9001ca3e6a62cd23efb47d",
|
||||
"tests/fixtures/p08-03/checker_fixture.py": "56f80f0e8a44a707c2c59e385c2fa5bd3949f1dd95d4cbf40f480870aca08d45",
|
||||
"tests/fixtures/p08-03/passive_placement.gd": "f070c93000d0eceef8cc9e518fefa2ba9c7608883ab5bf9198dff224b60d4da1",
|
||||
"tests/fixtures/p08-03/passive_placement.gd.uid": "f75e3f2d9555c30cee3a1de882f32225fc624565a78a7ef3f5c604325c578ce3",
|
||||
"tests/fixtures/p08-03/placement.gd": "95d46b329d5b08954915a4f80b06b7774eeaf4976ef9c687e8c61433bf0d14eb",
|
||||
"tests/fixtures/p08-03/placement.gd.uid": "5caca08c1e627e0ca07e2ab7b13bd82b24a22f77513fe87e30b79023568e1987",
|
||||
"tests/ui/test_p08_normal_placement_ops.gd": "734f4f85d0b0fc45dc31fc23502425b911635667dabc0341ba0d88b0107f4405",
|
||||
"tests/ui/test_p08_normal_placement_ops.gd.uid": "7d168ac50ca82ae1979da31c467f9a5020ca5ec7616b5bf99294413d85b3b299",
|
||||
"tools/check_p08_normal_placement_evidence.py": "d79df59d4434afd5219aca9aeb4581119859d08a71c9df73ae25f01e70ab59f5",
|
||||
"tools/regression/suite-policy.json": "e875e6b05bbac8dfb98c2af007221436fa558ddb8806b6214689830295b32e8d",
|
||||
"tools/run_p08_normal_placement.py": "191831b4f684bdd7e99b3be6038c15a6830f544d17c941869b1c2a8fbe4a2aa3",
|
||||
"tools/test_p08_normal_placement_evidence.py": "5a4a859817b7764a07d215c4811d2912c7f502de7219d57b11c3e3158dc177eb"
|
||||
},
|
||||
"executed_source_manifest": {
|
||||
"path": "local-source-manifest.json",
|
||||
"sha256": "63cd7079a4e9fb4966d829b5edcccdaedd82154c3afa2ea715622cb3d0b437b5",
|
||||
"source_file_count": 1326,
|
||||
"contains": "Complete local execution source map and immutable/fixture input map; no material-size omission"
|
||||
},
|
||||
"final_input_sha256": {
|
||||
"AGENTS.md": "8d8dc40211390275f858f322743309a0663c4f2d859780a8b8a08cea1450e8b3",
|
||||
"docs/plans/original-completion-2026-10-02/IMPLEMENTATION_PLAN.md": "e3d5a83b65207a402f8b36a06f9893ab969adcbb5b97915930af1358b15749e1",
|
||||
"docs/plans/original-completion-2026-10-02/execution/completion_marker_contracts.json": "f59f01f65c795057117fda753706a6200928d4954af901fc965cf1a7c09232b5",
|
||||
"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",
|
||||
"docs/spec/acceptance/P08-03.json": "37a6a581b5a9bbe03c07a3a266b03df1f740ff488da33ecd9bd60f5b32f1efe1",
|
||||
"docs/traceability/original/BASELINE.txt": "75e4bdbdeb379c9269553f0c776bdb9cc96e01f2d6aa5ca650d132c63a8aeb1a",
|
||||
"tests/fixtures/p08-03/checker_fixture.py": "56f80f0e8a44a707c2c59e385c2fa5bd3949f1dd95d4cbf40f480870aca08d45",
|
||||
"tests/fixtures/p08-03/passive_placement.gd": "f070c93000d0eceef8cc9e518fefa2ba9c7608883ab5bf9198dff224b60d4da1",
|
||||
"tests/fixtures/p08-03/passive_placement.gd.uid": "f75e3f2d9555c30cee3a1de882f32225fc624565a78a7ef3f5c604325c578ce3",
|
||||
"tests/fixtures/p08-03/placement.gd": "95d46b329d5b08954915a4f80b06b7774eeaf4976ef9c687e8c61433bf0d14eb",
|
||||
"tests/fixtures/p08-03/placement.gd.uid": "5caca08c1e627e0ca07e2ab7b13bd82b24a22f77513fe87e30b79023568e1987"
|
||||
},
|
||||
"actual_local_validation": {
|
||||
"path": "local-validation.json",
|
||||
"sha256": "09701dcb7ef6a6da695f1c9b1060107e64666a8f8f0256c3caf1da9cf2d8f487",
|
||||
"python_syntax": "pass: four changed/new Python sources compiled in memory",
|
||||
"checker_mock_tests": 35,
|
||||
"checker_mock_exit_code": 0,
|
||||
"log_sha256": "c542a3079ac31374dd3fce5bc96ccb44ca8ccfc765f78fe9f18413c259c5f67b",
|
||||
"git_diff_check": "pass"
|
||||
},
|
||||
"conditions": {
|
||||
"support_connection": {
|
||||
"implementation": "prepared",
|
||||
"local_checker_controls": "passed on recorded final Python sources with synthetic specimens",
|
||||
"actual_Godot_handler": "pending",
|
||||
"actual_native_OS": "pending",
|
||||
"independent_review": "pending",
|
||||
"accepted": false
|
||||
},
|
||||
"invalid_position_reason": {
|
||||
"implementation": "prepared",
|
||||
"local_checker_controls": "passed on recorded final Python sources with synthetic specimens",
|
||||
"actual_Godot_handler": "pending",
|
||||
"actual_native_OS": "pending",
|
||||
"independent_review": "pending",
|
||||
"accepted": false
|
||||
},
|
||||
"demolish_rebuild": {
|
||||
"implementation": "prepared",
|
||||
"local_checker_controls": "passed on recorded final Python sources with synthetic specimens",
|
||||
"actual_Godot_handler": "pending",
|
||||
"actual_native_OS": "pending",
|
||||
"independent_review": "pending",
|
||||
"accepted": false
|
||||
},
|
||||
"pan_zoom_world_identity": {
|
||||
"implementation": "prepared",
|
||||
"local_checker_controls": "passed on recorded final Python sources with synthetic specimens",
|
||||
"actual_Godot_handler": "pending",
|
||||
"actual_native_OS": "pending",
|
||||
"independent_review": "pending",
|
||||
"accepted": false
|
||||
},
|
||||
"separate_pid_resume": {
|
||||
"implementation": "prepared",
|
||||
"local_checker_controls": "passed on recorded final Python sources with synthetic specimens",
|
||||
"actual_Godot_handler": "pending",
|
||||
"actual_native_OS": "pending",
|
||||
"independent_review": "pending",
|
||||
"accepted": false
|
||||
}
|
||||
},
|
||||
"pending": [
|
||||
"Root clean exact candidate freeze",
|
||||
"Godot parsing and actual handler execution",
|
||||
"Root isolated native writer/reader and ordinary owner/audio proof",
|
||||
"Root real CUA input/screenshots/receipts and passive observations",
|
||||
"verify-only on actual collected evidence",
|
||||
"impact checks and final full regression after source freeze",
|
||||
"independent Opus review of all five conditions",
|
||||
"integration/current final verification and ledger",
|
||||
"Windows same-distribution/device global platform acceptance"
|
||||
],
|
||||
"not_executed": [
|
||||
"Godot",
|
||||
"OS gameplay",
|
||||
"native process collection",
|
||||
"full regression",
|
||||
"Runner operations",
|
||||
"independent review",
|
||||
"integration"
|
||||
],
|
||||
"outside_scope_modifications": [],
|
||||
"outside_scope_defects_demonstrated": [],
|
||||
"specification_gaps": [],
|
||||
"reuse": {
|
||||
"collector": "P08-02 collect_native_os.py read-only protocol reuse; no inherited changed-source PASS",
|
||||
"handler": "existing execute_phase/profile/owned_outer/strict marker gates retained",
|
||||
"OS": "separate nonheadless Popen/owned_outer lifecycle; Root read-only request/ack bridge",
|
||||
"assets": "existing Main styling/audio; no new artwork or asset pack"
|
||||
},
|
||||
"whole_P08_complete": false,
|
||||
"P08_01_all30_claimed": false,
|
||||
"formal_acceptance": false
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
...................................
|
||||
----------------------------------------------------------------------
|
||||
Ran 35 tests in 17.918s
|
||||
|
||||
OK
|
||||
+5323
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,34 @@
|
||||
{
|
||||
"task_id": "P08-03",
|
||||
"started_at": "2026-10-13T18:21:21.344634+00:00",
|
||||
"ended_at": "2026-10-13T18:21:42.345749+00:00",
|
||||
"syntax": {
|
||||
"method": "compile(source, filename, exec); no pyc",
|
||||
"files": {
|
||||
"tools/run_p08_normal_placement.py": "191831b4f684bdd7e99b3be6038c15a6830f544d17c941869b1c2a8fbe4a2aa3",
|
||||
"tools/check_p08_normal_placement_evidence.py": "d79df59d4434afd5219aca9aeb4581119859d08a71c9df73ae25f01e70ab59f5",
|
||||
"tools/test_p08_normal_placement_evidence.py": "5a4a859817b7764a07d215c4811d2912c7f502de7219d57b11c3e3158dc177eb",
|
||||
"tests/fixtures/p08-03/checker_fixture.py": "56f80f0e8a44a707c2c59e385c2fa5bd3949f1dd95d4cbf40f480870aca08d45"
|
||||
},
|
||||
"passed": true
|
||||
},
|
||||
"checker_tests": {
|
||||
"argv": [
|
||||
"/Applications/Xcode.app/Contents/Developer/usr/bin/python3",
|
||||
"-B",
|
||||
"tools/test_p08_normal_placement_evidence.py"
|
||||
],
|
||||
"exit_code": 0,
|
||||
"log": "local-checker-tests.log",
|
||||
"log_sha256": "c542a3079ac31374dd3fce5bc96ccb44ca8ccfc765f78fe9f18413c259c5f67b",
|
||||
"synthetic_only": true,
|
||||
"test_count": 35
|
||||
},
|
||||
"local_source_manifest": "local-source-manifest.json",
|
||||
"local_source_manifest_sha256": "63cd7079a4e9fb4966d829b5edcccdaedd82154c3afa2ea715622cb3d0b437b5",
|
||||
"source_and_inputs_unchanged_during_tests": true,
|
||||
"native_engines_started": 0,
|
||||
"OS_operations": 0,
|
||||
"full_regression_executed": false,
|
||||
"acceptance": "pending"
|
||||
}
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
extends SceneTree
|
||||
const Passive := preload("res://tests/fixtures/p08-03/passive_placement.gd")
|
||||
func _initialize() -> void:
|
||||
call_deferred("run")
|
||||
func run() -> void:
|
||||
var result: Dictionary = await Passive.new().run(self, OS.get_environment("P08_PLACEMENT_ROOT"), OS.get_environment("P08_PLACEMENT_ROLE"))
|
||||
print("P08 passive OS placement: %d checks, %d failures" % [result.checks, result.failures])
|
||||
quit(0 if result.failures == 0 else 1)
|
||||
+1
@@ -0,0 +1 @@
|
||||
uid://c08passiver03
|
||||
Reference in New Issue
Block a user