Skip to content

STD-VERIFY-001: DrupalWorks Verification Harvest & Runtime Contracts

Status: Approved Governing Standard
Authority: Thomas P. Scola Jr. — Verification Doctrine
Date: 2026-09-23
Bead: bc-9vir / bc-gajo


1. Verification Sequence Law

When establishing reusable validation capability, execution MUST strictly follow this 7-step sequence:

1. BUILD THE 5 REUSABLE VALIDATION CHECKS (Atomic Primitives)
2. MIGRATE THE END-TO-END FUNCTIONAL TEST
3. REWIRE mol-drupal-release-verify TO ORCHESTRATE THEM
4. ADD RECIPE VALIDATION CONTRACTS
5. PROVE ON THE CURRENT RIG (ContextControl)
6. PROVE ON A SECOND DRUPAL RIG (bluefly.io / amcs)
7. ONLY THEN DELETE SUPERSEDED scratch/ FILES

Rationale: Migrating the large runtime test first creates monolithic untestable scripts. The 5 checks are atomic reusable primitives that the E2E test and release formulas compose.


2. The Five Atomic Verification Checks

Located in DrupalWorks/checks/:

  1. Ghost Module / Stale Schema Integrity (ghost-schema.php): Modules removed from codebase but active in schema or core.extension.
  2. Views Handler Integrity (views-handler-integrity.php): Views referencing broken/uninstalled filter/field/sort plugins.
  3. Search API Backend / Tracker Integrity (search-api-integrity.php): Indexes referencing dead server backends or trackers.
  4. JSON:API Prefix / Routing Integrity (jsonapi-config-integrity.php): Prefix collisions, broken route derivers.
  5. Content Moderation / Workflow Filter Integrity (moderation-filter-integrity.php): Moderation states pointing to deleted workflow transitions.

3. Ownership Boundaries

DrupalWorks       ──► Owns Drupal verification checks & test suites.
Gas City          ──► Orchestrates durable execution & agent lifecycles.
BluCity-Packs     ──► Configures operational packs (NOT Drupal-specific PHP code).
ContextControl    ──► Discovery site & customer control surface.
Recipes           ──► Own their own post-apply validation contracts.

4. Verification Coverage Invariants

EXPECTED_SCOPE > 0 AND CHECKED_SCOPE = 0 => PASS_FORBIDDEN
PARTIAL_COVERAGE != PASS
CONFIG_PRESENT != RUNTIME_BEHAVIOR_CORRECT
Every verification run must report explicit scope, passed, failed, and skipped metrics.