loop-engineer 0.7.0__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 (142) hide show
  1. loop_engineer-0.7.0/.claude-plugin/marketplace.json +7 -0
  2. loop_engineer-0.7.0/.claude-plugin/plugin.json +24 -0
  3. loop_engineer-0.7.0/.github/ISSUE_TEMPLATE/bug_report.md +31 -0
  4. loop_engineer-0.7.0/.github/ISSUE_TEMPLATE/config.yml +8 -0
  5. loop_engineer-0.7.0/.github/ISSUE_TEMPLATE/feature_request.md +24 -0
  6. loop_engineer-0.7.0/.github/PULL_REQUEST_TEMPLATE.md +20 -0
  7. loop_engineer-0.7.0/.github/workflows/ci.yml +82 -0
  8. loop_engineer-0.7.0/.github/workflows/publish.yml +58 -0
  9. loop_engineer-0.7.0/.gitignore +35 -0
  10. loop_engineer-0.7.0/.pre-commit-hooks.yaml +11 -0
  11. loop_engineer-0.7.0/CHANGELOG.md +686 -0
  12. loop_engineer-0.7.0/CODE_OF_CONDUCT.md +58 -0
  13. loop_engineer-0.7.0/CONTRIBUTING.md +71 -0
  14. loop_engineer-0.7.0/GLOSSARY.md +150 -0
  15. loop_engineer-0.7.0/LICENSE +21 -0
  16. loop_engineer-0.7.0/PKG-INFO +470 -0
  17. loop_engineer-0.7.0/README.md +433 -0
  18. loop_engineer-0.7.0/SECURITY.md +41 -0
  19. loop_engineer-0.7.0/action.yml +104 -0
  20. loop_engineer-0.7.0/docs/ROADMAP-v1.0.md +235 -0
  21. loop_engineer-0.7.0/docs/demo.cast +294 -0
  22. loop_engineer-0.7.0/docs/demo.gif +0 -0
  23. loop_engineer-0.7.0/docs/integrations/langgraph.md +30 -0
  24. loop_engineer-0.7.0/docs/metrics-baseline.json +52 -0
  25. loop_engineer-0.7.0/docs/social-card.png +0 -0
  26. loop_engineer-0.7.0/docs/superpowers/plans/2026-06-20-loop-engineer-v1.md +337 -0
  27. loop_engineer-0.7.0/docs/superpowers/plans/2026-06-30-loop-engineer-v1.0-roadmap.md +444 -0
  28. loop_engineer-0.7.0/docs/superpowers/plans/2026-07-03-adoption-slices.md +1858 -0
  29. loop_engineer-0.7.0/docs/superpowers/specs/2026-06-20-loop-engineer-design.md +209 -0
  30. loop_engineer-0.7.0/docs/superpowers/specs/2026-06-30-st1-metrics-baseline.md +176 -0
  31. loop_engineer-0.7.0/docs/superpowers/specs/2026-06-30-st2-portable-contract-spec.md +438 -0
  32. loop_engineer-0.7.0/docs/superpowers/specs/2026-06-30-st3-integration-adapters.md +400 -0
  33. loop_engineer-0.7.0/docs/superpowers/specs/2026-06-30-v04-credibility-enforcement.md +547 -0
  34. loop_engineer-0.7.0/docs/superpowers/specs/2026-07-03-adoption-slices-design.md +143 -0
  35. loop_engineer-0.7.0/evals/cases/structural.json +96 -0
  36. loop_engineer-0.7.0/evals/rubric.md +177 -0
  37. loop_engineer-0.7.0/examples/coverage-repair/ADR.md +88 -0
  38. loop_engineer-0.7.0/examples/coverage-repair/README.md +113 -0
  39. loop_engineer-0.7.0/examples/coverage-repair/RUNLOG.md +91 -0
  40. loop_engineer-0.7.0/examples/coverage-repair/SPEC.md +63 -0
  41. loop_engineer-0.7.0/examples/coverage-repair/TASKS.json +33 -0
  42. loop_engineer-0.7.0/examples/coverage-repair/WORKFLOW.md +86 -0
  43. loop_engineer-0.7.0/examples/coverage-repair/scripts/run-example +60 -0
  44. loop_engineer-0.7.0/examples/coverage-repair/scripts/verify-fast +8 -0
  45. loop_engineer-0.7.0/examples/coverage-repair/scripts/verify-full +17 -0
  46. loop_engineer-0.7.0/examples/coverage-repair/target/manifest.json +9 -0
  47. loop_engineer-0.7.0/examples/coverage-repair/target/measure_coverage.py +89 -0
  48. loop_engineer-0.7.0/examples/coverage-repair/target/pricing.py +68 -0
  49. loop_engineer-0.7.0/examples/coverage-repair/target/test_holdout.py +32 -0
  50. loop_engineer-0.7.0/examples/coverage-repair/target/test_visible.py +62 -0
  51. loop_engineer-0.7.0/examples/coverage-repair/terminal_state.json +17 -0
  52. loop_engineer-0.7.0/examples/langgraph-emit/README.md +34 -0
  53. loop_engineer-0.7.0/examples/langgraph-emit/graph_example.py +82 -0
  54. loop_engineer-0.7.0/examples/naive-loop/README.md +22 -0
  55. loop_engineer-0.7.0/hooks/stop_firewall.py +122 -0
  56. loop_engineer-0.7.0/loop/__init__.py +17 -0
  57. loop_engineer-0.7.0/loop/__main__.py +176 -0
  58. loop_engineer-0.7.0/loop/_resources.py +43 -0
  59. loop_engineer-0.7.0/loop/contract.py +577 -0
  60. loop_engineer-0.7.0/loop/emit.py +258 -0
  61. loop_engineer-0.7.0/loop/paths.py +77 -0
  62. loop_engineer-0.7.0/loop/scaffold.py +131 -0
  63. loop_engineer-0.7.0/pyproject.toml +49 -0
  64. loop_engineer-0.7.0/reference/architecture-matrix.md +166 -0
  65. loop_engineer-0.7.0/reference/eval-suite.md +206 -0
  66. loop_engineer-0.7.0/reference/loop-patterns.md +211 -0
  67. loop_engineer-0.7.0/reference/model-routing.md +54 -0
  68. loop_engineer-0.7.0/reference/platform-map.md +88 -0
  69. loop_engineer-0.7.0/reference/prompt-templates.md +297 -0
  70. loop_engineer-0.7.0/reference/repo-os-contract.md +546 -0
  71. loop_engineer-0.7.0/reference/safety-and-approvals.md +134 -0
  72. loop_engineer-0.7.0/schemas/manifest.schema.json +41 -0
  73. loop_engineer-0.7.0/schemas/receipt.schema.json +21 -0
  74. loop_engineer-0.7.0/schemas/repair-record.schema.json +42 -0
  75. loop_engineer-0.7.0/schemas/rollout-record.schema.json +27 -0
  76. loop_engineer-0.7.0/schemas/state.schema.json +25 -0
  77. loop_engineer-0.7.0/schemas/tasks.schema.json +30 -0
  78. loop_engineer-0.7.0/schemas/terminal.schema.json +19 -0
  79. loop_engineer-0.7.0/scripts/action_scorecard.py +114 -0
  80. loop_engineer-0.7.0/scripts/anticheat_scan.py +490 -0
  81. loop_engineer-0.7.0/scripts/benchmark_harness.py +195 -0
  82. loop_engineer-0.7.0/scripts/holdout_gate.py +121 -0
  83. loop_engineer-0.7.0/scripts/inspect_loop.py +669 -0
  84. loop_engineer-0.7.0/scripts/metrics.py +725 -0
  85. loop_engineer-0.7.0/scripts/rollout_ledger.py +162 -0
  86. loop_engineer-0.7.0/scripts/runtime_monitor.py +317 -0
  87. loop_engineer-0.7.0/scripts/self_eval.py +376 -0
  88. loop_engineer-0.7.0/scripts/test_action_scorecard.py +205 -0
  89. loop_engineer-0.7.0/scripts/test_anticheat_scan.py +417 -0
  90. loop_engineer-0.7.0/scripts/test_benchmark_harness.py +333 -0
  91. loop_engineer-0.7.0/scripts/test_conformance.py +417 -0
  92. loop_engineer-0.7.0/scripts/test_contract_records.py +182 -0
  93. loop_engineer-0.7.0/scripts/test_docs_adoption.py +77 -0
  94. loop_engineer-0.7.0/scripts/test_docs_baseline.py +41 -0
  95. loop_engineer-0.7.0/scripts/test_docs_claims.py +70 -0
  96. loop_engineer-0.7.0/scripts/test_docs_version.py +54 -0
  97. loop_engineer-0.7.0/scripts/test_emit.py +178 -0
  98. loop_engineer-0.7.0/scripts/test_example_runnable.py +69 -0
  99. loop_engineer-0.7.0/scripts/test_holdout_gate.py +73 -0
  100. loop_engineer-0.7.0/scripts/test_inspect_loop.py +1085 -0
  101. loop_engineer-0.7.0/scripts/test_langgraph_recipe.py +39 -0
  102. loop_engineer-0.7.0/scripts/test_loop_cli.py +149 -0
  103. loop_engineer-0.7.0/scripts/test_loop_contract_core.py +707 -0
  104. loop_engineer-0.7.0/scripts/test_metrics.py +689 -0
  105. loop_engineer-0.7.0/scripts/test_metrics_cli.py +116 -0
  106. loop_engineer-0.7.0/scripts/test_precommit_hook.py +65 -0
  107. loop_engineer-0.7.0/scripts/test_resources.py +34 -0
  108. loop_engineer-0.7.0/scripts/test_rollout_ledger.py +175 -0
  109. loop_engineer-0.7.0/scripts/test_runtime_monitor.py +418 -0
  110. loop_engineer-0.7.0/scripts/test_scaffold.py +172 -0
  111. loop_engineer-0.7.0/scripts/test_schemas_metrics.py +88 -0
  112. loop_engineer-0.7.0/scripts/test_self_eval.py +121 -0
  113. loop_engineer-0.7.0/scripts/test_stop_firewall.py +156 -0
  114. loop_engineer-0.7.0/scripts/test_template_roundtrip.py +251 -0
  115. loop_engineer-0.7.0/scripts/test_validate_frontmatter.py +23 -0
  116. loop_engineer-0.7.0/scripts/test_wheel_selfcontained.py +94 -0
  117. loop_engineer-0.7.0/scripts/validate_frontmatter.py +37 -0
  118. loop_engineer-0.7.0/skills/loop-architect/SKILL.md +135 -0
  119. loop_engineer-0.7.0/skills/loop-contract/SKILL.md +132 -0
  120. loop_engineer-0.7.0/skills/loop-engineer/SKILL.md +82 -0
  121. loop_engineer-0.7.0/skills/loop-evals/SKILL.md +107 -0
  122. loop_engineer-0.7.0/skills/loop-flywheel/SKILL.md +89 -0
  123. loop_engineer-0.7.0/skills/loop-inspector/SKILL.md +143 -0
  124. loop_engineer-0.7.0/skills/loop-inspector/reference/patterns.md +133 -0
  125. loop_engineer-0.7.0/skills/loop-repair/SKILL.md +109 -0
  126. loop_engineer-0.7.0/skills/loop-run/SKILL.md +105 -0
  127. loop_engineer-0.7.0/skills/loop-runtime-monitor/SKILL.md +71 -0
  128. loop_engineer-0.7.0/skills/loop-runtime-monitor/reference/patterns.md +75 -0
  129. loop_engineer-0.7.0/templates/AGENTS.md.tmpl +67 -0
  130. loop_engineer-0.7.0/templates/EVALS-rubric.md.tmpl +114 -0
  131. loop_engineer-0.7.0/templates/RUNLOG.md.tmpl +42 -0
  132. loop_engineer-0.7.0/templates/SPEC.md.tmpl +61 -0
  133. loop_engineer-0.7.0/templates/TASKS.json.tmpl +23 -0
  134. loop_engineer-0.7.0/templates/WORKFLOW.md.tmpl +84 -0
  135. loop_engineer-0.7.0/templates/extract-trace-metrics.sh +27 -0
  136. loop_engineer-0.7.0/templates/judge-rubric.sh +28 -0
  137. loop_engineer-0.7.0/templates/manifest.yaml.tmpl +47 -0
  138. loop_engineer-0.7.0/templates/state.json.tmpl +38 -0
  139. loop_engineer-0.7.0/templates/terminal_state.json.tmpl +13 -0
  140. loop_engineer-0.7.0/templates/verify-fast.sh +27 -0
  141. loop_engineer-0.7.0/templates/verify-full.sh +34 -0
  142. loop_engineer-0.7.0/templates/verify-safety.sh +35 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "name": "loop-engineer",
