simplicio-loop 1.0.3__tar.gz → 1.0.4__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. {simplicio_loop-1.0.3/simplicio_loop.egg-info → simplicio_loop-1.0.4}/PKG-INFO +3 -1
  2. {simplicio_loop-1.0.3 → simplicio_loop-1.0.4}/pyproject.toml +45 -38
  3. {simplicio_loop-1.0.3 → simplicio_loop-1.0.4}/simplicio_loop/__init__.py +8 -8
  4. {simplicio_loop-1.0.3 → simplicio_loop-1.0.4}/simplicio_loop/_bundle/skills/simplicio-loop/SKILL.md +65 -8
  5. {simplicio_loop-1.0.3 → simplicio_loop-1.0.4}/simplicio_loop/_bundle/skills/simplicio-tasks/SKILL.md +6 -0
  6. {simplicio_loop-1.0.3 → simplicio_loop-1.0.4}/simplicio_loop/_bundle/skills/simplicio-tasks/references/extension-points.md +14 -0
  7. {simplicio_loop-1.0.3 → simplicio_loop-1.0.4/simplicio_loop.egg-info}/PKG-INFO +3 -1
  8. {simplicio_loop-1.0.3 → simplicio_loop-1.0.4}/simplicio_loop.egg-info/SOURCES.txt +1 -0
  9. simplicio_loop-1.0.4/simplicio_loop.egg-info/requires.txt +2 -0
  10. {simplicio_loop-1.0.3 → simplicio_loop-1.0.4}/LICENSE +0 -0
  11. {simplicio_loop-1.0.3 → simplicio_loop-1.0.4}/MANIFEST.in +0 -0
  12. {simplicio_loop-1.0.3 → simplicio_loop-1.0.4}/PYPI.md +0 -0
  13. {simplicio_loop-1.0.3 → simplicio_loop-1.0.4}/README.md +0 -0
  14. {simplicio_loop-1.0.3 → simplicio_loop-1.0.4}/setup.cfg +0 -0
  15. {simplicio_loop-1.0.3 → simplicio_loop-1.0.4}/simplicio_loop/_bundle/hooks/hooks.claude.json +0 -0
  16. {simplicio_loop-1.0.3 → simplicio_loop-1.0.4}/simplicio_loop/_bundle/hooks/hooks.json +0 -0
  17. {simplicio_loop-1.0.3 → simplicio_loop-1.0.4}/simplicio_loop/_bundle/hooks/learn_stop.py +0 -0
  18. {simplicio_loop-1.0.3 → simplicio_loop-1.0.4}/simplicio_loop/_bundle/hooks/loop_capture.py +0 -0
  19. {simplicio_loop-1.0.3 → simplicio_loop-1.0.4}/simplicio_loop/_bundle/hooks/loop_stop.py +0 -0
  20. {simplicio_loop-1.0.3 → simplicio_loop-1.0.4}/simplicio_loop/_bundle/hooks/orient_clamp.py +0 -0
  21. {simplicio_loop-1.0.3 → simplicio_loop-1.0.4}/simplicio_loop/_bundle/hooks/orient_rewrite.py +0 -0
  22. {simplicio_loop-1.0.3 → simplicio_loop-1.0.4}/simplicio_loop/_bundle/skills/simplicio-compress/SKILL.md +0 -0
  23. {simplicio_loop-1.0.3 → simplicio_loop-1.0.4}/simplicio_loop/_bundle/skills/simplicio-learn/SKILL.md +0 -0
  24. {simplicio_loop-1.0.3 → simplicio_loop-1.0.4}/simplicio_loop/_bundle/skills/simplicio-orient/SKILL.md +0 -0
  25. {simplicio_loop-1.0.3 → simplicio_loop-1.0.4}/simplicio_loop/_bundle/skills/simplicio-review/SKILL.md +0 -0
  26. {simplicio_loop-1.0.3 → simplicio_loop-1.0.4}/simplicio_loop/_bundle/skills/simplicio-tasks/references/azure-devops-adapter.md +0 -0
  27. {simplicio_loop-1.0.3 → simplicio_loop-1.0.4}/simplicio_loop/_bundle/skills/simplicio-tasks/references/orchestration.md +0 -0
  28. {simplicio_loop-1.0.3 → simplicio_loop-1.0.4}/simplicio_loop/_bundle/skills/simplicio-tasks/references/quality-safety-delivery.md +0 -0
  29. {simplicio_loop-1.0.3 → simplicio_loop-1.0.4}/simplicio_loop/_bundle/skills/simplicio-tasks/references/standing-loop-247.md +0 -0
  30. {simplicio_loop-1.0.3 → simplicio_loop-1.0.4}/simplicio_loop/_bundle/skills/simplicio-tasks/references/token-economy.md +0 -0
  31. {simplicio_loop-1.0.3 → simplicio_loop-1.0.4}/simplicio_loop/_bundle/skills/simplicio-tasks/references/web-evidence.md +0 -0
  32. {simplicio_loop-1.0.3 → simplicio_loop-1.0.4}/simplicio_loop/cli.py +0 -0
  33. {simplicio_loop-1.0.3 → simplicio_loop-1.0.4}/simplicio_loop.egg-info/dependency_links.txt +0 -0
  34. {simplicio_loop-1.0.3 → simplicio_loop-1.0.4}/simplicio_loop.egg-info/entry_points.txt +0 -0
  35. {simplicio_loop-1.0.3 → simplicio_loop-1.0.4}/simplicio_loop.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: simplicio-loop
