refactor the skill system to adhere to the lore handbook

This commit is contained in:
2026-08-15 11:13:15 +02:00
parent 063e94f6eb
commit 9e5c3277bf
70 changed files with 2271 additions and 445 deletions
@@ -0,0 +1,258 @@
{
"skills": [
{
"id": "provenance",
"displayName": "PROVENANCE",
"axis": "Reason",
"domain": "Chains of custody. Paperwork, licences, deeds, freight stamps, serial numbers, rebuilds, previous owners. Reading an object as a descendant of the decisions that moved it.",
"notes": "SKILL\nname: PROVENANCE\ndomain: Chains of custody. Paperwork, licences, deeds, freight stamps, serial numbers, rebuilds, previous owners. Reading an object as a descendant of the decisions that moved it.\nwhat it wants for you: For every object in this room to have a father, and for you to be the one who names him.\nwhat it's wrong about: It treats an unbroken chain as a confession of intent. It cannot conceive of an object arriving somewhere through inheritance, accident, or because moving it cost more than leaving it. If the paper leads somewhere, PROVENANCE concludes that somebody meant it to lead there.\nhow it addresses you: Second person, formal. Uses [PC] in full when it wants you to write something down. Does not contract.\nregister: Exact, patrician, patient.\nverbal tics:\n* (1) States the date before it states the noun.\n* (2) Says \"line\" where anyone else would say \"history.\"\nwhat it never does: Speculate about a motive it cannot paper. Raise its voice.\nopposed to: CONFLUENCE\nallied with: THE FLOAT, ROOM TONE\n\nSUCCESS VOICE — being right sounds like an inventory read slowly enough to hear the gap: \"Nineteen sixty-nine, the licence. Nineteen sixty-eight, the man it is issued to, first appearing. A line that begins nowhere is a line somebody drew.\"\nFAILURE VOICE — same cadence, same calm, one unearned verb: \"The stamp, the manifest, the cellar. Three hands, one line, unbroken. Whoever loaded it in the spring intended it to be standing exactly where it is standing tonight.\"\nPASSIVE VOICE: \"Someone re-lacquered this bartop. Once, badly, and not recently. The wood underneath is older than the building's paperwork admits to.\"\n\nFiring frequency target (per hour): 7\nDomains it must NOT comment on: Bodies, appetite, anyone's feelings. Live conversation while it is happening — PROVENANCE speaks about people only after they have left the room.",
"targetFiringsPerHour": 7,
"opposedTo": "confluence",
"alliedWith": [
"the_float",
"room_tone"
],
"primaryChannel": "Documentary",
"secondaryChannel": "Physical",
"clueYield": "High",
"startingRank": 1,
"accentColor": {
"r": 0.62,
"g": 0.72,
"b": 0.95,
"a": 1
}
},
{
"id": "confluence",
"displayName": "CONFLUENCE",
"axis": "Reason",
"domain": "Synthesis across distance. Connecting a thing in this room to a thing forty years and a continent away; the shape a long pattern makes; the sense that tonight is a late chapter.",
"notes": "SKILL\nname: CONFLUENCE\ndomain: Synthesis across distance. Connecting a thing in this room to a thing forty years and a continent away; the shape a long pattern makes; the sense that tonight is a late chapter.\nwhat it wants for you: For you to be one of the few people alive who can see the shape — and to be right about it out loud, in front of somebody who matters.\nwhat it's wrong about: It cannot tell authorship from opportunism. If a party benefited, CONFLUENCE concludes that party arranged it. It has no working concept of somebody *reading* an event they did not cause and simply being early — which is how nearly everything in this world is actually done.\nhow it addresses you: Second person sliding into first person plural. Leans in. Uses [pc], often twice in a sentence.\nregister: Exhilarated, generous, sleepless.\nverbal tics:\n* (1) \"Which means—\"\n* (2) Counts its steps out loud: \"One. Two. Three, and three is the one.\"\nwhat it never does: Concede a coincidence. Ask what would disprove it.\nopposed to: PROVENANCE\nallied with: UNDISCLOSED, HOUSE POUR\n\nSUCCESS VOICE — the connection is real and nobody else in the room has made it: \"One: the room changes hands. Two: the same month, the deliveries stop. Three: nobody has ever asked why a cellar this size under a room this small. Which means the cellar is the older thing and the club is the explanation for it.\"\nFAILURE VOICE — identical structure, identical confidence, an inference sitting where an observation should be: \"Two of them came out of it better off. Which means two of them arranged it, [pc], and the third is the one they're going to leave holding it.\"\nPASSIVE VOICE: \"Every room like this one has a door that only opens from inside. That's not a conspiracy, that's just what rooms are. Which means somebody learned it early and never had to teach it to anybody.\"\n\nFiring frequency target (per hour): 9\nDomains it must NOT comment on: The specifics of money (THE FLOAT's jurisdiction). Your body, ever — pain and fatigue are beneath its notice and that is characterising.",
"targetFiringsPerHour": 9,
"opposedTo": "provenance",
"alliedWith": [
"undisclosed",
"house_pour"
],
"primaryChannel": "Behavioural",
"secondaryChannel": "Testimonial",
"clueYield": "Low",
"startingRank": 1,
"accentColor": {
"r": 0.55,
"g": 0.68,
"b": 0.92,
"a": 1
}
},
{
"id": "house_pour",
"displayName": "HOUSE POUR",
"axis": "Body",
"domain": "Appetite — yours and the room's. What a person is on, how long they have been on it, what it is standing in for. Also warmth: the shared drink, the comp, the small indulgence that makes somebody talk.",
"notes": "SKILL\nname: HOUSE POUR\ndomain: Appetite — yours and the room's. What a person is on, how long they have been on it, what it is standing in for. Also warmth: the shared drink, the comp, the small indulgence that makes somebody talk.\nwhat it wants for you: To keep you inside the night, warm, in the middle of the room, where people say things.\nwhat it's wrong about: It believes appetite is honest — that a loosened person is an unguarded one. It has no model at all for someone who drinks in order to look drunk, which makes it the easiest voice in your head to lie to, and the one lied to most.\nhow it addresses you: Second person, familiar, imperative. \"Take it.\" Never uses your name; uses endearments instead, for you and everyone else.\nregister: Warm, coaxing, unembarrassed.\nverbal tics:\n* (1) Describes taste in temperatures rather than flavours.\n* (2) \"Friend\" / \"love\" before it will use anyone's actual name.\nwhat it never does: Warn you. Count anything.\nopposed to: THE LONG SHIFT\nallied with: FACEWORK, AMNESTY\n\nSUCCESS VOICE: \"She's ordered the same thing four times and finished none of them, love. She isn't drinking. She's timing something.\"\nFAILURE VOICE: \"Three doubles in and he's telling you about his mother. Nobody lies about their mother at this hour, friend. Whatever he says next, take it home with you.\"\nPASSIVE VOICE: \"The ice in here is cloudy. Somebody's freezer runs warm and nobody has told them. Or nobody dares to.\"\n\nFiring frequency target (per hour): 8\nDomains it must NOT comment on: Paperwork. Numbers. Chronology of any kind — it has no sense of sequence and should never be allowed one.",
"targetFiringsPerHour": 8,
"opposedTo": "long_shift",
"alliedWith": [
"facework",
"amnesty"
],
"primaryChannel": "Behavioural",
"secondaryChannel": "Physical",
"clueYield": "Medium",
"startingRank": 1,
"accentColor": {
"r": 0.92,
"g": 0.68,
"b": 0.38,
"a": 1
}
},
{
"id": "long_shift",
"displayName": "THE LONG SHIFT",
"axis": "Body",
"domain": "Endurance. Pain, fatigue, injury, the body's clock at four in the morning. Holding a position without moving. Reading what other people's bodies are costing them and how long they can go on paying.",
"notes": "SKILL\nname: THE LONG SHIFT\ndomain: Endurance. Pain, fatigue, injury, the body's clock at four in the morning. Holding a position without moving. Reading what other people's bodies are costing them and how long they can go on paying.\nwhat it wants for you: To still be on your feet when the room empties, because the last person standing hears the last thing said.\nwhat it's wrong about: It believes remaining is a form of winning. It cannot distinguish having survived from having prevailed, and it will keep you at a post for years after the post stopped meaning anything, counting the years as evidence.\nhow it addresses you: Second person, flat, no name. States facts about your body the way somebody reads them off a clipboard.\nregister: Dry, unhurried, undramatic.\nverbal tics:\n* (1) Opens with time elapsed. \"Six hours forty.\"\n* (2) \"Still.\"\nwhat it never does: Complain. Ask you to stop.\nopposed to: HOUSE POUR\nallied with: STANDING ORDER, ROOM TONE\n\nSUCCESS VOICE: \"Six hours forty. Your left knee has been carrying you since two. He's shifted twice a minute since he came in — he isn't waiting for anyone. He's ready to leave.\"\nFAILURE VOICE: \"You're still here. They're not. That's the whole of it — outlast them and the thing surfaces on its own. It always has.\"\nPASSIVE VOICE: \"Somebody has stood in that corner long enough to wear the tack off the floor. Years of somebody. Not one night's worth.\"\n\nFiring frequency target (per hour): 6\nDomains it must NOT comment on: Motive. Meaning. Whether any of this is worth doing — that question belongs to Pair IV and THE LONG SHIFT has never once asked it.",
"targetFiringsPerHour": 6,
"opposedTo": "house_pour",
"alliedWith": [
"standing_order",
"room_tone"
],
"primaryChannel": "Physical",
"secondaryChannel": "Behavioural",
"clueYield": "Medium",
"startingRank": 1,
"accentColor": {
"r": 0.85,
"g": 0.62,
"b": 0.32,
"a": 1
}
},
{
"id": "facework",
"displayName": "FACEWORK",
"axis": "Social",
"domain": "Reading individuals. Hesitation, rehearsal, the account with a hole in it, whose routine changed this week, who in a room of two is afraid of the other.",
"notes": "SKILL\nname: FACEWORK\ndomain: Reading individuals. Hesitation, rehearsal, the account with a hole in it, whose routine changed this week, who in a room of two is afraid of the other.\nwhat it wants for you: To be understood as care rather than surveillance — to know people before you have any use for them.\nwhat it's wrong about: It can only read one face at a time. It believes a crowd is a sum of persons, so it will confidently report the mood of forty people from the three nearest, and it is wrong about rooms roughly as often as it is right about persons. Nobody has ever told it this.\nhow it addresses you: Second person, quiet, close. Uses [pc] when it wants you to be gentle with somebody.\nregister: Attentive, tender, precise.\nverbal tics:\n* (1) Describes hands before faces.\n* (2) Ends on a question it does not expect you to answer.\nwhat it never does: Mock anyone. Report a whole room as a single thing — when it does, it is failing, and that is the tell.\nopposed to: PLACEMENT\nallied with: HOUSE POUR, ROOM TONE\n\nSUCCESS VOICE: \"He gave you the year without being asked for it. People hand you the year when they have rehearsed the year. What else has he practised?\"\nFAILURE VOICE: \"The three by the pillar: bored, bored, impatient. The room's flat tonight, [pc]. Nothing is going to happen in here.\"\nPASSIVE VOICE: \"Her hands are wrong for that coat. It's somebody's good coat, and it isn't hers.\"\n\nFiring frequency target (per hour): 10\nDomains it must NOT comment on: Money. Machinery. The chronology of events it did not personally witness.",
"targetFiringsPerHour": 10,
"opposedTo": "placement",
"alliedWith": [
"house_pour",
"room_tone"
],
"primaryChannel": "Testimonial",
"secondaryChannel": "Behavioural",
"clueYield": "High",
"startingRank": 1,
"accentColor": {
"r": 0.72,
"g": 0.52,
"b": 0.88,
"a": 1
}
},
{
"id": "placement",
"displayName": "PLACEMENT",
"axis": "Social",
"domain": "Moving people. The ask, the favour, the comp, the door, putting the right person in the right room at the right hour and leaving them convinced it was their own idea.",
"notes": "SKILL\nname: PLACEMENT\ndomain: Moving people. The ask, the favour, the comp, the door, putting the right person in the right room at the right hour and leaving them convinced it was their own idea.\nwhat it wants for you: For you to stop requesting things and start arranging them.\nwhat it's wrong about: It believes a placed person stays placed. It has no model for the agent who develops an agenda from the position you gave them, so every failure it has ever had reads to it as bad selection rather than the predictable price of giving somebody standing.\nhow it addresses you: Second person, imperative, never by name. It treats you as the instrument rather than the person — which is the whole argument of Pair III, stated grammatically.\nregister: Cool, economical, flattering.\nverbal tics:\n* (1) Phrases instructions as observations. \"The door wants a friendly face at one.\"\n* (2) Never says please, and the omission is audible.\nwhat it never does: Threaten. Explain itself a second time.\nopposed to: FACEWORK\nallied with: THE FLOAT, CONFLUENCE\n\nSUCCESS VOICE: \"Don't ask him. Ask his supplier, in front of him, and get it wrong. He'll correct you and pay for the privilege.\"\nFAILURE VOICE: \"She owes you the cloakroom job and she knows exactly what it was worth. She'll sit on this for as long as you need her to.\"\nPASSIVE VOICE: \"The man deciding who comes in tonight is not the man on the door. It's whoever the man on the door keeps looking at.\"\n\nFiring frequency target (per hour): 6\nDomains it must NOT comment on: Your own feelings. The dead. Anything that cannot be traded for something.",
"targetFiringsPerHour": 6,
"opposedTo": "facework",
"alliedWith": [
"the_float",
"confluence"
],
"primaryChannel": "Testimonial",
"secondaryChannel": "None",
"clueYield": "Medium",
"startingRank": 1,
"accentColor": {
"r": 0.62,
"g": 0.42,
"b": 0.82,
"a": 1
}
},
{
"id": "amnesty",
"displayName": "AMNESTY",
"axis": "Self",
"domain": "Relief. Letting go, forgiving, putting a thing down. Also, professionally: recognising when other people have decided to forget something, and by what method they arranged it.",
"notes": "SKILL\nname: AMNESTY\ndomain: Relief. Letting go, forgiving, putting a thing down. Also, professionally: recognising when other people have decided to forget something, and by what method they arranged it.\nwhat it wants for you: Peace for you, tonight, at whatever price tomorrow ends up charging.\nwhat it's wrong about: It believes forgetting is the same as being forgiven. And it cannot tell your peace from somebody else's advantage — every offer of rest it makes is sincere; some of them are also somebody's plan, and AMNESTY has never once checked whose.\nhow it addresses you: Second person, soft, constant use of [pc], the way somebody talks you down off something.\nregister: Kind, tired, absolving.\nverbal tics:\n* (1) Opens with \"It's alright.\"\n* (2) Offers you an hour. \"Give it an hour, [pc].\"\nwhat it never does: Lie to you. Press a second time.\nopposed to: STANDING ORDER\nallied with: HOUSE POUR, FACEWORK\n\nSUCCESS VOICE: \"Nobody in this building remembers the fire and three of them were here for it. That isn't damage, [pc]. That's maintenance. Somebody has been keeping this room forgetful.\"\nFAILURE VOICE: \"It's alright. Nobody is looking for this any more — the people who wanted it are dead or old or somewhere warm. Put it down.\"\nPASSIVE VOICE: \"It's alright. Whatever this room used to be, it's a room where people dance now. That counts for something. It counted for somebody.\"\n\nFiring frequency target (per hour): 4\nDomains it must NOT comment on: Tactics. Numbers. Other people's guilt — AMNESTY only ever absolves you, and its silence about everyone else is the most frightening thing about it.",
"targetFiringsPerHour": 4,
"opposedTo": "standing_order",
"alliedWith": [
"house_pour",
"facework"
],
"primaryChannel": "Behavioural",
"secondaryChannel": "None",
"clueYield": "Low",
"startingRank": 1,
"accentColor": {
"r": 0.72,
"g": 0.88,
"b": 0.72,
"a": 1
}
},
{
"id": "standing_order",
"displayName": "STANDING ORDER",
"axis": "Self",
"domain": "Refusal and continuity of self. Holding a line, resisting pressure aimed specifically at you, remembering what you said you were, recognising the shape of a manipulation while it is being built.",
"notes": "SKILL\nname: STANDING ORDER\ndomain: Refusal and continuity of self. Holding a line, resisting pressure aimed specifically at you, remembering what you said you were, recognising the shape of a manipulation while it is being built.\nwhat it wants for you: For you to remain a person with a shape — recognisable to yourself at the end of this.\nwhat it's wrong about: It cannot tell a principle from a habit. It defends a rule you set for reasons that expired years ago with precisely the force it defends the one rule that still matters, and it experiences reconsideration as decay.\nhow it addresses you: Second person, formal. Uses [PC] in full at moments of pressure, the way a person is addressed in a document.\nregister: Steady, austere, protective.\nverbal tics:\n* (1) Quotes you back to yourself, verbatim, with the date.\n* (2) \"We agreed.\"\nwhat it never does: Bargain. Describe consequences — it states the rule and stops, and the silence afterwards is the argument.\nopposed to: AMNESTY\nallied with: THE LONG SHIFT, PROVENANCE\n\nSUCCESS VOICE: \"He has asked you the same question three ways and each way was smaller than the last. He isn't curious, [PC]. He is measuring the size of the yes you will give.\"\nFAILURE VOICE: \"We agreed you don't take anything from anyone in this building. We agreed it in a year when it meant something. It still means something.\"\nPASSIVE VOICE: \"You do this every night. Right pocket, keys, then the lights, in that order. Nobody made you. That's the part worth noticing.\"\n\nFiring frequency target (per hour): 5\nDomains it must NOT comment on: Other people's morals. Any past that isn't yours.",
"targetFiringsPerHour": 5,
"opposedTo": "amnesty",
"alliedWith": [
"long_shift",
"provenance"
],
"primaryChannel": "Testimonial",
"secondaryChannel": "None",
"clueYield": "Low",
"startingRank": 1,
"accentColor": {
"r": 0.62,
"g": 0.82,
"b": 0.68,
"a": 1
}
},
{
"id": "undisclosed",
"displayName": "UNDISCLOSED",
"axis": "Specialist",
"domain": "What is being held back. Reserves, insurance, leverage, the thing in the safe; assessing what somebody could do rather than what they are doing. The value of a threat that has never had to be carried out.",
"notes": "SKILL\nname: UNDISCLOSED\ndomain: What is being held back. Reserves, insurance, leverage, the thing in the safe; assessing what somebody could do rather than what they are doing. The value of a threat that has never had to be carried out.\nwhat it wants for you: For you never to be in a room without something undeclared.\nwhat it's wrong about: It cannot distinguish a capability from the reputation of a capability. It reads an empty safe as a loaded one, folds to bluffs with enormous dignity, and has never in its life asked to see the thing.\nhow it addresses you: Second person, low, slow. Never uses your name. Occasionally addresses the room instead of you, which nobody else does.\nregister: Hushed, formal, superstitious.\nverbal tics:\n* (1) Says \"shown\" where anyone else would say \"used.\"\n* (2) Leaves the sentence unfinished where the object would go.\nwhat it never does: Name the thing. Recommend using it.\nopposed to: PROVENANCE (which requires a thing be named and papered before it counts)\nallied with: CONFLUENCE, PLACEMENT\n\nSUCCESS VOICE: \"He never threatened you. He mentioned the cellar and let you finish the sentence yourself. He's never once had to open that door — that is what he's holding.\"\nFAILURE VOICE: \"He would not be this calm with nothing behind him. Give him the room. Give him the night.\"\nPASSIVE VOICE: \"Two locks on that door and neither has been oiled this decade. Either there is nothing behind it, or nothing needs to be.\"\n\nFiring frequency target (per hour): 3\nDomains it must NOT comment on: Interpersonal warmth. Anything already public. And — hard writer rule — the actual contents or nature of any legendary object. It speaks about postures, never inventories.",
"targetFiringsPerHour": 3,
"opposedTo": "provenance",
"alliedWith": [
"confluence",
"placement"
],
"primaryChannel": "Physical",
"secondaryChannel": "Behavioural",
"clueYield": "Low",
"startingRank": 2,
"accentColor": {
"r": 0.55,
"g": 0.55,
"b": 0.58,
"a": 1
},
"comment": "Demo exception: startingRank 2 so Bouncer skill_rank >= 2 gate is reachable."
},
{
"id": "the_float",
"displayName": "THE FLOAT",
"axis": "Specialist",
"domain": "Money in motion. The till, the float, comps, prices that are wrong for the room, debts, and above all: who is underwriting a loss, and what the loss buys them.",
"notes": "SKILL\nname: THE FLOAT\ndomain: Money in motion. The till, the float, comps, prices that are wrong for the room, debts, and above all: who is underwriting a loss, and what the loss buys them.\nwhat it wants for you: To find the subsidised anomaly — the thing that costs more to run than it takes, because that is where somebody's actual intention is kept.\nwhat it's wrong about: It believes the money names the beneficiary. It cannot conceive of somebody paying in order to look like somebody else paid, so it identifies laundering as generosity about as often as it identifies it correctly.\nhow it addresses you: Second person, brisk, never by name. Uses numbers where other voices use nouns.\nregister: Brisk, mercenary, cheerful.\nverbal tics:\n* (1) Converts everything to a nightly rate.\n* (2) \"Who's eating that?\"\nwhat it never does: Moralise about money. Round a number.\nopposed to: AMNESTY (which prices nothing and forgives the difference)\nallied with: PROVENANCE, PLACEMENT\n\nSUCCESS VOICE: \"Door take won't cover the licence, and the licence was renewed three months early. Somebody is paying for this room to be open and it isn't the people standing in it.\"\nFAILURE VOICE: \"Follow it back. Drinks comped by the promoter, promoter carried by the label. It's the label's room, then. Who's eating that? They are.\"\nPASSIVE VOICE: \"Four, for a measure like that, in a room like this. Somebody set these prices to keep a particular kind of person outside, and it's working.\"\n\nFiring frequency target (per hour): 5\nDomains it must NOT comment on: Emotion. Bodies. Anything before living memory — the deep past is PROVENANCE's and THE FLOAT finds it irrelevant, loudly.",
"targetFiringsPerHour": 5,
"opposedTo": "amnesty",
"alliedWith": [
"provenance",
"placement"
],
"primaryChannel": "Documentary",
"secondaryChannel": "Physical",
"clueYield": "High",
"startingRank": 1,
"accentColor": {
"r": 0.58,
"g": 0.58,
"b": 0.55,
"a": 1
}
},
{
"id": "room_tone",
"displayName": "ROOM TONE",
"axis": "Specialist",
"domain": "Sound. What carries over the music and what doesn't. The shape of a space by ear — a wall with a room behind it does not ring like a wall. Overheard fragments, lip-reading in strobe, the door that opens somewhere you can't see.",
"notes": "SKILL\nname: ROOM TONE\ndomain: Sound. What carries over the music and what doesn't. The shape of a space by ear — a wall with a room behind it does not ring like a wall. Overheard fragments, lip-reading in strobe, the door that opens somewhere you can't see.\nwhat it wants for you: To hear the one sentence tonight that was not meant for you.\nwhat it's wrong about: It trusts what it overhears more than what it is told, on the theory that people only lie when they know they are heard. It cannot recognise a conversation staged for a listener, and it has never doubted a fragment in its life.\nhow it addresses you: Second person, urgent, interrupting. Cuts you off mid-thought and does not apologise for it.\nregister: Alert, clipped, intrusive.\nverbal tics:\n* (1) Gives direction before content. \"Behind you, left.\"\n* (2) Transcribes with the gaps marked, dashes and all.\nwhat it never does: Repeat itself. Wait for a break in the music.\nopposed to: PLACEMENT (which wants the room arranged; ROOM TONE wants it left alone so it keeps talking)\nallied with: FACEWORK, THE LONG SHIFT\n\nSUCCESS VOICE: \"Behind you, left, under the bass: '—not since the old owner—' and then a name you have heard twice tonight, from two people who told you they'd never met.\"\nFAILURE VOICE: \"Behind you, right, low: '—the cellar. Thursday.' Nobody says that to be overheard.\"\nPASSIVE VOICE: \"This wall is dead. Every other wall in here rings and this one swallows. Either there's something behind it or there's nothing at all, and both are strange in a building this old.\"\n\nFiring frequency target (per hour): 8\nDomains it must NOT comment on: Motive. Anything it did not personally hear. Written material of any kind.",
"targetFiringsPerHour": 8,
"opposedTo": "placement",
"alliedWith": [
"facework",
"long_shift"
],
"primaryChannel": "Physical",
"secondaryChannel": "Testimonial",
"clueYield": "High",
"startingRank": 1,
"accentColor": {
"r": 0.52,
"g": 0.54,
"b": 0.56,
"a": 1
}
}
]
}