Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
57 commits
Select commit Hold shift + click to select a range
1e6a839
Add universal response decision surface
Bridge-Node-7 Aug 26, 2026
43297cc
Add universal response surface styling
Bridge-Node-7 Aug 26, 2026
e9206c9
feat: add universal response decision surface
Bridge-Node-7 Aug 26, 2026
6bc8459
test: verify universal response experience
Bridge-Node-7 Aug 26, 2026
1e5b3f2
fix: refresh universal response integrity manifest
Bridge-Node-7 Aug 26, 2026
f09bc0d
fix: correct universal response manifest hashes
Bridge-Node-7 Aug 26, 2026
fdcad3c
fix: align generated project facts
Bridge-Node-7 Aug 26, 2026
3f06b4b
fix: correct remaining universal manifest hash
Bridge-Node-7 Aug 26, 2026
258c07c
test: cover universal saved-work collision
Bridge-Node-7 Aug 26, 2026
5074fad
test: enforce universal response architecture
Bridge-Node-7 Aug 26, 2026
7f247d4
fix: verify pull request head directly in CI
Bridge-Node-7 Aug 26, 2026
bf0543c
fix: verify pull request head directly in preflight
Bridge-Node-7 Aug 26, 2026
e2240c8
fix: keep generated project facts public-safe
Bridge-Node-7 Aug 26, 2026
dcead5a
fix: restore public verification references
Bridge-Node-7 Aug 26, 2026
0982968
fix: keep no-script guidance complete
Bridge-Node-7 Aug 26, 2026
c8676ab
fix: restore reference-case disclosure for verification
Bridge-Node-7 Aug 26, 2026
9b365ea
fix: clarify public confidential-data boundary
Bridge-Node-7 Aug 26, 2026
71916d4
fix: synchronize universal surface manifest
Bridge-Node-7 Aug 26, 2026
5adf0c1
ux: rename provisional surface to Decision Map
Bridge-Node-7 Aug 26, 2026
5f58a52
chore: update Decision Map manifest hash
Bridge-Node-7 Aug 26, 2026
b108bc4
fix: correct Decision Map manifest entries
Bridge-Node-7 Aug 26, 2026
3a1979b
docs: describe Decision Map front door
Bridge-Node-7 Aug 26, 2026
f17a132
docs: formalize Decision Map architecture
Bridge-Node-7 Aug 26, 2026
5065641
test: align validation with Decision Map terminology
Bridge-Node-7 Aug 26, 2026
47936b8
docs: use Decision Map in no-script experience
Bridge-Node-7 Aug 26, 2026
08f0bc2
fix: synchronize Decision Map manifest
Bridge-Node-7 Aug 26, 2026
d154d3d
fix: retain repository conduct guide in validation
Bridge-Node-7 Aug 26, 2026
80ceb48
fix: correct Decision Map manifest digest
Bridge-Node-7 Aug 26, 2026
d288457
ux: preserve canonical FDE hero contract
Bridge-Node-7 Aug 26, 2026
9ff8341
fix: synchronize final Decision Map manifest
Bridge-Node-7 Aug 26, 2026
2d2371c
ux: rebalance Decision Map first-screen layout
Bridge-Node-7 Aug 26, 2026
da2b3a6
ux: simplify response entry and Decision Map copy
Bridge-Node-7 Aug 26, 2026
4335ff1
fix: align validator with Decision Map terminology
Bridge-Node-7 Aug 26, 2026
b4a7f63
ux: add frictionless return path for saved decisions
Bridge-Node-7 Aug 26, 2026
45045c1
ux: refine Decision Map response and first-sight experience
Bridge-Node-7 Aug 26, 2026
3f5e366
ux: balance Decision Map workspace and add low-friction correction co…
Bridge-Node-7 Aug 26, 2026
64cd1bc
test: cover information and multi-decision Universal Response paths
Bridge-Node-7 Aug 26, 2026
a86bfb1
test: align Universal Response browser contract with Decision Map UX
Bridge-Node-7 Aug 26, 2026
5e0c6c0
chore: refresh project facts after Universal Response tests
Bridge-Node-7 Aug 26, 2026
c28aaa7
test: align no-script browser contract with one-input FDE front door
Bridge-Node-7 Aug 26, 2026
e101033
fix: restore full browser E2E harness after contract edit
Bridge-Node-7 Aug 26, 2026
2992d26
docs: keep no-script fallback aligned with formal FDE path
Bridge-Node-7 Aug 26, 2026
e8bf2b0
docs: restore six-stage no-script fallback contract
Bridge-Node-7 Aug 26, 2026
845c5c3
fix: align no-script wording with retained browser contract
Bridge-Node-7 Aug 26, 2026
d5cc7da
test: align hero assertion with intended UX
Bridge-Node-7 Aug 26, 2026
619ab9d
test: assert product identity via document title
Bridge-Node-7 Aug 26, 2026
6e53b82
test: use stable visible next-step contract
Bridge-Node-7 Aug 26, 2026
1a324c2
test: tighten universal response text selectors
Bridge-Node-7 Aug 26, 2026
05ee5d9
build: refresh site manifest after UX changes
Bridge-Node-7 Aug 26, 2026
66834d2
build: correct generated manifest digest
Bridge-Node-7 Aug 26, 2026
f909525
test: isolate rescue route state before browser verification
Bridge-Node-7 Aug 26, 2026
88eac11
build: fix exact synthesis manifest digest
Bridge-Node-7 Aug 26, 2026
d0ab350
build: refresh generated site manifest
Bridge-Node-7 Aug 26, 2026
6a4779b
build: refresh manifest to exact checked tree
Bridge-Node-7 Aug 26, 2026
6551e7d
build: correct manifest to exact generated hashes
Bridge-Node-7 Aug 26, 2026
14548bc
build: refresh manifest for exact release tree
Bridge-Node-7 Aug 26, 2026
73bf138
build: correct manifest synthesis digest
Bridge-Node-7 Aug 26, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ jobs:
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
ref: ${{ github.event.pull_request.head.sha || github.sha }}
- name: Set up Node
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/release-preflight.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ jobs:
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
ref: ${{ github.event.pull_request.head.sha || github.sha }}
- name: Set up Node
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
Expand Down
48 changes: 24 additions & 24 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,46 +1,46 @@
# Frontier Decision Engine

