Gate: plan-source-declared
The source the plan names has the adapter’s plan in needs:.
| Property | Value |
|---|---|
| Checker | plan-source-declared |
| Confronts | plan |
| Blocking by default — new project | yes |
| Blocking by default — existing project | no — informs |
How it measures
Section titled “How it measures”Confronts a plan against the dependency it wrote in PROSE and never declared in needs::
the plan names a source — who is going to build the adapter for it?
The real case, measured in the reference app. Plan 0008 (Frontend/Web) said Fonte: **GA4**, and it is the architectural exception of the project, and declared only
needs: plans/0005-home-e-indice.md. The GA4 adapter came from plan 0002, and that
dependency existed only in the prose.
What happened: 0002 was revised (PLTFR-R0002) and Ga4Adapter was REMOVED, with a
correct argument — no document of the project sustained it. 0008 stayed intact,
depending on a source nobody was going to build any more. Both plans remained internally
coherent, and the contradiction only surfaced months later, when 0008 was started.
Why no gate caught it, and what this one separates from its neighbours.
dependency-honored confronts the needs: that is DECLARED; here the defect is the
needs: that is MISSING. plan-seeds-valid looks at what the plan promises to CREATE,
not at what it promises to CONSUME. This is the version, between PLANS, of step 5 of the
review guide (“the prose ages”): nobody touched 0008, and it became wrong anyway —
because another document changed.
What it measures. A source line (Fonte:/Fontes:) names one or more sources in
bold. For each one, the gate looks for the corresponding adapter among the seeds of ALL
plans. If the adapter exists in another plan and this one does not declare it in
needs:, it fails.
Declaring it
Section titled “Declaring it”gates: - name: plan-source-declared on: [plan] check: plan-source-declared