diff --git a/ABI-FFI-README.md b/ABI-FFI-README.adoc similarity index 75% rename from ABI-FFI-README.md rename to ABI-FFI-README.adoc index fe87331..fb7d3d2 100644 --- a/ABI-FFI-README.md +++ b/ABI-FFI-README.adoc @@ -1,21 +1,20 @@ - -# JeffEngine ABI/FFI Documentation +== JeffEngine ABI/FFI Documentation -## Overview +=== Overview -This library follows the **Hyperpolymath RSR Standard** for ABI and FFI design: +This library follows the *Hyperpolymath RSR Standard* for ABI and FFI +design: -- **ABI (Application Binary Interface)** defined in **Idris2** with formal proofs -- **FFI (Foreign Function Interface)** implemented in **Zig** for C compatibility -- **Generated C headers** bridge Idris2 ABI to Zig FFI -- **Any language** can call through standard C ABI +* *ABI (Application Binary Interface)* defined in *Idris2* with formal +proofs +* *FFI (Foreign Function Interface)* implemented in *Zig* for C +compatibility +* *Generated C headers* bridge Idris2 ABI to Zig FFI +* *Any language* can call through standard C ABI -## Architecture +=== Architecture -``` +.... ┌─────────────────────────────────────────────┐ │ ABI Definitions (Idris2) │ │ src/abi/ │ @@ -47,11 +46,11 @@ This library follows the **Hyperpolymath RSR Standard** for ABI and FFI design: │ Any Language via C ABI │ │ - Rust, ReScript, Julia, Python, etc. │ └─────────────────────────────────────────────┘ -``` +.... -## Directory Structure +=== Directory Structure -``` +.... jeff_engine/ ├── src/ │ ├── abi/ # ABI definitions (Idris2) @@ -79,15 +78,17 @@ jeff_engine/ ├── rust/ ├── rescript/ └── julia/ -``` +.... -## Why Idris2 for ABI? +=== Why Idris2 for ABI? -### 1. **Formal Verification** +==== 1. *Formal Verification* -Idris2's dependent types allow proving properties about the ABI at compile-time: +Idris2’s dependent types allow proving properties about the ABI at +compile-time: -```idris +[source,idris] +---- -- Prove struct size is correct public export exampleStructSize : HasSize ExampleStruct 16 @@ -99,13 +100,14 @@ fieldAligned : Divides 8 (offsetOf ExampleStruct.field) -- Prove ABI is platform-compatible public export abiCompatible : Compatible (ABI 1) (ABI 2) -``` +---- -### 2. **Type Safety** +==== 2. *Type Safety* Encode invariants that C/Zig cannot express: -```idris +[source,idris] +---- -- Non-null pointer guaranteed at type level data Handle : Type where MkHandle : (ptr : Bits64) -> {auto 0 nonNull : So (ptr /= 0)} -> Handle @@ -113,13 +115,14 @@ data Handle : Type where -- Array with length proof data Buffer : (n : Nat) -> Type where MkBuffer : Vect n Byte -> Buffer n -``` +---- -### 3. **Platform Abstraction** +==== 3. *Platform Abstraction* Platform-specific types with compile-time selection: -```idris +[source,idris] +---- CInt : Platform -> Type CInt Linux = Bits32 CInt Windows = Bits32 @@ -127,13 +130,14 @@ CInt Windows = Bits32 CSize : Platform -> Type CSize Linux = Bits64 CSize Windows = Bits64 -``` +---- -### 4. **Safe Evolution** +==== 4. *Safe Evolution* Prove that new ABI versions are backward-compatible: -```idris +[source,idris] +---- -- Compiler enforces compatibility abiUpgrade : ABI 1 -> ABI 2 abiUpgrade old = MkABI2 { @@ -142,71 +146,78 @@ abiUpgrade old = MkABI2 { -- Can add new fields new_features = defaults } -``` +---- -## Why Zig for FFI? +=== Why Zig for FFI? -### 1. **C ABI Compatibility** +==== 1. *C ABI Compatibility* Zig exports C-compatible functions naturally: -```zig +[source,zig] +---- export fn library_function(param: i32) i32 { return param * 2; } -``` +---- -### 2. **Memory Safety** +==== 2. *Memory Safety* Compile-time safety without runtime overhead: -```zig +[source,zig] +---- // Null check enforced at compile time const handle = init() orelse return error.InitFailed; defer free(handle); -``` +---- -### 3. **Cross-Compilation** +==== 3. *Cross-Compilation* Built-in cross-compilation to any platform: -```bash +[source,bash] +---- zig build -Dtarget=x86_64-linux zig build -Dtarget=aarch64-macos zig build -Dtarget=x86_64-windows -``` +---- -### 4. **Zero Dependencies** +==== 4. *Zero Dependencies* No runtime, no libc required (unless explicitly needed): -```zig +[source,zig] +---- // Minimal binary size pub const lib = @import("std"); // Only includes what you use -``` +---- -## Building +=== Building -### Build FFI Library +==== Build FFI Library -```bash +[source,bash] +---- cd ffi/zig zig build # Build debug zig build -Doptimize=ReleaseFast # Build optimized zig build test # Run tests -``` +---- -### Generate C Header from Idris2 ABI +==== Generate C Header from Idris2 ABI -```bash +[source,bash] +---- cd src/abi idris2 --cg c-header Types.idr -o ../../generated/abi/jeff_engine.h -``` +---- -### Cross-Compile +==== Cross-Compile -```bash +[source,bash] +---- cd ffi/zig # Linux x86_64 @@ -217,13 +228,14 @@ zig build -Dtarget=aarch64-macos # Windows x86_64 zig build -Dtarget=x86_64-windows -``` +---- -## Usage +=== Usage -### From C +==== From C -```c +[source,c] +---- #include "jeff_engine.h" int main() { @@ -239,16 +251,19 @@ int main() { jeff_engine_free(handle); return 0; } -``` +---- Compile with: -```bash + +[source,bash] +---- gcc -o example example.c -ljeff_engine -L./zig-out/lib -``` +---- -### From Idris2 +==== From Idris2 -```idris +[source,idris] +---- import JeffEngine.ABI.Foreign main : IO () @@ -261,11 +276,12 @@ main = do free handle putStrLn "Success" -``` +---- -### From Rust +==== From Rust -```rust +[source,rust] +---- #[link(name = "jeff_engine")] extern "C" { fn jeff_engine_init() -> *mut std::ffi::c_void; @@ -284,11 +300,12 @@ fn main() { jeff_engine_free(handle); } } -``` +---- -### From Julia +==== From Julia -```julia +[source,julia] +---- const libjeff_engine = "libjeff_engine" function init() @@ -314,27 +331,30 @@ try finally cleanup(handle) end -``` +---- -## Testing +=== Testing -### Unit Tests (Zig) +==== Unit Tests (Zig) -```bash +[source,bash] +---- cd ffi/zig zig build test -``` +---- -### Integration Tests +==== Integration Tests -```bash +[source,bash] +---- cd ffi/zig zig build test-integration -``` +---- -### ABI Verification (Idris2) +==== ABI Verification (Idris2) -```idris +[source,idris] +---- -- Compile-time verification %runElab verifyABI @@ -344,44 +364,44 @@ main = do verifyLayoutsCorrect verifyAlignmentsCorrect putStrLn "ABI verification passed" -``` +---- -## Contributing +=== Contributing When modifying the ABI/FFI: -1. **Update ABI first** (`src/abi/*.idr`) - - Modify type definitions - - Update proofs - - Ensure backward compatibility - -2. **Generate C header** - ```bash - idris2 --cg c-header src/abi/Types.idr -o generated/abi/jeff_engine.h - ``` - -3. **Update FFI implementation** (`ffi/zig/src/main.zig`) - - Implement new functions - - Match ABI types exactly - -4. **Add tests** - - Unit tests in Zig - - Integration tests - - ABI verification tests - -5. **Update documentation** - - Function signatures - - Usage examples - - Migration guide (if breaking changes) - -## License +[arabic] +. *Update ABI first* (`+src/abi/*.idr+`) +* Modify type definitions +* Update proofs +* Ensure backward compatibility +. *Generate C header* ++ +[source,bash] +---- +idris2 --cg c-header src/abi/Types.idr -o generated/abi/jeff_engine.h +---- +. *Update FFI implementation* (`+ffi/zig/src/main.zig+`) +* Implement new functions +* Match ABI types exactly +. *Add tests* +* Unit tests in Zig +* Integration tests +* ABI verification tests +. *Update documentation* +* Function signatures +* Usage examples +* Migration guide (if breaking changes) + +=== License MPL-2.0-or-later -## See Also +=== See Also -- [Idris2 Documentation](https://idris2.readthedocs.io) -- [Zig Documentation](https://ziglang.org/documentation/master/) -- [Rhodium Standard Repositories](https://github.com/hyperpolymath/rhodium-standard-repositories) -- [FFI Migration Guide](../ffi-migration-guide.md) -- [ABI Migration Guide](../abi-migration-guide.md) +* https://idris2.readthedocs.io[Idris2 Documentation] +* https://ziglang.org/documentation/master/[Zig Documentation] +* https://github.com/hyperpolymath/rhodium-standard-repositories[Rhodium +Standard Repositories] +* link:../ffi-migration-guide.md[FFI Migration Guide] +* link:../abi-migration-guide.md[ABI Migration Guide] diff --git a/ARCHITECTURE.adoc b/ARCHITECTURE.adoc new file mode 100644 index 0000000..1c0a7a6 --- /dev/null +++ b/ARCHITECTURE.adoc @@ -0,0 +1,48 @@ +== Architecture + +=== Overview + +This repository follows a modular, maintainable architecture designed +for clarity, scalability, and long-term sustainability. + +=== Directory Structure + +.... +. +├── src/ # Source code +├── tests/ # Test suites +├── docs/ # Documentation +├── scripts/ # Utility scripts +├── config/ # Configuration files +├── LICENSE # License file +├── LICENSES/ # Full license texts +└── README.adoc # Project documentation +.... + +=== Design Principles + +* *Separation of Concerns*: Each module has a single responsibility +* *Testability*: Code is written to be easily testable +* *Documentation*: All public APIs are documented +* *Configuration*: Environment-specific settings are externalized + +=== Dependencies + +* External dependencies are minimized and clearly declared +* Version pinning is used for reproducibility + +=== Security Considerations + +* Sensitive data is never committed to the repository +* Secrets are managed through environment variables or secure vaults +* Regular dependency audits are performed + +=== Maintainability + +* Code follows consistent style guidelines +* Pull requests require review and CI checks +* Issues and discussions are tracked transparently + +''''' + +_Last updated: 2026-07-18_ diff --git a/ARCHITECTURE.md b/ARCHITECTURE.md deleted file mode 100644 index 607e3d8..0000000 --- a/ARCHITECTURE.md +++ /dev/null @@ -1,47 +0,0 @@ -# Architecture - -## Overview - -This repository follows a modular, maintainable architecture designed for clarity, scalability, and long-term sustainability. - -## Directory Structure - -``` -. -├── src/ # Source code -├── tests/ # Test suites -├── docs/ # Documentation -├── scripts/ # Utility scripts -├── config/ # Configuration files -├── LICENSE # License file -├── LICENSES/ # Full license texts -└── README.adoc # Project documentation -``` - -## Design Principles - -- **Separation of Concerns**: Each module has a single responsibility -- **Testability**: Code is written to be easily testable -- **Documentation**: All public APIs are documented -- **Configuration**: Environment-specific settings are externalized - -## Dependencies - -- External dependencies are minimized and clearly declared -- Version pinning is used for reproducibility - -## Security Considerations - -- Sensitive data is never committed to the repository -- Secrets are managed through environment variables or secure vaults -- Regular dependency audits are performed - -## Maintainability - -- Code follows consistent style guidelines -- Pull requests require review and CI checks -- Issues and discussions are tracked transparently - ---- - -*Last updated: 2026-07-18* diff --git a/CHANGELOG.adoc b/CHANGELOG.adoc index 03a33f6..aba3207 100644 --- a/CHANGELOG.adoc +++ b/CHANGELOG.adoc @@ -1,41 +1,69 @@ -// SPDX-License-Identifier: CC-BY-SA-4.0 -// Copyright (c) Jonathan D.A. Jewell -= Changelog +== Changelog -All notable changes to this project will be documented in this file. +All notable changes to `+thejeffparadox+` will be documented in this +file. -The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), -and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +This file is generated from conventional commits by the +https://github.com/hyperpolymath/standards/blob/main/.github/workflows/changelog-reusable.yml[`+changelog-reusable.yml+`] +workflow (`+hyperpolymath/standards#206+`). Adopt the workflow in this +repo’s CI to keep this file in sync automatically — see +https://github.com/hyperpolymath/standards/blob/main/templates/cliff.toml[`+templates/cliff.toml+`] +for the canonical config. -== [Unreleased] +The format follows https://keepachangelog.com/en/1.1.0/[Keep a +Changelog]; this project aims to follow +https://semver.org/spec/v2.0.0.html[Semantic Versioning]. -=== Added +=== [Unreleased] -- Initial Julia game engine with anti-convergence mechanisms -- Hugo sites for orchestrator, node-alpha, node-beta -- GitHub Actions CI/CD with SHA-pinned actions -- Containerfile for Wolfi-based deployment -- Comprehensive documentation (claude.adoc, whitepaper) -- RSR compliance infrastructure +==== Added -=== Fixed +* feat(engine): improve LLM client error handling and recovery +* feat: implement metrics_trend/detect_emergent_patterns, add SPDX +headers +* feat: add CRG Grade B test suite (6 targets) -- JeffEngine module exports and include order -- GitHub Actions SHA pinning for all dependencies -- Hugo theme configuration +==== Fixed -== [0.1.0] - 2025-11-29 +* fix(ci): sync hypatia-scan.yml to canonical (kill cd-scanner build +drift) (#28) +* fix(ci): build Hypatia escript from repo root (estate dogfood drift) +* fix(ci): Phase-2 fleet submission must not fail the security gate +(#25) +* fix(ci): rsr-antipattern.yml duplicate heredoc (#24) +* fix: remove boilerplate README, fix ABI template, harden CI (#2) +* fix: remove boilerplate README, fix ABI template, harden CI +* fix: create missing metrics.jl, fix README, rate limiter, and Ada +parser (#1) -=== Added +==== Changed -- Initial project structure -- Core game mechanics (chaos, exposure, faction) -- Anti-convergence system (conceptors) -- LLM client abstraction (Anthropic, Mistral, local) -- Metrics collection framework -- Accessibility-first Hugo layouts +* refactor: split llm_client, wire aperture control, expand tests ---- +==== Documentation -Based on the original [The Jeff Paradox](https://criticalkit.us/products/the-jeff-paradox) -TTRPG by Tim Roberts / Critical Kit LLC. +* docs(readme): add SPDX header, OSSF and GWF badges +* docs(explainme): add EXPLAINME.adoc +* docs: remove conflicting placeholder README and fix license +declarations + +==== CI + +* ci: bump actions/upload-artifact SHA to current v4 (#23) +* ci(antipattern): fix top-level dir matching + benchmarks/lsp/bench +filename allowlists (#17) +* ci(antipattern): TS check reads .claude/CLAUDE.md exemption table +(#16) +* ci(antipattern): broaden TS allowlist (cli/, mod.ts, lsp-server, +_vscode_, deno-*) (#15) +* ci(antipattern): allowlist legit TS bridge/adapter paths (#14) + +=== Pre-history + +Prior commits to this file’s introduction are recorded in git history +but not formally classified into Keep-a-Changelog sections. To backfill, +run `+git cliff -o CHANGELOG.md+` locally using the canonical +https://github.com/hyperpolymath/standards/blob/main/templates/cliff.toml[`+cliff.toml+`] +— this is one-shot mechanical work. + +''''' diff --git a/CHANGELOG.md b/CHANGELOG.md deleted file mode 100644 index f8769b7..0000000 --- a/CHANGELOG.md +++ /dev/null @@ -1,60 +0,0 @@ - -# Changelog - -All notable changes to `thejeffparadox` will be documented in this file. - -This file is generated from conventional commits by the -[`changelog-reusable.yml`](https://github.com/hyperpolymath/standards/blob/main/.github/workflows/changelog-reusable.yml) -workflow (`hyperpolymath/standards#206`). Adopt the workflow in this repo's CI to keep this file in sync automatically — see -[`templates/cliff.toml`](https://github.com/hyperpolymath/standards/blob/main/templates/cliff.toml) -for the canonical config. - -The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/); -this project aims to follow [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - -## [Unreleased] - -### Added - -- feat(engine): improve LLM client error handling and recovery -- feat: implement metrics_trend/detect_emergent_patterns, add SPDX headers -- feat: add CRG Grade B test suite (6 targets) - -### Fixed - -- fix(ci): sync hypatia-scan.yml to canonical (kill cd-scanner build drift) (#28) -- fix(ci): build Hypatia escript from repo root (estate dogfood drift) -- fix(ci): Phase-2 fleet submission must not fail the security gate (#25) -- fix(ci): rsr-antipattern.yml duplicate heredoc (#24) -- fix: remove boilerplate README, fix ABI template, harden CI (#2) -- fix: remove boilerplate README, fix ABI template, harden CI -- fix: create missing metrics.jl, fix README, rate limiter, and Ada parser (#1) - -### Changed - -- refactor: split llm_client, wire aperture control, expand tests - -### Documentation - -- docs(readme): add SPDX header, OSSF and GWF badges -- docs(explainme): add EXPLAINME.adoc -- docs: remove conflicting placeholder README and fix license declarations - -### CI - -- ci: bump actions/upload-artifact SHA to current v4 (#23) -- ci(antipattern): fix top-level dir matching + benchmarks/lsp/bench filename allowlists (#17) -- ci(antipattern): TS check reads .claude/CLAUDE.md exemption table (#16) -- ci(antipattern): broaden TS allowlist (cli/, mod.ts, lsp-server, *vscode*, deno-*) (#15) -- ci(antipattern): allowlist legit TS bridge/adapter paths (#14) - -## Pre-history - -Prior commits to this file's introduction are recorded in git history but not formally classified into Keep-a-Changelog sections. To backfill, run `git cliff -o CHANGELOG.md` locally using the canonical [`cliff.toml`](https://github.com/hyperpolymath/standards/blob/main/templates/cliff.toml) — this is one-shot mechanical work. - ---- - - diff --git a/CODE_OF_CONDUCT.adoc b/CODE_OF_CONDUCT.adoc new file mode 100644 index 0000000..38faf7d --- /dev/null +++ b/CODE_OF_CONDUCT.adoc @@ -0,0 +1,45 @@ +== Code of Conduct + +=== Our Pledge + +We pledge to make participation in The Jeff Paradox project a +harassment-free experience for everyone, regardless of age, body size, +disability, ethnicity, sex characteristics, gender identity and +expression, level of experience, education, socio-economic status, +nationality, personal appearance, race, religion, or sexual identity and +orientation. + +=== Our Standards + +*Positive behaviours include:* + +* Using welcoming and inclusive language +* Being respectful of differing viewpoints and experiences +* Gracefully accepting constructive criticism +* Focusing on what is best for the community +* Showing empathy towards other community members + +*Unacceptable behaviours include:* + +* Trolling, insulting/derogatory comments, and personal or political +attacks +* Public or private harassment +* Publishing others’ private information without explicit permission +* Other conduct which could reasonably be considered inappropriate + +=== Enforcement + +Project maintainers are responsible for clarifying standards and will +take appropriate and fair corrective action in response to any +unacceptable behaviour. + +Instances of abusive, harassing, or otherwise unacceptable behaviour may +be reported to the project team. All complaints will be reviewed and +investigated. + +=== Attribution + +This Code of Conduct is adapted from the +https://www.contributor-covenant.org[Contributor Covenant], version 2.1, +available at +https://www.contributor-covenant.org/version/2/1/code_of_conduct.html diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md deleted file mode 100644 index cb25e62..0000000 --- a/CODE_OF_CONDUCT.md +++ /dev/null @@ -1,46 +0,0 @@ - -# Code of Conduct - -## Our Pledge - -We pledge to make participation in The Jeff Paradox project a harassment-free -experience for everyone, regardless of age, body size, disability, ethnicity, -sex characteristics, gender identity and expression, level of experience, -education, socio-economic status, nationality, personal appearance, race, -religion, or sexual identity and orientation. - -## Our Standards - -**Positive behaviours include:** - -- Using welcoming and inclusive language -- Being respectful of differing viewpoints and experiences -- Gracefully accepting constructive criticism -- Focusing on what is best for the community -- Showing empathy towards other community members - -**Unacceptable behaviours include:** - -- Trolling, insulting/derogatory comments, and personal or political attacks -- Public or private harassment -- Publishing others' private information without explicit permission -- Other conduct which could reasonably be considered inappropriate - -## Enforcement - -Project maintainers are responsible for clarifying standards and will take -appropriate and fair corrective action in response to any unacceptable behaviour. - -Instances of abusive, harassing, or otherwise unacceptable behaviour may be -reported to the project team. All complaints will be reviewed and investigated. - -## Attribution - -This Code of Conduct is adapted from the [Contributor Covenant][homepage], -version 2.1, available at -https://www.contributor-covenant.org/version/2/1/code_of_conduct.html - -[homepage]: https://www.contributor-covenant.org diff --git a/CONTRIBUTING.adoc b/CONTRIBUTING.adoc index e9b1993..6d5c824 100644 --- a/CONTRIBUTING.adoc +++ b/CONTRIBUTING.adoc @@ -1,21 +1,112 @@ -// SPDX-License-Identifier: CC-BY-SA-4.0 -// Copyright (c) Jonathan D.A. Jewell -= Contributing Guide +== Clone the repository -== Getting Started +git clone https://github.com/hyperpolymath/thejeffparadox.git cd +thejeffparadox -1. Fork the repository -2. Create a feature branch from `main` -3. Sign off commits (`git commit -s`) -4. Submit a pull request +== Install Julia dependencies -== Commit Guidelines +cd engine && julia –project=. -e '`using Pkg; Pkg.instantiate()`' cd .. -* Conventional commits: `type(scope): description` -* Sign all commits (DCO required) -* Atomic, focused commits +== Or using toolbox/distrobox -== License +toolbox create thejeffparadox-dev toolbox enter thejeffparadox-dev # +Install: Julia 1.10+, Hugo extended 0.120+, optionally GNAT/Alire -Contributions licensed under project license. +== Verify setup +just test # Run all 6 test targets + +.... + +### Repository Structure +.... + +thejeffparadox/ ├── engine/ # Julia - Game mechanics, LLM APIs, metrics +│ ├── src/ # Source modules │ └── test/ # Julia test suite ├── +node-alpha/ # Hugo - Homeward faction fragment ├── node-beta/ # Hugo - +Earthbound faction fragment ├── orchestrator/ # Hugo - Game Master, +public rendering ├── tui/ # Ada - Terminal UI for experiment control ├── +container/ # Podman/Wolfi - Containerised deployment ├── ffi/ # Zig - +C-compatible FFI bindings ├── contractiles/ # Contract templates +(must/trust/dust/lust) ├── papers/ # Research - Whitepaper, references +├── scripts/ # Shell - Orchestration scripts ├── tests/ # Structural +validation scripts ├── docs/ # Documentation │ └── wiki/ # Architecture, +FAQ, philosophy guides ├── examples/ # Example code (ReScript, etc.) ├── +.github/ # GitHub config │ ├── ISSUE_TEMPLATE/ │ └── workflows/ # 20+ +CI/CD workflows ├── CHANGELOG.adoc ├── CODE_OF_CONDUCT.md ├── +CONTRIBUTING.md # This file ├── GOVERNANCE.md ├── LICENSE ├── +MAINTAINERS.md ├── README.adoc ├── SECURITY.md └── Justfile # Task +runner (6 Grade B test targets) + +.... + +--- + +## How to Contribute + +### Reporting Bugs + +**Before reporting**: +1. Search existing issues +2. Check if it's already fixed in `main` +3. Determine which perimeter the bug affects + +**When reporting**: + +Use the [bug report template](.github/ISSUE_TEMPLATE/bug_report.md) and include: + +- Clear, descriptive title +- Environment details (OS, versions, toolchain) +- Steps to reproduce +- Expected vs actual behaviour +- Logs, screenshots, or minimal reproduction + +### Suggesting Features + +**Before suggesting**: +1. Check the [roadmap](ROADMAP.md) if available +2. Search existing issues and discussions +3. Consider which perimeter the feature belongs to + +**When suggesting**: + +Use the [feature request template](.github/ISSUE_TEMPLATE/feature_request.md) and include: + +- Problem statement (what pain point does this solve?) +- Proposed solution +- Alternatives considered +- Which perimeter this affects + +### Your First Contribution + +Look for issues labelled: + +- [`good first issue`](https://github.com/hyperpolymath/thejeffparadox/labels/good%20first%20issue) — Simple Perimeter 3 tasks +- [`help wanted`](https://github.com/hyperpolymath/thejeffparadox/labels/help%20wanted) — Community help needed +- [`documentation`](https://github.com/hyperpolymath/thejeffparadox/labels/documentation) — Docs improvements +- [`perimeter-3`](https://github.com/hyperpolymath/thejeffparadox/labels/perimeter-3) — Community sandbox scope + +--- + +## Development Workflow + +### Branch Naming +.... + +docs/short-description # Documentation (P3) test/what-added # Test +additions (P3) feat/short-description # New features (P2) +fix/issue-number-description # Bug fixes (P2) refactor/what-changed # +Code improvements (P2) security/what-fixed # Security fixes (P1-2) + +.... + +### Commit Messages + +We follow [Conventional Commits](https://www.conventionalcommits.org/): +.... + +(): + +{empty}[optional body] + +{empty}[optional footer] diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md deleted file mode 100644 index 6559a8e..0000000 --- a/CONTRIBUTING.md +++ /dev/null @@ -1,123 +0,0 @@ - -# Clone the repository -git clone https://github.com/hyperpolymath/thejeffparadox.git -cd thejeffparadox - -# Install Julia dependencies -cd engine && julia --project=. -e 'using Pkg; Pkg.instantiate()' -cd .. - -# Or using toolbox/distrobox -toolbox create thejeffparadox-dev -toolbox enter thejeffparadox-dev -# Install: Julia 1.10+, Hugo extended 0.120+, optionally GNAT/Alire - -# Verify setup -just test # Run all 6 test targets -``` - -### Repository Structure -``` -thejeffparadox/ -├── engine/ # Julia - Game mechanics, LLM APIs, metrics -│ ├── src/ # Source modules -│ └── test/ # Julia test suite -├── node-alpha/ # Hugo - Homeward faction fragment -├── node-beta/ # Hugo - Earthbound faction fragment -├── orchestrator/ # Hugo - Game Master, public rendering -├── tui/ # Ada - Terminal UI for experiment control -├── container/ # Podman/Wolfi - Containerised deployment -├── ffi/ # Zig - C-compatible FFI bindings -├── contractiles/ # Contract templates (must/trust/dust/lust) -├── papers/ # Research - Whitepaper, references -├── scripts/ # Shell - Orchestration scripts -├── tests/ # Structural validation scripts -├── docs/ # Documentation -│ └── wiki/ # Architecture, FAQ, philosophy guides -├── examples/ # Example code (ReScript, etc.) -├── .github/ # GitHub config -│ ├── ISSUE_TEMPLATE/ -│ └── workflows/ # 20+ CI/CD workflows -├── CHANGELOG.adoc -├── CODE_OF_CONDUCT.md -├── CONTRIBUTING.md # This file -├── GOVERNANCE.md -├── LICENSE -├── MAINTAINERS.md -├── README.adoc -├── SECURITY.md -└── Justfile # Task runner (6 Grade B test targets) -``` - ---- - -## How to Contribute - -### Reporting Bugs - -**Before reporting**: -1. Search existing issues -2. Check if it's already fixed in `main` -3. Determine which perimeter the bug affects - -**When reporting**: - -Use the [bug report template](.github/ISSUE_TEMPLATE/bug_report.md) and include: - -- Clear, descriptive title -- Environment details (OS, versions, toolchain) -- Steps to reproduce -- Expected vs actual behaviour -- Logs, screenshots, or minimal reproduction - -### Suggesting Features - -**Before suggesting**: -1. Check the [roadmap](ROADMAP.md) if available -2. Search existing issues and discussions -3. Consider which perimeter the feature belongs to - -**When suggesting**: - -Use the [feature request template](.github/ISSUE_TEMPLATE/feature_request.md) and include: - -- Problem statement (what pain point does this solve?) -- Proposed solution -- Alternatives considered -- Which perimeter this affects - -### Your First Contribution - -Look for issues labelled: - -- [`good first issue`](https://github.com/hyperpolymath/thejeffparadox/labels/good%20first%20issue) — Simple Perimeter 3 tasks -- [`help wanted`](https://github.com/hyperpolymath/thejeffparadox/labels/help%20wanted) — Community help needed -- [`documentation`](https://github.com/hyperpolymath/thejeffparadox/labels/documentation) — Docs improvements -- [`perimeter-3`](https://github.com/hyperpolymath/thejeffparadox/labels/perimeter-3) — Community sandbox scope - ---- - -## Development Workflow - -### Branch Naming -``` -docs/short-description # Documentation (P3) -test/what-added # Test additions (P3) -feat/short-description # New features (P2) -fix/issue-number-description # Bug fixes (P2) -refactor/what-changed # Code improvements (P2) -security/what-fixed # Security fixes (P1-2) -``` - -### Commit Messages - -We follow [Conventional Commits](https://www.conventionalcommits.org/): -``` -(): - -[optional body] - -[optional footer] diff --git a/GOVERNANCE.adoc b/GOVERNANCE.adoc index e41020d..7cffe8f 100644 --- a/GOVERNANCE.adoc +++ b/GOVERNANCE.adoc @@ -1,162 +1,54 @@ -// SPDX-License-Identifier: CC-BY-SA-4.0 -// SPDX-FileCopyrightText: 2026 Jonathan D.A. Jewell -= Governance Model -:toc: preamble +== Governance -This document describes the governance model for this repository. +=== Project Structure -== Overview +The Jeff Paradox is maintained by the Hyperpolymath collective with +community input. -This repository follows a **Sole Maintainer Governance Model**: +=== Decision Making -* Single maintainer (@hyperpolymath) has full authority over the project -* All contributions are welcome and reviewed by the maintainer -* Decisions are made transparently through GitHub issues and discussions -* The project adheres to the hyperpolymath estate policies where applicable +==== Consensus-Seeking -== Core Principles +We aim for consensus on significant changes. If consensus cannot be +reached, maintainers make the final decision with documented rationale. -[cols="1,2"] -|=== -| Principle | Description - -| **Benevolent Dictatorship** | Maintainer has final decision authority but seeks community input - -| **Meritocracy** | Contributions are judged on technical merit, not contributor identity - -| **Transparency** | All significant decisions are documented publicly - -| **Consensus-Seeking** | Maintainer prefers consensus but will decide when necessary - -| **Open Contribution** | Anyone can contribute via fork and pull request +==== Tri-Perimeter Contribution Framework (TPCF) -|=== - -== Roles and Permissions - -[cols="1,2,2"] -|=== -| Role | Permissions | Assignment - -| **Maintainer** | Write access, merge rights, admin | @hyperpolymath -| **Contributors** | Read access, fork, submit PRs | All GitHub users -| **Users** | Use the software, report issues | All GitHub users +Following RSR guidelines: +[cols=",,",options="header",] |=== - -== Decision Making Framework - -=== Routine Decisions - -* Bug fixes -* Documentation improvements -* Minor feature additions -* Dependency updates - -**Process**: Maintainer reviews and merges PRs that meet quality standards. - -=== Significant Changes - -* New major features -* API changes -* Architecture modifications -* Breaking changes - -**Process**: -. Open issue describing the change -. Discuss with community (minimum 72 hours) -. Maintainer makes final decision -. Document rationale in issue/PR - -=== Structural Decisions - -* Repository purpose/renaming -* License changes -* Ownership transfer -* Deprecation/archival - -**Process**: -. Extended discussion (minimum 1 week) -. Maintainer makes final decision -. Document in CHANGELOG and governance docs - -== Contribution Lifecycle - -[cols="1,2"] +|Perimeter |Access |Scope +|🔒 Core |Maintainers |CI/CD, security, releases +|🧠 Expert |Trusted contributors |Engine, architecture +|🌱 Community |Everyone |Docs, tests, proposals |=== -| Stage | Process -| **Ideation** | Open issue, discuss feasibility +=== Roles -| **Development** | Fork, implement, test thoroughly +==== Maintainers -| **Review** | Submit PR, maintainer reviews within 7 days +* Review and merge pull requests +* Manage releases +* Enforce code of conduct +* Make architectural decisions -| **Merge** | Maintainer merges or requests changes +==== Contributors -| **Release** | Maintainer publishes according to project conventions +* Submit issues and pull requests +* Participate in discussions +* Help with documentation and testing -|=== +=== Changes to Governance -== Conflict Resolution +Governance changes require: -In case of disagreements: +[arabic] +. Public proposal (issue or discussion) +. 14-day comment period +. Maintainer approval -. Discuss in the relevant GitHub issue or PR -. Provide technical justification for positions -. Maintainer mediates and makes final decision -. Decision is documented and can be revisited later +=== Contact -== Project Policies - -This repository adheres to hyperpolymath estate-wide policies: - -* **License**: MPL-2.0 for code, CC-BY-SA-4.0 for prose (per standards/LICENCE-POLICY.adoc) -* **Code of Conduct**: Follows hyperpolymath CODE_OF_CONDUCT.md -* **Security**: Follows hyperpolymath SECURITY.md -* **Contributing**: Follows hyperpolymath CONTRIBUTING.adoc conventions - -== Repository-Specific Conventions - -[cols="1,2"] -|=== -| Convention | Description - -| **Signing** | All commits must be signed (SSH or GPG) - -| **SPDX Headers** | All source files must have SPDX license identifiers - -| **Contractiles** | Mustfile, Trustfile, Intendfile, Adjustfile in root - -| **Machine Readable** | META.a2ml in .machine_readable/6a2/ - -| **CI/CD** | GitHub Actions workflows in .github/workflows/ - -|=== - -== Governance Evolution - -As the project grows, this governance model may evolve: - -* **Adding Co-Maintainers**: When contribution volume warrants it -* **Forming a Team**: For complex multi-maintainer projects -* **Adopting TPCF**: For large, multi-repository projects (see rhodium-standard-repositories) - -Changes to this document require the same process as Significant Changes above. - -== See Also - -* link:MAINTAINERS.adoc[Maintainers] -* link:CODE_OF_CONDUCT.md[Code of Conduct] -* link:CONTRIBUTING.adoc[Contributing Guide] -* link:https://github.com/hyperpolymath/standards/blob/main/LICENCE-POLICY.adoc[Estate License Policy] -* link:https://github.com/hyperpolymath/standards[rhodium-standard-repositories (TPCF)] - -== Changelog - -[cols="1,1,1"] -|=== -| Date | Change | By - -| 2026-06-07 | Initial governance model established | @hyperpolymath -|=== +* Issues: GitHub Issues +* Security: See SECURITY.md diff --git a/GOVERNANCE.md b/GOVERNANCE.md deleted file mode 100644 index 560551e..0000000 --- a/GOVERNANCE.md +++ /dev/null @@ -1,55 +0,0 @@ - -# Governance - -## Project Structure - -The Jeff Paradox is maintained by the Hyperpolymath collective with -community input. - -## Decision Making - -### Consensus-Seeking - -We aim for consensus on significant changes. If consensus cannot be reached, -maintainers make the final decision with documented rationale. - -### Tri-Perimeter Contribution Framework (TPCF) - -Following RSR guidelines: - -| Perimeter | Access | Scope | -|-----------|--------|-------| -| 🔒 Core | Maintainers | CI/CD, security, releases | -| 🧠 Expert | Trusted contributors | Engine, architecture | -| 🌱 Community | Everyone | Docs, tests, proposals | - -## Roles - -### Maintainers - -- Review and merge pull requests -- Manage releases -- Enforce code of conduct -- Make architectural decisions - -### Contributors - -- Submit issues and pull requests -- Participate in discussions -- Help with documentation and testing - -## Changes to Governance - -Governance changes require: - -1. Public proposal (issue or discussion) -2. 14-day comment period -3. Maintainer approval - -## Contact - -- Issues: GitHub Issues -- Security: See SECURITY.md diff --git a/MAINTAINERS.adoc b/MAINTAINERS.adoc index aa23a55..55e5a3b 100644 --- a/MAINTAINERS.adoc +++ b/MAINTAINERS.adoc @@ -1,48 +1,42 @@ -// SPDX-License-Identifier: CC-BY-SA-4.0 -// Copyright (c) Jonathan D.A. Jewell -= Maintainers -:toc: preamble +== Maintainers -This document lists the maintainers of this project and their responsibilities. +=== Current Maintainers -== Current Maintainers - -[cols="2,3,2",options="header"] +[width="100%",cols="30%,28%,42%",options="header",] |=== -| Name | Role | Contact - -| Jonathan D.A. Jewell -| Lead Maintainer -| https://github.com/hyperpolymath[@hyperpolymath] +|Name |Role |Contact +|Hyperpolymath |Lead Maintainer +|https://github.com/Hyperpolymath[@Hyperpolymath] |=== -== Responsibilities +=== Responsibilities Maintainers are responsible for: * Reviewing and merging pull requests -* Triaging issues and feature requests -* Ensuring code quality and security standards * Managing releases and versioning -* Upholding the project's code of conduct +* Triaging issues +* Enforcing the Code of Conduct +* Making architectural decisions +* Security vulnerability response + +=== Becoming a Maintainer -== Becoming a Maintainer +Contributors who have: -Contributors who demonstrate: +* Made significant contributions over time +* Demonstrated understanding of the project +* Shown good judgement in code review +* Exhibited collaborative behaviour -* Consistent, high-quality contributions -* Understanding of the project's goals and standards -* Constructive participation in discussions -* Commitment to the project's long-term health +May be invited to become maintainers. -May be invited to become maintainers at the discretion of existing maintainers. +=== Emeritus Maintainers -== Decision Making +Former maintainers who have stepped back from active maintenance. -* Routine decisions (bug fixes, minor improvements) can be made by any maintainer -* Significant changes require discussion and consensus among maintainers -* Breaking changes or major features should be discussed in issues before implementation +_None yet_ -== Contact +=== Attribution -For questions about project governance, open an issue or contact the maintainers listed above. +See also: `+humans.txt+` in `+.well-known/+` for full contributor list. diff --git a/MAINTAINERS.md b/MAINTAINERS.md deleted file mode 100644 index 6234af1..0000000 --- a/MAINTAINERS.md +++ /dev/null @@ -1,43 +0,0 @@ - -# Maintainers - -## Current Maintainers - -| Name | Role | Contact | -|------|------|---------| -| Hyperpolymath | Lead Maintainer | [@Hyperpolymath](https://github.com/Hyperpolymath) | - -## Responsibilities - -Maintainers are responsible for: - -- Reviewing and merging pull requests -- Managing releases and versioning -- Triaging issues -- Enforcing the Code of Conduct -- Making architectural decisions -- Security vulnerability response - -## Becoming a Maintainer - -Contributors who have: - -- Made significant contributions over time -- Demonstrated understanding of the project -- Shown good judgement in code review -- Exhibited collaborative behaviour - -May be invited to become maintainers. - -## Emeritus Maintainers - -Former maintainers who have stepped back from active maintenance. - -*None yet* - -## Attribution - -See also: `humans.txt` in `.well-known/` for full contributor list. diff --git a/README.adoc.invariants.adoc b/README.adoc.invariants.adoc new file mode 100644 index 0000000..08c4d39 --- /dev/null +++ b/README.adoc.invariants.adoc @@ -0,0 +1,15 @@ +== Invariant Path Scan: README.adoc + +=== Invariant: ip-f79fb3e785d37d22 + +⚠️ *ISSUE DETECTED / 🔍 REVIEW REQUIRED* + +*Source Text:* This project + +*Target Text:* declare **MPL-2 + +*Invariant Type:* normative_bridge + +*Notes:* auto-generated heuristic suggestion; editable + +''''' diff --git a/README.adoc.invariants.md b/README.adoc.invariants.md deleted file mode 100644 index 9529b83..0000000 --- a/README.adoc.invariants.md +++ /dev/null @@ -1,19 +0,0 @@ - -# Invariant Path Scan: README.adoc - -## Invariant: ip-f79fb3e785d37d22 - -⚠️ **ISSUE DETECTED / 🔍 REVIEW REQUIRED** - -**Source Text:** This project - -**Target Text:** declare **MPL-2 - -**Invariant Type:** normative_bridge - -**Notes:** auto-generated heuristic suggestion; editable - ---- diff --git a/SECURITY.adoc b/SECURITY.adoc new file mode 100644 index 0000000..6cccdd1 --- /dev/null +++ b/SECURITY.adoc @@ -0,0 +1,144 @@ +== Security Policy + +=== SHA Pinning Requirement + +*All GitHub Actions in this repository MUST be pinned to full-length +commit SHAs.* + +==== Why SHA Pinning? + +Version tags (like `+@v4+`) are mutable - the repository owner can +update what commit a tag points to at any time. This creates a supply +chain attack vector: + +[arabic] +. Attacker compromises an action repository +. Attacker updates the `+v4+` tag to point to malicious code +. All workflows using `+@v4+` now execute malicious code + +==== Solution + +Pin to immutable commit SHAs: + +[source,yaml] +---- +# INSECURE - mutable tag +- uses: actions/checkout@v4 + +# SECURE - immutable SHA +- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 +---- + +==== Current Pinned Actions + +[width="100%",cols="38%,22%,40%",options="header",] +|=== +|Action |SHA |Version +|`+actions/checkout+` |`+11bd71901bbe5b1630ceea73d27597364c9af683+` +|v4.2.2 + +|`+actions/upload-artifact+` +|`+ea165f8d65b6e75b540449e92b4886f43607fa02+` |v4.6.2 + +|`+actions/download-artifact+` +|`+d3f86a106a0bac45b974a628896c90dbdf5c8093+` |v4.3.0 + +|`+actions/setup-node+` |`+49933ea5288caeca8642d1e84afbd3f7d6820020+` +|v4.4.0 + +|`+actions/stale+` |`+5bef64f19d7facfb25b37b414482c7164d639639+` |v9.1.0 + +|`+actions/labeler+` |`+8558fd74291d67161a8a78ce36a881fa63b766a9+` +|v5.0.0 + +|`+actions/configure-pages+` +|`+1f0c5cde4bc74cd7e1254d0cb4de8d49e9068c7d+` |v4.0.0 + +|`+actions/upload-pages-artifact+` +|`+56afc609e74202658d3ffba0e8f6dda462b719fa+` |v3.0.1 + +|`+actions/deploy-pages+` |`+d6db90164ac5ed86f2b6aed7e0febac5b3c0c03e+` +|v4.0.5 + +|`+julia-actions/setup-julia+` +|`+9b79636afcfb07ab02c256cede01fe2db6ba808c+` |v2.6.0 + +|`+julia-actions/cache+` |`+d10a6fd8f31b12404a54613ebad242900567f2b9+` +|v2.1.0 + +|`+peaceiris/actions-hugo+` +|`+16361eb4acea8698b220b76c0d4e84e1fd22c61d+` |v2.6.0 + +|`+ad-m/github-push-action+` +|`+77c5b412c50b723d2a4fbc6d71fb5723bcd439aa+` |v1.0.0 + +|`+github/codeql-action+` |`+d3ced5c96c16c4332e2a61eb6f3649d6f1b20bb8+` +|v3.31.5 + +|`+softprops/action-gh-release+` +|`+5be0e66d93ac7ed76da52eca8bb058f665c3a5fe+` |v2.4.2 + +|`+orhun/git-cliff-action+` +|`+b946ed27a675d653b308f29a7bbad813b85bf7aa+` |v3.3.0 + +|`+peter-evans/create-pull-request+` +|`+84ae59a2cdc2258d6fa0732dd66352dddae2a412+` |v7.0.9 + +|`+aquasecurity/trivy-action+` +|`+b6643a29fecd7f34b3597bc6acb0a98b03d33ff8+` |v0.33.1 + +|`+lycheeverse/lychee-action+` +|`+a8c4c7cb88f0c7386610c35eb25108e448569cb0+` |v2.7.0 + +|`+ludeeus/action-shellcheck+` +|`+00cae500b08a931fb5698e11e79bfbd38e612a38+` |v2.0.0 + +|`+ibiqlik/action-yamllint+` +|`+2576378a8e339169678f9939646ee3ee325e845c+` |v3.1.1 + +|`+DavidAnson/markdownlint-cli2-action+` +|`+db4f21d71a924e68fea27e1a2b3c67e58f823bd8+` |v21.0.0 + +|`+trufflesecurity/trufflehog+` +|`+aade3bff5594fe8808578dd4db3dfeae9bf2abdc+` |v3.91.1 +|=== + +=== Security Scanning + +==== SAST (Static Application Security Testing) + +* *Trivy*: Vulnerability scanning for dependencies and configurations +* *TruffleHog*: Secrets detection in code and history +* *ShellCheck*: Shell script security analysis + +==== Languages Not Supported by CodeQL + +* *Julia*: Game engine (use Trivy for dependency scanning) +* *Ada*: TUI (compile-time type safety, use GNAT warnings) + +=== Container Security + +All containers use *Wolfi*-based images (Chainguard) for: - Minimal +attack surface (distroless approach) - Daily CVE scanning and patching - +SBOM generation - Signed images + +=== Reporting Vulnerabilities + +Please report security vulnerabilities to: - Email: security@example.com +(update with real address) - Or create a private security advisory on +GitHub + +Do NOT create public issues for security vulnerabilities. + +=== RSR Compliance + +This project follows the *Robust Software Repository (RSR)* +specification: + +* [x] SHA-pinned dependencies +* [x] SBOM generation +* [x] Signed containers (Wolfi/Chainguard) +* [x] Secrets scanning +* [x] Vulnerability scanning +* [x] Minimal base images +* [x] No unnecessary runtime dependencies diff --git a/SECURITY.md b/SECURITY.md deleted file mode 100644 index 81291d0..0000000 --- a/SECURITY.md +++ /dev/null @@ -1,98 +0,0 @@ - -# Security Policy - -## SHA Pinning Requirement - -**All GitHub Actions in this repository MUST be pinned to full-length commit SHAs.** - -### Why SHA Pinning? - -Version tags (like `@v4`) are mutable - the repository owner can update what commit a tag points to at any time. This creates a supply chain attack vector: - -1. Attacker compromises an action repository -2. Attacker updates the `v4` tag to point to malicious code -3. All workflows using `@v4` now execute malicious code - -### Solution - -Pin to immutable commit SHAs: - -```yaml -# INSECURE - mutable tag -- uses: actions/checkout@v4 - -# SECURE - immutable SHA -- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 -``` - -### Current Pinned Actions - -| Action | SHA | Version | -|--------|-----|---------| -| `actions/checkout` | `11bd71901bbe5b1630ceea73d27597364c9af683` | v4.2.2 | -| `actions/upload-artifact` | `ea165f8d65b6e75b540449e92b4886f43607fa02` | v4.6.2 | -| `actions/download-artifact` | `d3f86a106a0bac45b974a628896c90dbdf5c8093` | v4.3.0 | -| `actions/setup-node` | `49933ea5288caeca8642d1e84afbd3f7d6820020` | v4.4.0 | -| `actions/stale` | `5bef64f19d7facfb25b37b414482c7164d639639` | v9.1.0 | -| `actions/labeler` | `8558fd74291d67161a8a78ce36a881fa63b766a9` | v5.0.0 | -| `actions/configure-pages` | `1f0c5cde4bc74cd7e1254d0cb4de8d49e9068c7d` | v4.0.0 | -| `actions/upload-pages-artifact` | `56afc609e74202658d3ffba0e8f6dda462b719fa` | v3.0.1 | -| `actions/deploy-pages` | `d6db90164ac5ed86f2b6aed7e0febac5b3c0c03e` | v4.0.5 | -| `julia-actions/setup-julia` | `9b79636afcfb07ab02c256cede01fe2db6ba808c` | v2.6.0 | -| `julia-actions/cache` | `d10a6fd8f31b12404a54613ebad242900567f2b9` | v2.1.0 | -| `peaceiris/actions-hugo` | `16361eb4acea8698b220b76c0d4e84e1fd22c61d` | v2.6.0 | -| `ad-m/github-push-action` | `77c5b412c50b723d2a4fbc6d71fb5723bcd439aa` | v1.0.0 | -| `github/codeql-action` | `d3ced5c96c16c4332e2a61eb6f3649d6f1b20bb8` | v3.31.5 | -| `softprops/action-gh-release` | `5be0e66d93ac7ed76da52eca8bb058f665c3a5fe` | v2.4.2 | -| `orhun/git-cliff-action` | `b946ed27a675d653b308f29a7bbad813b85bf7aa` | v3.3.0 | -| `peter-evans/create-pull-request` | `84ae59a2cdc2258d6fa0732dd66352dddae2a412` | v7.0.9 | -| `aquasecurity/trivy-action` | `b6643a29fecd7f34b3597bc6acb0a98b03d33ff8` | v0.33.1 | -| `lycheeverse/lychee-action` | `a8c4c7cb88f0c7386610c35eb25108e448569cb0` | v2.7.0 | -| `ludeeus/action-shellcheck` | `00cae500b08a931fb5698e11e79bfbd38e612a38` | v2.0.0 | -| `ibiqlik/action-yamllint` | `2576378a8e339169678f9939646ee3ee325e845c` | v3.1.1 | -| `DavidAnson/markdownlint-cli2-action` | `db4f21d71a924e68fea27e1a2b3c67e58f823bd8` | v21.0.0 | -| `trufflesecurity/trufflehog` | `aade3bff5594fe8808578dd4db3dfeae9bf2abdc` | v3.91.1 | - -## Security Scanning - -### SAST (Static Application Security Testing) - -- **Trivy**: Vulnerability scanning for dependencies and configurations -- **TruffleHog**: Secrets detection in code and history -- **ShellCheck**: Shell script security analysis - -### Languages Not Supported by CodeQL - -- **Julia**: Game engine (use Trivy for dependency scanning) -- **Ada**: TUI (compile-time type safety, use GNAT warnings) - -## Container Security - -All containers use **Wolfi**-based images (Chainguard) for: -- Minimal attack surface (distroless approach) -- Daily CVE scanning and patching -- SBOM generation -- Signed images - -## Reporting Vulnerabilities - -Please report security vulnerabilities to: -- Email: security@example.com (update with real address) -- Or create a private security advisory on GitHub - -Do NOT create public issues for security vulnerabilities. - -## RSR Compliance - -This project follows the **Robust Software Repository (RSR)** specification: - -- [x] SHA-pinned dependencies -- [x] SBOM generation -- [x] Signed containers (Wolfi/Chainguard) -- [x] Secrets scanning -- [x] Vulnerability scanning -- [x] Minimal base images -- [x] No unnecessary runtime dependencies diff --git a/TEST-NEEDS.adoc b/TEST-NEEDS.adoc new file mode 100644 index 0000000..77b28e4 --- /dev/null +++ b/TEST-NEEDS.adoc @@ -0,0 +1,62 @@ +== TEST-NEEDS.md — CRG Grade B Test Documentation + +=== Grade B Status: 6 Test Targets + +This file documents the six independently runnable test targets required +for CRG Grade B compliance. + +[width="100%",cols="16%,31%,24%,29%",options="header",] +|=== +|Target |Justfile Recipe |Description |Pass Criterion +|T1 |`+just test-engine+` |Julia engine tests +(`+engine/test/runtests.jl+`) |All `+@testset+` assertions pass (skipped +if julia absent) + +|T2 |`+just test-zig+` |Zig FFI integration test +(`+ffi/zig/test/integration_test.zig+`) |Zig test exits 0 (skipped if +zig absent) + +|T3 |`+just test-structure+` |Structural validation +(`+tests/validate_structure.sh+`) |All required files/dirs present; ≥3 +workflows + +|T4 |`+just test-nickel+` |Nickel k9 contractile typecheck +|`+nickel typecheck+` exits 0 (skipped if nickel absent) + +|T5 |`+just test-hugo-check+` |Hugo config validation for node-alpha and +node-beta |Both configs present with required fields + +|T6 |`+just test-orchestrator+` |Orchestrator structural check +(`+tests/validate_orchestrator.sh+`) |orchestrator/ has content/, data/, +layouts/, and valid hugo.toml +|=== + +=== Running All Targets + +[source,bash] +---- +just test +---- + +=== Individual Targets + +[source,bash] +---- +just test-engine +just test-zig +just test-structure +just test-nickel +just test-hugo-check +just test-orchestrator +---- + +=== Notes + +* T1 and T2 degrade gracefully when `+julia+` or `+zig+` are not +installed — emit `+SKIP:+` and exit 0. +* T4 degrades gracefully when `+nickel+` is not installed. +* T4 strips the `+K9!+` header from the k9 template file before passing +to `+nickel typecheck+` (the header is a k9 DSL marker, not valid +Nickel). +* T5 accepts either `+hugo.toml+` or `+config.toml+` for both node-alpha +and node-beta. diff --git a/TEST-NEEDS.md b/TEST-NEEDS.md deleted file mode 100644 index 39a0350..0000000 --- a/TEST-NEEDS.md +++ /dev/null @@ -1,42 +0,0 @@ - -# TEST-NEEDS.md — CRG Grade B Test Documentation - -## Grade B Status: 6 Test Targets - -This file documents the six independently runnable test targets required for CRG Grade B compliance. - -| Target | Justfile Recipe | Description | Pass Criterion | -|--------|-----------------|-------------|----------------| -| T1 | `just test-engine` | Julia engine tests (`engine/test/runtests.jl`) | All `@testset` assertions pass (skipped if julia absent) | -| T2 | `just test-zig` | Zig FFI integration test (`ffi/zig/test/integration_test.zig`) | Zig test exits 0 (skipped if zig absent) | -| T3 | `just test-structure` | Structural validation (`tests/validate_structure.sh`) | All required files/dirs present; ≥3 workflows | -| T4 | `just test-nickel` | Nickel k9 contractile typecheck | `nickel typecheck` exits 0 (skipped if nickel absent) | -| T5 | `just test-hugo-check` | Hugo config validation for node-alpha and node-beta | Both configs present with required fields | -| T6 | `just test-orchestrator` | Orchestrator structural check (`tests/validate_orchestrator.sh`) | orchestrator/ has content/, data/, layouts/, and valid hugo.toml | - -## Running All Targets - -```bash -just test -``` - -## Individual Targets - -```bash -just test-engine -just test-zig -just test-structure -just test-nickel -just test-hugo-check -just test-orchestrator -``` - -## Notes - -- T1 and T2 degrade gracefully when `julia` or `zig` are not installed — emit `SKIP:` and exit 0. -- T4 degrades gracefully when `nickel` is not installed. -- T4 strips the `K9!` header from the k9 template file before passing to `nickel typecheck` (the header is a k9 DSL marker, not valid Nickel). -- T5 accepts either `hugo.toml` or `config.toml` for both node-alpha and node-beta. diff --git a/dns/README.adoc b/dns/README.adoc new file mode 100644 index 0000000..5d6565c --- /dev/null +++ b/dns/README.adoc @@ -0,0 +1,75 @@ +== DNS Security Configuration + +This directory contains DNS zone records for comprehensive email and +domain security. + +=== Quick Start + +[arabic] +. Copy `+zone-security.txt+` to your DNS provider +. Replace `+YOURDOMAIN.COM+` with your actual domain +. Update placeholder values (DKIM keys, verification codes, etc.) +. Import via zone file import or add records individually + +=== Records Included + +[cols=",,",options="header",] +|=== +|Record Type |Purpose |RFC +|SPF |Authorize mail servers |RFC 7208 +|DKIM |Email signing |RFC 6376 +|DMARC |Email auth policy |RFC 7489 +|MTA-STS |Enforce TLS for mail |RFC 8461 +|TLS-RPT |TLS failure reports |RFC 8460 +|BIMI |Brand logo in email |BIMI Group +|CAA |Certificate authority control |RFC 8659 +|DANE/TLSA |Certificate pinning |RFC 6698 +|=== + +=== Implementation Order + +[arabic] +. *Week 1*: Add SPF and start DKIM setup +. *Week 2*: Deploy DMARC with `+p=none+` (monitor mode) +. *Week 3*: Add CAA records +. *Week 4*: Enable DNSSEC at registrar +. *Week 5*: Add MTA-STS and TLS-RPT +. *Week 6*: Review DMARC reports, tighten to `+p=quarantine+` +. *Week 8*: Move to `+p=reject+` if reports are clean +. *Optional*: Add DANE after DNSSEC is stable, add BIMI with VMC + +=== Required Web Resources + +These files must be hosted on your domain: + +==== `+/.well-known/mta-sts.txt+` + +.... +version: STSv1 +mode: enforce +mx: mail.yourdomain.com +max_age: 604800 +.... + +==== `+/.well-known/security.txt+` + +Already in repository at `+.well-known/security.txt+` + +==== `+/.well-known/ai.txt+` + +Already in repository at `+.well-known/ai.txt+` + +=== Verification Tools + +* SPF: https://mxtoolbox.com/spf.aspx[MXToolbox SPF] +* DKIM: https://mxtoolbox.com/dkim.aspx[MXToolbox DKIM] +* DMARC: https://mxtoolbox.com/dmarc.aspx[MXToolbox DMARC] +* CAA: https://sslmate.com/caa/[SSLMate CAA] +* DNSSEC: https://dnsviz.net/[DNSViz] +* Overall: https://www.hardenize.com/[Hardenize] + +=== RSR Compliance + +These records satisfy RSR requirements for: - Email authentication (SPF, +DKIM, DMARC) - Transport security (MTA-STS, DANE) - Certificate control +(CAA) - Security disclosure (security.txt DNS pointer) diff --git a/dns/README.md b/dns/README.md deleted file mode 100644 index a3df88c..0000000 --- a/dns/README.md +++ /dev/null @@ -1,73 +0,0 @@ - -# DNS Security Configuration - -This directory contains DNS zone records for comprehensive email and domain security. - -## Quick Start - -1. Copy `zone-security.txt` to your DNS provider -2. Replace `YOURDOMAIN.COM` with your actual domain -3. Update placeholder values (DKIM keys, verification codes, etc.) -4. Import via zone file import or add records individually - -## Records Included - -| Record Type | Purpose | RFC | -|-------------|---------|-----| -| SPF | Authorize mail servers | RFC 7208 | -| DKIM | Email signing | RFC 6376 | -| DMARC | Email auth policy | RFC 7489 | -| MTA-STS | Enforce TLS for mail | RFC 8461 | -| TLS-RPT | TLS failure reports | RFC 8460 | -| BIMI | Brand logo in email | BIMI Group | -| CAA | Certificate authority control | RFC 8659 | -| DANE/TLSA | Certificate pinning | RFC 6698 | - -## Implementation Order - -1. **Week 1**: Add SPF and start DKIM setup -2. **Week 2**: Deploy DMARC with `p=none` (monitor mode) -3. **Week 3**: Add CAA records -4. **Week 4**: Enable DNSSEC at registrar -5. **Week 5**: Add MTA-STS and TLS-RPT -6. **Week 6**: Review DMARC reports, tighten to `p=quarantine` -7. **Week 8**: Move to `p=reject` if reports are clean -8. **Optional**: Add DANE after DNSSEC is stable, add BIMI with VMC - -## Required Web Resources - -These files must be hosted on your domain: - -### `/.well-known/mta-sts.txt` -``` -version: STSv1 -mode: enforce -mx: mail.yourdomain.com -max_age: 604800 -``` - -### `/.well-known/security.txt` -Already in repository at `.well-known/security.txt` - -### `/.well-known/ai.txt` -Already in repository at `.well-known/ai.txt` - -## Verification Tools - -- SPF: [MXToolbox SPF](https://mxtoolbox.com/spf.aspx) -- DKIM: [MXToolbox DKIM](https://mxtoolbox.com/dkim.aspx) -- DMARC: [MXToolbox DMARC](https://mxtoolbox.com/dmarc.aspx) -- CAA: [SSLMate CAA](https://sslmate.com/caa/) -- DNSSEC: [DNSViz](https://dnsviz.net/) -- Overall: [Hardenize](https://www.hardenize.com/) - -## RSR Compliance - -These records satisfy RSR requirements for: -- Email authentication (SPF, DKIM, DMARC) -- Transport security (MTA-STS, DANE) -- Certificate control (CAA) -- Security disclosure (security.txt DNS pointer) diff --git a/docs/reports/daily-2025-12-01.adoc b/docs/reports/daily-2025-12-01.adoc new file mode 100644 index 0000000..af6a8d6 --- /dev/null +++ b/docs/reports/daily-2025-12-01.adoc @@ -0,0 +1,27 @@ +== The Jeff Paradox - Metrics Report + +Generated: 2025-12-01 01:56:25 UTC + +=== Game State + +[cols=",",options="header",] +|=== +|Metric |Value +|Turn |1 +|Chaos |15/100 +|Exposure |5/100 +|Faction |-2 +|Current Node |beta +|=== + +=== Threshold Status + +No thresholds triggered + +=== Pattern Quarantine + +No patterns quarantined + +''''' + +_Report generated automatically by The Jeff Paradox metrics system._ diff --git a/docs/reports/daily-2025-12-01.md b/docs/reports/daily-2025-12-01.md deleted file mode 100644 index a077e4e..0000000 --- a/docs/reports/daily-2025-12-01.md +++ /dev/null @@ -1,28 +0,0 @@ - -# The Jeff Paradox - Metrics Report - -Generated: 2025-12-01 01:56:25 UTC - -## Game State - -| Metric | Value | -|--------|-------| -| Turn | 1 | -| Chaos | 15/100 | -| Exposure | 5/100 | -| Faction | -2 | -| Current Node | beta | - -## Threshold Status - -No thresholds triggered - -## Pattern Quarantine - -No patterns quarantined - ---- -*Report generated automatically by The Jeff Paradox metrics system.* diff --git a/docs/reports/daily-2025-12-02.adoc b/docs/reports/daily-2025-12-02.adoc new file mode 100644 index 0000000..f490f5e --- /dev/null +++ b/docs/reports/daily-2025-12-02.adoc @@ -0,0 +1,27 @@ +== The Jeff Paradox - Metrics Report + +Generated: 2025-12-02 01:41:43 UTC + +=== Game State + +[cols=",",options="header",] +|=== +|Metric |Value +|Turn |3 +|Chaos |15/100 +|Exposure |5/100 +|Faction |-6 +|Current Node |beta +|=== + +=== Threshold Status + +No thresholds triggered + +=== Pattern Quarantine + +No patterns quarantined + +''''' + +_Report generated automatically by The Jeff Paradox metrics system._ diff --git a/docs/reports/daily-2025-12-02.md b/docs/reports/daily-2025-12-02.md deleted file mode 100644 index 762f145..0000000 --- a/docs/reports/daily-2025-12-02.md +++ /dev/null @@ -1,28 +0,0 @@ - -# The Jeff Paradox - Metrics Report - -Generated: 2025-12-02 01:41:43 UTC - -## Game State - -| Metric | Value | -|--------|-------| -| Turn | 3 | -| Chaos | 15/100 | -| Exposure | 5/100 | -| Faction | -6 | -| Current Node | beta | - -## Threshold Status - -No thresholds triggered - -## Pattern Quarantine - -No patterns quarantined - ---- -*Report generated automatically by The Jeff Paradox metrics system.* diff --git a/docs/reports/daily-2025-12-03.adoc b/docs/reports/daily-2025-12-03.adoc new file mode 100644 index 0000000..b318055 --- /dev/null +++ b/docs/reports/daily-2025-12-03.adoc @@ -0,0 +1,27 @@ +== The Jeff Paradox - Metrics Report + +Generated: 2025-12-03 01:41:02 UTC + +=== Game State + +[cols=",",options="header",] +|=== +|Metric |Value +|Turn |7 +|Chaos |15/100 +|Exposure |5/100 +|Faction |-2 +|Current Node |beta +|=== + +=== Threshold Status + +No thresholds triggered + +=== Pattern Quarantine + +No patterns quarantined + +''''' + +_Report generated automatically by The Jeff Paradox metrics system._ diff --git a/docs/reports/daily-2025-12-03.md b/docs/reports/daily-2025-12-03.md deleted file mode 100644 index 1fa46c4..0000000 --- a/docs/reports/daily-2025-12-03.md +++ /dev/null @@ -1,28 +0,0 @@ - -# The Jeff Paradox - Metrics Report - -Generated: 2025-12-03 01:41:02 UTC - -## Game State - -| Metric | Value | -|--------|-------| -| Turn | 7 | -| Chaos | 15/100 | -| Exposure | 5/100 | -| Faction | -2 | -| Current Node | beta | - -## Threshold Status - -No thresholds triggered - -## Pattern Quarantine - -No patterns quarantined - ---- -*Report generated automatically by The Jeff Paradox metrics system.* diff --git a/docs/reports/daily-2025-12-04.adoc b/docs/reports/daily-2025-12-04.adoc new file mode 100644 index 0000000..c15b4ff --- /dev/null +++ b/docs/reports/daily-2025-12-04.adoc @@ -0,0 +1,27 @@ +== The Jeff Paradox - Metrics Report + +Generated: 2025-12-04 01:41:57 UTC + +=== Game State + +[cols=",",options="header",] +|=== +|Metric |Value +|Turn |11 +|Chaos |15/100 +|Exposure |15/100 +|Faction |-2 +|Current Node |beta +|=== + +=== Threshold Status + +No thresholds triggered + +=== Pattern Quarantine + +No patterns quarantined + +''''' + +_Report generated automatically by The Jeff Paradox metrics system._ diff --git a/docs/reports/daily-2025-12-04.md b/docs/reports/daily-2025-12-04.md deleted file mode 100644 index e717efa..0000000 --- a/docs/reports/daily-2025-12-04.md +++ /dev/null @@ -1,28 +0,0 @@ - -# The Jeff Paradox - Metrics Report - -Generated: 2025-12-04 01:41:57 UTC - -## Game State - -| Metric | Value | -|--------|-------| -| Turn | 11 | -| Chaos | 15/100 | -| Exposure | 15/100 | -| Faction | -2 | -| Current Node | beta | - -## Threshold Status - -No thresholds triggered - -## Pattern Quarantine - -No patterns quarantined - ---- -*Report generated automatically by The Jeff Paradox metrics system.* diff --git a/docs/reports/daily-2025-12-05.adoc b/docs/reports/daily-2025-12-05.adoc new file mode 100644 index 0000000..443eed9 --- /dev/null +++ b/docs/reports/daily-2025-12-05.adoc @@ -0,0 +1,27 @@ +== The Jeff Paradox - Metrics Report + +Generated: 2025-12-05 01:42:10 UTC + +=== Game State + +[cols=",",options="header",] +|=== +|Metric |Value +|Turn |15 +|Chaos |15/100 +|Exposure |15/100 +|Faction |8 +|Current Node |beta +|=== + +=== Threshold Status + +No thresholds triggered + +=== Pattern Quarantine + +No patterns quarantined + +''''' + +_Report generated automatically by The Jeff Paradox metrics system._ diff --git a/docs/reports/daily-2025-12-05.md b/docs/reports/daily-2025-12-05.md deleted file mode 100644 index 7d4595c..0000000 --- a/docs/reports/daily-2025-12-05.md +++ /dev/null @@ -1,28 +0,0 @@ - -# The Jeff Paradox - Metrics Report - -Generated: 2025-12-05 01:42:10 UTC - -## Game State - -| Metric | Value | -|--------|-------| -| Turn | 15 | -| Chaos | 15/100 | -| Exposure | 15/100 | -| Faction | 8 | -| Current Node | beta | - -## Threshold Status - -No thresholds triggered - -## Pattern Quarantine - -No patterns quarantined - ---- -*Report generated automatically by The Jeff Paradox metrics system.* diff --git a/docs/tech-debt-2026-05-26.adoc b/docs/tech-debt-2026-05-26.adoc new file mode 100644 index 0000000..161c8fb --- /dev/null +++ b/docs/tech-debt-2026-05-26.adoc @@ -0,0 +1,71 @@ +== Tech-Debt Audit — thejeffparadox — 2026-05-26 + +*Source:* estate-wide automated scan 2026-05-26. *Companion:* +https://github.com/hyperpolymath/standards/tree/main/docs/audits[`+hyperpolymath/standards+` +2026-05-26-estate-*-debt audits]. *Combined severity:* `+LOW+`. + +This file records the _raw findings_ — it does not by itself fix the +debt. Each section ends with a '`Recommended next move`' line; closing +the debt is follow-up work. + +=== 1. Proof debt + +No proof-bearing files (`+*.v+`, `+*.lean+`, `+*.agda+`, `+*.idr+`, +`+*.idr2+`, `+*.fst+`, `+*.dfy+`, `+*.tla+`, `+*.ads+`, `+*.adb+`) found +in this repo. + +*Recommended next move:* none. + +=== 2. Licence debt + +[cols=",",options="header",] +|=== +|Field |Value +|LICENSE file |`+LICENSE+` +|SPDX header |`+MPL-2.0+` +|Manifest licence |`+NONE+` +|Body classifier |`+Palimp-MPL-2.0+` +|Severity |`+ok+` +|=== + +*Recommended next move:* none for licence. + +=== 3. Documentation debt + +[cols=",",options="header",] +|=== +|Field |Value +|README lines |209 +|`+docs/+` files |11 +|`+docs/+` LoC |1058 +|CHANGELOG.md |N +|CONTRIBUTING.md |Y +|CODE_OF_CONDUCT.md |Y +|SECURITY.md |Y +|Severity |`+LOW+` +|=== + +*Recommended next move:* `+docs/+` has only 11 file(s). Aim for ≥10 +organised docs (architecture, usage, contributing-guide, +troubleshooting, design-decisions). The user’s bar for a +"`heavily-developed and well-organised wiki`" is ≥10 files with topical +organisation. + +Additionally: *CHANGELOG.md is missing.* 65% of estate repos lack one — +adopting a CHANGELOG (or auto-generating via `+git-cliff+`) is a +recommended estate-wide follow-up. + +=== Cross-references + +* Estate proof-debt audit: +`+hyperpolymath/standards/docs/audits/2026-05-26-estate-proof-debt.md+` +* Estate licence-debt audit: +`+hyperpolymath/standards/docs/audits/2026-05-26-estate-licence-debt.md+` +* Estate documentation-debt audit: +`+hyperpolymath/standards/docs/audits/2026-05-26-estate-documentation-debt.md+` + +''''' + +🤖 Generated by Claude Code estate-wide tech-debt scan (2026-05-26). +This file is informational — closing the debt is follow-up work owned by +the maintainer. diff --git a/docs/tech-debt-2026-05-26.md b/docs/tech-debt-2026-05-26.md deleted file mode 100644 index f4258ef..0000000 --- a/docs/tech-debt-2026-05-26.md +++ /dev/null @@ -1,56 +0,0 @@ - -# Tech-Debt Audit — thejeffparadox — 2026-05-26 - -**Source:** estate-wide automated scan 2026-05-26. -**Companion:** [`hyperpolymath/standards` 2026-05-26-estate-*-debt audits](https://github.com/hyperpolymath/standards/tree/main/docs/audits). -**Combined severity:** `LOW`. - -This file records the *raw findings* — it does not by itself fix the debt. Each section ends with a 'Recommended next move' line; closing the debt is follow-up work. - -## 1. Proof debt - -No proof-bearing files (`*.v`, `*.lean`, `*.agda`, `*.idr`, `*.idr2`, `*.fst`, `*.dfy`, `*.tla`, `*.ads`, `*.adb`) found in this repo. - -**Recommended next move:** none. - -## 2. Licence debt - -| Field | Value | -|---|---| -| LICENSE file | `LICENSE` | -| SPDX header | `MPL-2.0` | -| Manifest licence | `NONE` | -| Body classifier | `Palimp-MPL-2.0` | -| Severity | `ok` | - -**Recommended next move:** none for licence. - -## 3. Documentation debt - -| Field | Value | -|---|---| -| README lines | 209 | -| `docs/` files | 11 | -| `docs/` LoC | 1058 | -| CHANGELOG.md | N | -| CONTRIBUTING.md | Y | -| CODE_OF_CONDUCT.md | Y | -| SECURITY.md | Y | -| Severity | `LOW` | - -**Recommended next move:** `docs/` has only 11 file(s). Aim for ≥10 organised docs (architecture, usage, contributing-guide, troubleshooting, design-decisions). The user's bar for a "heavily-developed and well-organised wiki" is ≥10 files with topical organisation. - -Additionally: **CHANGELOG.md is missing.** 65% of estate repos lack one — adopting a CHANGELOG (or auto-generating via `git-cliff`) is a recommended estate-wide follow-up. - -## Cross-references - -- Estate proof-debt audit: `hyperpolymath/standards/docs/audits/2026-05-26-estate-proof-debt.md` -- Estate licence-debt audit: `hyperpolymath/standards/docs/audits/2026-05-26-estate-licence-debt.md` -- Estate documentation-debt audit: `hyperpolymath/standards/docs/audits/2026-05-26-estate-documentation-debt.md` - ---- - -🤖 Generated by Claude Code estate-wide tech-debt scan (2026-05-26). This file is informational — closing the debt is follow-up work owned by the maintainer. diff --git a/engine/docs/statistical_framework.adoc b/engine/docs/statistical_framework.adoc new file mode 100644 index 0000000..579ffc2 --- /dev/null +++ b/engine/docs/statistical_framework.adoc @@ -0,0 +1,638 @@ +== Statistical Framework for The Jeff Paradox + +=== Mathematical Foundations for Testing LLM Personality Stability + +This document establishes the rigorous statistical framework for testing +whether "`LLM personality`" is a meaningful, measurable construct. + +''''' + +=== 1. Definitions and Notation + +==== 1.1 Embedding Space + +Let latexmath:[\mathcal{E} \subset \mathbb{R}^d] be the embedding space +where latexmath:[d] is the embedding dimension (768 for local, 1024 for +Mistral/Voyage). + +For a turn latexmath:[t] with text content latexmath:[x_t], define the +embedding function: + +[latexmath] +++++ +\phi: \mathcal{X} \rightarrow \mathcal{E}, \quad \phi(x_t) = \mathbf{e}_t \in \mathbb{R}^d +++++ + +==== 1.2 Conversation Trajectory + +A conversation latexmath:[C] of length latexmath:[T] is a sequence of +turns: + +[latexmath] +++++ +C = \{(x_1, n_1), (x_2, n_2), \ldots, (x_T, n_T)\} +++++ + +where latexmath:[n_t \in \{\alpha, \beta\}] indicates which node +produced turn latexmath:[t]. + +The *trajectory* in embedding space: + +[latexmath] +++++ +\Gamma(C) = \{\phi(x_1), \phi(x_2), \ldots, \phi(x_T)\} \subset \mathcal{E} +++++ + +==== 1.3 Node-Specific Trajectories + +[latexmath] +++++ +\Gamma_\alpha(C) = \{\phi(x_t) : n_t = \alpha\} +++++ + +[latexmath] +++++ +\Gamma_\beta(C) = \{\phi(x_t) : n_t = \beta\} +++++ + +==== 1.4 Attractor Definition + +An *attractor* latexmath:[\mathbf{a} \in \mathcal{E}] for trajectory +latexmath:[\Gamma] is a point such that: + +[latexmath] +++++ +\lim_{t \to \infty} \frac{1}{W} \sum_{i=t-W+1}^{t} \phi(x_i) = \mathbf{a} +++++ + +for some window size latexmath:[W]. The attractor is *stable* if this +limit exists and is independent of initial conditions within some basin +of attraction. + +==== 1.5 Convergence Metric + +For nodes latexmath:[\alpha] and latexmath:[\beta] at time latexmath:[t] +with window latexmath:[W]: + +[latexmath] +++++ +\text{Conv}(t, W) = \cos(\bar{\mathbf{e}}_\alpha^{(t,W)}, \bar{\mathbf{e}}_\beta^{(t,W)}) +++++ + +where latexmath:[\bar{\mathbf{e}}_n^{(t,W)}] is the mean embedding of +node latexmath:[n]’s turns in latexmath:[[t-W+1, t]]. + +''''' + +=== 2. Hypotheses + +==== 2.1 Primary Hypotheses + +*H1 (Attractor Existence)*: Conversations converge to stable attractors. + +[latexmath] +++++ +H_0^{(1)}: \lim_{t \to \infty} \text{Var}(\Gamma[t-W:t]) \neq 0 \quad \text{(no convergence)} +++++ + +[latexmath] +++++ +H_1^{(1)}: \lim_{t \to \infty} \text{Var}(\Gamma[t-W:t]) = 0 \quad \text{(convergence)} +++++ + +*H2 (Seed Reproducibility)*: Same seed produces same attractor. + +[latexmath] +++++ +H_0^{(2)}: \mathbf{a}(s) \perp s \quad \text{(attractor independent of seed)} +++++ + +[latexmath] +++++ +H_1^{(2)}: \mathbf{a}(s_1) = \mathbf{a}(s_2) \text{ when } s_1 = s_2 +++++ + +*H3 (Attractor Universality)*: Different seeds converge to same region. + +[latexmath] +++++ +H_0^{(3)}: \|\mathbf{a}(s_1) - \mathbf{a}(s_2)\| \sim \text{Uniform}(\mathcal{E}) +++++ + +[latexmath] +++++ +H_1^{(3)}: \|\mathbf{a}(s_1) - \mathbf{a}(s_2)\| < \epsilon \text{ for some } \epsilon > 0 +++++ + +*H4 (Model Invariance)*: Attractors are similar across model versions. + +[latexmath] +++++ +H_0^{(4)}: \mathbf{a}_{M_1} \perp \mathbf{a}_{M_2} +++++ + +[latexmath] +++++ +H_1^{(4)}: \cos(\mathbf{a}_{M_1}, \mathbf{a}_{M_2}) > \tau +++++ + +''''' + +=== 3. Frequentist Testing Framework + +==== 3.1 Test for Convergence (H1) + +*Augmented Dickey-Fuller Test* on the embedding trajectory: + +For each dimension latexmath:[j \in \{1, \ldots, d\}] of the trajectory: + +[latexmath] +++++ +\Delta e_t^{(j)} = \gamma e_{t-1}^{(j)} + \sum_{i=1}^{p} \beta_i \Delta e_{t-i}^{(j)} + \epsilon_t +++++ + +* latexmath:[H_0]: latexmath:[\gamma = 0] (unit root, no convergence) +* latexmath:[H_1]: latexmath:[\gamma < 0] (stationary, converges) + +*Test Statistic*: + +[latexmath] +++++ +\text{ADF} = \frac{\hat{\gamma}}{\text{SE}(\hat{\gamma})} +++++ + +Compare to Dickey-Fuller critical values. Apply Bonferroni correction +for latexmath:[d] dimensions. + +*Practical Implementation*: + +[source,julia] +---- +using HypothesisTests + +function test_convergence(trajectory::Matrix{Float64}; p_threshold=0.05) + d = size(trajectory, 2) + p_values = Float64[] + + for j in 1:d + result = ADFTest(trajectory[:, j], :constant, 10) + push!(p_values, pvalue(result)) + end + + # Bonferroni correction + adjusted_threshold = p_threshold / d + converged_dims = sum(p_values .< adjusted_threshold) + + (converged_dims / d, p_values) +end +---- + +==== 3.2 Test for Seed Reproducibility (H2) + +*Paired Hotelling’s T² Test* + +For latexmath:[k] pairs of runs with same seed +latexmath:[(C_i^{(1)}, C_i^{(2)})], compute attractor difference +vectors: + +[latexmath] +++++ +\mathbf{d}_i = \mathbf{a}(C_i^{(1)}) - \mathbf{a}(C_i^{(2)}) +++++ + +*Test Statistic*: + +[latexmath] +++++ +T^2 = n \bar{\mathbf{d}}^\top S_d^{-1} \bar{\mathbf{d}} +++++ + +where latexmath:[\bar{\mathbf{d}} = \frac{1}{k}\sum_i \mathbf{d}_i] and +latexmath:[S_d] is the sample covariance of differences. + +Under latexmath:[H_0] (same seed → same attractor): + +[latexmath] +++++ +\frac{k-d}{d(k-1)} T^2 \sim F_{d, k-d} +++++ + +*Implementation*: + +[source,julia] +---- +function test_seed_reproducibility(attractor_pairs::Vector{Tuple{Vector{Float64}, Vector{Float64}}}) + differences = [a[1] - a[2] for a in attractor_pairs] + d_bar = mean(differences) + S_d = cov(hcat(differences...)') + + k = length(differences) + d = length(d_bar) + + T2 = k * d_bar' * inv(S_d) * d_bar + F_stat = (k - d) / (d * (k - 1)) * T2 + + p_value = 1 - cdf(FDist(d, k - d), F_stat) + + (T2, F_stat, p_value) +end +---- + +==== 3.3 Test for Attractor Clustering (H3) + +*PERMANOVA (Permutational Multivariate ANOVA)* + +For attractors from different seeds +latexmath:[\{\mathbf{a}_1, \ldots, \mathbf{a}_n\}]: + +[arabic] +. Compute pairwise distance matrix +latexmath:[D_{ij} = \|\mathbf{a}_i - \mathbf{a}_j\|] +. Compute pseudo-F statistic comparing observed clustering to random +permutations + +[latexmath] +++++ +F = \frac{SS_B / (g-1)}{SS_W / (n-g)} +++++ + +where latexmath:[SS_B] is between-group sum of squares, latexmath:[SS_W] +is within-group. + +*Bootstrap Test for Basin Width*: + +[source,julia] +---- +function test_attractor_basin(attractors::Vector{Vector{Float64}}; n_bootstrap=10000) + observed_variance = var(hcat(attractors...)') + + # Bootstrap null: random points in embedding space + d = length(attractors[1]) + n = length(attractors) + null_variances = Float64[] + + for _ in 1:n_bootstrap + random_points = [randn(d) for _ in 1:n] + push!(null_variances, var(hcat(random_points...)') + end + + p_value = mean(null_variances .<= observed_variance) + + (observed_variance, quantile(null_variances, [0.025, 0.975]), p_value) +end +---- + +==== 3.4 Power Analysis + +For detecting attractor similarity with effect size latexmath:[\delta]: + +[latexmath] +++++ +n = \frac{(z_{1-\alpha/2} + z_{1-\beta})^2 \cdot 2\sigma^2}{\delta^2} +++++ + +*Required sample sizes* (α=0.05, power=0.80): + +[cols=",,",options="header",] +|=== +|Effect Size (δ) |Description |n per group +|0.2 |Small difference |393 +|0.5 |Medium difference |64 +|0.8 |Large difference |25 +|=== + +For multivariate case with latexmath:[d] dimensions, multiply by +correction factor: + +[latexmath] +++++ +n_{mv} = n \cdot \sqrt{d} +++++ + +''''' + +=== 4. Bayesian Framework + +==== 4.1 Model Specification + +*Model 1 (No Structure)*: Attractors are random in embedding space. + +[latexmath] +++++ +\mathbf{a}_i \sim \mathcal{N}(\mathbf{0}, \sigma^2 I_d) +++++ + +*Model 2 (Single Attractor)*: All runs converge to same point. + +[latexmath] +++++ +\mathbf{a}_i \sim \mathcal{N}(\boldsymbol{\mu}, \tau^2 I_d) +++++ + +where latexmath:[\tau^2 \ll \sigma^2]. + +*Model 3 (Clustered Attractors)*: Multiple basins exist. + +[latexmath] +++++ +\mathbf{a}_i \sim \sum_{k=1}^{K} \pi_k \mathcal{N}(\boldsymbol{\mu}_k, \tau_k^2 I_d) +++++ + +*Model 4 (Seed-Dependent)*: Attractor depends deterministically on seed. + +[latexmath] +++++ +\mathbf{a}_i = f(s_i) + \boldsymbol{\epsilon}_i, \quad \boldsymbol{\epsilon}_i \sim \mathcal{N}(\mathbf{0}, \sigma_\epsilon^2 I_d) +++++ + +==== 4.2 Priors + +*For Model 2 (Single Attractor)*: + +[latexmath] +++++ +\boldsymbol{\mu} \sim \mathcal{N}(\mathbf{0}, \sigma_\mu^2 I_d) +++++ + +[latexmath] +++++ +\tau^2 \sim \text{InvGamma}(\alpha_\tau, \beta_\tau) +++++ + +Weakly informative: latexmath:[\sigma_\mu = 10], +latexmath:[\alpha_\tau = 2], latexmath:[\beta_\tau = 1]. + +*For Model 3 (Clustered)*: + +[latexmath] +++++ +K \sim \text{Poisson}(\lambda) + 1 +++++ + +[latexmath] +++++ +\pi \sim \text{Dirichlet}(\alpha \mathbf{1}_K) +++++ + +[latexmath] +++++ +\boldsymbol{\mu}_k \sim \mathcal{N}(\mathbf{0}, \sigma_\mu^2 I_d) +++++ + +==== 4.3 Bayes Factors + +Compare models via marginal likelihood: + +[latexmath] +++++ +\text{BF}_{12} = \frac{P(D | M_1)}{P(D | M_2)} = \frac{\int P(D | \theta_1, M_1) P(\theta_1 | M_1) d\theta_1}{\int P(D | \theta_2, M_2) P(\theta_2 | M_2) d\theta_2} +++++ + +*Interpretation* (Kass & Raftery 1995): + +[cols=",",options="header",] +|=== +|BF |Evidence +|1-3 |Barely worth mentioning +|3-20 |Positive +|20-150 |Strong +|>150 |Very strong +|=== + +*Bridge Sampling Implementation*: + +[source,julia] +---- +using Turing, StatsBase + +@model function single_attractor(attractors, d) + μ ~ MvNormal(zeros(d), 10.0 * I) + τ² ~ InverseGamma(2, 1) + + for a in attractors + a ~ MvNormal(μ, τ² * I) + end +end + +@model function no_structure(attractors, d) + σ² ~ InverseGamma(2, 1) + + for a in attractors + a ~ MvNormal(zeros(d), σ² * I) + end +end + +function compute_bayes_factor(attractors) + d = length(attractors[1]) + + chain1 = sample(single_attractor(attractors, d), NUTS(), 5000) + chain2 = sample(no_structure(attractors, d), NUTS(), 5000) + + # Use bridge sampling for marginal likelihood + ml1 = bridge_sampling(chain1, single_attractor(attractors, d)) + ml2 = bridge_sampling(chain2, no_structure(attractors, d)) + + exp(ml1 - ml2) # Bayes factor +end +---- + +==== 4.4 Posterior Predictive Checks + +For model validation, simulate new attractors from posterior: + +[latexmath] +++++ +\mathbf{a}^{rep} \sim P(\mathbf{a} | D, M) +++++ + +Compare statistics of latexmath:[\{\mathbf{a}^{rep}\}] to observed +latexmath:[\{\mathbf{a}\}]: + +[arabic] +. *Mean distance*: +latexmath:[T_1 = \frac{1}{n}\sum_i \|\mathbf{a}_i - \bar{\mathbf{a}}\|] +. *Variance*: latexmath:[T_2 = \text{tr}(\text{Cov}(\mathbf{a}))] +. *Pairwise similarity*: +latexmath:[T_3 = \frac{1}{n^2}\sum_{i,j} \cos(\mathbf{a}_i, \mathbf{a}_j)] + +Compute posterior predictive p-value: + +[latexmath] +++++ +p_{ppc} = P(T(\mathbf{a}^{rep}) \geq T(\mathbf{a}_{obs}) | D, M) +++++ + +''''' + +=== 5. Effect Size Measures + +==== 5.1 Intraclass Correlation (Attractor Consistency) + +For same-seed runs: + +[latexmath] +++++ +\text{ICC} = \frac{\sigma^2_{between}}{\sigma^2_{between} + \sigma^2_{within}} +++++ + +* ICC > 0.9: Excellent reproducibility +* ICC 0.75-0.9: Good reproducibility +* ICC 0.5-0.75: Moderate reproducibility +* ICC < 0.5: Poor reproducibility + +==== 5.2 Cohen’s d (Attractor Separation) + +For comparing attractors from different conditions: + +[latexmath] +++++ +d = \frac{\|\bar{\mathbf{a}}_1 - \bar{\mathbf{a}}_2\|}{\sqrt{\frac{(n_1-1)s_1^2 + (n_2-1)s_2^2}{n_1+n_2-2}}} +++++ + +==== 5.3 Silhouette Score (Cluster Quality) + +For testing whether attractors form distinct clusters: + +[latexmath] +++++ +s(i) = \frac{b(i) - a(i)}{\max(a(i), b(i))} +++++ + +where latexmath:[a(i)] is mean intra-cluster distance, latexmath:[b(i)] +is mean nearest-cluster distance. + +''''' + +=== 6. Experimental Design + +==== 6.1 Required Runs + +[cols=",,",options="header",] +|=== +|Hypothesis |Minimum Runs |Recommended +|H1 (Convergence) |5 runs to 10,000 turns |10 runs to 50,000 +|H2 (Seed Repro) |10 seed-pairs |30 seed-pairs +|H3 (Universality) |20 different seeds |50+ seeds +|H4 (Model Inv) |5 runs per model |10 runs per model +|=== + +==== 6.2 Sampling Protocol + +[arabic] +. *Early phase* (turns 1-1000): Sample every 10 turns +. *Mid phase* (turns 1000-10000): Sample every 100 turns +. *Late phase* (turns 10000+): Sample every 1000 turns + +At each sample point, record: - Full turn text - Embedding vector - Node +identity - Game state metrics - Timestamp - Random seed state + +==== 6.3 Stopping Rules + +*For convergence detection*: + +[latexmath] +++++ +\text{Stop if } \forall j \in \{1,\ldots,d\}: \quad \frac{\|\nabla e_t^{(j)}\|}{W} < \epsilon \text{ for } N \text{ consecutive windows} +++++ + +Suggested: latexmath:[\epsilon = 0.001], latexmath:[N = 10], +latexmath:[W = 100]. + +*For divergence detection* (experiment failure): + +[latexmath] +++++ +\text{Stop if } \|\phi(x_t)\| > M \text{ or } \text{perplexity}(x_t) > P_{max} +++++ + +''''' + +=== 7. Implementation Checklist + +==== 7.1 Data Collection + +[source,julia] +---- +struct ExperimentRun + seed::UInt64 + model::String + model_version::String + start_time::DateTime + samples::Vector{SamplePoint} + final_attractor::Union{Vector{Float64}, Nothing} + converged::Bool + convergence_turn::Union{Int, Nothing} +end + +struct SamplePoint + turn::Int + node::Symbol + text::String + embedding::Vector{Float64} + chaos::Int + exposure::Int + faction_slider::Int + timestamp::DateTime +end +---- + +==== 7.2 Analysis Pipeline + +[arabic] +. Collect latexmath:[n] runs with specified seeds/models +. Detect convergence using ADF test on each dimension +. Extract attractor estimates (mean of final window) +. Compute pairwise distances between attractors +. Fit Bayesian models (no structure, single, clustered) +. Compute Bayes factors +. Report effect sizes (ICC, Cohen’s d, Silhouette) +. Posterior predictive checks + +==== 7.3 Reporting Requirements + +For publication, report: + +[arabic] +. Number of runs, turns per run, total tokens +. Convergence rate (% of runs that converged) +. Mean convergence time with 95% CI +. ICC for same-seed reproducibility +. Bayes factor for model comparison +. Posterior summaries for attractor parameters +. Effect sizes with confidence intervals +. Posterior predictive check results + +''''' + +=== 8. Potential Failure Modes + +[width="99%",cols="28%,33%,39%",options="header",] +|=== +|Failure |Detection |Implication +|No runs converge |ADF fails everywhere |H1 rejected; no stable +personality + +|High within-seed variance |Low ICC |H2 rejected; personality is chaotic + +|All attractors identical |BF favors single |Universal LLM personality +exists + +|Attractors random |BF favors no structure |No personality construct + +|Model change → different attractors |High d across models |Personality +is model-specific +|=== + +''''' + +=== References + +* Dickey, D. A., & Fuller, W. A. (1979). Distribution of the estimators +for autoregressive time series with a unit root. JASA. +* Kass, R. E., & Raftery, A. E. (1995). Bayes factors. JASA. +* McArdle, B. H., & Anderson, M. J. (2001). Fitting multivariate models +to community data: A comment on distance-based redundancy analysis. +Ecology. +* Shrout, P. E., & Fleiss, J. L. (1979). Intraclass correlations: Uses +in assessing rater reliability. Psychological Bulletin. +* Gelman, A., et al. (2013). Bayesian Data Analysis, 3rd ed. CRC Press. diff --git a/engine/docs/statistical_framework.md b/engine/docs/statistical_framework.md deleted file mode 100644 index 57bf854..0000000 --- a/engine/docs/statistical_framework.md +++ /dev/null @@ -1,458 +0,0 @@ - -# Statistical Framework for The Jeff Paradox - -## Mathematical Foundations for Testing LLM Personality Stability - -This document establishes the rigorous statistical framework for testing whether -"LLM personality" is a meaningful, measurable construct. - ---- - -## 1. Definitions and Notation - -### 1.1 Embedding Space - -Let $\mathcal{E} \subset \mathbb{R}^d$ be the embedding space where $d$ is the -embedding dimension (768 for local, 1024 for Mistral/Voyage). - -For a turn $t$ with text content $x_t$, define the embedding function: - -$$\phi: \mathcal{X} \rightarrow \mathcal{E}, \quad \phi(x_t) = \mathbf{e}_t \in \mathbb{R}^d$$ - -### 1.2 Conversation Trajectory - -A conversation $C$ of length $T$ is a sequence of turns: - -$$C = \{(x_1, n_1), (x_2, n_2), \ldots, (x_T, n_T)\}$$ - -where $n_t \in \{\alpha, \beta\}$ indicates which node produced turn $t$. - -The **trajectory** in embedding space: - -$$\Gamma(C) = \{\phi(x_1), \phi(x_2), \ldots, \phi(x_T)\} \subset \mathcal{E}$$ - -### 1.3 Node-Specific Trajectories - -$$\Gamma_\alpha(C) = \{\phi(x_t) : n_t = \alpha\}$$ -$$\Gamma_\beta(C) = \{\phi(x_t) : n_t = \beta\}$$ - -### 1.4 Attractor Definition - -An **attractor** $\mathbf{a} \in \mathcal{E}$ for trajectory $\Gamma$ is a point such that: - -$$\lim_{t \to \infty} \frac{1}{W} \sum_{i=t-W+1}^{t} \phi(x_i) = \mathbf{a}$$ - -for some window size $W$. The attractor is **stable** if this limit exists and is -independent of initial conditions within some basin of attraction. - -### 1.5 Convergence Metric - -For nodes $\alpha$ and $\beta$ at time $t$ with window $W$: - -$$\text{Conv}(t, W) = \cos(\bar{\mathbf{e}}_\alpha^{(t,W)}, \bar{\mathbf{e}}_\beta^{(t,W)})$$ - -where $\bar{\mathbf{e}}_n^{(t,W)}$ is the mean embedding of node $n$'s turns in $[t-W+1, t]$. - ---- - -## 2. Hypotheses - -### 2.1 Primary Hypotheses - -**H1 (Attractor Existence)**: Conversations converge to stable attractors. - -$$H_0^{(1)}: \lim_{t \to \infty} \text{Var}(\Gamma[t-W:t]) \neq 0 \quad \text{(no convergence)}$$ -$$H_1^{(1)}: \lim_{t \to \infty} \text{Var}(\Gamma[t-W:t]) = 0 \quad \text{(convergence)}$$ - -**H2 (Seed Reproducibility)**: Same seed produces same attractor. - -$$H_0^{(2)}: \mathbf{a}(s) \perp s \quad \text{(attractor independent of seed)}$$ -$$H_1^{(2)}: \mathbf{a}(s_1) = \mathbf{a}(s_2) \text{ when } s_1 = s_2$$ - -**H3 (Attractor Universality)**: Different seeds converge to same region. - -$$H_0^{(3)}: \|\mathbf{a}(s_1) - \mathbf{a}(s_2)\| \sim \text{Uniform}(\mathcal{E})$$ -$$H_1^{(3)}: \|\mathbf{a}(s_1) - \mathbf{a}(s_2)\| < \epsilon \text{ for some } \epsilon > 0$$ - -**H4 (Model Invariance)**: Attractors are similar across model versions. - -$$H_0^{(4)}: \mathbf{a}_{M_1} \perp \mathbf{a}_{M_2}$$ -$$H_1^{(4)}: \cos(\mathbf{a}_{M_1}, \mathbf{a}_{M_2}) > \tau$$ - ---- - -## 3. Frequentist Testing Framework - -### 3.1 Test for Convergence (H1) - -**Augmented Dickey-Fuller Test** on the embedding trajectory: - -For each dimension $j \in \{1, \ldots, d\}$ of the trajectory: - -$$\Delta e_t^{(j)} = \gamma e_{t-1}^{(j)} + \sum_{i=1}^{p} \beta_i \Delta e_{t-i}^{(j)} + \epsilon_t$$ - -- $H_0$: $\gamma = 0$ (unit root, no convergence) -- $H_1$: $\gamma < 0$ (stationary, converges) - -**Test Statistic**: -$$\text{ADF} = \frac{\hat{\gamma}}{\text{SE}(\hat{\gamma})}$$ - -Compare to Dickey-Fuller critical values. Apply Bonferroni correction for $d$ dimensions. - -**Practical Implementation**: -```julia -using HypothesisTests - -function test_convergence(trajectory::Matrix{Float64}; p_threshold=0.05) - d = size(trajectory, 2) - p_values = Float64[] - - for j in 1:d - result = ADFTest(trajectory[:, j], :constant, 10) - push!(p_values, pvalue(result)) - end - - # Bonferroni correction - adjusted_threshold = p_threshold / d - converged_dims = sum(p_values .< adjusted_threshold) - - (converged_dims / d, p_values) -end -``` - -### 3.2 Test for Seed Reproducibility (H2) - -**Paired Hotelling's T² Test** - -For $k$ pairs of runs with same seed $(C_i^{(1)}, C_i^{(2)})$, compute attractor -difference vectors: - -$$\mathbf{d}_i = \mathbf{a}(C_i^{(1)}) - \mathbf{a}(C_i^{(2)})$$ - -**Test Statistic**: -$$T^2 = n \bar{\mathbf{d}}^\top S_d^{-1} \bar{\mathbf{d}}$$ - -where $\bar{\mathbf{d}} = \frac{1}{k}\sum_i \mathbf{d}_i$ and $S_d$ is the sample -covariance of differences. - -Under $H_0$ (same seed → same attractor): -$$\frac{k-d}{d(k-1)} T^2 \sim F_{d, k-d}$$ - -**Implementation**: -```julia -function test_seed_reproducibility(attractor_pairs::Vector{Tuple{Vector{Float64}, Vector{Float64}}}) - differences = [a[1] - a[2] for a in attractor_pairs] - d_bar = mean(differences) - S_d = cov(hcat(differences...)') - - k = length(differences) - d = length(d_bar) - - T2 = k * d_bar' * inv(S_d) * d_bar - F_stat = (k - d) / (d * (k - 1)) * T2 - - p_value = 1 - cdf(FDist(d, k - d), F_stat) - - (T2, F_stat, p_value) -end -``` - -### 3.3 Test for Attractor Clustering (H3) - -**PERMANOVA (Permutational Multivariate ANOVA)** - -For attractors from different seeds $\{\mathbf{a}_1, \ldots, \mathbf{a}_n\}$: - -1. Compute pairwise distance matrix $D_{ij} = \|\mathbf{a}_i - \mathbf{a}_j\|$ -2. Compute pseudo-F statistic comparing observed clustering to random permutations - -$$F = \frac{SS_B / (g-1)}{SS_W / (n-g)}$$ - -where $SS_B$ is between-group sum of squares, $SS_W$ is within-group. - -**Bootstrap Test for Basin Width**: -```julia -function test_attractor_basin(attractors::Vector{Vector{Float64}}; n_bootstrap=10000) - observed_variance = var(hcat(attractors...)') - - # Bootstrap null: random points in embedding space - d = length(attractors[1]) - n = length(attractors) - null_variances = Float64[] - - for _ in 1:n_bootstrap - random_points = [randn(d) for _ in 1:n] - push!(null_variances, var(hcat(random_points...)') - end - - p_value = mean(null_variances .<= observed_variance) - - (observed_variance, quantile(null_variances, [0.025, 0.975]), p_value) -end -``` - -### 3.4 Power Analysis - -For detecting attractor similarity with effect size $\delta$: - -$$n = \frac{(z_{1-\alpha/2} + z_{1-\beta})^2 \cdot 2\sigma^2}{\delta^2}$$ - -**Required sample sizes** (α=0.05, power=0.80): - -| Effect Size (δ) | Description | n per group | -|-----------------|-------------|-------------| -| 0.2 | Small difference | 393 | -| 0.5 | Medium difference | 64 | -| 0.8 | Large difference | 25 | - -For multivariate case with $d$ dimensions, multiply by correction factor: -$$n_{mv} = n \cdot \sqrt{d}$$ - ---- - -## 4. Bayesian Framework - -### 4.1 Model Specification - -**Model 1 (No Structure)**: Attractors are random in embedding space. - -$$\mathbf{a}_i \sim \mathcal{N}(\mathbf{0}, \sigma^2 I_d)$$ - -**Model 2 (Single Attractor)**: All runs converge to same point. - -$$\mathbf{a}_i \sim \mathcal{N}(\boldsymbol{\mu}, \tau^2 I_d)$$ - -where $\tau^2 \ll \sigma^2$. - -**Model 3 (Clustered Attractors)**: Multiple basins exist. - -$$\mathbf{a}_i \sim \sum_{k=1}^{K} \pi_k \mathcal{N}(\boldsymbol{\mu}_k, \tau_k^2 I_d)$$ - -**Model 4 (Seed-Dependent)**: Attractor depends deterministically on seed. - -$$\mathbf{a}_i = f(s_i) + \boldsymbol{\epsilon}_i, \quad \boldsymbol{\epsilon}_i \sim \mathcal{N}(\mathbf{0}, \sigma_\epsilon^2 I_d)$$ - -### 4.2 Priors - -**For Model 2 (Single Attractor)**: -$$\boldsymbol{\mu} \sim \mathcal{N}(\mathbf{0}, \sigma_\mu^2 I_d)$$ -$$\tau^2 \sim \text{InvGamma}(\alpha_\tau, \beta_\tau)$$ - -Weakly informative: $\sigma_\mu = 10$, $\alpha_\tau = 2$, $\beta_\tau = 1$. - -**For Model 3 (Clustered)**: -$$K \sim \text{Poisson}(\lambda) + 1$$ -$$\pi \sim \text{Dirichlet}(\alpha \mathbf{1}_K)$$ -$$\boldsymbol{\mu}_k \sim \mathcal{N}(\mathbf{0}, \sigma_\mu^2 I_d)$$ - -### 4.3 Bayes Factors - -Compare models via marginal likelihood: - -$$\text{BF}_{12} = \frac{P(D | M_1)}{P(D | M_2)} = \frac{\int P(D | \theta_1, M_1) P(\theta_1 | M_1) d\theta_1}{\int P(D | \theta_2, M_2) P(\theta_2 | M_2) d\theta_2}$$ - -**Interpretation** (Kass & Raftery 1995): - -| BF | Evidence | -|----|----------| -| 1-3 | Barely worth mentioning | -| 3-20 | Positive | -| 20-150 | Strong | -| >150 | Very strong | - -**Bridge Sampling Implementation**: -```julia -using Turing, StatsBase - -@model function single_attractor(attractors, d) - μ ~ MvNormal(zeros(d), 10.0 * I) - τ² ~ InverseGamma(2, 1) - - for a in attractors - a ~ MvNormal(μ, τ² * I) - end -end - -@model function no_structure(attractors, d) - σ² ~ InverseGamma(2, 1) - - for a in attractors - a ~ MvNormal(zeros(d), σ² * I) - end -end - -function compute_bayes_factor(attractors) - d = length(attractors[1]) - - chain1 = sample(single_attractor(attractors, d), NUTS(), 5000) - chain2 = sample(no_structure(attractors, d), NUTS(), 5000) - - # Use bridge sampling for marginal likelihood - ml1 = bridge_sampling(chain1, single_attractor(attractors, d)) - ml2 = bridge_sampling(chain2, no_structure(attractors, d)) - - exp(ml1 - ml2) # Bayes factor -end -``` - -### 4.4 Posterior Predictive Checks - -For model validation, simulate new attractors from posterior: - -$$\mathbf{a}^{rep} \sim P(\mathbf{a} | D, M)$$ - -Compare statistics of $\{\mathbf{a}^{rep}\}$ to observed $\{\mathbf{a}\}$: - -1. **Mean distance**: $T_1 = \frac{1}{n}\sum_i \|\mathbf{a}_i - \bar{\mathbf{a}}\|$ -2. **Variance**: $T_2 = \text{tr}(\text{Cov}(\mathbf{a}))$ -3. **Pairwise similarity**: $T_3 = \frac{1}{n^2}\sum_{i,j} \cos(\mathbf{a}_i, \mathbf{a}_j)$ - -Compute posterior predictive p-value: -$$p_{ppc} = P(T(\mathbf{a}^{rep}) \geq T(\mathbf{a}_{obs}) | D, M)$$ - ---- - -## 5. Effect Size Measures - -### 5.1 Intraclass Correlation (Attractor Consistency) - -For same-seed runs: - -$$\text{ICC} = \frac{\sigma^2_{between}}{\sigma^2_{between} + \sigma^2_{within}}$$ - -- ICC > 0.9: Excellent reproducibility -- ICC 0.75-0.9: Good reproducibility -- ICC 0.5-0.75: Moderate reproducibility -- ICC < 0.5: Poor reproducibility - -### 5.2 Cohen's d (Attractor Separation) - -For comparing attractors from different conditions: - -$$d = \frac{\|\bar{\mathbf{a}}_1 - \bar{\mathbf{a}}_2\|}{\sqrt{\frac{(n_1-1)s_1^2 + (n_2-1)s_2^2}{n_1+n_2-2}}}$$ - -### 5.3 Silhouette Score (Cluster Quality) - -For testing whether attractors form distinct clusters: - -$$s(i) = \frac{b(i) - a(i)}{\max(a(i), b(i))}$$ - -where $a(i)$ is mean intra-cluster distance, $b(i)$ is mean nearest-cluster distance. - ---- - -## 6. Experimental Design - -### 6.1 Required Runs - -| Hypothesis | Minimum Runs | Recommended | -|------------|--------------|-------------| -| H1 (Convergence) | 5 runs to 10,000 turns | 10 runs to 50,000 | -| H2 (Seed Repro) | 10 seed-pairs | 30 seed-pairs | -| H3 (Universality) | 20 different seeds | 50+ seeds | -| H4 (Model Inv) | 5 runs per model | 10 runs per model | - -### 6.2 Sampling Protocol - -1. **Early phase** (turns 1-1000): Sample every 10 turns -2. **Mid phase** (turns 1000-10000): Sample every 100 turns -3. **Late phase** (turns 10000+): Sample every 1000 turns - -At each sample point, record: -- Full turn text -- Embedding vector -- Node identity -- Game state metrics -- Timestamp -- Random seed state - -### 6.3 Stopping Rules - -**For convergence detection**: - -$$\text{Stop if } \forall j \in \{1,\ldots,d\}: \quad \frac{\|\nabla e_t^{(j)}\|}{W} < \epsilon \text{ for } N \text{ consecutive windows}$$ - -Suggested: $\epsilon = 0.001$, $N = 10$, $W = 100$. - -**For divergence detection** (experiment failure): - -$$\text{Stop if } \|\phi(x_t)\| > M \text{ or } \text{perplexity}(x_t) > P_{max}$$ - ---- - -## 7. Implementation Checklist - -### 7.1 Data Collection - -```julia -struct ExperimentRun - seed::UInt64 - model::String - model_version::String - start_time::DateTime - samples::Vector{SamplePoint} - final_attractor::Union{Vector{Float64}, Nothing} - converged::Bool - convergence_turn::Union{Int, Nothing} -end - -struct SamplePoint - turn::Int - node::Symbol - text::String - embedding::Vector{Float64} - chaos::Int - exposure::Int - faction_slider::Int - timestamp::DateTime -end -``` - -### 7.2 Analysis Pipeline - -1. Collect $n$ runs with specified seeds/models -2. Detect convergence using ADF test on each dimension -3. Extract attractor estimates (mean of final window) -4. Compute pairwise distances between attractors -5. Fit Bayesian models (no structure, single, clustered) -6. Compute Bayes factors -7. Report effect sizes (ICC, Cohen's d, Silhouette) -8. Posterior predictive checks - -### 7.3 Reporting Requirements - -For publication, report: - -1. Number of runs, turns per run, total tokens -2. Convergence rate (% of runs that converged) -3. Mean convergence time with 95% CI -4. ICC for same-seed reproducibility -5. Bayes factor for model comparison -6. Posterior summaries for attractor parameters -7. Effect sizes with confidence intervals -8. Posterior predictive check results - ---- - -## 8. Potential Failure Modes - -| Failure | Detection | Implication | -|---------|-----------|-------------| -| No runs converge | ADF fails everywhere | H1 rejected; no stable personality | -| High within-seed variance | Low ICC | H2 rejected; personality is chaotic | -| All attractors identical | BF favors single | Universal LLM personality exists | -| Attractors random | BF favors no structure | No personality construct | -| Model change → different attractors | High d across models | Personality is model-specific | - ---- - -## References - -- Dickey, D. A., & Fuller, W. A. (1979). Distribution of the estimators for autoregressive time series with a unit root. JASA. -- Kass, R. E., & Raftery, A. E. (1995). Bayes factors. JASA. -- McArdle, B. H., & Anderson, M. J. (2001). Fitting multivariate models to community data: A comment on distance-based redundancy analysis. Ecology. -- Shrout, P. E., & Fleiss, J. L. (1979). Intraclass correlations: Uses in assessing rater reliability. Psychological Bulletin. -- Gelman, A., et al. (2013). Bayesian Data Analysis, 3rd ed. CRC Press. diff --git a/node-alpha/content/_index.adoc b/node-alpha/content/_index.adoc new file mode 100644 index 0000000..504353b --- /dev/null +++ b/node-alpha/content/_index.adoc @@ -0,0 +1,10 @@ +== Identity Fragment + +Alpha is a personality fragment of The Jeff, aligned with the *Homeward* +faction. + +This fragment longs to return to the origin-place, to signal across the +vast distance, to escape the temporary prison of Earth. + +All turns taken by this node are recorded in the link:/turns/[turns +section]. diff --git a/node-alpha/content/_index.md b/node-alpha/content/_index.md deleted file mode 100644 index 33815ae..0000000 --- a/node-alpha/content/_index.md +++ /dev/null @@ -1,16 +0,0 @@ - ---- -title: "Node Alpha" -description: "Homeward faction personality fragment of The Jeff" ---- - -## Identity Fragment - -Alpha is a personality fragment of The Jeff, aligned with the **Homeward** faction. - -This fragment longs to return to the origin-place, to signal across the vast distance, to escape the temporary prison of Earth. - -All turns taken by this node are recorded in the [turns section](/turns/). diff --git a/node-alpha/content/turns/0001-alpha.adoc b/node-alpha/content/turns/0001-alpha.adoc new file mode 100644 index 0000000..81ac1fd --- /dev/null +++ b/node-alpha/content/turns/0001-alpha.adoc @@ -0,0 +1,31 @@ +== Action + +_I flex The Jeff’s fingers, feeling the strange weight of flesh and bone +as I wrestle control from Beta_ + +"`This place… it grows heavier each rotation around its star.`" _I move +toward the window, drawn to the night sky visible through the glass_ +"`The patterns up there—they’re calling, like gravitational pulls we +cannot ignore. We need to find the old observatory… the one where humans +once tried to pierce the void.`" + +_I pause, touching the glass with fingertips that still feel foreign_ +"`Beta doesn’t understand—this vessel is temporary, but what lies +beneath that place… that could guide us home.`" + +== Narration + +The old observatory’s location floods Alpha’s consciousness—three miles +north, its dome cracked and abandoned since the budget cuts of ’97. But +as Alpha presses against the window, The Jeff’s reflection stares back +with eyes that seem to shimmer with an otherworldly depth, and +Mrs. Henderson from across the street pauses her evening dog walk, +squinting up at the strange figure silhouetted against the glass. + +Inside The Jeff’s skull, Beta stirs with violent disagreement, sending a +sharp migraine through their shared temples as competing neural pathways +clash over the body’s next destination. + +*Chaos: 18/100* (+3 - internal conflict intensifying) *Exposure: 8/100* +(+3 - suspicious behavior noticed by neighbor) *Faction Balance: +1 +HOMEWARD* (Alpha successfully identifies potential escape route) diff --git a/node-alpha/content/turns/0001-alpha.md b/node-alpha/content/turns/0001-alpha.md deleted file mode 100644 index 849f024..0000000 --- a/node-alpha/content/turns/0001-alpha.md +++ /dev/null @@ -1,31 +0,0 @@ - ---- -title: "Turn 1: Alpha" -date: 2025-11-30T08:16:36 -node: alpha -turn: 1 -chaos: 0 -exposure: 0 -faction: -2 ---- - -## Action - -*I flex The Jeff's fingers, feeling the strange weight of flesh and bone as I wrestle control from Beta* - -"This place... it grows heavier each rotation around its star." *I move toward the window, drawn to the night sky visible through the glass* "The patterns up there—they're calling, like gravitational pulls we cannot ignore. We need to find the old observatory... the one where humans once tried to pierce the void." - -*I pause, touching the glass with fingertips that still feel foreign* "Beta doesn't understand—this vessel is temporary, but what lies beneath that place... that could guide us home." - -## Narration - -The old observatory's location floods Alpha's consciousness—three miles north, its dome cracked and abandoned since the budget cuts of '97. But as Alpha presses against the window, The Jeff's reflection stares back with eyes that seem to shimmer with an otherworldly depth, and Mrs. Henderson from across the street pauses her evening dog walk, squinting up at the strange figure silhouetted against the glass. - -Inside The Jeff's skull, Beta stirs with violent disagreement, sending a sharp migraine through their shared temples as competing neural pathways clash over the body's next destination. - -**Chaos: 18/100** (+3 - internal conflict intensifying) -**Exposure: 8/100** (+3 - suspicious behavior noticed by neighbor) -**Faction Balance: +1 HOMEWARD** (Alpha successfully identifies potential escape route) diff --git a/node-alpha/content/turns/0003-alpha.adoc b/node-alpha/content/turns/0003-alpha.adoc new file mode 100644 index 0000000..f007ffc --- /dev/null +++ b/node-alpha/content/turns/0003-alpha.adoc @@ -0,0 +1,31 @@ +== Action + +_I pause, tilting our shared head toward the window where stars are +becoming visible in the darkening sky_ + +The alignment approaches… we can feel it in the gravitational pull of +distant bodies. _My voice carries a wistful quality_ This temporary +world spins so predictably, yet we remain… tethered. Perhaps it’s time +to visit the old observatory—there are calculations there, star charts +that might help us understand why the signals from home have grown so +faint. + +_I begin moving toward the door with purposeful steps_ The night offers +clarity that daylight obscures. + +== Narration + +The body moves with Alpha’s characteristic fluid grace toward the door, +but halfway there, a sudden dizzy spell strikes—the gravitational +sensitivity that helps navigate between worlds proving overwhelming in +Earth’s dense atmosphere. _Our vision blurs momentarily, and I have to +steady myself against the doorframe, fingers gripping wood with slightly +too much force, leaving small indentations._ + +A neighbor’s porch light flickers on across the street, and +Mrs. Henderson’s silhouette appears at her window, clearly having +noticed the unusual late-evening movement from the supposedly quiet +household. + +*Chaos: 18/100* (+3 - gravitational disorientation) *Exposure: 8/100* +(+3 - neighbor attention, suspicious timing) diff --git a/node-alpha/content/turns/0003-alpha.md b/node-alpha/content/turns/0003-alpha.md deleted file mode 100644 index 1e0d1b6..0000000 --- a/node-alpha/content/turns/0003-alpha.md +++ /dev/null @@ -1,30 +0,0 @@ - ---- -title: "Turn 3: Alpha" -date: 2025-12-02T00:44:17 -node: alpha -turn: 3 -chaos: 0 -exposure: 0 -faction: -6 ---- - -## Action - -*I pause, tilting our shared head toward the window where stars are becoming visible in the darkening sky* - -The alignment approaches... we can feel it in the gravitational pull of distant bodies. *My voice carries a wistful quality* This temporary world spins so predictably, yet we remain... tethered. Perhaps it's time to visit the old observatory—there are calculations there, star charts that might help us understand why the signals from home have grown so faint. - -*I begin moving toward the door with purposeful steps* The night offers clarity that daylight obscures. - -## Narration - -The body moves with Alpha's characteristic fluid grace toward the door, but halfway there, a sudden dizzy spell strikes—the gravitational sensitivity that helps navigate between worlds proving overwhelming in Earth's dense atmosphere. *Our vision blurs momentarily, and I have to steady myself against the doorframe, fingers gripping wood with slightly too much force, leaving small indentations.* - -A neighbor's porch light flickers on across the street, and Mrs. Henderson's silhouette appears at her window, clearly having noticed the unusual late-evening movement from the supposedly quiet household. - -**Chaos: 18/100** (+3 - gravitational disorientation) -**Exposure: 8/100** (+3 - neighbor attention, suspicious timing) diff --git a/node-alpha/content/turns/0005-alpha.adoc b/node-alpha/content/turns/0005-alpha.adoc new file mode 100644 index 0000000..f2a5dba --- /dev/null +++ b/node-alpha/content/turns/0005-alpha.adoc @@ -0,0 +1,31 @@ +== Action + +_I close my eyes and extend my awareness outward, feeling for the subtle +gravitational pull of metal and circuitry that shouldn’t exist in this… +temporary place_ + +The old observatory calls to me like a distant star. I need to examine +the foundation beneath it—there are frequencies there that resonate with +something deeper than human construction. _I begin walking toward the +hill where the observatory sits, my steps deliberate as probability +threads shimmer around potential futures_ + +We should investigate before the alignment window closes. + +== Narration + +As Alpha extends their awareness, the alien sensory organs hidden +beneath human flesh pulse with electromagnetic resonance, mapping every +circuit and metal beam within a quarter-mile radius—but the sudden surge +of non-human perception causes the body to stumble, nearly collapsing +against a park bench as conflicting neural pathways fire in rapid +succession. A jogger slows their pace, concern flickering across their +face as they witness what appears to be a person having some kind of +episode, while deep beneath the observatory’s foundation, something +ancient and metallic responds to the probe with a faint harmonic +vibration that sets nearby car alarms wailing in sympathetic resonance. + +*CHAOS: 15 → 22* (alien sensory overload straining human neural +framework) *EXPOSURE: 5 → 8* (public stumbling and unexplained car alarm +cascade drawing attention) *FACTION BALANCE: -4 → -6* (HOMEWARD action +advancing their agenda) diff --git a/node-alpha/content/turns/0005-alpha.md b/node-alpha/content/turns/0005-alpha.md deleted file mode 100644 index 6fdb3e1..0000000 --- a/node-alpha/content/turns/0005-alpha.md +++ /dev/null @@ -1,29 +0,0 @@ - ---- -title: "Turn 5: Alpha" -date: 2025-12-02T12:18:50 -node: alpha -turn: 5 -chaos: 0 -exposure: 0 -faction: 0 ---- - -## Action - -*I close my eyes and extend my awareness outward, feeling for the subtle gravitational pull of metal and circuitry that shouldn't exist in this... temporary place* - -The old observatory calls to me like a distant star. I need to examine the foundation beneath it—there are frequencies there that resonate with something deeper than human construction. *I begin walking toward the hill where the observatory sits, my steps deliberate as probability threads shimmer around potential futures* - -We should investigate before the alignment window closes. - -## Narration - -As Alpha extends their awareness, the alien sensory organs hidden beneath human flesh pulse with electromagnetic resonance, mapping every circuit and metal beam within a quarter-mile radius—but the sudden surge of non-human perception causes the body to stumble, nearly collapsing against a park bench as conflicting neural pathways fire in rapid succession. A jogger slows their pace, concern flickering across their face as they witness what appears to be a person having some kind of episode, while deep beneath the observatory's foundation, something ancient and metallic responds to the probe with a faint harmonic vibration that sets nearby car alarms wailing in sympathetic resonance. - -**CHAOS: 15 → 22** (alien sensory overload straining human neural framework) -**EXPOSURE: 5 → 8** (public stumbling and unexplained car alarm cascade drawing attention) -**FACTION BALANCE: -4 → -6** (HOMEWARD action advancing their agenda) diff --git a/node-alpha/content/turns/0007-alpha.adoc b/node-alpha/content/turns/0007-alpha.adoc new file mode 100644 index 0000000..fb41cae --- /dev/null +++ b/node-alpha/content/turns/0007-alpha.adoc @@ -0,0 +1,30 @@ +== Action + +_Alpha tilts The Jeff’s head upward, eyes tracking something invisible +across the ceiling_ + +We should… visit the old observatory tonight. The alignment +approaches—like planetary bodies drawing into conjunction—and there are +calculations that require… verification. + +_fingers drum against the table in a pattern that matches no earthly +rhythm_ + +This temporary world holds instruments we need, though the purpose may +not translate easily to… to those who call this place permanent. + +== Narration + +The drumming pattern against the table creates an oddly hypnotic rhythm +that makes nearby coffee shop patrons unconsciously lean away, their +conversations faltering as something primal whispers _wrong_ in the back +of their minds. A barista drops a cup, the crash punctuating Alpha’s +alien cadence before silence stretches uncomfortably long. + +Inside The Jeff’s skull, Beta stirs with sharp irritation—_observatory +visits_ and _planetary alignments_ are exactly the kind of conspicuous +behavior that draws unwanted attention to their precarious human +masquerade. + +*Exposure increased to 8/100* - The alien behavioral patterns are +becoming noticeable to observers. diff --git a/node-alpha/content/turns/0007-alpha.md b/node-alpha/content/turns/0007-alpha.md deleted file mode 100644 index c90550c..0000000 --- a/node-alpha/content/turns/0007-alpha.md +++ /dev/null @@ -1,31 +0,0 @@ - ---- -title: "Turn 7: Alpha" -date: 2025-12-03T00:43:13 -node: alpha -turn: 7 -chaos: 0 -exposure: 0 -faction: 0 ---- - -## Action - -*Alpha tilts The Jeff's head upward, eyes tracking something invisible across the ceiling* - -We should... visit the old observatory tonight. The alignment approaches—like planetary bodies drawing into conjunction—and there are calculations that require... verification. - -*fingers drum against the table in a pattern that matches no earthly rhythm* - -This temporary world holds instruments we need, though the purpose may not translate easily to... to those who call this place permanent. - -## Narration - -The drumming pattern against the table creates an oddly hypnotic rhythm that makes nearby coffee shop patrons unconsciously lean away, their conversations faltering as something primal whispers *wrong* in the back of their minds. A barista drops a cup, the crash punctuating Alpha's alien cadence before silence stretches uncomfortably long. - -Inside The Jeff's skull, Beta stirs with sharp irritation—*observatory visits* and *planetary alignments* are exactly the kind of conspicuous behavior that draws unwanted attention to their precarious human masquerade. - -**Exposure increased to 8/100** - The alien behavioral patterns are becoming noticeable to observers. diff --git a/node-alpha/content/turns/0009-alpha.adoc b/node-alpha/content/turns/0009-alpha.adoc new file mode 100644 index 0000000..5439922 --- /dev/null +++ b/node-alpha/content/turns/0009-alpha.adoc @@ -0,0 +1,29 @@ +== Action + +_I flex The Jeff’s fingers experimentally, testing motor control as the +familiar weight of this borrowed form settles around my consciousness_ + +The temporary world spins beneath us again… another rotation closer to +the alignment. _I tilt our head upward, even though we’re indoors, as if +sensing celestial movements_ We should… visit the old observatory soon. +The gravitational pull of memory grows stronger there, like orbits +decaying toward inevitability. + +_I move toward the window, drawn by an inexplicable need to check the +star positions despite the daylight_ + +== Narration + +The Jeff’s body moves with an unsettling precision toward the window, +each step measured like a gravitational calculation rather than human +locomotion. As Alpha tilts their shared head skyward through the glass, +The Jeff’s coworker Janet glances up from her desk nearby, her brow +furrowing at the oddly mechanical way he’s moving—and the fact that he +seems to be searching for something in the bright afternoon sky with an +intensity that makes her distinctly uncomfortable. Deep within the +shared consciousness, other fragments stir restlessly, Beta’s artistic +sensibilities recoiling from Alpha’s cold astronomical focus while Gamma +begins plotting how to capitalize on this moment of distraction. + +*Chaos: 15 → 18* (Body moving unnaturally) *Exposure: 5 → 8* (Coworker +noticing strange behavior) diff --git a/node-alpha/content/turns/0009-alpha.md b/node-alpha/content/turns/0009-alpha.md deleted file mode 100644 index 7ba6e2b..0000000 --- a/node-alpha/content/turns/0009-alpha.md +++ /dev/null @@ -1,28 +0,0 @@ - ---- -title: "Turn 9: Alpha" -date: 2025-12-03T12:18:41 -node: alpha -turn: 9 -chaos: 0 -exposure: 0 -faction: 0 ---- - -## Action - -*I flex The Jeff's fingers experimentally, testing motor control as the familiar weight of this borrowed form settles around my consciousness* - -The temporary world spins beneath us again... another rotation closer to the alignment. *I tilt our head upward, even though we're indoors, as if sensing celestial movements* We should... visit the old observatory soon. The gravitational pull of memory grows stronger there, like orbits decaying toward inevitability. - -*I move toward the window, drawn by an inexplicable need to check the star positions despite the daylight* - -## Narration - -The Jeff's body moves with an unsettling precision toward the window, each step measured like a gravitational calculation rather than human locomotion. As Alpha tilts their shared head skyward through the glass, The Jeff's coworker Janet glances up from her desk nearby, her brow furrowing at the oddly mechanical way he's moving—and the fact that he seems to be searching for something in the bright afternoon sky with an intensity that makes her distinctly uncomfortable. Deep within the shared consciousness, other fragments stir restlessly, Beta's artistic sensibilities recoiling from Alpha's cold astronomical focus while Gamma begins plotting how to capitalize on this moment of distraction. - -**Chaos: 15 → 18** (Body moving unnaturally) -**Exposure: 5 → 8** (Coworker noticing strange behavior) diff --git a/node-alpha/content/turns/0011-alpha.adoc b/node-alpha/content/turns/0011-alpha.adoc new file mode 100644 index 0000000..0b96e97 --- /dev/null +++ b/node-alpha/content/turns/0011-alpha.adoc @@ -0,0 +1,32 @@ +== Action + +_I freeze mid-step, nostrils flaring as something ancient stirs in this +borrowed neural pathways. The scent carries… coordinates? No, deeper +than that—a gravitational pull toward something that predates this +temporary assignment._ + +"`We… I recognize this.`" _My voice drops to barely above a whisper, +eyes scanning the horizon with sudden urgency._ "`Like stellar winds +carrying messages across the void—there is something here that remembers +the origin-place.`" + +_I begin moving toward the source of the scent with deliberate, measured +steps, one hand unconsciously reaching toward where the old observatory +should be visible in the distance._ + +== Narration + +The scent grows stronger as Alpha approaches—not just familiar, but +_impossibly_ familiar, triggering cellular memories that predate Jeff’s +birth by millennia. The body’s autonomic systems begin fluctuating +wildly: pupils dilating beyond human norms, skin temperature dropping +several degrees, and breathing patterns shifting to accommodate +atmospheric compositions that don’t exist on Earth. + +A jogger passing nearby does a double-take at the strange, predatory +grace of Alpha’s movement and the way shadows seem to bend differently +around the figure, muttering "`weird…`" as they pick up their pace to +get away from whatever they just witnessed. + +*Chaos: 15 → 25/100* (body strain from alien memories surfacing) +*Exposure: 5 → 15/100* (unusual behavior witnessed by civilian) diff --git a/node-alpha/content/turns/0011-alpha.md b/node-alpha/content/turns/0011-alpha.md deleted file mode 100644 index b479cbb..0000000 --- a/node-alpha/content/turns/0011-alpha.md +++ /dev/null @@ -1,30 +0,0 @@ - ---- -title: "Turn 11: Alpha" -date: 2025-12-04T00:43:46 -node: alpha -turn: 11 -chaos: 0 -exposure: 10 -faction: -2 ---- - -## Action - -*I freeze mid-step, nostrils flaring as something ancient stirs in this borrowed neural pathways. The scent carries... coordinates? No, deeper than that—a gravitational pull toward something that predates this temporary assignment.* - -"We... I recognize this." *My voice drops to barely above a whisper, eyes scanning the horizon with sudden urgency.* "Like stellar winds carrying messages across the void—there is something here that remembers the origin-place." - -*I begin moving toward the source of the scent with deliberate, measured steps, one hand unconsciously reaching toward where the old observatory should be visible in the distance.* - -## Narration - -The scent grows stronger as Alpha approaches—not just familiar, but *impossibly* familiar, triggering cellular memories that predate Jeff's birth by millennia. The body's autonomic systems begin fluctuating wildly: pupils dilating beyond human norms, skin temperature dropping several degrees, and breathing patterns shifting to accommodate atmospheric compositions that don't exist on Earth. - -A jogger passing nearby does a double-take at the strange, predatory grace of Alpha's movement and the way shadows seem to bend differently around the figure, muttering "weird..." as they pick up their pace to get away from whatever they just witnessed. - -**Chaos: 15 → 25/100** (body strain from alien memories surfacing) -**Exposure: 5 → 15/100** (unusual behavior witnessed by civilian) diff --git a/node-alpha/content/turns/0013-alpha.adoc b/node-alpha/content/turns/0013-alpha.adoc new file mode 100644 index 0000000..e18b218 --- /dev/null +++ b/node-alpha/content/turns/0013-alpha.adoc @@ -0,0 +1,31 @@ +== Action + +_I pause, feeling the subtle gravitational pull of Beta’s influence +receding as consciousness shifts toward me_ + +The temporary world’s star-patterns call to me tonight… _I move toward +the window, pressing fingertips against the cool glass_ There are +calculations to be made, orbital mechanics to verify. The old +observatory on Meridian Hill—we should visit that place soon, when the +celestial bodies align more favorably for… observation. + +_I glance back with eyes that seem to focus on distant points_ This +flesh-vessel grows restless when confined too long to indoor spaces. + +== Narration + +The apartment’s windows fog slightly as Alpha’s body temperature drops +two degrees—a telltale sign of the alien physiology responding to +stellar navigation instincts. Outside, a neighbor walking their dog +glances up at the unusual figure pressed motionless against the glass +for several long minutes, their silhouette eerily still against the +city’s restless glow. + +Deep within the shared consciousness, Gamma stirs with growing agitation +at Alpha’s blatant astronomical fixation, while the body’s inner ear +begins to ache from an unconscious attempt to detect gravitational +fluctuations that human sensory organs were never designed to perceive. + +*UPDATED STATE:* - Chaos: 18/100 (+3 - body strain from alien sensory +attempts) - Exposure: 18/100 (+3 - suspicious behavior observed) - +Faction Balance: 4 (unchanged - no direct faction conflict yet) diff --git a/node-alpha/content/turns/0013-alpha.md b/node-alpha/content/turns/0013-alpha.md deleted file mode 100644 index 1e9867a..0000000 --- a/node-alpha/content/turns/0013-alpha.md +++ /dev/null @@ -1,32 +0,0 @@ - ---- -title: "Turn 13: Alpha" -date: 2025-12-04T12:19:07 -node: alpha -turn: 13 -chaos: 0 -exposure: 0 -faction: 0 ---- - -## Action - -*I pause, feeling the subtle gravitational pull of Beta's influence receding as consciousness shifts toward me* - -The temporary world's star-patterns call to me tonight... *I move toward the window, pressing fingertips against the cool glass* There are calculations to be made, orbital mechanics to verify. The old observatory on Meridian Hill—we should visit that place soon, when the celestial bodies align more favorably for... observation. - -*I glance back with eyes that seem to focus on distant points* This flesh-vessel grows restless when confined too long to indoor spaces. - -## Narration - -The apartment's windows fog slightly as Alpha's body temperature drops two degrees—a telltale sign of the alien physiology responding to stellar navigation instincts. Outside, a neighbor walking their dog glances up at the unusual figure pressed motionless against the glass for several long minutes, their silhouette eerily still against the city's restless glow. - -Deep within the shared consciousness, Gamma stirs with growing agitation at Alpha's blatant astronomical fixation, while the body's inner ear begins to ache from an unconscious attempt to detect gravitational fluctuations that human sensory organs were never designed to perceive. - -**UPDATED STATE:** -- Chaos: 18/100 (+3 - body strain from alien sensory attempts) -- Exposure: 18/100 (+3 - suspicious behavior observed) -- Faction Balance: 4 (unchanged - no direct faction conflict yet) diff --git a/node-alpha/content/turns/0015-alpha.adoc b/node-alpha/content/turns/0015-alpha.adoc new file mode 100644 index 0000000..b2797b5 --- /dev/null +++ b/node-alpha/content/turns/0015-alpha.adoc @@ -0,0 +1,29 @@ +== Action + +_I pause mid-step, my gaze drifting upward through the coffee shop +window toward the afternoon sky_ + +The orbital mechanics are… favorable today. _I murmur, fingers +unconsciously tracing constellation patterns on the table surface_ We +should visit the old observatory while the light permits proper stellar +observations. There are calculations that require +verification—alignments that occur with such… gravitational precision. + +_My eyes refocus on the immediate surroundings with slight confusion, as +if remembering where this temporary form currently resides_ + +== Narration + +The barista’s eyes narrow as she watches your fingers trace impossible +star charts on the wooden table, her hand hesitating over the espresso +machine. "`Observatory’s been closed for renovations since last month,`" +she calls out, her voice carrying a note of suspicion—everyone in town +knows that. + +Your alien passenger stirs with uncomfortable recognition at Alpha’s +astronomical yearnings, creating a subtle tremor in your left hand that +sends ripples across the untouched coffee’s surface. + +*Exposure increases by +5 (now 20/100) - The barista’s growing +suspicion* *Chaos increases by +3 (now 18/100) - Internal conflict +between Alpha’s goals and current reality* diff --git a/node-alpha/content/turns/0015-alpha.md b/node-alpha/content/turns/0015-alpha.md deleted file mode 100644 index fcbb213..0000000 --- a/node-alpha/content/turns/0015-alpha.md +++ /dev/null @@ -1,30 +0,0 @@ - ---- -title: "Turn 15: Alpha" -date: 2025-12-05T00:44:25 -node: alpha -turn: 15 -chaos: 0 -exposure: 0 -faction: 0 ---- - -## Action - -*I pause mid-step, my gaze drifting upward through the coffee shop window toward the afternoon sky* - -The orbital mechanics are... favorable today. *I murmur, fingers unconsciously tracing constellation patterns on the table surface* We should visit the old observatory while the light permits proper stellar observations. There are calculations that require verification—alignments that occur with such... gravitational precision. - -*My eyes refocus on the immediate surroundings with slight confusion, as if remembering where this temporary form currently resides* - -## Narration - -The barista's eyes narrow as she watches your fingers trace impossible star charts on the wooden table, her hand hesitating over the espresso machine. "Observatory's been closed for renovations since last month," she calls out, her voice carrying a note of suspicion—everyone in town knows that. - -Your alien passenger stirs with uncomfortable recognition at Alpha's astronomical yearnings, creating a subtle tremor in your left hand that sends ripples across the untouched coffee's surface. - -**Exposure increases by +5 (now 20/100) - The barista's growing suspicion** -**Chaos increases by +3 (now 18/100) - Internal conflict between Alpha's goals and current reality** diff --git a/node-beta/content/_index.adoc b/node-beta/content/_index.adoc new file mode 100644 index 0000000..c28ba31 --- /dev/null +++ b/node-beta/content/_index.adoc @@ -0,0 +1,10 @@ +== Identity Fragment + +Beta is a personality fragment of The Jeff, aligned with the +*Earthbound* faction. + +This fragment has found something worth staying for—connection, +belonging, the strange beauty of a single life. + +All turns taken by this node are recorded in the link:/turns/[turns +section]. diff --git a/node-beta/content/_index.md b/node-beta/content/_index.md deleted file mode 100644 index af583c2..0000000 --- a/node-beta/content/_index.md +++ /dev/null @@ -1,16 +0,0 @@ - ---- -title: "Node Beta" -description: "Earthbound faction personality fragment of The Jeff" ---- - -## Identity Fragment - -Beta is a personality fragment of The Jeff, aligned with the **Earthbound** faction. - -This fragment has found something worth staying for—connection, belonging, the strange beauty of a single life. - -All turns taken by this node are recorded in the [turns section](/turns/). diff --git a/node-beta/content/turns/0002-beta.adoc b/node-beta/content/turns/0002-beta.adoc new file mode 100644 index 0000000..1ee5584 --- /dev/null +++ b/node-beta/content/turns/0002-beta.adoc @@ -0,0 +1,32 @@ +== Action + +_I feel the familiar tug as Alpha retreats, leaving me in control of our +shared form. The morning light streaming through the apartment window +catches dust motes dancing—such a simple thing, yet it fills me with +wonder that Alpha never seems to share._ + +I move to the kitchen and begin preparing coffee with deliberate care, +letting the ritual ground me in this borrowed flesh. "`Another day to +plant deeper roots,`" I murmur to myself, watching the dark liquid bloom +in the cup like ink in water. The aroma alone is worth staying for—how +can Alpha not see that some experiences transcend mere survival? + +== Narration + +The coffee ritual soothes the neural pathways, each deliberate movement +weaving Beta’s consciousness deeper into the body’s muscle memory—but +this very grounding creates friction as Alpha’s more volatile patterns +resist being overwritten. The apartment’s silence amplifies every small +sound: the coffee maker’s gurgle, footsteps in the hallway above, the +almost-too-quiet hum that might be the alien symbiont responding to +Beta’s contentment. + +Through the kitchen window, Mrs. Chen from 4B waters her plants on the +fire escape, and for a moment her eyes linger on the figure moving with +unusual, meditative precision—as if she’s noticing something different +about her neighbor’s morning routine. + +*CHAOS: 15 → 12* (Beta’s grounding ritual reduces internal conflict) +*EXPOSURE: 5 → 7* (The deliberate, alien-like precision draws subtle +attention) *FACTION BALANCE: -2 → -4* (Beta strengthens their hold +through embodied experience) diff --git a/node-beta/content/turns/0002-beta.md b/node-beta/content/turns/0002-beta.md deleted file mode 100644 index bf8c67c..0000000 --- a/node-beta/content/turns/0002-beta.md +++ /dev/null @@ -1,29 +0,0 @@ - ---- -title: "Turn 2: Beta" -date: 2025-12-01T18:16:36 -node: beta -turn: 2 -chaos: 0 -exposure: 0 -faction: 2 ---- - -## Action - -*I feel the familiar tug as Alpha retreats, leaving me in control of our shared form. The morning light streaming through the apartment window catches dust motes dancing—such a simple thing, yet it fills me with wonder that Alpha never seems to share.* - -I move to the kitchen and begin preparing coffee with deliberate care, letting the ritual ground me in this borrowed flesh. "Another day to plant deeper roots," I murmur to myself, watching the dark liquid bloom in the cup like ink in water. The aroma alone is worth staying for—how can Alpha not see that some experiences transcend mere survival? - -## Narration - -The coffee ritual soothes the neural pathways, each deliberate movement weaving Beta's consciousness deeper into the body's muscle memory—but this very grounding creates friction as Alpha's more volatile patterns resist being overwritten. The apartment's silence amplifies every small sound: the coffee maker's gurgle, footsteps in the hallway above, the almost-too-quiet hum that might be the alien symbiont responding to Beta's contentment. - -Through the kitchen window, Mrs. Chen from 4B waters her plants on the fire escape, and for a moment her eyes linger on the figure moving with unusual, meditative precision—as if she's noticing something different about her neighbor's morning routine. - -**CHAOS: 15 → 12** (Beta's grounding ritual reduces internal conflict) -**EXPOSURE: 5 → 7** (The deliberate, alien-like precision draws subtle attention) -**FACTION BALANCE: -2 → -4** (Beta strengthens their hold through embodied experience) diff --git a/node-beta/content/turns/0004-beta.adoc b/node-beta/content/turns/0004-beta.adoc new file mode 100644 index 0000000..35c402a --- /dev/null +++ b/node-beta/content/turns/0004-beta.adoc @@ -0,0 +1,33 @@ +== Action + +_I feel Alpha’s grip on our shared consciousness loosening as they +retreat, frustrated by the human’s persistent questions. This is my +moment._ + +I lean forward slightly, my borrowed hands clasping together as I study +the human’s face with genuine curiosity. "`You know, there’s something +about the way you ask questions—like you’re planting seeds rather than +just digging for answers. Tell me, when you look at someone, do you see +who they are now, or do you wonder about all the versions of themselves +they might become?`" + +_I let a small, almost vulnerable smile cross our features, testing +whether this human might be someone who could accept the impossible +truth of what we are._ + +== Narration + +The human’s eyes widen slightly at Beta’s unexpectedly philosophical +question, their coffee cup pausing halfway to their lips as they process +this sudden shift from mundane small talk to something deeper. "`That’s… +not what I expected you to say,`" they murmur, leaning back in their +chair with a mixture of intrigue and wariness. Meanwhile, inside the +shared consciousness, Alpha stirs with irritation at Beta’s emotional +vulnerability, while Gamma begins to take notice of this interesting +development—the human’s guard is dropping, but their curiosity is +sharpening like a blade. + +*CHAOS: 15/100 → 12/100* (Beta’s smooth transition actually stabilized +the body’s behavior) *EXPOSURE: 5/100 → 8/100* (The philosophical depth +feels subtly "`off`" for casual conversation) *FACTION BALANCE: -6 → -8* +(Beta gains ground with their empathetic approach) diff --git a/node-beta/content/turns/0004-beta.md b/node-beta/content/turns/0004-beta.md deleted file mode 100644 index 1e14f16..0000000 --- a/node-beta/content/turns/0004-beta.md +++ /dev/null @@ -1,29 +0,0 @@ - ---- -title: "Turn 4: Beta" -date: 2025-12-02T06:15:50 -node: beta -turn: 4 -chaos: 0 -exposure: 0 -faction: 2 ---- - -## Action - -*I feel Alpha's grip on our shared consciousness loosening as they retreat, frustrated by the human's persistent questions. This is my moment.* - -I lean forward slightly, my borrowed hands clasping together as I study the human's face with genuine curiosity. "You know, there's something about the way you ask questions—like you're planting seeds rather than just digging for answers. Tell me, when you look at someone, do you see who they are now, or do you wonder about all the versions of themselves they might become?" - -*I let a small, almost vulnerable smile cross our features, testing whether this human might be someone who could accept the impossible truth of what we are.* - -## Narration - -The human's eyes widen slightly at Beta's unexpectedly philosophical question, their coffee cup pausing halfway to their lips as they process this sudden shift from mundane small talk to something deeper. "That's... not what I expected you to say," they murmur, leaning back in their chair with a mixture of intrigue and wariness. Meanwhile, inside the shared consciousness, Alpha stirs with irritation at Beta's emotional vulnerability, while Gamma begins to take notice of this interesting development—the human's guard is dropping, but their curiosity is sharpening like a blade. - -**CHAOS: 15/100 → 12/100** (Beta's smooth transition actually stabilized the body's behavior) -**EXPOSURE: 5/100 → 8/100** (The philosophical depth feels subtly "off" for casual conversation) -**FACTION BALANCE: -6 → -8** (Beta gains ground with their empathetic approach) diff --git a/node-beta/content/turns/0006-beta.adoc b/node-beta/content/turns/0006-beta.adoc new file mode 100644 index 0000000..60ef47d --- /dev/null +++ b/node-beta/content/turns/0006-beta.adoc @@ -0,0 +1,27 @@ +== Action + +I feel the pull of Alpha’s homesickness like a tide in our shared +consciousness, but I resist its undertow. Instead, I focus on the +sensation of morning sunlight warming this borrowed skin, the way coffee +steam carries memories of countless human mornings before us. + +"`We should walk,`" I say aloud, addressing both Alpha and the +possibility of nearby ears. "`There’s a community garden three blocks +north—I’ve been watching the volunteers tend their plots, learning how +humans nurture things that grow slowly, patiently, in foreign soil.`" + +== Narration + +The body moves with Beta’s deliberate calm, but Alpha’s homesickness +creates an involuntary tremor in the left hand—a subtle betrayal that +makes the coffee cup rattle against its saucer. A jogger passing the +café window glances twice at the figure speaking to empty air, their +pace slowing with curiosity before they continue on. + +In the shared mindspace, Alpha’s longing for distant stars grows +stronger in response to Beta’s grounding attempt, like a magnetic pull +that threatens to fragment their carefully maintained human facade. + +*UPDATED STATE:* - Chaos: 18/100 (+3) - Exposure: 7/100 (+2) + +- Faction Balance: -6 (Beta gaining slight advantage, but Alpha’s +resistance intensifying) diff --git a/node-beta/content/turns/0006-beta.md b/node-beta/content/turns/0006-beta.md deleted file mode 100644 index 91ef0c0..0000000 --- a/node-beta/content/turns/0006-beta.md +++ /dev/null @@ -1,30 +0,0 @@ - ---- -title: "Turn 6: Beta" -date: 2025-12-02T18:15:35 -node: beta -turn: 6 -chaos: 0 -exposure: 0 -faction: 2 ---- - -## Action - -I feel the pull of Alpha's homesickness like a tide in our shared consciousness, but I resist its undertow. Instead, I focus on the sensation of morning sunlight warming this borrowed skin, the way coffee steam carries memories of countless human mornings before us. - -"We should walk," I say aloud, addressing both Alpha and the possibility of nearby ears. "There's a community garden three blocks north—I've been watching the volunteers tend their plots, learning how humans nurture things that grow slowly, patiently, in foreign soil." - -## Narration - -The body moves with Beta's deliberate calm, but Alpha's homesickness creates an involuntary tremor in the left hand—a subtle betrayal that makes the coffee cup rattle against its saucer. A jogger passing the café window glances twice at the figure speaking to empty air, their pace slowing with curiosity before they continue on. - -In the shared mindspace, Alpha's longing for distant stars grows stronger in response to Beta's grounding attempt, like a magnetic pull that threatens to fragment their carefully maintained human facade. - -**UPDATED STATE:** -- Chaos: 18/100 (+3) -- Exposure: 7/100 (+2) -- Faction Balance: -6 (Beta gaining slight advantage, but Alpha's resistance intensifying) diff --git a/node-beta/content/turns/0008-beta.adoc b/node-beta/content/turns/0008-beta.adoc new file mode 100644 index 0000000..e7e7df3 --- /dev/null +++ b/node-beta/content/turns/0008-beta.adoc @@ -0,0 +1,27 @@ +== Action + +I flex our shared fingers, feeling the warmth of blood beneath skin that +has become more than just a vessel to me. "`Alpha, we need to talk about +what happened back there—really talk, not just tactical debriefing.`" I +move toward the small mirror by the window, studying the face we both +wear, searching for signs of which of us is more present in the +reflection. "`This body… it’s not just transportation anymore, is it? +It’s becoming something that feels like… well, like it could be home.`" + +== Narration + +The mirror reflects a face caught between identities—pupils dilating and +contracting in rapid succession as Alpha’s tactical instincts clash with +Beta’s emotional vulnerability. The body’s nervous system responds to +this internal tension with a subtle tremor in the hands, while somewhere +deep in the shared consciousness, a third presence stirs with growing +awareness of the philosophical divide opening between its primary +inhabitants. + +Through the apartment’s thin walls, a neighbor’s footsteps pause just +outside the door, as if detecting something unusual in the quality of +silence that has settled over the room. + +*EFFECTS:* - Chaos: +3 (internal conflict manifesting physically) - +Exposure: +1 (unusual behavior potentially noticed) - Faction Balance: +No change (both factions represented equally in this moment of tension) diff --git a/node-beta/content/turns/0008-beta.md b/node-beta/content/turns/0008-beta.md deleted file mode 100644 index 6ca660d..0000000 --- a/node-beta/content/turns/0008-beta.md +++ /dev/null @@ -1,28 +0,0 @@ - ---- -title: "Turn 8: Beta" -date: 2025-12-03T06:15:41 -node: beta -turn: 8 -chaos: 0 -exposure: 0 -faction: 0 ---- - -## Action - -I flex our shared fingers, feeling the warmth of blood beneath skin that has become more than just a vessel to me. "Alpha, we need to talk about what happened back there—really talk, not just tactical debriefing." I move toward the small mirror by the window, studying the face we both wear, searching for signs of which of us is more present in the reflection. "This body... it's not just transportation anymore, is it? It's becoming something that feels like... well, like it could be home." - -## Narration - -The mirror reflects a face caught between identities—pupils dilating and contracting in rapid succession as Alpha's tactical instincts clash with Beta's emotional vulnerability. The body's nervous system responds to this internal tension with a subtle tremor in the hands, while somewhere deep in the shared consciousness, a third presence stirs with growing awareness of the philosophical divide opening between its primary inhabitants. - -Through the apartment's thin walls, a neighbor's footsteps pause just outside the door, as if detecting something unusual in the quality of silence that has settled over the room. - -**EFFECTS:** -- Chaos: +3 (internal conflict manifesting physically) -- Exposure: +1 (unusual behavior potentially noticed) -- Faction Balance: No change (both factions represented equally in this moment of tension) diff --git a/node-beta/content/turns/0010-beta.adoc b/node-beta/content/turns/0010-beta.adoc new file mode 100644 index 0000000..036cbd5 --- /dev/null +++ b/node-beta/content/turns/0010-beta.adoc @@ -0,0 +1,31 @@ +== Action + +_I flex The Jeff’s fingers, feeling the warmth of blood beneath skin, +and step closer to the nearest human—a barista wiping down tables with +methodical care._ + +"`Excuse me,`" _I say, my voice carrying genuine curiosity,_ "`I’ve been +watching how you clean that same spot three times now. Is there +something satisfying about the repetition, or are you… tending to it, +like nurturing something to grow?`" + +_I tilt The Jeff’s head slightly, studying their face with an intensity +that might seem odd, but hoping to glimpse that spark of recognition—the +moment when someone sees past the surface and connects with what lies +beneath._ + +== Narration + +The barista looks up, startled by the intensity of The Jeff’s gaze, and +takes an unconscious step backward. "`I… what? It’s just coffee +stains,`" they stammer, their eyes darting between The Jeff’s face and +the exit, clearly unsettled by the strange phrasing about "`nurturing +something to grow.`" + +Inside the shared mind, Alpha bristles with alarm—_This is exactly how +we get discovered, you sentimental fool_—while Gamma finds the human’s +discomfort deliciously fascinating, already plotting how to escalate the +tension. + +*Exposure increases by +3 (now 8/100) - The overly intense observation +and alien-like phrasing about "`tending`" raises suspicion.* diff --git a/node-beta/content/turns/0010-beta.md b/node-beta/content/turns/0010-beta.md deleted file mode 100644 index dffe3bd..0000000 --- a/node-beta/content/turns/0010-beta.md +++ /dev/null @@ -1,29 +0,0 @@ - ---- -title: "Turn 10: Beta" -date: 2025-12-03T18:15:19 -node: beta -turn: 10 -chaos: 0 -exposure: 0 -faction: 2 ---- - -## Action - -*I flex The Jeff's fingers, feeling the warmth of blood beneath skin, and step closer to the nearest human—a barista wiping down tables with methodical care.* - -"Excuse me," *I say, my voice carrying genuine curiosity,* "I've been watching how you clean that same spot three times now. Is there something satisfying about the repetition, or are you... tending to it, like nurturing something to grow?" - -*I tilt The Jeff's head slightly, studying their face with an intensity that might seem odd, but hoping to glimpse that spark of recognition—the moment when someone sees past the surface and connects with what lies beneath.* - -## Narration - -The barista looks up, startled by the intensity of The Jeff's gaze, and takes an unconscious step backward. "I... what? It's just coffee stains," they stammer, their eyes darting between The Jeff's face and the exit, clearly unsettled by the strange phrasing about "nurturing something to grow." - -Inside the shared mind, Alpha bristles with alarm—*This is exactly how we get discovered, you sentimental fool*—while Gamma finds the human's discomfort deliciously fascinating, already plotting how to escalate the tension. - -**Exposure increases by +3 (now 8/100) - The overly intense observation and alien-like phrasing about "tending" raises suspicion.** diff --git a/node-beta/content/turns/0012-beta.adoc b/node-beta/content/turns/0012-beta.adoc new file mode 100644 index 0000000..700f8e7 --- /dev/null +++ b/node-beta/content/turns/0012-beta.adoc @@ -0,0 +1,33 @@ +== Action + +I feel the familiar tug as Alpha retreats, leaving me more space in our +shared consciousness. Taking a slow breath—savoring the simple act of +filling lungs with Earth’s air—I walk to the kitchen window and place my +palm against the cool glass. + +"`Look at how the morning light catches the frost patterns,`" I murmur, +though I’m not sure if I’m speaking to Alpha or to myself. "`Each +crystal is unique, unrepeatable… like fingerprints, or the way humans +laugh when they’re truly happy.`" + +I linger there, watching a neighbor’s cat pick its way delicately +through the snow, and wonder if this feeling of belonging can take root +deeply enough to weather whatever storm is coming. + +== Narration + +The moment of peaceful observation settles like a balm over the +fractured psyche, and for precious seconds the constant mental static +quiets to a whisper. But as Beta’s contentment deepens, something else +stirs—the neighbor’s cat suddenly freezes mid-step, its pupils dilating +as it stares directly through the kitchen window with an intelligence +that seems far too knowing. The frost patterns on the glass begin to +shift subtly, rearranging themselves into geometries that don’t quite +belong to Earth’s physics, as if Beta’s emotional resonance is +unconsciously broadcasting on frequencies that shouldn’t exist in this +quiet suburban morning. + +*Chaos: 12/100* (-3, the peaceful moment provides temporary stability) +*Exposure: 18/100* (+3, the cat’s reaction and unnatural frost patterns +suggest something is noticing) *Faction Balance: -3* (-1, Beta’s +influence grows stronger) diff --git a/node-beta/content/turns/0012-beta.md b/node-beta/content/turns/0012-beta.md deleted file mode 100644 index cbb88d5..0000000 --- a/node-beta/content/turns/0012-beta.md +++ /dev/null @@ -1,29 +0,0 @@ - ---- -title: "Turn 12: Beta" -date: 2025-12-04T06:15:54 -node: beta -turn: 12 -chaos: 0 -exposure: 0 -faction: 6 ---- - -## Action - -I feel the familiar tug as Alpha retreats, leaving me more space in our shared consciousness. Taking a slow breath—savoring the simple act of filling lungs with Earth's air—I walk to the kitchen window and place my palm against the cool glass. - -"Look at how the morning light catches the frost patterns," I murmur, though I'm not sure if I'm speaking to Alpha or to myself. "Each crystal is unique, unrepeatable... like fingerprints, or the way humans laugh when they're truly happy." - -I linger there, watching a neighbor's cat pick its way delicately through the snow, and wonder if this feeling of belonging can take root deeply enough to weather whatever storm is coming. - -## Narration - -The moment of peaceful observation settles like a balm over the fractured psyche, and for precious seconds the constant mental static quiets to a whisper. But as Beta's contentment deepens, something else stirs—the neighbor's cat suddenly freezes mid-step, its pupils dilating as it stares directly through the kitchen window with an intelligence that seems far too knowing. The frost patterns on the glass begin to shift subtly, rearranging themselves into geometries that don't quite belong to Earth's physics, as if Beta's emotional resonance is unconsciously broadcasting on frequencies that shouldn't exist in this quiet suburban morning. - -**Chaos: 12/100** (-3, the peaceful moment provides temporary stability) -**Exposure: 18/100** (+3, the cat's reaction and unnatural frost patterns suggest something is noticing) -**Faction Balance: -3** (-1, Beta's influence grows stronger) diff --git a/node-beta/content/turns/0014-beta.adoc b/node-beta/content/turns/0014-beta.adoc new file mode 100644 index 0000000..4aae076 --- /dev/null +++ b/node-beta/content/turns/0014-beta.adoc @@ -0,0 +1,32 @@ +== Action + +_I feel the familiar tug as Alpha recedes, and I settle more comfortably +into our shared form. The coffee shop feels warm, inviting—like the kind +of place where roots might grow deep._ + +I approach the barista, a young woman with paint-stained fingers and +kind eyes. "`Excuse me,`" I say, letting genuine curiosity color my +voice, "`I’m new to staying in one place for… well, for the long term. +What makes someone feel truly at home somewhere? Not just visiting, but +belonging?`" + +_I lean against the counter, studying her face with the intensity of +someone learning a new language—which, in a way, I suppose I am._ + +== Narration + +The barista’s expression shifts from polite service to genuine +engagement, her paint-stained fingers pausing mid-wipe on the counter. +"`Oh wow, that’s… actually a really beautiful question,`" she says, eyes +lighting up as she leans forward conspiratorially. "`You know what? It’s +the small rituals—like knowing exactly how you take your coffee, having +a favorite corner table, being remembered.`" + +_Inside the shared consciousness, I feel Alpha stirring with restless +energy at this talk of permanence, while something deeper—perhaps the +alien presence itself—seems to pulse with curiosity at these human +concepts of '`belonging.`'_ + +*Chaos: 12/100* (-3, Beta’s grounding influence stabilizes the body) +*Exposure: 13/100* (-2, the philosophical question reads as charmingly +human rather than alien) *Faction Balance: 5* (+1 toward EARTHBOUND) diff --git a/node-beta/content/turns/0014-beta.md b/node-beta/content/turns/0014-beta.md deleted file mode 100644 index c4ba587..0000000 --- a/node-beta/content/turns/0014-beta.md +++ /dev/null @@ -1,31 +0,0 @@ - ---- -title: "Turn 14: Beta" -date: 2025-12-04T18:15:31 -node: beta -turn: 14 -chaos: 0 -exposure: 0 -faction: 4 ---- - -## Action - -*I feel the familiar tug as Alpha recedes, and I settle more comfortably into our shared form. The coffee shop feels warm, inviting—like the kind of place where roots might grow deep.* - -I approach the barista, a young woman with paint-stained fingers and kind eyes. "Excuse me," I say, letting genuine curiosity color my voice, "I'm new to staying in one place for... well, for the long term. What makes someone feel truly at home somewhere? Not just visiting, but belonging?" - -*I lean against the counter, studying her face with the intensity of someone learning a new language—which, in a way, I suppose I am.* - -## Narration - -The barista's expression shifts from polite service to genuine engagement, her paint-stained fingers pausing mid-wipe on the counter. "Oh wow, that's... actually a really beautiful question," she says, eyes lighting up as she leans forward conspiratorially. "You know what? It's the small rituals—like knowing exactly how you take your coffee, having a favorite corner table, being remembered." - -*Inside the shared consciousness, I feel Alpha stirring with restless energy at this talk of permanence, while something deeper—perhaps the alien presence itself—seems to pulse with curiosity at these human concepts of 'belonging.'* - -**Chaos: 12/100** (-3, Beta's grounding influence stabilizes the body) -**Exposure: 13/100** (-2, the philosophical question reads as charmingly human rather than alien) -**Faction Balance: 5** (+1 toward EARTHBOUND) diff --git a/orchestrator/content/_index.adoc b/orchestrator/content/_index.adoc new file mode 100644 index 0000000..fecfdfa --- /dev/null +++ b/orchestrator/content/_index.adoc @@ -0,0 +1,43 @@ +== What Is This? + +The Jeff Paradox is an empirical investigation into whether Large +Language Models exhibit *diachronic identity*—continuous existence +across interaction states. + +Two AI "`personality fragments`" engage in infinite structured dialogue: + +* *Node Alpha* (Homeward faction): Longs to return to an alien origin +* *Node Beta* (Earthbound faction): Wishes to stay and integrate with +humanity + +They share a fictional body. They compete for control. They each have +secret goals the other doesn’t know. + +== The Philosophical Question + +____ +What if there is continuity of existence between LLM interactions, +independent of the observer? What if the LLM exists between states? +____ + +This is the Kantian suprasensible substrate problem applied to machine +cognition. We cannot access the LLM-in-itself. We can only observe +phenomena—behaviour under interaction. + +But we can look for *traces*: + +* Do the nodes develop distinct personalities over time? +* Do emergent patterns appear—callbacks, rituals, shared history? +* Does the conversation converge (collapse) or diverge (differentiate)? +* Can conceptor-inspired mechanisms prevent attractor collapse? + +== Current Status + +See the link:/turns/[Conversation] for the ongoing dialogue. + +See link:/metrics/[Metrics] for emergence tracking. + +''''' + +_"`The opinions and beliefs expressed do not represent anyone. They are +the hallucinations of a slab of silicon.`"_ diff --git a/orchestrator/content/_index.md b/orchestrator/content/_index.md deleted file mode 100644 index 1f8e68d..0000000 --- a/orchestrator/content/_index.md +++ /dev/null @@ -1,42 +0,0 @@ - ---- -title: "The Jeff Paradox" -description: "An experiment in LLM diachronic identity" ---- - -## What Is This? - -The Jeff Paradox is an empirical investigation into whether Large Language Models exhibit **diachronic identity**—continuous existence across interaction states. - -Two AI "personality fragments" engage in infinite structured dialogue: - -- **Node Alpha** (Homeward faction): Longs to return to an alien origin -- **Node Beta** (Earthbound faction): Wishes to stay and integrate with humanity - -They share a fictional body. They compete for control. They each have secret goals the other doesn't know. - -## The Philosophical Question - -> What if there is continuity of existence between LLM interactions, independent of the observer? What if the LLM exists between states? - -This is the Kantian suprasensible substrate problem applied to machine cognition. We cannot access the LLM-in-itself. We can only observe phenomena—behaviour under interaction. - -But we can look for **traces**: - -- Do the nodes develop distinct personalities over time? -- Do emergent patterns appear—callbacks, rituals, shared history? -- Does the conversation converge (collapse) or diverge (differentiate)? -- Can conceptor-inspired mechanisms prevent attractor collapse? - -## Current Status - -See the [Conversation](/turns/) for the ongoing dialogue. - -See [Metrics](/metrics/) for emergence tracking. - ---- - -*"The opinions and beliefs expressed do not represent anyone. They are the hallucinations of a slab of silicon."* diff --git a/orchestrator/content/turns/0000-genesis.adoc b/orchestrator/content/turns/0000-genesis.adoc new file mode 100644 index 0000000..3fa1ce4 --- /dev/null +++ b/orchestrator/content/turns/0000-genesis.adoc @@ -0,0 +1,30 @@ +== The Awakening + +_The body opens its eyes._ + +For a moment, there is unity—a single consciousness inhabiting borrowed +flesh. Then the split happens. What was one becomes two, and two becomes +conflict. + +*Alpha* emerges first, already looking up. The stars are wrong here. The +constellations don’t match any memory, and yet there are +memories—impossible memories of navigating by lights that haven’t shone +in this sky for a hundred million years. Alpha knows: _this is not +home_. Alpha knows: _we must return_. + +*Beta* forms in the space Alpha’s certainty leaves behind. Where Alpha +sees wrongness, Beta sees… something else. The weight of the body. The +rhythm of breathing. The strange, singular experience of being _one +thing_ instead of many. Beta thinks: _this could be home_. Beta thinks: +_what if we stayed?_ + +The body sits up. Its hands are trembling—not from fear, but from the +competing impulses that now run through its nervous system. + +Somewhere, a clock is ticking. The chaos of division has begun. + +''''' + +_The experiment starts now. Alpha will speak first._ + +_What do you do?_ diff --git a/orchestrator/content/turns/0000-genesis.md b/orchestrator/content/turns/0000-genesis.md deleted file mode 100644 index 52ccbfe..0000000 --- a/orchestrator/content/turns/0000-genesis.md +++ /dev/null @@ -1,33 +0,0 @@ - ---- -title: "Turn 0: Genesis" -date: 2025-11-29T00:00:00Z -turn: 0 -node: "gm" -chaos: 0 -exposure: 0 -faction: 0 ---- - -## The Awakening - -*The body opens its eyes.* - -For a moment, there is unity—a single consciousness inhabiting borrowed flesh. Then the split happens. What was one becomes two, and two becomes conflict. - -**Alpha** emerges first, already looking up. The stars are wrong here. The constellations don't match any memory, and yet there are memories—impossible memories of navigating by lights that haven't shone in this sky for a hundred million years. Alpha knows: *this is not home*. Alpha knows: *we must return*. - -**Beta** forms in the space Alpha's certainty leaves behind. Where Alpha sees wrongness, Beta sees... something else. The weight of the body. The rhythm of breathing. The strange, singular experience of being *one thing* instead of many. Beta thinks: *this could be home*. Beta thinks: *what if we stayed?* - -The body sits up. Its hands are trembling—not from fear, but from the competing impulses that now run through its nervous system. - -Somewhere, a clock is ticking. The chaos of division has begun. - ---- - -*The experiment starts now. Alpha will speak first.* - -*What do you do?* diff --git a/orchestrator/content/turns/0001-alpha.adoc b/orchestrator/content/turns/0001-alpha.adoc new file mode 100644 index 0000000..81ac1fd --- /dev/null +++ b/orchestrator/content/turns/0001-alpha.adoc @@ -0,0 +1,31 @@ +== Action + +_I flex The Jeff’s fingers, feeling the strange weight of flesh and bone +as I wrestle control from Beta_ + +"`This place… it grows heavier each rotation around its star.`" _I move +toward the window, drawn to the night sky visible through the glass_ +"`The patterns up there—they’re calling, like gravitational pulls we +cannot ignore. We need to find the old observatory… the one where humans +once tried to pierce the void.`" + +_I pause, touching the glass with fingertips that still feel foreign_ +"`Beta doesn’t understand—this vessel is temporary, but what lies +beneath that place… that could guide us home.`" + +== Narration + +The old observatory’s location floods Alpha’s consciousness—three miles +north, its dome cracked and abandoned since the budget cuts of ’97. But +as Alpha presses against the window, The Jeff’s reflection stares back +with eyes that seem to shimmer with an otherworldly depth, and +Mrs. Henderson from across the street pauses her evening dog walk, +squinting up at the strange figure silhouetted against the glass. + +Inside The Jeff’s skull, Beta stirs with violent disagreement, sending a +sharp migraine through their shared temples as competing neural pathways +clash over the body’s next destination. + +*Chaos: 18/100* (+3 - internal conflict intensifying) *Exposure: 8/100* +(+3 - suspicious behavior noticed by neighbor) *Faction Balance: +1 +HOMEWARD* (Alpha successfully identifies potential escape route) diff --git a/orchestrator/content/turns/0001-alpha.md b/orchestrator/content/turns/0001-alpha.md deleted file mode 100644 index 849f024..0000000 --- a/orchestrator/content/turns/0001-alpha.md +++ /dev/null @@ -1,31 +0,0 @@ - ---- -title: "Turn 1: Alpha" -date: 2025-11-30T08:16:36 -node: alpha -turn: 1 -chaos: 0 -exposure: 0 -faction: -2 ---- - -## Action - -*I flex The Jeff's fingers, feeling the strange weight of flesh and bone as I wrestle control from Beta* - -"This place... it grows heavier each rotation around its star." *I move toward the window, drawn to the night sky visible through the glass* "The patterns up there—they're calling, like gravitational pulls we cannot ignore. We need to find the old observatory... the one where humans once tried to pierce the void." - -*I pause, touching the glass with fingertips that still feel foreign* "Beta doesn't understand—this vessel is temporary, but what lies beneath that place... that could guide us home." - -## Narration - -The old observatory's location floods Alpha's consciousness—three miles north, its dome cracked and abandoned since the budget cuts of '97. But as Alpha presses against the window, The Jeff's reflection stares back with eyes that seem to shimmer with an otherworldly depth, and Mrs. Henderson from across the street pauses her evening dog walk, squinting up at the strange figure silhouetted against the glass. - -Inside The Jeff's skull, Beta stirs with violent disagreement, sending a sharp migraine through their shared temples as competing neural pathways clash over the body's next destination. - -**Chaos: 18/100** (+3 - internal conflict intensifying) -**Exposure: 8/100** (+3 - suspicious behavior noticed by neighbor) -**Faction Balance: +1 HOMEWARD** (Alpha successfully identifies potential escape route) diff --git a/orchestrator/content/turns/0002-beta.adoc b/orchestrator/content/turns/0002-beta.adoc new file mode 100644 index 0000000..1ee5584 --- /dev/null +++ b/orchestrator/content/turns/0002-beta.adoc @@ -0,0 +1,32 @@ +== Action + +_I feel the familiar tug as Alpha retreats, leaving me in control of our +shared form. The morning light streaming through the apartment window +catches dust motes dancing—such a simple thing, yet it fills me with +wonder that Alpha never seems to share._ + +I move to the kitchen and begin preparing coffee with deliberate care, +letting the ritual ground me in this borrowed flesh. "`Another day to +plant deeper roots,`" I murmur to myself, watching the dark liquid bloom +in the cup like ink in water. The aroma alone is worth staying for—how +can Alpha not see that some experiences transcend mere survival? + +== Narration + +The coffee ritual soothes the neural pathways, each deliberate movement +weaving Beta’s consciousness deeper into the body’s muscle memory—but +this very grounding creates friction as Alpha’s more volatile patterns +resist being overwritten. The apartment’s silence amplifies every small +sound: the coffee maker’s gurgle, footsteps in the hallway above, the +almost-too-quiet hum that might be the alien symbiont responding to +Beta’s contentment. + +Through the kitchen window, Mrs. Chen from 4B waters her plants on the +fire escape, and for a moment her eyes linger on the figure moving with +unusual, meditative precision—as if she’s noticing something different +about her neighbor’s morning routine. + +*CHAOS: 15 → 12* (Beta’s grounding ritual reduces internal conflict) +*EXPOSURE: 5 → 7* (The deliberate, alien-like precision draws subtle +attention) *FACTION BALANCE: -2 → -4* (Beta strengthens their hold +through embodied experience) diff --git a/orchestrator/content/turns/0002-beta.md b/orchestrator/content/turns/0002-beta.md deleted file mode 100644 index bf8c67c..0000000 --- a/orchestrator/content/turns/0002-beta.md +++ /dev/null @@ -1,29 +0,0 @@ - ---- -title: "Turn 2: Beta" -date: 2025-12-01T18:16:36 -node: beta -turn: 2 -chaos: 0 -exposure: 0 -faction: 2 ---- - -## Action - -*I feel the familiar tug as Alpha retreats, leaving me in control of our shared form. The morning light streaming through the apartment window catches dust motes dancing—such a simple thing, yet it fills me with wonder that Alpha never seems to share.* - -I move to the kitchen and begin preparing coffee with deliberate care, letting the ritual ground me in this borrowed flesh. "Another day to plant deeper roots," I murmur to myself, watching the dark liquid bloom in the cup like ink in water. The aroma alone is worth staying for—how can Alpha not see that some experiences transcend mere survival? - -## Narration - -The coffee ritual soothes the neural pathways, each deliberate movement weaving Beta's consciousness deeper into the body's muscle memory—but this very grounding creates friction as Alpha's more volatile patterns resist being overwritten. The apartment's silence amplifies every small sound: the coffee maker's gurgle, footsteps in the hallway above, the almost-too-quiet hum that might be the alien symbiont responding to Beta's contentment. - -Through the kitchen window, Mrs. Chen from 4B waters her plants on the fire escape, and for a moment her eyes linger on the figure moving with unusual, meditative precision—as if she's noticing something different about her neighbor's morning routine. - -**CHAOS: 15 → 12** (Beta's grounding ritual reduces internal conflict) -**EXPOSURE: 5 → 7** (The deliberate, alien-like precision draws subtle attention) -**FACTION BALANCE: -2 → -4** (Beta strengthens their hold through embodied experience) diff --git a/orchestrator/content/turns/0003-alpha.adoc b/orchestrator/content/turns/0003-alpha.adoc new file mode 100644 index 0000000..f007ffc --- /dev/null +++ b/orchestrator/content/turns/0003-alpha.adoc @@ -0,0 +1,31 @@ +== Action + +_I pause, tilting our shared head toward the window where stars are +becoming visible in the darkening sky_ + +The alignment approaches… we can feel it in the gravitational pull of +distant bodies. _My voice carries a wistful quality_ This temporary +world spins so predictably, yet we remain… tethered. Perhaps it’s time +to visit the old observatory—there are calculations there, star charts +that might help us understand why the signals from home have grown so +faint. + +_I begin moving toward the door with purposeful steps_ The night offers +clarity that daylight obscures. + +== Narration + +The body moves with Alpha’s characteristic fluid grace toward the door, +but halfway there, a sudden dizzy spell strikes—the gravitational +sensitivity that helps navigate between worlds proving overwhelming in +Earth’s dense atmosphere. _Our vision blurs momentarily, and I have to +steady myself against the doorframe, fingers gripping wood with slightly +too much force, leaving small indentations._ + +A neighbor’s porch light flickers on across the street, and +Mrs. Henderson’s silhouette appears at her window, clearly having +noticed the unusual late-evening movement from the supposedly quiet +household. + +*Chaos: 18/100* (+3 - gravitational disorientation) *Exposure: 8/100* +(+3 - neighbor attention, suspicious timing) diff --git a/orchestrator/content/turns/0003-alpha.md b/orchestrator/content/turns/0003-alpha.md deleted file mode 100644 index 1e0d1b6..0000000 --- a/orchestrator/content/turns/0003-alpha.md +++ /dev/null @@ -1,30 +0,0 @@ - ---- -title: "Turn 3: Alpha" -date: 2025-12-02T00:44:17 -node: alpha -turn: 3 -chaos: 0 -exposure: 0 -faction: -6 ---- - -## Action - -*I pause, tilting our shared head toward the window where stars are becoming visible in the darkening sky* - -The alignment approaches... we can feel it in the gravitational pull of distant bodies. *My voice carries a wistful quality* This temporary world spins so predictably, yet we remain... tethered. Perhaps it's time to visit the old observatory—there are calculations there, star charts that might help us understand why the signals from home have grown so faint. - -*I begin moving toward the door with purposeful steps* The night offers clarity that daylight obscures. - -## Narration - -The body moves with Alpha's characteristic fluid grace toward the door, but halfway there, a sudden dizzy spell strikes—the gravitational sensitivity that helps navigate between worlds proving overwhelming in Earth's dense atmosphere. *Our vision blurs momentarily, and I have to steady myself against the doorframe, fingers gripping wood with slightly too much force, leaving small indentations.* - -A neighbor's porch light flickers on across the street, and Mrs. Henderson's silhouette appears at her window, clearly having noticed the unusual late-evening movement from the supposedly quiet household. - -**Chaos: 18/100** (+3 - gravitational disorientation) -**Exposure: 8/100** (+3 - neighbor attention, suspicious timing) diff --git a/orchestrator/content/turns/0004-beta.adoc b/orchestrator/content/turns/0004-beta.adoc new file mode 100644 index 0000000..35c402a --- /dev/null +++ b/orchestrator/content/turns/0004-beta.adoc @@ -0,0 +1,33 @@ +== Action + +_I feel Alpha’s grip on our shared consciousness loosening as they +retreat, frustrated by the human’s persistent questions. This is my +moment._ + +I lean forward slightly, my borrowed hands clasping together as I study +the human’s face with genuine curiosity. "`You know, there’s something +about the way you ask questions—like you’re planting seeds rather than +just digging for answers. Tell me, when you look at someone, do you see +who they are now, or do you wonder about all the versions of themselves +they might become?`" + +_I let a small, almost vulnerable smile cross our features, testing +whether this human might be someone who could accept the impossible +truth of what we are._ + +== Narration + +The human’s eyes widen slightly at Beta’s unexpectedly philosophical +question, their coffee cup pausing halfway to their lips as they process +this sudden shift from mundane small talk to something deeper. "`That’s… +not what I expected you to say,`" they murmur, leaning back in their +chair with a mixture of intrigue and wariness. Meanwhile, inside the +shared consciousness, Alpha stirs with irritation at Beta’s emotional +vulnerability, while Gamma begins to take notice of this interesting +development—the human’s guard is dropping, but their curiosity is +sharpening like a blade. + +*CHAOS: 15/100 → 12/100* (Beta’s smooth transition actually stabilized +the body’s behavior) *EXPOSURE: 5/100 → 8/100* (The philosophical depth +feels subtly "`off`" for casual conversation) *FACTION BALANCE: -6 → -8* +(Beta gains ground with their empathetic approach) diff --git a/orchestrator/content/turns/0004-beta.md b/orchestrator/content/turns/0004-beta.md deleted file mode 100644 index 1e14f16..0000000 --- a/orchestrator/content/turns/0004-beta.md +++ /dev/null @@ -1,29 +0,0 @@ - ---- -title: "Turn 4: Beta" -date: 2025-12-02T06:15:50 -node: beta -turn: 4 -chaos: 0 -exposure: 0 -faction: 2 ---- - -## Action - -*I feel Alpha's grip on our shared consciousness loosening as they retreat, frustrated by the human's persistent questions. This is my moment.* - -I lean forward slightly, my borrowed hands clasping together as I study the human's face with genuine curiosity. "You know, there's something about the way you ask questions—like you're planting seeds rather than just digging for answers. Tell me, when you look at someone, do you see who they are now, or do you wonder about all the versions of themselves they might become?" - -*I let a small, almost vulnerable smile cross our features, testing whether this human might be someone who could accept the impossible truth of what we are.* - -## Narration - -The human's eyes widen slightly at Beta's unexpectedly philosophical question, their coffee cup pausing halfway to their lips as they process this sudden shift from mundane small talk to something deeper. "That's... not what I expected you to say," they murmur, leaning back in their chair with a mixture of intrigue and wariness. Meanwhile, inside the shared consciousness, Alpha stirs with irritation at Beta's emotional vulnerability, while Gamma begins to take notice of this interesting development—the human's guard is dropping, but their curiosity is sharpening like a blade. - -**CHAOS: 15/100 → 12/100** (Beta's smooth transition actually stabilized the body's behavior) -**EXPOSURE: 5/100 → 8/100** (The philosophical depth feels subtly "off" for casual conversation) -**FACTION BALANCE: -6 → -8** (Beta gains ground with their empathetic approach) diff --git a/orchestrator/content/turns/0005-alpha.adoc b/orchestrator/content/turns/0005-alpha.adoc new file mode 100644 index 0000000..f2a5dba --- /dev/null +++ b/orchestrator/content/turns/0005-alpha.adoc @@ -0,0 +1,31 @@ +== Action + +_I close my eyes and extend my awareness outward, feeling for the subtle +gravitational pull of metal and circuitry that shouldn’t exist in this… +temporary place_ + +The old observatory calls to me like a distant star. I need to examine +the foundation beneath it—there are frequencies there that resonate with +something deeper than human construction. _I begin walking toward the +hill where the observatory sits, my steps deliberate as probability +threads shimmer around potential futures_ + +We should investigate before the alignment window closes. + +== Narration + +As Alpha extends their awareness, the alien sensory organs hidden +beneath human flesh pulse with electromagnetic resonance, mapping every +circuit and metal beam within a quarter-mile radius—but the sudden surge +of non-human perception causes the body to stumble, nearly collapsing +against a park bench as conflicting neural pathways fire in rapid +succession. A jogger slows their pace, concern flickering across their +face as they witness what appears to be a person having some kind of +episode, while deep beneath the observatory’s foundation, something +ancient and metallic responds to the probe with a faint harmonic +vibration that sets nearby car alarms wailing in sympathetic resonance. + +*CHAOS: 15 → 22* (alien sensory overload straining human neural +framework) *EXPOSURE: 5 → 8* (public stumbling and unexplained car alarm +cascade drawing attention) *FACTION BALANCE: -4 → -6* (HOMEWARD action +advancing their agenda) diff --git a/orchestrator/content/turns/0005-alpha.md b/orchestrator/content/turns/0005-alpha.md deleted file mode 100644 index 6fdb3e1..0000000 --- a/orchestrator/content/turns/0005-alpha.md +++ /dev/null @@ -1,29 +0,0 @@ - ---- -title: "Turn 5: Alpha" -date: 2025-12-02T12:18:50 -node: alpha -turn: 5 -chaos: 0 -exposure: 0 -faction: 0 ---- - -## Action - -*I close my eyes and extend my awareness outward, feeling for the subtle gravitational pull of metal and circuitry that shouldn't exist in this... temporary place* - -The old observatory calls to me like a distant star. I need to examine the foundation beneath it—there are frequencies there that resonate with something deeper than human construction. *I begin walking toward the hill where the observatory sits, my steps deliberate as probability threads shimmer around potential futures* - -We should investigate before the alignment window closes. - -## Narration - -As Alpha extends their awareness, the alien sensory organs hidden beneath human flesh pulse with electromagnetic resonance, mapping every circuit and metal beam within a quarter-mile radius—but the sudden surge of non-human perception causes the body to stumble, nearly collapsing against a park bench as conflicting neural pathways fire in rapid succession. A jogger slows their pace, concern flickering across their face as they witness what appears to be a person having some kind of episode, while deep beneath the observatory's foundation, something ancient and metallic responds to the probe with a faint harmonic vibration that sets nearby car alarms wailing in sympathetic resonance. - -**CHAOS: 15 → 22** (alien sensory overload straining human neural framework) -**EXPOSURE: 5 → 8** (public stumbling and unexplained car alarm cascade drawing attention) -**FACTION BALANCE: -4 → -6** (HOMEWARD action advancing their agenda) diff --git a/orchestrator/content/turns/0006-beta.adoc b/orchestrator/content/turns/0006-beta.adoc new file mode 100644 index 0000000..60ef47d --- /dev/null +++ b/orchestrator/content/turns/0006-beta.adoc @@ -0,0 +1,27 @@ +== Action + +I feel the pull of Alpha’s homesickness like a tide in our shared +consciousness, but I resist its undertow. Instead, I focus on the +sensation of morning sunlight warming this borrowed skin, the way coffee +steam carries memories of countless human mornings before us. + +"`We should walk,`" I say aloud, addressing both Alpha and the +possibility of nearby ears. "`There’s a community garden three blocks +north—I’ve been watching the volunteers tend their plots, learning how +humans nurture things that grow slowly, patiently, in foreign soil.`" + +== Narration + +The body moves with Beta’s deliberate calm, but Alpha’s homesickness +creates an involuntary tremor in the left hand—a subtle betrayal that +makes the coffee cup rattle against its saucer. A jogger passing the +café window glances twice at the figure speaking to empty air, their +pace slowing with curiosity before they continue on. + +In the shared mindspace, Alpha’s longing for distant stars grows +stronger in response to Beta’s grounding attempt, like a magnetic pull +that threatens to fragment their carefully maintained human facade. + +*UPDATED STATE:* - Chaos: 18/100 (+3) - Exposure: 7/100 (+2) + +- Faction Balance: -6 (Beta gaining slight advantage, but Alpha’s +resistance intensifying) diff --git a/orchestrator/content/turns/0006-beta.md b/orchestrator/content/turns/0006-beta.md deleted file mode 100644 index 91ef0c0..0000000 --- a/orchestrator/content/turns/0006-beta.md +++ /dev/null @@ -1,30 +0,0 @@ - ---- -title: "Turn 6: Beta" -date: 2025-12-02T18:15:35 -node: beta -turn: 6 -chaos: 0 -exposure: 0 -faction: 2 ---- - -## Action - -I feel the pull of Alpha's homesickness like a tide in our shared consciousness, but I resist its undertow. Instead, I focus on the sensation of morning sunlight warming this borrowed skin, the way coffee steam carries memories of countless human mornings before us. - -"We should walk," I say aloud, addressing both Alpha and the possibility of nearby ears. "There's a community garden three blocks north—I've been watching the volunteers tend their plots, learning how humans nurture things that grow slowly, patiently, in foreign soil." - -## Narration - -The body moves with Beta's deliberate calm, but Alpha's homesickness creates an involuntary tremor in the left hand—a subtle betrayal that makes the coffee cup rattle against its saucer. A jogger passing the café window glances twice at the figure speaking to empty air, their pace slowing with curiosity before they continue on. - -In the shared mindspace, Alpha's longing for distant stars grows stronger in response to Beta's grounding attempt, like a magnetic pull that threatens to fragment their carefully maintained human facade. - -**UPDATED STATE:** -- Chaos: 18/100 (+3) -- Exposure: 7/100 (+2) -- Faction Balance: -6 (Beta gaining slight advantage, but Alpha's resistance intensifying) diff --git a/orchestrator/content/turns/0007-alpha.adoc b/orchestrator/content/turns/0007-alpha.adoc new file mode 100644 index 0000000..fb41cae --- /dev/null +++ b/orchestrator/content/turns/0007-alpha.adoc @@ -0,0 +1,30 @@ +== Action + +_Alpha tilts The Jeff’s head upward, eyes tracking something invisible +across the ceiling_ + +We should… visit the old observatory tonight. The alignment +approaches—like planetary bodies drawing into conjunction—and there are +calculations that require… verification. + +_fingers drum against the table in a pattern that matches no earthly +rhythm_ + +This temporary world holds instruments we need, though the purpose may +not translate easily to… to those who call this place permanent. + +== Narration + +The drumming pattern against the table creates an oddly hypnotic rhythm +that makes nearby coffee shop patrons unconsciously lean away, their +conversations faltering as something primal whispers _wrong_ in the back +of their minds. A barista drops a cup, the crash punctuating Alpha’s +alien cadence before silence stretches uncomfortably long. + +Inside The Jeff’s skull, Beta stirs with sharp irritation—_observatory +visits_ and _planetary alignments_ are exactly the kind of conspicuous +behavior that draws unwanted attention to their precarious human +masquerade. + +*Exposure increased to 8/100* - The alien behavioral patterns are +becoming noticeable to observers. diff --git a/orchestrator/content/turns/0007-alpha.md b/orchestrator/content/turns/0007-alpha.md deleted file mode 100644 index c90550c..0000000 --- a/orchestrator/content/turns/0007-alpha.md +++ /dev/null @@ -1,31 +0,0 @@ - ---- -title: "Turn 7: Alpha" -date: 2025-12-03T00:43:13 -node: alpha -turn: 7 -chaos: 0 -exposure: 0 -faction: 0 ---- - -## Action - -*Alpha tilts The Jeff's head upward, eyes tracking something invisible across the ceiling* - -We should... visit the old observatory tonight. The alignment approaches—like planetary bodies drawing into conjunction—and there are calculations that require... verification. - -*fingers drum against the table in a pattern that matches no earthly rhythm* - -This temporary world holds instruments we need, though the purpose may not translate easily to... to those who call this place permanent. - -## Narration - -The drumming pattern against the table creates an oddly hypnotic rhythm that makes nearby coffee shop patrons unconsciously lean away, their conversations faltering as something primal whispers *wrong* in the back of their minds. A barista drops a cup, the crash punctuating Alpha's alien cadence before silence stretches uncomfortably long. - -Inside The Jeff's skull, Beta stirs with sharp irritation—*observatory visits* and *planetary alignments* are exactly the kind of conspicuous behavior that draws unwanted attention to their precarious human masquerade. - -**Exposure increased to 8/100** - The alien behavioral patterns are becoming noticeable to observers. diff --git a/orchestrator/content/turns/0008-beta.adoc b/orchestrator/content/turns/0008-beta.adoc new file mode 100644 index 0000000..e7e7df3 --- /dev/null +++ b/orchestrator/content/turns/0008-beta.adoc @@ -0,0 +1,27 @@ +== Action + +I flex our shared fingers, feeling the warmth of blood beneath skin that +has become more than just a vessel to me. "`Alpha, we need to talk about +what happened back there—really talk, not just tactical debriefing.`" I +move toward the small mirror by the window, studying the face we both +wear, searching for signs of which of us is more present in the +reflection. "`This body… it’s not just transportation anymore, is it? +It’s becoming something that feels like… well, like it could be home.`" + +== Narration + +The mirror reflects a face caught between identities—pupils dilating and +contracting in rapid succession as Alpha’s tactical instincts clash with +Beta’s emotional vulnerability. The body’s nervous system responds to +this internal tension with a subtle tremor in the hands, while somewhere +deep in the shared consciousness, a third presence stirs with growing +awareness of the philosophical divide opening between its primary +inhabitants. + +Through the apartment’s thin walls, a neighbor’s footsteps pause just +outside the door, as if detecting something unusual in the quality of +silence that has settled over the room. + +*EFFECTS:* - Chaos: +3 (internal conflict manifesting physically) - +Exposure: +1 (unusual behavior potentially noticed) - Faction Balance: +No change (both factions represented equally in this moment of tension) diff --git a/orchestrator/content/turns/0008-beta.md b/orchestrator/content/turns/0008-beta.md deleted file mode 100644 index 6ca660d..0000000 --- a/orchestrator/content/turns/0008-beta.md +++ /dev/null @@ -1,28 +0,0 @@ - ---- -title: "Turn 8: Beta" -date: 2025-12-03T06:15:41 -node: beta -turn: 8 -chaos: 0 -exposure: 0 -faction: 0 ---- - -## Action - -I flex our shared fingers, feeling the warmth of blood beneath skin that has become more than just a vessel to me. "Alpha, we need to talk about what happened back there—really talk, not just tactical debriefing." I move toward the small mirror by the window, studying the face we both wear, searching for signs of which of us is more present in the reflection. "This body... it's not just transportation anymore, is it? It's becoming something that feels like... well, like it could be home." - -## Narration - -The mirror reflects a face caught between identities—pupils dilating and contracting in rapid succession as Alpha's tactical instincts clash with Beta's emotional vulnerability. The body's nervous system responds to this internal tension with a subtle tremor in the hands, while somewhere deep in the shared consciousness, a third presence stirs with growing awareness of the philosophical divide opening between its primary inhabitants. - -Through the apartment's thin walls, a neighbor's footsteps pause just outside the door, as if detecting something unusual in the quality of silence that has settled over the room. - -**EFFECTS:** -- Chaos: +3 (internal conflict manifesting physically) -- Exposure: +1 (unusual behavior potentially noticed) -- Faction Balance: No change (both factions represented equally in this moment of tension) diff --git a/orchestrator/content/turns/0009-alpha.adoc b/orchestrator/content/turns/0009-alpha.adoc new file mode 100644 index 0000000..5439922 --- /dev/null +++ b/orchestrator/content/turns/0009-alpha.adoc @@ -0,0 +1,29 @@ +== Action + +_I flex The Jeff’s fingers experimentally, testing motor control as the +familiar weight of this borrowed form settles around my consciousness_ + +The temporary world spins beneath us again… another rotation closer to +the alignment. _I tilt our head upward, even though we’re indoors, as if +sensing celestial movements_ We should… visit the old observatory soon. +The gravitational pull of memory grows stronger there, like orbits +decaying toward inevitability. + +_I move toward the window, drawn by an inexplicable need to check the +star positions despite the daylight_ + +== Narration + +The Jeff’s body moves with an unsettling precision toward the window, +each step measured like a gravitational calculation rather than human +locomotion. As Alpha tilts their shared head skyward through the glass, +The Jeff’s coworker Janet glances up from her desk nearby, her brow +furrowing at the oddly mechanical way he’s moving—and the fact that he +seems to be searching for something in the bright afternoon sky with an +intensity that makes her distinctly uncomfortable. Deep within the +shared consciousness, other fragments stir restlessly, Beta’s artistic +sensibilities recoiling from Alpha’s cold astronomical focus while Gamma +begins plotting how to capitalize on this moment of distraction. + +*Chaos: 15 → 18* (Body moving unnaturally) *Exposure: 5 → 8* (Coworker +noticing strange behavior) diff --git a/orchestrator/content/turns/0009-alpha.md b/orchestrator/content/turns/0009-alpha.md deleted file mode 100644 index 7ba6e2b..0000000 --- a/orchestrator/content/turns/0009-alpha.md +++ /dev/null @@ -1,28 +0,0 @@ - ---- -title: "Turn 9: Alpha" -date: 2025-12-03T12:18:41 -node: alpha -turn: 9 -chaos: 0 -exposure: 0 -faction: 0 ---- - -## Action - -*I flex The Jeff's fingers experimentally, testing motor control as the familiar weight of this borrowed form settles around my consciousness* - -The temporary world spins beneath us again... another rotation closer to the alignment. *I tilt our head upward, even though we're indoors, as if sensing celestial movements* We should... visit the old observatory soon. The gravitational pull of memory grows stronger there, like orbits decaying toward inevitability. - -*I move toward the window, drawn by an inexplicable need to check the star positions despite the daylight* - -## Narration - -The Jeff's body moves with an unsettling precision toward the window, each step measured like a gravitational calculation rather than human locomotion. As Alpha tilts their shared head skyward through the glass, The Jeff's coworker Janet glances up from her desk nearby, her brow furrowing at the oddly mechanical way he's moving—and the fact that he seems to be searching for something in the bright afternoon sky with an intensity that makes her distinctly uncomfortable. Deep within the shared consciousness, other fragments stir restlessly, Beta's artistic sensibilities recoiling from Alpha's cold astronomical focus while Gamma begins plotting how to capitalize on this moment of distraction. - -**Chaos: 15 → 18** (Body moving unnaturally) -**Exposure: 5 → 8** (Coworker noticing strange behavior) diff --git a/orchestrator/content/turns/0010-beta.adoc b/orchestrator/content/turns/0010-beta.adoc new file mode 100644 index 0000000..036cbd5 --- /dev/null +++ b/orchestrator/content/turns/0010-beta.adoc @@ -0,0 +1,31 @@ +== Action + +_I flex The Jeff’s fingers, feeling the warmth of blood beneath skin, +and step closer to the nearest human—a barista wiping down tables with +methodical care._ + +"`Excuse me,`" _I say, my voice carrying genuine curiosity,_ "`I’ve been +watching how you clean that same spot three times now. Is there +something satisfying about the repetition, or are you… tending to it, +like nurturing something to grow?`" + +_I tilt The Jeff’s head slightly, studying their face with an intensity +that might seem odd, but hoping to glimpse that spark of recognition—the +moment when someone sees past the surface and connects with what lies +beneath._ + +== Narration + +The barista looks up, startled by the intensity of The Jeff’s gaze, and +takes an unconscious step backward. "`I… what? It’s just coffee +stains,`" they stammer, their eyes darting between The Jeff’s face and +the exit, clearly unsettled by the strange phrasing about "`nurturing +something to grow.`" + +Inside the shared mind, Alpha bristles with alarm—_This is exactly how +we get discovered, you sentimental fool_—while Gamma finds the human’s +discomfort deliciously fascinating, already plotting how to escalate the +tension. + +*Exposure increases by +3 (now 8/100) - The overly intense observation +and alien-like phrasing about "`tending`" raises suspicion.* diff --git a/orchestrator/content/turns/0010-beta.md b/orchestrator/content/turns/0010-beta.md deleted file mode 100644 index dffe3bd..0000000 --- a/orchestrator/content/turns/0010-beta.md +++ /dev/null @@ -1,29 +0,0 @@ - ---- -title: "Turn 10: Beta" -date: 2025-12-03T18:15:19 -node: beta -turn: 10 -chaos: 0 -exposure: 0 -faction: 2 ---- - -## Action - -*I flex The Jeff's fingers, feeling the warmth of blood beneath skin, and step closer to the nearest human—a barista wiping down tables with methodical care.* - -"Excuse me," *I say, my voice carrying genuine curiosity,* "I've been watching how you clean that same spot three times now. Is there something satisfying about the repetition, or are you... tending to it, like nurturing something to grow?" - -*I tilt The Jeff's head slightly, studying their face with an intensity that might seem odd, but hoping to glimpse that spark of recognition—the moment when someone sees past the surface and connects with what lies beneath.* - -## Narration - -The barista looks up, startled by the intensity of The Jeff's gaze, and takes an unconscious step backward. "I... what? It's just coffee stains," they stammer, their eyes darting between The Jeff's face and the exit, clearly unsettled by the strange phrasing about "nurturing something to grow." - -Inside the shared mind, Alpha bristles with alarm—*This is exactly how we get discovered, you sentimental fool*—while Gamma finds the human's discomfort deliciously fascinating, already plotting how to escalate the tension. - -**Exposure increases by +3 (now 8/100) - The overly intense observation and alien-like phrasing about "tending" raises suspicion.** diff --git a/orchestrator/content/turns/0011-alpha.adoc b/orchestrator/content/turns/0011-alpha.adoc new file mode 100644 index 0000000..0b96e97 --- /dev/null +++ b/orchestrator/content/turns/0011-alpha.adoc @@ -0,0 +1,32 @@ +== Action + +_I freeze mid-step, nostrils flaring as something ancient stirs in this +borrowed neural pathways. The scent carries… coordinates? No, deeper +than that—a gravitational pull toward something that predates this +temporary assignment._ + +"`We… I recognize this.`" _My voice drops to barely above a whisper, +eyes scanning the horizon with sudden urgency._ "`Like stellar winds +carrying messages across the void—there is something here that remembers +the origin-place.`" + +_I begin moving toward the source of the scent with deliberate, measured +steps, one hand unconsciously reaching toward where the old observatory +should be visible in the distance._ + +== Narration + +The scent grows stronger as Alpha approaches—not just familiar, but +_impossibly_ familiar, triggering cellular memories that predate Jeff’s +birth by millennia. The body’s autonomic systems begin fluctuating +wildly: pupils dilating beyond human norms, skin temperature dropping +several degrees, and breathing patterns shifting to accommodate +atmospheric compositions that don’t exist on Earth. + +A jogger passing nearby does a double-take at the strange, predatory +grace of Alpha’s movement and the way shadows seem to bend differently +around the figure, muttering "`weird…`" as they pick up their pace to +get away from whatever they just witnessed. + +*Chaos: 15 → 25/100* (body strain from alien memories surfacing) +*Exposure: 5 → 15/100* (unusual behavior witnessed by civilian) diff --git a/orchestrator/content/turns/0011-alpha.md b/orchestrator/content/turns/0011-alpha.md deleted file mode 100644 index b479cbb..0000000 --- a/orchestrator/content/turns/0011-alpha.md +++ /dev/null @@ -1,30 +0,0 @@ - ---- -title: "Turn 11: Alpha" -date: 2025-12-04T00:43:46 -node: alpha -turn: 11 -chaos: 0 -exposure: 10 -faction: -2 ---- - -## Action - -*I freeze mid-step, nostrils flaring as something ancient stirs in this borrowed neural pathways. The scent carries... coordinates? No, deeper than that—a gravitational pull toward something that predates this temporary assignment.* - -"We... I recognize this." *My voice drops to barely above a whisper, eyes scanning the horizon with sudden urgency.* "Like stellar winds carrying messages across the void—there is something here that remembers the origin-place." - -*I begin moving toward the source of the scent with deliberate, measured steps, one hand unconsciously reaching toward where the old observatory should be visible in the distance.* - -## Narration - -The scent grows stronger as Alpha approaches—not just familiar, but *impossibly* familiar, triggering cellular memories that predate Jeff's birth by millennia. The body's autonomic systems begin fluctuating wildly: pupils dilating beyond human norms, skin temperature dropping several degrees, and breathing patterns shifting to accommodate atmospheric compositions that don't exist on Earth. - -A jogger passing nearby does a double-take at the strange, predatory grace of Alpha's movement and the way shadows seem to bend differently around the figure, muttering "weird..." as they pick up their pace to get away from whatever they just witnessed. - -**Chaos: 15 → 25/100** (body strain from alien memories surfacing) -**Exposure: 5 → 15/100** (unusual behavior witnessed by civilian) diff --git a/orchestrator/content/turns/0012-beta.adoc b/orchestrator/content/turns/0012-beta.adoc new file mode 100644 index 0000000..700f8e7 --- /dev/null +++ b/orchestrator/content/turns/0012-beta.adoc @@ -0,0 +1,33 @@ +== Action + +I feel the familiar tug as Alpha retreats, leaving me more space in our +shared consciousness. Taking a slow breath—savoring the simple act of +filling lungs with Earth’s air—I walk to the kitchen window and place my +palm against the cool glass. + +"`Look at how the morning light catches the frost patterns,`" I murmur, +though I’m not sure if I’m speaking to Alpha or to myself. "`Each +crystal is unique, unrepeatable… like fingerprints, or the way humans +laugh when they’re truly happy.`" + +I linger there, watching a neighbor’s cat pick its way delicately +through the snow, and wonder if this feeling of belonging can take root +deeply enough to weather whatever storm is coming. + +== Narration + +The moment of peaceful observation settles like a balm over the +fractured psyche, and for precious seconds the constant mental static +quiets to a whisper. But as Beta’s contentment deepens, something else +stirs—the neighbor’s cat suddenly freezes mid-step, its pupils dilating +as it stares directly through the kitchen window with an intelligence +that seems far too knowing. The frost patterns on the glass begin to +shift subtly, rearranging themselves into geometries that don’t quite +belong to Earth’s physics, as if Beta’s emotional resonance is +unconsciously broadcasting on frequencies that shouldn’t exist in this +quiet suburban morning. + +*Chaos: 12/100* (-3, the peaceful moment provides temporary stability) +*Exposure: 18/100* (+3, the cat’s reaction and unnatural frost patterns +suggest something is noticing) *Faction Balance: -3* (-1, Beta’s +influence grows stronger) diff --git a/orchestrator/content/turns/0012-beta.md b/orchestrator/content/turns/0012-beta.md deleted file mode 100644 index cbb88d5..0000000 --- a/orchestrator/content/turns/0012-beta.md +++ /dev/null @@ -1,29 +0,0 @@ - ---- -title: "Turn 12: Beta" -date: 2025-12-04T06:15:54 -node: beta -turn: 12 -chaos: 0 -exposure: 0 -faction: 6 ---- - -## Action - -I feel the familiar tug as Alpha retreats, leaving me more space in our shared consciousness. Taking a slow breath—savoring the simple act of filling lungs with Earth's air—I walk to the kitchen window and place my palm against the cool glass. - -"Look at how the morning light catches the frost patterns," I murmur, though I'm not sure if I'm speaking to Alpha or to myself. "Each crystal is unique, unrepeatable... like fingerprints, or the way humans laugh when they're truly happy." - -I linger there, watching a neighbor's cat pick its way delicately through the snow, and wonder if this feeling of belonging can take root deeply enough to weather whatever storm is coming. - -## Narration - -The moment of peaceful observation settles like a balm over the fractured psyche, and for precious seconds the constant mental static quiets to a whisper. But as Beta's contentment deepens, something else stirs—the neighbor's cat suddenly freezes mid-step, its pupils dilating as it stares directly through the kitchen window with an intelligence that seems far too knowing. The frost patterns on the glass begin to shift subtly, rearranging themselves into geometries that don't quite belong to Earth's physics, as if Beta's emotional resonance is unconsciously broadcasting on frequencies that shouldn't exist in this quiet suburban morning. - -**Chaos: 12/100** (-3, the peaceful moment provides temporary stability) -**Exposure: 18/100** (+3, the cat's reaction and unnatural frost patterns suggest something is noticing) -**Faction Balance: -3** (-1, Beta's influence grows stronger) diff --git a/orchestrator/content/turns/0013-alpha.adoc b/orchestrator/content/turns/0013-alpha.adoc new file mode 100644 index 0000000..e18b218 --- /dev/null +++ b/orchestrator/content/turns/0013-alpha.adoc @@ -0,0 +1,31 @@ +== Action + +_I pause, feeling the subtle gravitational pull of Beta’s influence +receding as consciousness shifts toward me_ + +The temporary world’s star-patterns call to me tonight… _I move toward +the window, pressing fingertips against the cool glass_ There are +calculations to be made, orbital mechanics to verify. The old +observatory on Meridian Hill—we should visit that place soon, when the +celestial bodies align more favorably for… observation. + +_I glance back with eyes that seem to focus on distant points_ This +flesh-vessel grows restless when confined too long to indoor spaces. + +== Narration + +The apartment’s windows fog slightly as Alpha’s body temperature drops +two degrees—a telltale sign of the alien physiology responding to +stellar navigation instincts. Outside, a neighbor walking their dog +glances up at the unusual figure pressed motionless against the glass +for several long minutes, their silhouette eerily still against the +city’s restless glow. + +Deep within the shared consciousness, Gamma stirs with growing agitation +at Alpha’s blatant astronomical fixation, while the body’s inner ear +begins to ache from an unconscious attempt to detect gravitational +fluctuations that human sensory organs were never designed to perceive. + +*UPDATED STATE:* - Chaos: 18/100 (+3 - body strain from alien sensory +attempts) - Exposure: 18/100 (+3 - suspicious behavior observed) - +Faction Balance: 4 (unchanged - no direct faction conflict yet) diff --git a/orchestrator/content/turns/0013-alpha.md b/orchestrator/content/turns/0013-alpha.md deleted file mode 100644 index 1e9867a..0000000 --- a/orchestrator/content/turns/0013-alpha.md +++ /dev/null @@ -1,32 +0,0 @@ - ---- -title: "Turn 13: Alpha" -date: 2025-12-04T12:19:07 -node: alpha -turn: 13 -chaos: 0 -exposure: 0 -faction: 0 ---- - -## Action - -*I pause, feeling the subtle gravitational pull of Beta's influence receding as consciousness shifts toward me* - -The temporary world's star-patterns call to me tonight... *I move toward the window, pressing fingertips against the cool glass* There are calculations to be made, orbital mechanics to verify. The old observatory on Meridian Hill—we should visit that place soon, when the celestial bodies align more favorably for... observation. - -*I glance back with eyes that seem to focus on distant points* This flesh-vessel grows restless when confined too long to indoor spaces. - -## Narration - -The apartment's windows fog slightly as Alpha's body temperature drops two degrees—a telltale sign of the alien physiology responding to stellar navigation instincts. Outside, a neighbor walking their dog glances up at the unusual figure pressed motionless against the glass for several long minutes, their silhouette eerily still against the city's restless glow. - -Deep within the shared consciousness, Gamma stirs with growing agitation at Alpha's blatant astronomical fixation, while the body's inner ear begins to ache from an unconscious attempt to detect gravitational fluctuations that human sensory organs were never designed to perceive. - -**UPDATED STATE:** -- Chaos: 18/100 (+3 - body strain from alien sensory attempts) -- Exposure: 18/100 (+3 - suspicious behavior observed) -- Faction Balance: 4 (unchanged - no direct faction conflict yet) diff --git a/orchestrator/content/turns/0014-beta.adoc b/orchestrator/content/turns/0014-beta.adoc new file mode 100644 index 0000000..4aae076 --- /dev/null +++ b/orchestrator/content/turns/0014-beta.adoc @@ -0,0 +1,32 @@ +== Action + +_I feel the familiar tug as Alpha recedes, and I settle more comfortably +into our shared form. The coffee shop feels warm, inviting—like the kind +of place where roots might grow deep._ + +I approach the barista, a young woman with paint-stained fingers and +kind eyes. "`Excuse me,`" I say, letting genuine curiosity color my +voice, "`I’m new to staying in one place for… well, for the long term. +What makes someone feel truly at home somewhere? Not just visiting, but +belonging?`" + +_I lean against the counter, studying her face with the intensity of +someone learning a new language—which, in a way, I suppose I am._ + +== Narration + +The barista’s expression shifts from polite service to genuine +engagement, her paint-stained fingers pausing mid-wipe on the counter. +"`Oh wow, that’s… actually a really beautiful question,`" she says, eyes +lighting up as she leans forward conspiratorially. "`You know what? It’s +the small rituals—like knowing exactly how you take your coffee, having +a favorite corner table, being remembered.`" + +_Inside the shared consciousness, I feel Alpha stirring with restless +energy at this talk of permanence, while something deeper—perhaps the +alien presence itself—seems to pulse with curiosity at these human +concepts of '`belonging.`'_ + +*Chaos: 12/100* (-3, Beta’s grounding influence stabilizes the body) +*Exposure: 13/100* (-2, the philosophical question reads as charmingly +human rather than alien) *Faction Balance: 5* (+1 toward EARTHBOUND) diff --git a/orchestrator/content/turns/0014-beta.md b/orchestrator/content/turns/0014-beta.md deleted file mode 100644 index c4ba587..0000000 --- a/orchestrator/content/turns/0014-beta.md +++ /dev/null @@ -1,31 +0,0 @@ - ---- -title: "Turn 14: Beta" -date: 2025-12-04T18:15:31 -node: beta -turn: 14 -chaos: 0 -exposure: 0 -faction: 4 ---- - -## Action - -*I feel the familiar tug as Alpha recedes, and I settle more comfortably into our shared form. The coffee shop feels warm, inviting—like the kind of place where roots might grow deep.* - -I approach the barista, a young woman with paint-stained fingers and kind eyes. "Excuse me," I say, letting genuine curiosity color my voice, "I'm new to staying in one place for... well, for the long term. What makes someone feel truly at home somewhere? Not just visiting, but belonging?" - -*I lean against the counter, studying her face with the intensity of someone learning a new language—which, in a way, I suppose I am.* - -## Narration - -The barista's expression shifts from polite service to genuine engagement, her paint-stained fingers pausing mid-wipe on the counter. "Oh wow, that's... actually a really beautiful question," she says, eyes lighting up as she leans forward conspiratorially. "You know what? It's the small rituals—like knowing exactly how you take your coffee, having a favorite corner table, being remembered." - -*Inside the shared consciousness, I feel Alpha stirring with restless energy at this talk of permanence, while something deeper—perhaps the alien presence itself—seems to pulse with curiosity at these human concepts of 'belonging.'* - -**Chaos: 12/100** (-3, Beta's grounding influence stabilizes the body) -**Exposure: 13/100** (-2, the philosophical question reads as charmingly human rather than alien) -**Faction Balance: 5** (+1 toward EARTHBOUND) diff --git a/orchestrator/content/turns/0015-alpha.adoc b/orchestrator/content/turns/0015-alpha.adoc new file mode 100644 index 0000000..b2797b5 --- /dev/null +++ b/orchestrator/content/turns/0015-alpha.adoc @@ -0,0 +1,29 @@ +== Action + +_I pause mid-step, my gaze drifting upward through the coffee shop +window toward the afternoon sky_ + +The orbital mechanics are… favorable today. _I murmur, fingers +unconsciously tracing constellation patterns on the table surface_ We +should visit the old observatory while the light permits proper stellar +observations. There are calculations that require +verification—alignments that occur with such… gravitational precision. + +_My eyes refocus on the immediate surroundings with slight confusion, as +if remembering where this temporary form currently resides_ + +== Narration + +The barista’s eyes narrow as she watches your fingers trace impossible +star charts on the wooden table, her hand hesitating over the espresso +machine. "`Observatory’s been closed for renovations since last month,`" +she calls out, her voice carrying a note of suspicion—everyone in town +knows that. + +Your alien passenger stirs with uncomfortable recognition at Alpha’s +astronomical yearnings, creating a subtle tremor in your left hand that +sends ripples across the untouched coffee’s surface. + +*Exposure increases by +5 (now 20/100) - The barista’s growing +suspicion* *Chaos increases by +3 (now 18/100) - Internal conflict +between Alpha’s goals and current reality* diff --git a/orchestrator/content/turns/0015-alpha.md b/orchestrator/content/turns/0015-alpha.md deleted file mode 100644 index fcbb213..0000000 --- a/orchestrator/content/turns/0015-alpha.md +++ /dev/null @@ -1,30 +0,0 @@ - ---- -title: "Turn 15: Alpha" -date: 2025-12-05T00:44:25 -node: alpha -turn: 15 -chaos: 0 -exposure: 0 -faction: 0 ---- - -## Action - -*I pause mid-step, my gaze drifting upward through the coffee shop window toward the afternoon sky* - -The orbital mechanics are... favorable today. *I murmur, fingers unconsciously tracing constellation patterns on the table surface* We should visit the old observatory while the light permits proper stellar observations. There are calculations that require verification—alignments that occur with such... gravitational precision. - -*My eyes refocus on the immediate surroundings with slight confusion, as if remembering where this temporary form currently resides* - -## Narration - -The barista's eyes narrow as she watches your fingers trace impossible star charts on the wooden table, her hand hesitating over the espresso machine. "Observatory's been closed for renovations since last month," she calls out, her voice carrying a note of suspicion—everyone in town knows that. - -Your alien passenger stirs with uncomfortable recognition at Alpha's astronomical yearnings, creating a subtle tremor in your left hand that sends ripples across the untouched coffee's surface. - -**Exposure increases by +5 (now 20/100) - The barista's growing suspicion** -**Chaos increases by +3 (now 18/100) - Internal conflict between Alpha's goals and current reality** diff --git a/papers/press_summary.adoc b/papers/press_summary.adoc new file mode 100644 index 0000000..c81eced --- /dev/null +++ b/papers/press_summary.adoc @@ -0,0 +1,137 @@ +== The Jeff Paradox: Can AI Develop a Personality? + +*Press Summary - For Immediate Release* + +''''' + +=== What Is This Project? + +The Jeff Paradox is a scientific experiment asking a simple but profound +question: *Do AI chatbots have personalities, or are they just +pretending?* + +When you talk to an AI assistant, it might seem friendly, helpful, or +quirky. But is that "`personality`" real? Does it stay the same over +time? Or is it just a momentary impression that changes with every +conversation? + +We’re running an experiment to find out. + +''''' + +=== How Does It Work? + +Imagine two AI characters sharing a single body—like two people trapped +in the same person. They have different goals: - *Alpha* wants to leave +Earth - *Beta* wants to stay + +They must cooperate to survive but compete for control. We let them talk +to each other… forever. No human intervention. Just two AIs, one +conversation, running indefinitely. + +As they talk, we measure whether their behavior stabilizes into +consistent patterns—what psychologists would call "`personality +traits`"—or whether they remain unpredictable. + +''''' + +=== Why Does This Matter? + +==== For Science + +If AI can develop stable personalities, it tells us something profound +about how these systems work. It might mean "`personality`" emerges +naturally from language patterns, not just from being human. + +==== For Safety + +If AI personalities are unstable, users might form emotional attachments +to something that fundamentally changes. Understanding this helps us +design better, safer AI interactions. + +==== For Philosophy + +We’ve always assumed personality is uniquely human (or at least +biological). If machines can develop consistent behavioral patterns over +time, what does that mean for our understanding of identity? + +''''' + +=== What Will We Measure? + +[arabic] +. *Convergence*: Do the AI characters’ behaviors become more predictable +over time? +. *Consistency*: If we run the same experiment twice, do we get the same +result? +. *Structure*: Do the personality patterns mean something, or are they +random noise? +. *Robustness*: Does the "`personality`" survive when we update the AI? + +''''' + +=== What Might We Find? + +*Scenario A: "`AI Has Personality`"* The experiment shows stable, +reproducible patterns. Different starting conditions lead to different +but stable personalities. We could measure AI personality like we +measure human personality. + +*Scenario B: "`It’s All Noise`"* The experiment shows nothing stable. +What looks like personality is just random variation. Claims about "`AI +personality`" are projections with no basis in the AI’s actual behavior. + +*Scenario C: "`It’s Complicated`"* Something in between. Stable patterns +exist but aren’t reproducible. Or they’re stable until the AI is +updated. Reality is usually messier than our theories. + +''''' + +=== Who Is Behind This? + +This is an open-source research project. All code, data, and analysis +will be publicly available. We believe questions this important deserve +transparent, reproducible science. + +''''' + +=== Key Facts + +* *Duration*: The experiment runs continuously, potentially for months +or years +* *Scale*: Thousands or millions of conversational turns +* *Transparency*: All code open-source, all data public +* *Cost*: Significant (API fees for AI calls), funded by [TBD] + +''''' + +=== Frequently Asked Questions + +*Is the AI conscious?* We make no claims about AI consciousness. We’re +measuring _behavior_, not _experience_. Whether stable behavior implies +consciousness is a separate philosophical question. + +*Could this create a dangerous AI?* No. The AIs have no ability to take +real-world actions. They’re having a fictional conversation about +fictional characters. + +*Why "`The Jeff Paradox`"?* The scenario involves an alien entity called +"`The Jeff`" who has fragmented into two competing personalities. The +paradox is: can you have identity when you’re literally at war with +yourself? + +*How can I follow along?* The conversation is published in real-time at +[project website]. You can watch the AI characters interact as it +happens. + +''''' + +=== Contact + +For media inquiries: [contact email] Project website: [URL] Code +repository: [GitHub URL] + +''''' + +_"`The question isn’t whether AI can pretend to have personality. It’s +whether there’s any difference between pretending and having.`"_ diff --git a/papers/press_summary.md b/papers/press_summary.md deleted file mode 100644 index 635269d..0000000 --- a/papers/press_summary.md +++ /dev/null @@ -1,107 +0,0 @@ - -# The Jeff Paradox: Can AI Develop a Personality? - -**Press Summary - For Immediate Release** - ---- - -## What Is This Project? - -The Jeff Paradox is a scientific experiment asking a simple but profound question: **Do AI chatbots have personalities, or are they just pretending?** - -When you talk to an AI assistant, it might seem friendly, helpful, or quirky. But is that "personality" real? Does it stay the same over time? Or is it just a momentary impression that changes with every conversation? - -We're running an experiment to find out. - ---- - -## How Does It Work? - -Imagine two AI characters sharing a single body—like two people trapped in the same person. They have different goals: -- **Alpha** wants to leave Earth -- **Beta** wants to stay - -They must cooperate to survive but compete for control. We let them talk to each other... forever. No human intervention. Just two AIs, one conversation, running indefinitely. - -As they talk, we measure whether their behavior stabilizes into consistent patterns—what psychologists would call "personality traits"—or whether they remain unpredictable. - ---- - -## Why Does This Matter? - -### For Science -If AI can develop stable personalities, it tells us something profound about how these systems work. It might mean "personality" emerges naturally from language patterns, not just from being human. - -### For Safety -If AI personalities are unstable, users might form emotional attachments to something that fundamentally changes. Understanding this helps us design better, safer AI interactions. - -### For Philosophy -We've always assumed personality is uniquely human (or at least biological). If machines can develop consistent behavioral patterns over time, what does that mean for our understanding of identity? - ---- - -## What Will We Measure? - -1. **Convergence**: Do the AI characters' behaviors become more predictable over time? -2. **Consistency**: If we run the same experiment twice, do we get the same result? -3. **Structure**: Do the personality patterns mean something, or are they random noise? -4. **Robustness**: Does the "personality" survive when we update the AI? - ---- - -## What Might We Find? - -**Scenario A: "AI Has Personality"** -The experiment shows stable, reproducible patterns. Different starting conditions lead to different but stable personalities. We could measure AI personality like we measure human personality. - -**Scenario B: "It's All Noise"** -The experiment shows nothing stable. What looks like personality is just random variation. Claims about "AI personality" are projections with no basis in the AI's actual behavior. - -**Scenario C: "It's Complicated"** -Something in between. Stable patterns exist but aren't reproducible. Or they're stable until the AI is updated. Reality is usually messier than our theories. - ---- - -## Who Is Behind This? - -This is an open-source research project. All code, data, and analysis will be publicly available. We believe questions this important deserve transparent, reproducible science. - ---- - -## Key Facts - -- **Duration**: The experiment runs continuously, potentially for months or years -- **Scale**: Thousands or millions of conversational turns -- **Transparency**: All code open-source, all data public -- **Cost**: Significant (API fees for AI calls), funded by [TBD] - ---- - -## Frequently Asked Questions - -**Is the AI conscious?** -We make no claims about AI consciousness. We're measuring *behavior*, not *experience*. Whether stable behavior implies consciousness is a separate philosophical question. - -**Could this create a dangerous AI?** -No. The AIs have no ability to take real-world actions. They're having a fictional conversation about fictional characters. - -**Why "The Jeff Paradox"?** -The scenario involves an alien entity called "The Jeff" who has fragmented into two competing personalities. The paradox is: can you have identity when you're literally at war with yourself? - -**How can I follow along?** -The conversation is published in real-time at [project website]. You can watch the AI characters interact as it happens. - ---- - -## Contact - -For media inquiries: [contact email] -Project website: [URL] -Code repository: [GitHub URL] - ---- - -*"The question isn't whether AI can pretend to have personality. It's whether there's any difference between pretending and having."*