You are viewing a potentially older version of this package. View all versions.
TheConcernedCat-ConcernedTeamster-1.0.1 icon

ConcernedTeamster

Cart truth for haulers: live mass, cargo, grade, and risk readouts, plus recorded trips that score road quality and locate route bottlenecks - while vanilla cart physics stay untouched by default.

Date uploaded 5 hours ago
Version 1.0.1
Download link TheConcernedCat-ConcernedTeamster-1.0.1.zip
Downloads 26
Dependency string TheConcernedCat-ConcernedTeamster-1.0.1

This mod requires the following mods to function

denikson-BepInExPack_Valheim-5.4.2333 icon
denikson-BepInExPack_Valheim

BepInEx pack for Valheim. Preconfigured with the correct entry point for mods and preferred defaults for the community.

Preferred version: 5.4.2333
ValheimModding-Jotunn-2.29.2 icon
ValheimModding-Jotunn

Jötunn (/ˈjɔːtʊn/, 'giant'), the Valheim Library was created with the goal of making the lives of mod developers easier. It enables you to create mods for Valheim using an abstracted API so you can focus on the actual content creation.

Preferred version: 2.29.2

README

Concerned Teamster

Stable release candidate by The Concerned Cat.

Your cart stops being a mystery: Concerned Teamster measures load, grade, traction, and risk so hauling decisions are informed — while vanilla cart physics stay untouched by default.

Why

Valheim shows no cart mass, no cargo weight total, no hint whether a loaded cart can climb the hill ahead, and no warning before a descent turns into a runaway. Most cart mods answer that pain by deleting it — weightless or physics-free carts. Concerned Teamster keeps the logistics gameplay and explains it instead.

What it does today

  • Cart Status panel. A visible Cart button (right screen edge, in-world) shows total mass with its base + cargo breakdown, live terrain grade with climbing/descending state, ground surface, attachment/pull state, and data freshness. Stale or unavailable values say so — never wrong numbers.
  • Cargo manifest and load planning (v0.2). A sortable, filterable manifest of the cart's cargo using the game's own quality-scaled weights, a calibrated safe-load model that answers "uncalibrated" instead of faking precision, and live load/grade warnings with actionable non-color text.
  • Descent safety and recovery (v0.3). A calibrated descent-risk model with bounded lookahead, an explicit reversible parking brake (never written to saves — a reloaded world is always brake-free), stuck-cause diagnostics, and numbered vanilla-legal recovery steps — advice, never teleports or cheats.
  • Trip recording and road quality (v0.4). Pulled-cart trips are recorded to Teamster's own per-world sidecar (bounded, capped, atomic writes; world saves untouched); recorded trips score the roads in 8 m segments — roughness, grade, drag proxy — and a Trips panel lists, compares, and analyzes them, locating worst-grade points, roughest segments, and hypothetical-load bottlenecks on your real routes.
  • Optional Cartographer integration (v0.5). If Concerned Cartographer is installed (0.10.0+), a Routes button lists its drawn routes; pick one and Teamster terrain-profiles it in bounded chunks — distance, surfaces, grade histogram, worst sections, and the safe-load bottleneck for your cart's current mass — then renders a numbered problem report with load advice straight from the calibration model. Unloaded terrain is reported as UNSAMPLED, never guessed. Strictly read-only toward Cartographer (its atlas is never touched), no hard dependency in either direction, and without Cartographer the feature simply does not exist.
  • Multiplayer trust and authority (v0.6). A written, enforced policy decides who may read, act, and observe each feature: the parking brake — the only feature that changes a cart — works only when you own the cart under vanilla rules, and any doubt fails closed. Crews get cooperative diagnostics (who's helping, hindering, or idle, and why the cart still won't move) with zero added force, owner-fresh readings are labeled when you're only observing, and every network-derived value is bounded as hostile input. Teamster stays client-side: it sends nothing, takes no ownership, and an unmodded peer sees pure vanilla.
  • Read-only, bounded telemetry with hard performance caps; everything game-facing is verified at startup and fails closed with one actionable log line if a game update changes cart internals.
  • UX, controller, accessibility, and localization (v0.7). Every panel scales (0.8–1.3×), meets a WCAG AA contrast target, and never relies on color alone — every warning, diagnosis, and comparison already carries distinguishing text or a symbol. A gamepad focus order and accelerator-conflict checker keep every feature reachable by button first. All 277 user-facing strings resolve through a translator-friendly catalog with English fallback — see the translator guide to contribute a language. New players get a short, dismissable pointer to the Cart button, and three documented settings presets (Minimal / Standard / EverythingObservational) cover common preferences without ever auto-enabling the parking brake.

