This page tracks standards decisions that are still open or not yet documented. A visible parking lot keeps unresolved choices accountable. It prevents decisions from getting lost in a Slack thread or in one engineer’s head.
How this page works
Each item has an owner, a target date, and a tracking artifact. The owner is the directly responsible person. The tracking artifact is a Jira ticket (NT project), an in-flight RFC, or a draft ADR. See Design docs, RFCs and ADRs. Each item also has an interim posture. This keeps teams unblocked and prevents further divergence while the decision is pending.
Resolve a question through an ADR or by editing the relevant standard page. Then remove the item from this list. The page must get shorter as decisions are made. It must never conflict with a settled page.
Frame a tool-choice question as an ADR with clear criteria, not a bare either/or. Score candidates on the same axes. For a gate, those axes are accuracy, false-positive rate, PR latency, and maintenance cost.
Contested, needs a decision
These questions do not have a settled answer yet.
| Question | Interim posture | Owner | Target | Tracking |
|---|---|---|---|---|
| Backend error reporting. Sentry is settled on clients. Services carry the load through OpenTelemetry traces and structured logs. Whether a dedicated error tracker joins them is open. See Observability. | Keep OTel traces and structured logs; add no new error tracker for services. | TBD | TBD | TBD |
| SAST gate. SAST on every pull request is settled; whether Veracode, Semgrep, or CodeQL is the mandatory gate is not. See Security. | Run SAST advisory on all PRs; no tool blocks merge yet. | TBD | TBD | TBD |
| Feature-flag seam. Statsig is the standard. LaunchDarkly behind OpenFeature is in more repositories. Whether OpenFeature is the intended vendor-agnostic seam, or LaunchDarkly is being retired, is open. See Feature flags. | Evaluate through OpenFeature; add no direct-SDK flag calls. | TBD | TBD | TBD |
Web scaffolding. Two generators exist: stack (general purpose) and create-strata-web-app (frontend, more in-depth). Which one a new Web project starts from, and whether they converge, is open. |
Pick per project; record the choice in the repository README. |
TBD | TBD | TBD |
| Dependency currency. Whether Renovate or Dependabot is the Web standard, and who owns the major-version backlog, is open. | Keep the tool already in the repository; do not add a second. | TBD | TBD | TBD |
Decided but unwritten
These questions already have an answer in practice. They are documentation tasks with an owner, not open debates.
| Item | What is missing | Owner | Target |
|---|---|---|---|
| Artifact repositories. Two policy documents name different canonical sets. | Write the canonical set down once and reconcile the two documents. | TBD | TBD |
| Access review cadence. The interval and the evidence owner exist in practice. | State both in an engineering-owned document. See Audit responsibilities. | TBD | TBD |
Worked example: the feature-flag seam
The flags question is the clearest example. tradovate/application (app/scripts/openfeature/) and tradovate/client-dashboard (src/openfeature/) both wrap the LaunchDarkly client provider behind OpenFeature. Each ships a README that requires new flags to use OpenFeature and marks legacy useFlags() and useLDClient() calls for migration.
The real decision is whether OpenFeature remains the seam with pluggable providers, or whether the fleet uses one vendor. The pattern below shows what “OpenFeature as the seam” means in code: change the provider, not every call site.
// Evaluate through OpenFeature, never the LaunchDarkly SDK directly.
import { OpenFeature } from "@openfeature/react-sdk";
import { LaunchDarklyClientProvider } from "@openfeature/launchdarkly-client-provider";
// The provider initialises the LaunchDarkly client from the client-side ID.
OpenFeature.setProvider(new LaunchDarklyClientProvider(clientSideId));
const client = OpenFeature.getClient();
// Web-side evaluation is synchronous; the flag value is already cached.
const showNewCheckout = client.getBooleanValue("new-checkout", false);An accountable item states the owner, target, tracking ticket, and interim posture on one line:
- **SAST gate.** SAST on every PR is settled; the mandatory tool is not.
Owner: @security-lead · Target: 2026-Q1 · Tracking: NT-XXXXX
Interim: Semgrep runs advisory on all PRs; no tool is blocking yet.References
- OpenFeature (CNCF), the vendor-agnostic feature-flag standard the flags question turns on.
- Design docs, RFCs and ADRs, the mechanism that closes each question.
- Feature flags, Security, Observability, Audit responsibilities, the settled pages a resolution updates.
Last reviewed: TBD