Skip to content

Filing bugs

Pale Jack is deterministic — every run can be replayed from a single seed. The seed is the most important thing in a bug report.

FieldWhy
Share code (PJK-…)One value that captures seed, chair, deck, vow stack, room sequence, starting capital, charm tray.
Build / platformWeb vs. desktop. Browser if web. OS version if desktop.
Campaign night indexIf desktop campaign — what night were you on?
Steps to reproduceSequence of actions from the seed start.
Expected vs. observedWhat should have happened. What did.
Screenshot / screen recordingIf the bug is visual or animation-related.

In-game on the result screen, the share code is shown beneath the ending text. Format: PJK-<10-12 character base32>. Copy it.

If the run hasn’t ended, the share code is computed from the run config — share the seed (top-right of the start screen) plus your chair / deck / vow choices and we can reconstruct it.

What “deterministic” means in practice

Section titled “What “deterministic” means in practice”

A given share code, played by a basic-strategy AI, produces the same hand outcomes every time. A bug that “only happens sometimes” almost certainly has a hidden state input (charm flag, persisted run state, asset load timing) — these are the most interesting bug classes, because they reveal places where determinism leaked.

When you file a bug:

  • If you can reproduce on the same share code: include it.
  • If you can’t reproduce on the same share code: still include it, and note “tried 3× with same seed, only happened once.”

Open an issue at github.com/brentvincent/palejack/issues.

Use the bug label. Include the share code in the title if possible (Bug PJK-abc123: cascade animator desyncs on Bell Pull fire).

SeverityExamples
Stop-shipCrashes, save corruption, runs that can’t be completed, wrong scoring math.
HighVisual desyncs, wrong dealer line for a state, incorrect share-code roundtrip.
MediumVoice register breaks, non-deterministic line picks, golden test drift.
LowPolish nits, typos, unclear copy.
  • A reply within 2-3 days acknowledging the bug.
  • The bug gets a label and a milestone (or “later” if it’s not blocking ship).
  • If the bug requires more info, you’ll be asked.
  • When fixed, the linked PR auto-references the issue. Closing happens on merge.