3
+ "owner": { "name": "SollanSystems", "url": "https://github.com/SollanSystems" },
4
+ "plugins": [
5
+ { "name": "loop-engineer", "source": "./", "description": "Agent-loop architect+operator skill suite — design, run, verify, repair, and improve agentic coding loops." }
6
+ ]
7
+ }
@@ -0,0 +1,24 @@
1
+ {
2
+ "name": "loop-engineer",
3
+ "version": "0.7.0",
4
+ "description": "Design, launch, verify, repair, and improve agent loops. A Claude-Code-native architect+operator for long-running, verifiable, self-improving agentic-coding systems.",
5
+ "author": { "name": "Sollan Systems", "url": "https://github.com/SollanSystems" },
6
+ "homepage": "https://github.com/SollanSystems/loop-engineer",
7
+ "repository": "https://github.com/SollanSystems/loop-engineer",
8
+ "keywords": ["agent", "loop", "agentic", "verification", "harness", "orchestration", "self-improvement", "claude-code", "eval", "repair"],
9
+ "license": "MIT",
10
+ "hooks": {
11
+ "Stop": [
12
+ {
13
+ "matcher": "",
14
+ "hooks": [
15
+ {
16
+ "type": "command",
17
+ "command": "python3 ${CLAUDE_PLUGIN_ROOT}/hooks/stop_firewall.py",
18
+ "timeout": 90
19
+ }
20
+ ]
21
+ }
22
+ ]
23
+ }
24
+ }
@@ -0,0 +1,31 @@
1
+ ---
2
+ name: Bug report
3
+ about: A skill, the portable CLI, or a gate behaves incorrectly
4
+ title: "bug: "
5
+ labels: bug
6
+ ---
7
+
8
+ ## What happened
9
+
10
+ <!-- The incorrect behavior. If a skill misbehaved, name it (e.g. loop-run). -->
11
+
12
+ ## Expected
13
+
14
+ <!-- What you expected instead. -->
15
+
16
+ ## Reproduction
17
+
18
+ <!-- Minimal steps. For the portable core, include the command, e.g.:
19
+ python3 -m loop doctor path/to/workspace -->
20
+
21
+ ## Environment
22
+
23
+ - Loop Engineer version (`plugin.json` / git tag):
24
+ - Claude Code version (if the plugin path):
25
+ - Python version (`python3 --version`):
26
+ - OS:
27
+
28
+ ## Gate output (if relevant)
29
+
30
+ <!-- Paste output of the failing gate:
31
+ python3 scripts/self_eval.py / python3 -m pytest -q scripts -->
@@ -0,0 +1,8 @@
1
+ blank_issues_enabled: false
2
+ contact_links:
3
+ - name: Security vulnerability
4
+ url: https://github.com/SollanSystems/loop-engineer/security/advisories/new
5
+ about: Report security issues privately — please do not open a public issue.
6
+ - name: Question / discussion
7
+ url: https://github.com/SollanSystems/loop-engineer/discussions
8
+ about: Ask a question or discuss an idea before filing an issue.
@@ -0,0 +1,24 @@
1
+ ---
2
+ name: Feature request
3
+ about: Propose a new capability, skill, or contract element
4
+ title: "feat: "
5
+ labels: enhancement
6
+ ---
7
+
8
+ ## Problem
9
+
10
+ <!-- The loop-engineering problem this would solve. What fails or is awkward today? -->
11
+
12
+ ## Proposed change
13
+
14
+ <!-- Which spoke, reference doc, schema, or gate it touches. -->
15
+
16
+ ## Does it preserve the invariants?
17
+
18
+ <!-- Loop Engineer keeps a few load-bearing properties. Note how your idea fits:
19
+ - typed termination (the 7 terminal states)
20
+ - deterministic gate before advisory rubric
21
+ - bring-your-own-verifier default (no hard dependency on unbundled tools)
22
+ - bounded, recorded repair -->
23
+
24
+ ## Alternatives considered
@@ -0,0 +1,20 @@
1
+ <!-- Conventional-commit title, e.g. "fix(loop-run): ..." -->
2
+
3
+ ## What & why
4
+
5
+ <!-- The change and the problem it solves. Link any issue (Closes #N). -->
6
+
7
+ ## Gates (must be green)
8
+
9
+ - [ ] `python3 scripts/validate_frontmatter.py`
10
+ - [ ] `python3 scripts/self_eval.py` (13/13)
11
+ - [ ] `python3 -m pytest -q scripts`
12
+ - [ ] `python3 -m py_compile loop/*.py scripts/*.py`
13
+ - [ ] `python3 -m loop doctor examples/coverage-repair` still passes
14
+
15
+ ## Checklist
16
+
17
+ - [ ] If a skill mentions an optional integration, it also names the bundled default path (BYO-default)
18
+ - [ ] Any agent-dispatch code fence names an explicit `model:`
19
+ - [ ] Added a test/eval case for any fixed bug
20
+ - [ ] Updated `CHANGELOG.md` under `## Unreleased`
@@ -0,0 +1,82 @@
1
+ name: ci
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+
8
+ jobs:
9
+ gates:
10
+ name: gates (py${{ matrix.python-version }})
11
+ runs-on: ubuntu-latest
12
+ strategy:
13
+ fail-fast: false
14
+ matrix:
15
+ python-version: ["3.10", "3.11", "3.12"]
16
+ steps:
17
+ - uses: actions/checkout@v4
18
+
19
+ - uses: actions/setup-python@v5
20
+ with:
21
+ python-version: ${{ matrix.python-version }}
22
+
23
+ - name: Install gate dependencies
24
+ run: python -m pip install --upgrade pip pyyaml pytest jsonschema
25
+
26
+ - name: Frontmatter gate
27
+ run: python -B scripts/validate_frontmatter.py
28
+
29
+ - name: Structural self-eval gate
30
+ run: python -B scripts/self_eval.py
31
+
32
+ - name: Test suite
33
+ run: python -B -m pytest -q -p no:cacheprovider scripts
34
+
35
+ - name: Compile portable core
36
+ run: python -B -m py_compile loop/*.py scripts/*.py
37
+
38
+ - name: Manifests and schemas are valid JSON
39
+ run: |
40
+ python -B -c "import json, glob; \
41
+ files = ['.claude-plugin/plugin.json', '.claude-plugin/marketplace.json'] \
42
+ + glob.glob('schemas/*.json') + glob.glob('evals/**/*.json', recursive=True); \
43
+ [json.load(open(f)) for f in files]; \
44
+ print(f'valid JSON: {len(files)} files')"
45
+
46
+ - name: Quickstart smoke test
47
+ run: |
48
+ python -B -m loop doctor examples/coverage-repair
49
+ python -B -m loop inspect examples/coverage-repair
50
+
51
+ recipe-langgraph:
52
+ name: recipe (langgraph)
53
+ runs-on: ubuntu-latest
54
+ steps:
55
+ - uses: actions/checkout@v4
56
+ - uses: actions/setup-python@v5
57
+ with:
58
+ python-version: "3.12"
59
+ - name: Install recipe dependencies
60
+ run: python -m pip install --upgrade pip pyyaml pytest jsonschema langgraph
61
+ - name: LangGraph recipe end-to-end
62
+ run: python -B -m pytest -q -p no:cacheprovider scripts/test_langgraph_recipe.py
63
+
64
+ action-dogfood:
65
+ name: action (dogfood on flagship example)
66
+ runs-on: ubuntu-latest
67
+ steps:
68
+ - uses: actions/checkout@v4
69
+ # The repo root's live .loop/ is gitignored, so it does not exist in a fresh
70
+ # CI checkout — the tracked flagship example is the contract the action gates
71
+ # (doctor-clean, inspect 90/strong in the action's dependency-free install).
72
+ - uses: ./
73
+ with:
74
+ path: "examples/coverage-repair"
75
+ fail-under-score: "90"
76
+
77
+ - name: pre-commit consumer fixture
78
+ # bare `python` is on PATH here because the preceding `uses: ./` composite step ran setup-python
79
+ # (persisted via GITHUB_PATH) — keep the action step before this one.
80
+ run: |
81
+ python -m pip install --quiet pre-commit pytest pyyaml
82
+ python -B -m pytest -q -p no:cacheprovider scripts/test_precommit_hook.py
@@ -0,0 +1,58 @@
1
+ name: publish
2
+
3
+ on:
4
+ push:
5
+ tags: ["v*"]
6
+
7
+ jobs:
8
+ build:
9
+ runs-on: ubuntu-latest
10
+ steps:
11
+ - uses: actions/checkout@v4
12
+
13
+ - uses: actions/setup-python@v5
14
+ with:
15
+ python-version: "3.12"
16
+
17
+ - name: Tag matches pyproject version
18
+ run: |
19
+ tag="${GITHUB_REF_NAME#v}"
20
+ version="$(python -c 'import tomllib; print(tomllib.load(open("pyproject.toml","rb"))["project"]["version"])')"
21
+ if [ "$tag" != "$version" ]; then
22
+ echo "tag v$tag != pyproject version $version" >&2
23
+ exit 1
24
+ fi
25
+
26
+ - name: Build sdist + wheel
27
+ run: |
28
+ python -m pip install --upgrade build
29
+ python -m build
30
+
31
+ - name: Smoke-test the wheel from a temp dir
32
+ run: |
33
+ python -m venv /tmp/smoke
34
+ /tmp/smoke/bin/pip install --no-index dist/*.whl
35
+ cd /tmp
36
+ /tmp/smoke/bin/loop-engineer --version
37
+ /tmp/smoke/bin/loop scaffold /tmp/smoke-loop
38
+ /tmp/smoke/bin/loop doctor /tmp/smoke-loop
39
+ /tmp/smoke/bin/loop inspect /tmp/smoke-loop || true
40
+
41
+ - uses: actions/upload-artifact@v4
42
+ with:
43
+ name: dist
44
+ path: dist/
45
+
46
+ publish:
47
+ needs: build
48
+ runs-on: ubuntu-latest
49
+ environment: pypi
50
+ permissions:
51
+ id-token: write
52
+ steps:
53
+ - uses: actions/download-artifact@v4
54
+ with:
55
+ name: dist
56
+ path: dist/
57
+
58
+ - uses: pypa/gh-action-pypi-publish@release/v1
@@ -0,0 +1,35 @@
1
+ # Ephemeral workbench
2
+ .tmp/
3
+
4
+ # Loop run telemetry (operating-contract state for the self-improvement run; not plugin content)
5
+ .loop/
6
+
7
+ # Machine-local Claude Code config + GSD audit telemetry (not plugin content)
8
+ .claude/
9
+ .gsd/
10
+
11
+ # Local session memory / private build narrative (not plugin content)
12
+ memory/
13
+
14
+ # Workbench dirs (review scratch + roadmap drafts; not plugin content)
15
+ review/
16
+ roadmap/
17
+
18
+ # Python
19
+ __pycache__/
20
+ *.pyc
21
+ .venv/
22
+ .pytest_cache/
23
+ # uv resolution lock — the core declares no required runtime deps; CI uses pip, not `uv sync`
24
+ uv.lock
25
+
26
+ # Node
27
+ node_modules/
28
+
29
+ # OS / editor
30
+ .DS_Store
31
+ Thumbs.db
32
+
33
+ # Secrets — never commit
34
+ .env
35
+ *.local
@@ -0,0 +1,11 @@
1
+ - id: loop-doctor
2
+ name: loop doctor (loop-contract validity gate)
3
+ description: "Validate the repo's .loop/ contract objects; fails on a dishonest or malformed contract."
4
+ entry: loop doctor .
5
+ language: python
6
+ # The CLI default is pure-stdlib structural validation; the gate surface runs
7
+ # the strict path. pre-commit installs these into the hook's isolated env so
8
+ # loop/contract.py takes the jsonschema branch and PyYAML parses the manifest.
9
+ additional_dependencies: ["jsonschema>=4", "pyyaml>=6"]
10
+ pass_filenames: false
11
+ always_run: true