Configuration and boundaries

TL;DR

Where CCC's dates, floors and defaults are set, and why a figure can be absent because of a configured boundary rather than missing data.

Several questions that look like "the data is missing" are really "a boundary is configured there". This page is where those boundaries live.

They sit in one file, config/settings.json, read on every request. There is no loader and no table, so an edit reaches an environment on the next merge with no install step and no hand migration. An absent key stops the page with a readable error rather than quietly defaulting, which is deliberate: a typo can never read as "no boundary". A key set to null is a real value meaning exactly that.

Every key is listed with its description at /system/settings.

The modern era, and why margin stops at a date

ingest.modernera is 2022-01-01 today. It is the first day CCC imports NetSuite transactions from, and the day after the verkoopdump history stops.

It also does something a reader feels directly: both margin queues skip any transaction dated before it. So an order imported from before 2022 can exist, be visible on a screen, and carry no margin at all. That is not a gap in the calculation, and re-queuing the order will not fix it.

The default activation start for a new rule is calculationrules.startdate, also 2022-01-01, and the seeded rules start within that era. The queue floor is independently enforced; changing a rule window alone does not bypass it.

The two dates are equal today and are separate decisions. Do not assume changing one changes the other.

The other floors

KeyIs the floor of
ingest.verkoopdumpfirstorderThe historic transaction backfill, and the per-year order sequence rebuild
ingest.ns_customerfirstimportedThe customer backfill window

These explain stray old rows. An order dated 2002 is inside the verkoopdump floor and outside the modern era: legitimately imported, legitimately carrying no margin.

Queue windows

KeyControls
ingest.dailyqueuedaysHow many days back the daily fan-out queues
ingest.trailingqueuedaysHow many days back the sources that keep adjusting recent days are re-queued: GA4 traffic and the commercetools order discounts

The second is why a figure from last week can still move. Some upstream sources revise recent days, so CCC re-asks for a trailing window rather than importing each day once.

Screen defaults

KeySets
pages.transactionsfromThe default from date on the filtered transaction-style pages
pages.transactionstoThe default to date on those pages
pages.rowlimitThe default row limit on those pages
pages.incomestatementfrom, pages.incomestatementtoThe same for the income statement

The from date is today minus three months today, which is the single most common reason a figure looks absent. See data freshness and history.

Both the page and its data endpoint read these from the same file, so the first page load and the table behind it cannot disagree about dates or the row limit. The multi-select filter defaults are still written out in both places and can still drift.

What is deliberately not configurable

Not every number in the code belongs here, and the ones left behind were left on purpose. Two rules decide.

A number a name already encodes is not configurable, because changing it would make the name lie. The new-product day bands define newproduct_1w through newproduct_6m; the one and two year intervals define customerlife_1y and _2y; the stock day bands define the stock status codes.

A refresh or concurrency heuristic is not a data boundary, so it stays with the code that uses it: the stuck-batch window, the insert chunk size, the upstream token lifetimes and every per-job execution limit, each tuned against a real run.

Evidence

Keys, values and descriptions read from config/settings.json. Loader behaviour, the dying absent key and the not-configurable rules from AGENTS.md, Configuration and .env. The modern era floor on both queues from the queueing sites in app/models/batches.php. Basis: code-checked against the current implementation, values as configured locally.

About this document
  • Type
    concept
  • Status
    active
  • Updated
    2026-09-14
  • Created
    2026-09-14
  • Covers
    system/settings