Skip to content

Commit 48b7ce2

Browse files
committed
chore(bots): empty the misfiled sustainabot slot; add anti-vendoring guardrails
A full standalone copy of OikosBot (its own Rust workspace, Haskell analyzer, AffineScript bot, containers and policies) had been vendored into bots/sustainabot/ — one of which even grew a hard path dependency back into shared-context/. That implementation has been extracted to its own repo, hyperpolymath/oikosbot, and renamed oikosbot-*. This commit resets the slot and guards against recurrence: - Remove the 99 vendored files from bots/sustainabot/; leave a placeholder README.adoc that reserves the slot and points to hyperpolymath/oikosbot. - Add bots/README.adoc: bot directories are THIN ADAPTERS, never homes for standalone products, and bot crates must not add repo-escaping path deps. - CLAUDE.md: new critical invariant #6 (thin adapters; sustainabot is NOT OikosBot and NOT the oikos DSL). - README/ROADMAP/docs: mark sustainabot's slot "Reserved" and disambiguate. The fleet KEEPS sustainabot as a member: BotId::Sustainabot, the coordinator roster, and safety-triangle routing in shared-context/ are untouched (shared-context still builds green). Only the vendored directory was emptied. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RozeeLxpJsd3WWFngaZWz3
1 parent 989659f commit 48b7ce2

104 files changed

Lines changed: 75 additions & 15034 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.claude/CLAUDE.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,17 @@ Control (report < 0.85) → Human review required
8181
3. No hardcoded secrets — use env vars with `${VAR:-}` defaults.
8282
4. Fix scripts must be idempotent (safe to run multiple times).
8383
5. Confidence thresholds gate all automated actions.
84+
6. **`bots/<name>/` directories are THIN ADAPTERS, not homes for standalone
85+
products.** Never vendor an entire external project (its own Cargo
86+
workspace, analyzers, containers, deployment, docs) into a bot slot, and
87+
never let a bot crate add a `path` dependency that escapes the repo. If a
88+
capability deserves its own project, build it in its own repository and
89+
depend on it externally. See [`bots/README.adoc`](../bots/README.adoc).
90+
- **Disambiguation:** `sustainabot` (this fleet's eco/econ slot, kept as
91+
`BotId::Sustainabot`) is **not** `OikosBot` and **not** `oikos`. A misfiled
92+
full copy of OikosBot once lived in `bots/sustainabot/`; it was extracted to
93+
`hyperpolymath/oikosbot` and the slot reset to a placeholder. `oikos` is a
94+
separate DSL (`hyperpolymath/oikos-economics-accounting-dsl`).
8495

8596
## Repo health
8697

README.adoc

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -67,8 +67,8 @@ The historical `TOPOLOGY.md` dashboard is at the repo root.
6767
|Active
6868

6969
|**sustainabot**
70-
|Ecological and economic code standards. Carbon intensity, resource efficiency, technical debt modeling.
71-
|Active
70+
|Ecological and economic code standards. *Adapter slot reserved — see link:bots/sustainabot/README.adoc[`bots/sustainabot/`].* The standalone eco/econ App once misfiled here is **OikosBot**, now at https://github.com/hyperpolymath/oikosbot[`hyperpolymath/oikosbot`] (a separate project — not sustainabot).
71+
|Reserved
7272

7373
|**glambot**
7474
|Presentation quality. Visual polish, accessibility (WCAG), SEO, machine-readability for AI/bots.
@@ -95,7 +95,7 @@ The historical `TOPOLOGY.md` dashboard is at the repo root.
9595
|Active
9696
|===
9797

98-
*Status legend:* `Active` = Tier 1 Verifier or Specialist bot running on every push. `Complete` = Tier 2 Finisher bot that runs after verifiers to validate final release readiness.
98+
*Status legend:* `Active` = Tier 1 Verifier or Specialist bot running on every push. `Complete` = Tier 2 Finisher bot that runs after verifiers to validate final release readiness. `Reserved` = fleet member retained in `shared-context` but without an in-repo adapter yet (the directory is a placeholder; see that bot's `README.adoc`).
9999

100100
The component-readiness assessment (CRG grades, evidence) lives in
101101
link:READINESS.md[READINESS.md].

ROADMAP.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ based on confidence thresholds (Eliminate >= 0.95, Substitute >= 0.85, Control <
2424

2525
| rhodibot | Git operations, RSR enforcement | Yes
2626
| echidnabot | Quality verification, multi-prover | Yes
27-
| sustainabot | Dependency management | Yes
27+
| sustainabot | Eco/econ standards — _reserved slot, empty_ (standalone impl extracted to `hyperpolymath/oikosbot`) | Yes
2828
| glambot | Presentation, badges, formatting | Yes
2929
| seambot | Integration seam maintenance | Yes
3030
| finishingbot | Completion of partial work | Yes

bots/README.adoc

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
// SPDX-License-Identifier: MPL-2.0
2+
// SPDX-FileCopyrightText: 2026 Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk>
3+
= bots/ — fleet bot adapters
4+
:icons: font
5+
6+
Each subdirectory here is one member of the gitbot fleet. A bot directory is a
7+
**thin adapter**: a small Rust crate (`Cargo.toml` + `src/` + `tests/`) that
8+
wires one analysis capability into the fleet's `shared-context` interface and the
9+
safety-triangle router. The canonical `BotId` set lives in
10+
link:../shared-context/src/bot.rs[`shared-context/src/bot.rs`].
11+
12+
== Guardrail — do NOT vendor standalone products here
13+
14+
A bot slot is an *adapter*, not a home for an entire external project. Do not
15+
copy a whole standalone repository (its own workspace, analyzers, containers,
16+
deployment, docs…) into `bots/<name>/`.
17+
18+
[IMPORTANT]
19+
====
20+
This rule exists because it was once broken: a full copy of **OikosBot** (a
21+
separate eco/econ code-analysis App) was vendored into `bots/sustainabot/`,
22+
including a Rust workspace that grew a hard `path` dependency back into
23+
`shared-context/`. It has since been extracted to its own repo,
24+
https://github.com/hyperpolymath/oikosbot[`hyperpolymath/oikosbot`], and the slot
25+
reset to a placeholder. See `sustainabot/README.adoc`.
26+
====
27+
28+
If a bot needs a heavyweight capability that deserves its own project, build that
29+
project in its **own repository** and have the adapter here depend on it as an
30+
external crate or service. Keep the adapter thin.

bots/sustainabot/ARCHITECTURE.md

Lines changed: 0 additions & 246 deletions
This file was deleted.

0 commit comments

Comments
 (0)