diff --git a/.gitattributes b/.gitattributes
index a6344aac8c09253b3b630fb776ae94478aa0275b..dc78cfe373385821b433d8a6d41766f0d54a2e99 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -1,35 +1,12 @@
-*.7z filter=lfs diff=lfs merge=lfs -text
-*.arrow filter=lfs diff=lfs merge=lfs -text
-*.bin filter=lfs diff=lfs merge=lfs -text
-*.bz2 filter=lfs diff=lfs merge=lfs -text
-*.ckpt filter=lfs diff=lfs merge=lfs -text
-*.ftz filter=lfs diff=lfs merge=lfs -text
-*.gz filter=lfs diff=lfs merge=lfs -text
-*.h5 filter=lfs diff=lfs merge=lfs -text
-*.joblib filter=lfs diff=lfs merge=lfs -text
-*.lfs.* filter=lfs diff=lfs merge=lfs -text
-*.mlmodel filter=lfs diff=lfs merge=lfs -text
-*.model filter=lfs diff=lfs merge=lfs -text
-*.msgpack filter=lfs diff=lfs merge=lfs -text
-*.npy filter=lfs diff=lfs merge=lfs -text
-*.npz filter=lfs diff=lfs merge=lfs -text
-*.onnx filter=lfs diff=lfs merge=lfs -text
-*.ot filter=lfs diff=lfs merge=lfs -text
-*.parquet filter=lfs diff=lfs merge=lfs -text
-*.pb filter=lfs diff=lfs merge=lfs -text
-*.pickle filter=lfs diff=lfs merge=lfs -text
-*.pkl filter=lfs diff=lfs merge=lfs -text
-*.pt filter=lfs diff=lfs merge=lfs -text
-*.pth filter=lfs diff=lfs merge=lfs -text
-*.rar filter=lfs diff=lfs merge=lfs -text
-*.safetensors filter=lfs diff=lfs merge=lfs -text
-saved_model/**/* filter=lfs diff=lfs merge=lfs -text
-*.tar.* filter=lfs diff=lfs merge=lfs -text
-*.tar filter=lfs diff=lfs merge=lfs -text
-*.tflite filter=lfs diff=lfs merge=lfs -text
-*.tgz filter=lfs diff=lfs merge=lfs -text
-*.wasm filter=lfs diff=lfs merge=lfs -text
-*.xz filter=lfs diff=lfs merge=lfs -text
-*.zip filter=lfs diff=lfs merge=lfs -text
-*.zst filter=lfs diff=lfs merge=lfs -text
-*tfevents* filter=lfs diff=lfs merge=lfs -text
+* text=auto
+*.py text eol=lf
+*.ts text eol=lf
+*.mjs text eol=lf
+*.md text eol=lf
+*.json text eol=lf
+*.yml text eol=lf
+*.cff text eol=lf
+*.pdf binary
+*.png binary
+docs/publications/vons-paper-v1.0.pdf filter=lfs diff=lfs merge=lfs -text
+docs/publications/vons-tech-report-v1.0.1.pdf filter=lfs diff=lfs merge=lfs -text
diff --git a/.github/ISSUE_TEMPLATE/bug.yml b/.github/ISSUE_TEMPLATE/bug.yml
new file mode 100644
index 0000000000000000000000000000000000000000..1f05e80d7306c7bd1da3d361e1a7ff8e3a5ae95e
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/bug.yml
@@ -0,0 +1,31 @@
+name: Bug report
+description: Report unexpected behavior with a minimal safe reproduction.
+title: "[Bug] "
+body:
+ - type: markdown
+ attributes:
+ value: |
+ For security issues, contact oswarld@inlevel9.com privately with a brief,
+ nonsensitive description first. Do not post secrets or restricted inputs.
+ English and Korean reports are welcome.
+ - type: textarea
+ id: environment
+ attributes:
+ label: Version and environment
+ description: Source revision or release manifest, OS, runtime version and optional model/provider identity.
+ validations:
+ required: true
+ - type: textarea
+ id: reproduction
+ attributes:
+ label: Minimal reproduction
+ description: Exact command and preferably synthetic input; remove personal information and credentials.
+ validations:
+ required: true
+ - type: textarea
+ id: behavior
+ attributes:
+ label: Expected and actual behavior
+ description: Include safe error output, frequency and any workaround.
+ validations:
+ required: true
diff --git a/.github/ISSUE_TEMPLATE/experience.yml b/.github/ISSUE_TEMPLATE/experience.yml
new file mode 100644
index 0000000000000000000000000000000000000000..a46b147b70492778ced7f5aa16a770b5b3b3b99f
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/experience.yml
@@ -0,0 +1,55 @@
+name: Experience report
+description: Share what worked, failed or remained unclear when trying Vons.
+title: "[Experience] "
+body:
+ - type: markdown
+ attributes:
+ value: |
+ Positive and negative experiences are welcome, in English or Korean.
+ This is a public report once the repository is public. Use synthetic or
+ redacted examples. Do not upload secrets, private prompts, customer traces,
+ restricted data or model weights. A report is not benchmark validation.
+ - type: dropdown
+ id: path
+ attributes:
+ label: What did you try?
+ options:
+ - Documentation or installation
+ - Deterministic contract / KASI adapter
+ - Synthetic data walkthrough
+ - Model inference with separately supplied assets
+ validations:
+ required: true
+ - type: input
+ id: version
+ attributes:
+ label: Version or source identity
+ description: Commit, release manifest digest or explicitly unknown; include asset digest for inference.
+ validations:
+ required: true
+ - type: textarea
+ id: context
+ attributes:
+ label: Scenario and environment
+ description: Your goal, OS, Python or Node version, device, runtime and provider. Omit personal details.
+ validations:
+ required: true
+ - type: textarea
+ id: outcome
+ attributes:
+ label: Expected and observed behavior
+ description: Include the command or steps, what helped, what failed and limitations.
+ validations:
+ required: true
+ - type: textarea
+ id: counts
+ attributes:
+ label: Counts and optional safe evidence
+ description: Attempted / successful / abstained / failed with definitions; explain overlaps. Use unavailable where unmeasured. Link only reviewed evidence.
+ - type: checkboxes
+ id: privacy
+ attributes:
+ label: Public content check
+ options:
+ - label: I reviewed this report for secrets, personal information and restricted material, and may share its contents.
+ required: true
diff --git a/.github/ISSUE_TEMPLATE/reproduction.yml b/.github/ISSUE_TEMPLATE/reproduction.yml
new file mode 100644
index 0000000000000000000000000000000000000000..eb1cff80b6e1fe52e734b48828e189a6682dda00
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/reproduction.yml
@@ -0,0 +1,50 @@
+name: Reproduction report
+description: Report a scoped attempt to reproduce a documented behavior or result.
+title: "[Reproduction] "
+body:
+ - type: markdown
+ attributes:
+ value: |
+ An unsuccessful reproduction is useful. Keep raw records locally and
+ publish only permitted, reviewed aggregates or synthetic examples.
+ English and Korean reports are welcome. Missing evidence is unavailable.
+ - type: textarea
+ id: claim
+ attributes:
+ label: Claim and source
+ description: Link the exact document/version and state the claim's scope and expected result.
+ validations:
+ required: true
+ - type: textarea
+ id: setup
+ attributes:
+ label: Versions, inputs and environment
+ description: Source revision or manifest, model/tokenizer hashes if used, permitted input provenance, split, seed, OS/device/runtime/provider. Do not attach restricted inputs.
+ validations:
+ required: true
+ - type: textarea
+ id: procedure
+ attributes:
+ label: Commands and measurement procedure
+ description: Include warm-up, repetitions, timing or memory scope and analysis choices where applicable.
+ validations:
+ required: true
+ - type: textarea
+ id: results
+ attributes:
+ label: Observed results and denominators
+ description: Attempts, successes, abstentions, failures and unavailable values; include definitions, mismatches and limitations. Separate targets from measurements.
+ validations:
+ required: true
+ - type: textarea
+ id: evidence
+ attributes:
+ label: Optional permitted evidence
+ description: Safe aggregate report or synthetic fixture with hashes; state what cannot be shared or independently checked.
+ - type: checkboxes
+ id: privacy
+ attributes:
+ label: Public content check
+ options:
+ - label: I reviewed the report and attachments for secrets, personal information and restricted material, and may share them.
+ required: true
diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
new file mode 100644
index 0000000000000000000000000000000000000000..bf051191d620e5906a1c27590d0efb2cdd84afc9
--- /dev/null
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -0,0 +1,16 @@
+## Problem and change
+
+Describe the behavior before and after this change, and link the related issue.
+
+## Verification
+
+List commands run and their results. State skips, unavailable evidence and known
+limitations. Separate measured values from proposed targets.
+
+## Review notes
+
+- Explain any public contract, dependency, data or license implications.
+- Identify third-party material and its provenance when applicable.
+- Keep raw restricted data, model weights, secrets and private prompts out.
+- Update the release allowlist for reviewed new public files.
+- Preserve the separation between model decisions and host execution/consent.
diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml
new file mode 100644
index 0000000000000000000000000000000000000000..55812db0ef9cd75139ab177a3acd4ececf36bdd8
--- /dev/null
+++ b/.github/workflows/checks.yml
@@ -0,0 +1,61 @@
+name: Source checks
+
+on:
+ push:
+ paths:
+ - '.github/workflows/checks.yml'
+ - 'vons/**'
+ - 'tools/**'
+ - 'tests/**'
+ - 'configs/**'
+ - 'sdk/**'
+ - 'pyproject.toml'
+ - '.gitignore'
+ pull_request:
+ paths:
+ - '.github/workflows/checks.yml'
+ - 'vons/**'
+ - 'tools/**'
+ - 'tests/**'
+ - 'configs/**'
+ - 'sdk/**'
+ - 'pyproject.toml'
+ - '.gitignore'
+ workflow_dispatch:
+
+concurrency:
+ group: source-checks-${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: true
+
+permissions:
+ contents: read
+
+jobs:
+ python:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v4
+ - uses: actions/setup-python@v5
+ with:
+ python-version: '3.11'
+ - run: python -m pip install -e '.[dev]' numpy onnx onnxruntime
+ - run: python tools/prepare_public_release.py
+ - run: ruff check .
+ - run: python -m pytest -q
+ typescript:
+ runs-on: ubuntu-latest
+ defaults:
+ run:
+ working-directory: sdk/typescript
+ steps:
+ - uses: actions/checkout@v4
+ - uses: actions/setup-node@v4
+ with:
+ node-version: '22'
+ cache: npm
+ cache-dependency-path: sdk/typescript/package-lock.json
+ - run: npm ci
+ - run: npm test
+ - run: npm run build:browser
+ - run: npm run build:benchmark
+ - run: npm run build:parity
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..c3573abb793c7ae59fd52a1e82153fd800207a5a
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,148 @@
+# Public source allowlist. New root paths stay local until explicitly reviewed.
+/*
+!/.gitignore
+!/.gitattributes
+!/.github/
+!/README.md
+!/CONTRIBUTING.md
+!/CITATION.cff
+!/LICENSE
+!/NOTICE
+!/pyproject.toml
+!/configs/
+!/docs/
+!/sdk/
+!/tests/
+!/tools/
+!/vons/
+
+# Internal planning, historical claims and agent/session records stay local.
+/docs/*
+!/docs/KASI_INTEGRATION.md
+!/docs/MODEL_CARD.md
+!/docs/PUBLIC_RELEASE.md
+!/docs/HUGGING_FACE.md
+!/docs/LICENSING.md
+!/docs/COMMUNITY.md
+!/docs/HUB_PUBLISHING.md
+!/docs/publications/
+!/docs/assets/
+/docs/publications/*
+!/docs/publications/README.md
+!/docs/publications/LICENSE.md
+!/docs/publications/ARXIV.md
+/docs/assets/*
+!/docs/assets/inlevel9-signature.png
+!/docs/assets/inlevel9-signature-dark.png
+/configs/*
+!/configs/pilot.json
+!/configs/pilot-diffusion.json
+!/configs/public-release.json
+/sdk/*
+!/sdk/typescript/
+/sdk/typescript/*
+!/sdk/typescript/README.md
+!/sdk/typescript/LICENSE
+!/sdk/typescript/package.json
+!/sdk/typescript/package-lock.json
+!/sdk/typescript/src/
+!/sdk/typescript/test/
+!/sdk/typescript/demo/
+
+# Raw/generated data, weights, evidence packets and local publications.
+data/
+artifacts/
+reports/
+research/
+models/
+weights/
+checkpoints/
+outputs/
+releases/
+private/
+restricted/
+*.onnx
+*.onnx.*
+*.safetensors
+*.gguf
+*.ggml
+*.pt
+*.pth
+*.ckpt
+*.bin
+*.h5
+*.hdf5
+*.npz
+*.npy
+*.pkl
+*.pickle
+*.parquet
+*.arrow
+*.jsonl
+*.zip
+*.tar
+*.tar.*
+*.tgz
+*.7z
+*.dmg
+*.pdf
+# Only the exact reviewed publication bytes are eligible for staging.
+!/docs/publications/vons-paper-v1.0.pdf
+!/docs/publications/vons-tech-report-v1.0.1.pdf
+
+# Credentials, machine-specific config, private prompts and service caches.
+.env
+.env.*
+*.env
+*.pem
+*.key
+*.p12
+*.pfx
+*.jks
+credentials*.json
+secrets*.json
+service-account*.json
+token.json
+.npmrc
+.pypirc
+.netrc
+.aws/
+.ssh/
+.config/
+.cache/
+.huggingface/
+.claude/
+.codex/
+.cursor/
+.trae/
+.idea/
+.vscode/
+*.local.*
+*.log
+*.sqlite*
+*.db
+*.bak
+*.swp
+*~
+.git_backup/
+
+# Environments, dependencies and generated browser bundles.
+.venv/
+venv/
+node_modules/
+__pycache__/
+*.py[cod]
+.pytest_cache/
+.mypy_cache/
+.ruff_cache/
+.tox/
+.coverage*
+htmlcov/
+coverage/
+build/
+dist/
+*.egg-info/
+/sdk/typescript/demo/*.js
+/sdk/typescript/demo/*.js.map
+.DS_Store
+Thumbs.db
diff --git a/CITATION.cff b/CITATION.cff
new file mode 100644
index 0000000000000000000000000000000000000000..61a0247bffea10ebe871b5432362011ff53ba158
--- /dev/null
+++ b/CITATION.cff
@@ -0,0 +1,11 @@
+cff-version: 1.2.0
+message: "If you use this research source, cite this version and the accompanying publications when available."
+type: software
+title: "Vons: Compact Local Decision Models for Frontier-Agent Workflows"
+version: 0.1.0
+authors:
+ - family-names: Ahn
+ given-names: Kwangseob
+ affiliation: "INLEVEL9 / SEJONG UNIV."
+ email: oswarld@inlevel9.com
+abstract: "Research source for bounded local candidate selection and abstention, with host-owned execution and consent."
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
index 0000000000000000000000000000000000000000..49760ddc35fdc500adbd98cb70c8e1af0d53b88c
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1,81 @@
+# Contributing to Vons
+
+Help make bounded local decisions easier to understand, reproduce and improve.
+Questions, unsuccessful trials, documentation fixes and small code changes are
+welcome. Start with the [community guide](docs/COMMUNITY.md).
+
+## Choose a contribution
+
+- Share an experience using the **Experience report** issue form. Describe what
+ happened, including failures; a positive result is not required.
+- Submit a **Reproduction report** with exact commands, versions, denominators
+ and the scope of the claim you checked.
+- Use **Bug report** for a minimal, preferably synthetic, reproduction.
+- Propose a focused change through a pull request. Discuss changes to the public
+ contract, data handling, model architecture or dependencies before implementing
+ them. Small documentation corrections can go directly to a pull request.
+
+The intended repository is [inlevel9-com/Jons](https://github.com/inlevel9-com/Jons).
+Its URL spelling differs from the Vons project name. It was private and empty
+when these instructions were prepared; public participation starts after the
+maintainer publishes the reviewed source and verifies the issue forms.
+
+## Work locally
+
+Use Python 3.10 or later. From a source checkout:
+
+```sh
+python3 -m venv .venv
+. .venv/bin/activate
+python -m pip install -e '.[dev]'
+python -m pytest -q
+ruff check .
+python tools/prepare_public_release.py
+```
+
+On Windows, activate with `.venv\Scripts\Activate.ps1` in PowerShell. Tests for
+optional training/export dependencies may skip explicitly. Do not download
+restricted data or model weights simply to remove a skip. For TypeScript work,
+use the [SDK checks](sdk/typescript/README.md).
+
+Keep one purpose per change. Add behavior-focused regression coverage for fixes.
+Report checks you ran, checks you could not run, and the reason. English is used
+for code, comments and repository documentation; community questions and
+experience reports may be in English or Korean.
+
+## Preserve the boundaries
+
+The general decision contract and the KASI compatibility adapter are separate.
+Model output never executes a tool, grants consent or authorizes a high-risk
+action. Self-reported confidence is not a calibrated probability. Missing
+measurements stay unavailable; design targets are not achieved results.
+
+Use synthetic or redacted examples in public reports. Do not attach credentials,
+private prompts, customer traces, personal data, restricted benchmark rows,
+model weights or private evidence archives. Keep your own raw records locally;
+share only material you are entitled to disclose. Contact
+[oswarld@inlevel9.com](mailto:oswarld@inlevel9.com) before disclosing a security
+issue; the first message should describe the issue without credentials or
+sensitive attachments.
+
+New public files must be reviewed and added to `configs/public-release.json`
+and, where necessary, `.gitignore`. Never force-add ignored research material.
+
+## Review and attribution
+
+Maintainers review scope, correctness, evidence and redistribution rights before
+merging. An issue, testimonial or model-assisted review is not acceptance,
+independent replication or peer review. Review may request changes or decline a
+proposal; no response-time or merge guarantee is implied.
+
+Be specific and respectful. Critique claims and code rather than people. Spam,
+harassment, fabricated evidence and exposed private information may be removed;
+technical criticism and negative results are welcome. Corrections should keep
+the original claim and explain what changed whenever it is safe to do so.
+
+The software uses the [Vons Community and Commercial License](LICENSE), with
+separate [article terms](docs/publications/LICENSE.md). Submitting an issue does
+not grant software-use rights or permission to use it as a promotional quote.
+Code contributions are reviewed for compatibility with the repository license;
+identify third-party material and obtain any required employer permission.
+No copyright assignment or separate contributor agreement is created here.
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000000000000000000000000000000000000..02fdf205459235265f92d5fe07a7f143ca6c1ded
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,104 @@
+Vons Community and Commercial License 1.0
+SPDX-License-Identifier: LicenseRef-Vons-Community-Commercial-1.0
+
+1. Scope and definitions
+
+"Licensor" means each copyright holder who makes material available under this
+license. "Software" means the Vons-owned source code, configuration, tests and
+supporting software documentation accompanied by this license, including copies
+and modifications. "You" means the individual or legal entity exercising the
+permissions below, including persons acting on that entity's behalf.
+
+This license does not cover material with a separate license notice. In
+particular, the paper and Tech Report and their original research figures are
+licensed separately under CC BY 4.0. Third-party dependencies, upstream model
+assets, datasets, trademarks and logos are not relicensed by this document.
+No model weights or benchmark datasets are supplied with this source release.
+
+"Noncommercial Use" means personal learning, independent noncommercial
+research, or noncommercial education, research or public-benefit activity by a
+nonprofit or educational institution, where the activity is not undertaken for
+commercial advantage, monetary compensation, or on behalf of a business.
+Nonprofit or educational status alone does not make commercial activity
+Noncommercial Use. Unrestricted donations that do not buy a service or benefit
+do not by themselves make an otherwise qualifying activity commercial.
+
+"Commercial Use" includes paid consulting or client work; use in or to support
+a monetized product, service, SaaS, API, hosted or managed service; internal
+business operations; and evaluation, research or deployment by, for, or on
+behalf of a for-profit enterprise. Contractors and affiliates acting for such
+an enterprise require the same permission. Personal use by an employee outside
+their employment, without business benefit, may qualify as Noncommercial Use.
+
+2. Free community permission
+
+Subject to this license, each Licensor grants You a worldwide, nonexclusive,
+royalty-free copyright license to use, reproduce, study, modify, display and
+distribute the Software solely for Noncommercial Use. You may provide access
+to an otherwise qualifying noncommercial service under these conditions.
+Only rights that a Licensor is entitled to grant are included.
+
+3. Redistribution and attribution
+
+When distributing copies or substantial portions of the Software, including
+modified copies or a compiled form, You must:
+
+(a) retain this license, copyright notices and attribution notices;
+(b) clearly identify Your modifications and preserve their provenance;
+(c) identify the Vons version or source revision used where available; and
+(d) convey these same use restrictions for the covered Software, without
+ representing that You can grant Commercial Use rights.
+
+Do not remove notices, misrepresent origin, or imply endorsement by a Licensor,
+INLEVEL9, Sejong University or any other named institution. For research that
+uses Vons, include an appropriate citation to the software and relevant paper
+or Tech Report when reporting results. An unavailable DOI is not required.
+Attribution or citation does not authorize an otherwise restricted use.
+
+4. Enterprise and commercial permission
+
+Commercial Use is not granted by this license. It requires a separate written
+commercial agreement from the relevant Licensor before the activity begins.
+There is no automatic enterprise evaluation or free-trial exception. Contact
+oswarld@inlevel9.com to arrange the scope, fees and permitted entities.
+This license sets no price, billing unit, service level or support commitment.
+A commercial agreement applies only to the parties and scope it identifies.
+
+5. Outputs and independent rights
+
+This license claims no ownership or royalty over Your inference outputs merely
+because they were produced using the Software. Outputs do not authorize an
+unlicensed deployment and may contain material subject to independent rights.
+Your inputs remain subject to their own rights and permissions.
+
+No trademark, logo, certification or endorsement rights are granted, except
+the descriptive use needed to comply with the notices above. No patent license
+is granted by this document. Statutory exceptions and other independently
+obtained permissions are unaffected. This license does not revoke rights
+previously granted under another license for an earlier copy, and does not
+restrict separately licensed third-party components.
+
+6. Termination and cure
+
+Your permissions terminate automatically if You materially breach this
+license. They are reinstated when the breach is cured within 30 days after
+You first discover it, provided this is Your first breach. Otherwise written
+reinstatement from the relevant Licensor is required. Termination does not
+affect compliant recipients' direct permissions or obligations that by their
+nature survive, including the notices and disclaimers below.
+
+7. Warranty disclaimer and liability
+
+TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, THE SOFTWARE IS PROVIDED
+"AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND
+NONINFRINGEMENT. THE LICENSORS ARE NOT LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY ARISING FROM THE SOFTWARE OR ITS USE, WHETHER IN CONTRACT, TORT OR
+OTHERWISE. NOTHING HERE EXCLUDES LIABILITY THAT CANNOT LAWFULLY BE EXCLUDED.
+
+8. General
+
+Rights not expressly granted are reserved. No later license version applies
+automatically. If a provision is unenforceable, the remaining provisions remain
+in effect to the extent permitted by law. This is a source-available license
+with use restrictions; it is not an OSI-approved open-source license.
diff --git a/README.md b/README.md
index 154df8298fab5ecf322016157858e08cd1bccbe1..83d1d2fa49547f6cad203d95390f9a10fa66343a 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,93 @@
---
-license: apache-2.0
+license: other
+license_name: vons-community-commercial-1.0
+license_link: LICENSE
+language:
+ - en
+tags:
+ - vons
+ - research
+ - candidate-selection
+ - onnx
---
+
+
+
+# Vons
+
+**Plan globally. Decide locally. Keep the host in control.**
+
+Compact local decision models for frontier-agent workflows.
+
+**Kwangseob Ahn** · **INLEVEL9 / SEJONG UNIV.** · **oswarld@inlevel9.com**
+
+## Source preview
+
+This repository contains research source and documentation. It does not contain
+pretrained model weights, tokenizer assets or datasets. Hosted inference and
+`from_pretrained` loading are not available from this source preview.
+
+Vons studies Direct and Diffusion candidate scoring with abstention. The host
+owns execution, permission and consent. Model output never authorizes an action.
+English-first operation and a model asset budget under 64 MiB are design targets;
+they are not general quality or complete browser-package guarantees.
+
+See [the model card](docs/MODEL_CARD.md),
+[the TypeScript SDK](sdk/typescript/README.md),
+[the paper and Tech Report](docs/publications/README.md), and
+[release preparation](docs/PUBLIC_RELEASE.md).
+
+## Read, try and contribute
+
+This source preview is distributed through [INLEVEL9/Vons](https://huggingface.co/INLEVEL9/Vons).
+Source and contribution reports belong in
+[inlevel9-com/Vons](https://github.com/inlevel9-com/Vons). The reviewed paper and Tech Report are included as PDF downloads below. The software remains a 0.1.0
+research preview. No pretrained weights or working Space are announced.
+
+Follow the [community guide](docs/COMMUNITY.md) for the no-weight walkthrough,
+experience and reproduction reports, and the
+[contribution guide](CONTRIBUTING.md) for review expectations. The paper is
+being prepared for [arXiv](docs/publications/ARXIV.md). User reports are not
+independent research validation.
+
+Maintainers can use the [Hub upload guide](docs/HUB_PUBLISHING.md) to prepare
+an organization card, source preview and later a separately validated Space.
+
+## Paper and Tech Report
+
+| Publication | Download |
+| --- | --- |
+| Vons: A Compact, Host-Controlled Decision Component for Agent Workflows — paper v1.0, final editorial revision | [PDF · 15 pages](docs/publications/vons-paper-v1.0.pdf) |
+| Vons: Compact Decision Models for Frontier-Agent Workflows — Technical Report v1.0.1 | [PDF · 20 pages](docs/publications/vons-tech-report-v1.0.1.pdf) |
+
+Articles and original figures use **CC BY 4.0**. Their version, SHA-256 digests
+and verification scope are in the [publication index](docs/publications/README.md).
+These preprints preserve negative results and missing measurements. No arXiv
+identifier or peer-review acceptance is announced.
+
+## Local use
+
+```sh
+python3 -m venv .venv
+. .venv/bin/activate
+python -m pip install -e '.[dev]'
+python -m vons.cli generate-smoke --output data/generated/smoke.jsonl
+python -m vons.cli validate-data --input data/generated/smoke.jsonl
+```
+
+The source export includes the research tools and pinned pilot configurations.
+Obtain and review upstream assets separately before running model experiments.
+Raw restricted benchmark data and private evidence are not redistributed here.
+
+## Terms
+
+Source is distributed under [Vons Community and Commercial License 1.0](LICENSE):
+qualifying noncommercial use is free; enterprise and other commercial use require
+a separate written agreement. Contact oswarld@inlevel9.com for commercial terms.
+This is source-available software, not OSI-approved open source.
+
+The paper and Tech Report are distributed under [CC BY 4.0](docs/publications/LICENSE.md).
+This permits commercial article reuse with attribution; software rights are
+separate. Third-party assets retain their own terms. See
+[licensing scope](docs/LICENSING.md). This source release does not establish research validation or a commercial
+customer agreement.
diff --git a/configs/pilot-diffusion.json b/configs/pilot-diffusion.json
new file mode 100644
index 0000000000000000000000000000000000000000..b5a2315bef1370f51b68fcc8b3bb95c03ca0e6e0
--- /dev/null
+++ b/configs/pilot-diffusion.json
@@ -0,0 +1,16 @@
+{
+ "model_id": "vons-pilot-diffusion",
+ "backend": "diffusion",
+ "option_count": 32,
+ "encoder": {"name": "google/bert_uncased_L-4_H-256_A-4", "revision": "387825ce42dbb39b87911cdf8e383ee3b25184f8", "max_tokens": 512},
+ "data": {"path": "data/generated/pilot.jsonl", "manifest": "artifacts/pilot-diffusion/data-manifest.json"},
+ "seed": 7,
+ "epochs": 3,
+ "batch_size": 16,
+ "learning_rate": 0.00005,
+ "diffusion_steps": 32,
+ "inference_steps": 4,
+ "device": "auto",
+ "artifact_dir": "artifacts/pilot-diffusion",
+ "target_bundle_bytes": 67108864
+}
diff --git a/configs/pilot.json b/configs/pilot.json
new file mode 100644
index 0000000000000000000000000000000000000000..b289157644c0014c391c993997546de5c9090317
--- /dev/null
+++ b/configs/pilot.json
@@ -0,0 +1,15 @@
+{
+ "model_id": "vons-pilot-direct",
+ "backend": "direct",
+ "option_count": 32,
+ "encoder": {"name": "google/bert_uncased_L-4_H-256_A-4", "revision": "387825ce42dbb39b87911cdf8e383ee3b25184f8", "max_tokens": 512},
+ "data": {"path": "data/generated/pilot.jsonl", "manifest": "artifacts/pilot/data-manifest.json"},
+ "seed": 7,
+ "epochs": 3,
+ "batch_size": 16,
+ "learning_rate": 0.00005,
+ "diffusion_steps": 32,
+ "inference_steps": 4,
+ "device": "auto",
+ "target_bundle_bytes": 67108864
+}
diff --git a/configs/public-release.json b/configs/public-release.json
new file mode 100644
index 0000000000000000000000000000000000000000..77838a70b756c0abfc8a044a16d56d3e69be8d65
--- /dev/null
+++ b/configs/public-release.json
@@ -0,0 +1,111 @@
+{
+ "schema": "vons.public-source-spec/v1",
+ "license_status": "owner_selected_custom_terms_prepared",
+ "files": [
+ ".gitattributes",
+ ".github/ISSUE_TEMPLATE/bug.yml",
+ ".github/ISSUE_TEMPLATE/experience.yml",
+ ".github/ISSUE_TEMPLATE/reproduction.yml",
+ ".github/PULL_REQUEST_TEMPLATE.md",
+ ".github/workflows/checks.yml",
+ ".gitignore",
+ "CITATION.cff",
+ "CONTRIBUTING.md",
+ "LICENSE",
+ "README.md",
+ "configs/pilot-diffusion.json",
+ "configs/pilot.json",
+ "configs/public-release.json",
+ "docs/COMMUNITY.md",
+ "docs/HUB_PUBLISHING.md",
+ "docs/HUGGING_FACE.md",
+ "docs/KASI_INTEGRATION.md",
+ "docs/LICENSING.md",
+ "docs/MODEL_CARD.md",
+ "docs/PUBLIC_RELEASE.md",
+ "docs/assets/inlevel9-signature-dark.png",
+ "docs/assets/inlevel9-signature.png",
+ "docs/publications/ARXIV.md",
+ "docs/publications/LICENSE.md",
+ "docs/publications/README.md",
+ "docs/publications/vons-paper-v1.0.pdf",
+ "docs/publications/vons-tech-report-v1.0.1.pdf",
+ "pyproject.toml",
+ "sdk/typescript/LICENSE",
+ "sdk/typescript/README.md",
+ "sdk/typescript/demo/benchmark.html",
+ "sdk/typescript/demo/benchmark.ts",
+ "sdk/typescript/demo/index.html",
+ "sdk/typescript/demo/main.ts",
+ "sdk/typescript/demo/parity.html",
+ "sdk/typescript/demo/parity.ts",
+ "sdk/typescript/package-lock.json",
+ "sdk/typescript/package.json",
+ "sdk/typescript/src/index.ts",
+ "sdk/typescript/src/onnx.ts",
+ "sdk/typescript/test/index.test.mjs",
+ "sdk/typescript/test/onnx.test.mjs",
+ "sdk/typescript/test/parity.test.mjs",
+ "tests/test_browser_benchmark.py",
+ "tests/test_browser_benchmark_summary.py",
+ "tests/test_browser_parity_reference.py",
+ "tests/test_bundle.py",
+ "tests/test_calibration.py",
+ "tests/test_contract.py",
+ "tests/test_data.py",
+ "tests/test_evaluation.py",
+ "tests/test_merge_browser_benchmarks.py",
+ "tests/test_mind2web.py",
+ "tests/test_mind2web_import.py",
+ "tests/test_mind2web_manifest.py",
+ "tests/test_mind2web_prediction.py",
+ "tests/test_mind2web_replay.py",
+ "tests/test_mind2web_runner.py",
+ "tests/test_public_release.py",
+ "tests/test_quality_summary.py",
+ "tests/test_regression.py",
+ "tests/test_shape_benchmark.py",
+ "tests/test_shared_bundle.py",
+ "tools/archive_manifest.py",
+ "tools/audit_local_model_alignment.py",
+ "tools/benchmark_onnx_bundle.py",
+ "tools/benchmark_onnx_shapes.py",
+ "tools/build_claim_ledger.py",
+ "tools/build_mind2web_manifest.py",
+ "tools/evaluate_mind2web.py",
+ "tools/export_shared_bundle.py",
+ "tools/freeze_publication_packet.py",
+ "tools/import_mind2web.py",
+ "tools/merge_browser_benchmarks.py",
+ "tools/predict_mind2web.py",
+ "tools/prepare_public_release.py",
+ "tools/recover_historical_manifest.py",
+ "tools/replay_mind2web_evaluation.py",
+ "tools/summarize_browser_benchmark.py",
+ "tools/summarize_quality.py",
+ "tools/verify_browser_benchmark.py",
+ "tools/verify_browser_parity.py",
+ "tools/verify_onnx_bundle.py",
+ "vons/__init__.py",
+ "vons/bundle.py",
+ "vons/calibration.py",
+ "vons/cli.py",
+ "vons/contract.py",
+ "vons/data.py",
+ "vons/evaluation.py",
+ "vons/kasi.py",
+ "vons/mind2web.py",
+ "vons/models.py",
+ "vons/ollama.py",
+ "vons/research.py",
+ "vons/training.py"
+ ],
+ "reviewed_binaries": {
+ "docs/assets/inlevel9-signature.png": "f7514b56b2a93293054b3d22634ac5f0cb11e00a370f53d8d9f934c55a21bbb5",
+ "docs/assets/inlevel9-signature-dark.png": "d6645528158842af77a89de97361fa0c521fbc5a3c0ea6e996f9c912cfcfe9b5",
+ "docs/publications/vons-paper-v1.0.pdf": "ae0e09c60e17a98b52bb25c611b2489d10b18bd98d87974f2e8dd25d746a5fc8",
+ "docs/publications/vons-tech-report-v1.0.1.pdf": "33076d9e52d4a073060066215dd390e3b0bf0cdef48c5ffb2a7c5189854254ed"
+ },
+ "software_license": "LicenseRef-Vons-Community-Commercial-1.0",
+ "article_license": "CC-BY-4.0"
+}
diff --git a/docs/COMMUNITY.md b/docs/COMMUNITY.md
new file mode 100644
index 0000000000000000000000000000000000000000..d2e683b107d9b9d351045d20fc9b38232932a2cb
--- /dev/null
+++ b/docs/COMMUNITY.md
@@ -0,0 +1,115 @@
+# Read, try, share and contribute
+
+Vons explores compact local decisions inside agent workflows. A planner supplies
+state and bounded candidates; the host retains execution, policy and consent.
+The community should help people understand this boundary, try the software and
+report what works or fails.
+
+## Start here
+
+| Your goal | Entry point | Current availability |
+| --- | --- | --- |
+| Understand Vons | [README](../README.md) and [model card](MODEL_CARD.md) | Included in this source preview |
+| Read the research | [Paper and Tech Report](publications/README.md) | Coming soon; v1.0 manuscripts are in preparation and excluded from this release |
+| Try without weights | The walkthrough below | Deterministic contract and synthetic data only |
+| Run model inference | [TypeScript SDK](../sdk/typescript/README.md) | Requires separately obtained, reviewed model/tokenizer assets |
+| Share experience | [Experience report](https://github.com/inlevel9-com/Vons/issues/new?template=experience.yml) | GitHub account required to submit |
+| Reproduce a result | [Reproduction report](https://github.com/inlevel9-com/Vons/issues/new?template=reproduction.yml) | Form included; evidence reviewed separately |
+| Improve Vons | [Contributing](../CONTRIBUTING.md) | Documentation, tests and scoped code changes welcome |
+
+The destinations are [GitHub: inlevel9-com/Vons](https://github.com/inlevel9-com/Vons)
+and [Hugging Face: INLEVEL9/Vons](https://huggingface.co/INLEVEL9/Vons).
+The source preview includes documentation and GitHub issue forms for feedback.
+The paper and Tech Report will be added after v1.0 review; this release contains
+neither manuscript. A source upload does not provide hosted model inference.
+The current software terms require a separate agreement for
+enterprise/commercial use, including enterprise evaluation. Reading the paper
+under its article terms is separate from software use.
+
+## A five-minute first exploration
+
+Five minutes is a usability target, not a measured onboarding result. Start in
+the root of a source checkout with Python 3.10+. This path needs no model assets,
+GPU, API token or hosted inference account. Python packaging may need internet
+access to install its build tools.
+
+```sh
+python3 -m venv .venv
+. .venv/bin/activate
+python -m pip install -e .
+python -m vons.cli generate-smoke --output data/generated/community-smoke.jsonl
+python -m vons.cli validate-data --input data/generated/community-smoke.jsonl
+```
+
+On Windows PowerShell use `.venv\Scripts\Activate.ps1` for activation. The
+generator reports four synthetic rows. Validation prints their data manifest;
+this checks the data contract, not model quality.
+
+Run this Python example in the same environment:
+
+```python
+from vons import KASIAdapter, KASIProposal
+
+adapter = KASIAdapter(tool_policy={"read_weather": "low"})
+for tool in ("read_weather", "unknown_tool"):
+ proposal = KASIProposal.from_mapping({
+ "calls": [{"name": tool}],
+ "confidence": 0.9,
+ "risk": "low",
+ })
+ decision = adapter.decide(proposal)
+ print(tool, decision.action.value, decision.reason)
+```
+
+Expected output:
+
+```text
+read_weather call approved_by_host_policy
+unknown_tool refuse unregistered_or_no_proposed_call
+```
+
+This is the deterministic KASI adapter, not a learned Vons prediction. The word
+`call` is a returned decision; the example never fetches weather or executes a
+tool. The host supplies the tool policy. The literal confidence is sample input,
+not a calibrated probability. See the [general scope](MODEL_CARD.md) and
+[KASI integration](KASI_INTEGRATION.md) before building an integration.
+
+## Share an honest experience
+
+Use a report form with the source revision or release-manifest digest, scenario,
+OS/device, runtime/provider, exact command, expected behavior and observed
+behavior. Mark whether you tried the contract, a synthetic example or real model
+inference. Include attempted, successful, abstained and failed counts with
+definitions; explain any overlapping categories. Report unavailable quantities
+as unavailable and keep errors in the denominator.
+
+A short negative report is useful. Personal experience and measured benchmarks
+serve different purposes: user ratings, stars and downloads do not establish
+accuracy, safety or independent replication. Public reports are not automatically
+training data or promotional testimonials. Link only safe evidence you have
+reviewed and have permission to share. No name, employer or private workflow is
+required beyond the hosting service's account requirements.
+
+## A practical platform roadmap
+
+These are proposed acceptance criteria, not completed or measured milestones.
+
+1. **Reading and participation:** publish a reviewed source preview, readable
+ research summary and accurate availability notices. A signed-out visitor can
+ read the documentation; a signed-in contributor can submit each issue form
+ and find the contribution rules. Check keyboard navigation and narrow screens.
+2. **First use:** test the no-weight walkthrough from a clean checkout. Invite
+ voluntary reports of completion, failure and time spent. Keep counts and
+ denominators; do not infer actual use from page views or stars.
+3. **Real inference:** offer a versioned demo only after permitted model assets,
+ tokenizer, notices, provider evidence and numerical parity are reviewed.
+ Clearly label unsupported requests and known failures. Host policy still
+ controls actions. Do not present static or simulated results as inference.
+4. **Community learning:** triage reports, publish reproducible improvements,
+ credit contributions and keep corrections visible. Record submitted reports,
+ independently reproduced reports and accepted contributions separately.
+
+Start with the existing GitHub and Hugging Face channels. A dedicated website,
+review database, accounts and telemetry need a separate implementation decision;
+none is required for the first source preview. Reading should remain available
+without a Vons account. Follow the [contribution and moderation rules](../CONTRIBUTING.md).
diff --git a/docs/HUB_PUBLISHING.md b/docs/HUB_PUBLISHING.md
new file mode 100644
index 0000000000000000000000000000000000000000..2ac3ca698274eac34b81ac05b6e40b2af89da632
--- /dev/null
+++ b/docs/HUB_PUBLISHING.md
@@ -0,0 +1,118 @@
+# Upload the Vons source preview to Hugging Face
+
+This is an owner-operated upload guide. The current local preparation contains
+97 reviewed files, including the final paper and Tech Report PDFs. Drafts,
+source manuscript bundles, model weights, restricted data and private records
+are excluded.
+
+## Destination and scope
+
+Use the existing model repository [INLEVEL9/Vons](https://huggingface.co/INLEVEL9/Vons).
+The organization page [INLEVEL9](https://huggingface.co/INLEVEL9) is its parent,
+not a folder-upload destination. There is no need to create another repository,
+a dataset or a Space for this source preview.
+
+At the last read-only check on 2026-09-25, the Hub repository was public and
+contained only `.gitattributes` and a minimal Apache-2.0 README. The prepared
+root README and LICENSE replace that placeholder with the selected Vons
+Community and Commercial License 1.0. The article CC BY 4.0 terms are separate.
+
+A commit to this public repository makes uploaded files publicly readable.
+Uploading source does not create hosted inference, pretrained weights or a
+working `from_pretrained` package. The card states those limits explicitly.
+The main code/contribution destination is
+[inlevel9-com/Vons](https://github.com/inlevel9-com/Vons). Its visibility is
+controlled separately from Hugging Face.
+
+## 1. Install and sign in
+
+On macOS with Homebrew:
+
+```sh
+brew install hf
+hf auth login
+hf auth whoami
+```
+
+If Homebrew already installed `hf`, use `brew upgrade hf` when an update is
+needed. Current CLI versions offer browser login: follow the displayed URL and
+code, and sign in using your account with write access to `INLEVEL9/Vons`.
+`hf auth whoami` confirms the account and organization membership; membership
+alone does not guarantee repository write permission.
+
+If your CLI asks for a token instead, create a user access token in
+[Hugging Face token settings](https://huggingface.co/settings/tokens), preferably
+scoped to write to `INLEVEL9/Vons`, and enter it at the hidden login prompt.
+Keep credentials out of source files, shell command arguments and issue reports.
+See the official [CLI guide](https://huggingface.co/docs/huggingface_hub/guides/cli).
+
+## 2. Use the reviewed export
+
+Run the source audit from the Vons checkout:
+
+```sh
+python3 tools/prepare_public_release.py
+```
+
+The current prepared upload folder is `releases/huggingface-source-v8`.
+It contains the 97 reviewed files plus a local `RELEASE_MANIFEST.json` receipt
+with every file's byte count and SHA-256 digest. Its root README is the Hub model
+card; the working-tree README remains the GitHub landing page.
+
+This export is a snapshot. If you edit any public source or documentation after
+preparation, create a fresh versioned directory and use that path below:
+
+```sh
+python3 tools/prepare_public_release.py --target huggingface --output releases/huggingface-source-v9
+```
+
+The exporter refuses to overwrite an existing directory. Never point the upload
+command at the development checkout or an old export containing stale terms.
+
+## 3. Upload
+
+From the Vons checkout, after reviewing the v8 export:
+
+```sh
+hf upload INLEVEL9/Vons releases/huggingface-source-v8 . \
+ --repo-type model \
+ --exclude RELEASE_MANIFEST.json \
+ --commit-message "Publish Vons source preview and reviewed research PDFs"
+```
+
+The final `.` places the files at the repository root while preserving nested
+paths. The command creates a Hub commit directly; a separate Git commit/push
+is unnecessary. It updates matching remote paths, including README and LICENSE,
+and does not request deletion of unrelated remote files. The manifest stays
+local as an audit receipt; it is not an additional source file in the allowlist.
+
+A successful command prints a repository or commit URL. For a 401/403 response,
+check the account, `INLEVEL9/Vons` write permission and credential scope; do not
+create a duplicate personal repository. Official
+[upload guidance](https://huggingface.co/docs/huggingface_hub/guides/upload)
+describes folder uploads and filtering.
+
+## 4. Verify the result
+
+Open [the model card](https://huggingface.co/INLEVEL9/Vons) and
+[Files and versions](https://huggingface.co/INLEVEL9/Vons/tree/main):
+
+- The card says this is a source preview with no pretrained weights or hosted inference.
+- License metadata uses `other`, `vons-community-commercial-1.0` and `LICENSE`.
+ It must no longer identify the software as Apache-2.0 or CC BY 4.0.
+- Root `LICENSE` and `sdk/typescript/LICENSE` contain the same custom terms.
+- Source paths such as `vons/`, `tools/`, `tests/` and `sdk/typescript/` are present.
+- The Paper and Tech Report links open the 15-page paper and 20-page report.
+ Their digests match the publication index. No manuscript source bundle or
+ private review material is uploaded.
+- Logo/documentation links resolve, and a signed-out visitor can read the card.
+
+Save the resulting Hub commit URL with the local release manifest. GitHub
+publication, manuscript publication and a hosted demo are separate actions.
+For subsequent source changes, create a new reviewed export and repeat the same
+upload command with its new path. Add research files only after their separate
+v1.0 review and an explicit public-allowlist update.
+
+The owner performs authentication, commit, push and publication. This local
+preparation has not executed an upload or changed remote visibility.
+Official CLI/upload guidance checked 2026-09-25.
diff --git a/docs/HUGGING_FACE.md b/docs/HUGGING_FACE.md
new file mode 100644
index 0000000000000000000000000000000000000000..770bf1395c322c08a80f68b135915045258783fd
--- /dev/null
+++ b/docs/HUGGING_FACE.md
@@ -0,0 +1,93 @@
+---
+license: other
+license_name: vons-community-commercial-1.0
+license_link: LICENSE
+language:
+ - en
+tags:
+ - vons
+ - research
+ - candidate-selection
+ - onnx
+---
+
+
+
+# Vons
+
+**Plan globally. Decide locally. Keep the host in control.**
+
+Compact local decision models for frontier-agent workflows.
+
+**Kwangseob Ahn** · **INLEVEL9 / SEJONG UNIV.** · **oswarld@inlevel9.com**
+
+## Source preview
+
+This repository contains research source and documentation. It does not contain
+pretrained model weights, tokenizer assets or datasets. Hosted inference and
+`from_pretrained` loading are not available from this source preview.
+
+Vons studies Direct and Diffusion candidate scoring with abstention. The host
+owns execution, permission and consent. Model output never authorizes an action.
+English-first operation and a model asset budget under 64 MiB are design targets;
+they are not general quality or complete browser-package guarantees.
+
+See [the model card](../docs/MODEL_CARD.md),
+[the TypeScript SDK](../sdk/typescript/README.md),
+[the paper and Tech Report](../docs/publications/README.md), and
+[release preparation](../docs/PUBLIC_RELEASE.md).
+
+## Read, try and contribute
+
+This source preview is distributed through [INLEVEL9/Vons](https://huggingface.co/INLEVEL9/Vons).
+Source and contribution reports belong in
+[inlevel9-com/Vons](https://github.com/inlevel9-com/Vons). The reviewed paper and Tech Report are included as PDF downloads below. The software remains a 0.1.0
+research preview. No pretrained weights or working Space are announced.
+
+Follow the [community guide](../docs/COMMUNITY.md) for the no-weight walkthrough,
+experience and reproduction reports, and the
+[contribution guide](../CONTRIBUTING.md) for review expectations. The paper is
+being prepared for [arXiv](../docs/publications/ARXIV.md). User reports are not
+independent research validation.
+
+Maintainers can use the [Hub upload guide](../docs/HUB_PUBLISHING.md) to prepare
+an organization card, source preview and later a separately validated Space.
+
+## Paper and Tech Report
+
+| Publication | Download |
+| --- | --- |
+| Vons: A Compact, Host-Controlled Decision Component for Agent Workflows — paper v1.0, final editorial revision | [PDF · 15 pages](../docs/publications/vons-paper-v1.0.pdf) |
+| Vons: Compact Decision Models for Frontier-Agent Workflows — Technical Report v1.0.1 | [PDF · 20 pages](../docs/publications/vons-tech-report-v1.0.1.pdf) |
+
+Articles and original figures use **CC BY 4.0**. Their version, SHA-256 digests
+and verification scope are in the [publication index](../docs/publications/README.md).
+These preprints preserve negative results and missing measurements. No arXiv
+identifier or peer-review acceptance is announced.
+
+## Local use
+
+```sh
+python3 -m venv .venv
+. .venv/bin/activate
+python -m pip install -e '.[dev]'
+python -m vons.cli generate-smoke --output data/generated/smoke.jsonl
+python -m vons.cli validate-data --input data/generated/smoke.jsonl
+```
+
+The source export includes the research tools and pinned pilot configurations.
+Obtain and review upstream assets separately before running model experiments.
+Raw restricted benchmark data and private evidence are not redistributed here.
+
+## Terms
+
+Source is distributed under [Vons Community and Commercial License 1.0](../LICENSE):
+qualifying noncommercial use is free; enterprise and other commercial use require
+a separate written agreement. Contact oswarld@inlevel9.com for commercial terms.
+This is source-available software, not OSI-approved open source.
+
+The paper and Tech Report are distributed under [CC BY 4.0](../docs/publications/LICENSE.md).
+This permits commercial article reuse with attribution; software rights are
+separate. Third-party assets retain their own terms. See
+[licensing scope](../docs/LICENSING.md). This source release does not establish research validation or a commercial
+customer agreement.
diff --git a/docs/KASI_INTEGRATION.md b/docs/KASI_INTEGRATION.md
new file mode 100644
index 0000000000000000000000000000000000000000..9c5b12ade57c8a7b5a1b33fe6605ba47ebb5b531
--- /dev/null
+++ b/docs/KASI_INTEGRATION.md
@@ -0,0 +1,44 @@
+# KASI integration in Vons
+
+KASI is the first Vons domain adapter, not a separate model product. Vons owns
+the general candidate judgment contract; the adapter preserves KASI's public
+five-action contract for tool-calling hosts:
+
+`call`, `clarify`, `confirm`, `refuse`, `respond`.
+
+The model may propose ordinary calls, clarification, refusal, or a response. It
+cannot grant consent. The host wrapper requires a host-owned registry of tool
+names and risk levels, validates tools and arguments, applies confidence
+thresholds, and derives `confirm` from that policy. The proposal's `risk` is
+only advisory: it can never lower the registered host risk, and missing or
+unknown risk is fail-closed. The host remains the only execution boundary.
+
+Consent is bound to the complete call, including its arguments. Pass the
+`KASICall.fingerprint()` returned for the exact call in `confirmed_calls`; a
+tool name in `confirmed_tools` is retained only for compatibility and cannot
+authorize a high-risk call.
+
+The Python adapter stores a SHA-256 fingerprint. The TypeScript SDK exposes the
+same canonical `{name, arguments}` consent key as a portable string because
+browser runtimes do not provide synchronous SHA-256. A host that shares consent
+records between the Python and TypeScript adapters must hash the TypeScript key
+with SHA-256 before persistence and comparison.
+
+Unregistered tools are refused. A minimal host setup is:
+
+```python
+from vons import KASIAdapter, KASICall, KASIProposal
+
+adapter = KASIAdapter(tool_policy={"read_weather": "low", "unlock": "high"})
+proposal = KASIProposal(
+ calls=(KASICall("read_weather", {"city": "Seoul"}),),
+ confidence=0.9,
+ risk="low",
+)
+decision = adapter.decide(proposal)
+```
+
+The mapping is intentionally one-way: KASI calls can be represented as Vons
+choices, but arbitrary Vons choices do not become tool calls without a host
+adapter. Existing KASI datasets, safety policy, and C99 adapter can be imported
+behind a manifest when their provenance and licensing are recorded.
diff --git a/docs/LICENSING.md b/docs/LICENSING.md
new file mode 100644
index 0000000000000000000000000000000000000000..ae2f2d45af21f5dafde4999fe1d103e85f373564
--- /dev/null
+++ b/docs/LICENSING.md
@@ -0,0 +1,42 @@
+# Licensing and distribution scope
+
+The owner selected these terms on 2026-09-24. This local preparation is ready
+for owner-controlled source distribution:
+
+| Material | Terms |
+|---|---|
+| Vons-owned source, tests, configurations and software documentation | [Vons Community and Commercial License 1.0](../LICENSE) |
+| Paper, Tech Report and their original research figures | [CC BY 4.0](publications/LICENSE.md) |
+| Third-party libraries, upstream encoders/tokenizers and datasets | Their original terms; no relicense |
+| INLEVEL9 logo and other marks | No general trademark license or endorsement |
+| Model weights, restricted data and private evidence | Excluded from this source release |
+
+The free software grant covers qualifying noncommercial personal, educational,
+nonprofit research and public-benefit use. Enterprise use, including internal
+evaluation, and other commercial use require a separate written agreement.
+Paid consulting, client work, SaaS/API hosting and embedding in a commercial
+product fall in that category. Contact [oswarld@inlevel9.com](mailto:oswarld@inlevel9.com)
+for the scope and commercial terms; no price or automatic trial is specified.
+
+This is **source-available software**, not OSI-approved open source. The article
+license is deliberately separate: CC BY 4.0 permits commercial article reuse
+with its attribution conditions, without granting commercial software rights.
+Affiliation is attribution and does not establish institutional endorsement.
+
+## Transition and distribution
+
+Earlier local Python metadata declared Apache-2.0. This source release
+uses `LicenseRef-Vons-Community-Commercial-1.0` and includes its exact text.
+Frozen research snapshots retain their historical metadata and measurements.
+This change makes no claim that rights previously granted under Apache-2.0 can
+be withdrawn. Existing third-party licenses and notices remain effective.
+
+The root license contains the custom terms for this source distribution.
+A separate written agreement is required for enterprise or commercial software
+use; publishing the source does not execute a customer contract. The source
+list and hashes identify the reviewed files, and do not establish rights over
+an unreviewed third-party asset. No manuscript or model weights accompany this
+source release.
+
+Commercial contracts, pricing, support and optional conformance services are
+separate from this free community grant. No certification claim is made.
diff --git a/docs/MODEL_CARD.md b/docs/MODEL_CARD.md
new file mode 100644
index 0000000000000000000000000000000000000000..e6baacc93897fa44fe10448b0946228be7a02d1e
--- /dev/null
+++ b/docs/MODEL_CARD.md
@@ -0,0 +1,54 @@
+# Vons model card
+
+Status: research source preview. This package contains no pretrained weights,
+tokenizer files or benchmark datasets.
+
+## Intended use
+
+Vons studies bounded candidate selection and abstention in agent workflows.
+A host supplies the state and candidates. The host alone enforces permission,
+consent and execution policy. KASI is a separate compatibility adapter.
+
+## Architecture and target
+
+The research implementation offers a Direct scorer and a conditional Diffusion
+scorer. Pilot configurations pin `google/bert_uncased_L-4_H-256_A-4` at revision
+`387825ce42dbb39b87911cdf8e383ee3b25184f8`. This identifies a research dependency;
+its assets are not included or relicensed here.
+
+English-first input and a model asset budget below 64 MiB are design targets.
+Runtime libraries, complete download size and memory use are distinct quantities.
+
+## Evaluation and limitations
+
+Historical local experiments include synthetic pilots and an evaluation-only
+external benchmark diagnostic. They do not establish general task quality,
+production readiness, calibrated safety or a Direct/Diffusion superiority claim.
+Reviewed numerical claims belong to the versioned
+[paper and Tech Report](publications/README.md), with exact evidence references.
+Unreviewed historical tables are not distributed as current results.
+
+The ONNX candidate head does not support general score questions. Python and
+TypeScript token-budget checks are not fully identical. Browser smoke, repeated
+latency, full numerical parity and memory evidence remain separate gates.
+
+Do not use model confidence as a permission grant or assume it is calibrated.
+Vons cannot execute tools or approve high-risk actions.
+
+## Data and provenance
+
+Synthetic data can be generated from the source. Restricted data, model-generated
+raw responses, private prompts, model checkpoints and local manifests are
+excluded from this distribution. Obtain any external dataset under its own
+terms. The source release manifest records hashes of the files actually exported.
+
+## Author and terms
+
+Kwangseob Ahn — INLEVEL9 / SEJONG UNIV. — oswarld@inlevel9.com.
+
+The Vons-owned source is prepared under [Vons Community and Commercial License
+1.0](../LICENSE): noncommercial community use is free; enterprise/commercial use
+requires a separate written agreement. The articles and their original figures
+use [CC BY 4.0](publications/LICENSE.md). Third-party assets retain their own
+terms, and no model weights are licensed or included by this source-only card.
+See [licensing scope](LICENSING.md) and [release preparation](PUBLIC_RELEASE.md).
diff --git a/docs/PUBLIC_RELEASE.md b/docs/PUBLIC_RELEASE.md
new file mode 100644
index 0000000000000000000000000000000000000000..4937ffa55bdeea9746029f69d4c382df51a50094
--- /dev/null
+++ b/docs/PUBLIC_RELEASE.md
@@ -0,0 +1,94 @@
+# Public source release
+
+The public source set is defined by `configs/public-release.json`. The root
+`.gitignore` excludes unreviewed root paths and internal documents; the release
+tool independently rejects any Git candidate outside that exact file list.
+
+## Included and excluded material
+
+Included: Python and TypeScript source, tests, source demo files, the SDK
+dependency lockfile, pilot configuration, reviewed public documentation and the
+owner-supplied INLEVEL9 logo. Reviewed publications are listed separately in
+`docs/publications/README.md`.
+
+Excluded: all local datasets (including synthetic outputs), model weights,
+tokenizers, ONNX external-data shards, experiment reports, evidence archives,
+private prompts and raw model responses, agent/session records, license drafts,
+historical planning documents, generated demo JavaScript, environments,
+credentials, service caches and unreviewed binary files. Keep excluded originals
+locally; never force-add them to make an upload work.
+
+## Audit and export
+
+Run from the repository root with Python 3.10+ and Git:
+
+```sh
+python tools/prepare_public_release.py
+python tools/prepare_public_release.py --target github --output releases/github-source
+python tools/prepare_public_release.py --target huggingface --output releases/huggingface-source
+```
+
+Each export is a new directory containing only allowlisted files and a
+`RELEASE_MANIFEST.json` with byte counts and SHA-256 hashes. Existing output
+directories are never overwritten. Use a new versioned output path after any
+source change. The Hugging Face export substitutes its model card as the root
+README. Both exports contain source and the two exact reviewed publication PDFs, with
+no pretrained assets.
+
+The audit detects known token/key patterns, personal home paths, private writing
+session URLs, unexpected Git files, symlinks and changed reviewed binaries.
+Pattern scanning is heuristic: passing it is not a complete secret audit or
+proof of redistribution rights. Read the actual export before publishing.
+
+## GitHub
+
+The source checkout uses `main`; review `git status`, the existing commit history
+and the export manifest before publishing changes. The owner performs commits,
+pushes and visibility changes. This preparation does not perform those actions. Preserve a clean initial tree: `.gitignore` cannot
+remove already committed material from history. If existing remote history is
+later attached, review that history independently before making it public.
+
+The CI workflow checks the release allowlist, Python tests and lint, and the SDK
+tests and three browser builds. Push/pull-request checks run when source,
+tests, configuration or the workflow changes; documentation-only edits do not
+trigger the full suite. A manual run remains available. SDK tokenizer tests use
+synthetic fixtures and require no private pilot assets. It has read-only repository permissions and
+does not publish packages or artifacts. Checks that require unavailable optional
+Python dependencies may be skipped; install training/export extras for the full
+local suite. The historical pilot-summary regression is also skipped when its
+private input files are absent. A separate synthetic regression runs without
+those files; do not publish the historical inputs merely to remove that skip.
+
+## Hugging Face
+
+Upload only a reviewed versioned Hugging Face export to `INLEVEL9/Vons`.
+The current preparation is `releases/huggingface-source-v8`; see the
+[step-by-step upload guide](HUB_PUBLISHING.md). Do not select the development workspace in the
+Hub upload dialog. Use explicit allow/ignore patterns if using `upload_folder`;
+its handling of ignore files depends on the client version and upload method.
+
+This source preview has no weights and no inference widget. A later weight
+release needs its own exact file inventory, upstream notices, model/data
+provenance and runtime validation. Do not turn the ignored checkpoint directory
+into a public upload by adding Git LFS patterns.
+
+Official references: [GitHub ignore guidance](https://docs.github.com/en/get-started/getting-started-with-git/ignoring-files)
+and [Hub upload guidance](https://huggingface.co/docs/huggingface_hub/guides/upload).
+
+## Terms and publication state
+
+The owner selected noncommercial-free / enterprise-commercial software terms
+and CC BY 4.0 articles on 2026-09-24. The prepared root [license](../LICENSE), SDK
+license copy, package metadata and Hub card now match that source-available
+direction. [Licensing scope](LICENSING.md) explains the boundary and preserves
+earlier and third-party rights. Local preparation is complete for the owner to
+commit, push and publish; no commercial customer agreement is adopted here.
+npm publishing remains disabled with `private: true`.
+
+The Python build backend requires setuptools 77.0.3+ to include the custom SPDX
+license reference and exact license file in wheel/sdist metadata. No runtime
+dependency was added. Verify built package contents as well as source exports.
+
+The author-approved public contact is Kwangseob Ahn, oswarld@inlevel9.com,
+INLEVEL9 / SEJONG UNIV. Logo inclusion does not grant trademark rights or imply
+institutional endorsement. Model-assisted writing/review is not peer acceptance.
diff --git a/docs/assets/inlevel9-signature-dark.png b/docs/assets/inlevel9-signature-dark.png
new file mode 100644
index 0000000000000000000000000000000000000000..431a41050572a8b47354ab2358a1093f247ee0ab
Binary files /dev/null and b/docs/assets/inlevel9-signature-dark.png differ
diff --git a/docs/assets/inlevel9-signature.png b/docs/assets/inlevel9-signature.png
new file mode 100644
index 0000000000000000000000000000000000000000..2bb449af8364fc25437590fd76c8c4a37952d916
Binary files /dev/null and b/docs/assets/inlevel9-signature.png differ
diff --git a/docs/publications/ARXIV.md b/docs/publications/ARXIV.md
new file mode 100644
index 0000000000000000000000000000000000000000..9ce87be444d5a204e56b02e6eea53d1e35011dc8
--- /dev/null
+++ b/docs/publications/ARXIV.md
@@ -0,0 +1,67 @@
+# arXiv preparation
+
+The [reviewed paper PDF](vons-paper-v1.0.pdf) is included in the source release,
+alongside the [Technical Report](vons-tech-report-v1.0.1.pdf). arXiv submission
+is being prepared; no arXiv identifier or acceptance is announced. arXiv performs
+content moderation, not journal peer review; see its
+[moderation policy](https://info.arxiv.org/help/moderation/index.html).
+
+## Current preparation
+
+Exact local PDF hashes match the reviewed final manuscripts, and all 35 pages
+have been inspected. The documents were generated with Typst, not TeX/LaTeX.
+The paper is being prepared for the genuine non-TeX PDF submission route,
+subject to arXiv's processing checks. An independent source rebuild remains
+unverified; see the [publication index](README.md) for exact verification scope.
+Historical drafts and claim-to-source records remain private.
+
+## Research scope
+
+Present the bounded decision contract, engineering evidence and informative
+negative results. State the synthetic pilot's label imbalance and baseline,
+external-evaluation failures, token budget and browser-verification limitations
+alongside the relevant results. A narrower research preprint can describe open
+engineering gates without claiming that those gates have passed or that a model
+is ready for deployment. Preserve a separate private claim-to-source audit.
+
+The publication language is English. Author metadata is **Kwangseob Ahn**,
+**INLEVEL9 / SEJONG UNIV.**, **oswarld@inlevel9.com**. Article preparation uses
+[CC BY 4.0](LICENSE.md); software terms are separate. The author remains
+responsible for scientific claims, references and model-assistance disclosure.
+
+## Files and checks
+
+Prepare a readable PDF, editable manuscript source, included figures and
+bibliography, together with a reproducible build instruction. Verify every
+source-bundle entry and record exact hashes. Resolve missing references,
+orphan captions, table breaks and unavailable figures; inspect all PDF pages.
+Keep private claim ledgers, prompts, review conversations, restricted benchmark
+rows and unrelated repository files outside the submission bundle.
+
+arXiv prefers TeX/LaTeX and requires source when the PDF was made from TeX/LaTeX.
+Include figure files instead of external figure links. See the official
+[submission overview](https://info.arxiv.org/help/submit/index.html).
+For a genuine non-TeX PDF, follow the [PDF requirements](https://info.arxiv.org/help/submit_pdf.html),
+including embedded outline fonts and no encryption or active content.
+For a TeX package, include the necessary bibliography source or compatible
+generated bibliography and confirm the top-level file builds from the bundle
+root. Inspect arXiv's processed PDF as well as the local build. See
+[TeX submission guidance](https://info.arxiv.org/help/submit_tex.html).
+
+## Author submission handoff
+
+1. Review the exact final manuscript, source bundle, hashes and remaining limits.
+2. Confirm title, abstract, author affiliation, article rights and a subject
+ category based on the paper's actual contribution. `cs.AI` and `cs.LG` are
+ candidates to assess, not confirmed classifications.
+3. Check the account and any applicable [endorsement requirement](https://info.arxiv.org/help/endorsement.html).
+4. Prepare the upload and metadata; verify the processed PDF and the selected
+ [arXiv license](https://info.arxiv.org/help/license/index.html). CC BY 4.0 is
+ an available option consistent with the selected article terms.
+5. The author approves the concrete submission and completes the submission
+ agreement. Add the real arXiv URL to the publication index only after it exists.
+
+Official guidance was checked on 2026-09-25; recheck it at submission time.
+The GitHub destination is [inlevel9-com/Vons](https://github.com/inlevel9-com/Vons)
+and the Hugging Face repository is [INLEVEL9/Vons](https://huggingface.co/INLEVEL9/Vons).
+Neither link establishes public artifact availability, replication or acceptance.
diff --git a/docs/publications/LICENSE.md b/docs/publications/LICENSE.md
new file mode 100644
index 0000000000000000000000000000000000000000..6ca2be0c3cea32638262661f9bc8766429d51f6c
--- /dev/null
+++ b/docs/publications/LICENSE.md
@@ -0,0 +1,40 @@
+# Article license: CC BY 4.0
+
+The Vons paper and Tech Report, including their original research figures, are
+prepared for release under the **Creative Commons Attribution 4.0 International
+License (CC BY 4.0)**, as selected by the author on 2026-09-24.
+
+Author: Kwangseob Ahn
+Affiliation: INLEVEL9 / SEJONG UNIV.
+Contact: oswarld@inlevel9.com
+
+The [CC BY 4.0 legal code](https://creativecommons.org/licenses/by/4.0/legalcode.en)
+governs the article material identified by this notice. The
+[license summary](https://creativecommons.org/licenses/by/4.0/) explains sharing,
+adaptation and attribution. Commercial reuse of the articles is permitted under
+CC BY 4.0; the software's commercial-use restriction does not apply to them.
+
+Retain the author, title, version, license link and supplied attribution notices;
+indicate modifications. Do not imply the author's or institutions' endorsement.
+Third-party material specifically identified under other terms, software source
+excerpts identified as separately licensed, logos, raw benchmark data and private
+verification records are excluded from this article grant. Statutory exceptions
+and independent rights remain unaffected.
+
+This notice does not license the Vons software or any model weights. See the
+repository's [software license](../../LICENSE) for software use. It does not
+claim that an article has been submitted, accepted, externally peer-reviewed or
+already uploaded to a public destination.
+
+## Notice for the v0.2 release copies
+
+This notice records the author's decision after the research evidence was
+frozen. It applies to the selected release copies of the Vons paper v0.2 and
+Technical Report v0.2 and their original figures. Where an earlier manuscript
+states that article terms await an owner decision, this notice supersedes that
+article-license status only. It does not alter measurements, claim provenance,
+publication status, or the remaining research gates.
+
+Distribute this notice alongside the reviewed manuscript files and their
+release checksums. The Tech Report's original author/model attribution is
+preserved; a separate licensing notice does not replace its authoring history.
diff --git a/docs/publications/README.md b/docs/publications/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..70d5e332f4fe140deeef62c7d0c99bcd5d994860
--- /dev/null
+++ b/docs/publications/README.md
@@ -0,0 +1,40 @@
+# Paper and Tech Report
+
+The reviewed PDFs are included in this release. Both files preserve the final
+manuscript bytes; publication does not imply new experiments or peer acceptance.
+
+Author: **Kwangseob Ahn**
+Affiliation: **INLEVEL9 / SEJONG UNIV.**
+Contact: **oswarld@inlevel9.com**
+
+| Publication | Version | Download |
+| --- | --- | --- |
+| Vons: A Compact, Host-Controlled Decision Component for Agent Workflows | Paper v1.0, final editorial revision | [PDF · 15 pages](vons-paper-v1.0.pdf) |
+| Vons: Compact Decision Models for Frontier-Agent Workflows | Technical Report v1.0.1 | [PDF · 20 pages](vons-tech-report-v1.0.1.pdf) |
+
+## Verification and provenance
+
+The final documents were reviewed against the frozen evidence packet and primary
+references, including tables, figures, negative results and missing measurements.
+Every PDF page was visually inspected. Independently checked local SHA-256
+values match the reviewed final versions. All pages render as US Letter, fonts
+are embedded, and no PDF JavaScript, launch action or embedded attachment was
+found. These are genuine Typst-generated PDFs; a clean source rebuild has not
+been independently completed and is not claimed.
+
+| File | SHA-256 |
+| --- | --- |
+| `vons-paper-v1.0.pdf` | `ae0e09c60e17a98b52bb25c611b2489d10b18bd98d87974f2e8dd25d746a5fc8` |
+| `vons-tech-report-v1.0.1.pdf` | `33076d9e52d4a073060066215dd390e3b0bf0cdef48c5ffb2a7c5189854254ed` |
+
+Only these exact PDFs are permitted by the public allowlist. Drafts, prompts,
+claim ledgers, review conversations, source bundles and restricted benchmark data
+remain excluded. The software has its own version, **0.1.0 research preview**.
+
+The [CC BY 4.0 article license](LICENSE.md) covers both manuscripts and their
+original figures. Software rights are governed separately by the
+[Vons Community and Commercial License 1.0](../../LICENSE); article licensing
+does not grant commercial software rights.
+
+arXiv submission is in preparation. No arXiv identifier, DOI or acceptance is
+announced. See the [arXiv preparation checklist](ARXIV.md).
diff --git a/docs/publications/vons-paper-v1.0.pdf b/docs/publications/vons-paper-v1.0.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..352c4e366a9768e3fbbf6506bdb8ead9379088ab
Binary files /dev/null and b/docs/publications/vons-paper-v1.0.pdf differ
diff --git a/docs/publications/vons-tech-report-v1.0.1.pdf b/docs/publications/vons-tech-report-v1.0.1.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..4aa76596010ec35e0395839c376bcd3f55c93cd0
Binary files /dev/null and b/docs/publications/vons-tech-report-v1.0.1.pdf differ
diff --git a/pyproject.toml b/pyproject.toml
new file mode 100644
index 0000000000000000000000000000000000000000..09e631708e4ef717062d18f8be3c9ac2c6f6d5ba
--- /dev/null
+++ b/pyproject.toml
@@ -0,0 +1,35 @@
+[build-system]
+requires = ["setuptools>=77.0.3"]
+build-backend = "setuptools.build_meta"
+
+[project]
+name = "vons"
+version = "0.1.0"
+description = "Small local decision models for frontier-agent workflows"
+readme = "README.md"
+requires-python = ">=3.10"
+license = "LicenseRef-Vons-Community-Commercial-1.0"
+license-files = ["LICENSE"]
+authors = [{ name = "Vons contributors" }]
+dependencies = []
+
+[project.optional-dependencies]
+train = ["numpy>=1.26", "torch>=2.2", "transformers>=4.40", "safetensors>=0.4"]
+export = ["onnx>=1.16", "onnxruntime>=1.18", "onnxscript>=0.5"]
+ollama = ["ollama>=0.3"]
+dev = ["pytest>=8", "ruff>=0.6"]
+
+[project.scripts]
+vons = "vons.cli:main"
+
+[tool.setuptools.packages.find]
+include = ["vons*"]
+
+[tool.ruff]
+line-length = 100
+target-version = "py310"
+# Preserve acquired upstream evidence byte-for-byte; it is not Vons source.
+extend-exclude = ["data/restricted"]
+
+[tool.pytest.ini_options]
+testpaths = ["tests"]
diff --git a/sdk/typescript/LICENSE b/sdk/typescript/LICENSE
new file mode 100644
index 0000000000000000000000000000000000000000..02fdf205459235265f92d5fe07a7f143ca6c1ded
--- /dev/null
+++ b/sdk/typescript/LICENSE
@@ -0,0 +1,104 @@
+Vons Community and Commercial License 1.0
+SPDX-License-Identifier: LicenseRef-Vons-Community-Commercial-1.0
+
+1. Scope and definitions
+
+"Licensor" means each copyright holder who makes material available under this
+license. "Software" means the Vons-owned source code, configuration, tests and
+supporting software documentation accompanied by this license, including copies
+and modifications. "You" means the individual or legal entity exercising the
+permissions below, including persons acting on that entity's behalf.
+
+This license does not cover material with a separate license notice. In
+particular, the paper and Tech Report and their original research figures are
+licensed separately under CC BY 4.0. Third-party dependencies, upstream model
+assets, datasets, trademarks and logos are not relicensed by this document.
+No model weights or benchmark datasets are supplied with this source release.
+
+"Noncommercial Use" means personal learning, independent noncommercial
+research, or noncommercial education, research or public-benefit activity by a
+nonprofit or educational institution, where the activity is not undertaken for
+commercial advantage, monetary compensation, or on behalf of a business.
+Nonprofit or educational status alone does not make commercial activity
+Noncommercial Use. Unrestricted donations that do not buy a service or benefit
+do not by themselves make an otherwise qualifying activity commercial.
+
+"Commercial Use" includes paid consulting or client work; use in or to support
+a monetized product, service, SaaS, API, hosted or managed service; internal
+business operations; and evaluation, research or deployment by, for, or on
+behalf of a for-profit enterprise. Contractors and affiliates acting for such
+an enterprise require the same permission. Personal use by an employee outside
+their employment, without business benefit, may qualify as Noncommercial Use.
+
+2. Free community permission
+
+Subject to this license, each Licensor grants You a worldwide, nonexclusive,
+royalty-free copyright license to use, reproduce, study, modify, display and
+distribute the Software solely for Noncommercial Use. You may provide access
+to an otherwise qualifying noncommercial service under these conditions.
+Only rights that a Licensor is entitled to grant are included.
+
+3. Redistribution and attribution
+
+When distributing copies or substantial portions of the Software, including
+modified copies or a compiled form, You must:
+
+(a) retain this license, copyright notices and attribution notices;
+(b) clearly identify Your modifications and preserve their provenance;
+(c) identify the Vons version or source revision used where available; and
+(d) convey these same use restrictions for the covered Software, without
+ representing that You can grant Commercial Use rights.
+
+Do not remove notices, misrepresent origin, or imply endorsement by a Licensor,
+INLEVEL9, Sejong University or any other named institution. For research that
+uses Vons, include an appropriate citation to the software and relevant paper
+or Tech Report when reporting results. An unavailable DOI is not required.
+Attribution or citation does not authorize an otherwise restricted use.
+
+4. Enterprise and commercial permission
+
+Commercial Use is not granted by this license. It requires a separate written
+commercial agreement from the relevant Licensor before the activity begins.
+There is no automatic enterprise evaluation or free-trial exception. Contact
+oswarld@inlevel9.com to arrange the scope, fees and permitted entities.
+This license sets no price, billing unit, service level or support commitment.
+A commercial agreement applies only to the parties and scope it identifies.
+
+5. Outputs and independent rights
+
+This license claims no ownership or royalty over Your inference outputs merely
+because they were produced using the Software. Outputs do not authorize an
+unlicensed deployment and may contain material subject to independent rights.
+Your inputs remain subject to their own rights and permissions.
+
+No trademark, logo, certification or endorsement rights are granted, except
+the descriptive use needed to comply with the notices above. No patent license
+is granted by this document. Statutory exceptions and other independently
+obtained permissions are unaffected. This license does not revoke rights
+previously granted under another license for an earlier copy, and does not
+restrict separately licensed third-party components.
+
+6. Termination and cure
+
+Your permissions terminate automatically if You materially breach this
+license. They are reinstated when the breach is cured within 30 days after
+You first discover it, provided this is Your first breach. Otherwise written
+reinstatement from the relevant Licensor is required. Termination does not
+affect compliant recipients' direct permissions or obligations that by their
+nature survive, including the notices and disclaimers below.
+
+7. Warranty disclaimer and liability
+
+TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, THE SOFTWARE IS PROVIDED
+"AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND
+NONINFRINGEMENT. THE LICENSORS ARE NOT LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY ARISING FROM THE SOFTWARE OR ITS USE, WHETHER IN CONTRACT, TORT OR
+OTHERWISE. NOTHING HERE EXCLUDES LIABILITY THAT CANNOT LAWFULLY BE EXCLUDED.
+
+8. General
+
+Rights not expressly granted are reserved. No later license version applies
+automatically. If a provision is unenforceable, the remaining provisions remain
+in effect to the extent permitted by law. This is a source-available license
+with use restrictions; it is not an OSI-approved open-source license.
diff --git a/sdk/typescript/README.md b/sdk/typescript/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..b9ba343943bd557d300653bf9abdf3f8e0ed0a54
--- /dev/null
+++ b/sdk/typescript/README.md
@@ -0,0 +1,49 @@
+# `@vons/decision-sdk`
+
+The TypeScript package mirrors the Vons Python request/response contract and
+keeps KASI policy and execution in the host. It contains no tool executor and
+does not treat a model-produced risk or confidence value as permission.
+
+The contract-only entry point remains small, while the optional `./onnx`
+subpath uses pinned `onnxruntime-web@1.30.0` and
+`@huggingface/tokenizers@0.2.0` for local browser inference. Applications
+provide a model backend through `DecisionBackend`; the runtime helper verifies
+bundle bytes, uses the declared WASM or WebGPU provider, and does not silently
+fall back from an unavailable accelerator.
+`callFingerprint` returns a canonical JSON consent key. Hosts that persist
+consent for the Python adapter should SHA-256 this key before storage so the
+cross-language fingerprint format remains identical.
+
+Node 22+ can load the source directly with its TypeScript type stripping during
+early development. A release build should type-check and bundle the package
+with the consuming application's toolchain.
+
+The local smoke harness covers both pilot bundles and both providers. Build it
+and serve the repository root so the browser can fetch the ignored ORT runtime
+files and the existing pilot artifacts:
+
+```sh
+npm ci
+npm run build:browser
+cd ../..
+python3 -m http.server 8765 --bind 127.0.0.1
+```
+
+Open `http://127.0.0.1:8765/sdk/typescript/demo/`. The smoke page reports
+session-load and one-request timings, optional Chromium JS-heap observations,
+provider evidence, and the contract response. These are diagnostic smoke
+values, not the repeated benchmark protocol.
+
+## Source preview
+
+This package is private in npm metadata until an npm release is requested.
+Its `files` allowlist includes source, this guide and the software license. Models, tokenizers,
+datasets, generated demo JavaScript and dependencies are intentionally excluded
+from the public source export. Build the demos locally and supply your own
+reviewed model bundles before opening the smoke, benchmark or parity pages.
+
+The [Vons Community and Commercial License 1.0](LICENSE) permits qualifying
+noncommercial use without a fee. Enterprise and other commercial use require a
+separate written agreement; contact oswarld@inlevel9.com. This is source-available
+software. Dependencies retain their own terms, and the research articles' CC BY
+4.0 license does not grant commercial SDK rights.
diff --git a/sdk/typescript/demo/benchmark.html b/sdk/typescript/demo/benchmark.html
new file mode 100644
index 0000000000000000000000000000000000000000..8035dedeac86c74a55d1d101c942462500331ae0
--- /dev/null
+++ b/sdk/typescript/demo/benchmark.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ Vons ONNX Runtime Web benchmark
+
+
+
+
Vons ONNX Runtime Web benchmark
+
Run with query parameters such as ?backend=direct&provider=wasm&sessions=5&warmup=10&repeats=100.