Skip to main content

SPA AI — install Jidoka halts as PRs. A broken thread must stop the loom.

Project description

SPA AI

Sakichi Principle Actuator AI — a GitHub-native developer agent that installs Jidoka halts for failure classes developers currently absorb through vigilance.

"A broken thread must stop the loom." — Sakichi Vision 1

"The loom serves the weaver, not the reverse." — Sakichi Vision 22

When a failure happens, the question is never who missed it but which loom was absent (Vision 92).

Status: Phase 1 — MVP skeleton (CLI; one loom: pre-commit-formatter). Launch target: Phase 5 completion.


What SPA AI does

SPA AI scans a git repository, finds missing Jidoka halts — places where a defect is only caught downstream by a human — and installs them as pull requests. Pre-commit hooks that should exist. Silent-failure patterns that should raise. Type stubs that should be added. Flaky tests that should be quarantined. CI steps that fail-open when they should fail-closed. SPA AI sees where the weaver is standing last-line-of-defense and builds the loom that should have halted instead.

What SPA AI is not

Not an AI assistant. Not a nag bot. Not a karma-scoring surveillance tool. Not a "write code faster" pitch. Not a replacement for the developer.

The doctrinal source

All of SPA AI traces to Toyoda Sakichi (1867–1930), inventor of the Type G automatic loom — the first machine to stop itself when a thread broke. The principle: the operator must not be the last line of defense against defects. See docs/sakichi_100_visions.md for the full lineage.

Install (v0.1, dev)

git clone https://github.com/aki1770-del/spa-ai.git
cd spa-ai
pip install -e ".[dev]"

Requires Python 3.11+. v0.1 has zero runtime dependencies — the first two looms are deterministic detectors. The Anthropic SDK lands when the first LLM-driven loom does, per docs/principles.md Principle 1 (Sekishō-idai — accumulate one stone at a time).

Run

Scan a git repo for missing looms:

spa-ai scan /path/to/some/repo

Generate the patch for a specific loom (dry-run by default):

spa-ai propose /path/to/some/repo --loom pre-commit-formatter

Write the patch to disk (the weaver still owns the merge — SPA AI proposes; the human commits and opens the PR):

spa-ai propose /path/to/some/repo --loom pre-commit-formatter --apply

There is intentionally no spa-ai alert or spa-ai issue-open subcommand. Per docs/promises.md Promise 3, the loom is a pull request, not an alert; if we cannot offer a PR, we do not speak.

Run the test suite

pytest

Roadmap

Phase Focus Steps
0 Identity lock 1–10 (this commit)
1 MVP skeleton 11–25
2 Detection engine 26–45
3 Installation engine 46–65
4 Polish 66–80
5 Publishing 81–95
6 Community 96–100

Full plan: docs/launch_plan.md.

License

TBD — to be set before Phase 1.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

spa_ai-0.3.0.tar.gz (66.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

spa_ai-0.3.0-py3-none-any.whl (25.8 kB view details)

Uploaded Python 3

File details

Details for the file spa_ai-0.3.0.tar.gz.

File metadata

  • Download URL: spa_ai-0.3.0.tar.gz
  • Upload date:
  • Size: 66.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for spa_ai-0.3.0.tar.gz
Algorithm Hash digest
SHA256 3d38b158b8560385104b9e533dbc70d4456064080a80ca8a0c4cbc865d14dab0
MD5 7d05f7f9d8394ba75c11112e97aefded
BLAKE2b-256 768de8cb4cd28c0a0008bcd6e4a17a224ced4aad4df53979f0c19eac56986062

See more details on using hashes here.

File details

Details for the file spa_ai-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: spa_ai-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 25.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for spa_ai-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 2ee5a9b6a07f2a3a9178cf6d930f5522978b2cad6612381c6b26b3e3814e3add
MD5 e80e2964feb4987291df874e0b27fdda
BLAKE2b-256 096ef61520ed0505f3cae017644a3bd2683a1be8aab65a2d9a6cb16db2bc0417

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page