Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
68 changes: 68 additions & 0 deletions .github/workflows/docs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
name: Docs (MkDocs)

on:
push:
branches: [main]
paths:
- "docs/**"
- "mkdocs.yml"
- ".github/workflows/docs.yml"
- "scripts/sync_mkdocs_pages.py"
- "README.md"
- "ARCHITECTURE.md"
- "DESIGN.md"
- "SPEC.md"
- "STATUS.md"
- "ROADMAP.md"
pull_request:
paths:
- "docs/**"
- "mkdocs.yml"
- "scripts/sync_mkdocs_pages.py"
- "STATUS.md"
workflow_dispatch:

permissions:
contents: read
pages: write
id-token: write

concurrency:
group: pages
cancel-in-progress: true

jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Install docs deps
run: pip install -U pip "mkdocs>=1.5" "mkdocs-material>=9.0"
- name: Sync root pages into docs/
run: |
cp ARCHITECTURE.md docs/architecture.md
cp DESIGN.md docs/design.md
cp SPEC.md docs/spec.md
cp STATUS.md docs/status.md
python3 scripts/sync_mkdocs_pages.py
- name: Build site (strict)
run: mkdocs build --strict
- name: Upload artifact
if: github.ref == 'refs/heads/main' && github.event_name != 'pull_request'
uses: actions/upload-pages-artifact@v3
with:
path: site

deploy:
if: github.ref == 'refs/heads/main' && github.event_name != 'pull_request'
needs: build
runs-on: ubuntu-latest
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- id: deployment
uses: actions/deploy-pages@v4
44 changes: 44 additions & 0 deletions .github/workflows/hermes-evals.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
name: Hyperlex Skill Validation

on:
push:
branches: [main]
pull_request:

permissions:
contents: read

jobs:
validate:
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest]
python-version: ["3.10", "3.11", "3.12"]
runs-on: ${{ matrix.os }}
env:
HYPERLEX_OFFLINE: "1"
HYPERLEX_NO_RATE_LIMIT: "1"
PYTHONPATH: src
steps:
- uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install test dependencies
run: python -m pip install -U pip pytest jsonschema
- name: Check skill
run: python3 scripts/hyperlex.py check
- name: Doctor
run: python3 scripts/hyperlex.py doctor
- name: Verify sources command
run: python3 scripts/hyperlex.py sources
- name: Run smoke
run: python3 scripts/hyperlex.py smoke
- name: Diagram from golden
run: python3 scripts/hyperlex.py diagram --from-golden --out-dir out/ci-diagrams --no-html
- name: Case study runner
run: python3 scripts/run_case_study.py --out-dir out/ci-case-study
- name: Run tests
run: python3 -m pytest -q
Comment thread
github-advanced-security[bot] marked this conversation as resolved.
Fixed
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ build/
!docs/archive/**/*.jsonl
!docs/demos/samples/**/*.json
!docs/map/**/*.json
!docs/command-router.v1.json
!data/backfill/**/*.json
!data/phylogeny/**/*.json

Expand Down
51 changes: 51 additions & 0 deletions .specify/memory/constitution.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
# Project Constitution: Hyperlex

**Version**: 1.0.0
**Ratified**: 2026-09-04
**Last Amended**: 2026-09-04
**Status**: SHADOW / ADVISORY until operator promotion
**Remote**: scrimshawlife-ctrl/Hyperlex
**Notion owner**: Hyperlex spine (01 Specs & Spines)

This constitution is the evaluation gate for every later Spec Kit artifact (`specify`, `plan`, `tasks`, `implement`, `converge`). Existing `DESIGN.md`, `SPEC.md`, `SKILL.md`, and `docs/api-v1.md` remain runtime truth until an implement cycle lands. This file does not mutate API_V1.

## Principles

### I. Catch becoming-culture, not settled culture
Hyperlex exists to catch language while it is still becoming culture. Lineage, receipts, and settlement are first-class. Lexicon dumps without operator and mutation structure are incomplete.

### II. Offline-first, fail-closed on scores, fail-open on ingest
Baseline analysis MUST run under `HYPERLEX_OFFLINE=1` / `source=mock` with no network. Ingest failures degrade. Missing settlements yield `NOT_COMPUTABLE`. Never crash the analyze path for optional enrichers.

### III. Settled Brier only
Open analysis, Phase 5, mutation prediction, and mutation-grammar watch scores MUST keep `brier: null`. Numeric Brier exists only after operator settlement on an eligible forecast class. Mutation-grammar packets are never forecast-eligible.

### IV. Provenance discipline
Every claim is `OBSERVED`, `INFERRED`, or `SPECULATIVE`. Lineage confidence is INFERRED. Next-form prediction is SPECULATIVE. Operator-stack detection on an attested surface may be OBSERVED for the surface and INFERRED for the stack.

### V. No Abraxas hard import
Hyperlex MUST NOT import Abraxas. Wire shapes live under `hyperlex.compat.abraxas` as export-only. Hyperlex MUST NOT write Abraxas rune registry rows, p89 binds, or Forecast spines.

### VI. Receipt integrity is frozen history
Lineage backprop, mutation traces, and grammar overlays MUST NOT rewrite historical receipt hashes or `provenance.integrity`.

### VII. Detector over generator for adversarial grammar
Mutation *prediction* may emit civilian next surface forms of a slang atom (existing `hyperlex.mutation_prediction.v1`). Mutation *grammar* (this expansion) is a detector, tracer, and watcher. It MUST NOT generate restricted-intent wraps, jailbreak recipes, or reconstructable payloads when `restricted_intent_suspected` is true. Store hash + layer tags only in that case.

