Skip to content

Latest commit

 

History

History
201 lines (160 loc) · 12.5 KB

File metadata and controls

201 lines (160 loc) · 12.5 KB

Standards Router

Standards metadata

  • ID: router
  • Role: router
  • Level: MUST
  • Applies when: A task must select guidance from this standards library.
  • Does not apply when: The project has not adopted this standards library.
  • Requires: core
  • Specializes: none
  • Verification: Routing fixtures resolve expected modules, exclusions, and dependencies.
  • Canonical owner: STANDARDS-ROUTER.md

Use this file after CORE-STANDARDS.md. Select guidance from observable task conditions and retrieve the applicable required closure.

Concept Map

Start with the shared decision, then follow only its affected details:

  • Design: Architecture covers responsibility and state ownership; Contracts covers invariants, representations, and consumer promises; Security covers trust and permission. Follow their conditional detail links when needed.
  • Develop: Implementation owns the change; Verification owns its evidence; Documentation records durable knowledge. Specialized test techniques are selected separately from an ordinary regression check.
  • Operate and distribute: Build owns artifact production, Release owns distribution promises, and Resilience owns failure and recovery.

Application, boundary, language, and framework profiles refine these concepts. Requires loads an unconditional prerequisite. Specializes names the broader concept refined by a page; it does not mean that the parent loads every child. The tables below and each page's conditional links support further discovery. A reading plan orders required prerequisites. Retrieve refinements when their stated conditions match the task.

Routing Procedure

  1. State the requested outcome and affected artifact.
  2. Select workflow modules for the activities being performed.
  3. Select application, boundary, and language profiles from actual repository facts.
  4. Select topics only when the concern is affected.
  5. Follow each selected module's Requires metadata.
  6. Confirm common exclusions.
  7. If a required fact is unknown, report unresolved routing instead of selecting a convenient default.

Workflow Selection

Condition Select
Change code or standards Implementation
Prove a behavior, contract, or artifact Verification
Investigation or evidence work may delay a sufficient implementation Development Proportionality
Coordinate material sequencing, migration, rollout, risk, or acceptance complexity Planning
Create commits or manage history, branches, or worktrees Commit
Change durable responsibility, design, contract, or operational knowledge Documentation
Change build inputs, outputs, invalidation, native integration, or environment use Build
Select or configure development tools, CI, scheduling, or orchestration Tooling
Ship an artifact or change a published promise Release

A bounded change with a clear objective and acceptance path needs no written plan solely because it crosses files or layers.

Workflow Profiles

Condition Select
Multiple outstanding proposals can become stale before serial integration Concurrent Plan Integration profile

Application Profiles

Condition Select
Develop a reusable library, package, crate, or SDK Library
Change a web interface, rendering, interactions, or frontend state Frontend application profile
Change a launcher command, lifecycle, delegation, or outcome Launcher application profile

Boundary Profiles

Condition Select
Cross foreign memory, handles, callbacks, or FFI Interop boundary profile
Expose host APIs, wrappers, or cross-language representations Language Binding boundary profile
Generate a representation consumed as a program contract Generated Contract boundary profile
Exchange structured messages across processes or independently changing components IPC boundary profile
Read, write, publish, transact, or migrate durable state Persistence boundary profile

Generated Contract Profile Applicability

Select the Generated Contract profile when a schema or generator produces a representation consumed as program behavior, including models, validators, tool definitions, bindings, or executable configuration. A generated text or data file does not select the profile when no program consumer interprets it as a contract.

Select Language Binding separately only when an actual native/host or cross-language representation exists. Select IPC separately only when the representation crosses a process, message, plugin-host, or independently deployed boundary. Select Persistence separately only when a supported consumer observes the representation or state after the producing process or operation ends.

Route the observable task facts through the executable Router projection. Do not replace unresolved boundary, consumer, deployment, or persistence facts with a smaller static module list.

Language Profiles

