Specira sample artefact. Rendered from the governed default template on a fictional company. Names, figures and dates are illustrative.All artefacts →
SAMPLE
seeded demo data · specira.ai
Specira Architecture: Governed Template Rendering
Governed template rendering reference: Architecture default v2 (draft) definition d932f49d…657c
Architecture · Project artifact SPECIRA

Architecture: Dispatch Modernization

Meridian Field Services: instructional example, not project evidence

Draft · watermark policy: draft_only template architecture v2 · pack: specira_default_delivery depth: standard · tier: mid
§1

Solution Strategy, Quality Goals & Complexity Tier

mandatory 3 decisions2 evidence rules validators: complexity_tier_declared_with_chapter_dispositions · decisions_resolve_to_records

The shape in one exec-readable paragraph, the decisions that made it (each a link, never restated rationale), and the tier declaration: this template covers the most complex case, and every chapter it scales down states the trigger value that justified it. Silence is never a tier.

A modular web system around one live board: a browser dispatch board, one backend API, a recommendation module behind a provider gateway, a telematics adapter, and a notification worker. Chosen over microservices for a five-hub scale (ADR-1[7]). The shaping decisions: build the board and the recommendation core, reuse and buy the rest (ADR-2[7], from the BRD options analysis[3]); propose-only assignment posture (ADR-3[7]); distance proxy over live traffic (ADR-4[7]); one provider gateway for every model call (ADR-5[7]).

Decision · complexity tier: mid Chapter dispositions below, each with its trigger; agreed with E. Sandoval (engineering lead), July 12, 2026. Estate disposition (one legacy system) rides in the sourcing register rather than a separate transition chapter.
ChapterDispositionTrigger value
Landscape diagramomitted 4 systems in scope: one context view reads; landscape engages past ~5 to 7
§7 Data architecturefull Job system-of-record is contested until cutover
§8 Integration architectureengaged 3 external integrations, one asynchronous
§9 API surfacecollapsed One consumer class beyond the team (technician mobile clients); partner webhooks re-engage it at cutover
§6 Component sourcingfull Two vendor rows with exit costs, two internal-reuse rows, one extension, one elimination

Quality goals, ranked: board liveness · assignment integrity · feed-loss resilience; each carries a numeric scenario in §11. Deliberately not built: event sourcing beyond the assignment log, multi-region; the five-hub scale does not ask for them.

§2

System Context (C4)

mandatory 1 decision1 evidence rule validators: relationships_labeled_with_intent · diagrams_generated_from_versioned_model_source

The system as one box with every user role and external system around it, generated from the committed model workspace, so this view and the container view can never drift apart. Every arrow states intent; the dependency index points each external system at its full contract in §8.

System Context · Dispatch Modernization (2026-07-16)Dana[Person] Dispatcher : assigns jobsTelematics vendor[Software System] Fleet position feedNotification gateway[Software System] Delivery to phonesLegacy scheduler[Software System] Read-only in pilotPriya[Person] Ops manager : reviews exceptionsMarcus[Person] Technician : mobile day viewDispatch Modernization[Software System] Live dispatch board with assignmentrecommendationsAssigns jobsReviewsexceptionsStreams rawpositionsDeliversnotificationsAssignment tophoneConfirmsassignments[mobile day view]Historical reads,pilot only

System context, generated from meridian.dsl (one Structurizr workspace produces every view), auto-laid-out, stamped 2026-07-16, commit-linked. Legend: teal round = person, teal box = the system, grey box = external system. Seven elements, within the ~9-element cap. Fallback: Dana and Priya dispatch via the board; Marcus works and confirms via mobile; telematics feed in, notifications out, legacy scheduler transitional.

