slaguru666andClaude Opus 5 4148d13768 STANDING ORDER v0.5: desk playtest 4, the clock with the cuts taken
The pass three passes had not run: an honest session at six players, no
contrarian choices and no forced branches, with the Pacing Note's cuts taken
exactly as written. Seed 6620. Nineteen minutes cut — pipe room folded, Kit
Marlow to the corridor, census dropped.

THE CUTS DID NOT CLOSE THE GAP, AND ONE RETRY UNDID MOST OF THEM. Act Two asks
for six rolls whose failure case was "ten minutes and a second attempt", roughly
two fail in an average session, and a single failed Research handed back ten of
the nineteen minutes that had just been cut. The Pacing Note's arithmetic was
sized against the act's length and never against its variance, so it could not
hold. A failed roll on a filed clue now costs a SCENE instead — Pennyfeather
fetches it while the party do something else — which keeps the roll meaningful
and costs nothing on the clock.

THE CHEAPEST CUT GUTS THE LIKELIEST ENDING. The Pacing Note priced moving Kit
Marlow to a corridor at "the drawings". This pass took that cut and then reached
the narrow row of ending 3 — the likeliest one, since it needs a single dossier
item — whose entire price is that the sixty-one stay unrecorded. Kit is the
sixty-one made into a person and her own entry says she must be a person before
she is a price. The cut is re-costed honestly, and the corridor version now has
to do her one job: she shows them a drawing and asks whether she got the blue
right.

The blanket Act One failure case named Joan for all seven clues, and Joan does
not go down the adit. Clues 6 and 7 now have their own: time, never access,
because the door has never been locked. Joan herself is at the farm AND walks up
with them, so the moor walk has somebody in it. And 13b came off the dice after
a 98 lost the reason the proper channel failed — the thematic centre of the case
— which is now written at the bottom of Pennyfeather's own sheet.

Act Two's floor is about 66 minutes against a budget of 55, measured across
three passes at 75 uncut, 70 uncut and 66 fully cut. The retry fix should
recover most of that and nothing has measured it. THE REMAINING QUESTION IS A
BUDGET DECISION AND IT IS TIM'S: move the slot to 3h15, or take twelve minutes
out of the sick bay and lose Revelation 3's best route. Written up in Open
questions and deliberately not decided here.

All twenty-one guards pass. Four passes, every content defect they found fixed.
What is left is human beings.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-15 23:10:50 +01:00
2026-08-30 21:08:22 +01:00
2026-08-30 21:34:37 +01:00

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 seventeen 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 seventeen 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 seventeen guards before it writes anything:

check-rules: OK — 112 rules, 49 files scanned, 3 aliases + 46 constant sets checked, 413 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 — 14 scenario files, 83 mechanic tags, every skill named resolves against 62 catalogue entries
check-rollable: OK — 82 rolls across 14 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-powers: OK — 41 powers classified, 2 wired and each one measurably changes its fight, 14 recorded as beyond the harness with a reason, 25 not fight rules
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 38 packs, helps in all of them, 36 of them by more than their own noise
check-firstblood: OK — the first disabling blow is worth 40 points of wipe rate in the four-player cut, 15.4 in the six-a-side line
check-attackers: OK — three of the four-player cut disable on 11.1% of their attacks or better, and one of them on 0.1%
check-fight-tail: OK — a fight past 15 rounds wipes the party 1.4x as often in the four-player cut and 2.4x at six a side, and nothing was truncated
check-cited: OK — 25 cited figures across 14 scenario files resolve against 3 baselines
check-handouts: OK — 4 handouts, the two almanac pages identical in structure and columns, every line 41 miles from clean ground, nothing under 11pt
check-bestiary: OK — 47 creatures, the document matches the game
S
Description
No description provided
Readme
66 MiB
Languages
JavaScript 89.5%
Handlebars 5.4%
CSS 4.5%
HTML 0.3%
Python 0.3%