π οΈ Crafting β System Guarantees Matrix
This page defines the behavioural contract of the Crafting system.
No marketing. No implication. Just guarantees β and explicit
non-guarantees.
π Quick Navigation
- Core Service
- Preflight
- Accept / Enqueue
- Jobs / Scheduling
- Delivery
- Refunds / Compensation
- Escrow Path
- Authority
- Time / Offline Progress
- Persistence / Restore
- Events
- Modifiers / Validators
- Routing
- Determinism / RNG
- Public API
- NonβGuarantees
- Final Summary
1οΈβ£ Core Service
CraftingServiceCore
| Aspect |
Guarantee |
| Orchestration root |
β Single service owns crafting truth |
| Job creation |
β Service-only |
| Job mutation |
β Service-only |
| Runtime usage |
Main thread |
| Adapter-driven |
β Yes |
| Inspector required |
β No |
| UI required |
β No |
2οΈβ£ Preflight
| Aspect |
Guarantee |
| Mutates state |
β Never |
| Safe for UI / tools / teachables |
β Yes |
| Check order |
Inputs β Currency β Space |
| Validators run |
β Only after core checks succeed |
| No-space override via validator |
β Not guaranteed |
| Routing included in space check |
β Yes |
| Chance-output space policy applied |
β Yes |
3οΈβ£ Accept / Enqueue
| Aspect |
Guarantee |
| Authority checked before mutation |
β Yes |
| Inputs consumed immediately (default path) |
β Yes |
| Currency debited immediately (default path) |
β Yes |
| Job created only after accept succeeds |
β Yes |
| Partial failure compensation |
β Best-effort |
| Batch support |
β Yes |
| Timed craft support |
β Yes |
| Cross-system atomicity |
β Not guaranteed |
4οΈβ£ Jobs / Scheduling
| Aspect |
Guarantee |
| Queued jobs supported |
β Yes |
| Running jobs supported |
β Yes |
| Paused jobs supported |
β Yes |
| Per-station caps |
β Yes |
| Global parallel cap |
β Yes |
| Queue reorder support |
β MoveQueuedFirst |
| Scheduler fairness |
Basic fairness |
| Deterministic scheduling across external state changes |
β Not guaranteed |
5οΈβ£ Delivery
| Aspect |
Guarantee |
| Modifiers re-evaluated at delivery |
β Yes |
| Output routing resolved at delivery |
β Yes |
| Outputs added immediately on success |
β Yes |
| Delivery failure possible after accept |
β Yes |
| Timed jobs deliver later |
β Yes |
| Delivery atomicity (default path) |
β Not guaranteed |
6οΈβ£ Refunds / Compensation
| Aspect |
Guarantee |
| Currency refund on delivery failure |
β Attempted |
| Input refund on delivery failure |
Optional |
| Input refund success |
Best-effort |
| Currency refund success |
Depends on adapter |
| Refunds outside service |
β Not supported |
| Net-zero guarantee |
β Not guaranteed |
7οΈβ£ Escrow Path
| Aspect |
Guarantee |
| Scope |
Immediate (zero-duration) crafts |
| Job created |
β No |
| Inventory reservations required |
β Yes |
| Currency holds required |
β Yes |
| Routing used |
β No |
| Timed crafts supported |
β No |
| Refuses missing escrow seams |
β Yes |
| Atomicity |
Depends on adapter |
8οΈβ£ Authority
| Aspect |
Guarantee |
| Mutation gating supported |
β Yes |
| Enqueue gated |
β Yes |
| Cancel / Pause / Resume gated |
β Yes |
| Scheduler control gating |
Optional |
| Read queries gated |
β No |
| Multiplayer replication |
β Not provided |
9οΈβ£ Time / Offline Progress
| Aspect |
Guarantee |
| Gameplay time abstraction |
β ITimeProvider |
| Wall-clock abstraction |
β IWallClockProvider |
| Offline progress optional |
β Yes |
| Paused jobs tick offline |
β Never |
| Offline elapsed cap |
Optional |
| acceptedAtUtc captured |
β Yes |
π Persistence / Restore
| Aspect |
Guarantee |
| Snapshot type |
Active jobs |
| Queued jobs restorable |
β Yes |
| Running jobs restorable |
β Yes |
| Paused jobs restorable |
β Yes |
| Inputs/currency re-consumed on restore |
β No |
| Offline completion applied during restore |
β When enabled |
| Idempotent completion across repeated restore |
β Not guaranteed (integration-dependent) |
| Save system provided |
β Not provided |
| Persistence storage (files/cloud) |
β Not provided |
| Save/restore timing responsibility |
Developer-defined |
Crafting defines what job data means and how it resumes β
your game defines when, where, and how it is persisted.
11οΈβ£ Events
| Aspect |
Guarantee |
| Lifecycle events exposed |
β Yes |
| Progress events throttled |
β Yes |
| Preflight rejection event |
β Yes |
| Designer UnityEvent mirrors |
β Yes |
12οΈβ£ Modifiers / Validators
| Aspect |
Guarantee |
| Modifiers supported |
β Yes |
| Validators supported |
β Yes |
| Owner/parent discovery |
β Yes |
| Modifiers run at accept |
β Yes |
| Modifiers run at delivery |
β Yes |
| Validators mutate state |
β Never |
| Modifier/validator ordering contract |
β Not guaranteed |
13οΈβ£ Routing
| Aspect |
Guarantee |
| Output router supported |
β Yes |
| Routing used in preflight |
β Yes |
| Routing used at delivery |
β Yes |
| Router auto-discovered |
β No |
| Router used by escrow |
β No |
14οΈβ£ Determinism / RNG
| Aspect |
Guarantee |
| Deterministic RNG supported |
β Yes |
| Seeded results repeat with same call sequence |
β Yes |
| Binomial approximation deterministic |
β No |
| Exact chance rolls available |
β Yes |
| Identical results if call order changes |
β Not guaranteed |
15οΈβ£ Public API
| Aspect |
Guarantee |
| Stable supported service surface |
β Yes |
| Public recipe construction seam |
β RecipeCore.Create |
| Public adapter seams |
β Yes |
| Internal hooks public |
β No |
| Integration adapters public |
β No |
π¨ NonβGuarantees
Crafting does not guarantee:
π― Final Summary
| Layer |
Strong Guarantee |
Best Effort |
Not Guaranteed |
| Preflight purity |
β |
|
|
| Single-service job ownership |
β |
|
|
| Default-path compensation |
|
β |
|
| Escrow immediate craft |
β* |
|
|
| Timed craft delivery atomicity |
|
|
β |
| Multiplayer replication |
|
|
β |
| Cross-system atomicity |
|
|
β |
| Persistence integration |
|
|
β |
*Depends on reservation/hold adapter correctness.
System Philosophy
Crafting is:
- Explicit
- Job-driven
- Adapter-based
- Authority-aware
- Honest about guarantees