Compatibility with other mods (v0.8)

Teamster now detects a small, researched registry of known mods (by GUID, never guessed) and applies a documented policy: coexist quietly, adapt a reading, or warn. Three mods are registered so far, chosen from a Thunderstore-wide research pass by download count and directness of effect on cart mass or cargo weight. BetterCarts (TastyChickenLegs) and ItemStacks (mtnewton, 306,000+ downloads — reduces every item's weight by 90% by default) both alter cart mass out of the box, verified directly from their published source, so every load-advice surface (warnings, stuck diagnosis, recovery guidance, route bottlenecks) shows a plain "load advice unavailable" notice instead of a vanilla-calibrated number presented as truth while either is detected. ValheimPlus ships an optional Wagon section that can change cart mass, but ships it off — disabled, its patch reproduces vanilla's mass math exactly — so it's flagged with a caution note pointing at that setting rather than suppressing advice for every install. A Compat button on the Cart Status panel always shows what was detected. This registry grows as more mods are researched; an unrecognized mod is always silent — nothing to configure, no false alarms.

Recovery, migration, and support bundle (v0.8)

Trip sidecar backups now rotate a bounded set of copies per event instead of overwriting the same file every time, so a second corruption or migration event never destroys the evidence of the first. A new Support button on the Cart Status panel exports a single sanitized diagnostic file — versions, config, compatibility status, sidecar summaries, this session's recovery events, and recent Teamster-only log lines — for sharing when reporting a problem. No world names, player names, or full file paths are included; nothing is sent anywhere by the mod itself.

Privacy

Nothing Teamster produces leaves your machine. It sends no network messages and takes no ownership of anything (audited every release), runs no analytics or telemetry, and includes no crash reporter. What it stores locally: your per-world trip history (BepInEx/config/ConcernedCatMods/ ConcernedTeamster/) and your plugin config — both yours to delete at any time, and neither is a Valheim save file. What it displays but never logs or stores: other players' in-game character names, shown only in cooperative haul diagnostics while you're actually playing with them.

What comes next (roadmap)

  • The road to v1.0: real in-game verification of every feature against this beta's own pre-release checklist, calibration data from real hauls and descents, and a stable-release hardening pass.

Principles

  • Vanilla truth first. Measures and explains the game's real behavior; never silently changes it.
  • No cheats by default. No zero-weight carts, no teleports, no stamina bypass, no autopilot.
  • World-safe. Reads game state; writes only its own sidecar files. World saves are never modified.
  • Fail closed. If a game internal changes, the dependent feature disables itself with one actionable log line.
  • Uninstall-safe. Removing the mod leaves worlds, characters, and carts exactly as vanilla made them.

Status

Version 1.0.0 is the stable release candidate: cart truth, cargo and load planning, descent safety, trip-based road scoring, capability-detected route profiling, an enforced multiplayer read/act/observe policy, scalable/contrast-checked/controller-navigable panels with full localization and onboarding, mod-compatibility awareness with a documented precedence policy, corruption-safe recovery with a sanitized support bundle, a frozen feature/default surface with a privacy-safe feedback path, and formal performance/memory/network budgets — all proven at their worst-case configured scale, with vanilla physics untouched by default. Every feature is unit-proven off-game; the specific in-game observations still pending are tracked in PRE_RELEASE_SMOKE_TEST.md and never claimed passed until actually run. Features land issue by issue on the GitHub tracker.

Support

  • Bugs and feature requests: the GitHub issue tracker — also one click away in-game via the Report a Bug button on the Cart Status panel's Support screen.
  • When reporting a problem, attach the sanitized bundle from the Support panel's Export button (versions, config, compatibility, sidecar summaries, recent log lines — no world names, player names, or full file paths). Never attach a world save file, a screenshot showing another player's name, or anything else you consider private.
  • Anything that should not be public: [email protected].

About

Concerned Teamster is created and maintained by Eren Cansunar / The Concerned Cat. AI coding agents materially assisted implementation, tests, research, and documentation. Releases are reviewed and validated through the project's test/release process before anything is published. Concerned Teamster is an unofficial mod and is not affiliated with or endorsed by Iron Gate.

CHANGELOG

Changelog

1.0.1

  • Replaced the storefront icon with an illustrated wooden hauling cart on aged parchment, matching Concerned Cartographer artwork and Concerned Cat branding.
  • Presentation-only update. Gameplay, settings, dependencies, and data formats are unchanged.

1.0.0 (Stable — sealed, pending owner publish approval)

Stable Teamster (CT-046..CT-050). The tenth internal release candidate, and the first sealed as v1.0 stable — not published by this change, but prepared exactly as it would ship if approved. No new gameplay feature; this release is a final audit, formal budgets, a final cross-area sign-off, and the seal itself.

  • Golden path and v1.0 definition of done (CT-046). Every shipped promise from v0.1 through v0.9 mapped to its evidence source in one capability-by-capability matrix; zero new defects found beyond the two already-deferred P3s.
  • Full regression from a clean checkout (CT-047). The entire automated suite reruns clean from a genuinely fresh git clone, not just this conveyor's own long-lived working tree — proof the committed tree, not a possibly-stale local environment, is what's actually green.
  • Formal performance, memory, network, and stability budgets (CT-048). 14 numbered budgets covering the sampler, route profiler, brake lifecycle, trip recorder, both O(n)-over-samples trip presenters, the network input guard, and sidecar IO — all Met, each backed by a repeatable automated test.
  • Final sign-off across six non-code areas (CT-049). Docs truth, localization, controller navigation, accessibility, migration chain, and the compatibility statement each re-verified fresh; several stale doc numbers found and corrected, compatibility versions rechecked live against Thunderstore.
  • This seal (CT-050). Version synced, packaged, hashed, a fresh-profile install rehearsed against the real sealed artifact, and the owner packet committed. Publication remains entirely owner-only and did not happen as part of this change.

0.9.0 (Public Beta — sealed, pending owner publish approval)

Public Beta Hardening (CT-041..CT-045). The ninth internal release candidate, and the first ever sealed as a genuine public-beta candidate — not published by this change, but prepared exactly as it would ship if approved. Every feature through v0.8 is frozen; this release is entirely release-engineering: a documented feature/default freeze, a privacy-safe feedback path, complete public docs and a security self-audit, scripted profile-family deploy paths with a file-level lifecycle rehearsal, a defect burn-down, and the first compiled owner pre-release smoke checklist.

  • Feature and default freeze (CT-041). Every shipped feature and every config default is now documented with a safety classification in FEATURE_FREEZE.md, locked by a snapshot test so an accidental future edit to a default fails a test instead of silently shipping. A new Report a Bug button on the Support panel routes to the public GitHub issue tracker.
  • Public docs and security audit (CT-042). The package README gained an accurate privacy statement and an AI-assistance disclosure; a committed security self-audit checked dependency pins, secrets, the package copy-list, and every adapter's fail-closed behavior.
  • Profile family and lifecycle rehearsal (CT-043). deploy.ps1 gained a -Profile Dev|Compat|Dedicated parameter, and a new rehearsal script proves fresh-install/upgrade/uninstall mechanics against real, actually-built packages (including a real historical v0.7.0 build) entirely inside a scratch directory.
  • Defect burn-down and the smoke checklist (CT-044). The one open P2 defect is fixed (the cart telemetry driver now fails closed like every panel); the first complete PRE_RELEASE_SMOKE_TEST.md compiles every pending manual verification from v0.1 onward into one ordered, owner-runnable checklist.
  • This seal (CT-045). Version synced, packaged, hashed, and the owner packet committed. Publication remains entirely owner-only and did not happen as part of this change.

0.8.0 (Internal — unreleased)

Compatibility, Recovery, Scale (CT-036..CT-040). The eighth internal release candidate: Teamster now knows about a small, researched set of other mods that could contradict its own readings, never silently loses trip data to a corrupted file or a transient disk failure, and has been proven at the worst-case configured limits it ships with.

  • Compatibility framework and precedence policy (CT-036/CT-037). A registry of known mods (by GUID, never guessed) with a documented policy — coexist, adapt a reading, or warn — always visible from the Cart Status panel's Compat button. When a registered mod is found to alter cart mass or physics, every load-advice surface (warnings, stuck diagnosis, recovery guidance, route bottlenecks) shows a plain "unavailable" notice instead of a vanilla-calibrated number presented as truth.
  • Current mod research (CT-038). A Thunderstore-wide research pass registered two more real, GUID-verified mods that alter cart mass or item weight by default (one of them more popular than every other registered entry combined), and found — rather than assumed — that a third, hugely popular overhaul mod's cart-mass feature ships disabled, so it is flagged with a caution note instead of unnecessarily suppressing advice for the many players who never enable it.
  • Migration, backup, and the support bundle (CT-039). Sidecar backups now rotate a bounded set of copies per event instead of overwriting the same file every time, and a failed save attempt genuinely retries instead of silently losing the trip. Config gains its first version marker for future-safe migrations. A new Support button exports a single sanitized diagnostic file — versions, config, compatibility status, sidecar summaries, recent recovery events, and recent log lines — for sharing when reporting a problem; nothing is sent anywhere by the mod itself.
  • Scale validation (CT-040). Trip retention, cargo manifest size, and telemetry tracking are all proven correct at their worst-case configured limits, not just their defaults — see RELEASE_DOSSIER.md for the exact measured numbers.
  • Safety posture unchanged. No cart physics, inventory, stamina, or network behavior touched; nothing written to worlds or Valheim saves; Teamster's own sidecar/config/bundle files only.

0.7.0 (Internal — unreleased)

UX, Controller, Accessibility, Localization (CT-031..CT-035). The seventh internal release candidate: every panel is scalable, contrast- checked, and controller-navigable; every user-facing string is externalized with a documented translator path; and a new player is gently pointed at the Cart button instead of left to discover it cold.

  • Controller navigation and accelerators (CT-031). A deterministic focus order for every panel and a conflict checker for keyboard accelerators (internal duplicates and external collisions with a caller-supplied reserved set) — buttons-first is enforced by an audit: every feature has a visible button, none is accelerator-only. Live gamepad input wiring is staged pending verification against the real read surface.
  • Localization framework and full-catalog externalization (CT-032). Every user-facing string — status, manifest, warnings, diagnostics, guidance, trips, routes, navigation — resolves through a 244-key English catalog with override loading from a translator .tsv, English fallback, a once-only missing-key report, and placeholder validation. A CI-gating audit test fails the build if a hardcoded English literal, a dead catalog key, or a re-hardcoded catalog sentence is ever introduced.
  • UI scale, contrast, and non-color cues (CT-033). A configurable scale factor (0.8–1.3) applied to each panel's whole transform, so nothing can clip relative to its own container at any scale. Every panel text color is audited against the WCAG AA contrast target; a sensitivity check found a real, narrow risk under the wood-panel background's uncertainty, fixed by adding an outline everywhere one was missing. Every warning, diagnosis, and comparison state was already text-distinguishable by design since CT-009/CT-018 — now an audited, tested invariant.
  • Onboarding, config profiles, and discoverability (CT-034). A single non-modal, self-dismissing hint introduces new players to the Cart button the first time they are near a cart. Three documented settings presets (Minimal / Standard / EverythingObservational) apply idempotently on an explicit config change — Standard matches the mod's original defaults exactly, and the parking brake stays opt-in in every preset. Every panel's Close button now sits at the same position and size.
  • Safety posture unchanged. No cart physics, inventory, stamina, or network behavior touched; nothing written to worlds or saves. All four leaves are UI/config-layer only.

0.6.0 (Internal — unreleased)

Multiplayer Trust and Authority (CT-026..CT-030). The sixth internal release candidate: a written, enforced policy for who may read, act, and observe each feature in multiplayer — with the parking brake the only mutating feature, gated to live local authority, and every network-derived input treated as hostile. Client-side throughout; Teamster sends nothing and takes no ownership.

  • Authority policy (CT-026). Every shipped feature is classified observation or mutation. Only the parking brake mutates, and only when this client owns the cart under vanilla rules right now; any authority ambiguity fails closed. The brake enforces its right to act through the policy itself, so the documented matrix and the code cannot drift. Owner-fresh observations (mass, grade, pull state) are labeled remote when viewed without local authority.
  • Topology validation (CT-027). The authority scenarios — player-hosted and dedicated-server, including cart authority handoff mid-haul — are proven at the logic layer (topology is not an input to the decision); the live in-game rows are listed for the owner smoke test.
  • Cooperative diagnostics (CT-028). When crews haul together, Teamster describes who is helping, hindering, or idle and why the cart still will not move — pairing the crew context with the physical stuck verdict without ever changing it, and without adding a single newton of force (audited).
  • Input hardening + privacy (CT-029). Every network-derived number is bounded to a finite, in-range value (garbage in, safe value out — never a NaN or negative cart mass); a fuzz sweep proves it. A committed privacy inventory confirms nothing Teamster produces ever leaves the machine, and player names are never logged.
  • Safety posture unchanged. No force, no teleport, no ownership takeover, no world-save mutation; validator audits fail the build on any of these. Removing the mod leaves worlds and carts exactly as vanilla made them.

0.5.0 (Internal — unreleased)

Optional Cartographer Integration (CT-021..CT-025). The fifth internal release candidate: when Concerned Cartographer is installed, its drawn routes can be profiled for cart safety — with zero hard dependency in either direction and zero writes into Cartographer's atlas.

  • Runtime capability detection (CT-021). Teamster detects Concerned Cartographer by plugin GUID and version at runtime (floor 0.10.0) and verifies a 12-member read contract before any integration feature can appear. Absence, an older version, or any contract mismatch hides the integration with one INFO line — nothing errors, and Teamster runs fully standalone. There is no compile-time reference between the mods, enforced by automated audits.
  • Route picker (CT-022). A Routes button (inside the Cart Status panel, only when Cartographer is detected) lists the current world's routes — name, ground length, point count. Archived routes are hidden; routes without usable geometry are listed with the reason. Selection is held by the route's stable id: renames follow it, while deletion, archiving, geometry loss, or an unreadable catalog invalidate it with an explicit message — never a stale ghost.
  • Route profiling (CT-023). The selected route is terrain-sampled in bounded per-frame chunks (cancellable, capped): total distance, sampled vs unsampled meters (unloaded terrain is reported, never guessed), surface composition, grade histogram, worst climb/descent, and the safe-load bottleneck — the steepest sampled section answered verbatim by the calibrated load model for your cart's current mass. Profiles cache by geometry and recompute only when the route actually changes.
  • Route report (CT-024). A Report button renders the profile as advice: numbered problem sections (steep grades, unsampled stretches with locations), and load recommendations quoted directly from the calibration model — sections the model cannot answer get facts, not invented advice.
  • Read-only by construction (CT-025). The whole integration reflects into Cartographer through reads only; a validator audit fails the build if any mutating or invoking reflection ever appears in the integration path. Cartographer's atlas, pins, routes, and files are never touched.

0.4.0 (Internal — unreleased)

Road Quality and Trip Profiles (CT-016..CT-020). The fourth internal release candidate: recorded trips grade the roads themselves — roughness, drag, grade, and bottlenecks — so haulers improve routes with evidence instead of vibes.

  • Per-world trip recording (CT-016). Pulled-cart trips (position, grade, speed, load) are recorded as bounded sample sequences and persisted to Teamster's own sidecar file — never a Valheim save. Atomic temp-file writes survive a kill at any moment; a versioned header carries the owning world's UID, so world A's trips can never load into world B (filename and header both); malformed rows are skipped and reported; a foreign or future file is backed up first and then replaced with a fresh sidecar for this world — recording never silently destroys it. Trip count is capped with oldest-trip pruning and a visible retention setting.
  • Road-quality scoring (CT-017). Recorded trips score the world in fixed 8 m segments: roughness (mean absolute grade change), mean and worst grade, and a drag proxy (mean speed on near-level ground). Every stat is additive, so scores are deterministic regardless of trip order; segments aggregate all recorded history and survive raw-trip pruning by design. Format v2 sidecars persist the scores; v1 files are backed up and migrated by recomputation.
  • Trip history and comparison UI (CT-018). The Trips panel lists recorded trips with distance, duration, average speed, grade extremes, and cargo mass — sortable, deterministic, with explicit empty states — and compares any two trips (A/B, marked in text, never color alone) on shared distance-normalized quintiles so different-length routes align by fraction of the way. Individual trip records can be deleted.
  • Route bottlenecks (CT-019). For a recorded trip, the panel locates the worst-grade point, the roughest crossed segment, and — for a chosen hypothetical cargo mass — the point where the calibrated load model binds, each positioned by distance along the route and explained by naming its constraint. Unknown calibration coverage is reported honestly instead of pretending a clear verdict.
  • Safety posture unchanged. Recording observes only what the local player already pulls; no cart physics, inventory, stamina, or network behavior is touched; Teamster writes only its own sidecar directory under the BepInEx config path — Valheim world saves are never modified.

0.3.0 (Internal — unreleased)

Descent Safety and Recovery Guidance (CT-011..CT-015). The third internal release candidate: know whether the hill down will stay controlled, hold a parked cart on purpose, and get told why a stuck cart is stuck — with vanilla physics untouched by default and every mutating convenience explicit and reversible.

  • Descent risk model (CT-011). A calibrated three-dimensional model (downgrade, mass, entry speed) rates the descent where you are and the worst descent within a bounded lookahead window ahead of your cart. Verdicts come only from recorded rows and physics bounds; uncalibrated descents say "unknown" instead of pretending.
  • Parking brake (CT-012). The first and only behavior mutation, under the strictest rules: a visible button freezes a parked cart you control; release is explicit or automatic (grab the handle, walk away, lose authority, leave the world, quit, or any capability loss). Nothing is ever written to saves — a reloaded world is always brake-free, and uninstalling restores pure vanilla.
  • Stuck diagnostics (CT-013). When a pulled cart stops moving, the panel says why — overloaded (with the calibration row as evidence), marginal load, steep uncalibrated climb, or a physical obstruction/grounded chassis — and honestly says "cause unclear" when signatures conflict. Parked carts cost nothing.
  • Recovery guidance (CT-014). A Guidance panel turns the diagnosis into numbered vanilla-legal steps — including exactly how much weight to unload, traced to proven calibration rows — never a button that moves the cart for you.
  • Safety posture. Read-only observation everywhere except the explicitly-invoked brake; no inventory, stamina, or network behavior touched; no world or save writes.

0.2.0 (Internal — unreleased)

Cargo and Load Planning (CT-006..CT-010). The second internal release candidate: know what your cart carries and whether the hill ahead is provably safe — still read-only, still vanilla physics.

  • Cargo Manifest panel (CT-006/CT-007). A Manifest button on the Cart Status panel opens a sortable, filterable list of the cart's cargo: item, count, unit weight, line weight — weights taken from the game's own quality-scaled accounting. Sort by any column (stable, deterministic), filter by name (case-insensitive, localized names). Broken modded items appear as explicit unreadable markers instead of silently skewing totals; empty carts and filtered-to-nothing states say so.
  • Calibrated load model (CT-008). A written calibration protocol plus versioned data with full provenance. Verdicts come only from dominance over recorded rows — proven climbs, proven failures, physics bounds from the verified joint break force — and everything else answers "uncalibrated", never fake precision. No measured runs ship yet; the data file says exactly that.
  • Live load/grade warnings (CT-009). While climbing, the panel (and an optional off-by-default HUD hint) warns with actionable text and non-color cues: proven-impossible climbs are DANGER with the evidence quoted, marginal climbs are CAUTION, steep uncalibrated climbs get a terrain-fact caution. Anti-flicker hysteresis is fixed in code; uncalibrated verdicts never warn.
  • Safety posture unchanged. Read-only observation; no cart physics, inventory, stamina, or network behavior modified; nothing written to worlds or saves.

0.1.0 (Internal — unreleased)

Cart Truth (CT-001..CT-005). The first internal release candidate of Concerned Teamster: read-only cart telemetry with a discoverable Cart Status panel, and vanilla cart physics untouched.

  • Cart Status panel (CT-005). A visible "Cart" button at the right screen edge (in-world only) opens a draggable panel showing total mass, the base + cargo breakdown, terrain grade with climbing/descending state, ground surface, attachment/pull state, and data freshness. Stale data is visibly marked STALE; "no cart nearby" and unavailable values say so instead of showing wrong numbers. Optional rebindable keyboard accelerator (empty by default) — the button is always the primary path.
  • Verified cart adapter (CT-002). All game access sits behind a startup capability probe that verifies every member against the running game (18 members) and disables cart features with one actionable warning if a game update changes internals — the mod always keeps loading.
  • Bounded telemetry (CT-003). A read-only sampler (configurable interval/radius/budgets with hard caps) tracks nearby carts: mass from the game's own formula, cargo weight, velocity, attachment and local pull state. State fully resets on logout/world switch; destroyed carts age out within seconds.
  • Terrain grade and surface (CT-004). Deterministic grade math (smoothed, oscillation-free) along the pull-handle heading, and surface classification from the game's terrain paint (untouched/dirt/cultivated/paved) that reports "unknown" rather than guessing.
  • Safety posture. No cart physics, mass, inventory, stamina, or network behavior is modified. Nothing is written to worlds or saves. Disabling or removing the mod leaves everything vanilla.

Product bootstrap (CT-001): independent plugin (com.theconcernedcat.valheim.concernedteamster), configuration, pure-domain test project, package metadata, and repository validation.