Drupal Knowledge Index¶
Purpose. The single discovery entry point for any agent, Formula, Pack, Rig, or human doing Drupal work at Bluefly. It tells you which Drupal documents are authoritative, where normative rules live, where module and package ownership decisions live, where the Drupal AI architecture lives, where execution playbooks live, and where dated audits and evidence live. It points; it does not restate. If a rule is quoted here it is a pointer, and the linked file wins.
Current truth vs. historical evidence: everything under reference/, standards/, and Playbooks/ is current and maintained. Everything under ledger/ is dated observation and must be revalidated before it drives implementation.
Source specification for this index: products/Bluefly.io/bluefly-io-content-architecture-and-central-drupal-knowledge.md sections 24 through 30.
CURRENT_REFERENCE¶
Reference = what exists, what owns what, upstream and contrib relationships. Maintained; no raw audit dumps.
| Document | Answers |
|---|---|
| drupal-ai-architecture.md | Current Drupal baseline, recommended AI projects, contrib-first AI architecture, delivery workflow |
| module-ownership-matrix.md | Which contrib module owns which capability; disposition per evaluated module; last-verified date |
| bluefly-package-map.md | Which Bluefly-owned Drupal package is still justified, which shrinks, which is replaced or contributed upstream |
| capability-ownership-map.md | Capability to owner (core, contrib, config, recipe, Canvas, SDC, ECA, FlowDrop, Drupal AI, Tool API, MCP, Bluefly package) |
| ../../catalog/drupal-ai-ecosystem.md | Approval registry for the 345-module Drupal AI ecosystem; approval vocabulary; evaluation waves |
NORMATIVE_STANDARDS¶
Standards = how Bluefly builds Drupal. MUST / SHOULD / MUST NOT. One rule, one owner.
| Standard | Owns |
|---|---|
| ../../standards/core/contrib-first-policy.md | The contrib-first prime directive (cross-platform) |
| ../../standards/drupal/drupal-standard.md | Drupal AI enforcement rules; Tool API as capability authority (section 7); Bluefly platform stack (section 10); Drupal ownership ladder and module = capability / recipe = composition (section 12); module evaluation record (section 13) |
| ../../standards/drupal/drupal-site-building-standard.md | Fundamental layer model; default build order; Canvas as default composition; theme ownership; contrib first and extend-don't-fork (sections 25, 26); ownership boundary table |
| ../../standards/drupal/drupal-component-dry-standard.md | Entities are the data source; Views own collections; taxonomy is data; Media is an owned type; references beat copy/paste; DRY acceptance |
| ../../standards/drupal/how-we-build-in-drupal.md | Upstream-first decision tree; discovery protocol; recipes as assembly; configuration before code; ECA as workflow layer; Canvas as composition layer; Bluefly module ownership (section 30) |
| ../../standards/drupal/1password-drupal-secrets.md | Key + 1Password Connect; no secrets in config |
| ../../standards/drupal/ddev/ddev-standard.md | DDEV as the local Drupal runtime |
The in-place edits to these standards arising from the 2026-09-20 audit were applied on 2026-09-20 in the owning files: DRY sections 12, 23, 46, 48, 51, site-building sections 3, 4a, 16, drupal-standard sections 10 and 13 and how-we-build section 30.
PLAYBOOKS¶
Playbooks = repeatable execution procedures. Only mature procedures are promoted.
| Playbook | Use when |
|---|---|
| contrib-module-adoption.md | Adopting a contrib module or retiring a module or Bluefly package; produces a matrix record |
| migration-factory-drupal.md | Migrating content into a structured Drupal model with core Migrate and migrate_plus |
| DRUPAL-CONTRIB-FIRST-EVALUATION-PLAYBOOK.md | Scoring a candidate module (green / yellow / red rubric) |
| DRUPAL-RECIPE-FACTORY-PLAYBOOK.md | Authoring and testing a recipe |
| DRUPAL-CANVAS-CLI-PLAYBOOK.md | Canvas code-component pull / validate / push |
| DRUPAL-ECA-AUTOMATION-PLAYBOOK.md | Standard ECA patterns |
| DRUPAL-AI-CONTEXT-PLAYBOOK.md | ai_context (Context Control Center) integration contract |
| DRUPAL-FACTORY-CONVERGENCE-PLAYBOOK.md | Recipe-layer composition authority and publishing acceptance |
| DRUPAL-BEST-PRACTICES.md | Coding invariants when custom PHP is proven necessary |
| DRUPAL-GASCITY-CONVOY-PLAYBOOK.md | Running Drupal work as Gas City convoys and beads |
MODULE_OWNERSHIP¶
module-ownership-matrix.md — one record per evaluated contrib module: upstream status, D11 compatibility, security coverage, capabilities, current Bluefly use and owner, overlapping Bluefly packages, disposition, what it replaces, net ownership effect, evidence link. Dispositions use the vocabulary from the specification section 25: ADOPT, ADOPT_WHEN_NEEDED, EVALUATE, DO_NOT_USE, REPLACE_BLUEFLY, KEEP_BLUEFLY, CONTRIBUTE_UPSTREAM. Every record carries LAST_VERIFIED; a record older than the current implementation decision must be revalidated with contrib-module-adoption.md.
BLUEFLY_PACKAGE_MAP¶
bluefly-package-map.md — every Bluefly-owned Drupal package named in the 2026-09-20 audit (contrib-ready, private, themes) with purpose, upstream owner if any, Bluefly differentiation, disposition (KEEP / SHRINK / REPLACE / CONTRIBUTE_UPSTREAM / DELETE_AFTER_MIGRATION), and overlap evidence. The justified-ownership set is small by design: protocol implementations Bluefly authors, governance extensions of upstream context plumbing, the Gas City bridge as Tool API plugins, and brand presentation.
CAPABILITY_OWNERSHIP¶
capability-ownership-map.md — capability to owner using the implementation precedence in the specification section 3 (Core → Contrib → Contrib configuration → Recipes / Config Actions → Canvas / SDC → Views → ECA / FlowDrop → Drupal AI → Tool API / MCP → existing Bluefly package → new custom code last). Each row links the standard that governs it.
DRUPAL_AI_ARCHITECTURE¶
- Current architecture: drupal-ai-architecture.md.
- Enforcement rules, Tool API contract, Gas City execution seam, ContextControl governed tool surface: drupal-standard.md sections 3, 7.
- Ecosystem registry and approval status: drupal-ai-ecosystem.md.
- Context plumbing: DRUPAL-AI-CONTEXT-PLAYBOOK.md; Bluefly retains only governance extensions (see bluefly-package-map.md,
kb_cache). - Boundary rule (specification section 8): Drupal AI owns model and provider abstraction. Do not write direct provider SDK integrations, and do not adopt contrib AI extensions that hard-require one provider.
CONTENT_MODELING¶
Structured content is the source of truth; pages are presentation. Fields own facts; entities own business objects; taxonomy classifies; Media owns assets; entity references build relationships; Views own collections; Canvas owns composition; SDC owns presentation.
- Owners today: drupal-component-dry-standard.md sections 12 (entities are the data source), 19 and 46 (Views own collections), 48 (taxonomy is data), 50 (Media is an owned type), 51 and 52 (one source, references not copies); drupal-site-building-standard.md sections 1, 3, 4.
- Product-specific content model (Work, Service, Product, Capability, Person, Insight, Open Source Project, Evidence, Organization; vocabularies; relationship graph; media types): the specification sections 4 through 7. That model is product knowledge, not a cross-platform standard.
- Gaps closed in place: editorial form architecture, display-mode conventions, Canvas negative list.
CANVAS_SDC¶
- Canvas is the default page-composition system and must not own canonical copies of business content: drupal-site-building-standard.md section 3; how-we-build-in-drupal.md section 16.
- SDC vs Canvas Code Component decision: drupal-site-building-standard.md section 7; theme ownership: section 16; boundary table at the end of that file.
- Component contracts, props, slots, variants: drupal-component-dry-standard.md.
- Canvas CLI: DRUPAL-CANVAS-CLI-PLAYBOOK.md.
- Audit finding to act on: two Bluefly component libraries (39 SDCs in the
agentic_canvastheme plus 23 inbluefly_theme, with 8 SDCs duplicated betweenagentic_canvas_blocksandai_agent_ossa_ui_components) must converge on one home — bluefly-package-map.md.
TOOL_API¶
Tool API (drupal/tool) is the typed executable-capability owner. Protocols (MCP server, ECA, AI Agents, Drush, Gas City adapters) are adapters, not owners. Bluefly must not maintain competing tool registries.
- Rule: drupal-standard.md section 7; how-we-build-in-drupal.md sections 8, 9.
- Matrix record: module-ownership-matrix.md,
tool. - Audit finding:
contractplane_clientcarried four parallel exposure paths (Mcp, jsonrpc, rest, AiFunctionCall) andapi_normalizationcarried its owntool_api_adapterplugin manager; both are to collapse to Tool API deriver plusmcp_server— bluefly-package-map.md.
ECA_FLOWDROP¶
Boundary (specification section 8): ECA = event-driven workflows; Modeler API = workflow/model abstraction; Tool API = typed executable capabilities; FlowDrop = visual/data pipeline workflows; Drupal AI = model/provider abstraction. Do not build parallel registries or workflow runtimes.
- Rule: how-we-build-in-drupal.md section 12; drupal-standard.md section 12 ladder.
- Patterns: DRUPAL-ECA-AUTOMATION-PLAYBOOK.md.
- Bluefly
ModelOwnerplugins formodeler_apiare the correct integration shape; proprietary model serialization is not — module-ownership-matrix.md,modeler_api. - Adoption of FlowDrop or
orchestrationon a given site requires an actual consumer; the 2026-09-20 audit found none on bluefly.io — 2026-09-20 audit.
MIGRATION_FACTORY¶
Migration Factory composes Drupal core Migrate and migrate_plus first. It does not create private migration scaffolding where upstream owns the capability.
- Method: migration-factory-drupal.md.
- Classification vocabulary (12 dispositions) and the required migration map: specification section 15; reproduced as the method's CLASSIFICATION step.
- First proof: bluefly.io itself (specification section 15) — the audit's Wave 1 replaces seed scripts and a planned private
external_migrationmodule withmigrate_plusconfiguration.
MEDIA_EDITORIAL¶
- Media is an owned data type; Drupal media owns file, alt text, metadata, focal point, reuse: drupal-component-dry-standard.md section 50.
- Product media model (Image, Document, Remote Video, Logo) and editorial form architecture (Core / Story / Relationships / Media / Discovery / Promotion / Governance): specification sections 7 and 9.
- Contrib owners:
crop(+focal_point),svg_image,ai_image_alt_textwhen media exists,media_directoriesunder evaluation — module-ownership-matrix.md. - Rule (alt text required; AI alt text assists, editorial review remains; consistent form displays): site-building section 4a.
VALIDATION¶
- Definition of done for Drupal work: how-we-build-in-drupal.md section 31; success law (mechanism succeeding is not outcome succeeding): drupal-standard.md section 17.
- DRY acceptance gate: drupal-component-dry-standard.md section 91.
- Site-building acceptance: drupal-site-building-standard.md sections 37 through 40.
- Canvas validation before push: how-we-build-in-drupal.md section 19.
- Migration validation step: migration-factory-drupal.md, VALIDATE.
- Adoption and retirement acceptance evidence: contrib-module-adoption.md.
AUDIT_EVIDENCE¶
Dated. Historical evidence, not permanent truth. Revalidate before acting.
| Audit | Scope |
|---|---|
| 2026-09-20-bluefly-io-drupal-module-ownership-audit.md | Contrib-first ownership reduction: 43 modules, 13 Bluefly packages, Wave 1 config-only actions |
| drupal-lane-audit-2026-09-14/README.md | Drupal lane: CI producer defect, dead code, kb_cache semantic retrieval direction, method lessons |
Project-local execution receipts (entity IDs, one-off scripts, MR state) stay in the owning project and its Beads; they are not copied here.
Knowledge promotion pipeline¶
PROJECT OBSERVATION (consumer site, Bead, .agents/plans — proving ground)
→ LEDGER EVIDENCE (ledger/audits, ledger/evidence — dated, tagged OBSERVED / REPORTED / INFERRED)
→ REFERENCE (Engineering-Standard/reference/drupal — current map of what owns what)
→ STANDARD / PLAYBOOK (standards/drupal when Bluefly accepts the rule; Playbooks/drupal when it is a repeatable method)
→ PACK / FORMULA CONSUMPTION (Packs and Formulas reference the canonical file)
Promotion classes and what stays project-local are defined in the specification section 28 and in documentation-governance-standard.md section 7. Not every finding becomes a standard; a finding with no consumer stays evidence.
Consumption rule for Packs and Formulas¶
Packs and Formulas reference this index; they do not embed copies of it. A Drupal Formula declares its KNOWLEDGE_REFS= as repository-relative paths (this README, the matrix, the governing standard, the playbook it executes) and encodes execution only. A Drupal Pack selects agents, formulas, recipes, modules, and policies, but the reason a capability is selected must remain traceable to a file linked from this index. A Pack or Formula that carries its own module list, ownership decision, or migration strategy without a link back here is stale by definition. Specification section 27 is the contract.