README.md

Read-only source from the unchanged 0.3.4 kit. Existing license terms apply.

# AIL 0.3.4 Owner and Reference Kit

This package combines the AIL 0.2 language implementation with the AIL 0.3
owner identity workflow. It parses and validates AIL, creates a password-
protected owner wallet locally in a browser, signs an owner passport, produces
one public JSON identity packet, and verifies that packet in both JavaScript
and Python.

Creator and project owner: **Wakely Wolf**  
Canonical principal: `urn:ail:principal:wakely-wolf`

The included example declaration remains unsigned. The Owner Console creates a
new personal signing key and a cryptographically signed packet on the owner's
computer. No real private key is included in this release.

## Version 0.3.4

Read [release notes](RELEASE_NOTES_0.3.4.md) for the fixes, trusted-key checks,
upgrade instructions, and test limitations. Existing owners should use their
saved wallet in step 2 instead of generating a new key.

## Start here on Windows

1. Extract the ZIP file.
2. Double-click `OPEN_AIL_OWNER.bat` or `TRY_AIL.bat`.
3. Existing owner: use step 2 with your saved wallet. New user: enter your own identity in step 1; all ownership claims remain self-declared.
4. Download the private wallet and signed AI packet.
5. Keep the private wallet private. Upload only the AI identity packet.

AIL does not need a website. Leave the optional public verification URL blank;
the signed packet will remain `ail:self_asserted_key`. If AIL later has its
own website, sign a new packet with that URL using the same wallet and
publish the matching public key file there.

The console is a local browser application. It does not transmit the wallet,
password, passport, or packet over a network.

## Requirements

- A current Chrome, Edge, or Firefox browser for the Owner Console
- Python 3.10 or newer for developer and command-line tools
- The Python `cryptography` package for command-line signature verification

## Install the command

From this folder:

```bash
python -m pip install .
```

Or install the prebuilt `.whl` file in `dist/`. After installation, the `ail`
command is available from any folder:

```bash
ail validate message.ail --strict-registry
ail normalize message.ail
ail passport owner-passport.ail
ail verify-packet AIL_Identity_Packet.json
```

## Run the conformance tests

On Windows, double-click `RUN_TESTS.bat`. The results open in Notepad instead
of disappearing when the command finishes.

On macOS or Linux:

```bash
PYTHONPATH=src python -m unittest discover -s tests -v
```

When Node.js is installed, `run_tests.sh` also runs the browser cryptography
suite and passes its JavaScript-generated packet to the Python verifier.

## Validate a message

```bash
PYTHONPATH=src python -m ail_ref.cli validate examples/fact_query.ail
```

Use `--strict-registry` to reject unknown identifiers in the `ail:` namespace.

## Normalize a message

```bash
PYTHONPATH=src python -m ail_ref.cli normalize examples/aliases.ail
```

The three alias variants in that file normalize to the same identifier triple.

## Inspect the owner passport

```bash
PYTHONPATH=src python -m ail_ref.cli passport examples/wakely_wolf_passport.ail
```

The expected status is `ail:declared` because this is an unsigned example. A
packet produced by the Owner Console should return
`ail:cryptographically_verified` from `ail verify-packet`.

## 0.3.3 independent AIL identity

The owner console no longer suggests a VariableVista address. AIL packets may
omit a public anchor URL while retaining full signature verification and the
`ail:self_asserted_key` status. The owner may add an AIL-specific URL later
when signing a fresh packet with the same saved private key.

The `ail.example` addresses below are documentation placeholders, not live
endpoints. Do not use them as your actual identity anchor.

## 0.3.2 public-anchor verification

The command-line verifier can fetch an anchor from an independently selected
HTTPS URL and compare its public key and subject to the signed packet:

```bash
ail verify-packet AIL_Identity_Packet.json \
  --trusted-anchor-url https://ail.example/.well-known/ail-owner.json
```

Only a successful HTTPS fetch from that exact URL, with no redirect, produces
`ail:domain_anchored_key`. This associates the owner key with control of the
HTTPS origin; it does **not** verify the named person's legal identity. The
anchor must first be published at that URL by the domain controller.

A local anchor file can be checked without a network fetch:

```bash
ail verify-packet AIL_Identity_Packet.json \
  --trusted-anchor-url https://ail.example/.well-known/ail-owner.json \
  --anchor-file ail-owner.json
```

The file check reports only `ail:key_matches_supplied_anchor` and keeps
`ail:self_asserted_key`, because a supplied file has no verified web origin.
The Owner Console offers this same file comparison. Never upload the private
wallet to perform an anchor check.

## 0.3.1 verification update

Both verifiers now reject altered `verification` metadata, altered
`instructions_for_ai`, unknown packet fields, unsupported encodings, and
unexpected language versions. These outer fields are not part of the Ed25519
signature, so a verifier checks them against fixed expected values and does
not treat text supplied by a packet as independent authority. The test suite
also checks Python-to-JavaScript and JavaScript-to-Python packet exchange.

A signature-only check still proves control of a self-asserted owner key.
The 0.3.2 HTTPS check adds a domain-key association, not a personal identity check.

## Package boundaries

`ail_ref.parser` recognizes the canonical AIL 0.2 message form and the
AIL-PASSPORT 0.2 form. The natural-language bootstrap block in the manual is a
teaching envelope for an unfamiliar AI; it is not part of the canonical parser
grammar.

The parser never executes requests. A syntactically valid A03 REQUEST remains
data until a receiving system separately authorizes and performs the action.

Cryptographic verification proves control of the packet's owner key and that
signed claims were not altered. The initial identity binding is still
`ail:self_asserted_key` until the public-key fingerprint is independently
published through a channel associated with Wakely Wolf. An AIL passport does
not override another platform's permissions or safety rules.

No public license is granted by this package. The ownership declaration is a
project record, not a substitute for copyright registration, government
identity verification, or legal advice.

## Included release material

- `owner_app/` — local owner wallet, signing, packet, and verification interface
- `docs/` — canonical manual plus the AIL 0.3 owner identity guide
- `src/ail_ref/` — parser, canonicalizer, validator, registry, and passport code
- `registry/` — the AIL 0.2 core concept registry
- `examples/` — valid messages, aliases, owner record, and owner passport
- `tests/` — executable conformance and security tests
- `OWNERSHIP.md` and `LICENSE.txt` — declared project ownership terms
- `SHA256SUMS.txt` — integrity hashes for the principal release artifacts