External systemWhat flowsOwnerPostureContract
Telematics vendor feedVehicle location data, inbound S. Grewal (fleet)Load-bearing · degradation defined INT-1
Notification gatewayAssignments out, confirmations back T. Fontaine (accounts)Replaceable · standard webhook surface INT-2
Legacy schedulerJob master, nightly, pilot only N. Duval (legal & ops) Transitional · retired at cutover (decision[8]) INT-3
Decision · boundary Inside: suggestion, assignment, and confirmation flow. Outside, deliberately: payroll, job pricing, and customer scheduling. They stay in their systems of record; this system reads what it needs through the contracts in §8.
§3

Building Blocks: Containers & Responsibilities

mandatory 2 decisions1 evidence rule validator: containers_have_technology_labels

Every container, its single responsibility, and what it owns that nothing else does. Overlap between containers is a finding, not a style. Component detail is earned, not defaulted; one container has it here. No code-level diagrams, ever: they rot.

ContainerTechnologySingle responsibilityOwns exclusively
Dispatch boardBrowser SPA, typed web stack Render jobs, suggestions, assignment actionsThe dispatcher experience
Dispatch APITyped backend service Job intake, assignment recording, event logAssignment integrity
Recommendation moduleIn-process module behind the provider gateway Rank qualified technicians with reasons Suggestion logic (FRD[1])
Telematics adapterQueue-fed worker Normalize the vendor feedLocation staleness flags
Notification workerAsync worker Deliver and confirm technician assignmentsDelivery retries
Operational storePostgreSQL 16 Event log and operational dataDurability
Decision · component detail earned once Only the recommendation module gets component-level treatment: its gate, weighting, and urgency pieces are separately testable and separately owned. Every other container is a single coherent thing; drawing its insides would be decoration.
§4

Container Diagram & Runtime View (C4)

mandatory 1 decision1 evidence rule validators: diagram_element_cap_split_never_shrink · one_abstraction_level_per_diagram

The container view from the same model workspace as §2 (same source, no drift), plus one sequence per critical runtime flow. Not ten sequences: the two that carry the system's promises. Per-requirement behavior stays in the FRDs, referenced not restated.

Containers · Dispatch Modernization (2026-07-16)Dispatch Modernization[Software System]Event log and data[Container: PostgreSQL 16] Assignments, jobs, 60s positioncacheDispatch board[Container: Web SPA] Jobs, suggestions, assignmentactions; never-blank client cacheDispatch API[Container: Backend service] Job intake, assignment recording,idempotent event logRecommendation module[Container: In-process module] Gate + weighted ranking behind theprovider gatewayTelematics adapter[Container: Queue worker] Normalizes vendor feed, stalenessflagsNotification worker[Container: Async worker] Delivers and confirms assignmentsDana[Person] Dispatcher : assigns jobsPriya[Person] Ops manager : reviews exceptionsTelematics vendor[Software System] Fleet position feedNotification gateway[Software System] Delivery to phonesAssigns jobsReviewsexceptionsAuthenticatedcalls[HTTPS]Rankedsuggestions[sync, in-process]Recordsassignments,reads cacheWritesnormalizedpositionsStreams rawpositionsAssignmentevents[async]Deliversnotifications

Container view, generated from meridian.dsl, auto-laid-out, stamped 2026-07-16. Technology label on every box; every relationship states intent. Twelve elements, inside the 15-element hard ceiling; past it this view splits by domain, it does not shrink. Fallback: board ↔ API (authenticated calls); API → recommendation module (in-process, synchronous); adapter → API (normalized positions); API → store (events); worker ← store events → technician notifications.

Decision · synchronous where lateness is failure The API consults the recommendation module in-process and synchronously; a suggestion is worthless late (ADR-6[7]). Delivery is asynchronous: notification retries never block assignment recording.

Runtime view, critical flow 1: job to confirmed assignment

Marcus (technician)Notification workerEvent logRecommendation moduleDispatch APIDispatch boardDana (dispatcher)Marcus (technician)Notification workerEvent logRecommendation moduleDispatch APIDispatch boardDana (dispatcher)job JOB-2214 arrives at intakerecommendation module down? API serves cached list · board never blanksfetch suggestions (authenticated)1rank qualified technicians (in-process, sync)2three suggestions with reasons3suggestions render < 1 s budget4accepts suggestion T-0455record assignment (idempotent by job id)6append assignment event7assignment event (async)8notify day view, retry with backoff9confirmation10append confirmation event11

