Docs & Rules

signumsoftware/frameworkGitHubLast refreshed Oct 3, 2026

This is a public, read-only report. Striff reads this repository's docs, turns each sentence that makes a claim about the code into a rule, and checks the rule against the code on the default branch. How this works

1+ names in these docs no longer match the code.

master1f6fd50listed 7h ago

Is this yours? Install to manage it

Once installed, Striff checks every pull request.

29
1
1 stale
1
1
22
4
4
13
11
11
2
5
5
6
6
25 docs, listed Oct 3
signumsoftware/frameworkOpen repository

Names these docs write that the code no longer has1

Each sentence below names a type the default branch doesn't declare, or declares somewhere else. Edit the doc so it matches the code, or bring the type back.

  • GoneCurrentDateSkill
    For time-related filters, first check the current date using CurrentDateSkill.

    The repository once held Extensions/Signum.Agent/Skills/CurrentDateSkill.cs. It doesn't now. Closest name there: CurrentDateInfo.

    View on GitHub

signumsoftware/framework — documented rules

29 of 29 rules, printed October 3, 2026.

The sentence in your docs
Read Oct 2
Values in a comparison are parsed using FilterValueConverter.TryParse, this means:
FilterValueConverter has TryParse
Holds
Read Oct 2
ThreadVariables are created using the ThreadVariable<T> static method.
Statics has a ThreadVariable method
Holds
Read Oct 2
CleanThreadContextAndAssert method asserts that all the thread variables have been cleaned, cleaning them and throwing and exception if not.
Statics has a CleanThreadContextAndAssert method
Holds
Read Oct 2
SessionVariable<T> can be set and get by accessing his Value property with no special ceremony (as opposed to ThreadVariable<T>, that are meant to be used in using statements).
SessionVariable has Value
Holds
Read Oct 2
Session variables also contain an optional ValueFactory property that will be called the first time the value is accessed to generate the initial value.
SessionVariable has ValueFactory
Holds
Read Oct 2
The actual meaning of 'session' depends on the object stored in SessionFactory static property, that has to be set just once at the very beginning of the application.
Statics has SessionFactory
Holds
Read Oct 2
**ScopedSessionFactory:** This session factory wraps any other session giving the user the ability to override the session in a block of code using ScopeSessionFactory.OverrideSession.
ScopeSessionFactory has OverrideSession
Holds
Read Oct 2
There are several types of QueryToken, such as ColumnToken, EntityPropertyToken, CountToken, and AggregateToken, all with a Parent property forming a chain.
ColumnToken has Parent
Holds
Read Oct 2
There are several types of QueryToken, such as ColumnToken, EntityPropertyToken, CountToken, and AggregateToken, all with a Parent property forming a chain.
EntityPropertyToken has Parent
Holds
Read Oct 2
There are several types of QueryToken, such as ColumnToken, EntityPropertyToken, CountToken, and AggregateToken, all with a Parent property forming a chain.
CountToken has Parent
Holds
Read Oct 2
There are several types of QueryToken, such as ColumnToken, EntityPropertyToken, CountToken, and AggregateToken, all with a Parent property forming a chain.
AggregateToken has Parent
Holds
Read Oct 2
Accessible in-memory using MList<T>.RowIdValue.OldIndex (old) and just IndexOf (live).
MList has IndexOf
Holds
Read Oct 2
In the last select, you can force a sub-expression to be evaluated in SQL using InSql extension method, defined in LinqHints.
LinqHints has an InSql method
Holds
Read Oct 2
SchemaBuilder is the class that takes your entities as an input and generates a Schema as an output.
SchemaBuilder depends on Schema
Holds
Read Oct 2
public class ObjectName : IEquatable<ObjectName> { public string Name { get; } public SchemaName Schema { get; } //Mandatory, default dbo
ObjectName has Name
Holds
Read Oct 2
public class ObjectName : IEquatable<ObjectName> { public string Name { get; } public SchemaName Schema { get; } //Mandatory, default dbo
ObjectName has Schema
Holds
Read Oct 2
public class ObjectName : IEquatable<ObjectName> { public string Name { get; } public SchemaName Schema { get; } //Mandatory, default dbo
ObjectName depends on SchemaName
Holds
Read Oct 2
public class SchemaName : IEquatable<SchemaName> { public string Name { get; } public DatabaseName Database { get; } //Optional
SchemaName has Name
Holds
Read Oct 2
public class SchemaName : IEquatable<SchemaName> { public string Name { get; } public DatabaseName Database { get; } //Optional
SchemaName has Database
Holds
Read Oct 2
public class SchemaName : IEquatable<SchemaName> { public string Name { get; } public DatabaseName Database { get; } //Optional
SchemaName depends on DatabaseName
Holds
Read Oct 2
public class DatabaseName : IEquatable<DatabaseName> { public string Name { get; } public ServerName Server { get; } //Optional
DatabaseName has Name
Holds
Read Oct 2
public class DatabaseName : IEquatable<DatabaseName> { public string Name { get; } public ServerName Server { get; } //Optional
DatabaseName has Server
Holds
Read Oct 2
public class DatabaseName : IEquatable<DatabaseName> { public string Name { get; } public ServerName Server { get; } //Optional
DatabaseName depends on ServerName
Holds
Read Oct 2
public class ServerName : IEquatable<ServerName> { public string Name { get; } public ServerName(string name) ; }
ServerName has Name
Holds
Read Oct 2
Even MList<T> and Lite<T> inherit from this Modifiable.
MList extends Modifiable
Holds
Read Oct 2
Basically Modifiable contains the property Modified of type ModifiedState.
Modifiable has Modified
Holds
Read Oct 2
Modifiable defines the PreSaving and PostRetriving virtual methods, that will be called just before saving an object and just after retrieving it.
Modifiable has a PreSaving method
Holds
Read Oct 2
Additionally, Entity also contains optional concurrency support using Ticks field that stores the current version of the entity.
Entity has a Ticks field
Holds
Read Oct 2
By using an interface inheriting from IEntity, instead of a class inheriting from Entity, implementers are free to inherit from the class they want.
Entity implements IEntity
Holds
29 rules from 6 docs

See these where the change is. The browser extension puts a pull request's doc findings, and a diagram of what it changed, on the GitHub page itself, so the code and what your docs say about it are side by side.