Skip to content

Commit 73ad466

Browse files
Hooman Mehrclaude
andcommitted
Rename loom → heddle, framework → baseline
Update all references for the repo reorganization: - Package dep: loom-ai → heddle-ai - All imports: from loom.* → from heddle.* - CLI commands: loom worker/mcp/pipeline → heddle worker/mcp/pipeline - framework/ directory refs → baseline/ - GitHub URLs: IranTransitionProject/loom → getheddle/heddle - GitHub URLs: IranTransitionProject/framework → IranTransitionProject/baseline - Helm charts, Dockerfiles, CI, configs, docs all updated - All 381 tests passing Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 0b332cf commit 73ad466

64 files changed

Lines changed: 687 additions & 687 deletions

Some content is hidden

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

.github/workflows/ci.yml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,10 @@ jobs:
2424
- uses: actions/checkout@v4
2525
- uses: actions/checkout@v4
2626
with:
27-
repository: IranTransitionProject/loom
28-
path: loom
27+
repository: getheddle/heddle
28+
path: heddle
2929
- uses: astral-sh/setup-uv@v5
30-
- run: ln -s $GITHUB_WORKSPACE/loom $GITHUB_WORKSPACE/../loom
30+
- run: ln -s $GITHUB_WORKSPACE/heddle $GITHUB_WORKSPACE/../heddle
3131
- run: uv sync --extra dev
3232
- name: Ruff lint
3333
run: uv run ruff check scripts/ pipeline/scripts/ tests/
@@ -43,12 +43,12 @@ jobs:
4343
- uses: actions/checkout@v4
4444
- uses: actions/checkout@v4
4545
with:
46-
repository: IranTransitionProject/loom
47-
path: loom
46+
repository: getheddle/heddle
47+
path: heddle
4848
- uses: astral-sh/setup-uv@v5
4949
with:
5050
python-version: ${{ matrix.python-version }}
51-
- run: ln -s $GITHUB_WORKSPACE/loom $GITHUB_WORKSPACE/../loom
51+
- run: ln -s $GITHUB_WORKSPACE/heddle $GITHUB_WORKSPACE/../heddle
5252
- name: Install dependencies
5353
run: uv sync --extra dev
5454
- name: Run tests with coverage

.github/workflows/docker.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,11 +40,11 @@ jobs:
4040
steps:
4141
- uses: actions/checkout@v4
4242

43-
- name: Checkout loom
43+
- name: Checkout heddle
4444
uses: actions/checkout@v4
4545
with:
46-
repository: IranTransitionProject/loom
47-
path: loom
46+
repository: getheddle/heddle
47+
path: heddle
4848

4949
- name: Log in to GHCR
5050
uses: docker/login-action@v3

.github/workflows/docs.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ jobs:
3737
run: .docs-venv/bin/mkdocs build
3838
env:
3939
MKDOCSTRINGS_ENABLED: "false"
40-
# API reference pages require baft importable (needs ../loom).
40+
# API reference pages require baft importable (needs ../heddle).
4141
# Disable mkdocstrings in CI; API docs render locally.
4242

4343
- name: Upload artifact

CLAUDE.md

Lines changed: 51 additions & 51 deletions
Large diffs are not rendered by default.