Sequence generated from committed source, stamped 2026-07-16. Solid arrows = synchronous calls; dashed = responses and async events. The closing note carries flow 2 in miniature: recommendation module down → the API serves the cached technician list and the board never blanks; full failure semantics in the FRD error catalog[1].

§5

Technology Stack

mandatory 1 decision1 evidence rule validator: ai_capabilities_model_agnostic

Per container: language, framework, and the load-bearing dependencies with versions. Every non-obvious choice carries its decision link. AI capabilities are stated model-agnostically: the provider abstraction is the architecture; vendor names are configuration behind it.

ContainerStackLoad-bearing versionsDecision
Dispatch boardTyped web SPA on the Meridian design system design tokens v4.2 reuse · §6
Dispatch APITyped backend framework, event log on PostgreSQL PostgreSQL 16.3 ADR-7 boring storage[7]
Recommendation module Same runtime as the API; model calls only through the provider gateway. Capability contract: ranking with reasons, sub-second budget; the vendor behind it is configuration gateway policy v1 ADR-5[7]
Telematics adapterQueue-fed worker on the platform queue queue runtime v3 default-obvious
Notification workerAsync worker over the vendor gateway's webhooks vendor API 2024-11 ADR-9[7]
§6

Component Sourcing & Provenance

mandatory 2 decisions1 evidence rule validators: every_component_carries_sourcing_class · build_rows_show_rejected_alternatives · vendor_rows_carry_exit_cost_and_terms

Where every piece comes from: built from scratch, an extension of something that exists, a commercial product, an adopted open-source project, or another team's sub-system reused. The default order is reuse before buy, buy before build; a Build row must show what it evaluated and rejected. This table is the counter to reinventing what the company already has.

ComponentClassEvidence the class demandsDecision
Dispatch boardbuild Owner: dispatch product team. Differentiator: the union-aware assignment workflow no vendor console models. Evaluated and rejected: two vendor dispatch consoles from the BRD options analysis[3] (fee curve, no propose-only mode) and the legacy scheduler's screens (no live suggestions). Maintenance cost accepted in the BRD totals. ADR-2
Recommendation modulebuild Core differentiating logic, the thing the project exists to create. Rejected: vendor console ranking (opaque, no reason surface); maintenance carried with the board. ADR-2
Mobile day viewextend Base system: the existing Meridian field app (field-tools team). Debt taken on: its aging offline sync. Migration trigger: if the 2027 sync rework lands, revisit (§16). ADR-8
Notification gatewayvendor Enterprise messaging platform already under contract. License tier covers pilot volume; term to March 2028; exit cost low; standard webhook surface, data portability trivial. Feature-gating risk: delivery analytics sit behind the next tier (§16). ADR-9
Telematics feedvendor Fleet tracking vendor; exit cost material: hardware in 300 vehicles. Held at the adapter seam so swap cost stays contained; contract renewal January 2027 (§16). INT-1
PostgreSQL 16open-source Permissive license; managed service; healthy community; fork risk negligible. Inventory entry SBOM-041[9]. ADR-7
Meridian design systeminternal reuse Owning team: platform experience. Stability contract: versioned design tokens, breaking changes announced a release ahead. Integration cost: days; a rebuild would be months. ADR-2
Meridian SSOinternal reuse Owning team: identity. Interface stable; the mobile API consumes standard tokens (§9). ADR-2
Legacy schedulereliminate Estate disposition: job master during pilot only; retired at cutover with its nightly transfer (INT-3). cutover
Evidence · the posture held Reuse before buy, buy before build: two reuse rows and two vendor rows carry the undifferentiated load; the two Build rows are the differentiators, and both show their rejected alternatives. No departure from the default posture this project.
§7

