kshana 0.9.0 → 0.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,12 +1,13 @@
1
1
  <p align="center">
2
- <img src="docs/assets/kshana-mark.svg" alt="Kshana mark — a precision reticle hung from the Devanagari shirorekha" width="104" height="104">
2
+ <img src="docs/assets/kshana-mark.svg" alt="Kshana mark — a precision reticle hung from the Devanagari shirorekha" width="96" height="96">
3
3
  </p>
4
4
 
5
- <h1 align="center">
6
- <img src="docs/assets/kshana-banner.svg" alt="Kshana — the precise instant. Open, reproducible hybrid quantum/classical PNT performance simulation." width="760">
7
- </h1>
5
+ <h1 align="center">Kshana</h1>
8
6
 
9
- <p align="center"><em><strong>Kshana</strong> · <span lang="sa">क्षण</span> — Sanskrit for <em>the precise instant</em>, the smallest measure of time.</em></p>
7
+ <p align="center">
8
+ <strong>क्षण</strong> — Sanskrit for <em>the precise instant</em>, the smallest measure of time.<br>
9
+ Open, reproducible hybrid quantum / classical PNT performance simulation.
10
+ </p>
10
11
 
11
12
  <p align="center">
12
13
  <a href="https://ashfordeou.github.io/kshana/"><img src="https://img.shields.io/badge/playground-try%20in%20browser-2dd4bf" alt="Live playground — run in your browser, no install"></a>
@@ -34,36 +35,14 @@ and every sensor parameter is traceable to a published source.
34
35
  *Free and open source under Apache-2.0, professionally developed and maintained by
35
36
  Ashforde OÜ — commercial support, integration, and proprietary extensions available.*
36
37
 
