Examiner verified API

Complete reference for the deep-inspection and state-tracking engine.

Core Inspection

MemberReturnsBehaviorDescription
Examinestring, ctx.noyieldMain entry point for full reports and context creation.
Dispatchvoid.noyieldConsolidates identical reports to prevent console flooding.
ExamineWithLoggerstring, ctx.noyieldWraps Examine and routes output to a logger object.
Reportstring.noyieldInternal engine that formats the text report summary.
pipevoid.noyieldAdds a middleware function to modify reports.
ReportToJSONstring?.noyieldUses HttpService to encode reports for external use.

Intelligent Dispatching

The Examiner automatically handles "noise" by batching identical reports that occur within a 0.1s window.

-- If 50 parts call this at once, only ONE report prints with a (x50) badge.
Examiner.Dispatch(myReport)

Snapshots & Diffing

MemberReturnsBehaviorDescription
Snapshotnumber.noyieldCaptures a deep-copy of a table; returns a unique ID.
DiffSnapshotstable?.noyieldCompares a snapshot ID against a live table state.

Examine Context (Ctx Object)

Returned as the second value from Examine().

MethodReturnsDescription
:toJSON()string?Encodes the report linked to this context.
:snapshot()numberSnapshots the original target of this examination.
:retry(fn)InformerRuns a new function wrapped in an Informer.

Informer Class

MethodReturnsBehaviorDescription
InformerInformeryieldsCreates a protected async wrapper for operations.
:catch(fn)self.noyieldExecutes if the informer's function fails.
:finally(fn)self.noyieldRuns after the operation regardless of outcome.
:Retry()InformeryieldsRestarts the informer logic.

Require Watchers (Manual Instrumentation)

MemberReturnsBehaviorDescription
RecordRequirevoid.noyieldNotifies watchers that a module was required.
WatchRequirevoid.noyieldSubscribes a callback to module require events.

Reactive Tools

MemberReturnsBehaviorDescription
ObserveVariablevoidyieldsPolls a _G variable for changes.
UnobserveVariablevoid.noyieldKills the polling loop for a variable.
Injectboolean.noyieldForcefully inserts a value into a nested table path.
BindPartToLoggervoid.noyieldChanges a Part's color based on Logger signals.
Signaltable.noyieldInternal pub/sub system for Examiner events.

World & Logic Safety

MemberReturnsBehaviorDescription
Protectboolean.noyieldValidates table types against a schema.
TrackInstancevoidyieldsReports property changes on physical Parts.
Adornvoid.noyieldCreates 3D visual indicators for errors in-game.

Advanced Tools

