agentic-dev-loop 1.0.0a41__tar.gz → 1.0.0a42__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.

Potentially problematic release.


This version of agentic-dev-loop might be problematic. Click here for more details.

Files changed (102) hide show
  1. {agentic_dev_loop-1.0.0a41/src/agentic_dev_loop.egg-info → agentic_dev_loop-1.0.0a42}/PKG-INFO +1 -1
  2. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/pyproject.toml +1 -1
  3. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/src/agentic_dev_loop/engine/stages.py +10 -2
  4. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42/src/agentic_dev_loop.egg-info}/PKG-INFO +1 -1
  5. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/tests/test_041_brief_coverage.py +28 -0
  6. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/LICENSE +0 -0
  7. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/README.md +0 -0
  8. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/setup.cfg +0 -0
  9. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/src/agentic_dev_loop/__init__.py +0 -0
  10. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/src/agentic_dev_loop/core/__init__.py +0 -0
  11. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/src/agentic_dev_loop/core/config.py +0 -0
  12. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/src/agentic_dev_loop/core/paths.py +0 -0
  13. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/src/agentic_dev_loop/core/results.py +0 -0
  14. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/src/agentic_dev_loop/core/verdict.py +0 -0
  15. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/src/agentic_dev_loop/engine/__init__.py +0 -0
  16. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/src/agentic_dev_loop/engine/actions.py +0 -0
  17. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/src/agentic_dev_loop/engine/agent_error_guide.md +0 -0
  18. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/src/agentic_dev_loop/engine/agent_error_guide.py +0 -0
  19. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/src/agentic_dev_loop/engine/agents.py +0 -0
  20. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/src/agentic_dev_loop/engine/allowlist.py +0 -0
  21. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/src/agentic_dev_loop/engine/brief_coverage.py +0 -0
  22. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/src/agentic_dev_loop/engine/cli.py +0 -0
  23. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/src/agentic_dev_loop/engine/containers.py +0 -0
  24. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/src/agentic_dev_loop/engine/deps.py +0 -0
  25. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/src/agentic_dev_loop/engine/dryrun.py +0 -0
  26. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/src/agentic_dev_loop/engine/egress_policy.py +0 -0
  27. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/src/agentic_dev_loop/engine/egress_proxy.py +0 -0
  28. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/src/agentic_dev_loop/engine/extensions/__init__.py +0 -0
  29. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/src/agentic_dev_loop/engine/extensions/aidlc.py +0 -0
  30. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/src/agentic_dev_loop/engine/forbidden.py +0 -0
  31. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/src/agentic_dev_loop/engine/graph.py +0 -0
  32. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/src/agentic_dev_loop/engine/hostboundary.py +0 -0
  33. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/src/agentic_dev_loop/engine/isolation.py +0 -0
  34. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/src/agentic_dev_loop/engine/llm.py +0 -0
  35. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/src/agentic_dev_loop/engine/loaders.py +0 -0
  36. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/src/agentic_dev_loop/engine/mounts.py +0 -0
  37. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/src/agentic_dev_loop/engine/outputs.py +0 -0
  38. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/src/agentic_dev_loop/engine/presets.py +0 -0
  39. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/src/agentic_dev_loop/engine/proc.py +0 -0
  40. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/src/agentic_dev_loop/engine/registry.py +0 -0
  41. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/src/agentic_dev_loop/engine/seccomp/__init__.py +0 -0
  42. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/src/agentic_dev_loop/engine/seccomp/chromium-userns.json +0 -0
  43. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/src/agentic_dev_loop/engine/secrets.py +0 -0
  44. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/src/agentic_dev_loop/engine/step_workspace.py +0 -0
  45. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/src/agentic_dev_loop/engine/sync_back.py +0 -0
  46. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/src/agentic_dev_loop/py.typed +0 -0
  47. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/src/agentic_dev_loop/viz/__init__.py +0 -0
  48. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/src/agentic_dev_loop/viz/__main__.py +0 -0
  49. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/src/agentic_dev_loop/viz/server.py +0 -0
  50. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/src/agentic_dev_loop.egg-info/SOURCES.txt +0 -0
  51. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/src/agentic_dev_loop.egg-info/dependency_links.txt +0 -0
  52. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/src/agentic_dev_loop.egg-info/entry_points.txt +0 -0
  53. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/src/agentic_dev_loop.egg-info/requires.txt +0 -0
  54. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/src/agentic_dev_loop.egg-info/top_level.txt +0 -0
  55. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/tests/test_028_declared_caches.py +0 -0
  56. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/tests/test_029_merge_on_conflict.py +0 -0
  57. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/tests/test_032_stop_when_green.py +0 -0
  58. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/tests/test_033_brief_step.py +0 -0
  59. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/tests/test_035_finalize_nudge.py +0 -0
  60. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/tests/test_036_banned_commands_and_lane_boundary.py +0 -0
  61. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/tests/test_actions.py +0 -0
  62. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/tests/test_agent_error_guide.py +0 -0
  63. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/tests/test_agents.py +0 -0
  64. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/tests/test_aidlc.py +0 -0
  65. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/tests/test_cli.py +0 -0
  66. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/tests/test_config.py +0 -0
  67. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/tests/test_containers.py +0 -0
  68. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/tests/test_deps.py +0 -0
  69. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/tests/test_dry_run.py +0 -0
  70. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/tests/test_e2e_fixtures.py +0 -0
  71. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/tests/test_egress_proxy.py +0 -0
  72. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/tests/test_graph.py +0 -0
  73. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/tests/test_hostboundary.py +0 -0
  74. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/tests/test_hostboundary_integration.py +0 -0
  75. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/tests/test_isolation.py +0 -0
  76. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/tests/test_isolation_integration.py +0 -0
  77. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/tests/test_isolation_pbt.py +0 -0
  78. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/tests/test_llm.py +0 -0
  79. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/tests/test_loaders.py +0 -0
  80. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/tests/test_module_contract.py +0 -0
  81. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/tests/test_outputs.py +0 -0
  82. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/tests/test_outputs_pbt.py +0 -0
  83. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/tests/test_proc.py +0 -0
  84. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/tests/test_publish.py +0 -0
  85. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/tests/test_qa_prompt.py +0 -0
  86. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/tests/test_registry.py +0 -0
  87. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/tests/test_repo_ascii.py +0 -0
  88. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/tests/test_results.py +0 -0
  89. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/tests/test_sdk_compat.py +0 -0
  90. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/tests/test_secrets.py +0 -0
  91. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/tests/test_secrets_integration.py +0 -0
  92. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/tests/test_secrets_pipeline.py +0 -0
  93. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/tests/test_source_resolution.py +0 -0
  94. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/tests/test_stages.py +0 -0
  95. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/tests/test_step_workspace.py +0 -0
  96. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/tests/test_sync_back.py +0 -0
  97. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/tests/test_trigger_script.py +0 -0
  98. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/tests/test_unit5_config.py +0 -0
  99. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/tests/test_unit5_pbt.py +0 -0
  100. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/tests/test_unit5_pure.py +0 -0
  101. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/tests/test_verdict.py +0 -0
  102. {agentic_dev_loop-1.0.0a41 → agentic_dev_loop-1.0.0a42}/tests/test_viz.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agentic-dev-loop
