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 becameproducts/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 callskingstown-coreandlextown-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.