Version 1.0.0 · Effective 2026-09-03

Data service standards

Canonical Cooperative Computing Alliance requirements for public interfaces, contracts, data semantics, safety, discovery, operations, and agent readiness.

59 rules23 categories53 mandatory

UI

CCA-UI-001 MUST

Use CCA UI Profile v2

New public services MUST use CCA UI Profile v2: pinned GOV.UK Frontend 6.4.0 CSS and ES module plus fonts from govuk.prodcdn.com; palette #1d70b8, #003078, #00703c, #d4351c, #f47738, #ffdd00, #0b0c0c, #505a5f, #b1b4b6, and #f3f2f1; stable v6 header, footer, container and grid; GDS Transport; responsive behavior at 641/640/768 boundaries; visible focus; skip links; semantic landmarks; reduced motion; and aria-hidden decorative SVG. A page MUST NOT mix GOV.UK Frontend and NYC Core.

Automatable · Reference 1

CCA-UI-002 MUST

Deliver accessible no-JavaScript content

Core public content MUST be server-rendered and usable without JavaScript. Pages MUST include semantic landmarks, a skip link, visible keyboard focus, labeled controls, accessible error summaries linked to field errors, status or live regions for meaningful asynchronous changes, useful loading, empty, and error states, and layouts usable at narrow widths and high zoom. Custom dialogs MUST trap focus, restore it on close, support Escape where safe, and MUST NOT fall back to alert, confirm, or prompt.

Design review · Reference 1

CCA-UI-003 MUST

Load executable assets only from approved hosts

Executable CSS, JavaScript, fonts, and related frontend assets MUST be self-hosted, hosted on cdn.coopalliance.org, or hosted on a subdomain ending .prodcdn.com. The apex prodcdn.com host is not allowed. Asset versions MUST be pinned.

Automatable

CCA-UI-004 MUST

Migrate legacy fleet pages without mixing frameworks

NYC Core 1.0 with the legacy #004CBE shell is Legacy UI Profile v1 and MAY remain only during migration. New services MUST NOT introduce Profile v1. Migration maps the legacy container, grid, cards, tables, badges, header, footer, skip link, and controls to their GOV.UK Frontend v6 equivalents in one release; pages MUST never load both frameworks.

Automatable · Reference 1

Service Bindings

CCA-BIND-003 MUST

Never silently fall back from a binding to public HTTPS

A missing or failed service binding MUST produce an explicit failure or documented independent degradation. Internal calls MUST NOT silently fall back to the public HTTPS hostname. Service-binding and RPC callees MUST authenticate and authorize independently.

Design review · Reference 1

CCA-BIND-001 SHOULD

Document service bindings safely

Services supporting Cloudflare service bindings SHOULD document the public-safe contract, request envelope, authentication responsibility, compatibility expectations, and local-test strategy without publishing account IDs, private hostnames, credentials, or secret binding configuration.

Design review · Reference 1

CCA-BIND-002 MUST

Keep service enrichments independent

Service-binding enrichments MUST degrade independently so one unavailable enrichment does not corrupt the owned core record. Enrichment responses MUST retain their source ownership and MUST NOT be persisted or republished as data owned by the calling service.

Design review

Manifest

CCA-MANIFEST-001 MUST

Publish one validated service manifest

Each catalog entry MUST come from one version-controlled manifest validated by JSON Schema. The manifest MUST distinguish APIs, viewers, tile services, and private services and MUST NOT contain secrets, account identifiers, internal hostnames, administrative routes, or PII.

Automatable · Reference 1

OpenAPI

CCA-OAS-001 MUST

Publish a complete OpenAPI 3.1 contract

Every public API MUST publish an OpenAPI 3.1 document with title, version, description, canonical HTTPS servers, contact, license, tags, stable globally unique operationId values, parameter and request schemas, every success and error response schema, and realistic examples.

Automatable · Reference 1

CCA-OAS-002 MUST

Prevent specification and runtime drift

CI MUST validate OpenAPI syntax and fleet rules. Contract tests SHOULD exercise documented routes, status codes, content types, and representative schemas against the runtime so undeclared or stale behavior fails review.

Automatable · Reference 1

Data Semantics

CCA-DATA-001 SHOULD

Use the fleet response envelope