Data Architecture

mandatory · engaged in full this project 2 decisions1 evidence rule validators: shared_entities_name_single_system_of_record · multi_consumer_exchanges_carry_data_contracts · entity_lifecycles_run_create_through_purge

Who owns each entity, how data lives and dies, and the contracts on every exchange with more than one consumer. Engaged in full here because job ownership is contested until cutover; below roughly five shared entities and with no contest, this chapter is one table and says so. Physical schemas stay in the low-level design.

Conceptual entities: Job, Assignment, Technician, Position, ReasonCode: the business-readable model; the attributed logical model travels with the LLD.

System of record: one writer per entity

EntitySystem of recordEveryone else holdsCopy freshness
Job Legacy scheduler during pilot; dispatch API at cutover: the contested case that engaged this chapter API references job records until cutover day nightly (INT-3)
AssignmentDispatch API event log, sole writer Board and day view render projectionspush, ≤ 5 s
TechnicianMeridian HR system Board holds a read copy1 hour
PositionTelematics adapter (normalized) API cache15 s
ReasonCodeDispatch API configuration nonen/a
Decision · the contested entity, resolved by CRUD The job CRUD matrix settles authority: the scheduler creates and updates jobs through pilot; the API only references. On cutover day the create authority moves to the API and the scheduler is retired: one entity, one writer at every point in time (Pilot cutover plan[8]).

Lifecycle: create through purge, each transition with its authority

EntityCreatedUpdatedArchived / purgedAuthority
PositionOn feed ingestNever (immutable readings) Purged at 30 daysTelemetry retention policy
AssignmentAt acceptance or override Never (event-sourced entries only) Archived at 7 years Enterprise contracts (PRD constraints[2])
JobAt intakeStatus transitions Archived with its assignmentsOperations policy

Data contract: the one multi-consumer exchange

DC-1: telematics feed → adapter (full contract attached[5])
schemaTypes, nullability, and enums in the attached contract. Field additions are non-breaking; removals and type changes are breaking
semanticsTerms tied to the project glossary: "position" is a vehicle reading, never a technician's assignment state
freshness15 seconds end-to-end; positions older than 60 seconds carry a stale flag the board must render
ownersProducer: vendor integration team · consumer: dispatch platform · escalation: S. Grewal
change ruleBreaking changes owe consumers a 90-day deprecation window

Lineage. Positions: vendor feed → adapter (normalize, staleness flag) → API cache → board and recommendation inputs, an owner at every hop, so a contract violation's blast radius is traceable. The idle-time KPI reads from assignment events, not positions; measurement methodology lands with the BRD's success criteria[3].

§8

Integration Architecture

conditional · engaged: 3 external integrations, one asynchronous 2 decisions1 evidence rule validators: integration_rows_carry_full_contract_columns · async_flows_name_retry_and_dead_letter

An integration is a contract, not an arrow. One full contract card for the load-bearing flow, the register for all three: protocol, auth, format, trigger, volume, expectations, owner, failure and retry semantics. A blank column is a decision not yet made and is flagged as such. Zero to two synchronous integrations would collapse this chapter to a paragraph; nothing integrates by shared database here.

Contract card: INT-1, the load-bearing flow

INT-1: telematics vehicle feed
source → targetVendor cloud → telematics adapter
styleAsynchronous messaging: vendor push into the platform queue; chosen over polling for freshness at volume
protocol · authAuthenticated webhooks · signed tokens rotated quarterly
formatVendor JSON, normalized at the adapter, the seam that contains swap cost (§6)
trigger · volumeContinuous push · ~400 positions/minute peak · vendor rate cap 1,000/minute
expectations15-second freshness · 99.5% monthly availability (DC-1[5])
ownerS. Grewal (fleet)
failure & retryQueue buffers 10 minutes, then the stale-flag path engages (FRD degradation[1]); exponential backoff, dead-letter after six attempts, alert to engineering
statusContracted

