@disclosureos/records 1.0.0 → 1.1.0

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/CHANGELOG.md CHANGED
@@ -4,11 +4,34 @@ All notable changes to `@disclosureos/records` are documented here. The format i
4
4
  based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and this project
5
5
  adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
6
 
7
+ ## 1.1.0
8
+
9
+ ### Minor Changes
10
+
11
+ - e6ff99c: Add the instruments layer: the UAP Sensor Manifest standard
12
+ (`@disclosureos/instruments@1.0.0`, first published alongside this release —
13
+ see its own changelog).
14
+
15
+ - **`@disclosureos/records`** — `SensorReading` gains optional `sensorRef`
16
+ (`"<org-slug>:<sensor-id>"`, with `sensorRef`/`isSensorRef`/`parseSensorRef`
17
+ helpers in `records/shared`); `SensorType` gains 18 instrument classes
18
+ (infrasonic/ultrasonic sensors, ADS-B receiver, RF spectrum analyzer, passive
19
+ radar, particle detector, atomic clock, GNSS receiver, fluxgate magnetometer,
20
+ air-quality sensor, barometer, lightning detector, IMU, EEG, GSR, pulse
21
+ oximeter, pupillometer, hardware RNG); `DetectionMethod` gains 7 methods
22
+ (particle, gnss, time_reference, chemical, inertial, physiological, pressure).
23
+ Records schema artifact bumped to `1.1.0`.
24
+ - **`@disclosureos/schema`** — composed enriched-observation artifact re-emitted
25
+ at `1.1.0` to carry the records changes.
26
+ - **`@disclosureos/cli`** — new `disclosureos manifest validate <path...>`
27
+ command (`--recursive`, `--json`) delegating to `validateSensorManifest`.
28
+
7
29
  ## 1.0.0
8
30
 
9
31
  Initial public release — the core of the DisclosureOS standard.
10
32
 
11
33
  ### Added
34
+
12
35
  - `Observation` — the primary record type — with `ObservationSchema` (Zod 4) and the
13
36
  non-stripping `validateObservation` validator.
