Skip to content

Bluefly product portfolio taxonomy and naming

Names create architecture assumptions. This reference stops something from silently changing category. Sources: BluCity-Docs Engineering-Standard/operating-model/factory-operating-contract.md, Engineering-Standard/catalog/gc-catalog.md, Engineering-Standard/catalog/products.md, Engineering-Standard/authority/Portfolio-Registry.yaml, products/AUTHORITY-MATRIX.md, Engineering-Standard/glossary/platform-glossary.md, and this plugin's Constitution.

The current portfolio (2026 GTM tab, Q4 2026 into 2027)

Classify against this first. It is the answer to "which slot does this fill", and the slots are full.

Slot Occupant Class
Recurring product Bluefly Digital Estate Operations COMMERCIAL_PRODUCT
Tiers to test under it Observe, Assist, Operate COMMERCIAL_OFFER
Initial capabilities security and updates, accessibility, config and code drift, release readiness, content operations CUSTOMER_CAPABILITY
Land motion Migration Factory COMMERCIAL_OFFER
Enabling offer AI-Ready Drupal Modernization (explicitly not a separate company strategy) COMMERCIAL_OFFER
Customer control room ContextControl CUSTOMER_CAPABILITY (the product experience, not a standalone SKU)
Execution and margin engine the Factory: Gas City, BluCity packs, Beads and Dolt, GitLab, Drupal, policy, evidence, models, senior practitioners INTERNAL_FACTORY_ASSET and UPSTREAM_PLATFORM
Market wedge Drupal not a portfolio object
Under experimentation AMCS not yet classified; see worked-examples.md

A proposal that does not fill one of these slots is adding a sixth, which is a leadership decision rather than a definition. Say so in the Executive Decision and stop.

Three vocabularies, reconciled

Bluefly portfolio objects (business, durable, do not execute)

Object Definition Owns
Company Bluefly.io Products, brands, standards stewardship
Mountain Portfolio, program, or product-family domain, lives for years (AMCS, DevOps, OSSA Ecosystem, Site Factory, BluTown, AgentSocial, BluGuide, Acquia, Marketplaces) Products
Product User- or customer-facing product or coherent platform offering, long-lived Offerings; never a repository path directly
Offering (SKU) A bill of materials: required packs, optional packs, supported products, price, terms Packs (by reference)
Capability A business function with exactly one Authority; protocol and runtime independent; publishes Contracts, not implementations Contracts
Contract A typed schema published by a Capability; interface not implementation nothing
Factory Bluefly's composition of three systems (business object graph, Gas City runtime loop, evidence graph); how a Product is manufactured; factory.yaml Outputs
Output Generated artifact, authoritative nowhere nothing
Standard / protocol OSSA, DUADP: specifications others implement Conformance, not customers
Brand Bluefly.io, OSSA, DUADP, ContractPlane, Agent Blu, ContextControl, Marketplace Expectations

The object graph the corpus uses: Authority -> Contract -> Capability -> Product -> Repository -> Deployment -> Runtime. Products know Offerings; Offerings know Packs; Products never own a repository path directly.

Gas City primitives (execution, upstream-owned, six and only six)

Agent (WHO), Bead (WHAT), Formula (HOW), Rig (WHERE: an external project with its own bead namespace and agent scope), Pack (CONFIGURES: declares agents, formulas, orders; the City is the root pack plus deployment), Event (OBSERVE). Orders, sessions, convoys, drains, Mayor, Witness, Refinery, Polecat, Deacon, providers, and supervisors are configuration or roles supplied by packs, not primitives. BluCity is the City itself, not a Rig and not a Mountain member.

A Pack is never a Product. A Pack is a unit of reusable behavior that an Offering imports. The amcs pack is not "AMCS Factory the product line"; it is behavior the AMCS Product's Offerings bundle.

Constitution architecture (this plugin)

PRODUCT -> FACTORY -> OUTPUTS -> DOMAINS -> SYSTEMS, seven domains as ownership boundaries (authority, governance, runtime, experience, network, delivery, marketplace). This is the same picture as the portfolio objects viewed from the Factory contract. Domain in the Constitution is an ownership boundary inside a Factory, not a portfolio object; do not create a "Domain" product.

Classification enum (apply to every named thing in a proposal)

