Skip to content

Game-clock worker payroll accounting — 0.4.4.0 Alpha 1 - #10

Merged
SimGamerJen merged 38 commits into
mainfrom
feature/game-clock-payroll
Oct 30, 2026
Merged

SimGamerJen merged 38 commits into
mainfrom
feature/game-clock-payroll

Conversation

@SimGamerJen

@SimGamerJen SimGamerJen commented Oct 29, 2026 •

Copy link
Copy Markdown
Owner

0.4.4.0 Alpha 1 release candidate

This PR changes HelperPayroll's default worker-time accounting from real frame time to validated Farming Simulator game-clock time, while retaining legacy realTime mode.

Payroll time model

  • gameClock is the default authoritative worker-time basis.
  • Wage accrual follows accelerated Farming Simulator time.
  • Clock movement is validated against the actual FS effective time scale.
  • Billable acceleration is capped independently through maxPayrollTimeScale.
  • Default cap: 10×.
  • maxPayrollTimeScale=0 restores uncapped/full game-clock payroll.
  • Default billable behaviour:
    • 1× → 1×
    • 5× → 5×
    • 10× → 10×
    • 30× / 60× / 120× / 360× → 10×
  • Paused game time does not accrue game-clock wages.
  • Sleep/time jumps, period skips and clock rollback are rejected/re-anchored instead of billed.
  • Coarse/batched environment clock movement is supported.
  • dailyPayroll work can split across midnight into the correct game-day segments.

UI, persistence and diagnostics

  • Billing UI exposes worker time basis and maximum payroll time scale.
  • Both settings persist per save.
  • Diagnostics expose effective FS time scale, billable payroll scale and configured cap.
  • Runtime tracking retains real elapsed time, validated game-clock elapsed time and billable game-clock elapsed time.

API and snapshots

  • Public API remains v5; existing methods are retained.
  • Snapshot schema advances to v4.
  • Active jobs/sessions expose validated/billable elapsed data, scale diagnostics, discontinuity count and active per-day work segments.

HelperProfiles

HelperPayroll remains optional for HelperProfiles.

  • HelperPayroll owns: roles, rates, compensation overrides, wage accounting, settlement and payroll history.
  • HelperProfiles owns: worker identity, roster availability and helper selection.
  • HelperProfiles consumes the public payroll snapshot/API only for read-only role and live COST display.

0.4.3.0 Alpha 2 compatibility

The branch is based directly on current main and is 0 commits behind. Existing 0.4.3.0 Alpha 2 functionality is retained, including A–T roster-aware payroll, external-worker sessions/AutoDrive continuity, Dashboard, WorkerCosts conflict protection, ledger persistence and single-player authority boundaries.

Pre-release review fixes

Release review found and corrected one blocker before merge: the save-settings diagnostic had a shifted string.format argument list after the new cap field was added. It is now fixed and covered by release validation.

Release-facing metadata was also updated because the previous README still reported 0.4.2.0 despite main being 0.4.3.0 Alpha 2.

Validation

At current head ca9e719e82de1fa703ac31a5ec81532121cfc114:

  • push validation: passed
  • PR validation: passed
  • XML/release metadata checks: passed
  • Lua syntax: passed
  • 1×, 5×, 10× accounting: passed
  • 30×, 60×, 120×, 360× capped accounting: passed
  • unlimited cap=0: passed
  • pause: passed
  • sleep/jump rejection: passed
  • rollback and multi-day/period skip rejection: passed
  • batched clock movement: passed
  • midnight splitting: passed
  • legacy realTime: passed
  • ZIP integrity: passed

Validation package SHA-256:

c3689f0ae39c49ae2ba5932984a1dc44052fe634c36b82362c03dc13e5458e2b

This remains an alpha pre-release. Multiplayer remains disabled.

@SimGamerJen SimGamerJen changed the title Game-clock worker payroll accounting Game-clock worker payroll accounting — 0.4.4.0 Alpha 1 Oct 30, 2026
@SimGamerJen
SimGamerJen marked this pull request as ready for review October 30, 2026 16:33
@SimGamerJen
SimGamerJen merged commit 1d562a1 into main Oct 30, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant