Desk pass 3 is committed alongside — full session from the player chair, choosing against the scenario at every junction, seed 5580 with one corrected branch at 7731. Every failure case and every pass-2 fix held. What it found instead were the two things players do that no GM-chair pass can reach, because both are refusals rather than rolls. "We are not going through." Three acts live on the far side and the document had no line about declining to cross, which is the most professionally sensible choice a party can make after reading a coroner's note about a man who walked himself to death. Answered now with a reason and not a compulsion: the entry is pegged to a tree that no longer exists, so a seam with no peg does not sit still — waiting does not make it safer, it makes it unfindable, and the forty-one go with it. Registry says that once and leaves the choice alone. A party that still refuses gets a real ending in ten minutes rather than four railroaded hours. "Can we cancel it from in here." A Research fumble and an Anomaly Lore success both landed on a question the document could not answer either way. Decided rather than fudged: cancellation is a REGISTRY ACT ON OUR SIDE, because the entry is a record and the record is held here. So it cannot be done from inside, somebody has to be back through before it happens, and anyone still in the duplicate when it goes goes with it, having never been filed as being there. The Close now costs not only what they choose but who is standing where when it takes effect, and if they are bringing anyone through those two questions collide. Also: Ray Teasdale, the clearance foreman the timeline always implied and the roster never carried — a Persuade success in pass 3 bought an interview with a man who did not exist. Act One's failure case no longer assumes the party is at the farm, since pass 3 spent the act twenty miles away and the automatic notch sat uselessly on the other side of the county. The re-cut is answered on a success as well as a fumble, with the reason: the entry is pegged to the older authority and there is no older tree. Fix 7's conditional target moved onto the countdown row, because I missed it myself eight minutes after writing it. A special for reading the child. And the bimodality paragraph, which took three attempts to earn its place: held when its citation failed, verified after another session found the cause — three separate random generators, so a seed named a different fight in each tool — and corrected once more when its illustration turned out to compare targeting modes rather than the two ends. Published now as 23% nobody down against 45% everybody, decided by round five, with the focus-fire claim removed. Twenty-three fixes across three passes. The cadence is complete; what remains is the print pack and two decisions that are not a scenario's to make. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
THE CUSTODIANS
A Basic Roleplaying game of crossings, as a Foundry VTT system.
A drab British government agency deals with crossings. Reality keeps a record of what belongs where, and it can be made to get it wrong. Agents are civil servants: they carry warrant cards and cordon tape, they file in triplicate, and the thing that makes them dangerous is that they know how the record works.
The tone is bureaucratic horror. Most cases close with an arrangement rather than a fight, and the supernatural is a filing error somebody committed on purpose.
Installing
In Foundry: Game Systems → Install System → Manifest URL
https://gitea.timevans.uk/slaguru666/RingBRP/raw/branch/main/system.json
Or by hand: clone this repository into your Foundry data directory as
Data/systems/ringbrp, then restart Foundry.
git clone https://gitea.timevans.uk/slaguru666/RingBRP.git ringbrp
Requires Foundry v13+ (verified against v14.364). No modules are required. Dice So Nice works if you have it, using your own dice — the system ships no dice skins and does not touch anybody's dice settings.
Deploying to a remote Foundry server
The built compendia in packs/ are committed on purpose, so a remote server needs
nothing but the files:
cd /path/to/foundrydata/Data/systems
git clone https://gitea.timevans.uk/slaguru666/RingBRP.git ringbrp
# restart Foundry
node_modules/ is not committed. You only need it if you intend to rebuild the
packs or regenerate art on that machine:
npm install # pulls classic-level, used to write the LevelDB packs
npm run build # rebuilds packs/ from tools/content.mjs
npm run check # the twelve guards; the build refuses to run if they fail
To update a deployed server: git pull and restart Foundry. If the pull touches
packs/, Foundry must be stopped first — LevelDB will not tolerate its files
changing underneath a running server.
What is in the box
| Postings | 25, each with a key characteristic, trained skills, talents and its own kit |
| Trades | 10 ordinary jobs the department recruits from, plus induction |
| Catalogue | 236 items — 123 gear, 62 weapons, 32 armour, 19 vehicles |
| Skills / talents | 62 skills, 19 talents |
| Bestiary | 47 statblocks across folklore, horror and the far side |
| Eras | modern, antique, future, anomalous — the agency is old and never abolishes anything |
| Icons | 292, all generated from tools/icons.mjs; no external art |
| Starter scenario | BLACK PLATFORM, a six-player action starter, importable as a single Adventure |
| Compendia | pregens, NPCs, skills, weapons, armour, gear, vehicles, powers, tables, rules, the starter |
| Rules journal | 13 pages, generated from rules.mjs so the book cannot drift from the code |
The rules, in brief
d100 roll-under, banding into critical / special / success / failure / fumble. 96–99 always fail, 00 always fumbles, and every skill has a 1% floor.
Reaction Lanes replace Strike Rank. Initiative is
3 × max(⌈DEX/3⌉, ⌈readiness/10⌉) less carried load, plus a d6, re-rolled every
round — including the first, so the opening round is ordered like every other.
Coherence runs 10 → 0 and measures how well-filed an agent is in reality. It bands into Anchored / Loose / Adrift / Unmoored / Displaced, and spending it is how the supernatural works.
The Quiet Arts are deliberate misfilings, not spells. They cost Coherence, and they only ever arrive from a crossing that goes wrong.
Defences are graded. A defence stops a blow of its own quality or worse outright; against something better it only reduces it by as many steps as it was outclassed by. Only a critical stops a critical.
Access is a record. There is no hacking skill and nothing to break into — see below.
A weapon's fire mode is a decision. Slow weapons shoot better and then make you work; fast ones offer a second shot at the cost of both; rapid ones fire bursts; beams can be held on the target for damage instead of hits. A weapon that cannot fire a burst cannot be made to.
Sights and lamps apply themselves. A sight is graded by range band — a telescopic sight is a penalty inside ten metres — and a carried lamp buys the dark back to dim, never to daylight, and tells everyone where you are. Neither is a thing the player selects: both are facts about what is in the pack.
Borrowed Authority — the access subsystem
Deliberately not cyberpunk. Nobody jacks into anything.
What an agent has is a named credential belonging to somebody real, with a scope of things that person could plausibly do, a Trust that erodes as it is used, and red flags describing how the real owner behaves.
- Inside its scope there is no roll. A facilities contractor opening a plant room is not intrusion, it is Tuesday. It costs 1 Trust and it works.
- One tier beyond is a stretch — roll, at −20 for each red flag you break. The system is not testing whether you are clever. It is testing whether you are behaving like the person whose name is on the record.
- Two tiers beyond is impossible at any skill. No percentage on any sheet gets a contractor issuing accounts.
- A fumble burns the credential, and somebody real is going to be asked about it.
A credential is assembled, not found: up to three dossier items, each a separate scene using a different skill, at most one of them at a keyboard. Items make the credential better, never the roll easier.
AI is a posture on the target rather than an opponent — a gatekeeper raises what counts as routine, an analyst writes a new red flag every time you stretch, an asset stands in for a dossier item.
And you may spend Coherence to widen a scope, because reality can be made to remember that the person always held that duty. It works. It always works. Push a credential past what its Trust will carry and your file and theirs converge one step, and nothing in this game spends anything to converge them back.
Repository layout
ringbrp.mjs the system: sheets, engine, hooks (~5,500 lines)
rules.mjs THE SINGLE AUTHORITY for every rule formula
system.json Foundry manifest
template.json data model for every Actor and Item type
templates/ Handlebars sheets
styles/ one stylesheet
lang/en.json all user-facing text
icons/ fonts/ art/ generated art
packs/ built LevelDB compendia (committed — see Deploying)
tools/
content.mjs the catalogue: skills, weapons, armour, gear, vehicles, NPCs
build-packs.mjs builds packs/ — runs the twelve guards first and refuses on failure
make-icons.mjs draws all 231 icons
rules-text.mjs generates the rules journal FROM rules.mjs
mission.mjs the case generator
mission-tables.mjs its content tables
check-rules.mjs guard: no rule may be defined twice
check-kits.mjs guard: every posting's kit must exist and be usable
check-lang.mjs guard: no localisation key may be both a value and a branch
check-lethality.mjs guard: no creature may quietly change what it does to a party
check-rollable.mjs guard: no clue may hide behind a roll nobody present can make
docs/REVIEW_LOG.md the design and defect log, R-1 onward
The one rule this codebase enforces on itself
No rule formula may exist in more than one place. Everything lives in rules.mjs,
and tools/check-rules.mjs fails the build if a formula is restated, if an alias
stops being identity-equal to what it aliases, if a constant is re-declared as a
literal, or if an exported rule has no spot-check. The packs used to be built under
one set of numbers and played under another; this makes that impossible to ship.
The build runs all twelve guards before it writes anything:
check-rules: OK — 110 rules, 38 files scanned, 3 aliases + 46 constant sets checked, 395 formulas verified
check-kits: OK — 25 roles, 10 trades, 218 catalogue items, every kit key resolves, every posting can use what it carries, every loadout distinct
check-lang: OK — en.json, 1018 keys, no leaf/branch collisions
check-templates: OK — 19 templates compile
check-behaviour: OK — 76 behavioural tests
check-scenarios: OK — 13 scenario files, 80 mechanic tags, every skill named resolves against 62 catalogue entries
check-rollable: OK — 79 rolls across 13 scenario files, every one reachable at 25% or better by somebody present
check-creatures: OK — 102 actor specs across 8 sources, every characteristic, skill, kit key, talent, species and style resolves, no duplicate keys
check-anatomy: OK — 5 body plans, 36 locations, d20 complete in both modes, every location drawn, every kind handled and destructible, 20 plan changes carried 432 wounds with their severity intact, 1 flyer(s) with a survivable landing
check-lethality: OK — 47 creatures, every one fighting exactly as recorded against the frozen party
check-focus: OK — focus fire measured against 31 packs, helps in all of them, 31 of them by more than their own noise
check-bestiary: OK — 47 creatures, the document matches the game