P18-01-CODE: 原本関係モデル・旧値保全・Runtime保存と読取経路

This commit is contained in:
Agent Control Runner
2026-10-13 14:25:06 +09:00
parent d2a1f80a61
commit f76ad96990
12 changed files with 702 additions and 11 deletions
@@ -2,6 +2,28 @@
"schema_version": 1,
"scope": "exact per-suite completion label/schema; all check counts from actual raw only",
"rows": [
{
"test": "tests/s4/test_original_relationship_model.gd",
"template": "Original relationship model: <checks> checks, <failures> failures",
"required": true,
"fixed_check_count_used": false,
"source_sha256_at_schema_audit": "ad509f5fb67ab91e1d1d99a08af51e4695e411b9a2541ea63ee22b1555cb0924",
"authority": {
"path": "docs/spec/acceptance/P18-01-code-r01.json",
"scope": "new backend suite marker; native execution pending"
}
},
{
"test": "tests/s4/test_original_relationship_runtime.gd",
"template": "Original relationship runtime: <checks> checks, <failures> failures",
"required": true,
"fixed_check_count_used": false,
"source_sha256_at_schema_audit": "374f3d31a65d2f2b62dfef29721c8c838575b856f4fa5a0bca31c6ba4c7e09dd",
"authority": {
"path": "docs/spec/acceptance/P18-01-code-r01.json",
"scope": "new backend suite marker; native execution pending"
}
},
{
"test": "tests/ui/test_selection_departure.gd",
"template": "Selection departure: <checks> checks, <failures> failures",
@@ -0,0 +1,79 @@
# P18-01-CODE implementation handoff
Status: submitted for Runner validation; no acceptance or unit completion claimed.
Scope: dedicated original relationship state, lossless legacy snapshot preservation,
Runtime registration and read projection, and the contract-listed tests and collector.
Production initial values and gameplay coefficients are not supplied or inferred.
Validation: worker static inspection only; authoritative native local and affected
validation, independent review, and integration belong to Runner.
Source inspection: HEAD matches d2a1f80a613e7c77b02b941026bc49c2d85db863.
The acceptance specification without its final newline matches the contract SHA256
04e9ae701b6ee1e399542564add695ca7fce54499e52dd2e907b1dbdc23a366d.
## Submitted behavior
- OriginalRelationshipState stores explicit directional subject/protagonist/rival
facts with Affection, Lust, Netorare and shield current/max. All fields are
required for a configured record. Numeric inputs must be finite numbers;
shield current must be nonnegative and at most max, and max equals Affection.
No additional emotion ranges, coefficients or production values are imposed.
- RelationshipService retains its five-axis API. Its v2 snapshot contains the
whole v1 payload under `legacy`, plus separate `original_relationships`.
Top-level `relationships` is a compatibility projection for existing consumers;
disagreement with `legacy.relationships` is rejected. Additional legacy fields,
raw aliases, collection order and untouched values survive migration. The
existing normalized state remains usable; only actual legacy changes are merged
into retained raw facts. Aliases never initialize original fields.
- Registration uses `register_original_relationship` with the complete payload.
Runtime validates the protagonist against `player`, the subject against hired
UNIQUE staff and its canonical role, and heroine/rival identities and reciprocal
counterpart references against the existing unique-character catalog. Rival
catalog membership does not invent recruitment. No new original update policy,
contact, route, attack, threshold or duel behavior is defined.
- Snapshot restore validates candidates before replacing live services, then
rebinds the identity validator to live staff. Existing legacy actor references
must resolve against player, restored staff or restored guests.
- Every staff-management row exposes `original_relationship`. Missing records
have `configured: false` and null values, distinct from explicit zero. Configured
projections are copies, so reads and caller edits cannot change service state.
## Validation and handoff
Two new s4 suites exercise explicit/unset/zero data, malformed and nonfinite values,
identity invariants, lossless raw aliases/extensions, new and mixed round trips,
atomic service/Runtime rejection, actual hiring/commands, restore/rebind and reports.
Existing test bodies and limits are unchanged. New marker and suite-policy rows
are pinned to the exact new test sources.
`python3 -B tools/run_p18_relationship_tests.py --prepare-only` previews the exact
seven-suite roster, source bytes, capacity and all-script parse count without
engines, profiles, stage creation or test execution. The native collector reuses
run_all_tests.source_refs/execute_phase and the existing Guard, owned_outer,
diagnostic, artifact, PID, marker and cleanup gates. It stops at the first failure;
Runner owns repair/validation sequencing and independent review.
Worker checks: Python AST syntax, JSON/source-marker consistency, allowed-path
inspection, unchanged pre-existing marker/policy records, and git diff whitespace.
Native import, GDScript parse and all seven suites remain **unexecuted** by worker.
Worker reinspection on 2026-10-13 confirmed the existing submitted implementation
and repeated Python AST, specification digest, exact new marker/policy source
hashes, unchanged existing marker/policy records, and `git diff --check`.
Prepare-only exited 0: seven suites, 1,311 source files / 67,287,056 bytes,
308 parse paths, nine future native phases, 381,859,856 conservative required
bytes and 1,773,187,072 available bytes. Engines and stages were both zero;
actual checks were null and formal acceptance was false. Capacity is a preview
at that instant, not a reservation or native result.
An initial shell here-document temporary-file attempt was denied with
`operation not permitted`; normal allowed-path patch edits worked. No isolation
rule or permission was relaxed.
P18-C-1 through P18-C-3 are implementation submissions, not accepted results.
P18-C-4 awaits Runner native local/affected evidence, separate Opus review,
integration and final affected validation. The original P18-01 unit remains
in_progress: ordinary Japanese UI rendering/equality, approved production values,
all-seven recruitment, final full required roster and applicable Windows final
acceptance remain outstanding. No git writes, other agents or Runner controls
were used by worker.