Docs & rules
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
2 stale names in these docs.
masterfec205eLast read Oct 2
Once installed, Striff checks every pull request.
Stale names in these docs2
Each sentence below has a stale name: 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.
- Gone
ReduceFunctionImpl.reduce((ReduceFunctionImpl<WordCountPair>) (acc, item) -> {
The repository once had
mantis-runtime/src/main/java/io/mantisrx/runtime/core/functions/ReduceFunctionImpl.java. It doesn't now. Closest names there:ReduceFunction,SimpleReduceFunction. - Gone
ReduceFunctionImpl.reduce((ReduceFunctionImpl<WordCountPair>) (acc, item) -> {
The repository once had
mantis-runtime/src/main/java/io/mantisrx/runtime/core/functions/ReduceFunctionImpl.java. It doesn't now. Closest names there:ReduceFunction,SimpleReduceFunction.
Netflix/mantis — documented rules
60 of 60 rules, printed October 14, 2026.
| The sentence in your docs | |||
|---|---|---|---|
| Read Oct 2 | ResourceClusterActor became a thin router: it now creates child actors for ReservationRegistryActor, ExecutorStateManagerActor, and AssignmentHandlerActor and forwards reservation messages and lifecycle updates to them (TaskExecutorRegistration, heartbeats, disable/enable, etc.). | ResourceClusterActor depends on ExecutorStateManagerActor | Holds |
| Read Oct 2 | AssignmentHandlerActor now handles the RPC-heavy TaskExecutorAssignmentRequest lifecycle, reusing TaskExecutorGateway futures, enforcing retries, and reporting failures back to ResourceClusterActor so the queue can decide whether to requeue a reservation or propagate the failure downstream. | AssignmentHandlerActor depends on TaskExecutorGateway | Holds |
| Read Oct 2 | ResourceClusterActor handles this by querying the registry for pending reservations, translating them into PendingReservationInfo, and forwarding them to the executor state manager before replying to the scaler. | ResourceClusterActor depends on PendingReservationInfo | Holds |
| Read Oct 2 | the default scheduler factory implementation forwards that call to ResourceClustersAkkaImpl, which relays MarkReady.INSTANCE to every ResourceClusterActor. | ResourceClustersAkkaImpl depends on MarkReady | Holds |
| Read Oct 2 | ResourceCluster interface gained upsertReservation, cancelReservation, and markRegistryReady defaults so clients can interact with reservations without leaking actor internals. | ResourceCluster has upsertReservation | Holds |
ResourceCluster has cancelReservation | Holds | ||
ResourceCluster has markRegistryReady | Holds | ||
| Read Oct 2 | ResourceClusterActor->>ExecutorStateManager: findBestFit(...) | ResourceClusterActor depends on ExecutorStateManager | Holds |
| Read Oct 2 | Name openSuccessCount, Type Counter, Description Number of times a file was successfully opened | WriterMetrics has openSuccessCount | Holds |
| Read Oct 2 | Name openFailureCount, Type Counter, Description Number of times a file failed to open | WriterMetrics has openFailureCount | Holds |
| Read Oct 2 | Name writeSuccessCount, Type Counter, Description Number of times an Iceberg Record was successfully written to a file | WriterMetrics has writeSuccessCount | Holds |
| Read Oct 2 | Name writeFailureCount, Type Counter, Description Number of times an Iceberg Record failed to be written to a file | WriterMetrics has writeFailureCount | Holds |
| Read Oct 2 | Name batchSuccessCount, Type Counter, Description Number of times a file was successfully flushed to produce a DataFile | WriterMetrics has batchSuccessCount | Holds |
| Read Oct 2 | Name batchFailureCount, Type Counter, Description Number of times a file failed to flush | WriterMetrics has batchFailureCount | Holds |
| Read Oct 2 | Name batchSize, Type Gauge, Description Number of Iceberg Records per writer flush as described within a DataFile | WriterMetrics has batchSize | Holds |
| Read Oct 2 | Name batchSizeBytes, Type Gauge, Description Cumulative size of Iceberg Records from a writer flush | WriterMetrics has batchSizeBytes | Holds |
| Read Oct 2 | Name invocationCount, Type Counter, Description Number of times a commit was invoked | CommitterMetrics has invocationCount | Holds |
| Read Oct 2 | Name commitSuccessCount, Type Counter, Description Number of times a commit was successful | CommitterMetrics has commitSuccessCount | Holds |
| Read Oct 2 | Name commitFailureCount, Type Counter, Description Number of times a commit failed | CommitterMetrics has commitFailureCount | Holds |
| Read Oct 2 | Name commitLatencyMsec, Type Gauge, Description Time it took to perform the most recent commit | CommitterMetrics has commitLatencyMsec | Holds |
| Read Oct 2 | Name commitBatchSize, Type Gauge, Description Cumulative size of DataFile s from a commit | CommitterMetrics has commitBatchSize | Holds |
| Read Oct 2 | The GroupByStage implements ToGroupComputation<RequestEvent, String, RequestEvent> which tells Mantis that the call method will be returning MantisGroup<String, RequestEvent> which represents a group key and the data. | GroupByStage implements ToGroupComputation | Holds |
GroupByStage has a call method | Holds | ||
GroupByStage depends on MantisGroup | Holds | ||
| Read Oct 2 | Notice how we still group by MantisGroup::getKeyValue. | MantisGroup has getKeyValue | Holds |
| Read Oct 2 | We can see in the code below the stream is windowed for five seconds, then we flatmap a reduce over the window and invoke the RequestAggregationAccumulator#generateReport() method on the reduced value. | RequestAggregationAccumulator has a generateReport method | Holds |
| Read Oct 2 | Our TwitterSource must implement io.mantisrx.runtime.source.Source which requires us to implement call and optionally init. | TwitterSource implements Source | Holds |
TwitterSource has call | Holds | ||
TwitterSource has init | Holds | ||
| Read Oct 2 | MantisJobProvider#getJobInstance() provides the runtime with an entry point to your job's code. | MantisJobProvider has a getJobInstance method | Holds |
| Read Oct 2 | Pass this method a Lifecycle object, that is to say, an object that implements the following methods: startup() — initialize arbitrary application configs, perform dependency injection, and any long running or shared service libraries. | Lifecycle has a startup method | Holds |
| Read Oct 2 | of this class MantisStream ⟶, this method source() ⟶, returns an object of this class MantisStream | MantisStream has a source method | Holds |
| Read Oct 2 | of this class MantisStream ⟶, this method sink() ⟶, returns an object of this class MantisStream | MantisStream has a sink method | Holds |
| Read Oct 2 | of this class MantisStream ⟶, this method map, flatMap, ⟶, returns an object of this class MantisStream | MantisStream has a map method | Holds |
MantisStream has a flatMap method | Holds | ||
| Read Oct 2 | of this class MantisStream ⟶, this method keyBy() ⟶, returns an object of this class KeyedMantisStream | MantisStream has a keyBy method | Holds |
| Read Oct 2 | of this class KeyedMantisStream ⟶, this method map, window, ⟶, returns an object of this class KeyedMantisStream | KeyedMantisStream has a map method | Holds |
KeyedMantisStream has a window method | Holds | ||
| Read Oct 2 | of this class KeyedMantisStream ⟶, this method reduce ⟶, returns an object of this class MantisStream | KeyedMantisStream has a reduce method | Holds |
| Read Oct 2 | of this class MantisJob ⟶, this method source() ⟶, returns an object of this class SourceHolder | MantisJob has a source method | Holds |
| Read Oct 2 | of this class SourceHolder ⟶, this method stage() ⟶, returns an object of this class Stages | SourceHolder has a stage method | Holds |
| Read Oct 2 | shutdown() — gracefully close connections, shut down long running or shared service libraries, and general process cleanup. | Lifecycle has a shutdown method | Holds |
| Read Oct 2 | getServiceLocator() — returns a ServiceLocator that implements the service(key) method. | Lifecycle has a getServiceLocator method | Holds |
| Read Oct 2 | <!-- A Validator has a description, available via its getDescription() method, and a validation function, available via its getValidator() method. | Validator has a getDescription method | Holds |
Validator has a getValidator method | Holds | ||
| Read Oct 2 | <code>Validators.range(<var>start</var>, <var>end</var>)</code> — will reject as invalid Parameter values that do not lie between the indicated start and end numerical values (where start and end themselves are valid Parameter values) | Validators has a range method | Holds |
| Read Oct 2 | Validators.notNullOrEmpty() — will reject empty strings or null values | Validators has a notNullOrEmpty method | Holds |
| Read Oct 2 | Validators.alwaysPass() — will not reject any Parameter values as invalid | Validators has an alwaysPass method | Holds |
| Read Oct 2 | Here is an example in a source which implements the Source interface to consume data from Kafka. | KafkaSource implements Source | Holds |
| Read Oct 2 | instead, Mantis will create and configure a JobMasterService. This service creates a subscription to worker metrics via the WorkerMetricHandler and a MetricsClient which receives metrics over HTTP via [SSE] and sends them over to the JobAutoScaler. | JobMasterService depends on WorkerMetricHandler | Holds |
JobMasterService depends on MetricsClient | Holds | ||
| Read Oct 2 | KeyedMantisStream —— It's keyed companion, that's used for streams partitioned by a key. In addition, it has window and reduce. | KeyedMantisStream has window | Holds |
KeyedMantisStream has reduce | Holds | ||
| Read Oct 2 | MantisStream —— primary interface for building data pipeline that has filter, map, flatMap, keyBy, materialize. | MantisStream has filter | Holds |
MantisStream has map | Holds | ||
MantisStream has flatMap | Holds | ||
MantisStream has keyBy | Holds | ||
MantisStream has materialize | Holds | ||
| Read Oct 2 | public interface MapFunction<IN, OUT> extends MantisFunction { OUT apply(IN in); } `` | MapFunction extends MantisFunction | Holds |
| Read Oct 2 | public interface SimpleReduceFunction<IN> extends ReduceFunction<IN, IN> { Object EMPTY = new Object(); | SimpleReduceFunction extends ReduceFunction | Holds |
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.