Files
ITWorx-Pulse-Public/docs/engineering/ENGINEERING_STANDARDS.md
T
ITWorx Pulse release export bd774932d5
Public source validation / validate (push) Failing after 3m8s
Publish ITWorx Pulse source
2026-09-03 02:09:19 +02:00

3.5 KiB

Engineering standards

Repository shape

Target:

apps/
  web/
  api/
  worker/
  agent/
packages/
  contracts/
  ui/
  test-fixtures/
internal/
  domain modules or Go internal packages
config/
deploy/
tests/
docs/
artifacts/evidence/

Codex may refine the shape through an ADR, but privilege boundaries and clear ownership must remain.

General

  • Optimize for correctness, observability and maintainability.
  • Keep changes vertically complete.
  • Validate external inputs at boundaries.
  • Avoid global mutable state.
  • Use deterministic IDs/fingerprints where required.
  • Use UTC internally.
  • Add correlation IDs to request/job/event paths.
  • Preserve error causes and add context.
  • Never log secrets.
  • Use feature flags only when they have an owner, default and removal plan.

Git and commits

  • Focused commits aligned to task IDs.
  • Commit message format: <TASK_ID>: <imperative summary>.
  • Do not rewrite shared history.
  • No force push or destructive reset.
  • Keep generated evidence out of commits only when too large; summaries remain.
  • Tag releases only after final acceptance.

Go

  • Current supported stable Go version selected during M0 and recorded.
  • go fmt, go vet, static analysis and tests required.
  • Context propagated through I/O boundaries.
  • Errors wrapped with operation context.
  • Interfaces defined near consumers; avoid interface proliferation.
  • Goroutines have ownership, cancellation and bounded lifetime.
  • Worker jobs are idempotent.
  • SQL is parameterized; transactions explicit.
  • Migrations are forward/recovery tested.
  • HTTP handlers contain no core domain logic.

TypeScript/React

  • Strict TypeScript.
  • No any except narrow justified boundary adapters.
  • Runtime validation for external JSON.
  • Components separate data orchestration from presentation.
  • Server state uses a deliberate query/cache layer.
  • Live chart buffers do not live in broad global state.
  • Effects are cancellable and cleanup subscriptions.
  • Accessible semantic HTML first.
  • All user copy goes through localization.
  • Avoid giant components and prop drilling; centralize domain-specific hooks appropriately.

API and contracts

  • OpenAPI/JSON Schema is validated in CI.
  • Breaking changes are versioned.
  • Generated types are reproducible.
  • Error codes are stable.
  • Pagination, filtering and sorting are bounded.
  • Every endpoint has authz tests.
  • WebSocket messages are schema validated.

Database

  • Explicit migrations, no startup auto-mutation outside migration command.
  • Indexes justified by access path.
  • Constraints enforce invariants where practical.
  • JSONB payloads have size/schema limits.
  • Optimistic concurrency for user-edited versioned resources.
  • Timeouts and connection pool limits.
  • Test upgrade, restart, backup and restore.

Configuration

  • .env.example documents non-secret values.
  • Startup validates configuration and reports all invalid fields.
  • Secrets use secret files/runtime injection when possible.
  • No environment-specific values embedded in images.
  • Production and test compose overrides are separate.
  • Feature capability detection is visible in UI/system status.

Observability

Pulse emits:

  • structured logs;
  • internal metrics;
  • health/readiness;
  • job status;
  • trace/correlation IDs;
  • redacted upstream error classes.

Avoid recursive monitoring dependence: an external dead-man check must detect total Pulse failure.

Documentation

Behavioral changes update:

  • relevant specification;
  • API/schema;
  • runbook if operational;
  • evidence;
  • current state;
  • ADR when architectural.