3
- Version: 1.0.0a41
3
+ Version: 1.0.0a42
4
4
  Summary: Turn an LLM into a gated, sandboxed, resumable construction loop over your codebase.
5
5
  Author: Luke Wilson
6
6
  License-Expression: Apache-2.0
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "agentic-dev-loop"
7
- version = "1.0.0a41"
7
+ version = "1.0.0a42"
8
8
  description = "Turn an LLM into a gated, sandboxed, resumable construction loop over your codebase."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.12"
@@ -661,8 +661,16 @@ def build_brief_context(runtime: Runtime, step: StepConfig,
661
661
  parts.append(
662
662
  "## Coverage retry\n\n"
663
663
  "The captured brief is missing the following required items. "
664
- "Regenerate the digest so every listed item appears on its own "
665
- "line, verbatim where the contract requires verbatim:\n\n"
664
+ "Regenerate the digest so every listed item occupies its own "
665
+ "line, exactly as listed: the item alone on the line, no "
666
+ "trailing colon and no content. Put the compressed content on "
667
+ "the following line:\n\n"
668
+ "- general_principles\n"
669
+ " Simplest thing that works; defer decisions to the last "
670
+ "responsible moment.\n\n"
671
+ "A line like `general_principles: Simplest thing that works; "
672
+ "...` does not satisfy coverage; the item must be the only "
673
+ "text on its line:\n\n"
666
674
  + coverage_note)
667
675
  return "\n\n".join(parts)
668
676
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agentic-dev-loop
3
- Version: 1.0.0a41
3
+ Version: 1.0.0a42
4
4
  Summary: Turn an LLM into a gated, sandboxed, resumable construction loop over your codebase.
5
5
  Author: Luke Wilson
6
6
  License-Expression: Apache-2.0
@@ -17,6 +17,7 @@ from agentic_dev_loop.engine.registry import default_registry
17
17
  from agentic_dev_loop.engine.stages import (
18
18
  Runtime,
19
19
  brief_inputs_hash,
20
+ build_brief_context,
20
21
  make_brief_node,
21
22
  )
22
23
 
@@ -176,6 +177,33 @@ class TestMissingAnchors:
176
177
  ["offline; never fetch"]) == []
177
178
 
178
179
 
180
+ class TestCoverageNoteWording:
181
+ """The retry note must state the line rule unambiguously (043): a
182
+ correction that the model can misread as "the item starts its own line"
183
+ produced anchor: content one-liners for three straight retries in run
184
+ 5367f0c488d8."""
185
+
186
+ def test_note_states_line_rule_and_example(self, runtime):
187
+ note = "- mock policy"
188
+ message = build_brief_context(
189
+ runtime, runtime.cfg.steps[0], {"plan.md": "THE PLAN"},
190
+ coverage_note=note)
191
+ assert "## Coverage retry" in message
192
+ assert ("the item alone on the line, no trailing colon and no "
193
+ "content") in message
194
+ assert "- general_principles\n Simplest thing that works" in message
195
+ assert "does not satisfy coverage" in message
196
+ assert "the item must be the only text on its line" in message
197
+ assert note in message
198
+
199
+ def test_note_keeps_missing_items_verbatim(self, runtime):
200
+ note = "- mock policy\n- default development mode \u2014 ask before coding"
201
+ message = build_brief_context(
202
+ runtime, runtime.cfg.steps[0], {"plan.md": "THE PLAN"},
203
+ coverage_note=note)
204
+ assert "\n\n" + note in message
205
+
206
+
179
207
  class TestBriefNodeCoverage:
180
208
  def test_miss_returns_retry_note_and_reruns(self, runtime, fake_agents):
181
209
  good = _brief_ok()