orbyn-stack-selection · git:20261101.8be107b · 2026-11-01 · sha256 19431967feed4f62
orbyn-stack-selection git:20261101.8be107bA
Immutable. This exact content never changes and is served at /api/v1/blob/19431967feed4f62.
--- name: orbyn-stack-selection description: "Choose or reassess a language, framework, database, runtime, hosting or build-versus-buy option from project constraints and current primary evidence. Produce a decision with operating and migration costs; ordinary implementation keeps the established stack." --- # Select technology for this project Use for an explicit technology recommendation, greenfield design, replacement proposal or a demonstrated mismatch in the current stack. Read the consuming project's instructions and [stack map](../orbyn-workflow/references/project-policy.md#stack-and-ownership), then use [how](../how/SKILL.md) to establish what already exists. Leave the stack alone for a routine feature or a popular new release. ## Method 1. **Ground the decision.** Record the user outcome, present architecture, actual team/tooling knowledge, deployment targets and measurable constraints. Identify hard requirements first: platform/offline support, data residency, license policy, consistency, accessibility, latency/throughput budgets, reliability/recovery, integration and support lifetime. Separate requirements from assumptions and preferences. Treat existing code as evidence and migration cost, not an automatic veto on better alternatives. 2. **Start the local [decision record](references/decision-record.md).** For a small choice, a few populated rows are enough, with no ADR ceremony. Resolve a consequential missing constraint with the human while continuing independent research. Invoke research and architecture skills yourself rather than asking the human to. 3. **Compare a bounded set:** usually the existing/default option and one or two credible alternatives. Use [research](../orbyn-research/SKILL.md) for current official documentation, source, release/support status, deployment limits, licensing and relevant advisory evidence. Establish fit and measured performance from that evidence, not popularity or vendor claims. 4. **Disqualify options that violate hard requirements** before scoring preferences. 5. **Compare the complete path:** client/runtime, API, persistence, identity, background work, deployment, observability and maintenance. Mark absent layers inapplicable; adding a queue or Kubernetes requires a concrete need. Include managed versus self-managed operations and build versus buy where relevant, including exit/data export and ongoing ownership. File counts alone are insufficient to select a language. 6. **Score in a small criteria matrix** with evidence and confidence. Weights can make an explicit trade-off readable. Do not invent precise scores for unknown costs or let a weighted total override a failed hard constraint. The [workload prompts](references/workload-prompts.md) identify questions to check, not a ranked menu of universally best products. 7. **Think through the three horizons below.** 8. **Resolve uncertainty with the cheapest observation** that could change the recommendation. A documented limit may settle it; a benchmark needs comparable workload/hardware/versions and correct completed work. Run a bounded disposable spike only within authorized scope. Record what was actually measured versus assumed or documented. 9. **Return** a recommended option, reasons tied to requirements, rejected alternatives, material unknowns, validation evidence, a revisit trigger and a fallback if a critical assumption fails. See the [synthetic decision](examples/offline-service.md) for a complete small case. ## Three horizons 1. **Delivery now:** supported versions, team learning, dependencies, interfaces, data ownership and the smallest useful implementation. 2. **Operation next:** expected workload, capacity/latency budget, incidents, backup/restore, upgrades, security ownership and recurring total cost. 3. **Change later:** API/data portability, migration/rollback or roll-forward, compatibility windows, offboarding and a concrete trigger to revisit the choice. For the third horizon, identify the future constraint and keep a proportionate seam or exit path today instead of building speculative scale infrastructure. ## Boundaries - Never use an external production account, subscription or paid provider simply because an option appears in a comparison. - A recommendation or spike is not permission for a rewrite, dependency rollout, public release or deployment. Preserve a request for research/review only as a reviewable decision; do not implement the candidate. - Raw clones belong in ignored reference storage under [upstream review](../orbyn-upstream-review/SKILL.md). Do not execute downloaded installers/hooks merely to read their source. - Reading a repository does not authorize installing its dependency. - Offline work uses the local guidance and project pins: label support/pricing/advisory freshness unverified and keep any decision that depends on it provisional. A moving URL is not proof of the installed version. ## Hand off Hand the decision to [architect](../architect/SKILL.md) for contracts, to [orbyn-plan](../orbyn-plan/SKILL.md) for sequencing, and to the actual [language guide](../language-best-practices/SKILL.md), backend, migration, UI and CI owners for implementation. When [implementation comparisons](../orbyn-research/references/comparable-implementations.md) inform a build-versus-buy or dependency choice, state why adoption, permitted code adaptation, independent implementation or reuse of the local pattern fits the constraints.