Skip to main content

CAP.L0.UNDETERMINED_CAPTURE — Capture could not conclude

  • Category: safety
  • Level: 0
  • Stability: stable
  • Suites: lint

The capture could not conclude for a migration, for a named reason that is not a static pre-scan flag — a file the scanner could not parse, a statement the canonicalization layer rejected, or (in shadow mode) a session that hit its own timeout. The migration carries a reason but no SQL, so the run checked nothing for it.

Without this finding such a migration would contribute nothing to the run and vanish from it — the silent green the tool forbids. It is reported three-valued as undetermined, never counted as clean. The specific reason is preserved on the finding (and in the run's per-reason counts); this rule id groups the capture layer's own undetermined outcomes as one addressable family.

This is distinct from a pre-scan flag: a migration the pre-scan flagged is reported through its individual CAP.PRESCAN.* hits, each located to a line, so it never also reports under this rule. CAP.L0.UNDETERMINED_CAPTURE is the reason without a hit — named, but not located to a line.

Flagged

public function up(): void
{
// A binding the substitution layer cannot represent, or a statement
// the canonicalization rejects, leaves the capture undetermined — the
// run could not check this migration, and says so rather than passing it.
DB::statement('create table t (c '.$unrepresentable.')');
}

Preferred

public function up(): void
{
Schema::create('users', function (Blueprint $table): void {
$table->id();
$table->string('email');
});
}