14
37
  - `@disclosureos/records/shared`: the cross-package substrate (`Confidence`,
package/README.md CHANGED
@@ -6,7 +6,7 @@ Structured vocabulary for describing UAP observations — the **data dictionary*
6
6
  the [DisclosureOS](https://github.com/disclosurefoundation) ecosystem. Its primary
7
7
  type, `Observation`, is the core unit every other package builds on.
8
8
 
9
- DisclosureOS is a **five-part standard**. Each part answers one question about an
9
+ DisclosureOS is a **six-part standard**. Each part answers one question about an
10
10
  observation; `@disclosureos/schema` binds the package-owned pieces into one portable
11
11
  contract (a single TS type + JSON Schema + non-stripping parse).
12
12
 
@@ -17,6 +17,7 @@ contract (a single TS type + JSON Schema + non-stripping parse).
17
17
  | **Origins** | `@disclosureos/origins` | *What might explain it?* |
18
18
  | **Claims** | `@disclosureos/records/shared` | *Who assessed it, why, and on what evidence?* |
19
19
  | **Scoring** | `@disclosureos/scoring` | *How complete / compelling is the case?* |
20
+ | **Instruments** | `@disclosureos/instruments` | *What hardware produced the data?* |
20
21
 
21
22
  Supporting packages: **`@disclosureos/schema`** (the portable contract that composes the
22
23
  package-owned pieces), **`@disclosureos/cli`** (tooling), and
@@ -15,8 +15,8 @@ declare const MANEUVER_TYPES: ("other" | "hover" | "instant_acceleration" | "ins
15
15
  declare const RELATION_KINDS: ("corroborates" | "contradicts" | "duplicate_of" | "same_object" | "supersedes" | "superseded_by" | "re_analysis_of" | "part_of")[];
16
16
  declare const CONFIDENCE_LEVELS: ("high" | "moderate" | "low" | "unassessed" | "very_high" | "very_low")[];
17
17
  declare const WITNESS_CATEGORIES: ("unknown" | "military_other" | "military_pilot" | "military_aircrew" | "military_ground" | "military_naval" | "military_radar_operator" | "commercial_pilot" | "commercial_aircrew" | "private_pilot" | "air_traffic_controller" | "aviation_other" | "government_official" | "elected_official" | "intelligence_officer" | "law_enforcement" | "scientist" | "astronomer" | "meteorologist" | "engineer" | "medical_professional" | "maritime" | "civilian" | "civilian_group" | "anonymous")[];
18
- declare const DETECTION_METHODS: ("unknown" | "other" | "radar_primary" | "radar_secondary" | "radar_doppler" | "radar_phased_array" | "infrared_flir" | "infrared_other" | "electro_optical" | "visual_camera" | "satellite_imagery" | "sonar_active" | "sonar_passive" | "electromagnetic" | "radiation_detector" | "magnetometer" | "gravimeter" | "acoustic" | "seismic" | "lidar" | "spectroscopic" | "radio_frequency" | "multiple")[];
19
- declare const SENSOR_TYPES: ("other" | "military_radar" | "civilian_radar" | "airborne_radar" | "shipborne_radar" | "ground_radar" | "flir" | "eo_sensor" | "satellite" | "sonar" | "electromagnetic_sensor" | "radiation_sensor" | "civilian_camera" | "security_camera" | "dashcam" | "phone_camera")[];
18
+ declare const DETECTION_METHODS: ("unknown" | "other" | "radar_primary" | "radar_secondary" | "radar_doppler" | "radar_phased_array" | "infrared_flir" | "infrared_other" | "electro_optical" | "visual_camera" | "satellite_imagery" | "sonar_active" | "sonar_passive" | "electromagnetic" | "radiation_detector" | "magnetometer" | "gravimeter" | "acoustic" | "seismic" | "lidar" | "spectroscopic" | "radio_frequency" | "particle" | "gnss" | "time_reference" | "chemical" | "inertial" | "physiological" | "pressure" | "multiple")[];
19
+ declare const SENSOR_TYPES: ("other" | "military_radar" | "civilian_radar" | "airborne_radar" | "shipborne_radar" | "ground_radar" | "flir" | "eo_sensor" | "satellite" | "sonar" | "electromagnetic_sensor" | "radiation_sensor" | "civilian_camera" | "security_camera" | "dashcam" | "phone_camera" | "infrasonic_sensor" | "ultrasonic_sensor" | "adsb_receiver" | "rf_spectrum_analyzer" | "passive_radar" | "particle_detector" | "atomic_clock" | "gnss_receiver" | "fluxgate_magnetometer" | "air_quality_sensor" | "barometer" | "lightning_detector" | "imu" | "eeg" | "gsr" | "pulse_oximeter" | "pupillometer" | "hardware_rng")[];
20
20
  declare const EVIDENCE_TYPES: ("other" | "video" | "material_sample" | "ground_trace" | "radiation_reading" | "electromagnetic_recording" | "photographic" | "audio_recording" | "biological_sample" | "implant" | "debris" | "soil_sample" | "water_sample" | "vegetation_sample" | "impression" | "burn_mark")[];
21
21
  declare const EVIDENCE_QUALITIES: ("unknown" | "laboratory_grade" | "field_collected" | "uncontrolled" | "degraded" | "contaminated")[];
22
22
  declare const CHAIN_OF_CUSTODY_STATUSES: ("unknown" | "destroyed" | "classified" | "verified" | "partial" | "unverified" | "government_held" | "private_held" | "lost")[];
@@ -430,6 +430,13 @@ var DetectionMethodSchema = z.enum([
430
430
  "lidar",
431
431
  "spectroscopic",
432
432
  "radio_frequency",
433
+ "particle",
434
+ "gnss",
435
+ "time_reference",
436
+ "chemical",
437
+ "inertial",
438
+ "physiological",
439
+ "pressure",
433
440
  "multiple",
434
441
  "other",
435
442
  "unknown"
@@ -450,12 +457,33 @@ var SensorTypeSchema = z.enum([
450
457
  "security_camera",
451
458
  "dashcam",
452
459
  "phone_camera",
460
+ "infrasonic_sensor",
461
+ "ultrasonic_sensor",
462
+ "adsb_receiver",
463
+ "rf_spectrum_analyzer",
464
+ "passive_radar",
465
+ "particle_detector",
466
+ "atomic_clock",
467
+ "gnss_receiver",
468
+ "fluxgate_magnetometer",
469
+ "air_quality_sensor",
470
+ "barometer",
471
+ "lightning_detector",
472
+ "imu",
473
+ "eeg",
474
+ "gsr",
475
+ "pulse_oximeter",
476
+ "pupillometer",
477
+ "hardware_rng",
453
478
  "other"
454
479
  ]).describe("Class of sensor that produced a reading.");
455
480
  var SensorReadingSchema = z.object({
456
481
  id: z.string().min(1).describe('Stable id, addressable by a claim `evidenceRef` ("sensor:<id>").'),
457
482
  sensorType: SensorTypeSchema,
458
483
  detectionMethod: DetectionMethodSchema,
484
+ sensorRef: z.string().optional().describe(
485
+ 'Reference to a published sensor-manifest entry ("<org-slug>:<sensor-id>", e.g. "eldaeon:dionysus-passive-radar") carrying the instrument\u2019s full spec, timing, and calibration provenance.'
486
+ ),
459
487
  platform: z.string().optional().describe('Platform carrying the sensor (e.g. "USS Princeton", "F/A-18F").'),
460
488
  operator: z.string().optional().describe("Person or unit operating the sensor."),
461
489
  timestamp: z.string().optional().describe("When the reading was recorded (ISO timestamp)."),