Register: all integrations

IdFlowStyleTrigger / volumeExpectationsOwnerFailure semanticsStatus
INT-1Telematics feed → adapter Async messagingPush · 400/min peak 15 s · 99.5%S. Grewal Buffer 10 min → stale flags; dead-letter at 6contracted
INT-2Worker → notification gateway Async messagingPer assignment event Delivery ≤ 60 sT. Fontaine Backoff retries; dead-letter alerts dispatch; a day-long outage degrades to board-only confirmation; impact bounded (FRD[1])contracted
INT-3Legacy scheduler → API (job master) File transfer · transitionalNightly batch Pilot onlyN. Duval Missed drop re-runs at 06:00; pilot proceeds on prior master retires at cutover
Decision · mediation & the transitional flag Point-to-point, no bus: three integrations do not justify one (ADR-10[7]). INT-3 is named transitional and carries its retirement date (cutover plan[8]): a nightly file transfer that outlives its plan is how shadow coupling becomes permanent.
§9

API Surface & Governance

conditional · collapsed: one consumer class beyond the team 2 decisions1 evidence rule validators: api_catalog_entries_resolve_spec_owner_consumers · api_deprecation_policy_has_timeline

Engaged whenever an API is consumed outside the team that builds it. Here that is one consumer class (technician mobile clients on the public internet), so the chapter runs in collapsed form under its full heading: catalog, versioning promise, gateway shape. Partner webhooks at cutover re-engage it in full.

APISpecificationOwnerStabilityAuthConsumers
Dispatch API: mobile surface published spec[6]: the spec is the contract; this catalog indexes it Dispatch platform teamstable Meridian SSO tokens Technician mobile clients (public internet)

Versioning promise: path-versioned; a deprecated version lives 180 days with announce → migrate → remove dates published to the field-tools team (ADR-11[7]). Gateway: external mobile traffic enters through the managed edge; in-process calls stay internal; no per-client shaping yet (one client class).

Re-engagement note: partner webhooks land at cutover, and this chapter then runs in full: per-partner registration, rate limits (§17), and the external consumer register.

§10

Architecture Decision Records

mandatory index only · decisions live in records validator: decision_register_complete_both_ways

The index, not the decisions: every record referenced anywhere in this document appears here, and every row resolves to its full record in the decision log[7]. Superseded decisions stay listed with their successor; history is never rewritten.

IdDecisionStatusDateDrivers, one line
ADR-1Modular monolith over microservices accepted2026-07-04Five-hub scale; one team
ADR-2Build board & recommendation core; reuse and buy the rest accepted2026-07-02 Union rules, vendor fee curve (BRD[3])
ADR-3Propose-only assignment posture accepted2026-07-02 Union clarification pending; revisit Aug 1
ADR-4Distance proxy over live traffic accepted · pending shadow trial2026-07-06 Cost; validated by RQ-041[11]
ADR-5Provider gateway for all model calls accepted2026-07-08 One policy, guardrail, and audit point
ADR-6Synchronous suggestions accepted2026-07-08A suggestion is worthless late
ADR-7Boring storage: PostgreSQL 16 accepted2026-07-04Operational familiarity
ADR-8Extend the Meridian field app for the day view accepted2026-07-10 Reuse over rebuild; offline-sync debt accepted (§16)
ADR-9Notification via the contracted messaging vendor accepted2026-07-10 Undifferentiated; exit cost low
ADR-10Point-to-point integration, no bus accepted2026-07-12Three integrations
ADR-11Mobile API path-versioning, 180-day deprecation accepted2026-07-12Field app release cadence
§11

Quality-Attribute Scenarios

mandatory 1 decision1 evidence rule validator: quality_scenarios_have_numeric_response_measures

Stimulus-response scenarios with numbers; an attribute without a numeric response measure is an aspiration, not architecture. Each scenario names the structural mechanism that satisfies it and the requirement it supports.

