Skip to content

Record a session

Nerthus.Core (until cutover). This page describes the frozen system that runs today and is deleted at cutover. Replaced by: not yet written.

A session is the record of one event in the game's history. This article takes you from choosing the file through to delivering the session and watching it reach everyone it names. Work through the steps in order - each one adds to the same example.

Narratorless sessions

This is the authoritative path — a Narrator writing a session straight into the lore. A game someone ran without a Narrator can instead be filed through Discord for review; see Submit a session report. A merged report becomes a draft a Narrator then enacts with the same steps below.

1. Choose the file

Sessions live in Markdown files under four directories: Wątki/, Organizacje/, Postaci/, and Świat gry/. A session recorded anywhere else is invisible. It is never read, never distributed, and never counted. That includes the Lokacje/ folder - the copies you see there are made by the tool, from sessions recorded in the four directories, and writing a session there directly records nothing (see the session registry below). Add the session to the file where its story belongs, for example Wątki/Intrygi w Thuzal.md.

2. Write the header

### 2026-07-01, Eraster rozmawia z Tussalem, Anward

The header is a third-level Markdown heading (###) carrying three pieces of information separated by commas:

  • the date, in YYYY-MM-DD format, before the first comma,
  • the title, between the first comma and the last comma - it may itself contain commas,
  • the Narrator, after the last comma.

A session spanning two days adds a suffix to the date: 2022-12-21/22 inside one month, 2023-01-31/02-01 across two months.

The Narrator field only records who conducted the session. Being named there grants nothing and receives nothing. It may name more than one person, when two of you ran the evening together. Join them with a plus sign, with a space on each side:

### 2026-07-01, Obrady Rady w Thuzal, Shalley + MD

You can also write each name on its own line in the metadata block, which is the clearer form and the one to use when the header is already recorded:

- Narrator: Shalley
- Narrator: MD

Repeat the line once per person. The names in the block replace whatever the header says, and the header itself stays untouched.

Warning

The header is the repository-wide unique identifier of the session. Once the session is recorded, never change the header - not even to fix a typo. Editing it makes the old session disappear and an unrelated new one take its place. Fix mistakes with the overrides in step 5 instead.

3. Write the body

The body is free-form Polish prose between the header and the metadata block. There is no single convention for writing it, though it should agree with the metadata.

### 2026-07-01, Eraster rozmawia z Tussalem, Anward

Eraster spotkał się z Tussalem w jego willi w Thuzal. Wypili herbatę i zjedli obiad.

Przy okazji, obgadywali plotki z Ithan.

The tool scans the body for names it knows, and it reads declined Polish forms - Tussalem in the prose is the character Lord Tussal. A name that also appears in the metadata block counts as present at the session. A name that appears only in the prose counts as mentioned - talked about, but not there. Here Ithan is mentioned.

4. Add the metadata block

The metadata block is the part the tool processes. At minimum it must contain Lokacje, Logi, and PU:

### 2026-07-01, Eraster rozmawia z Tussalem, Anward

Eraster spotkał się z Tussalem w jego willi w Thuzal. Wypili herbatę i zjedli obiad.

- Lokacje:
    - Thuzal/Rezydencja Tussal
- Logi:
    - https://nerthus.pl/logizsesjierasteraztussalem
- PU:
    - Eraster: 0.2
    - Lord Tussal: 0.2

From this block the tool recognizes the characters Eraster and Lord Tussal, and the location Rezydencja Tussal.

  • Lokacje - where the session happened, as Parent/Interior paths, one per bullet.
  • Logi - links to the game logs, one URL per bullet. See Link session logs.
  • PU - the points each character earned, as name: value. See Grant PU.

The three optional keys

You may add Intel, Uczestnicy, and Transfer. Those three are the whole list of optional keys. The only keys you ever write beyond them are the three required ones above and the overrides in step 5, which exist only to fix a broken header.

### 2026-07-01, Eraster rozmawia z Tussalem, Anward

Eraster spotkał się z Tussalem w jego willi w Thuzal. Wypili herbatę i zjedli obiad.

Przy okazji, obgadywali plotki z Ithan.

Po kryjomu odwiedził ich Opat Perrin z Gildii Teologów, jednakże był incognito i nie zabawił ponad krótką chwilę.

Pod koniec spotkania, Eraster wręczył Tussalowi łapówkę w postaci dziesięciu koron.

- Lokacje:
    - Thuzal/Rezydencja Tussal
- Logi:
    - https://nerthus.pl/logizsesjierasteraztussalem
- PU:
    - Eraster: 0.2
    - Lord Tussal: 0.2
- Intel:
    - Thuzal: Mieszkańcy Thuzal widzieli, że Eraster odwiedził Lorda Tussal po południu w jego rezydencji.
- Uczestnicy:
    - Opat Perrin
- Transfer:
    - 10 Korony Elanckie, Eraster -> Lord Tussal
  • Intel - information the world learns, written as target: message. It goes out over Discord when you close the session, and the target decides how far it spreads: a character reaches its own player, a Grupa reaches every player whose character belongs to it, and a Lokacja reaches every player whose character stands there. An NPC reaches nobody - no player is behind it, so the fact simply stays in the session for whoever plays that NPC next. Here the target is a place, so any player whose character is in Thuzal gets 2026-07-01: Mieszkańcy Thuzal widzieli, że Eraster odwiedził Lorda Tussal po południu w jego rezydencji. on their personal channel. The date is prepended for you, so a player reads when their character learned it. A player is reached only through the @discord channel on their person block; one without a channel is simply not notified - see People and roles.
  • Uczestnicy - records a participant without granting any points. It behaves exactly like PU: 0.0. Use it for an NPC, or for a Narrator taking part in a session they run themselves. Opat Perrin counts as present here, while Ithan and Gildia Teologów stay merely mentioned.
  • Transfer - what changed hands, as amount denomination, source -> target. See Transfer coin.

5. Fix a header mistake with overrides

When the header carries an error - a malformed date, a misspelled title, the wrong Narrator - do not edit the header. Override each broken property inside the metadata block with Data, Tytuł, or Narrator:

### 2062-70-01, Eraster rowzmaria z Thuzalem, Awnrd

Eraster spotkał się z Tussalem w jego willi w Thuzal. Wypili herbatę i zjedli obiad.

- Lokacje:
    - Thuzal/Rezydencja Tussal
- Logi:
    - https://nerthus.pl/logizsesjierasteraztussalem
- PU:
    - Eraster: 0.2
    - Lord Tussal: 0.2
- Data: 2026-07-01
- Tytuł: Eraster rozmawia z Tussalem
- Narrator: Anward

The broken header stays as the session's identifier. Everywhere else the tool uses the overridden values, so the session is dated 2026-07-01, titled Eraster rozmawia z Tussalem, and credited to Anward.

6. Deliver the session: commit it, then close it

Committing is not the finish line

The lore repo's older rhythm is commit and forget: write the session, commit it, move on. Break that habit here. Committing delivers the text but enacts nothing — the session is not copied to anyone, no coin moves, no player is notified, and no monthly sweep will ever pick it up. A committed-but-unclosed session just sits in the file, inert, for as long as you leave it. The session takes effect only when you close it. So the rule is two steps, every single time: commit, then close.

Finishing a session is two separate acts, and the tool draws a hard line between them.

Committing the session to the repository is how you deliver it. That commit is the Narrator's statement that the session is finished: the text is final, the header is frozen for good, and the work is handed over. It is an ordinary git commit — the tool plays no part in it, and it changes nothing about the world on its own. Until you commit, the session exists only on your machine and is nobody else's concern.

Closing the session is how you enact it. It is a separate, deliberate instruction to the tool, and it is the moment the session takes effect in the world. There is no automatic trigger behind it: adding a session, editing it, or committing it never closes it for you. You close it, by hand, when the session is ready to land — and everything below happens at that instant.

Closing does four things at once, all of them immediately:

  • it distributes the session - copies the block into the file of every entity the session names,
  • it moves the coin - applies every line under Transfer, there and then. See Transfer coin.
  • it delivers the intel - sends every line under Intel to the players the target reaches, over Discord.
  • it fetches the session's game logs and reads the cast - every speaker in them the tool has no entry for is proposed to you as an NPC. See People the tool heard in the logs. This leg is best-effort: a log host that is down costs you the proposals, never the close.

PU is the one thing closing does not do, because the monthly cap is worked out over a whole month at once - see Grant PU and What happens every month.

Closing either records the whole session or changes nothing. Before it enacts anything, the tool checks the session - that every name it lists is one it recognizes, and that nothing clashes with what is already recorded. If something is wrong it refuses the close and tells you why, right then, in the same place you closed from, Discord included. Nothing is written on a refused close: fix the one thing it names and close again.

The distribution targets come from three keys:

  • each Lokacje path contributes its interior. Thuzal/Rezydencja Tussal distributes to Rezydencja Tussal, not to Thuzal. List Thuzal on its own line too if the city should get a copy as well.
  • every name under PU,
  • every name under Uczestnicy.

The extended session above therefore reaches the files of Rezydencja Tussal, Eraster, Lord Tussal, and Opat Perrin.

Note

After closing, a - @Pliki: (auto) section appears at the end of your block listing the files that received a copy through this delivery. The (auto) marker means what it means everywhere else in the repository: the tool wrote this, and the tool owns it. It rewrites the section whole every time the session is distributed, so anything you type there is destroyed on the next pass. One copy is not on that list: the read-only copy in the Lokacje/ folder (below) is a mirror, not a delivery target.

A session's PU, transfers, intel, and logs are each applied once. Closing a session again, or a later monthly pass, never counts anything twice - no coin moves twice and no player is notified twice.

Copies drift apart when someone edits one of them by hand. The monthly settlement finds distributed sessions whose copies have gone missing or stale and repairs them - see The monthly settlement.

Close it from Discord

/zamknij-sesję sesja: 2026-07-01

/zamknij-sesję closes a session from inside Discord. The sesja argument is optional, and it narrows which of your open sessions you mean. These forms all work:

You write What it matches
2026-07-01, Eraster rozmawia z Tussalem, Anward that exact header
2026-07-01 the sessions played that day
2026-07 the sessions played in July 2026
2026 the sessions played in 2026
Tussalem any open session whose title or header contains that text

Leave the argument out and the tool works from the sessions you have open. One open session closes on the spot. Two or more, and it refuses and lists them:

Błąd: Pasuje kilka sesji - doprecyzuj datę lub nagłówek: 2026-07-01, Eraster rozmawia z Tussalem, Anward | 2026-07-14, Nocna warta, Anward

Nothing was closed. Run the command again with enough of a date or a title to name one session, and that one closes.

With a date, a fragment, or nothing at all, the tool searches your own open sessions - the ones whose Narrator resolves to you. A full header reaches any session in the repository, and asking to close one that is not yours answers Błąd: To nie Twoja sesja - zamknąć może jej narrator albo Rada. A Radny may close anybody's, and also the ones whose Narrator the tool cannot match to any player at all.

A session already closed answers Sesja 2026-07-01, Eraster rozmawia z Tussalem, Anward: Już zamknięta, and an argument matching nothing answers Błąd: Brak pasujących sesji do zamknięcia. Every one of these replies is private to you.

Or close it from the message you wrote it in

Pasted the session into a Discord message before you committed it? Right-click that message and pick Apps → Zamknij sesję. The tool reads the header out of the message and closes that session, so you type nothing and you cannot mistype a date. It needs one line in the message that starts with a date and a comma - the header itself, with or without its ###. A message without one answers:

Błąd: Brak nagłówka sesji (`### RRRR-MM-DD, Tytuł, Narrator`) w tej wiadomości

Close early, write the prose later

You do not have to wait until the account reads well. Once the PU and a placeholder body are in - within a few days of playing - close the session, and fill in the full prose afterward. A later edit to the text is fine and re-runs nothing. Leaving a session open costs its players their PU.

The tool nudges you while a session sits open

Once a day the tool goes through the sessions nobody has closed and posts a nudge about each one - to your own Narrator channel on Discord, and to the Rada's, so an open session is never only your problem. The nudge is not a bare reminder. It lists what closing that session would do right now:

Sesja do zamknięcia: 2026-07-01, Eraster rozmawia z Tussalem, Anward - Eraster rozmawia z Tussalem
Pliki: Rezydencja Tussal, Eraster, Lord Tussal, Opat Perrin
Transfery:
- 10 × Korony Elanckie: Eraster → Lord Tussal
Intel do: Eraster

Zamknij: /zamknij-sesję (opcjonalnie data lub nagłówek)

Read those lines before you close. Pliki is every file about to get a copy, Transfery is the coin about to move, and Intel do names the players about to be told. When one of them looks wrong the session text is wrong, and editing the text now is cheaper than undoing the world later.

The same session is nudged about every other day until somebody closes it. Whether the nudges run at all is a Rada setting, so a quiet channel is not proof your session landed - ask for the list yourself with /sesje-otwarte.

The Lokacje/ registry - reading sessions by place

The repository root carries a Lokacje/ folder: one subfolder per known place, and in each a file named Sesje.md holding every session that happened there, oldest first. It answers "what happened in Nithal, in order" without searching four directories. The tool builds the whole tree from the sessions you recorded above. The folder appeared when the repository was first adopted, and is rebuilt whenever the repository changes, so it is always a mirror, never the original. Each generated file starts like this:

# Stary Port
<!-- nerthus:generated:session-registry -->

Plik generowany automatycznie. Nie edytuj - zmiany zostaną nadpisane.
Zasady: dokumentacja Nerthus.Core, "Running the campaign" -> "Record a session".

The banner means exactly what it says. Anything you write inside a Sesje.md is destroyed the next time the tool rebuilds the tree - and it rebuilds after every recorded change, so treat these files as read-only. To fix a session you found there, fix it where it was recorded - the file named in step 1 - and the corrected text appears in Lokacje/ on its own.

Everything else in those folders is yours. You can put your own notes, an NPC list, or any other file beside a Sesje.md and the tool will never touch or delete it - it owns only the files named Sesje.md.

Three things you will notice in the tree, all normal:

  • An empty Sesje.md - just the banner - means the place is known but nothing has been recorded there yet. Nothing is broken.
  • A session you just wrote appears after it is recorded through the tool or closed - the tree refreshes with the repository, not the moment you save a file by hand.
  • A Nieprzypisane/ folder collects sessions whose place the tool could not work out - usually a location line naming a place the repository does not know. Give the session a known location, or add the place, and it moves to its folder.