README.md

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,13 @@
66
[![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)
77
[![License: MPL 2.0](https://img.shields.io/badge/License-MPL_2.0-brightgreen.svg)](LICENSE)
88
[![Python 3.11+](https://img.shields.io/badge/python-3.11%2B-blue.svg)](https://www.python.org/downloads/)
9-
<!-- Keep in sync with loom pyproject.toml version -->
10-
[![Built on Loom](https://img.shields.io/badge/built_on-Loom_v0.9.0-blueviolet.svg)](https://github.com/IranTransitionProject/loom)
9+
<!-- Keep in sync with heddle pyproject.toml version -->
10+
[![Built on Heddle](https://img.shields.io/badge/built_on-Loom_v0.9.0-blueviolet.svg)](https://github.com/getheddle/heddle)
1111
[![Status: Active Development](https://img.shields.io/badge/status-active_development-brightgreen.svg)]()
1212

1313
**Persian:** بافت — *woven fabric, texture, tissue*
1414

15-
Baft is the Iran Transition Project's analytical engine. It is an application built on the [Loom](https://github.com/IranTransitionProject/loom) actor mesh framework and the [framework](https://github.com/IranTransitionProject/framework) YAML database.
15+
Baft is the Iran Transition Project's analytical engine. It is an application built on the [Loom](https://github.com/getheddle/heddle) actor mesh framework and the [framework](https://github.com/IranTransitionProject/baseline) YAML database.
1616

1717
![Three-Repo Architecture](docs/images/three-repo-architecture.svg)
1818

@@ -109,17 +109,17 @@ See [Helm Deployment Guide](docs/HELM_DEPLOYMENT.md) for full Kubernetes setup.
109109

110110
- Python 3.11+
111111
- [uv](https://docs.astral.sh/uv/) package manager
112-
- [Loom](https://github.com/IranTransitionProject/loom) cloned as sibling directory (`../loom`)
112+
- [Loom](https://github.com/getheddle/heddle) cloned as sibling directory (`../heddle`)
113113
- [Ollama](https://ollama.com/) for local-tier workers
114114
- NATS server (`brew install nats-server` or Docker)
115115
- Valkey (`brew install valkey` or Docker) — optional, for checkpoints
116116
- Anthropic API key (`export ANTHROPIC_API_KEY=sk-ant-...`) — for standard/frontier tier
117-
- `ITP_ROOT` env var set to the project root (parent of `framework/`, `loom/`, `baft/`)
117+
- `ITP_ROOT` env var set to the project root (parent of `baseline/`, `heddle/`, `baft/`)
118118

119119
## Quick start
120120

121121
```bash
122-
# 1. Install (resolves loom from ../loom automatically)
122+
# 1. Install (resolves heddle from ../heddle automatically)
123123
uv sync --extra dev
124124

125125
# 2. Infrastructure
@@ -133,18 +133,18 @@ uv run python pipeline/scripts/itp_import_to_duckdb.py
133133
bash scripts/run_workers.sh
134134

135135
# 5. Start MCP gateway (stdio for Claude Code)
136-
uv run loom mcp --config configs/mcp/itp.yaml
136+
uv run heddle mcp --config configs/mcp/itp.yaml
137137

138138
# 6. Start MCP gateway (HTTP for claude.ai)
139-
uv run loom mcp --config configs/mcp/itp.yaml --transport streamable-http --port 8765
139+
uv run heddle mcp --config configs/mcp/itp.yaml --transport streamable-http --port 8765
140140
```
141141

142142
## Relationship to other ITP repos
143143

144144
| Repo | Role |
145145
|------|------|
146-
| [framework](https://github.com/IranTransitionProject/framework) | Analytical database (YAML source of truth) |
147-
| [loom](https://github.com/IranTransitionProject/loom) | Actor mesh framework (infrastructure) |
146+
| [framework](https://github.com/IranTransitionProject/baseline) | Analytical database (YAML source of truth) |
147+
| [heddle](https://github.com/getheddle/heddle) | Actor mesh framework (infrastructure) |
148148
| **baft** (this repo) | ITP application layer (config + scripts) |
149149

150150
## Documentation

charts/baft/Chart.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
apiVersion: v2
22
name: baft
3-
description: ITP analytical engine — multi-agent intelligence analysis system on Loom
3+
description: ITP analytical engine — multi-agent intelligence analysis system on Heddle
44
type: application
55
version: 0.1.0
66
appVersion: "0.3.0"
@@ -13,6 +13,6 @@ keywords:
1313
home: https://github.com/IranTransitionProject/baft
1414
sources:
1515
- https://github.com/IranTransitionProject/baft
16-
- https://github.com/IranTransitionProject/loom
16+
- https://github.com/getheddle/heddle
1717
maintainers:
1818
- name: ITP Team

charts/baft/README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Baft Helm Chart
22

3-
Deploy the ITP analytical engine (baft + loom) on Kubernetes.
3+
Deploy the ITP analytical engine (baft + heddle) on Kubernetes.
44

55
## Quick start
66

@@ -58,6 +58,6 @@ mcp:
5858
## Constraints
5959
6060
- **DE worker must be replicas: 1** — serialized writes invariant
61-
- **Framework PVC is ReadWriteOnce** — only framework-sync writes
62-
- **Workers mount framework read-only**
61+
- **Baseline PVC is ReadWriteOnce** — only baseline-sync writes
62+
- **Workers mount baseline read-only**
6363
- **Secrets must never go in values.yaml**

charts/baft/templates/_helpers.tpl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -65,9 +65,9 @@ Common environment variables injected into all pods
6565
{{/*
6666
Framework volume mounts (read-only for workers)
6767
*/}}
68-
{{- define "baft.frameworkVolumeMount" -}}
69-
- name: framework-data
70-
mountPath: /data/framework
68+
{{- define "baft.baselineVolumeMount" -}}
69+
- name: baseline-data
70+
mountPath: /data/baseline
7171
readOnly: true
7272
{{- end }}
7373

Original file line numberDiff line numberDiff line change
@@ -1,48 +1,48 @@
11
apiVersion: v1
22
kind: PersistentVolumeClaim
33
metadata:
4-
name: framework-data
4+
name: baseline-data
55
namespace: {{ .Values.namespace }}
66
labels:
77
{{- include "baft.labels" . | nindent 4 }}
88
spec:
99
accessModes: [ReadWriteOnce]
1010
resources:
1111
requests:
12-
storage: {{ .Values.framework.storage }}
12+
storage: {{ .Values.baseline.storage }}
1313
---
1414
apiVersion: apps/v1
1515
kind: Deployment
1616
metadata:
17-
name: framework-sync
17+
name: baseline-sync
1818
namespace: {{ .Values.namespace }}
1919
labels:
2020
{{- include "baft.labels" . | nindent 4 }}
21-
app.kubernetes.io/name: framework-sync
21+
app.kubernetes.io/name: baseline-sync
2222
spec:
2323
replicas: 1
2424
strategy:
2525
type: Recreate
2626
selector:
2727
matchLabels:
28-
app.kubernetes.io/name: framework-sync
28+
app.kubernetes.io/name: baseline-sync
2929
template:
3030
metadata:
3131
labels:
32-
app.kubernetes.io/name: framework-sync
32+
app.kubernetes.io/name: baseline-sync
3333
spec:
3434
initContainers:
3535
- name: git-clone
3636
image: registry.k8s.io/git-sync/git-sync:v4
3737
args:
38-
- "--repo={{ .Values.framework.repo }}"
39-
- "--ref={{ .Values.framework.branch }}"
40-
- "--root=/data/framework"
38+
- "--repo={{ .Values.baseline.repo }}"
39+
- "--ref={{ .Values.baseline.branch }}"
40+
- "--root=/data/baseline"
4141
- "--one-time"
4242
volumeMounts:
43-
- name: framework-data
44-
mountPath: /data/framework
45-
{{- if .Values.framework.sshKeySecret }}
43+
- name: baseline-data
44+
mountPath: /data/baseline
45+
{{- if .Values.baseline.sshKeySecret }}
4646
env:
4747
- name: GIT_SYNC_SSH_KEY_FILE
4848
value: /etc/git-secret/id_rsa
@@ -55,44 +55,44 @@ spec:
5555
- name: git-sync
5656
image: registry.k8s.io/git-sync/git-sync:v4
5757
args:
58-
- "--repo={{ .Values.framework.repo }}"
59-
- "--ref={{ .Values.framework.branch }}"
60-
- "--root=/data/framework"
61-
- "--period={{ .Values.framework.syncInterval }}s"
58+
- "--repo={{ .Values.baseline.repo }}"
59+
- "--ref={{ .Values.baseline.branch }}"
60+
- "--root=/data/baseline"
61+
- "--period={{ .Values.baseline.syncInterval }}s"
6262
volumeMounts:
63-
- name: framework-data
64-
mountPath: /data/framework
65-
{{- if .Values.framework.sshKeySecret }}
63+
- name: baseline-data
64+
mountPath: /data/baseline
65+
{{- if .Values.baseline.sshKeySecret }}
6666
env:
6767
- name: GIT_SYNC_SSH_KEY_FILE
6868
value: /etc/git-secret/id_rsa
6969
{{- end }}
70-
{{- if .Values.framework.commitAgent.enabled }}
70+
{{- if .Values.baseline.commitAgent.enabled }}
7171
- name: commit-agent
7272
image: alpine/git:latest
7373
command: ["/bin/sh", "-c"]
7474
args:
7575
- |
7676
while true; do
77-
sleep {{ .Values.framework.commitAgent.interval }}
78-
cd /data/framework
77+
sleep {{ .Values.baseline.commitAgent.interval }}
78+
cd /data/baseline
7979
git add -A
8080
if ! git diff --cached --quiet; then
81-
git commit -m "{{ .Values.framework.commitAgent.message }} — $(date -u +%Y-%m-%dT%H:%M:%SZ)"
81+
git commit -m "{{ .Values.baseline.commitAgent.message }} — $(date -u +%Y-%m-%dT%H:%M:%SZ)"
8282
git push || echo "Push failed — will retry next cycle"
8383
fi
8484
done
8585
volumeMounts:
86-
- name: framework-data
87-
mountPath: /data/framework
86+
- name: baseline-data
87+
mountPath: /data/baseline
8888
{{- end }}
8989
volumes:
90-
- name: framework-data
90+
- name: baseline-data
9191
persistentVolumeClaim:
92-
claimName: framework-data
93-
{{- if .Values.framework.sshKeySecret }}
92+
claimName: baseline-data
93+
{{- if .Values.baseline.sshKeySecret }}
9494
- name: git-secret
9595
secret:
96-
secretName: {{ .Values.framework.sshKeySecret }}
96+
secretName: {{ .Values.baseline.sshKeySecret }}
9797
defaultMode: 0400
9898
{{- end }}

charts/baft/templates/duckdb.yaml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -34,12 +34,12 @@ spec:
3434
env:
3535
{{- include "baft.envVars" . | nindent 12 }}
3636
volumeMounts:
37-
{{- include "baft.frameworkVolumeMount" . | nindent 12 }}
37+
{{- include "baft.baselineVolumeMount" . | nindent 12 }}
3838
{{- include "baft.duckdbVolumeMount" . | nindent 12 }}
3939
volumes:
40-
- name: framework-data
40+
- name: baseline-data
4141
persistentVolumeClaim:
42-
claimName: framework-data
42+
claimName: baseline-data
4343
- name: duckdb-data
4444
persistentVolumeClaim:
4545
claimName: duckdb-data
@@ -68,12 +68,12 @@ spec:
6868
env:
6969
{{- include "baft.envVars" . | nindent 16 }}
7070
volumeMounts:
71-
{{- include "baft.frameworkVolumeMount" . | nindent 16 }}
71+
{{- include "baft.baselineVolumeMount" . | nindent 16 }}
7272
{{- include "baft.duckdbVolumeMount" . | nindent 16 }}
7373
volumes:
74-
- name: framework-data
74+
- name: baseline-data
7575
persistentVolumeClaim:
76-
claimName: framework-data
76+
claimName: baseline-data
7777
- name: duckdb-data
7878
persistentVolumeClaim:
7979
claimName: duckdb-data

0 commit comments

Comments
 (0)