Successful collection and lookup responses SHOULD use the existing fleet envelope consistently, with data plus meta fields for provenance, freshness, cache state, request or trace identity when safe, and upstream status. meta.sources MUST list the sources that actually contributed to that response, never a static superset. Status or source-query failures MUST remain explicit errors or unknown states and MUST NOT be converted to a zero count. Do not report stale or partial upstream data as unqualified success.

Design review

CCA-DATA-002 MUST

Describe provenance and freshness

Every data-bearing response or linked metadata resource MUST identify its source, observed or released timestamp where known, refresh cadence, and whether the result is live, cached, stale, partial, or unavailable.

Design review

CCA-DATA-003 MUST

Preserve immutable evidence and independent quality dimensions

Evidence-bearing systems MUST preserve immutable captures and hashes plus support and contradiction relationships, exact quotes or spans or pages, and source authority. Confidence, verification state, and publication state MUST remain orthogonal. Publication eligibility MUST be continuously derived from current evidence and policy, not stored as an unexamined permanent flag.

Design review

CCA-DATA-004 MUST

Version and reconcile projections

Derived projections MUST expose their source revision and freshness. Rebuilders MUST track dirty generations, compare the generation before clearing dirty state, and leave newer work pending when concurrent changes arrive.

Design review

CCA-DATA-005 MUST

Publish source use restrictions

Source registries and provenance manifests MUST record license, redistribution rights, solicitation restrictions, and other use constraints and surface applicable restrictions in APIs and public UI. Classification labels are descriptive metadata and MUST NOT be presented as legal determinations.

Design review

Pipeline

CCA-PIPE-011 MUST

Use durable execution for required work

ExecutionContext.waitUntil is best effort and MUST be used only for disposable post-response work. Required, retryable, or state-changing background work MUST use Queues or Workflows with explicit retry policy, dead-letter handling, idempotency, and reconciliation.

Design review · Reference 1 · Reference 2

CCA-PIPE-001 MUST

Archive immutable source bytes before indexing

External data pipelines MUST archive verified immutable source bytes in R2 before parsing or indexing. Pipeline Workers MUST use scoped Worker administration APIs and service bindings and MUST NOT hold direct D1 or R2 account credentials.

Design review · Reference 1

CCA-PIPE-002 MUST

Download and discover sources defensively

Downloads MUST use a temporary .part path, incremental SHA, declared and actual size checks, response framing and magic-byte validation, bot or challenge detection, and atomic rename only after verification. Discovery MUST fail closed and MUST NOT guess source URLs. Download caps and multipart sizes are source-specific implementation values, not fleet constants.

Design review

CCA-PIPE-003 MUST

Verify immutable object publication

Multipart completion MUST verify the remote SHA and size. An existing immutable key with conflicting bytes MUST stop the pipeline and MUST never be overwritten. Archive extraction MUST reject path traversal, absolute paths, symlinks, duplicate names, excessive expansion or compression ratio, encrypted entries, truncation, CRC failures, and unsafe ZIP64 structures.

Automatable

CCA-PIPE-004 MUST

Normalize deterministically

Source adapters MUST separate discovery metadata from bounded record iteration. Shared normalizers MUST be centralized and versioned. Canonical JSON, stable ordering, and deterministic duplicate-winner rules MUST make equivalent inputs produce byte-identical artifacts and shard assignments.

Automatable

CCA-PIPE-005 MUST

Bound and partition durable pipeline work

D1-facing writes MUST default to batches of no more than 500 rows unless a documented load test supports another bound. Durable state MUST partition work by release, source, shard, and batch. Queue and Workflow messages MUST contain immutable pointers and identity metadata only, never large mutable payloads. Lease durations are implementation-specific, not universal constants.

Design review · Reference 1 · Reference 2

CCA-PIPE-006 MUST

Reconcile exactly before promotion

Promotion MUST require exact expected shard and record-count reconciliation. Ledger, checkpoint, lease, and compare-and-swap state MUST make replay idempotent and reject stale ownership tokens. Pipelines MUST reject zero-result releases, modeled corpus mismatches, unsafe object paths, and ambiguous corrections rather than promoting partial data.

Automatable

CCA-PIPE-007 MUST

Bind releases to complete provenance manifests

Every promotable release MUST have a canonical provenance manifest binding discovered URLs, validators, content length, source SHA, schema and normalization versions, shards, expected and actual counts, and immutable object keys. Secret configuration SHOULD support NAME_FILE indirection, and logs MUST redact secret values and sensitive source parameters.

Automatable

CCA-PIPE-008 MUST

Test pipeline faults, replay, and promotion