**Bring a messy situation. Find the decision. Test choices when useful. Keep the final judgment human-owned.**
**Bring the whole mess. FDE gives you something useful back, helps make uncertainty visible, and keeps the final decision human-owned.**

[Open the live application](https://bridgenode7.com/frontier-decision-engine/)

![Frontier Decision Engine](docs/screenshots/reference/desktop-decision-frame.png)

## Start with Decision Rescue
## Start with one input

Decision Rescue accepts ordinary language first. A visitor can put down what is happening, choose one useful next action, and build a Decision Frame without knowing decision-science terminology.
The FDE front door starts with one free-form input. Put down a problem, question, worry, idea, decision, or a complete mess. FDE responds immediately with a provisional Decision Map showing only what can be safely organized from the words provided.

FDE preserves what the person confirms and does not pretend browser JavaScript inferred evidence, probabilities, thresholds, scores, or a recommendation. A partial Decision Frame is a valid stopping point.
The map is a draft, not a hidden machine decision. Possible signals stay possible until a person confirms them. When enough explicit structure exists, the map can continue into the deterministic Decision Lab. Otherwise, it offers a simple path to shape the missing pieces without pretending the missing information is known.

Decision Rescue uses tab-scoped session storage so an accidental refresh can recover in-progress framing. It does not treat the original brain dump as model evidence. When a complete frame continues into the Decision Lab, existing browser-saved Lab work is never replaced without an explicit human choice.
The experience is designed around a simple rule: **every meaningful input receives a useful response, and questions are used only when human judgment is actually needed to move the decision forward.**

## What the Decision Lab does
## Decision Map

- Frames the decision, goals, choices, and plausible futures.
- Evaluates the same choices across explicit goals and named conditions.
- Shows unmet goals, ties, incomplete outcomes, and vulnerabilities.
- Keeps final selection, rationale, and next action human-owned.
- Exports a portable decision file and a readable decision summary.
The map can show:

Guided work supports 2–4 objectives, 2–3 choices, and 2–4 plausible futures. The minimum comparison is a real 2 × 2 × 2 model. FDE never fills missing analytical inputs on the person's behalf.
- a possible decision;
- choices mentioned explicitly;
- things that may matter;
- conditions that could change the answer; and
- the smallest useful next step.

The included ready example is a **synthetic critical-material source-qualification case**. It does not describe or certify a real supplier, material, capacity, compliance status, or investment.
This is deliberately conservative. The browser does not call a remote AI service, retrieve outside facts, invent probabilities, or promote provisional text into verified evidence.

## Privacy and authority
## Decision Lab

The application is static and browser-local. It has no backend, account system, analytics, telemetry, cookies, or default upload endpoint.
When a person confirms enough structure, FDE can hand the work into its existing deterministic comparison engine. Guided work supports 2–4 objectives, 2–3 choices, and 2–4 plausible futures. The minimum comparison is a true 2 × 2 × 2 model.

Browser storage is a convenience, not encrypted confidential storage. Do not enter information that requires an approved confidential or controlled-data environment.
The comparison informs. A person decides.

FDE provides decision support. It does not approve, authorize, certify, qualify, consent, or make an investment decision. The comparison informs; a person decides.
## Synthetic reference

## Run locally
The repository includes a synthetic critical-material source-qualification case to demonstrate the formal Decision Lab without making claims about a real supplier, material, capacity, compliance status, or investment.

```bash
node scripts/run-python.mjs -m http.server 8000 --directory site
```
## Privacy and authority

The application is static and browser-local. It has no backend, account system, analytics, telemetry, cookies, remote AI provider, or default upload endpoint. Session recovery and browser autosave are convenience features, not encrypted confidential storage.

Open `http://localhost:8000`.
FDE provides decision support. It does not approve, authorize, certify, qualify, consent, or make an investment decision.

## Verify

Expand All @@ -53,14 +53,14 @@ npm ci --ignore-scripts --no-audit --no-fund
npm run check
```

`npm run check` runs the repository's unit, version, integrity, browser, Decision Rescue, and release-closeout gates. Current generated counts and versions are recorded in [`project-facts.json`](project-facts.json).
Generated release facts and current application identity are recorded in [`project-facts.json`](project-facts.json). The full verification gate is defined by the repository's `npm run check` command.

## Documentation

- [Architecture](docs/ARCHITECTURE.md)
- [Methodology](docs/METHODOLOGY.md)
- [Privacy](docs/PRIVACY.md)
- [Releases](docs/RELEASING.md)
- [Releasing](docs/RELEASING.md)

## Project

Expand Down
61 changes: 30 additions & 31 deletions docs/ARCHITECTURE.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,55 +2,54 @@

Frontier Decision Engine is a static browser application served from `site/`. There is no backend or account service.

## Runtime
## Human-first runtime

- Decision Rescue is the human-language front door.
- Decision Lab is the structured six-stage comparison workflow.
- The ranking engine is deterministic and runs in the browser.
- Portable decision schemas remain versioned under `schemas/`.
- Validation and release checks run from `scripts/` and GitHub Actions.
The public root is a one-input response experience. A person can write a problem, question, worry, idea, decision, or incomplete thought without knowing decision-science vocabulary. FDE immediately returns a useful response and a provisional Decision Map.

## Human-first entry
The Decision Map can show:

The root experience accepts bounded inert text and asks for the smallest useful human contribution next. It does not claim to understand arbitrary prose, retrieve external facts, infer evidence, assign probabilities, create scores, or recommend an action.
- a possible decision;
- choices mentioned explicitly;
- things that may matter;
- conditions that could change the answer; and
- the most useful next step.

A Decision Frame can remain incomplete and still be useful. Full comparison is available only after the person has confirmed a decision, at least two goals, two choices, and two plausible futures.
Possible elements are not silently promoted into facts. The map is a draft until a person confirms the information that belongs in the formal decision model.

Guided comparison supports:
## Minimum necessary human contribution

- 2–4 objectives
- 2–3 strategies
- 2–4 scenarios
FDE follows this interaction rule:

The ready example remains a larger synthetic reference case. Missing thresholds, scores, modifiers, critical flags, and evidence stay missing until a person supplies them.
> Continue without bothering the person when the system can proceed safely; otherwise ask for the smallest human contribution that materially advances the decision.

## Browser storage
No normal input is treated as a dead end. Empty, vague, messy, ambiguous, and non-decision input receive a useful orientation response rather than an error-only state.

Decision Rescue uses tab-scoped session storage for accidental-refresh recovery. The original starting context remains context only and is not scored or promoted into model evidence.
## Formal Decision Lab

Decision Lab uses bounded browser autosave for in-progress structured work. If a browser draft already exists, Decision Rescue does not replace it silently; replacement requires an explicit human choice.
Once enough explicit structure exists and the person confirms the map, the confirmed information is handed into the existing deterministic Decision Lab. Guided comparison supports 2–4 objectives, 2–3 strategies, and 2–4 scenarios. The minimum comparison is a true 2 × 2 × 2 model.

Browser storage is not encrypted confidential storage. Local files are processed in the browser and are not uploaded by the default application.
The comparison core is isolated from the Map layer so UX changes do not silently alter ranking semantics. Missing analytical values are not fabricated.

## Decision result
## Epistemic boundaries

The engine evaluates explicit human-supplied inputs across the same named futures. It preserves honest outcomes including:
The public experience separates:

- a unique leader under the tested model;
- tied leaders;
- no acceptable strategy under declared boundaries; and
- insufficient data.
1. **You said** — the original human input.
2. **FDE organized** — provisional structure derived from safe, explicit textual patterns.
3. **You confirmed** — information promoted into the formal model by a human.
4. **FDE calculated** — deterministic output from confirmed model inputs.
5. **You decided** — the human-owned choice, rationale, and next action.

The result is advisory. A person selects the strategy and records the rationale and next action.
The default runtime does not use a remote AI provider, retrieve external facts, infer evidence, assign probabilities, or make the final decision.

## Compatibility
## Browser storage

Legacy completed decision schema `0.2.10` remains supported. Optional decision-semantics state uses schema `0.3.0`. The guided browser editor is intentionally bounded even though portable schemas may permit broader cases.
The universal response experience uses bounded tab-scoped session storage for accidental-refresh recovery. Decision Lab uses bounded browser autosave for structured work. Browser storage is a convenience, not encrypted confidential storage.

The deterministic ranking core is isolated from the human-entry layer so UX changes do not silently alter comparison semantics.
## Privacy and security

## Security and privacy boundaries
The public application has no backend, account system, analytics, telemetry, cookies, remote AI provider, or default upload endpoint. User input is rendered as text, not executable markup. Local files remain in the browser unless the person explicitly downloads or shares them.

The public runtime has no account system, analytics, telemetry, remote AI provider, or default upload endpoint. User-entered text is rendered as text rather than executable markup.
## Long-term direction

Generated visualizations and software calculations are not evidence. FDE does not provide legal approval, organizational authorization, certification, qualification, consent, or investment approval.
The architecture intentionally leaves room for an optional assisted-understanding adapter and later Decision Memory without making either a dependency of the deterministic core. Any future semantic provider must produce provisional output that passes through the same human-confirmation boundary.
5 changes: 2 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
"description": "Browser-local, human-governed decision support for choices under deep uncertainty.",
"scripts": {
"test": "node --test",
"test:universal": "node --test tests/universal-response.test.js",
"facts": "node scripts/generate-project-facts.mjs",
"facts:check": "node scripts/validate-project-facts.mjs",
"validate": "node scripts/run-python.mjs scripts/validate_repository.py",
Expand All @@ -18,8 +19,6 @@
"validate:version": "node scripts/run-python.mjs scripts/validate_version_integrity.py",
"test:closeout": "node scripts/run-python.mjs scripts/browser_closeout_regressions.py"
},
"engines": {
"node": ">=22"
},
"engines": { "node": ">=22" },
"license": "Apache-2.0"
}
15 changes: 4 additions & 11 deletions project-facts.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,10 @@
"applicationVersion": "0.3.3",
"schemaVersions": {
"decision": "0.2.10",
"semanticDecision": "0.3.0",
"opvCase": "0.1.0"
"semanticDecision": "0.3.0"
},
"testCount": 143,
"discoveredHashRouteLiteralCount": 6,
"testCount": 148,
"discoveredHashRouteLiteralCount": 7,
"browserModes": [
"desktop-light",
"mobile-light",
Expand All @@ -16,11 +15,5 @@
"reflow-400-equivalent",
"forced-colors"
],
"manifestEntryCount": 35,
"retainedReferenceArtifactItemCounts": {
"profiles/phenomena/profile.json": 5,
"site/data/experiences.json": 41,
"site/data/morphology.json": 209,
"site/data/references.json": 53
}
"manifestEntryCount": 37
}
Loading