Skip to content

Issue labels

Chronicle’s labels form a deliberate area × quality-attribute system. An issue is placed by the part of Chronicle it concerns (its area) and by the property of the system it affects (its quality attribute). There is no defect-type axis, no bug label: a defect is expressed as a quality attribute such as reliability, consistency, performance or memory, combined with the area where it happens.

Read the axes below before labelling an issue, and before deciding that a set of issues is stale.

What kind of work the issue is, or where it stands.

LabelWhen it applies
ideaA suggestion that is not committed work. Long-lived by design, see below.
investigateAn open question that needs research before it becomes work. Long-lived by design.
technical debtWork that improves the code without changing behavior.
choreRoutine upkeep.
specsMissing or broken specs.
documentationDocumentation work.
questionA request for information.
blockedWaiting on something outside the issue.
wait for consolidationTo be merged with other work before anyone starts.
duplicate, invalid, wontfixThe reasons an issue is closed without being done.
good first issue, help wantedInvitations to contributors.

Which property of the running system the issue concerns.

LabelWhen it applies
reliabilityStaying up and keeping processing, such as a stalled observer or a lost connection.
consistencyKeeping the event store and the read models correct.
performanceSpeed and throughput.
memoryUsing more memory than necessary.
maintainabilityCode that is hard to change safely.
testabilityCode or behavior that is hard to test.
observabilityLogging, metrics and tracing.
securityAuthentication, authorization and protection of data.
complianceHandling of personal and regulated data.
devexThe experience of developers using or contributing to Chronicle.

The part of Chronicle the issue is in. An issue usually carries one area and one or more quality attributes.

LabelCovers
events, streamsEvent types, appending, event sequences and streams.
observers, replayReactors, reducers, observer state and replaying.
projections, sinks, storageBuilding read models and where they are stored.
jobsThe job system.
clusteringRunning several kernel nodes.
serialization, custom keysSerialization and key handling.
configurationConfiguration on the client or the server.
api, client, workbenchThe public API, the client libraries and the Workbench.
recommendationsThe recommendation system.
upgradeUpgrading between versions.
build, branchingBuild, release and branch workflow.
OrleansThe Orleans runtime the kernel is built on.
.NET, javascript, dependenciesDependency updates, applied by the dependency bots to pull requests.

major, minor, patch and no-release belong to pull requests, not issues. The pull request check requires exactly one of them on every pull request into main; the rules are kept in the organization’s shared release-intent workflow and not repeated here. On an issue, the signal that something breaks consumers is the separate breaking change label.

Changing what these labels mean changes what CI does.

LabelRead byEffect
no-releasepublish.yml and the release-intent checkThe pull request publishes nothing.
specs-removal-intendedassert-spec-deletions-covered.pyLets a pull request delete specs on purpose.
run-integrationrequested-integration.ymlRuns the Docker integration suite on the pull request.

idea and investigate are long-lived by design

Section titled “idea and investigate are long-lived by design”

An issue labelled idea or investigate is a reminder or an open question, and it is expected to stay open for a long time. Its age says nothing about whether it still matters.

Such issues are exempt from every staleness rule, whether applied by a person or by an agent: do not close, relabel or de-prioritise them because nobody has touched them. An automated sweep that treated all old issues alike is why this is written down.

The weekly issue analysis reports issues without an update for two years under “Potentially Obsolete”, and that report does not look at labels yet. An idea or investigate issue listed there is not a candidate for closing.

An issue is closed when one of these is true:

  • The behavior has shipped, and you can point at the change.
  • The question has been answered.
  • It duplicates another issue, and you can point at that issue.
  • A person has decided it is out of scope, and said so on the issue.

“Nobody has touched it” is not evidence, on its own or in a count of how long it has been.

stale-review marks the issues that were reopened after the 2026-08-24 automated stale sweep and still await a human look. Remove it from an issue when you have re-triaged it. The label itself is deleted when no open issue carries it any more.