### VIII. Human sovereignty on promotion
Schema landings, registry family adds, Chroma promotes, cron registration, and canon status changes require an operator gate. Specs do not self-promote.

### IX. Library-first additive modules
New capability ships as a package module (`hyperlex.analysis.*` or `hyperlex.mutation.*`) with tests before CLI sugar. API_V1 stays frozen; additive symbols go on `API_EXTENDED`.

### X. Dual-use bound
Cite safety literature. Do not reproduce restricted payloads. SUAS/SS may consume watch-language tags only. No operational evasion playbook in this repo.

## Constraints
- Python ≥ 3.10, stdlib-first baseline.
- Atomic terms; do not density-stack multi-term bags as one seed by default.
- RUNE.HLX.* envelopes are advisory. No execute_production.
- Sacred-slang metrics (ritualCharge, paraphraseResistance, …) are overlays, not Brier inputs.

## Amendment
Operator amends this file, bumps version, restamps Last Amended. Dependent specs must re-check principles I–X.
7 changes: 0 additions & 7 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,6 @@
- CLI auto-loads `~/.hermes/.env` (and `~/.hyperlex/.env`); accepts official `CHROMA_API_KEY` / `CHROMA_TENANT` / `CHROMA_DATABASE` aliases
- Cloud client only requires API key; tenant/database optional when Chroma can infer them

## 0.4.1 — Hermes Agent v0.21 skill index (2026-09-01)

- `SKILL.md` matches the Hermes v0.21 (tag v2026.8.31) hardline: one-sentence
description ≤60 characters, human-first author, required frontmatter keys,
modern section order, CLI framed through the Hermes `terminal` tool
- CLI `check` asserts the skill-index description budget and required keys

## 0.4.0 — Automatic backend pipeline (2026-08-05)

- `run_pipeline` / CLI `pipeline`: ingest → analyze → receipt → forecasts → score log → Phase 5 risk
Expand Down
17 changes: 3 additions & 14 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
<a href="https://github.com/scrimshawlife-ctrl/Hyperlex/actions/workflows/docs.yml"><img src="https://img.shields.io/github/actions/workflow/status/scrimshawlife-ctrl/Hyperlex/docs.yml?branch=main&label=docs&logo=github" alt="Docs CI"></a>
<a href="https://scrimshawlife-ctrl.github.io/Hyperlex/"><img src="https://img.shields.io/badge/docs-GitHub%20Pages-0d9488?logo=markdown" alt="Docs"></a>
<a href="./LICENSE"><img src="https://img.shields.io/badge/license-LicenseRef-Zero-State-Proprietary-1.0-blue.svg" alt="License: LicenseRef-Zero-State-Proprietary-1.0"></a>
<a href="./VERSION"><img src="https://img.shields.io/badge/version-0.4.1-informational" alt="Version 0.4.1"></a>
<a href="./VERSION"><img src="https://img.shields.io/badge/version-0.4.0-informational" alt="Version 0.4.0"></a>
<img src="https://img.shields.io/badge/python-3.10%20%7C%203.11%20%7C%203.12-3776AB?logo=python&logoColor=white" alt="Python">
<img src="https://img.shields.io/badge/hermes-skill-7c3aed" alt="Hermes skill">
<img src="https://img.shields.io/badge/offline--first-mock%20route-22c55e" alt="Offline-first">
Expand Down Expand Up @@ -120,7 +120,7 @@ Phases **0–4** are production skill surface. **5.0–5.3** adds research simul

| | |
|--|--|
| **Version** | **0.4.1** |
| **Version** | **0.4.0** |
| **Posture** | Hermes skill · Python package (≥3.10) · LicenseRef-Zero-State-Proprietary-1.0 |
| **Primary store** | `~/.hyperlex/` |
| **Public PyPI** | Not planned |
Expand Down Expand Up @@ -347,16 +347,14 @@ from hyperlex.compat.abraxas import to_brier_ledger_entry, list_hlx_runes
| [docs/phase5.md](./docs/phase5.md) | Research simulation |
| [docs/slang-lineages.md](./docs/slang-lineages.md) | Lineage methodology |
| [docs/hermes-skill.md](./docs/hermes-skill.md) | Skill model |
| [AGENTS.md](./AGENTS.md) | Multi-agent SDLC contract (`CLAUDE.md` is a thin pointer here) |
| [intent/](./intent/README.md) | Intent template for non-trivial work; then spec.md / plan |

Examples: `examples/cron/` · `examples/receipts/golden/` · `examples/calibration/` · `examples/slang-families/` · `examples/case-studies/`

---

## Contributing

See [CONTRIBUTING.md](./CONTRIBUTING.md). Agent contract: [`AGENTS.md`](AGENTS.md) (`CLAUDE.md` is a thin pointer there). Non-trivial work starts with [`intent/`](intent/README.md). Keep the settlement rule and offline-first defaults intact. Prefer small, test-backed PRs.
See [CONTRIBUTING.md](./CONTRIBUTING.md). Keep the settlement rule and offline-first defaults intact. Prefer small, test-backed PRs.

```bash
PYTHONPATH=src pytest -q
Expand All @@ -370,12 +368,3 @@ bash install.sh --dry-run
LicenseRef-Zero-State-Proprietary-1.0 — [LICENSE](./LICENSE).

Built for operators who want memetic signal **with a receipt trail**, not a mood board.


## License

Copyright © 2026 Zero State LLC. All Rights Reserved. Licensed under the Zero State Proprietary License v1.0. See [`LICENSE`](LICENSE).

Third-party components remain subject to their respective licenses.

Source, profile, and migration rules: `references/source-and-upgrades.md`.
Loading
Loading