End-to-end tests MUST cover interrupted and malformed downloads, archive attacks, multipart retries and conflicts, duplicate deliveries, lease expiry and stale tokens, checkpoint replay, count or shard mismatch, failed promotion, and successful atomic promotion from archived source through serving indexes.

Design review

CCA-PIPE-010 MUST

Allocate production-scale ingest test memory explicitly

Test and rehearsal processes that exercise production-scale or full-corpus ingestion MUST run in a documented runner profile with more than 28 GB of memory allocated and MUST record the profile in CI or the runbook. This requirement is not applicable to bounded unit, contract, and small deterministic fixture tests.

Design review

CCA-PIPE-009 MUST

Coordinate cross-resource writes with sagas

Workflows spanning D1, R2, queues, or append-only audit stores MUST use a saga or transactional outbox with durable commit markers, deterministic work IDs, content-addressed staging, a D1 delivery ledger, enqueue-after-staging, leases with owner tokens, conditional terminal writes, dead-letter handling, reconciliation, and idempotent replay.

Design review

Query

CCA-QUERY-001 MUST

Use consistent collection controls

Collection APIs MUST document deterministic pagination, stable sort, filters, search syntax, and sparse-field selection where supported. Keyset cursors are preferred and SHOULD replace deep OFFSET pagination for changing or large datasets; offset pagination MAY be used for bounded stable collections.

Design review

Errors

CCA-ERROR-001 MUST

Provide RFC 9457-compatible problems

New APIs MUST provide application/problem+json errors with type, title, status, detail, and instance. Existing fleet envelopes MAY retain their current error member to avoid breaking clients, but SHOULD embed or content-negotiate an RFC 9457-compatible problem and MUST preserve correct HTTP status semantics.

Automatable · Reference 1

HTTP

CCA-HTTP-001 MUST

Implement HTTP caching correctly

Cacheable GET and HEAD resources MUST publish explicit Cache-Control and a validator such as ETag or Last-Modified, honor conditional requests, and use Vary when representation selection changes the response. Unsafe or private responses MUST NOT be publicly cached.

Automatable · Reference 1

CCA-HTTP-002 MUST

Define CORS intentionally

Public machine-readable metadata and openly reusable APIs SHOULD allow wildcard read CORS. Credentialed, private, administrative, or browser-sensitive endpoints MUST use an explicit Origin policy and MUST validate Origin independently of CORS headers.

Automatable · Reference 1

CCA-HTTP-003 MUST

Expose rate-limit state

Rate-limited APIs MUST document their quota model and return actionable limit, remaining, reset or retry information using current standard fields where practical. A 429 response MUST include Retry-After when the retry time is known.

Design review · Reference 1

Security

CCA-AUTH-001 MUST

Separate public, authenticated, and administrative surfaces

Public read routes, user-authenticated routes, ingestion routes, and administrative routes MUST be separate and documented with explicit security schemes. Administrative endpoints and internal hostnames MUST NOT appear in the public service catalog.

Automatable

CCA-AUTH-002 MUST

Enforce trust boundaries at every Worker

High-risk services MUST separate public, administrative, audit, PII, and immutable-evidence responsibilities into explicit Worker and resource trust boundaries. Every service-binding callee MUST authorize the request itself because Cloudflare Access identity and policy context do not automatically propagate through service bindings.

Design review · Reference 1

CCA-AUTH-003 MUST

Use least-privilege entrypoints

Browser and administrative routes MUST be protected by Cloudflare Access plus application RBAC. Read and mutation entrypoints SHOULD use separate least-privilege bindings or RPC capabilities. Caller-supplied identity headers are untrusted audit labels and MUST NOT authorize a request.

Design review · Reference 1

Lifecycle

CCA-LIFE-001 MUST

Version and deprecate predictably

Breaking API changes MUST use a new major route or negotiated version. Deprecated operations MUST be marked in OpenAPI, documented with a replacement, and return Deprecation and Sunset information before removal with a proportionate migration period.

Design review · Reference 1 · Reference 2

Discovery

CCA-DISC-001 MUST

Publish API discovery

Public API publishers MUST participate in the RFC 9727 catalog and SHOULD advertise discovery from relevant root and detail responses with RFC 8631 service-desc, service-doc, service-meta, and status Link relations.

Automatable · Reference 1 · Reference 2

Agents

CCA-AGENT-001 SHOULD

Publish agent-readable documentation

