skill: switch 40250 parity skill to file-by-file 1:1 porting
Unit of work is a 40250 source unit; current-only logic is a defect; unreachable code is not evidence. Adds per-function port-map schema, priority by player-visible gameplay, parallel worktree rules, and a corrected project map. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -97,12 +97,46 @@ An adaptation may change APIs or representation, never gameplay rules, branch ou
|
||||
|
||||
When a verified entry becomes stale, retain its previous evidence and history. Do not delete the entry or recreate it under a new ID.
|
||||
|
||||
## History events
|
||||
A contract's `evidence.tests` and `implementation.files` must be reachable from the runtime
|
||||
(loaded by `AppFlow`/`GameScene`/the native extension in a normal session). A file used only by its
|
||||
own test is not an implementation and its test is not evidence.
|
||||
|
||||
Append one compact JSON object per meaningful state change to `audit/history.jsonl`:
|
||||
## Port-map entries
|
||||
|
||||
One JSON file per 40250 source unit at `audit/port-map/<Lib>/<File>.json`:
|
||||
|
||||
```json
|
||||
{"time":"2026-09-19T00:00:00Z","event":"status_changed","id":"combat.local.normal_attack","from":"MAPPED","to":"TEST_VERIFIED","reason":"call chain audited and tests passed"}
|
||||
{
|
||||
"reference": "UserInterface/InstanceBaseMovement.cpp",
|
||||
"reference_sha256": "<sha256 of the reference file>",
|
||||
"priority": "P0",
|
||||
"contracts": ["movement.keyboard.motion", "movement.remote_sync_state"],
|
||||
"functions": {
|
||||
"CInstanceBase::SetMoveSpeed": {
|
||||
"status": "PORTED",
|
||||
"impl": ["project/player_controller.gd:set_server_speed", "extension/src/net/entity_store.cpp:motion_move_speed"],
|
||||
"note": ""
|
||||
},
|
||||
"CInstanceBase::__EnableSkipCollision": {"status": "TODO"}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
- Function keys are the reference's qualified names (`Class::Method`, or the free-function name).
|
||||
- `status` is one of `TODO`, `PORTED`, `ADAPTED`, `N_A`, `DIVERGENT`, `NEEDS_LIVE` (meanings in `SKILL.md`).
|
||||
- `impl` is required for `PORTED`/`ADAPTED`/`NEEDS_LIVE`; `note` is required for `ADAPTED`, `N_A`,
|
||||
`DIVERGENT` and `NEEDS_LIVE`. `ADAPTED` also needs a `test` path.
|
||||
- When `reference_sha256` no longer matches the file, every non-`TODO` function in the unit must be
|
||||
rechecked before the hash is updated.
|
||||
|
||||
## History events
|
||||
|
||||
Append one compact JSON line per round to `audit/history.jsonl`:
|
||||
|
||||
```json
|
||||
{"time":"2026-09-22T00:00:00Z","event":"port_round","unit":"UserInterface/InstanceBaseMovement.cpp","ported":["CInstanceBase::SetMoveSpeed"],"deleted":["player_controller.gd clampf(0.25,3.0)"],"divergent":[],"needs_live":[],"tests":["project/keyboard_motion_timeline_test.gd PASS"],"commit":"c5c183da"}
|
||||
```
|
||||
|
||||
Contract status changes still use `{"event":"status_changed","id":...,"from":...,"to":...,"reason":...}`.
|
||||
|
||||
Never store credentials, packet payload secrets, binary captures, or generated screenshots in the ledger.
|
||||
|
||||
Reference in New Issue
Block a user