Record approved P04 boundary policies and current acceptance evidence
This commit is contained in:
+30
@@ -0,0 +1,30 @@
|
||||
{
|
||||
"task_id": "P18-01-CODE",
|
||||
"commit": "265ce30f81b1302ca374330f7129f02d6fde4697",
|
||||
"status": "pass",
|
||||
"summary": "I reviewed the full diff, the complete selected Runtime methods, RelationshipService, OriginalRelationshipState, both new suites, the collector, and the marker and suite-policy pins. I also read the registered p18-model verifier output. .review-material/validation-runs/.../f5e341d6.../stdout.log reports verified=true, 7 suites, 1839 checks and 308 parse paths, with formal_acceptance=false and original_unit_complete=false. Every changed file is within allowed_paths, and no existing test body was edited.\n\n**P18-C-1 (met).** A dedicated model stores the directional subject/protagonist/rival facts plus Affection, Lust, Netorare and the shield.\n- All fields are required, and numbers must be finite.\n- shield_max must equal Affection, and 0 ≤ shield_current ≤ shield_max.\n- An unset record is exposed as configured=false with null values, separate from an explicit zero.\n- No ranges, coefficients or initial values are invented, and the fixtures are labelled as validation-only.\n\n**P18-C-2 (met).** v1 payloads are kept whole under the v2 `legacy` key, including aliases, extensions and record order.\n- Only real canonical changes are merged back, and aliases never fill in the original values.\n- Version, type, duplicate, reference, corrupt-original and projection-mismatch cases are rejected before any commit.\n- Rejection is tested to preserve service state, service identity, the whole Runtime bytes and the caller's input bytes.\n- The legacy type policy follows what the producer actually emits (var_to_bytes, ints, named route_lock). The five P02-01 representative saves pass through the real Reader and Runtime restore with exact legacy equality.\n\n**P18-C-3 (met).**\n- `register_original_relationship` is a real registered command, and it emits only the existing COMMAND_COMPLETED event.\n- The identity validator checks the protagonist is \"player\", the subject is a hired UNIQUE heroine with its canonical role, and the heroine/rival counterpart pair matches.\n- On restore, validation runs against the restored staff and catalog before the live services are swapped; afterwards the validator is rebound to the live services.\n- `get_staff_management_report` exposes a copied projection, so reads cause no mutation.\n- New, legacy and mixed round trips, restore failures and actual SaveService recovery are all covered. No contact, route or duel behaviour was added.\n\n**Re-check of the prior findings.**\n- **High (fixed):** the new Runtime suite now covers an exclusive-route positive control and an empty-route_id negative control. Both keep the legacy data and the compatibility projection identical, so the RelationshipState route-lock invariant is actually reached. Both go through normal restore and real package recovery, which returns RESTORE_FAILED with restore_committed=false and no forbidden repairs.\n- **Medium (fixed):** threshold-candidate field types are now validated to match `_register_threshold_candidate`. Each wrong type is tested across service, Runtime and recovery for both v1 and v2, with positive controls.\n- **Low (acceptable):** keeping the raw candidate order matches the lossless contract. The producer's zero-padded monotonic IDs keep the order sorted, and a test checks that new candidates are appended.\n\n**P18-C-4.** Native isolated local and affected evidence is verified: 9 owned PIDs, all ended, with no guard or cleanup errors. A merged-source composition run also passed (7 suites, 1839 checks, 316 parse paths) and is correctly labelled as non-integration evidence. This review is the separate Opus review. Ordinary integration and affected final validation can only run after approval and remain Runner gates. The original 88-unit P18-01 is correctly not claimed complete.",
|
||||
"acceptance_ids": [
|
||||
"P18-C-1",
|
||||
"P18-C-2",
|
||||
"P18-C-3",
|
||||
"P18-C-4"
|
||||
],
|
||||
"findings": [
|
||||
{
|
||||
"severity": "low",
|
||||
"message": "P18-C-4: ordinary latest-main integration and affected final validation have not happened yet; they must come after this review. The Runner must run them on the exact integrated candidate. The non-production composition evidence (commit 44874d7) may only be reused if every selected source, setting, marker, policy, engine and input hash matches."
|
||||
},
|
||||
{
|
||||
"severity": "low",
|
||||
"message": "tests/s6/test_runtime_save_lifecycle.gd:520-537 (route_mismatch) still rejects at the projection-mismatch check instead of the route-lock invariant. The new suite now covers that invariant directly, which is acceptable given that existing tests must not be edited. Record this so that later reviews do not count the old assertion as route-lock coverage."
|
||||
},
|
||||
{
|
||||
"severity": "low",
|
||||
"message": "Configured original projections mix a StringName `configured` key with String payload keys. This works for reads, but the UI phase should rely on the same read-model keys and not assume one key type."
|
||||
},
|
||||
{
|
||||
"severity": "low",
|
||||
"message": "docs/.../p18-01-code/inspect_repair5_inputs.py still hardcodes the absolute path of the worker allocation. It is a docs-only helper and not part of product acceptance."
|
||||
}
|
||||
]
|
||||
}
|
||||
+68
@@ -0,0 +1,68 @@
|
||||
{
|
||||
"status": "proposal_for_actual_Opus_decision_only_not_registered_or_implemented",
|
||||
"original_plan_id": "P18-01",
|
||||
"original_denominator_unchanged": true,
|
||||
"formal_original_unit_credit": 0,
|
||||
"source_pins": [
|
||||
{
|
||||
"path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p18-01-model/P18-01-CODE-implement/scripts/relationship/original_relationship_state.gd",
|
||||
"sha256": "d1bfabfd205becf6d3cf1d6b6c477393319b26b0e7504fd227c3714761101616",
|
||||
"bytes": 1571
|
||||
},
|
||||
{
|
||||
"path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/scripts/ui/staff_management_panel.gd",
|
||||
"sha256": "df3120130956b300d1349cb758c0aa30dfd7da5e0774fb7fb9a1f3e4e0786fb2",
|
||||
"bytes": 23519
|
||||
},
|
||||
{
|
||||
"path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/scenes/main/main.gd",
|
||||
"sha256": "92677e4ac57ed8d418a4a716bf0874cbbaea79cff893e5163c82ad1f75e7140a",
|
||||
"bytes": 141050
|
||||
}
|
||||
],
|
||||
"observed_constraints": [
|
||||
{
|
||||
"finding": "Current dedicated model accepts finite signed Lust/Netorare; no approved minima exist",
|
||||
"authority": "OriginalRelationshipState.from_snapshot only applies shield bounds and numeric finite type, not a Lust/Netorare sign restriction",
|
||||
"implication": "Do not clamp or coerce accepted original values into legacy0..100; negative fixtures are compatibility checks, not production approval"
|
||||
},
|
||||
{
|
||||
"finding": "Assignment popup early-return can freeze a newly added relationship view if put inside _refresh_editor",
|
||||
"authority": "StaffManagementPanel._refresh_editor returns before any rendering while either facility or shift popup is visible",
|
||||
"implication": "Refresh selected original view after authoritative roster read independently from assignment-editor popup guard; preserve draft edits, selection and normal command flow"
|
||||
}
|
||||
],
|
||||
"concrete_graph_proposal": {
|
||||
"status": "commander must choose or revise; not adopted",
|
||||
"form": "Actual three-spoke emotion graph with shared dynamically labelled signed radial scale, exact raw numerical labels and separate shield current/max; do not silently substitute legacy five axes or text-only values",
|
||||
"range": "lo=min(0,a,l,n); hi=max(0,a,l,n); current observed range only, not a gameplay bound; show current range and zero ring when lo<0",
|
||||
"stable_mapping": "m=max(abs(float(lo)),abs(float(hi))); if m>0: normalized_lo=float(lo)/m; span=float(hi)/m-normalized_lo; radius_fraction=(float(value)/m-normalized_lo)/span; zero_ring=(-normalized_lo)/span. Never subtract extreme raw endpoints before normalizing.",
|
||||
"all_zero": "All configured real zeros shown at zero with raw labels; avoid division and any fabricated gameplay upper bound. Unconfigured state draws no fabricated value or zero polygon.",
|
||||
"labels": "Preserve raw integer text without float coercion. Finite decimal labels must preserve nonzero and round-trip value; do not round small nonzero values to zero. Visual coordinate approximation must never overwrite source numbers.",
|
||||
"player_text": "Three Japanese parameter labels, selected subject and resolved actual protagonist/rival direction, scale note explaining automatic current-value range. No invented identities, names, percentages, units, production values or rates.",
|
||||
"shield": "Use actual shield_current/shield_max and equality with actual Affection. Handle genuine 0/0 without division; do not display unconfigured state as0/0."
|
||||
},
|
||||
"required_fixtures": [
|
||||
"configured positive/fractional/beyondlegacy100",
|
||||
"configured all-zero shield0/0 distinct from unset",
|
||||
"negative finite Lust/Netorare supported by actual model",
|
||||
"large signed int and extreme finite float values without NaN/Inf drawing or loss of exact integer label",
|
||||
"absent original data and explicit configured:false",
|
||||
"selected identity switch, removal and legacy-only roster",
|
||||
"state publication while assignment popup open and while draft dirty; assignment behavior remains intact",
|
||||
"actual Runtime registration/save/rebind/readmodel equality, no mutation from visible UI refresh",
|
||||
"normal ordinary entry, actual rendered graph and ordinary save/distinctPID load; fixtures do not establish approved production initialization"
|
||||
],
|
||||
"execution_dependencies": [
|
||||
"Backend265 actual independent review and normal integration/final",
|
||||
"Actual Opus concrete contract and worker/model routing decision; Antigravity UI role per user selection",
|
||||
"Production initialization remains a separate unapproved original-unit requirement",
|
||||
"Exact final whole-unit tests/native visual and normal OS evidence, independent acceptance, applicable Windows gates"
|
||||
],
|
||||
"not_claimed": [
|
||||
"UI implemented",
|
||||
"task registered",
|
||||
"production numeric values approved",
|
||||
"P18-01 accepted"
|
||||
]
|
||||
}
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"candidate": "265ce30f81b1302ca374330f7129f02d6fde4697",
|
||||
"actual_review_run": "7b97ad99e9fe4afeafdbec9760717e1a",
|
||||
"source": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p18-01-model/runs/7b97ad99e9fe4afeafdbec9760717e1a/result.json",
|
||||
"result_sha256": "5ee28a26c40ff054d9e676e3ee053d25939c90dee49fa15c2e1f320f143c2af2",
|
||||
"status": "pass",
|
||||
"scope": "P18-C-1..4 backend model and save contract only; actual Opus independent review.",
|
||||
"prior_high_medium": "review explicitly verified fixed",
|
||||
"remaining": [
|
||||
"ordinary latest-main integration",
|
||||
"exact-candidate affected final validation",
|
||||
"whole P18-01 original UI and initial values and final acceptance"
|
||||
],
|
||||
"formal_original_credit": 0,
|
||||
"review_preflight_exception": "The Root free-space assertion failed before reviewer launch; a shell sequencing mistake still launched normal review. Actual run completed pass. This is not a passed admission and budgets were not waived; future dependent commands must check success separately."
|
||||
}
|
||||
Reference in New Issue
Block a user