3
- Version: 1.0.3
3
+ Version: 1.0.4
4
4
  Summary: The Universal Looping AI Orchestrator — a runtime-agnostic super-plugin (6 skills) that drains any queue of work end-to-end on any LLM/runtime.
5
5
  Author-email: Wesley Simplicio <wesleybob4@gmail.com>
6
6
  License: MIT
@@ -19,6 +19,8 @@ Classifier: Operating System :: OS Independent
19
19
  Requires-Python: >=3.8
20
20
  Description-Content-Type: text/markdown
21
21
  License-File: LICENSE
22
+ Requires-Dist: simplicio-mapper
23
+ Requires-Dist: simplicio-cli
22
24
  Dynamic: license-file
23
25
 
24
26
  # simplicio-loop
@@ -1,38 +1,45 @@
1
- [build-system]
2
- requires = ["setuptools>=68", "wheel"]
3
- build-backend = "setuptools.build_meta"
4
-
5
- [project]
6
- name = "simplicio-loop"
7
- version = "1.0.3"
8
- description = "The Universal Looping AI Orchestrator — a runtime-agnostic super-plugin (6 skills) that drains any queue of work end-to-end on any LLM/runtime."
9
- readme = "PYPI.md"
10
- requires-python = ">=3.8"
11
- license = { text = "MIT" }
12
- authors = [{ name = "Wesley Simplicio", email = "wesleybob4@gmail.com" }]
13
- keywords = ["ai", "agent", "orchestrator", "llm", "claude", "cursor", "automation", "ralph-loop", "token-economy", "cli"]
14
- classifiers = [
15
- "Development Status :: 4 - Beta",
16
- "Intended Audience :: Developers",
17
- "License :: OSI Approved :: MIT License",
18
- "Programming Language :: Python :: 3",
19
- "Programming Language :: Python :: 3 :: Only",
20
- "Topic :: Software Development :: Build Tools",
21
- "Topic :: Utilities",
22
- "Operating System :: OS Independent",
23
- ]
24
-
25
- [project.urls]
26
- Homepage = "https://github.com/wesleysimplicio/simplicio-loop"
27
- Repository = "https://github.com/wesleysimplicio/simplicio-loop"
28
- Issues = "https://github.com/wesleysimplicio/simplicio-loop/issues"
29
-
30
- [project.scripts]
31
- simplicio-loop = "simplicio_loop.cli:main"
32
-
33
- [tool.setuptools]
34
- packages = ["simplicio_loop"]
35
- include-package-data = true
36
-
37
- [tool.setuptools.package-data]
38
- simplicio_loop = ["_bundle/**/*"]
1
+ [build-system]
2
+ requires = ["setuptools>=68", "wheel"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "simplicio-loop"
7
+ version = "1.0.4"
8
+ description = "The Universal Looping AI Orchestrator — a runtime-agnostic super-plugin (6 skills) that drains any queue of work end-to-end on any LLM/runtime."
9
+ readme = "PYPI.md"
10
+ requires-python = ">=3.8"
11
+ license = { text = "MIT" }
12
+ authors = [{ name = "Wesley Simplicio", email = "wesleybob4@gmail.com" }]
13
+ keywords = ["ai", "agent", "orchestrator", "llm", "claude", "cursor", "automation", "ralph-loop", "token-economy", "cli"]
14
+ classifiers = [
15
+ "Development Status :: 4 - Beta",
16
+ "Intended Audience :: Developers",
17
+ "License :: OSI Approved :: MIT License",
18
+ "Programming Language :: Python :: 3",
19
+ "Programming Language :: Python :: 3 :: Only",
20
+ "Topic :: Software Development :: Build Tools",
21
+ "Topic :: Utilities",
22
+ "Operating System :: OS Independent",
23
+ ]
24
+ # The simplicio-loop drive REQUIRES two operators (see .claude/skills/simplicio-loop/SKILL.md):
25
+ # simplicio-mapper -> the repo-survey step (binds `orient`)
26
+ # simplicio-cli -> the operator that applies+verifies changes (binds `execute`/`deterministic_edit`)
27
+ dependencies = [
28
+ "simplicio-mapper",
29
+ "simplicio-cli",
30
+ ]
31
+
32
+ [project.urls]
33
+ Homepage = "https://github.com/wesleysimplicio/simplicio-loop"
34
+ Repository = "https://github.com/wesleysimplicio/simplicio-loop"
35
+ Issues = "https://github.com/wesleysimplicio/simplicio-loop/issues"
36
+
37
+ [project.scripts]
38
+ simplicio-loop = "simplicio_loop.cli:main"
39
+
40
+ [tool.setuptools]
41
+ packages = ["simplicio_loop"]
42
+ include-package-data = true
43
+
44
+ [tool.setuptools.package-data]
45
+ simplicio_loop = ["_bundle/**/*"]
@@ -1,8 +1,8 @@
1
- """simplicio-loop — The Universal Looping AI Orchestrator.
2
-
3
- A runtime-agnostic super-plugin (6 skills + loop/token hooks) that drains any
4
- queue of work end-to-end on any LLM/runtime. This package ships the skills and
5
- hooks and installs them into a runtime's skills location.
6
- """
7
-
8
- __version__ = "1.0.3"
1
+ """simplicio-loop — The Universal Looping AI Orchestrator.
2
+
3
+ A runtime-agnostic super-plugin (6 skills + loop/token hooks) that drains any
4
+ queue of work end-to-end on any LLM/runtime. This package ships the skills and
5
+ hooks and installs them into a runtime's skills location.
6
+ """
7
+
8
+ __version__ = "1.0.3"
@@ -21,6 +21,58 @@ the simplicio safety spine (evidence-gated promise, budget kill-switch, cross-pl
21
21
  - As the engine for `simplicio-tasks` when it must drain a queue unattended.
22
22
  - NOT for a one-shot edit — use the host's normal flow.
23
23
 
24
+ ## Bound operators (REQUIRED): survey + operate
25
+
26
+ This loop does NOT survey the repo with the LLM, and it does NOT hand-edit files with the LLM.
27
+ Two installed CLIs are the operators; the model only DECIDES, the operators DO. Both ship as
28
+ hard dependencies of the `simplicio-loop` package (`pip install simplicio-loop` pulls them):
29
+
30
+ | Operator | CLI (binary) | Binds | Role in the loop |
31
+ |---|---|---|---|
32
+ | **simplicio-mapper** | `simplicio-mapper` | `orient` / `recall` | **Survey** — maps the repo(s) into `.simplicio/*.json` (project-map, precedent-index, symbol-index, call-graph, docs). This survey, not an ad-hoc LLM read, is what feeds the goal each turn. |
33
+ | **simplicio-dev-cli** | `simplicio-dev-cli` | `execute` / `deterministic_edit` / `validate` / `diagnostics` | **Operate** — applies a DECIDED change through its 6-layer contract (mapper context → precedent → prompt → diff → test → verify, ≤3 retries). The CLI edits and verifies; the AI does not hand-write the diff. |
34
+
35
+ **Preflight (MANDATORY, BLOCKING).** Before iteration 1, confirm both operators are on PATH:
36
+ ```bash
37
+ simplicio-mapper --version # survey operator
38
+ simplicio-dev-cli --help # action operator (pkg simplicio-cli; exposes `simplicio-dev-cli`)
39
+ ```
40
+ The action binary is `simplicio-dev-cli` (from `pip install simplicio-cli`) — NOT the bare
41
+ `simplicio`, which is reserved for the compiled Rust `simplicio-runtime` and is not what this loop
42
+ binds. `simplicio-dev-cli` has no `--version` subcommand; `--help` exiting 0 is the readiness
43
+ proof. If either operator is missing, do NOT fall back to LLM survey/editing — STOP and emit
44
+ `simplicio-loop: BLOCKED — missing operator <name>; run: pip install simplicio-loop` (the install
45
+ re-pulls `simplicio-mapper` + `simplicio-cli`). This requirement is scoped to the loop drive.
46
+
47
+ **Survey step (each loop start + on any structural change).** Run
48
+ `simplicio-mapper index . --json` (add `--watch` for long runs) to (re)build `.simplicio/`. Read
49
+ the survey artifacts — never re-scan the tree by hand when a fresh map exists. For a multi-repo
50
+ levantamento, run the mapper per repo root and aggregate the JSON.
51
+
52
+ **Operate step (every turn that mutates code).** Once the AC and the change are DECIDED, delegate
53
+ the mutation to the operator, one decided change at a time:
54
+ ```bash
55
+ simplicio-dev-cli task "<the decided, AC-scoped change>" --target <file> [--json]
56
+ ```
57
+ The operator applies the diff, runs the tests, and self-corrects up to 3× — its passing
58
+ verification IS the in-turn evidence the promise gate needs (below). The AI never edits the file
59
+ directly inside the loop; if `simplicio-dev-cli` cannot complete a change after its retries, treat that
60
+ as a genuine blocker to investigate, not a reason to hand-edit around it.
61
+
62
+ **Where each operator fires.** The AI only DECIDES (triage, AC extraction, choosing the change,
63
+ merge/close gates); the operators do survey + apply:
64
+
65
+ | Phase | Operator | Command |
66
+ |---|---|---|
67
+ | Preflight (before iteration 1) | both | `simplicio-mapper --version` · `simplicio-dev-cli --help` → BLOCK if missing |
68
+ | Survey (loop start; multi-repo: per root) | mapper | `simplicio-mapper index . --json` → `.simplicio/*.json` |
69
+ | Loop contract step 2 — Triage (every turn) | mapper | re-read `.simplicio/*.json`; `simplicio-mapper index . --json` to refresh if the tree changed |
70
+ | Loop contract step 3 — Work the goal | dev-cli | `simplicio-dev-cli task "<decided change>" --target <file> [--json]` |
71
+ | Evidence-gated `<promise>` / `simplicio-tasks` Step 4b | dev-cli | the operator's passing test+verify pass = in-turn evidence |
72
+
73
+ One turn: `preflight → survey (mapper) → triage (re-read survey) → DECIDE (AI) → operate
74
+ (simplicio-dev-cli task: apply+test+retry ≤3×) → <promise> only if the operator's gate passed`.
75
+
24
76
  ## State file (single source of truth)
25
77
 
26
78
  `.orchestrator/loop/scratchpad.md` — human-readable, trivially editable/cancellable:
@@ -45,13 +97,17 @@ A sibling flag file `.orchestrator/loop/done` is `touch`ed only when the promise
45
97
  `max_iterations` safety net even when the user wants "unlimited" — pair unlimited with the
46
98
  `.orchestrator/loop-budget.json` $ kill-switch (see `simplicio-tasks` Step 1a/7).
47
99
  2. **Triage the live state FIRST (mandatory).** Before any action each turn, re-read the ground
48
- truth — `git status`/`git diff`, the working tree, the scratchpad notes, AND the source of
49
- record (re-query the open issues/PRs, existing branches, the `.orchestrator/loop/done` flag).
50
- Act only on what is still genuinely open; never redo done work or act on a stale picture
51
- (idempotency).
52
- 3. **Work the goal** each turn as if fresh, against that triaged state. End EVERY iteration with
53
- a short, concrete verification one gate / command / `file:line` receipt. Keep iterations
54
- small and verifiable: a turn that only edits without verifying is incomplete.
100
+ truth — the **`simplicio-mapper` survey** (`.simplicio/*.json`; refresh it with
101
+ `simplicio-mapper index . --json` if the tree changed), `git status`/`git diff`, the working
102
+ tree, the scratchpad notes, AND the source of record (re-query the open issues/PRs, existing
103
+ branches, the `.orchestrator/loop/done` flag). Act only on what is still genuinely open; never
104
+ redo done work or act on a stale picture (idempotency).
105
+ 3. **Work the goal** each turn as if fresh, against that triaged state. The model DECIDES the
106
+ AC-scoped change; the **`simplicio-dev-cli` operator APPLIES and verifies it**
107
+ (`simplicio-dev-cli task "<change>" --target <file>`) — do not hand-edit inside the loop. End EVERY
108
+ iteration with a short, concrete verification — the operator's passing test run, or one gate /
109
+ command / `file:line` receipt. Keep iterations small and verifiable: a turn that only edits
110
+ without verifying is incomplete.
55
111
  4. **Re-feed** happens at turn end via the stop-hook (below). Each re-fed turn is prefixed
56
112
  `[simplicio-loop iteration N. To finish: output <promise>TEXT</promise> ONLY when genuinely true.]`.
57
113
  5. **Exit** by emitting the sentinel `<promise>EXACT TEXT</promise>` — and ONLY when every
@@ -62,7 +118,8 @@ A sibling flag file `.orchestrator/loop/done` is `touch`ed only when the promise
62
118
  The classic Ralph loop trusts the model to be honest. We do not. A `<promise>` is accepted
63
119
  only if, in the SAME turn, there is concrete evidence the work is truly done:
64
120
 
65
- - the run-verification gate passed ("works, not just compiles" — `simplicio-tasks` Step 4b), or
121
+ - the run-verification gate passed ("works, not just compiles" — `simplicio-tasks` Step 4b)
122
+ the `simplicio-dev-cli` operator's passing test+verify pass (its contract step 5/6) satisfies this, or
66
123
  - the named acceptance criteria are each checked with a `file:line` or command-output receipt, or
67
124
  - for a queue, the source re-query confirms the items are actually closed/merged.
68
125
 
@@ -88,6 +88,12 @@ ABSTRACTION, never a runtime — the INVERTED DEPENDENCY (the skill names no run
88
88
  detects the skill). Full table + fallbacks: `references/extension-points.md`. Core rule: any
89
89
  DECIDED change goes through `deterministic_edit` — never hand-write or regenerate it with a model.
90
90
 
91
+ When the run is driven by `simplicio-loop` (Step 0 auto-arm), two points are bound to REQUIRED
92
+ operators instead of LLM fallbacks: `simplicio-mapper` surveys the repo (`orient`) and
93
+ `simplicio-dev-cli task` applies+verifies each decided change (`execute`/`deterministic_edit`) — the AI
94
+ decides, the operators act. Both ship with `pip install simplicio-loop`; the loop BLOCKS if either
95
+ is absent (see `references/extension-points.md` § bound operators).
96
+
91
97
  ## Step 1b' — Companion skills (the super-plugin satellites)
92
98
  simplicio-tasks ships as a super-plugin: this orchestrator + five satellites. Each is the deep,
93
99
  standalone form of a discipline; when loaded, DELEGATE to it (richer + cheaper); when absent, the
@@ -54,6 +54,20 @@ Rule: any change already DECIDED goes through `deterministic_edit` — never han
54
54
  or regenerate it with a model when a mechanical apply exists. Reach for a paid model only for
55
55
  genuine reasoning the deterministic layer cannot do (model routing in orchestration.md).
56
56
 
57
+ ## simplicio-loop's bound operators (REQUIRED for the loop drive)
58
+
59
+ The `simplicio-loop` companion skill is NOT runtime-optional about two of these points — it binds
60
+ them to two installed CLIs (hard deps of `pip install simplicio-loop`) and BLOCKS if absent:
61
+
62
+ | Point(s) | Bound CLI | What replaces the LLM fallback |
63
+ |---|---|---|
64
+ | `orient` / `recall` | `simplicio-mapper` (`simplicio-mapper index . --json`) | the repo SURVEY — `.simplicio/*.json` (project-map, precedent-index, symbol-index, call-graph) instead of ad-hoc LLM reads |
65
+ | `execute` / `deterministic_edit` / `validate` / `diagnostics` | `simplicio-dev-cli task` (binary `simplicio-dev-cli`, pkg `simplicio-cli`) | the OPERATOR — applies a decided change via its 6-layer contract (mapper→precedent→prompt→diff→test→verify, ≤3 retries); the AI never hand-writes the diff inside the loop |
66
+
67
+ This is the one place the abstraction is realized by a REQUIRED binding rather than an optional
68
+ one. Everywhere else the inverted-dependency rule below still holds. See
69
+ `.claude/skills/simplicio-loop/SKILL.md` (§ Bound operators).
70
+
57
71
  A host runtime MAY detect that this skill is running (by name) and auto-bind its native commands
58
72
  to these points — transparently, at near-zero token cost — without the skill ever naming that
59
73
  runtime. The binding lives in the host runtime, not here. This is the INVERTED DEPENDENCY: the
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: simplicio-loop
3
- Version: 1.0.3
3
+ Version: 1.0.4
4
4
  Summary: The Universal Looping AI Orchestrator — a runtime-agnostic super-plugin (6 skills) that drains any queue of work end-to-end on any LLM/runtime.
5
5
  Author-email: Wesley Simplicio <wesleybob4@gmail.com>
6
6
  License: MIT
@@ -19,6 +19,8 @@ Classifier: Operating System :: OS Independent
19
19
  Requires-Python: >=3.8
20
20
  Description-Content-Type: text/markdown
21
21
  License-File: LICENSE
22
+ Requires-Dist: simplicio-mapper
23
+ Requires-Dist: simplicio-cli
22
24
  Dynamic: license-file
23
25
 
24
26
  # simplicio-loop
@@ -9,6 +9,7 @@ simplicio_loop.egg-info/PKG-INFO
9
9
  simplicio_loop.egg-info/SOURCES.txt
10
10
  simplicio_loop.egg-info/dependency_links.txt
11
11
  simplicio_loop.egg-info/entry_points.txt
12
+ simplicio_loop.egg-info/requires.txt
12
13
  simplicio_loop.egg-info/top_level.txt
13
14
  simplicio_loop/_bundle/hooks/hooks.claude.json
14
15
  simplicio_loop/_bundle/hooks/hooks.json
@@ -0,0 +1,2 @@
1
+ simplicio-mapper
2
+ simplicio-cli
File without changes
File without changes
File without changes
File without changes