Condition Select
Change C# tasks, await, continuation scheduling, or thread affinity C# Async profile
Change Rust source, Cargo metadata, or generated Rust artifacts Rust profile
Change Rust public types, conversions, errors, visibility, traits, features, or Rustdoc Rust API profile
Change Cargo dependencies, resolution, auditing, or build-cost measurement Rust Dependency profile
Change Rust release toolchains, packages, publication, or evidence Rust Release profile
Change Cargo formatting, lint, test, benchmark, coverage, or build-script adapters Rust Tooling profile
Change Rust async APIs, backpressure, cancellation, or async resource lifetimes Rust Async profile
Change Rust targets, target-dependent behavior, or support evidence Rust Cross-Platform profile
Change TypeScript source, compiler settings, declarations, or visible contracts TypeScript profile
Change promises, overlapping calls, cancellation, or stale-result handling TypeScript Async profile
Rust unsafe operations, unsafe contracts, or unsafe implementations change Rust Unsafe
Rust untrusted paths, sizing, queues, or listeners affect security Rust Security
Rust crosses a foreign-memory, FFI, or callback boundary Rust Interop
Rust supplies generated host APIs or cross-language representations Rust Language Bindings
No language-specific mechanism changes No language profile

Language profiles specialize mechanisms only; shared policy remains in the applicable general owner.

Framework Profiles

Condition Select
Change Godot object, scene, signal, resource, threading, or lifetime mechanisms Godot framework profile
No framework-specific mechanism changes No framework profile

Topic Selection

Select a canonical topic only when its observable condition is present:

Concern Current owner
Accessibility outcome, user interaction semantics, modality, or conformance obligations Accessibility
Diagnostic purpose, audience, causal identity, context, propagation, retention, disclosure projection, or reporting claim Diagnostics
Runtime decoding, contract evolution, persistence compatibility, version overlap, or degraded outcomes Contracts
Shared mutable state, overlapping work, async failure ownership, cancellation, or shutdown Concurrency
Dependency or service failure, retry, degradation, startup resilience, or recovery semantics Resilience
Filesystem path construction, identity, comparison, or supported-filesystem behavior Cross-platform
Dependency requirement, ownership, selection, resolution, provisioning, update, or removal policy is required, including a decision to implement difficult standardized semantics instead of adopting an established implementation Dependencies
Third-party material is selected, incorporated, adapted, generated from, redistributed, or published Licensing
Performance budget, measurement, optimization, benchmark, resource use, or regression claim changes Performance
Module, layer, service, data/state authority, dependency direction, or runtime composition changes Architecture
Untrusted input, protected operations, sensitive data, credentials, transport security, or dependency trust changes Security

The presence of a topic document in the repository is not an applicability condition.

Conditional Details

After selecting broad concerns, use these conditions to narrow the reading. The executable fact routing.details accepts the canonical IDs below. Known absence is an empty set; unknown conditions remain unresolved. Generated contracts, IPC, persistence, cross-language bindings, and platform verification also select their corresponding details from the existing boundary and task facts. Select a detail page when its corresponding specialized decision is affected.

Condition Select
A change makes structural, abstraction, or terminology decisions Code Design And Ownership
A handle promises immutable results or replay topic.architecture.replay
A change affects schema dialects, generated contracts, or contract version invalidation topic.contracts.schemas
A change projects domain outcomes into a protocol or adapts a protocol boundary topic.contracts.protocols
A change affects contract compatibility, persisted representations, or independently changing consumers topic.contracts.evolution
A change creates a validator, negative fixture, property test, differential test, or other independent oracle workflow.verification.oracles
A claim spans supported targets or requires platform-specific evidence workflow.verification.platforms
Rust bindings adapt events, callback tasks, runtime handles, or executors profile.language.rust.binding-lifecycle
A change selects maintenance channels, publication presentation, or release recovery procedures workflow.release.operations
A graphical user workflow requires smoke evidence workflow.verification.gui

Additional Routing Rules

Condition Select
Maintain this standards library through its authoring interface Standards Authoring Workflow

S1 Rust Library Bug-Fix Route

For a bounded Rust parser repair in a reusable library, retrieve the optional reference reference.routing.bounded-rust-repair. Its stated task facts illustrate conditional selection; derive each project's route from its actual facts.

Invalid Or Legacy Routing

Use canonical owners for policy; legacy entrypoints are navigation only. Report unresolved material facts, conflicting ownership, dependency cycles, or a missing canonical route. Continue independently routable work and resolve the missing qualification before treating the affected route as complete.