Public services SHOULD provide concise llms.txt discovery and clean Markdown documentation linked to the authoritative OpenAPI and status resources. Agent-facing claims MUST not exceed actual schema, example, freshness, or operation coverage.

Automatable · Reference 1

CCA-AGENT-002 SHOULD

Describe multi-service workflows with Arazzo

Common repeatable workflows that call one or more public APIs SHOULD be published as Arazzo documents using stable operation references and explicit inputs, success criteria, outputs, and failure handling.

Automatable · Reference 1

CCA-AGENT-003 SHOULD

Use overlays for non-breaking enrichment

Agent-facing descriptions, examples, classifications, and corrections SHOULD be distributed as OpenAPI Overlay documents when upstream specifications cannot be changed immediately. Overlays MUST identify their target and MUST NOT conceal runtime drift.

Automatable · Reference 1

Privacy

CCA-PRIV-001 MUST

Classify and minimize sensitive data

Each service MUST classify its data as public, restricted, confidential, or PII-bearing; collect and return only fields needed for the documented purpose; define retention; redact logs; and require a privacy and security review before exposing person-level or licensed data.

Design review · Reference 1

CCA-PRIV-002 MUST

Treat event-log allowlists as privacy controls

Event-log field allowlists are privacy and exfiltration tripwires, not ownership registries or authority boundaries. Ownership and authorization MUST be modeled separately, while event payload schemas default-deny unreviewed fields.

Design review

Observability

CCA-OBS-001 MUST

Provide structured service health and telemetry

Services MUST expose safe health metadata and emit structured logs and traces with request correlation, latency, status, cache outcome, and upstream state. Logs MUST exclude secrets and unnecessary personal data. Alerts SHOULD cover freshness and coverage, not only process uptime.

Design review · Reference 1

CCA-OBS-002 MUST

Separate liveness, readiness, and deep status

Services MUST distinguish process liveness, request-serving readiness, and deeper dependency, coverage, and freshness status. Lightweight liveness MUST NOT perform expensive upstream checks; deep status SHOULD report bounded safe diagnostics and partial or stale dependencies.

Design review

Database Safety

CCA-D1-001 MUST

Keep D1 bounded and rebuildable

D1 MUST contain only bounded, rebuildable metadata, identity records, pointers, and indexes. Immutable raw bytes, large fact tables, documents, and unbounded history MUST live in R2. R2 SQL or any other beta feature MUST NOT be required for public request correctness.

Design review · Reference 1 · Reference 2

CCA-D1-002 MUST

Design deterministic D1 sharding before ingest

Every D1-backed design MUST choose and document a deterministic shard key before ingest, maintain a versioned shard map, and prove that every shard can be rebuilt from immutable R2 manifests. CI and design review MUST reject an unsharded schema whose modeled corpus plus index growth can exceed the 7.5 GB admission ceiling.

Design review · Reference 1

CCA-D1-003 MUST

Enforce D1 capacity gates

Each D1 shard MUST begin rollover and provision its successor by 7.0 GB, stop write admission when projected post-write or peak usage could exceed 7.5 GB, and target 5.0 GB or less after rebalancing. Systems MUST reserve at least 2.5 GB under the non-increasable 10 GB hard cap. Batches, index builds, copy or rebuild migrations, VACUUM, and rollback reserve MUST be included in the peak estimate and MUST NOT run when projected peak usage exceeds 7.5 GB.

Automatable · Reference 1

CCA-D1-004 MUST

Fail closed before D1 capacity exhaustion

Ingest MUST estimate projected post-write and peak bytes before writes, enforce documented row, batch, and transaction bounds, checkpoint progress, and stop or queue work when admission would cross the 7.5 GB gate. It MUST reject earlier when migration, index, VACUUM, or rollback reserve requires space and fail closed rather than relying on the platform to reject an oversized database.

Automatable · Reference 1

CCA-D1-005 MUST

Observe every D1 shard

Status and telemetry MUST expose each shard's platform-reported databaseSizeBytes, percentage of the 10 GB cap, recent growth rate, projected exhaustion date, threshold state, and last verified timestamp. Alerting MUST trigger before 7.0 GB. Account-wide storage and Worker binding limits MUST be reported separately and MUST NOT be treated as increasing the 10 GB per-database hard cap or changing D1's single-threaded execution model.

Automatable · Reference 1 · Reference 2

Identity

CCA-ID-001 MUST

Encode only immutable namespaces in stable IDs

