s-m-r-t
Open the s-m-r-t source on GitHub Switch to dark color scheme
← Reference

Reference

Adopt optional typed decisions by package

Optional typed decisions select from declared outcomes. They keep generation, application policy, and human work as separate application behavior.

Verified against s-m-r-t 0.55.16

Check availability before you adopt a package route

The shared decision change and the released package changes are merged on the framework main branch. The site release pinned here predates those routes, and the playground does not run these examples.

  • Use the linked epic and package issues to track package publication. Issue-label suggestions also remain pending in the linked issue; do not configure any route until its package release is available.
  • Keep release versions in package data. Do not copy a version number into application code or documentation.
  • Claim-support work is research. It has no production replacement until a labeled evaluation supports a separate implementation decision.

Configure one server-only decision seam

The shared route accepts a decision client or server configuration. Provider choice, default model, prompt overrides, stop signals, and deadlines stay inside that server boundary.

  • Keep provider keys on the server. Do not place a decision key in public or browser configuration.
  • An application can select a provider and model at the framework, tenant, project, or request level. The narrowest declared choice takes precedence.
  • Pass only the state and offered outcomes that the package needs. Record provider provenance and reported usage with detailed decision results when the package exposes them.
  • Use a stop signal or deadline to end a request. A timeout, transport error, malformed response, or invalid offered value is a configured failure.

Keep generation and tools on their existing routes

Decisions select declared values. Generation still writes open text, and registered tools require the generative route so the model can use those tools.

  • No decision configuration preserves the existing package behavior and public result shape.
  • An uncertainty fallback is an explicit generative tie-break. It does not convert provider or validation failures into a successful result.
  • Decision readiness predicates help a package select a route. They do not grant access, authorize an operation, or form a merge gate.
  • Generated REST, CLI, MCP, and WebMCP surfaces remain application-owned. A decision route does not expose a new transport.

Classify projects and facts conservatively

Projects can select positive, negative, or neutral sentiment. Facts can select a conservative merge or branch outcome when incoming evidence is ambiguous.

  • Sentiment keeps ambiguity and configured errors visible. Do not replace ambiguity with a neutral label.
  • Fact reconciliation preserves low-confidence outcomes. It branches when the merge decision lacks the required confidence, so a decision cannot silently merge facts.
  • Both routes use selected record state and declared options. They do not expose an arbitrary project or tenant data set to a provider.

Assess analytics with complete context

Analytics evaluates selected metrics as a semantic predicate. Deterministic calculations remain the source for values that the application can calculate directly.

  • Document the direction and comparison period with each assessment.
  • An incomplete period or insufficient data produces its explicit state. Do not present either state as a positive or negative trend.
  • Use a generative uncertainty fallback only when the route declares one. Preserve the deterministic calculation and selected metric inputs.

Triage support without replacing human control

Support can classify plan severity, sensitivity, and an optional allowed category vocabulary. It still uses generation for an answer and existing policy for a case action.

  • An empty category vocabulary preserves free-category generation. A nonempty vocabulary limits selected categories to its offered values.
  • An injected application boundary remains authoritative. Decision routing does not bypass human-entered triage, policy gates, append-only audit, or human handoff.
  • Configured provider and validation failures record a failed classification and use the existing handoff path. A tie or conservative sensitivity result also requires handoff.
  • Triage confidence is audit-only and is not a calibrated quality measure or an answer confidence threshold.

Use image metadata and track pending label suggestions

Images can select tags and subjects from separate curated vocabularies. Project issue-label suggestions are pending and will select only from an optional repository vocabulary when released.

  • When the issue-label route is released, selection can return many offered labels, no label, or an uncertain result. It will never return a label outside the supplied vocabulary.
  • For that pending route, an absent vocabulary will keep legacy generation. An explicit empty vocabulary will select no values and will not call the decision provider.
  • Image metadata selection uses the name, description, MIME type, and dimensions. The existing buffer parameter is unused and does not provide pixel or vision understanding.
  • Generated image descriptions and alt text remain generative output. Keep decision probabilities separate from the existing generated-category confidence.
  • Resolver and provider failures propagate. Do not turn them into an empty successful selection.

Keep claim support in research until evidence is ready

Claim-support research tests a hybrid that preserves support status, matched evidence IDs, rationale, contradiction handling, uncertainty, and fallback behavior.

  • The research uses candidate-scoped evidence. Unsupported evidence in that set does not mean a claim is universally false.
  • A production change needs live labeled evaluation, attribution evidence, rationale evidence, and a migration for mixed evidence consumers.
  • Generation continues to extract claims and sources. Publication and governance policy stay unchanged.