Skip to main content

Five development lenses

TL;DR Fidelity, Extensibility, Reliability, Productivity, and Sustainability are questions for examining smocket's direction, not scores or work labels. Each lens highlights one part of reaching v1.0.0 without replacing the documents that own the project's scope, evidence, differences, and decisions.

The examples below illustrate current practice. They are not a feature inventory or a claim that work under a lens is complete.

Fidelity

  • Meaning. Within smocket's documented scope, observable behaviour and public types should match measured Socket.IO. Unverified behaviour is not guessed, and intentional differences are stated, as required by ADR 0000.
  • Why it matters. A test double loses value when substituting it for Socket.IO alone changes an application's result.
  • Current example. The conformance report comes from cases run against both targets. The differences list separates deliberate divergences, smocket-only APIs, and known unplanned gaps.

Extensibility

  • Meaning. Test-specific capabilities should extend smocket without silently changing its default compatible behaviour. Smocket-only surfaces remain distinct and bounded.
  • Why it matters. A test affordance should not make the default path harder to trust or require a core edit for every use case.
  • Current example. Adapter registration exposes routing, while default delivery stays in the core unless an adapter uses the optional scheduling hook. DelayingAdapter uses it without reordering a socket's stream, as recorded in ADR 0018.

Reliability

  • Meaning. Reliability means repeatedly verifying promised results after changes. It does not mean network stability, which is outside smocket's scope.
  • Why it matters. A result checked once can regress as smocket, Socket.IO, runtimes, and the test suite change. Its evidence must remain executable and synchronized.
  • Current example. CI runs shared behaviour cases against both targets. The conformance report is written only after both pass, and its check fails when the generated report has drifted from the suite.

Productivity

  • Meaning. Smocket aims to reduce the setup and maintenance needed to write, change, and understand Socket.IO application tests.
  • Why it matters. Behavioural accuracy alone does not prove that adopting the mock makes a user's testing workflow easier.
  • Current example. The test-runner integration guide documents how a test can substitute smocket-client while the application keeps its socket.io-client import. The drawing-game maintenance study records the source needed at each stage of one handwritten workflow. Those measurements apply only to that workflow and are not a universal productivity measure.

Sustainability

  • Meaning. Smocket's public commitments and development practices should remain maintainable after v1.0.0.
  • Why it matters. Unsupported promises eventually separate documentation, tests, and runtime behaviour. The project must keep explaining what it supports and how it knows.
  • Current example. Scope, conformance, and differences own separate claims; recurring choices live in decision records. ADR 0019 defines how published promises affect release classification.