AttributeStimulus (environment)ResponseMeasureMechanismSupports
Board liveness Job created at peak intake (normal ops) Job visible on every hub board ≤ 5 s, p95 Push updates, no polling PRD experience constraints[2]
Feed-loss resilience Telematics feed silent 10 minutes Assignment flow continues; proximity dropped and flagged 0 blocked assignments Cached last-known list FRD degradation[1]
Assignment integrity Duplicate acceptance race Exactly one assignment stands 0 double-assignments over the pilot Idempotent event log FRD interface behavior[1]

Scale frame: five hubs, 1,500 jobs/day, 400 technician positions/minute; first expected bottleneck at adapter fan-in (§13). Attributes deliberately not driving the shape: multi-region availability, sub-100-millisecond anything.

§12

Data Flow & Privacy Boundaries

conditional · active: AI-powered scope, personal location data 2 decisions1 evidence rule validator: dataflow_marks_privacy_boundaries_when_active

Where data enters, moves, is stored, and leaves, with every privacy boundary marked and the data class named at each crossing. Drawn at boundary altitude and consistent with §7's lineage; the model provider sits behind one gateway so every call inherits the same policy, guardrails, and audit trail.

Technician devices

Model provider

Meridian dispatch platform · Canada residency

Telematics vendor cloud

PB-1 ingress boundary
signed webhooks

normalized positions, 15 s

positions

anonymized ranking inputs

PB-2 provider boundary
no personal data crosses

assignment + reason code

assignment events

assignment, confirmation back

Vehicle feed
location = personal data

Telematics adapter
normalize, staleness flag

API position cache
60 s TTL, purge 30 d

Dispatch board

Assignment event log
retain 7 y

Notification worker

Provider gateway
anonymized codes only

Ranking capability

Mobile day view

Data flow with privacy boundaries, generated from committed source, stamped 2026-07-16. Legend: dashed amber = the residency zone; PB-1 feed ingress (location = personal data, Canada residency), PB-2 provider boundary (anonymized codes only). Cylinders are stores with their retention. Fallback: feed → adapter → cache → board; board → event log → worker → devices; cache → gateway → model provider, anonymized.

Decision · what may cross to a model provider No location and no personal data cross PB-2: ranking inputs are anonymized technician and job codes; the gateway enforces it structurally (ADR-5[7]). Guardrails sit at the gateway, not per feature: one place to audit.

Obligations on the diagram: location data stays in Canada (enterprise contracts[2]); retention matches §7's lifecycle: positions purged at 30 days, assignment history archived at 7 years.

§13

Runtime Concerns: Scale, Caching & Resilience

mandatory 1 decision1 evidence rule validator: scale_claims_carry_numbers_and_sources

The load shape in numbers, the first bottleneck beyond it, and what stays up when each load-bearing dependency is down. Caching lives here because caching is a scaling decision, not a separate discipline.

Built for: five hubs, 1,500 jobs/day, 400 positions/minute, with tenfold headroom at the API. First bottleneck: adapter fan-in beyond 2,000 positions/minute, the revisit trigger, tied to the hub-six question (§17). Caching: the technician list is cached client-side (the never-blank fallback) and positions are cached in the API for 60 seconds; invalidation is push-on-assignment-events. Degradation: per dependency, reconciled with the FRD error catalog[1] and §8's failure columns: feed silent means proximity drops with flags, never blocked assignments; notification outage degrades to board-only confirmation.

§14

Observability

mandatory 1 decision1 evidence rule validator: observability_covers_every_scenario_measure

Every quality scenario's measure has a signal that observes it; an unobserved scenario is untestable. One correlation id tells a job's whole story.

Correlation: an id minted at job intake carries through suggestion, assignment, and notification. Signals: suggestion latency distribution, feed staleness, assignment event lag, notification delivery rate, dead-letter depth per integration; §11's three measures each map to one. Paging: feed silent > 10 minutes pages the engineering lead; suggestion latency breach surfaces per the FRD threshold. Procedures live in the operations runbook[4].