Stable identifiers MAY encode only a prefix registered in the fleet namespace registry that denotes an immutable namespace or record kind. They MUST NOT encode a mutable classification, status, ownership role, geography, or lifecycle value. Prefix allocation MUST be reviewed for collision before use.

Automatable

CCA-ID-002 MUST

Model legal-entity classifications and relations temporally

Legal entities MUST use the neutral ecgc namespace with canonical syntax ecgc-[0-9a-z]{12}. corp, npo, fund, sub, and gov prefixes are prohibited for legal-entity identity because corporation, nonprofit, fund, and government are temporal provenanced classifications, while subsidiary_of is a temporal relationship rather than an entity type.

Automatable

CCA-ID-003 MUST

Make identity edges auditable

Identity and relationship edges MUST use surrogate edge IDs, enforce uniqueness for active equivalent edges, retain audited reassignment history, and normalize identifiers by scheme-specific rules rather than generic separator stripping. Alias resolution MUST return ambiguity explicitly and MUST NOT select an unordered first match. Redirect and alias tables MUST be explicit, cycle-checked, tombstone-aware, and immutable in audit history.

Design review

CCA-ID-005 MUST

Govern canonical legal-entity minting

cca-entities is the sole minting authority for ecgc-[0-9a-z]{12} legal-entity IDs unless one atomic global allocator is designated. IDs MUST use Web Crypto with a lowercase base36 custom alphabet, be immutable and non-reusable, and mint by retrying actual INSERT uniqueness conflicts rather than SELECT-then-INSERT. Consumers MUST validate syntax only and otherwise treat IDs as opaque. Legacy e###-*, noncanonical ecgc-*, enty-*, and entm-* identifiers MUST migrate through audited aliases and immutable cycle-checked redirects.

Design review

CCA-ID-004 MUST

Preserve identity through organizational change

Mergers and acquisitions MUST retain both stable IDs and add effective-dated predecessor and successor relationships. Spin-offs MUST receive new IDs. Identifiers MUST NOT transfer or redirect implicitly; every reassignment or alias requires explicit provenance, effective dates, and immutable audit.

Design review

Supply Chain

CCA-SUPPLY-001 MUST

Inventory vendored references

Every vendored schema, template, rule, or reference artifact MUST have an inventory entry containing its source URL, retrieval timestamp, byte size, SHA-256 digest, and applicable LICENSE or NOTICE material.

Design review

History

CCA-HIST-001 MUST

Serve snapshot history from indexed metadata

Snapshot and release history MUST be served from bounded indexed metadata. Public request paths MUST NOT enumerate R2 with LIST to reconstruct history at request time.

Design review · Reference 1

Routing

CCA-ROUTE-001 SHOULD

Generate contracts and policies from a typed route registry

Services SHOULD define routes in one declarative typed registry that generates or validates the runtime router, OpenAPI operations, cache policy, rate-limit policy, CORS policy, and authorization classification. Duplicate hand-maintained route and contract lists SHOULD be rejected in review.

Design review

Deployment

CCA-DEPLOY-001 MUST

Deploy data and service changes safely

Stateful deployments MUST serialize classify, expand, apply, verify, activate, and contract phases; use globally unique migration identifiers; rehearse against representative backups; define queue drain and resume; follow declared dependency order; deploy compatible service-binding callees before callers; require dry-run and smoke checks; roll out gradually; and run post-deploy acceptance. Rollback plans MUST state that reverting Worker code does not undo a D1 migration.

Design review

Workers

CCA-WORKER-001 MUST

Use current safe Worker configuration

Worker services MUST use wrangler.jsonc, a reviewed current compatibility date, nodejs_compat where dependencies require it, observability with deliberate sampling, generated Env types for bindings, static assets configuration when serving files, and no hardcoded secrets. Internal HTTP APIs SHOULD use Hono and Zod with bounded UTF-8 JSON and explicit status and request IDs. Public APIs MUST use /api/v1, explicit caching and CORS, OpenAPI, and configured Workers Static Assets when serving a UI.

Automatable · Reference 1

Conformance

CCA-TEST-001 MUST

Test and score conformance honestly

CI MUST validate schemas, unique operationId values, examples, response contracts, CORS, caching, error status and media types, discovery links, strict missing-route behavior, privacy boundaries, and representative runtime parity. Published scores MUST identify the rule version, evidence date, automated coverage, warnings, and blockers.

Automatable