MemberReturnsBehaviorDescription
SnapshotHistorynumber.noyieldRolling buffer of last 10 states for time travel diffs.
DiffHistorytable?.noyieldDiff against a historical snapshot index.
InterceptRemotevoid.noyieldWraps RemoteEvents to log traffic size/frequency and flag oversized payloads.
WatchLeakvoidyieldsMonitors table growth over time for potential memory leaks.
WatchInstanceLifecyclevoid.noyieldAlerts on destroyed instances with lingering references.
HeatmapAdornvoid.noyieldColors parts based on error heat (red=hot, blue=cold).
MapDependenciesvoid.noyieldAnalyzes require data for dependency graphs.
ConditionalBreakpointvoidyieldsPauses execution on condition met.
SanitizeEnvironmentvoid.noyieldRemoves stale variables from environments.
RegressionTestvoid.noyieldRuns functions and checks against expected snapshots.
MonitorCollisionsvoid.noyieldTracks touch density on parts.
SyncToWebvoidyieldsBatches JSON reports and posts to a URL.
LockTablevoid.noyieldLocks tables to prevent modifications.
GetInputBuffertable.noyieldReturns recorded player inputs (client-side).
SearchTrackedtable.noyieldSearches snapshot data for values/keys.
StrictEnumsvoid.noyieldLock tables to only allow specific string values.
AntiGlobalPollutionvoidyieldsWatch _G and flag non-prefixed variables.
RecursiveLockdownvoid.noyieldDeeply freeze nested configuration trees.
ValueClampingSentinelvoidyieldsWatch numbers and report out-of-range values.
NullPointerMockingvoid.noyieldReturn dummy objects instead of nil.
TypeSwitchLoggervoidyieldsLog type changes of variables.
ConstantGuardvoid.noyieldProtect specific keys in tables.
ArrayOnlyEnforcementvoidyieldsEnsure tables remain arrays.
CircularReferenceDetectorvoid.noyieldFlag circular references in tables.
JSONSchemaValidatorboolean.noyieldValidate tables against JSON schema.
AutoDocumentationGeneratorvoid.noyieldBuild data maps from snapshots.
ModuleDependencyGraphvoid.noyieldMap module dependencies.
CrossServerLogSyncvoid.noyieldSync logs across servers.
EnvironmentComparervoid.noyieldDiff server vs client states.
ExecutionTimerfunction.noyieldWrap functions to log execution time.
TodoCommentExtractorvoid.noyieldScan scripts for TODO comments.
HeartbeatBudgetingvoid.noyieldWarn on excessive frame time usage.
TableGrowthRatevoidyieldsLog table growth per second.
RemoteRateLimitervoid.noyieldFlag high-frequency remote calls.
MemorySnapshotDiffingvoidyieldsDiff memory growth over time.
ConnectionLeakervoidyieldsDetect signal leaks.
HeavyLoopDetectorvoidyieldsTrack long-running loops.
InstanceCountTrackervoidyieldsSnapshot workspace instance counts.
DebrisSentinelvoid.noyieldWatch debris service.
GarbageCollectionPingvoidyieldsTrack weak table clearing.
InputHistoryPlaybackvoid.noyieldRecord input history.
APIVersionCheckervoid.noyieldCheck module versions.
ServerAgeWarningvoidyieldsAlert on long-running servers.
PlayerPingSnapshotvoid.noyieldRecord player ping on dispatch.
DataStoreBudgetTrackervoid.noyieldWarn on DataStore limits.
ThirdPartyAPIGuardvoid.noyieldLog API errors.
AssetLoadObservervoidyieldsReport slow asset loads.
CrossGameTeleportLogvoid.noyieldRecord teleport data.
ServerRegionLoggervoid.noyieldGroup errors by region.
StateMachineValidatorvoid.noyieldValidate state transitions.
UndoRedoBridgevoid.noyieldUse snapshots for undo/redo.
DependencyInjectionGuardvoid.noyieldEnsure required services.
EventChainTracervoid.noyieldLog event breadcrumbs.
MetatableSpyvoid.noyieldReport metatable access.
RecursiveTypeCheckervoid.noyieldDeep type checking.
DeltaTimeMonitorvoid.noyieldTrack frame rate consistency.
PriorityDispatchvoid.noyieldSort logs by priority.
AutomaticFixervoid.noyieldAuto-inject defaults.
LogicBlackBoxvoidyieldsSnapshot on crash.
ScriptEnvironmentDiffvoid.noyieldCheck environment tampering.
TheFinalReportvoid.noyieldSummary on shutdown.
GuardGuardyieldsWrap functions with catch/default/finally chaining.
MetatableIntegritySentinelvoidyieldsCheck if metatables are tampered.
CompareCompare.noyieldFluent comparison with logging.
useTrackvoidyieldsWatch table value changes, run side effects.
AutomatedBreadcrumbsvoid.noyieldTrack calls for error context.
SchemaRecoverytable.noyieldFix invalid tables with defaults.
TableDeepEqualboolean.noyieldDeep equality check for tables.
NilProtectionvoid.noyieldEnable/disable nil protection mode.
PermissionGuardvoid.noyieldEnable/disable security permission checks.
LintingEnforcervoid.noyieldEnable/disable strict type checking.
MetatableLockvoid.noyieldEnable/disable metatable purity monitoring.
CatchOrRetryvoidyieldsRuns fn with retries on failure, snapshots state.
SucceedUntilvoidyieldsRuns fn while condition is true, catches on failure.
SearchFortable.noyieldSearches scope for objects matching query.
ValidateMetatableboolean.noyieldChecks metatable against template.
SyncvoidyieldsKeeps two tables in sync.
Expectboolean.noyieldRuntime type check for value.
TraceAttributevoid.noyieldMonitors attribute changes with patterns.
ExpectReturnfunction.noyieldWraps function to validate return type.
InterceptNilvoid.noyieldWraps target to return fallback on nil access.
GateGate.noyieldRuns successFn only if condition is true.
MemoizeWithVerifyfunction.noyieldCaches result but verifies periodically.
PollUntilvoidyieldsRuns fn until condition is met or timeout.
ValidateMetatableboolean.noyieldChecks for shadowing in metatable.
MatchMatch.noyieldPattern matching with catch-all.
ModifyModify.noyieldFluent state editor with checks.
WaitUntilWaitUntilyieldsSmart wait with timeout and snapshot.
ObserveReturnfunction.noyieldWraps function to log returns.
WaitAndComparevoidyieldsWaits for value to match expected.
ModifyPropertyvoid.noyieldSafely sets instance properties.
Limitvoid.noyieldSets guardrails on tables/instances to cap values and dispatch warnings.
Extendvoid.noyieldRegisters custom functions with Examiner's reporting.
Throttlefunction.noyieldLimits function calls per second, blocks excess.
SchemaAttributefunction.noyieldEnforces type annotations from Roblox Attributes.
MustReturnfunction.noyieldWraps function to ensure return within deadline.

