Skip to content

Service Naming Decoupling

Status: Implemented Spec folder: specs/014-decouple-service-codenames/ Source of truth: Makefile and services/*/service.yaml

Decision

Codenames are fun metadata. They are not service identity.

From this point forward, the platform uses functional service names and arc-* image names as the primary references in:

  • architecture docs
  • specifications and plans
  • config defaults
  • wire contracts
  • operational runbooks
  • service maps

Codenames may still appear in metadata fields and narrative docs, but only as secondary labels.

Naming Hierarchy

When there is any ambiguity, use this order:

  1. Root Makefile target name
  2. service.yaml name
  3. GHCR image name
  4. Service directory under services/
  5. codename field

What Changed

Primary references now use service names

Use:

  • arc-reasoner
  • arc-messaging
  • arc-streaming
  • arc-cache
  • arc-persistence
  • arc-storage
  • arc-realtime
  • arc-gateway
  • arc-vault
  • arc-flags
  • arc-cortex
  • arc-friday
  • arc-friday-collector

Codenames are now secondary only

Allowed:

  • codename: metadata in service.yaml
  • optional secondary mention in prose
  • sidecar annotations where useful for historical continuity

Not allowed as primary identifiers:

  • package names
  • config defaults
  • DNS/container assumptions
  • NATS subjects
  • Pulsar topics
  • service maps
  • spec titles and main architecture references

Authoritative Service Mapping

Derived from Makefile includes and the current service.yaml files.

Make targetPrimary runtime nameDirectoryImageCodename metadata
gatewayarc-gatewayservices/gateway/ghcr.io/arc-framework/arc-gateway:latestHeimdall
flagsarc-flagsservices/flags/ghcr.io/arc-framework/arc-flags:latestMystique
vaultarc-vaultservices/secrets/ghcr.io/arc-framework/arc-vault:latestNick Fury
messagingarc-messagingservices/messaging/ghcr.io/arc-framework/arc-messaging:latestFlash
streamingarc-streamingservices/streaming/ghcr.io/arc-framework/arc-streaming:latestStrange
cachearc-cacheservices/cache/ghcr.io/arc-framework/arc-cache:latestSonic
persistencearc-persistenceservices/persistence/ghcr.io/arc-framework/arc-persistence:latestOracle
storagearc-storageservices/storage/ghcr.io/arc-framework/arc-storage:latestTardis
realtimearc-realtimeservices/realtime/ghcr.io/arc-framework/arc-realtime:latestDaredevil
reasonerarc-reasonerservices/reasoner/ghcr.io/arc-framework/arc-reasoner:latestSherlock
cortexarc-cortexservices/cortex/ghcr.io/arc-framework/arc-cortex:latestCortex
otelarc-fridayservices/otel/ghcr.io/arc-framework/arc-friday:latestFriday
friday-collectorarc-friday-collectorservices/otel/ghcr.io/arc-framework/arc-friday-collector:latestFriday Collector

Planned Services

Planned services should be documented, but they must not be mixed into the authoritative runtime map until they exist in Makefile or have a concrete service.yaml.

Use a separate planned section for items such as:

  • arc-voice-agent
  • arc-guard
  • arc-critic
  • arc-gym
  • arc-billing
  • arc-db-vector
  • arc-identity
  • arc-chaos

That keeps documentation honest:

  • implemented = operable now
  • planned = architectural intent

Realtime Sidecars

The realtime target is the operator-facing unit, but the runtime stack also includes:

Runtime serviceImagePurposeCodename metadata
arc-realtime-ingressghcr.io/arc-framework/arc-realtime-ingress:latestRTMP ingestSentry
arc-realtime-egressghcr.io/arc-framework/arc-realtime-egress:latestRecording/exportScribe

Operational Guidance

Prefer these forms in all new docs:

  • arc-reasoner instead of a codename-first label
  • arc-messaging instead of a codename-first label
  • arc-streaming instead of a codename-first label
  • arc-cache instead of a codename-first label
  • arc-realtime instead of a codename-first label

If a codename is included for readability, format it as secondary metadata, for example:

arc-reasoner (codename: Sherlock)

Not the other way around.

Impact

This keeps naming stable across:

  • implementation
  • deployment
  • contracts
  • diagrams
  • future service additions

It also removes the mismatch between historical codename-heavy docs and the actual operational model exposed by Makefile.

Contributors

Changelog