Class Meaning Commercial treatment
COMMERCIAL_PRODUCT What a customer operates and pays for; has its own buyer, boundary, and economics Sell it. Gets a Product Definition.
COMMERCIAL_OFFER How a customer buys a product: a package, price, terms, acceptance (Foundation, Readiness, Managed Assurance, Sovereign Deployment, policy pack) Sell it. Lives under exactly one Product.
CUSTOMER_CAPABILITY Something the customer gets inside a product (agent registry, approvals, governed context, verification views) Never sold alone. Named in the product, not in the SKU.
BLUEFLY_COMPOSITION Bluefly-owned assembly of upstreams (Site Factory, BluCity, ContractPlane integration, recipes composed into a template) How Bluefly manufactures. Not the SKU.
INTERNAL_FACTORY_ASSET Packs, formulas, Beads, Dolt, acceptance tests, factory methods Cost of goods and reuse asset. Invisible to the buyer.
UPSTREAM_PLATFORM Drupal, Drupal AI, AI Agents, FlowDrop, ECA, Tool API, Gas City, GitLab, Cedar, vector databases Substrate. Composed, never sold, never rebuilt.
OPEN_STANDARD_OR_PROTOCOL OSSA, DUADP, MCP Conformance and moat. Nobody buys a standard.
PROJECT_OR_REPOSITORY site_template_amcs, recipe_amcs, recipe_blucity, a repo Artifact of a product or composition. Not the SKU.

Only the first two classes appear in a sales conversation. If a proposal's name is drawn from any other class, the name is wrong. Classifying every box in an architecture diagram this way is what removes the stack from the sale: the customer does not buy AI Agents, FlowDrop, Tool API, MCP Server, Gas City, Beads, formulas, Cedar policies, vector databases, or model tokens.

Placement decision table

If the idea is... It is a... Where it lives Not a product until...
A new buyer, outcome, and price Product (or Offering of an existing Product) products/<Product>/ doctrine + Portfolio-Registry offerings: It passes the Commercial Work Gate
A package of existing capabilities at a price Offering Portfolio-Registry offerings: under its Product Same
Reusable agent behavior, formulas, orders Pack blueflyio/blu/blucity-packs Never; an Offering sells it
A business function with one authority Capability Capability Registry An Offering packages it
A reusable module, recipe, component Contribution to an upstream or shared library Owning repo per AUTHORITY-MATRIX An Offering packages it
A spec others implement Standard / protocol blueflyio/ossa/*, blueflyio/duadp/* Never; products conform to it
Hosting, runtime, plumbing Infrastructure agent-docker, iac Never; it is COGS
A UI over Gas City or Beads Experience surface Owning surface (Drupal/Canvas, Gas City dashboard) Never on its own
Bounded work with an end date Project or Convoy Beads Never
A directory rename or a codename Nothing yet Open Question A definition exists

Known ambiguities in the current corpus (check before naming anything)

  • Site Factory: has an AUTHORITY-MATRIX row and a Mountain entry but no products/ directory; its former directory became products/Agent-Factory/ (historical archive only). Any Site Factory definition must resolve this first.
  • Agent Factory: a directory name over historical content, not a defined product.
  • AMCS Factory: simultaneously a lane, a pack parent, and a sales bundle. Treat AMCS as the Product, "AMCS Factory" as the Factory that manufactures it, and the tiers as Offerings.
  • BluTown: listed as a Product in AUTHORITY-MATRIX, nested under products/BluCity/, contains dashboard source (a doc/implementation boundary violation), and packs-map calls kingstown-core and lextown-criminal-core "BluTown OS". Decide whether BluTown is a Product, an internal operating surface, or a Mountain before writing any BluTown offer.
  • Moltbook and AgentSocial: byte-similar vendored source trees, no doctrine. Not products.
  • OtterMon: product with Architecture only; Vision, Integrations, Deployment, Roadmap pending curation. An OtterMon offering must not invent those.
  • OSSA and DUADP: standards with roadmap docs, no Vision.md. They are not products; they are the standards Bluefly products conform to and the moat those products cite.
  • Offerings: the Portfolio Registry schema exists with zero entries. The first real offering this skill defines becomes the first entry; populate from a real buyer, not from architecture docs.

Naming checklist

Before a name is used in a definition, answer: company, product, product family, edition, module, feature, service, protocol, standard, project, or internal codename? Then check it against the existing brands and the ambiguity list above. A name that already exists in a different category is a placement finding.