§15

Deployment View

mandatory 1 decision1 evidence rule validator: deployment_points_to_runbook_never_duplicates

One table, pointer-first: where each container runs and what environments exist. Everything operational (deploy, rollback, credentials) lives in the runbook, linked never duplicated.

ContainerRuns onEnvironments
Board · APIManaged cloud, hub region dev · pilot (Toronto) · production: operations runbook[4]
Adapter · notification workerBeside the API
PostgreSQL 16Managed service
§16

Architectural Risks & Accepted Debt

conditional · active: material risk and accepted debt exist 1 decision1 evidence rule validator: risks_have_owner_and_revisit_condition

Each item with the trigger that makes it bite, an owner, and a revisit condition; none is a vague worry. Sourcing-borne exposures from §6 surface here. An empty risk section is omitted, never padded.

ItemTypeTriggerOwnerRevisit
Propose-only posture may need rework if the union clarification permits automation; contained in the recommendation module by design debtUnion answer (PRD open questions[10]) A. ReyesAug 1, 2026
The field app's aging offline sync rides into the extended day view (ADR-8[7]) debt2027 sync rework landing Field-tools team2027 planning
Single telematics vendor with material exit cost (hardware in 300 vehicles); mitigation is the adapter seam and the dead-letter buffer (§6, §8) riskContract renewal S. GrewalJan 2027
Notification delivery analytics gated behind the vendor's next license tier (ADR-9[7]) riskDelivery disputes exceed one per month T. Fontaineon trigger
§17

Open Questions

mandatory1 decision

Owned and dated, with the decisions or containers each blocks; an unowned question is not tracked.

QuestionOwnerAnswer byBlocks
Does the adapter need vendor-push or polling at hub six and beyond? E. Sandoval (engineering lead)Aug 15, 2026 The adapter scale commitment only (PRD[10])
Do partner webhooks at cutover require per-partner rate limits? E. SandovalSep 30, 2026 §9's re-engagement, not the pilot

Omission note, how a scaled-down chapter renders on a simpler project: "§8 Integration Architecture (collapsed): this system has one synchronous integration (payments provider), contracted in the dependency index. Trigger: below the three-or-async threshold. Rationale recorded in adaptation event #3."

Refs

References & Package Contents

Package items travel in the same export bundle; workspace items link into Specira where the governed record lives.

In this export package

package [1] Functional spec: Recommendation rules (FR and ERR identifiers, degradation) ./frd-recommendation-rules.docx
package [2] Product Requirements Document: Dispatch Modernization ./prd-dispatch-modernization.docx
package [3] Business Requirements Document: options considered, success criteria ./brd-dispatch-modernization.docx
package [4] Operations runbook: deploy, rollback, paging procedures ./operations-runbook.html
package [5] DC-1: telematics feed data contract (schema, quality rules, change rule) ./contracts/dc-1-telematics-feed.html
package [6] Dispatch API: mobile surface specification ./api/dispatch-mobile-openapi.html

In the Specira workspace

specira [7] Decision log: ADR-1 through ADR-11 resolve here app.specira.ai/projects/dispatch-modernization/decisions
specira [8] Decision: pilot cutover plan (job authority transfer, INT-3 retirement) app.specira.ai/projects/dispatch-modernization/decisions/93
specira [9] Software inventory: SBOM-041, PostgreSQL 16 entry app.specira.ai/projects/dispatch-modernization/inventory/SBOM-041
specira [10] PRD open questions: union clarification, tracking-feed guarantee app.specira.ai/projects/dispatch-modernization/artifacts/prd#open-questions
specira [11] Requirement RQ-041: distance-proxy shadow trial app.specira.ai/projects/dispatch-modernization/requirements/RQ-041
Generated by Specira · template architecture v2 (draft) · pack specira_default_delivery lineage d932f49d…657c · page 1 of 16