TableDeepEqual

Performs a deep equality check between two tables, recursively comparing all nested values.

NilProtection

Toggles nil protection mode, which returns dummy objects instead of failing on nil access.

PermissionGuard

Enables checks for RBXScriptSecurity restricted properties to prevent crashes.

LintingEnforcer

Verifies that function arguments match intended Luau types when enabled.

MetatableLock

Alerts if a script's metatable has been modified at runtime when purity check is enabled.

CatchOrRetry

Runs a function with automatic retries on failure, snapshots state, and dispatches fatal reports when retry limit is exceeded.

SucceedUntil

Continuously runs a function while a condition remains true, catching state and dispatching diagnostics when the condition fails.

SearchFor

Searches a scope for instances matching a query, with optional auto-sanitization of illegal objects.

ValidateMetatable

Validates an object's metatable against a template, catching any drift or unauthorized modifications.

Sync

Maintains synchronization between two tables, catching and reporting sync errors.

Expect

Performs runtime type checking on values, dispatching errors for type mismatches.

TraceAttribute

Monitors Roblox instance attributes for changes, enforcing strict value patterns.

ExpectReturn

Wraps a function to validate its return type, dispatching errors for mismatches.

InterceptNil

Wraps a table or instance to return a fallback value on nil access, preventing crashes.

Gate

Logic bouncer that runs a function only if a condition is met, with else handling.

MemoizeWithVerify

Caches function results for performance but verifies periodically for data drift.

PollUntil

Runs a function repeatedly until a condition is met or timeout occurs.

ValidateMetatable

Checks for metatable shadowing where table keys override metatable entries.

Match

Pattern matching system with catch-all handler for resilient logic.

Modify

Fluent state editor that applies changes only if all checks pass.

WaitUntil

Smart wait with timeout, snapshot on failure, and promise-like chaining.

ObserveReturn

Wraps functions to log their return values for debugging and history.

WaitAndCompare

Waits for a specific value to match an expected state.

ModifyProperty

Safely sets Roblox instance properties with error handling.

Limit

Sets guardrails on tables or instances. Intercepts assignments and caps values at min/max, dispatches warnings, and takes snapshots on violations.

Extend

Allows registration of custom debug logic into Examiner, automatically inheriting reporting and snapshotting capabilities.

Throttle

Limits how many times a function can be called per second. Blocks excess calls, dispatches warnings, and snapshots the calling context.

SchemaAttribute

Reads Roblox Attributes for type definitions (e.g., TypeAnnotation="Number") and enforces them on attribute changes, reverting invalid types.

MustReturn

Wraps a function to ensure it returns within a timeout. Catches infinite loops or stuck waits, dispatches errors, and snapshots arguments.

Example: Usage Pattern

local Examiner = require(path.to.Examiner)

-- Track state over time
local snapshotId = Examiner.Snapshot(playerData)

-- Later, check for mutations
local report, ctx = Examiner.Examine(playerData, nil, { snapshotId = snapshotId })
print(report)

-- Export to external monitoring
local payload = ctx:toJSON()