From e2fdb97ca4eae33ea2ace2e01959fe14fc4af402 Mon Sep 17 00:00:00 2001 From: Ryan Barlow <7389646+ryanbarlow97@users.noreply.github.com> Date: Thu, 15 Oct 2026 12:27:19 +0000 Subject: [PATCH 1/5] docs: describe held realms and the longer estate wait Co-Authored-By: Claude Opus 5.5 --- .../RPCharacters/docs/estates-and-wills.md | 5 +++- projects/SimpleFactions/docs/characters.md | 29 ++++++++++++++++++- 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/projects/RPCharacters/docs/estates-and-wills.md b/projects/RPCharacters/docs/estates-and-wills.md index e2e587e..0373d33 100644 --- a/projects/RPCharacters/docs/estates-and-wills.md +++ b/projects/RPCharacters/docs/estates-and-wills.md @@ -36,7 +36,10 @@ The wait is `estates.wait-hours` in `config.yml`, 24 by default and read at star for rehearsals (`0.05` is three minutes). A death with no living will heir and no guild would freeze, so it waits longer: -`estates.guildless-wait-hours`, 168 (7 days) by default and never shorter than `wait-hours`. When such +`estates.guildless-wait-hours`, 168 (7 days) by default and never shorter than `wait-hours`. A death in a +realm's own (ruling) guild while the realm has no living leader waits the same time, heir or not: that is +a realm whose last member died, which SimpleFactions holds for 7 days, or a vacant seat. Keep the setting +at 168 or more so such an estate passes after the held realm is taken on or closed. When such an estate falls due, its due time moves out by the difference and the estate stays open, so a revive in that time still cancels it. The audit log records the move and the website shows the new date. Time on staff hold counts on top. `/estate decide --no-guild` is not held. Legacy deaths count from diff --git a/projects/SimpleFactions/docs/characters.md b/projects/SimpleFactions/docs/characters.md index bbf8047..dff8f62 100644 --- a/projects/SimpleFactions/docs/characters.md +++ b/projects/SimpleFactions/docs/characters.md @@ -150,7 +150,7 @@ Daily settlement records actual cents paid, including partial payments. An ordinary guild leader's successor is the first living remaining member in its original join order. When no living member is left to succeed, the guild stays open without a leader (see [leaderless guilds](#leaderless-guilds)). A -completely empty realm is removed while its ledger treasury remains. If the +realm whose last member died is held for a week (see [held realms](#held-realms)). If the ruling guild empties but another guild still has members, the realm and its treasuries remain: elective governments start the normal election; a nonelective ruler remains vacant for staff resolution. Unresolved quarantined leaders block succession @@ -168,6 +168,33 @@ and a living seat holder is never replaced; see See [treasury recovery](treasuries.md) for journal paths and coordinated backup requirements. +### Held realms + +When a realm's last member dies, the realm is held rather than removed. Its main +guild records the dead character in the same fields as a leaderless guild +(`dead leader`, `leaderless since`, `empty since`), menus and the public map show the +realm's leader as "Name (dead)", and the realm keeps its land, treasury, army and +installations. While it is held: + +- the daily settlement charges no army or installation upkeep, shrinks no + regiment, downgrades no installation, sheds no province over the cap and sells + no branch to cover a shortfall; other ledger flows carry on as usual; +- no realm can declare war on it. + +If the dead character is revived, it rejoins the realm's main guild as its leader, +on the revive event or at the next hourly check. That happens only while the realm +has no members and the character has joined no other realm. Staff can hand the +realm to someone else with `/faction forcejoin ` followed by +`/faction forceleader `; filling the seat ends the hold. + +The hourly check closes a held realm once it has had no members for 7 days, +counted from the death. A member stops the clock and leaving starts it again. +Closing removes the realm and its file and every other realm's relation with it; +its ledger treasury remains. If any part fails, the rest is tried again every hour, +and a new realm that took the same name in the meantime is left alone. From the end +of the week until the closure is finished, estate lookups for the realm are +unavailable, so estates wait for it rather than paying into a realm about to close. + ### Leaderless guilds A leaderless guild keeps its treasury, branches and settlements. Menus and the From 31e689172a2ba83fc4f34e55d6344f8e69944adc Mon Sep 17 00:00:00 2001 From: Ryan Barlow <7389646+ryanbarlow97@users.noreply.github.com> Date: Thu, 15 Oct 2026 12:48:50 +0000 Subject: [PATCH 2/5] docs: cover held realm taxes, invitations, wars and rollback Co-Authored-By: Claude Opus 5.5 --- .../RPCharacters/docs/estates-and-wills.md | 5 ++- projects/SimpleFactions/docs/characters.md | 40 ++++++++++++------- 2 files changed, 29 insertions(+), 16 deletions(-) diff --git a/projects/RPCharacters/docs/estates-and-wills.md b/projects/RPCharacters/docs/estates-and-wills.md index 0373d33..5ca2670 100644 --- a/projects/RPCharacters/docs/estates-and-wills.md +++ b/projects/RPCharacters/docs/estates-and-wills.md @@ -38,8 +38,9 @@ for rehearsals (`0.05` is three minutes). A death with no living will heir and no guild would freeze, so it waits longer: `estates.guildless-wait-hours`, 168 (7 days) by default and never shorter than `wait-hours`. A death in a realm's own (ruling) guild while the realm has no living leader waits the same time, heir or not: that is -a realm whose last member died, which SimpleFactions holds for 7 days, or a vacant seat. Keep the setting -at 168 or more so such an estate passes after the held realm is taken on or closed. When such +a realm whose last member died, which SimpleFactions holds for 7 days, or a vacant seat. If the realm +still has no leader when that wait ends, the estate is postponed ("the realm has no leader") for up to one +more wait, so it passes once the held realm is taken on or closed. When such an estate falls due, its due time moves out by the difference and the estate stays open, so a revive in that time still cancels it. The audit log records the move and the website shows the new date. Time on staff hold counts on top. `/estate decide --no-guild` is not held. Legacy deaths count from diff --git a/projects/SimpleFactions/docs/characters.md b/projects/SimpleFactions/docs/characters.md index dff8f62..79e84d9 100644 --- a/projects/SimpleFactions/docs/characters.md +++ b/projects/SimpleFactions/docs/characters.md @@ -170,30 +170,42 @@ requirements. ### Held realms -When a realm's last member dies, the realm is held rather than removed. Its main -guild records the dead character in the same fields as a leaderless guild -(`dead leader`, `leaderless since`, `empty since`), menus and the public map show the -realm's leader as "Name (dead)", and the realm keeps its land, treasury, army and +When a realm's last member dies, the realm is held rather than removed. The step +that removes the last member also records the dead character on the realm's main +guild, in the same save, using the leaderless-guild fields (`dead leader`, +`leaderless since`, `empty since`). Menus and the public map show the realm's +leader as "Name (dead)", and the realm keeps its land, treasury, army and installations. While it is held: - the daily settlement charges no army or installation upkeep, shrinks no regiment, downgrades no installation, sheds no province over the cap and sells - no branch to cover a shortfall; other ledger flows carry on as usual; + no branch to cover a shortfall; +- it pays no overlord tax or tribute; trade, tariffs, loans and war reparations + carry on as usual; +- its outstanding invitations are cleared and nobody can join it with + `/faction join`; - no realm can declare war on it. If the dead character is revived, it rejoins the realm's main guild as its leader, on the revive event or at the next hourly check. That happens only while the realm -has no members and the character has joined no other realm. Staff can hand the -realm to someone else with `/faction forcejoin ` followed by +has no members and the character has joined no other realm; a failed save keeps +the realm held and the next hour tries again. Staff can hand the realm to someone +else with `/faction forcejoin ` followed by `/faction forceleader `; filling the seat ends the hold. -The hourly check closes a held realm once it has had no members for 7 days, -counted from the death. A member stops the clock and leaving starts it again. -Closing removes the realm and its file and every other realm's relation with it; -its ledger treasury remains. If any part fails, the rest is tried again every hour, -and a new realm that took the same name in the meantime is left alone. From the end -of the week until the closure is finished, estate lookups for the realm are -unavailable, so estates wait for it rather than paying into a realm about to close. +The hourly check closes a held realm once it has had no members for 7 days and is +not at war. The week starts when SimpleFactions records the death, which for a +death it missed is the reconcile that found it. A member stops the clock and +leaving starts it again. Closing first removes every other realm's relation, +trade agreement and treaty with the realm and saves those realms, then removes +the realm and its file; its ledger treasury remains. A failed step is tried again +every hour, and a new realm that took the same name in the meantime is left alone. +From the end of the week until the closure is finished, estate lookups for the +realm are unavailable, so estates wait rather than paying into a realm about to +close. + +An older SimpleFactions jar drops the held fields on its next save and leaves the +realm empty with no leader and no closing date. Back up `Data/` before rolling back. ### Leaderless guilds From 98251b192cc31bd5f67c89070828dfd10ab0622d Mon Sep 17 00:00:00 2001 From: Ryan Barlow <7389646+ryanbarlow97@users.noreply.github.com> Date: Thu, 15 Oct 2026 13:03:29 +0000 Subject: [PATCH 3/5] docs: cover held realm vehicles, closing and late deaths Co-Authored-By: Claude Opus 5.5 --- projects/RPCharacters/docs/estates-and-wills.md | 3 ++- projects/SimpleFactions/docs/characters.md | 16 ++++++++++------ 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/projects/RPCharacters/docs/estates-and-wills.md b/projects/RPCharacters/docs/estates-and-wills.md index 5ca2670..bc872b7 100644 --- a/projects/RPCharacters/docs/estates-and-wills.md +++ b/projects/RPCharacters/docs/estates-and-wills.md @@ -40,7 +40,8 @@ A death with no living will heir and no guild would freeze, so it waits longer: realm's own (ruling) guild while the realm has no living leader waits the same time, heir or not: that is a realm whose last member died, which SimpleFactions holds for 7 days, or a vacant seat. If the realm still has no leader when that wait ends, the estate is postponed ("the realm has no leader") for up to one -more wait, so it passes once the held realm is taken on or closed. When such +more wait from that first postponement, so it passes once the held realm is taken on or closed, including +a death SimpleFactions only recorded later. When such an estate falls due, its due time moves out by the difference and the estate stays open, so a revive in that time still cancels it. The audit log records the move and the website shows the new date. Time on staff hold counts on top. `/estate decide --no-guild` is not held. Legacy deaths count from diff --git a/projects/SimpleFactions/docs/characters.md b/projects/SimpleFactions/docs/characters.md index 79e84d9..d960d1b 100644 --- a/projects/SimpleFactions/docs/characters.md +++ b/projects/SimpleFactions/docs/characters.md @@ -180,6 +180,8 @@ installations. While it is held: - the daily settlement charges no army or installation upkeep, shrinks no regiment, downgrades no installation, sheds no province over the cap and sells no branch to cover a shortfall; +- its pool and installation vehicles are charged no upkeep, take no new unpaid + day and no upkeep damage; an unpaid marker from before the death stays; - it pays no overlord tax or tribute; trade, tariffs, loans and war reparations carry on as usual; - its outstanding invitations are cleared and nobody can join it with @@ -188,17 +190,19 @@ installations. While it is held: If the dead character is revived, it rejoins the realm's main guild as its leader, on the revive event or at the next hourly check. That happens only while the realm -has no members and the character has joined no other realm; a failed save keeps -the realm held and the next hour tries again. Staff can hand the realm to someone +has no members, the character has joined no other realm and the closure has not +begun; a failed save keeps the realm held and the next hour tries again. Staff can hand the realm to someone else with `/faction forcejoin ` followed by `/faction forceleader `; filling the seat ends the hold. The hourly check closes a held realm once it has had no members for 7 days and is not at war. The week starts when SimpleFactions records the death, which for a -death it missed is the reconcile that found it. A member stops the clock and -leaving starts it again. Closing first removes every other realm's relation, -trade agreement and treaty with the realm and saves those realms, then removes -the realm and its file; its ledger treasury remains. A failed step is tried again +death it missed is the reconcile that found it. Letting a member in stops the clock at +once; the next hourly check after the realm is empty again starts a new week. +Closing first saves the realm with `closing since`, from when a revive no longer +gives it back; then it removes every other realm's relation, trade agreement and +treaty with the realm and saves those realms; then it removes the realm and its +file. Its ledger treasury remains. A failed step is tried again every hour, and a new realm that took the same name in the meantime is left alone. From the end of the week until the closure is finished, estate lookups for the realm are unavailable, so estates wait rather than paying into a realm about to From c8ae4c96c00de81514503a98bd1ca5ad2218a0cd Mon Sep 17 00:00:00 2001 From: Ryan Barlow <7389646+ryanbarlow97@users.noreply.github.com> Date: Thu, 15 Oct 2026 13:13:19 +0000 Subject: [PATCH 4/5] docs: estates wait while a realm is held; drop the RPCharacters wait change Co-Authored-By: Claude Opus 5.5 --- projects/RPCharacters/docs/estates-and-wills.md | 11 ++++------- projects/SimpleFactions/docs/characters.md | 9 ++++++--- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/projects/RPCharacters/docs/estates-and-wills.md b/projects/RPCharacters/docs/estates-and-wills.md index bc872b7..73b3261 100644 --- a/projects/RPCharacters/docs/estates-and-wills.md +++ b/projects/RPCharacters/docs/estates-and-wills.md @@ -36,12 +36,7 @@ The wait is `estates.wait-hours` in `config.yml`, 24 by default and read at star for rehearsals (`0.05` is three minutes). A death with no living will heir and no guild would freeze, so it waits longer: -`estates.guildless-wait-hours`, 168 (7 days) by default and never shorter than `wait-hours`. A death in a -realm's own (ruling) guild while the realm has no living leader waits the same time, heir or not: that is -a realm whose last member died, which SimpleFactions holds for 7 days, or a vacant seat. If the realm -still has no leader when that wait ends, the estate is postponed ("the realm has no leader") for up to one -more wait from that first postponement, so it passes once the held realm is taken on or closed, including -a death SimpleFactions only recorded later. When such +`estates.guildless-wait-hours`, 168 (7 days) by default and never shorter than `wait-hours`. When such an estate falls due, its due time moves out by the difference and the estate stays open, so a revive in that time still cancels it. The audit log records the move and the website shows the new date. Time on staff hold counts on top. `/estate decide --no-guild` is not held. Legacy deaths count from @@ -79,7 +74,9 @@ stations and the stored body. Some answers make the decision wait rather than guess, and it is tried again every minute: the dead character's or the heir's account cannot be read, SimpleFactions has not answered (or gave no answer -at all), or it cannot say whether the realm still exists. An estate whose lookup throws is logged and +at all), or it cannot say whether the realm still exists. SimpleFactions does not answer for a realm it +is holding after its last member died, so such an estate waits until the realm is taken on or closed, +and a revive cancels it. An estate whose lookup throws is logged and tried again; it never stops the other estates from being decided. RPCharacters and SimpleFactions start in a cycle, so decisions due at startup usually wait for SimpleFactions; they run again when SimpleFactions enables and when it fires its ready event. If SimpleFactions started late, Thievery has already made its lock pass, and the diff --git a/projects/SimpleFactions/docs/characters.md b/projects/SimpleFactions/docs/characters.md index d960d1b..34a28fa 100644 --- a/projects/SimpleFactions/docs/characters.md +++ b/projects/SimpleFactions/docs/characters.md @@ -204,9 +204,12 @@ gives it back; then it removes every other realm's relation, trade agreement and treaty with the realm and saves those realms; then it removes the realm and its file. Its ledger treasury remains. A failed step is tried again every hour, and a new realm that took the same name in the meantime is left alone. -From the end of the week until the closure is finished, estate lookups for the -realm are unavailable, so estates wait rather than paying into a realm about to -close. +Once a closure has begun it always finishes: staff `forcejoin` and `forceleader` +are refused for that realm. + +While the realm is held, and until its closure is finished, estate lookups for it +are unavailable, so RPCharacters postpones the estates of deaths in it. They pass +once staff take the realm on or it closes; a revive cancels the dead leader's. An older SimpleFactions jar drops the held fields on its next save and leaves the realm empty with no leader and no closing date. Back up `Data/` before rolling back. From 2884cfad97172be2778b46f64def84dd7077f393 Mon Sep 17 00:00:00 2001 From: Ryan Barlow <7389646+ryanbarlow97@users.noreply.github.com> Date: Thu, 15 Oct 2026 13:23:03 +0000 Subject: [PATCH 5/5] docs: held realms pay no company slot upkeep Co-Authored-By: Claude Opus 5.5 --- projects/SimpleFactions/docs/characters.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/SimpleFactions/docs/characters.md b/projects/SimpleFactions/docs/characters.md index 34a28fa..ddb63be 100644 --- a/projects/SimpleFactions/docs/characters.md +++ b/projects/SimpleFactions/docs/characters.md @@ -177,7 +177,8 @@ guild, in the same save, using the leaderless-guild fields (`dead leader`, leader as "Name (dead)", and the realm keeps its land, treasury, army and installations. While it is held: -- the daily settlement charges no army or installation upkeep, shrinks no +- the daily settlement charges no army upkeep (mercenary company slots + included) or installation upkeep, shrinks no regiment, downgrades no installation, sheds no province over the cap and sells no branch to cover a shortfall; - its pool and installation vehicles are charged no upkeep, take no new unpaid