Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .github/CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,3 +19,9 @@ This project follows the [Rhodium Standard Repository

By contributing, you agree that your contributions will be licensed
under MPL-2.0 (with MPL-2.0 as automatic legal fallback).

## Development guide

See [CONTRIBUTING.adoc](../CONTRIBUTING.adoc) for the build walkthrough,
code/test conventions, metadata workflow and release/fleet coordination.
See [launch readiness](../docs/LAUNCH-READINESS.adoc) before proposing a release.
22 changes: 20 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -59,15 +59,17 @@ jobs:
~/.cargo/git
target
key: cargo-${{ runner.os }}-${{ hashFiles('Cargo.lock') }}
# Uses the runner's preinstalled stable toolchain (no third-party action).
# rustup honors rust-toolchain.toml; no third-party toolchain action.
# NB: the default workspace deliberately EXCLUDES crates/oikosbot-fleet so
# OikosBot builds with no dependency on hyperpolymath/gitbot-fleet.
- name: Format check
run: cargo fmt --check
- name: Build (standalone workspace)
run: cargo build --workspace --locked
- name: Test (standalone workspace)
- name: Test default standalone workspace
run: cargo test --workspace --locked
- name: Test all retained features
run: cargo test --workspace --all-features --locked
- name: Eclexia adapter feature and rejection checks
run: bash tests/test-eclexia-adapter.sh
- name: Clippy (informational)
Expand All @@ -82,6 +84,8 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v7.0.1
- name: Composite Action argument contract
run: bash tests/test-action-arguments.sh
- name: Check shell wrapper syntax
run: bash -n bot-integration-affine/check.sh
security:
Expand All @@ -108,3 +112,17 @@ jobs:
with:
sarif_file: "trivy-results.sarif"
continue-on-error: true
container-contract:
name: Container smoke contract
needs: rust
runs-on: ubuntu-latest
timeout-minutes: 30
permissions:
contents: read
steps:
- name: Checkout repository
uses: actions/checkout@v7.0.1
- name: Build candidate
run: docker build -f Containerfile -t oikosbot:verify .
- name: Paired clean and firing fixtures, version and non-root execution
run: bash tests/test-container-contract.sh oikosbot:verify
14 changes: 13 additions & 1 deletion .github/workflows/publish-image.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ on:
- 'Cargo.toml'
- 'Cargo.lock'
- 'Containerfile'
- 'rust-toolchain.toml'
- 'tests/test-container-contract.sh'
- '.dockerignore'
- '.github/workflows/publish-image.yml'
workflow_dispatch: {}
Expand Down Expand Up @@ -53,9 +55,19 @@ jobs:
flavor: |
latest=false
tags: |
type=raw,value=latest,enable={{is_default_branch}}
type=raw,value=development,enable={{is_default_branch}}
type=semver,pattern={{version}}
type=sha
- name: Build candidate for smoke contract
uses: docker/build-push-action@v7.4.0
with:
context: .
file: ./Containerfile
load: true
tags: oikosbot:verify
cache-from: type=gha
- name: Test candidate contract
run: bash tests/test-container-contract.sh oikosbot:verify
- name: Build and push
id: push
uses: docker/build-push-action@v7.4.0
Expand Down
6 changes: 6 additions & 0 deletions .machine_readable/descriptiles/ECOSYSTEM.a2ml
Original file line number Diff line number Diff line change
Expand Up @@ -31,3 +31,9 @@ projects = [
{ name = "eclexia", repo = "hyperpolymath/eclexia", relation = "policy-language + future-host", note = "Turing-complete general-purpose language implementing the Economics-as-Code paradigm; far broader in scope than this bot. Today: the .ecl policy surface (currently evaluated by a filename-matching FAKE backend — see DEBT.adoc). Intended trajectory: OikosBot's dominance/frontier maths moves into the Eclexia stdlib so its currently-inert @optimize becomes semantically real for every Eclexia program; OikosBot's DEA duals become the real solver behind shadow_price(), replacing hand-set constants; and OikosBot is eventually IMPLEMENTED IN Eclexia. OikosBot is its first serious application, not its owner." },
{ name = "standards", repo = "hyperpolymath/standards", relation = "reusable-workflows", note = "Supplies the reusable workflows this repo calls (mirror, secret-scanner, scorecard, governance). Pin bumps here are estate-coordinated." }
]

[pareto-research-audit]
date = "2026-09-26"
reference = "docs/research/EVIDENCE-SCOPED-PARETO.adoc"
related = ["eclexia", "echo-types", "residual-evidence-types", "epistemic-types", "tropical-types", "choreographic-types", "absolute-zero", "januskey", "proven-tests-and-benches"]
relationship = "Pinned source inspection and conceptual comparison only; no imported proof or new runtime dependency."
13 changes: 10 additions & 3 deletions .machine_readable/descriptiles/META.a2ml
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,13 @@ build-tool = "just"

[maintenance-axes]
scoping-first = true
axis-1 = "must > intend > like"
axis-2 = "corrective > adaptive > perfective"
axis-3 = "systems > compliance > effects"
canonical = "NEUROSYM.a2ml [finding-taxonomy]"
axis-1 = "must > intend > wish"
axis-2 = "corrective | adaptive | perfective | preventive"
axis-3 = "systems | compliance | externalities"

[decision-contract-2026-09-26]
status = "proposed-implementation-awaiting-verification"
reference = "docs/research/EVIDENCE-SCOPED-PARETO.adoc"
principle = "Separate modeled feasibility, robust comparison, evidence adequacy and policy authorization; do not infer must/auto-fix authority from confidence."
launch = "hold-general-launch-and-regulator-claims"
16 changes: 9 additions & 7 deletions .machine_readable/descriptiles/NEUROSYM.a2ml
Original file line number Diff line number Diff line change
Expand Up @@ -21,21 +21,23 @@ report-format = "logtalk"
# model = "hypatia-v2"

[finding-taxonomy]
# Every OikosBot finding is classified on three orthogonal axes, layered
# intent -> action -> outcome. The intent axis is executable Eclexia
# (policies/finding_taxonomy.ecl); see policies/README.adoc for the prose.
# Finding vocabulary (unclassified legacy/synthetic findings may omit tags).
# Pattern findings are classified on three orthogonal axes, layered
# intent -> action -> outcome. The legacy numeric example is Eclexia
# (policies/finding_taxonomy.ecl), not executed by the builtin Rust adapter.
axes = ["intent", "maintenance", "locus"]

[finding-taxonomy.intent]
# Deontic force. DERIVED from the finding's confidence score (not hand-tagged),
# and identical to the gitbot-fleet Safety Triangle and its thresholds.
# Canonical vocabulary; categories do not grant mutation authority.
# Resource Confidence is not a probability. Current Rust heuristic rules
# emit wish; future promotion requires validated evidence AND policy authority.
values = ["must", "intend", "wish"]
must = { triangle = "eliminate", confidence = ">=0.95", disposition = "auto-fix" }
must = { triangle = "eliminate", confidence = ">=0.95", disposition = "policy-review-required" }
intend = { triangle = "substitute", confidence = ">=0.85", disposition = "review" }
wish = { triangle = "control", confidence = "<0.85", disposition = "human" }

[finding-taxonomy.maintenance]
# Why the change is made (Swanson 1976 / ISO/IEC 14764). Hand-tagged per rule.
# Unordered categories. Why the change is made (Swanson 1976 / ISO/IEC 14764). Hand-tagged per rule.
values = ["corrective", "adaptive", "perfective", "preventive"]

[finding-taxonomy.locus]
Expand Down
Loading
Loading