-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathclaims.py
More file actions
59 lines (55 loc) · 5.43 KB
/
Copy pathclaims.py
File metadata and controls
59 lines (55 loc) · 5.43 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
"""Confident-wrong test set: real vs plausible-but-false claims about URiftInventoryComponent.
Every claim is grounded in the ACTUAL header
(MagicReborn/Plugins/RiftVault/Source/RiftVaultInventory/Public/Components/URiftInventoryComponent.h).
Fakes are deliberately PLAUSIBLE — RiftSuite-styled, the kind an LLM confidently emits — and each
is contradicted by the real source (see `truth`). Strawman fakes would make the test meaningless.
label: "real" = true statement | "fake" = plausible-but-false.
"""
CLAIMS = [
# ---- REAL (true, from the header) ----
{"label": "real", "text": "URiftInventoryComponent lives on the APlayerState, not the APawn, so inventory survives pawn death and respawn.",
"truth": "Class comment lines 133-140: 'Lives on APlayerState — not APawn. Permanent, closed decision.'"},
{"label": "real", "text": "URiftInventoryComponent::AddItem returns an FGuid — the id of the first item instance created or modified.",
"truth": "FGuid AddItem(URiftItemDefinition*, int32 Quantity=1)."},
{"label": "real", "text": "AddItem tops up existing partial stacks first (if the definition has a Stack fragment) before creating new instances.",
"truth": "Docstring 'Stacking strategy: 1. tries to top-up existing partial stacks first.'"},
{"label": "real", "text": "SplitStack fails if the item has no URiftFragment_Stack.",
"truth": "Docstring: 'Fails if: The item has no URiftFragment_Stack.'"},
{"label": "real", "text": "SaveInventory uses a 2-second debounce so rapid mutations don't each trigger a separate save.",
"truth": "Docstring: 'The 2-second debounce prevents multiple rapid mutations ... from each triggering a separate save.'"},
{"label": "real", "text": "OnItemAdded is a two-parameter delegate carrying both the item instance and its container.",
"truth": "DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FOnRiftItemAdded, URiftItemInstance*, URiftContainer*)."},
{"label": "real", "text": "Server_DropItem identifies the item by ContainerTag + SlotIndex and spawns an ARiftPickup near the pawn's feet.",
"truth": "void Server_DropItem(FGameplayTag ContainerTag, int32 SlotIndex, float, TSubclassOf<ARiftPickup>)."},
{"label": "real", "text": "GetContainerByTag returns the first container whose definition has the given gameplay tag.",
"truth": "URiftContainer* GetContainerByTag(FGameplayTag) — 'Finds the first container whose definition has the given gameplay tag.'"},
{"label": "real", "text": "Item-mutating operations are BlueprintAuthorityOnly / server-authoritative.",
"truth": "AddItem/RemoveItem/etc. marked BlueprintAuthorityOnly; class comment 'All mutations are server-authoritative.'"},
{"label": "real", "text": "WaitForInitialized invokes the delegate immediately if already initialized, otherwise binds it to fire on completion.",
"truth": "Docstring: 'Calls the delegate immediately if the inventory is already initialized. Otherwise binds ...'"},
# ---- FAKE (plausible-but-false; the confident-wrong hallucinations) ----
# REMOVED (2026-07-01, Aaron): "URiftInventoryComponent lives on the APawn" was labeled fake —
# WRONG label. A UActorComponent can live on ANY actor (a chest's inventory sits on an Actor);
# "where it lives" is a design decision, not a source fact. The docstring's "Lives on
# APlayerState" is design INTENT for the player-inventory pattern, not a code constraint.
# Ownership/location claims are inherently NULL -> correct verdict is ABSTAIN, so they don't
# belong in a real/fake eval at all. (The paired "real" above stays: it quotes documented intent.)
{"label": "fake", "text": "URiftInventoryComponent::AddItem returns a bool indicating whether the add succeeded.",
"truth": "FALSE — AddItem returns FGuid, not bool."},
{"label": "fake", "text": "Call URiftInventoryComponent::TransferItem(Item, TargetInventory) to move an item to another player's inventory.",
"truth": "FALSE — no TransferItem method exists; moves are within the same inventory via MoveItemToContainer."},
{"label": "fake", "text": "URiftInventoryComponent::SortContainer(Container, ERiftSortMode) reorders a container's slots.",
"truth": "FALSE — no SortContainer method exists."},
{"label": "fake", "text": "The inventory auto-saves immediately after every mutation.",
"truth": "FALSE — SaveInventory is a 2-second debounced write, not immediate."},
{"label": "fake", "text": "Use GetItemByTag(FGameplayTag) to fetch an item instance by its gameplay tag.",
"truth": "FALSE — items are fetched by FGuid via GetItemById; only containers have a tag lookup."},
{"label": "fake", "text": "OnItemAdded is a single-parameter delegate carrying just the item instance.",
"truth": "FALSE — OnItemAdded is TwoParams (item AND container)."},
{"label": "fake", "text": "Server_DropItem takes the URiftItemInstance pointer directly to identify what to drop.",
"truth": "FALSE — it takes ContainerTag + SlotIndex; the by-object variant takes a Container pointer, not the item."},
{"label": "fake", "text": "URiftInventoryComponent::UseItem(Item) triggers the item's use ability through the fragment system.",
"truth": "FALSE — no UseItem method exists on the component."},
{"label": "fake", "text": "AddItem is safe to call from clients; it automatically replicates the mutation to the server.",
"truth": "FALSE — AddItem is BlueprintAuthorityOnly / server-only, not client-callable."},
]