Skip to content

Repository files navigation

Ambient Signal Core

Public, deterministic mechanism used by Ambient Signal, an offline paranormal field-investigation application.

This repository is the canonical specification and reproducible implementation of the mapping from environmental PCM bytes to one dictionary entry. The mobile application is separate and private. The core is public so that results can be inspected, hashed, and independently reproduced.

What it does

Canonical raw PCM bytes are hashed with SHA-256 and mapped, with equal probability and no modulo bias, onto one entry in a fixed US-English dictionary.

The application that captures the microphone data is responsible for providing those bytes. This repository does not capture audio.

What it does not do

Ambient Signal Core does not:

  • perform speech recognition
  • analyze EVP content
  • classify sounds
  • use AI
  • contact a server
  • use location
  • use question text
  • infer paranormal activity
  • favor particular words

It does not interpret the selected entry or claim paranormal causation.

Equal probability

Every unique dictionary entry has equal theoretical selection probability under Algorithm 1.0.0.

Category membership (word, first_name, surname, vulgar) and displaySensitivity (vulgar, explicit, slur) are metadata only. They do not duplicate entries and do not change probability. There is no frequency weighting and no “spooky word” weighting.

Versions

Canonical manifest: core/version.json

Field Value
coreVersion 1.0.3
dictionaryVersion 1.2.0
algorithmVersion 1.0.0
Entry count 93,111
Dictionary SHA-256 f2334978b74abe0c754cea95fcd200d62179aa6b949d0ea2a4e1579451158dfc
entriesSha256 464a57a9aded103042df71af9c8286776044a799a1e66d1c54466acdbddc35be
Categories first_name, surname, vulgar, word
displaySensitivity explicit, slur, vulgar
Canonical dictionary core/dictionary/dictionary-v1.json
Field Bump when
coreVersion a public core release
dictionaryVersion selection-relevant dictionary contents change, or presentation metadata release
algorithmVersion PCM → hash → index behavior changes

These versions are independent. See docs/VERSIONING.md.

Dictionary 1.2.0

Canonical file: core/dictionary/dictionary-v1.json

Published metadata: core/dictionary/dictionary-v1.meta.json

Dictionary 1.2.0 adds presentation-only displaySensitivity metadata on 220 existing entries (115 vulgar, 93 explicit, 28 slur; some entries carry multiple values). Selection entry count (93,111), IDs, values, alphabetical order, and entriesSha256 are unchanged from Dictionary 1.1.0. Algorithm 1.0.0 is unchanged.

The vulgar category from Dictionary 1.1.0 is retained for backward compatibility. UI masking should use displaySensitivity, not category membership alone.

Historical Dictionary 1.1.0 audit: audit/dictionary-1.1.0/build-report.md. Dictionary 1.2.0 display-sensitivity audit: audit/dictionary-1.2.0/display-sensitivity-report.md.

Sources:

  • SCOWL / ESDB American English, size 60, pinned commit in dictionary-builder/config.yaml
  • SSA historical first-name data, union of documented popularity/breadth rules
  • US Census 2010 surnames, top 5,000 by rank
  • Vulgar supplement v1 curated US-English profanity/crude language (core/dictionary/supplements/vulgar-v1.txt)

Values are lowercase, unique, and ordered alphabetically with contiguous IDs from 0. Categories are merged onto a single slot per unique value.

Details: docs/DICTIONARY.md.

Algorithm 1.0.0

canonical PCM bytes
    -> SHA-256
    -> 256-bit unsigned integer
    -> rejection sampling into [0, N)
    -> dictionary entry

Simple hash % N is not used, because it is biased when 2^256 is not divisible by N.

Rejected hashes are re-derived with a documented domain separator, the original PCM digest, and a 32-bit big-endian counter. See docs/ALGORITHM.md. The reference implementation is core/src/select.ts.

The core depends only on the PCM bytes and the dictionary. It does not depend on React Native or Expo.

Algorithm 1.0.0 behavior is unchanged across dictionary releases. When the dictionary grows or reorders, N changes and selection outputs for the same PCM bytes change accordingly.

Reproducibility

Inspect the dictionary

# metadata and first entries
python3 -c "import json; d=json.load(open('core/dictionary/dictionary-v1.json')); print(d['metadata']); print(d['entries'][0])"

Verify the published SHA-256

npm ci
npm run dictionary:verify
sha256sum core/dictionary/dictionary-v1.json

Compare the digest to core/dictionary/dictionary-v1.meta.json.

Run test vectors

Public vectors: core/vectors/test-vectors.json

npm test
npm run core:verify

An independent implementation of Algorithm 1.0.0 must reproduce the published vectors for the dictionary identified in that file (dictionaryVersion + dictionarySha256). Vectors are regenerated when the canonical dictionary release changes.

Rebuild the dictionary

python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
npm run dictionary:build

Requires network access on first run (git, SSA zip, Census zip, SCOWL make). CI does not regenerate from upstream sources; it verifies the committed artifact. See docs/GENERATED_FILE_POLICY.md.

Implement the algorithm independently

Follow docs/ALGORITHM.md exactly (byte encodings, domain separator, counter, big-endian integer). Check against the test vectors. Do not read the private application for the mapping rules; this repository is authoritative.

Commands

npm ci
npm test
npm run validate
npm run dictionary:verify
npm run core:verify
npm run release:check
npm run docs:sync
npm run docs:check

Optional:

npm run dictionary:build
npm run version:core -- 1.0.3
npm run version:dictionary -- 1.2.0
npm run version:algorithm -- 1.1.0

release:check fails on test failure, dictionary hash/metadata mismatch, invalid IDs, duplicate values, failed test vectors, invalid version manifest, missing license/attribution files, documentation drift versus published versions, or a selection-relevant dictionary/algorithm change without the corresponding version bump.

App dependency contract

The private Ambient Signal application must pin a specific core release (tag/package version). It must not silently track main. Investigation sessions should record coreVersion, dictionaryVersion, dictionarySHA256, and algorithmVersion.

Licensing

MIT does not relicense SCOWL/ESDB, SSA, or Census data.

Disclaimer

Ambient Signal Core is a deterministic lookup from bytes to a dictionary entry. It is not a detector, classifier, or communication protocol. Using it during a field investigation does not establish paranormal causation.

About

Public deterministic core for Ambient Signal: dictionary, selection algorithm, and validation.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages