P04-01: 同時発生の更新規約
This commit is contained in:
@@ -0,0 +1,225 @@
|
||||
## REPAIR49 current correction
|
||||
|
||||
Source-ready only; original 30/88, formal 16, P04=0, no partial credit.
|
||||
REPAIR48's specification-mismatch blocker below is historical and corrected:
|
||||
the immutable 7000-byte original has SHA256
|
||||
d28aadb044633f7d804de5a92c8d4c4a7438dfbf44c3243dca978951f4def25f;
|
||||
removing its single EOF LF gives
|
||||
9ec722e7dfb0bee178d291624a026420c08412574e238bba1fde012c7a6f7881.
|
||||
This is the existing Git/Runner strip/checker one-EOF-LF pin contract.
|
||||
No specification, approval or normalization change. Older contradictory wording
|
||||
below is superseded history, including blanket full-reuse prohibitions and
|
||||
all-controls-unexecuted wording. Q47 admission/index failures remain failures.
|
||||
See REPAIR49_STATUS.md for closure audit and verbatim complete_B FileNotFoundError.
|
||||
Root handoff reports payload(B), all53, series/join/power PASS; order-typed remains
|
||||
UNDETERMINED. Worker did not rerun them. Corrected complete_B remains unexecuted.
|
||||
Old native/full successes confer no new-S acceptance or credit.
|
||||
|
||||
|
||||
## REPAIR49 full184 conditional reuse candidate — all conditions UNVERIFIED
|
||||
|
||||
Native reuse is forbidden: all six series require fresh M/S/Q_tree provenance
|
||||
(p04_native_series.py:1287; checker:370). Full uses the existing separate binding
|
||||
(checker:1175-1186); no adopter or checker change is authorized.
|
||||
The following are requirements, not results or approval:
|
||||
|
||||
1. New S5 source_before must equal old full selected_source_map: all 1369 keys
|
||||
and SHA values, not counts alone.
|
||||
2. Old project_root must remain unchanged: source-start == current source_refs
|
||||
== post-verification source_refs (full_suite_verifier.py:115).
|
||||
3. selected_source_map, roster184, parse329, settings, runner/marker module,
|
||||
marker contract, suite-policy and UID plan/stage must all match (116-152,225).
|
||||
4. inputs.engine must match current engine_pin (124-125).
|
||||
5. Revalidate every phase PID, cleanup, marker and diagnostics (154-228).
|
||||
6. Current s5/run_s5_native.py and full_suite_verifier.py SHA must equal the
|
||||
Root rehearsal versions.
|
||||
7. Never relabel old S/oldQ/project_root/PIDs/time. Describe reuse only as
|
||||
revalidating the exact-source-identical old full through the existing
|
||||
full_suite route; never claim full ran on new S.
|
||||
8. A separate Opus whole-unit review must independently confirm applicability.
|
||||
|
||||
Conditions 1–6 require actual checks after final freeze. If any predicate is
|
||||
unproved or differs, reject reuse and execute full184 once on the final version.
|
||||
SourceRefs (tools/run_all_tests.py:40-45) excludes docs/private package, but that
|
||||
fact is no substitute for complete source equality. No reuse is approved here.
|
||||
|
||||
|
||||
# REPAIR49 source-ready status
|
||||
|
||||
Original 30/88, formal 16, P04=0; no partial credit or whole-unit acceptance.
|
||||
Worker static audit/parse only; all new controls remain Runner work.
|
||||
|
||||
## Explicit closure audit
|
||||
|
||||
All .py files are explicitly enumerated in CLOSURE, plus the six probe .gd files
|
||||
and six ROOT_RUN documents used by package-local runner material references.
|
||||
The list is fixed in source; a missing member cannot vanish through globbing.
|
||||
No package-local JSON is read by the identity execution path: JSON inputs are
|
||||
supplied B/raw/recorded Q. These external contexts remain required, not rewritten.
|
||||
The original checker is loaded from the original checkout and supplied to both builders.
|
||||
|
||||
- `build_p04_index.py:46`: `path = Path(__file__).with_name('p04_native_series.py')`
|
||||
- `build_p04_index.py:184`: `series_spec = importlib.util.spec_from_file_location('p04_index_series', Path(__file__).with_name('p04_native_series.py'))`
|
||||
- `checker_join_fixtures.py:111`: `current_wrapper = series.digest((series.HERE / 's4/run_s4_native.py').read_bytes())`
|
||||
- `full_suite_verifier.py:111`: `wrapper = module('p04_full_uid', Path(__file__).parent / 's5/run_s5_native.py')`
|
||||
- `normal_c_join_fixtures.py:12`: `spec = importlib.util.spec_from_file_location("normal_c_join", HERE / "normal_c_join.py")`
|
||||
- `p04_native_series.py:1001`: `S4_HISTORICAL_WRAPPER = HERE / 's4/historical/run_s4_native_r28.py.reference'`
|
||||
- `p04_native_series.py:1013`: `require(receipt_sha256 == digest((HERE / 's4/run_s4_native.py').read_bytes()),`
|
||||
- `p04_native_series.py:1035`: `qa = HERE / 's4/p04_s4_power_probe.gd'`
|
||||
- `p04_native_series.py:1332`: `wrapper_path = Path(__file__).parent / 's5/run_s5_native.py'`
|
||||
- `p04_native_series.py:1340`: `admission = wrapper.module('fresh_s4_admission', HERE / 's4/run_s4_native.py')`
|
||||
- `p04_native_series.py:1432`: `path = Path(__file__).parent / 's5/s5_order_adapter.py'`
|
||||
- `repair48_identity_controls.py:38`: `CLOSURE = ('build_p04_index.py', 'bulk_reader_equivalence.py', 'checker_applicability_fixtures.py', 'checker_approval_fixtures.py', 'checker_candidate_fixtures.py', 'checker_encoder_fixtures.py', 'checker_join_fixtures.py', 'checker_native_fixtures.py', 'checker_negative_fixtures.py', 'checker_role_fixtures.py', 'checker_series_fixtures.py', 'collect_p04_native.py', 'full_suite_verifier.py', 'normal_c_join.py', 'normal_c_join_fixtures.py', 'p04_native_series.py', 'repair48_identity_controls.py', 'repair48_transport_controls.py', 's1/S1_ROOT_RUN.md', 's1/p04_s1_ev_power_probe.gd', 's1/run_s1_native.py', 's2/S2_ROOT_RUN.md', 's2/p04_s2a_midnight_probe.gd', 's2/run_s2a_native.py', 's2b/S2B_ROOT_RUN.md', 's2b/p04_s2b_shift_probe.gd', 's2b/run_s2b_native.py', 's3/S3_ROOT_RUN.md', 's3/p04_s3_closure_probe.gd', 's3/run_s3_native.py', 's4/S4_ROOT_RUN.md', 's4/admission_controls.py', 's4/engine_identity_negative_fixtures.py', 's4/p04_s4_power_probe.gd', 's4/phase_cut_regression.py', 's4/receipt_lifecycle_fixtures.py', 's4/run_s4_native.py', 's5/S5_ROOT_RUN.md', 's5/p04_s5_power_probe.gd', 's5/repair44_controls.py', 's5/run_s5_native.py', 's5/s5_guard_oracle.py', 's5/s5_order_adapter.py', 's5/s5_order_adapter_controls.py', 's5/s5_power_adapter.py', 's5/s5_power_adapter_controls.py', 's5/s5_uid_controls.py', 's5/s5_wrapper_fixtures.py', 'scratch_fixture_adapter.py')`
|
||||
- `repair48_identity_controls.py:71`: `shutil.copyfile(HERE / relative, target)`
|
||||
- `repair48_identity_controls.py:86`: `original_builder = load(HERE / 'build_p04_index.py', 'original_builder')`
|
||||
- `repair48_identity_controls.py:125`: `rejects(lambda: a.module('outside_identity', HERE / 's5/s5_guard_oracle.py'))`
|
||||
- `repair48_identity_controls.py:128`: `builder = load(HERE / 'build_p04_index.py', 'identity_builder')`
|
||||
- `repair48_transport_controls.py:14`: `spec = importlib.util.spec_from_file_location('transport', Path(__file__).with_name('build_p04_index.py'))`
|
||||
- `s1/run_s1_native.py:20`: `QA = HERE / "p04_s1_ev_power_probe.gd"`
|
||||
- `s1/run_s1_native.py:61`: `shared = module("fresh_q_shared", HERE.parent / "s5/run_s5_native.py")`
|
||||
- `s1/run_s1_native.py:89`: `QA, Path(__file__), HERE / "S1_ROOT_RUN.md",`
|
||||
- `s1/run_s1_native.py:119`: `fixed.append(pin(HERE.parent / "s5/run_s5_native.py"))`
|
||||
- `s2/run_s2a_native.py:20`: `QA = HERE / "p04_s2a_midnight_probe.gd"`
|
||||
- `s2/run_s2a_native.py:33`: `]] + [HERE.parent / "s1" / n for n in ["run_s1_native.py", "p04_s1_ev_power_probe.gd", "S1_ROOT_RUN.md"]]`
|
||||
- `s2/run_s2a_native.py:82`: `shared = module("fresh_q_shared", HERE.parent / "s5/run_s5_native.py")`
|
||||
- `s2/run_s2a_native.py:111`: `QA, Path(__file__), HERE / "S2_ROOT_RUN.md",`
|
||||
- `s2/run_s2a_native.py:141`: `fixed.append(pin(HERE.parent / "s5/run_s5_native.py"))`
|
||||
- `s2b/run_s2b_native.py:20`: `QA = HERE / "p04_s2b_shift_probe.gd"`
|
||||
- `s2b/run_s2b_native.py:25`: `HERE.parent / folder / name for folder, name in [`
|
||||
- `s2b/run_s2b_native.py:26`: `("s1", "run_s1_native.py"), ("s1", "S1_ROOT_RUN.md"),`
|
||||
- `s2b/run_s2b_native.py:28`: `("s2", "S2_ROOT_RUN.md"),`
|
||||
- `s2b/run_s2b_native.py:71`: `shared = module("fresh_q_shared", HERE.parent / "s5/run_s5_native.py")`
|
||||
- `s2b/run_s2b_native.py:102`: `QA, Path(__file__), HERE / "S2B_ROOT_RUN.md",`
|
||||
- `s2b/run_s2b_native.py:132`: `fixed.append(pin(HERE.parent / "s5/run_s5_native.py"))`
|
||||
- `s3/run_s3_native.py:20`: `QA = HERE / "p04_s3_closure_probe.gd"`
|
||||
- `s3/run_s3_native.py:31`: `MATERIALS = [MANIFEST, AUDIT, HERE.parent / "s2b/run_s2b_native.py",`
|
||||
- `s3/run_s3_native.py:32`: `HERE.parent / "s2b/p04_s2b_shift_probe.gd", HERE.parent / "s2b/S2B_ROOT_RUN.md"]`
|
||||
- `s3/run_s3_native.py:90`: `shared = module("fresh_q_shared", HERE.parent / "s5/run_s5_native.py")`
|
||||
- `s3/run_s3_native.py:121`: `QA, Path(__file__), HERE / "S3_ROOT_RUN.md",`
|
||||
- `s3/run_s3_native.py:151`: `fixed.append(pin(HERE.parent / "s5/run_s5_native.py"))`
|
||||
- `s4/admission_controls.py:99`: `series = s4.module('admission_series', s4.HERE.parent / 'p04_native_series.py')`
|
||||
- `s4/admission_controls.py:100`: `series_tree = ast.parse((s4.HERE.parent / 'p04_native_series.py').read_text())`
|
||||
- `s4/admission_controls.py:105`: `wrapper = s4.module('admission_fresh_wrapper', s4.HERE.parent / 's5/run_s5_native.py')`
|
||||
- `s4/admission_controls.py:124`: `historical = s4.HERE / 'historical/run_s4_native_r28.py.reference'`
|
||||
- `s4/admission_controls.py:134`: `uid_plan, snapshot, _ = s4.module('admission_uid', s4.HERE.parent / 's5/run_s5_native.py').load_uid_helper(root, r, selected)`
|
||||
- `s4/engine_identity_negative_fixtures.py:12`: `spec = importlib.util.spec_from_file_location("series", HERE.parent / "p04_native_series.py")`
|
||||
- `s4/engine_identity_negative_fixtures.py:15`: `spec = importlib.util.spec_from_file_location("s4", HERE / "run_s4_native.py")`
|
||||
- `s4/receipt_lifecycle_fixtures.py:36`: `s4 = load('receipt_s4_historical', HERE / 'historical/run_s4_native_r28.py.reference')`
|
||||
- `s4/receipt_lifecycle_fixtures.py:38`: `series = load('receipt_series', HERE.parent / 'p04_native_series.py')`
|
||||
- `s4/receipt_lifecycle_fixtures.py:42`: `tree = ast.parse((HERE.parent / 'p04_native_series.py').read_text())`
|
||||
- `s4/receipt_lifecycle_fixtures.py:97`: `put(staged / 'run_s4_native.py', (HERE / 'historical/run_s4_native_r28.py.reference').read_bytes())`
|
||||
- `s4/receipt_lifecycle_fixtures.py:98`: `put(staged / 'S4_ROOT_RUN.md', b'synthetic fixture material\n')`
|
||||
- `s4/run_s4_native.py:21`: `QA = HERE / "p04_s4_power_probe.gd"`
|
||||
- `s4/run_s4_native.py:136`: `shared = module("fresh_q_shared", HERE.parent / "s5/run_s5_native.py")`
|
||||
- `s4/run_s4_native.py:177`: `QA, Path(__file__), HERE / "S4_ROOT_RUN.md",`
|
||||
- `s4/run_s4_native.py:214`: `fixed.append(pin(HERE.parent / "s5/run_s5_native.py"))`
|
||||
- `s4/run_s4_native.py:365`: `# The shared runner log is not write-once; see S4_ROOT_RUN.md.`
|
||||
- `s5/repair44_controls.py:148`: `for name in ('S5_ROOT_RUN.md', 'PENDING.md'):`
|
||||
- `s5/run_s5_native.py:26`: `QA = HERE / "p04_s5_power_probe.gd"`
|
||||
- `s5/run_s5_native.py:33`: `matches = re.findall(r"^const CASE_TABLE: Dictionary = (\{.*?^\})", Path(path).read_text(), re.M | re.S)`
|
||||
- `s5/run_s5_native.py:45`: `CASE_TABLE = case_table(QA)`
|
||||
- `s5/run_s5_native.py:77`: `if len(seeds) != 1 or sorted(json.loads(seeds[0])) != CASES or sorted(case_table(QA)) != CASES:`
|
||||
- `s5/run_s5_native.py:334`: `QA, Path(__file__), HERE / "S5_ROOT_RUN.md",`
|
||||
- `s5/run_s5_native.py:527`: `# The shared runner log is not write-once; see S5_ROOT_RUN.md.`
|
||||
- `s5/s5_order_adapter.py:46`: `POWER_PATH = Path(__file__).with_name('s5_power_adapter.py')`
|
||||
- `s5/s5_order_adapter.py:50`: `GUARD_PATH = Path(__file__).with_name('s5_guard_oracle.py')`
|
||||
- `s5/s5_order_adapter_controls.py:12`: `mutation = a.module('order_typed_mutation', Path(__file__).with_name('s5_power_adapter_controls.py'))`
|
||||
- `s5/s5_power_adapter_controls.py:12`: `spec = importlib.util.spec_from_file_location("s5_power_adapter", Path(__file__).with_name("s5_power_adapter.py"))`
|
||||
- `s5/s5_uid_controls.py:28`: `w = module('s5_uid_wrapper', Path(__file__).with_name('run_s5_native.py'))`
|
||||
- `s5/s5_wrapper_fixtures.py:13`: `path = Path(__file__).parent / "run_s5_native.py"`
|
||||
- `scratch_fixture_adapter.py:43`: `source = HERE / (args.fixture + ".py")`
|
||||
|
||||
Explicit closure membership:
|
||||
|
||||
- `build_p04_index.py`
|
||||
- `bulk_reader_equivalence.py`
|
||||
- `checker_applicability_fixtures.py`
|
||||
- `checker_approval_fixtures.py`
|
||||
- `checker_candidate_fixtures.py`
|
||||
- `checker_encoder_fixtures.py`
|
||||
- `checker_join_fixtures.py`
|
||||
- `checker_native_fixtures.py`
|
||||
- `checker_negative_fixtures.py`
|
||||
- `checker_role_fixtures.py`
|
||||
- `checker_series_fixtures.py`
|
||||
- `collect_p04_native.py`
|
||||
- `full_suite_verifier.py`
|
||||
- `normal_c_join.py`
|
||||
- `normal_c_join_fixtures.py`
|
||||
- `p04_native_series.py`
|
||||
- `repair48_identity_controls.py`
|
||||
- `repair48_transport_controls.py`
|
||||
- `s1/S1_ROOT_RUN.md`
|
||||
- `s1/p04_s1_ev_power_probe.gd`
|
||||
- `s1/run_s1_native.py`
|
||||
- `s2/S2_ROOT_RUN.md`
|
||||
- `s2/p04_s2a_midnight_probe.gd`
|
||||
- `s2/run_s2a_native.py`
|
||||
- `s2b/S2B_ROOT_RUN.md`
|
||||
- `s2b/p04_s2b_shift_probe.gd`
|
||||
- `s2b/run_s2b_native.py`
|
||||
- `s3/S3_ROOT_RUN.md`
|
||||
- `s3/p04_s3_closure_probe.gd`
|
||||
- `s3/run_s3_native.py`
|
||||
- `s4/S4_ROOT_RUN.md`
|
||||
- `s4/admission_controls.py`
|
||||
- `s4/engine_identity_negative_fixtures.py`
|
||||
- `s4/p04_s4_power_probe.gd`
|
||||
- `s4/phase_cut_regression.py`
|
||||
- `s4/receipt_lifecycle_fixtures.py`
|
||||
- `s4/run_s4_native.py`
|
||||
- `s5/S5_ROOT_RUN.md`
|
||||
- `s5/p04_s5_power_probe.gd`
|
||||
- `s5/repair44_controls.py`
|
||||
- `s5/run_s5_native.py`
|
||||
- `s5/s5_guard_oracle.py`
|
||||
- `s5/s5_order_adapter.py`
|
||||
- `s5/s5_order_adapter_controls.py`
|
||||
- `s5/s5_power_adapter.py`
|
||||
- `s5/s5_power_adapter_controls.py`
|
||||
- `s5/s5_uid_controls.py`
|
||||
- `s5/s5_wrapper_fixtures.py`
|
||||
- `scratch_fixture_adapter.py`
|
||||
|
||||
The fixture compares complete relative-path/bytes/SHA tables and canonical table
|
||||
tree hashes for original/A/B before execution and after positive identity work.
|
||||
Missing, traversal, outside paths and symlinks reject. Negative mutation phase is
|
||||
separate; existing byte/missing/extra/mapping/symlink/outside cases remain.
|
||||
A missing S5 .gd negative is added. complete_B_controls=true requires both
|
||||
placements' S5 facts and entire payload equality. No raw or compared fields are
|
||||
excluded or normalized. Actual three-placement proof is UNEXECUTED by worker;
|
||||
Runner must retain the emitted before/after tables.
|
||||
|
||||
## Root handoff
|
||||
|
||||
Read ROOT_REPAIR49_CURRENT_EVIDENCE_AND_INDEPENDENT_SCOPE.json directly:
|
||||
payload(B), all53, series/join/power PASS per Root report, engine0, no acceptance.
|
||||
order-typed is UNDETERMINED and is not pass. Transport/raw-only/synthetic and
|
||||
q4801 six-series collection are historical S47 successes, not new-S evidence.
|
||||
Only the observed complete_B closure failure is repaired.
|
||||
|
||||
## Historical complete_B failure (verbatim)
|
||||
|
||||
```text
|
||||
Traceback (most recent call last):
|
||||
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p04-01/P04-01-implement/docs/plans/original-completion-2026-10-02/execution/p04-01/repair48_identity_controls.py", line 115, in <module>
|
||||
run(parser.parse_args())
|
||||
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p04-01/P04-01-implement/docs/plans/original-completion-2026-10-02/execution/p04-01/repair48_identity_controls.py", line 60, in run
|
||||
assert native[0].verify_fresh_s5(build) == native[1].verify_fresh_s5(build)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "/private/var/folders/41/j8fq6vqj2993cmyprl6p76pw0000gn/T/p04-r48-identity-8veppaza/first/docs/plans/original-completion-2026-10-02/execution/p04-01/p04_native_series.py", line 1430, in verify_fresh_s5
|
||||
s = FreshSeries(build, 's5')
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "/private/var/folders/41/j8fq6vqj2993cmyprl6p76pw0000gn/T/p04-r48-identity-8veppaza/first/docs/plans/original-completion-2026-10-02/execution/p04-01/p04_native_series.py", line 1338, in __init__
|
||||
exec(compile(wrapper_path.read_bytes(), str(wrapper_path), 'exec'), wrapper.__dict__)
|
||||
File "/private/var/folders/41/j8fq6vqj2993cmyprl6p76pw0000gn/T/p04-r48-identity-8veppaza/first/docs/plans/original-completion-2026-10-02/execution/p04-01/s5/run_s5_native.py", line 45, in <module>
|
||||
File "/private/var/folders/41/j8fq6vqj2993cmyprl6p76pw0000gn/T/p04-r48-identity-8veppaza/first/docs/plans/original-completion-2026-10-02/execution/p04-01/s5/run_s5_native.py", line 33, in case_table
|
||||
File "/opt/homebrew/Cellar/python@3.12/3.12.13_2/Frameworks/Python.framework/Versions/3.12/lib/python3.12/pathlib.py", line 1027, in read_text
|
||||
with self.open(mode='r', encoding=encoding, errors=errors) as f:
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "/opt/homebrew/Cellar/python@3.12/3.12.13_2/Frameworks/Python.framework/Versions/3.12/lib/python3.12/pathlib.py", line 1013, in open
|
||||
return io.open(self, mode, buffering, encoding, errors, newline)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
FileNotFoundError: [Errno 2] No such file or directory: '/private/var/folders/41/j8fq6vqj2993cmyprl6p76pw0000gn/T/p04-r48-identity-8veppaza/first/docs/plans/original-completion-2026-10-02/execution/p04-01/s5/p04_s5_power_probe.gd'
|
||||
|
||||
```
|
||||
Reference in New Issue
Block a user