37
- > **Status: v0.9.0 a simulation substrate, not yet a product.** Four sensor packs
38
- > that each report all six operational figures of merit (including a clock-stability-based
39
- > spoof-*detectability* bound analytic, meaningful only with a configured attack —
40
- > demonstrated by an active spoofing-attack scenario), two independent Kalman error
41
- > budgets (clock and position) reported as a combined FoM, and a filter
42
- > self-consistency bound, multi-constellation geometry-derived GNSS availability *and*
43
- > dilution of precision from orbits — synthetic Walker, Keplerian mean elements, or
44
- > full two-line element sets propagated with **SGP4/SDP4** (validated against the AIAA
45
- > 2006-6753 vectors) — a single-axis (1-DOF) IMU error budget in the shipped
46
- > inertial pack (velocity/angle random walk and bias-instability), Monte Carlo
47
- > confidence bands, trade-study parameter sweeps, and a shareable HTML scorecard.
48
- > As of v0.9.0 the library also carries a genuine **three-axis strapdown INS**
49
- > (quaternion attitude, WGS-84 NED mechanization, coning/sculling, a five-term IMU
50
- > error model), a **loosely-coupled GNSS/INS error-state EKF** with closed-loop
51
- > feedback, **real snapshot and solution-separation (ARAIM-style) RAIM** with
52
- > HPL/VPL and a runnable `integrity` scenario, and **RINEX-3 GPS ephemeris
53
- > ingestion** (broadcast orbit + clock). All calibrated to published data and
54
- > validated against the standard relations, with optional Python and WebAssembly
55
- > bindings and a browser playground. Read [`docs/VALIDATION.md`](docs/VALIDATION.md)
56
- > before citing any number — each noise term is labelled `validated` or `not modeled`,
57
- > and optical-clock figures are *space goals on ground hardware* (no strontium optical
58
- > clock has flown). What it is still **not**: the shipped `inertial` scenario pack
59
- > remains the 1-DOF budget (the three-axis navigator is library-level, not yet wired
60
- > into a pack); the GNSS/INS filter is *loosely* coupled only (tight/pseudorange
61
- > coupling is a documented stub); the RAIM is real but **not** formally certified to
62
- > DO-229/DO-178C aviation standards; and the quantum models are phenomenological, not
63
- > a first-principles quantum simulator. The full
64
- > honest scope map is in [`docs/CAPABILITY.md`](docs/CAPABILITY.md); see also
65
- > [`docs/INTEGRITY.md`](docs/INTEGRITY.md) and the claims table in
66
- > [`docs/VALIDATION.md`](docs/VALIDATION.md).
38
+ > **Status: v0.9.1 · a simulation substrate, not yet a product.** A validated,
39
+ > fully reproducible engine spanning the PNT stack orbit geometry, inertial
40
+ > navigation, GNSS/INS fusion, integrity, clocks, and timing. Honest by design:
41
+ > every figure of merit is labelled *validated* or *not-modeled*, and optical-clock
42
+ > figures are space goals on ground hardware (no strontium optical clock has flown).
43
+ > See **[Capabilities](#capabilities)** for what it does, **[What it is / is not](#what-it-is--is-not)**
44
+ > for scope, and [`docs/CAPABILITY.md`](docs/CAPABILITY.md) / [`docs/VALIDATION.md`](docs/VALIDATION.md)
45
+ > for per-capability maturity and the claims table.
67
46
 
68
47
  > **Try it in your browser:** the [playground](web/) runs the engine client-side as
69
48
  > WebAssembly — pick a scenario, edit the parameters, and see the result, with nothing
@@ -82,12 +61,12 @@ Ashforde OÜ — commercial support, integration, and proprietary extensions ava
82
61
 
83
62
  ## Contents
84
63
 
85
- - [Why](#why) · [What it is / is not](#what-it-is--is-not) · [Results](#results)
64
+ - [Why](#why) · [What it is / is not](#what-it-is--is-not) · [Capabilities](#capabilities) · [Results](#results)
86
65
  - [Install & build](#install--build) · [Usage](#usage) ([Python](#python), [WebAssembly](#webassembly))
87
66
  - [Scenario format](#scenario-format) · [Output](#output) · [Architecture](#architecture)
88
67
  - [Repository layout](#repository-layout) · [Validation & honesty](#validation-reproducibility--honesty)
89
68
  - [Documentation](#documentation) · [FAQ](#faq) · [Troubleshooting](#troubleshooting)
90
- - [Roadmap](#roadmap) · [Contributing](#contributing) · [Citing](#citing) · [License](#license)
69
+ - [Roadmap](#roadmap) · [Contributing](#contributing) · [Citing](#citing) · [Versioning & releases](#versioning--releases) · [License](#license)
91
70
  - [Support & professional services](#support--professional-services) · [References](#key-references)
92
71
 
93
72
  ## Why
@@ -105,13 +84,33 @@ noise realizations.
105
84
 
106
85
  ## What it is / is not
107
86
 
108
- **It is:** a deterministic engine that runs a GNSS-outage scenario, evolves
109
- calibrated sensor error models, runs a holdover/dead-reckoning estimator, and
110
- scores the result against six figures of merit, emitting a JSON result and an SVG
111
- chart.
112
-
113
- **It is not:** flight hardware, a quantum-payload design, or a full GNSS receiver.
114
- Quantum-hardware fidelity comes from published error models, not from this tool.
87
+ **It is:** a deterministic, dependency-light engine spanning the PNT stack orbit
88
+ geometry, inertial navigation, GNSS/INS fusion, integrity, clocks, and timing. It
89
+ runs a scenario (often a GNSS outage), evolves calibrated sensor error models
90
+ through the appropriate estimator, and scores the result against the operational
91
+ figures of merit — emitting a reproducible JSON result and an SVG chart, from a
92
+ Rust library, CLI, Python extension, or in-browser WebAssembly module.
93
+
94
+ **It is not:** flight hardware, a quantum-payload design, a full GNSS signal
95
+ receiver, or a certified avionics product. Quantum-hardware fidelity comes from
96
+ published error models, not from this tool. The granular maturity of each
97
+ capability is documented in [`docs/CAPABILITY.md`](docs/CAPABILITY.md).
98
+
99
+ ## Capabilities
100
+
101
+ | Domain | Capability |
102
+ |--------|------------|
103
+ | **Orbit & geometry** | SGP4/SDP4 propagation (validated to 4.12 mm against all 666 AIAA 2006-6753 vectors), real-TLE or synthetic Walker constellations, multi-constellation visibility, dilution of precision, and GNSS availability. |
104
+ | **Inertial** | Three-axis strapdown INS — quaternion attitude, WGS-84 NED mechanization, coning/sculling compensation, and a deterministic IMU error model (scale-factor, misalignment, g-sensitivity, quantization, drift). |
105
+ | **Fusion** | Loosely-coupled GNSS/INS error-state EKF (15-state) with closed-loop feedback that coasts through GNSS outages on a calibrated inertial solution. |
106
+ | **Integrity** | Snapshot and solution-separation (ARAIM-style) RAIM with horizontal/vertical protection levels (HPL/VPL), fault detection and identification, and Stanford integrity diagrams. |
107
+ | **Clock & timing** | Two-state Kalman holdover, Allan-family stability (ADEV/MDEV/TDEV/HDEV) with confidence intervals, and optical/RF two-way time transfer. |
108
+ | **Interoperability** | RINEX-3 GPS broadcast-ephemeris ingestion with IS-GPS-200 satellite position and clock evaluation. |
109
+ | **Resilience** | Clock-aided spoof-detectability analysis against a configurable time-spoof attack. |
110
+
111
+ Each capability is reachable as a Rust API, a runnable scenario `kind`, or both.
112
+ Maturity per capability — *validated*, *runnable*, or *library* — is tracked in
113
+ [`docs/CAPABILITY.md`](docs/CAPABILITY.md).
115
114
 
116
115
  ## Results
117
116
 
@@ -564,7 +563,20 @@ entry for every user-visible change. Participation is governed by our
564
563
 
565
564
  If you use Kshana in academic or technical work, please cite it. Machine-readable
566
565
  metadata is in [`CITATION.cff`](CITATION.cff) (GitHub renders a "Cite this repository"
567
- button from it); cite the version you used (e.g. `v0.7.0`).
566
+ button from it); cite the version you used (e.g. `v0.9.1`) together with the
567
+ scenario and seed for full reproducibility. An archival DOI (Zenodo) is planned.
568
+
569
+ > Baweja, C. (2026). *Kshana — hybrid quantum/classical PNT performance simulator*. Ashforde OÜ. https://github.com/AshfordeOU/kshana
570
+
571
+ ## Versioning & releases
572
+
573
+ Kshana follows [Semantic Versioning](https://semver.org). While pre-1.0 the public
574
+ scenario/result schema may still change; breaking changes are called out explicitly
575
+ in the [`CHANGELOG.md`](CHANGELOG.md). Tagged releases are published to
576
+ [crates.io](https://crates.io/crates/kshana), [PyPI](https://pypi.org/project/kshana/),
577
+ and [npm](https://www.npmjs.com/package/kshana), and listed under
578
+ [GitHub Releases](https://github.com/AshfordeOU/kshana/releases). Every result is
579
+ reproducible from `scenario + seed + engine version`.
568
580
 
569
581
  ## License
570
582
 
package/kshana_bg.wasm CHANGED
Binary file
package/package.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "Chakshu Baweja <contact@ashforde.org>"
6
6
  ],
7
7
  "description": "Open hybrid quantum/classical PNT performance simulator",
8
- "version": "0.9.0",
8
+ "version": "0.9.1",
9
9
  "license": "Apache-2.0",
10
10
  "repository": {
11
11
  "type": "git",