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
154 changes: 154 additions & 0 deletions CHANGELOG.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,154 @@
== Changelog

All notable changes to `+oikosbot+` will be documented in this file.

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.

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].

=== [Unreleased]

==== Added

* feat(policies): add the OikosBot *finding taxonomy* — three orthogonal
axes (`+intent+` / `+maintenance+` / `+locus+`) defined canonically in
`+NEUROSYM.a2ml [finding-taxonomy]+`. The confidence-derived `+intent+`
axis (≡ the gitbot-fleet Safety Triangle’s 0.95 / 0.85 thresholds) is
made executable in `+policies/finding_taxonomy.ecl+`;
`+locus=externalities+` is the eco/econ sense realised by the
sustainability policies. Adds `+policies/README.adoc+`.
* feat(crates): extract the Rust analysis workspace from
`+gitbot-fleet/bots/sustainabot/+` into this repo, renamed
`+sustainabot-*+` → `+oikosbot-*+`
(`+oikosbot-cli+`/`+-analysis+`/`+-metrics+`/`+-sarif+`/`+-eclexia+`,
plus the optional `+oikosbot-fleet+` bridge). Adds `+policies/+`,
`+fuzz/+`, `+examples/+`, and `+QUICKSTART.md+`. Builds and tests green
(35 tests).
* docs: `+DISAMBIGUATION.adoc+` — canonical breakdown of *oikos* (the
DSL) vs *OikosBot* (this App) vs *sustainabot* (a reserved gitbot-fleet
slot), with guardrails to prevent the misfiling recurring.
* ci(rust): add a `+rust+` job (fmt-check + build + test, informational
clippy) to `+ci.yml+` and a `+cargo+` dependabot ecosystem. New
`+just rust-build+` / `+rust-test+` targets.
* feat(bot): missing AffineScript modules `+GitHubAPI+`, `+GitHubApp+`,
and the TEA runtime (`+tea/Cmd+`, `+tea/Runtime+`, `+tea/Sub+`) added to
`+bot-integration-affine/src/+` from the former sustainabot tree.
* feat(bot): `+bot-integration-affine/+` Phase 5 AffineScript scaffold
(#35) — initial AS port of OikosBot; cross-module type-check, JSON
payload extraction, and HTTP-server accept loop are gated on upstream
`+affinescript+` stdlib work (Json v0.3 RSR rewire `+affinescript#421+`
+ Http server FFI `+affinescript#425+`).
* feat: Oikos Bot v0.1.0-beta - TEA architecture with typed HTTP routing
* feat: add GitHub App manifest for developer programme registration

==== Removed

* chore(containers): remove the stale ReScript-era `+containers/+` that
were ported with the extraction but still built the long-removed
`+bot-integration/+` ReScript bot (`+*.res.js+`, `+rescript-runtime/+`)
and predated the Rust/AffineScript stack. Deployment images will be
rebuilt natively when OikosBot is deployable.

==== Fixed

* fix(docs): purge stale post-extraction identity references —
`+SECURITY.md+` carried two dead project names (`+SustainaBot+` ×3 and a
`+scarcity-bot+` GitLab vuln-reporting URL, plus `+SCARCITY_API_KEY+`),
a Ruby example path, and leaked `+Memory #N+` artifacts; and the
`+crates/oikosbot-fleet+` bridge-identity note in `+.claude/CLAUDE.md+`
+ `+META.a2ml+` ADR-002 still said `+BotId::Sustainabot+` after the
bridge moved to its own `+BotId::Oikosbot+` identity. (Deeper
`+SECURITY.md+` security-substance — reporting channel, PGP placeholder
— flagged for a separate review.)
* fix(lexer): opt in to logos 0.16 `+allow_greedy+` for line-comment
skip (#37) — `+#[logos(skip("--[^\n]*", allow_greedy = true))]+`
replaces the unbounded greedy attribute that logos 0.16’s new lint
rejects.
* fix(codeql): switch language matrix to '`actions`' (no JS/TS in repo)
(#23)
* fix(codeql): switch language matrix to '`actions`' (no JS/TS in repo)
(#22)
* fix(ci): sync hypatia-scan.yml to canonical (413:
env.HOME+Phase-2+SARIF) (#20)
* fix(codeql): switch language matrix to '`actions`' (no JS/TS in repo)
(#19)
* fix(ci): rsr-antipattern.yml duplicate heredoc (#15)
* fix(ci): move secret-scanner Cargo.toml gate from job-level if: to
step-level (#17)
* fix(codeql): switch language matrix to '`actions`' (no JS/TS in repo)
(#16)
* fix(security): ERR-WF-008 and ERR-WF-009 fixes
* fix(ci): update quality.yml workflow
* fix(security): CodeQL language matrix correction

==== Changed

* chore(decouple): sever OikosBot’s dependency on `+gitbot-fleet+`. The
default `+cargo+` workspace *excludes* `+crates/oikosbot-fleet+` (the
only fleet-aware crate), and the optional `+panic-attacker+` /
`+eclexia+` path dependencies that escaped the repo were neutralised to
no-op feature seams — OikosBot now builds from a clean checkout with no
sibling repos present.
* chore(fleet-bridge): the optional `+oikosbot-fleet+` bridge now
publishes findings under its own `+BotId::Oikosbot+` identity instead of
borrowing the fleet’s `+BotId::Sustainabot+` slot (requires a
gitbot-fleet that provides the `+Oikosbot+` variant). Keeps OikosBot
distinct from the separate, reserved `+sustainabot+` fleet slot.
* chore(repo): split OikosBot into its own repository separate from the
Oikos economics accounting DSL.
* chore(bot-integration): clean shutoff of the legacy ReScript
`+bot-integration/+` (#41) — 208 files / -33,061 lines: removes
`+bot-integration/+`, `+containers/+`, `+.github/workflows/oikos.yml+`,
the `+rescript:+` job from `+ci.yml+`, the npm/bot-integration
dependabot entry, and `+.gitmodules+`. README / ARCHITECTURE / ROADMAP /
DEPLOY / disambiguation docs repointed at `+bot-integration-affine/+`.
No production blast radius (`+.github/app.yml+` URLs were
`+*.example.com+` placeholders).
* chore(license): align stale SPDX headers + `+Cargo.toml+` manifest
with `+MPL-2.0+` (#36) — completes the 2026-05-22 EUPL → MPL migration
that had left 45 file headers + the manifest at `+EUPL-1.2+`.
* chore(license): remove historical `+LICENSES/EUPL-1.2.txt+` (#40) —
final cleanup of the EUPL transition artefact, deferred from #38 as a
transition-period record.
* refactor: convert TypeScript to JavaScript (language policy
compliance)
* refactor: complete eco-bot → oikos rename across all files
* refactor: rename eco-bot to oikos, replace nerdctl with Svalinn/Vörðr

==== Documentation

* docs(license): DR-010 supersedes DR-002 — `+MPL-2.0+` adoption +
README badge / paragraph flip (#38) — closes the 2026-05-22 LICENSE
migration that lacked a Decision Record. Documents PMPL ↔ EUPL
distribution-compatibility incoherence as the migration rationale.
* docs(readme): add SPDX header and/or standard badges
* docs: add manifest flow instructions to DEPLOY.md
* docs(security): add SECURITY.md

==== CI

* ci(secret-scanner): drop duplicate –fail from trufflehog extra_args
(#14)
* ci(dependabot): restore cargo PR limit so security + version PRs flow
(#12)
* ci: fix workflow-linter YAML parse error + self-flag bug
* ci(antipattern): fix top-level dir matching + benchmarks/lsp/bench
filename allowlists (#10)
* ci(antipattern): TS check reads .claude/CLAUDE.md exemption table (#9)

=== 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.

'''''
83 changes: 0 additions & 83 deletions CHANGELOG.md

This file was deleted.

120 changes: 120 additions & 0 deletions CODE_OF_CONDUCT.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
// SPDX-License-Identifier: CC-BY-SA-4.0 // SPDX-FileCopyrightText:
2024-2025 hyperpolymath

== Code of Conduct

=== Our Pledge

We as members, contributors, and leaders pledge to make participation in
our community a harassment-free experience for everyone, regardless of
age, body size, visible or invisible 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.

We pledge to act and interact in ways that contribute to an open,
welcoming, diverse, inclusive, and healthy community.

=== Our Standards

Examples of behavior that contributes to a positive environment:

* Demonstrating empathy and kindness toward other people
* Being respectful of differing opinions, viewpoints, and experiences
* Giving and gracefully accepting constructive feedback
* Accepting responsibility and apologizing to those affected by our
mistakes
* Focusing on what is best for the overall community
* Considering ecological and economic impacts of technical decisions

Examples of unacceptable behavior:

* The use of sexualized language or imagery, and sexual attention or
advances
* Trolling, insulting or 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

=== Ecological & Economic Responsibility

As a project focused on ecological and economic code analysis, we also
expect:

* Consideration of the environmental impact of contributions
* Respect for sustainable computing practices
* Thoughtful discussion of trade-offs between different approaches
* Recognition that economic efficiency includes long-term sustainability

=== Enforcement Responsibilities

Community leaders are responsible for clarifying and enforcing our
standards and will take appropriate and fair corrective action in
response to any behavior that they deem inappropriate, threatening,
offensive, or harmful.

=== Scope

This Code of Conduct applies within all community spaces, and also
applies when an individual is officially representing the community in
public spaces.

=== Enforcement

Instances of abusive, harassing, or otherwise unacceptable behavior may
be reported to the community leaders responsible for enforcement at:

* GitHub: Open an issue with the `+conduct+` label
* Email: conduct@hyperpolymath.com (if available)

All complaints will be reviewed and investigated promptly and fairly.

=== Enforcement Guidelines

Community leaders will follow these guidelines in determining
consequences:

==== 1. Correction

*Community Impact*: Minor inappropriate behavior.

*Consequence*: Private, written warning with clarity around the nature
of the violation. A public apology may be requested.

==== 2. Warning

*Community Impact*: A violation through a single incident or series of
actions.

*Consequence*: A warning with consequences for continued behavior. No
interaction with the people involved for a specified period. This
includes avoiding interactions in community spaces as well as external
channels.

==== 3. Temporary Ban

*Community Impact*: A serious violation of community standards.

*Consequence*: A temporary ban from any sort of interaction or public
communication with the community for a specified period.

==== 4. Permanent Ban

*Community Impact*: Demonstrating a pattern of violation of community
standards, including sustained inappropriate behavior, harassment, or
aggression.

*Consequence*: A permanent ban from any sort of public interaction
within the community.

=== 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.

Community Impact Guidelines were inspired by
https://github.com/mozilla/diversity[Mozilla’s code of conduct
enforcement ladder].
Loading
Loading