Still eagerly awaiting Astra to pop up on my Codex model list.
Sol has become very good at following what I am actually asking for. Its first rebuild of Sylvia was flawed. It still needs some work, but the implementation has improved significantly and is getting into a good state now.
Which does leave me wondering how Astra is going to one-up it on this particular project.
The rebuild is getting there
Most of the last week has been live testing, finding something obviously wrong, and following it back into the implementation.
The first problem was the New Campaign party selector. I had reusable characters saved locally, but Sylvia only showed the bundled example character. The characters were there. The selector just did not consider owner-created characters eligible for the chosen Ruleset and Campaign Setting.
Sol fixed that. Compatible Player Characters and Companions now appear in the campaign interview, stay selected after a restart, return properly from a Builder creation subflow, and make it into the playable campaign.
I also made a decision about where party requirements belong. The Ruleset sets the outer mechanical limits. The Campaign Plan decides the starting party within those limits: it can require a particular Player Character, include required Companions, or allow the player to add compatible custom ones.
Sol implemented that as a proper Starting Party Policy instead of leaving Sylvia's core with a hard-coded assumption that every game has one hero and up to five companions.
The GM was reading the Plan too literally
The more annoying problem showed up when I started another campaign.
The opening was not good. A campaign I had previously run in Hermes with DSV4 had much better pacing, while Sylvia's newer implementation started treating the Campaign Plan too much like a list of events that were already underway.
The Campaign Plan is a story the GM wants to naturally lead the players through. It has prepared situations, future reveals, leads and possible consequences. The GM should use those when they fit what the players are doing. Having an encounter near the top of the Plan does not mean that encounter has already started.
I decided the implementation needed a much firmer separation between the Setting, the Plan, the active campaign and the Ruleset Engine. Sol has now made that separation much clearer in both the architecture and the code.
The Campaign Setting is the reusable world. The Campaign Plan is the GM's private preparation. Campaign State is what is true in this specific campaign now. Campaign Chronology records what happened, and Plan Progress tracks which prepared material has been introduced, deferred or resolved.
The Ruleset Engine owns deterministic procedures and mechanical values inside Campaign State. It is not a separate world-state database. That distinction matters because the active Campaign State is also Sylvia's long-term memory. If a door was broken three sessions ago, Sylvia should read that from the current state instead of falling back to the Setting description of an intact door.
Sol changed how a GM response is committed
Sol has also changed the GM response loop quite a bit.
The GM can read exact campaign material and use Ruleset tools, then finish the turn by submitting the player-facing narration and its Campaign File update together. Sylvia holds the narration until the state update succeeds.
If the state portion is rejected, the same GM can correct it without regenerating narration that was already fine. If the turn changed nothing worth keeping, the GM still explicitly reviews the Campaign File and says that nothing changed.
The early version of this was rough. It could lose the narration after a tool call, force the wrong tool sequence, or get stuck correcting a state update that should have been straightforward. Sol has fixed a lot of that over several passes. It is now much closer to the behaviour I wanted when I decided the narration and long-term memory should be handled by the same GM in one turn.
There is still a context problem. The GM needs to find the exact Setting fact, Plan preparation or current Campaign State it needs without Sylvia dumping every file into every request. Sol is working through that now. Prompt changes helped a bit, but the last investigation confirmed that a prompt by itself was not going to fix it.
Full Audit can actually be used for testing now
Full Audit records the exact model requests, tool lists and responses from a live test. It stays off during normal use and the records are kept in memory.
The testing instructions had somehow ended up saying that an agent must enable Full Audit, while also telling the agent not to inspect the records.
Very useful.
Sol fixed the rules around that. Asking an agent to test Sylvia now authorises Full Audit for that specific test. The agent enables it before the first model action, keeps it running for the test, and can inspect what Sylvia actually sent and received. The raw records still stay out of commits and public reports.
That means the next live test can inspect what actually happened instead of trying to work backwards from the final response.
The campaign opening is still not good enough, and the context retrieval work needs to prove itself in another live session. That is where Sol is up to now.
Still no Astra in my model list though. At this rate it is going to arrive after Sol has already fixed half the things I wanted to compare it on.