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
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.
Goneorg.finos.legend.pure.m3.compiler.Compiler
Class org.finos.legend.pure.m3.compiler.Compiler, Module legend-pure-m3-core, What it does The top-level Pure compiler entry point
org.finos.legend.pure.m3.compiler declares nothing by this name.
PostProcessor is in org.finos.legend.pure.m3.compiler.postprocessing
Holds
Read Oct 2
Sub-pass Generic type traceability, Method GenericTypeTraceability.addTraceForFunctionDefinition(), What it does Records type-parameter usage chains for error reporting
GenericTypeTraceability has an addTraceForFunctionDefinition method
Holds
Read Oct 2
**Entry points:** Validator.validate(), sub-validators in org.finos.legend.pure.m3.compiler.validation
Validator is in org.finos.legend.pure.m3.compiler.validation
FunctionExecutionInterpreted is in legend-pure-runtime/legend-pure-runtime-java-engine-interpreted
Holds
Read Oct 2
The string 'Java compiled' is checked by PureTestBuilder.satisfiesConditions().
PureTestBuilder has a satisfiesConditions method
Holds
Read Oct 2
> **Both engines support incremental compilation.** > IncrementalCompiler lives in legend-pure-m3-core — the shared compiler layer — > and is used by both CompiledExecutionSupport and FunctionExecutionInterpreted.
IncrementalCompiler is in legend-pure-core/legend-pure-m3-core
Holds
Read Oct 2
> **Both engines support incremental compilation.** > IncrementalCompiler lives in legend-pure-m3-core — the shared compiler layer — > and is used by both CompiledExecutionSupport and FunctionExecutionInterpreted.
CompiledExecutionSupport depends on IncrementalCompiler
HoldsPR #1354 · Oct 2
Read Oct 2
> **Both engines support incremental compilation.** > IncrementalCompiler lives in legend-pure-m3-core — the shared compiler layer — > and is used by both CompiledExecutionSupport and FunctionExecutionInterpreted.
FunctionExecutionInterpreted depends on IncrementalCompiler
HoldsPR #1354 · Oct 2
Read Oct 2
**Java delta recompilation (compiled engine only):** CodeBlockDeltaCompiler wraps the changed Pure code as an anonymous function, runs it through IncrementalCompiler.IncrementalCompilerTransaction, and recompiles only the affected generated Java classes in-memory using javax.tools.
CodeBlockDeltaCompiler depends on IncrementalCompiler
Holds
Read Oct 2
Class TypeInference, Role Static utilities canProcessLambda , storeInferredTypeParametersInFunctionExpression , mapSpecToInstance
TypeInference has canProcessLambda
HoldsPR #1354 · Oct 2
Read Oct 2
Class TypeInference, Role Static utilities canProcessLambda , storeInferredTypeParametersInFunctionExpression , mapSpecToInstance
TypeInference has mapSpecToInstance
HoldsPR #1354 · Oct 2
Read Oct 2
TypeInference.mapSpecToInstanceSub matches declared parameter multiplicities against actual argument multiplicities and registers the mapping in TypeInferenceContext.
TypeInference has mapSpecToInstanceSub
HoldsPR #1354 · Oct 2
Read Oct 2
The JavaCodeGeneration and M3CoreInstanceGenerator classes walk the M3 CoreInstance graph and emit Java source text using string templates (not a formal template engine).
M3CoreInstanceGenerator depends on CoreInstance
Holds
Read Oct 2
Both are implemented once, in legend-pure-m4: DateFunctions.dateDifference (delegating to the package-private DateDiff) and the PureDate.addX family.
DateFunctions is in legend-pure-core/legend-pure-m4
Holds
Read Oct 2
Both are implemented once, in legend-pure-m4: DateFunctions.dateDifference (delegating to the package-private DateDiff) and the PureDate.addX family.
PureDate is in legend-pure-core/legend-pure-m4
Holds
Read Oct 2
DateFunctions.dateDifference (delegating to the package-private DateDiff) and the PureDate.addX family.
DateFunctions has dateDifference
Holds
Read Oct 2
Both engines call straight into them, CoreHelper.dateDiff in the compiled engine and the DateDiff and AdjustDate natives in the interpreted engine, so the two engines cannot disagree.
CoreHelper has dateDiff
Holds
Read Oct 2
One method does the work, DateFormat.format in legend-pure-m4, and everything routes through it.
DateFormat has a format method, and DateFormat is in legend-pure-core/legend-pure-m4
Holds
Read Oct 2
One method does the work, DateFormat.format in legend-pure-m4, and everything routes through it. PureDate.format(String) delegates to it, and the Pure native reaches it from both engines by carving the %t{...} payload out of the larger format string.
PureDate depends on DateFormat
HoldsPR #1354 · Oct 2
Read Oct 2
PureDate.format(String) delegates to it, and the Pure native reaches it from both engines by carving the %t{...} payload out of the larger format string.
PureDate has a format method
Holds
Read Oct 2
DateFormatPattern.pattern() writes the modern spelling and never the repetition form, which makes reading a format string and writing it back the mechanical half of a migration.
DateFormatPattern has a pattern method
Holds
Read Oct 2
FormatTools.validate checks a format string against the specifier grammar the two engines implement, and FormatValidator calls it from FunctionExpressionValidator wherever parameter 0 of format is a literal.
FormatTools has validate, and FormatValidator depends on FormatTools
Holds
Read Oct 2
StrictTimeFormat is now visibly a second implementation of an overlapping language, with the sub-second rule this change replaced. It has no Pure surface, so nothing reaches it except PureStrictTime.format(String) from Java, and it was deliberately left alone.
PureStrictTime depends on StrictTimeFormat
HoldsPR #1354 · Oct 2
Read Oct 2
It has no Pure surface, so nothing reaches it except PureStrictTime.format(String) from Java, and it was deliberately left alone.
PureStrictTime has a format method
Holds
Read Oct 2
Class org.finos.legend.pure.runtime.java.interpreted.ExecutionSupport, Module legend-pure-runtime-java-engine-interpreted, What it does The interpreted-mode execution entry point
ExecutionSupport is in legend-pure-runtime/legend-pure-runtime-java-engine-interpreted
Holds
Read Oct 2
**DependencyResolutionScope** — an enum modelling the five dependency scopes (compile, compile+runtime, runtime, runtime+system, test) with their corresponding ScopeDependencyFilter instances.
RelationMappingParser is in legend-pure-dsl/legend-pure-dsl-mapping/legend-pure-m2-dsl-mapping-grammar
Holds
Read Oct 2
layout shared with string literals in org.finos.legend.pure.m4.serialization.grammar.MultilineTextLayout;
MultilineTextLayout is in org.finos.legend.pure.m4.serialization.grammar
Holds
Read Oct 2
attachment in AntlrContextToM3CoreInstance.taggedValues(...).
AntlrContextToM3CoreInstance has a taggedValues method
Holds
Read Oct 2
Given the raw text between the delimiters, the parser applies these steps in order (AntlrContextToM3CoreInstance.processMultilineString):
AntlrContextToM3CoreInstance has processMultilineString
Holds
Read Oct 2
It then fails in RelationalGraphBuilder.visitTaggedValueNew, which reads ctx.STRING(0) unconditionally;
RelationalGraphBuilder has visitTaggedValueNew
Holds
Read Oct 2
Packaging mirrors legend-pure-lsp-server: jar with mainClass manifest (org.finos.legend.pure.lsp.mcp.LegendPureMcpServer) plus maven-dependency-plugincopy-dependencies into target/dependency.
LegendPureMcpServer is in org.finos.legend.pure.lsp.mcp
Holds
Read Oct 2
Exposes list() and call(name, args).
PureToolRegistry has a list method
Holds
Read Oct 2
Exposes list() and call(name, args).
PureToolRegistry has a call method
Holds
Read Oct 2
Seeded at startup from RepositoryScanner.getMappings() with a content hash per sourceId.
WorkspaceSync depends on RepositoryScanner
Holds
Read Oct 2
On demand (sync()), rescans the workspace roots for .pure files, compares hashes, and produces List<LegendPureSession.FileChange> covering modified, new, and deleted files;
WorkspaceSync depends on LegendPureSession
Holds
Read Oct 2
The debug runtime uses LegendDebugFunctionExecution, an LSP-local subclass of FunctionExecutionInterpreted.
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.