agentic-dev-loop 0.10.3__tar.gz → 0.10.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.
- {agentic_dev_loop-0.10.3/src/agentic_dev_loop.egg-info → agentic_dev_loop-0.10.4}/PKG-INFO +1 -1
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/pyproject.toml +1 -1
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/src/agentic_dev_loop/engine/extensions/aidlc.py +10 -4
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4/src/agentic_dev_loop.egg-info}/PKG-INFO +1 -1
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/tests/test_aidlc.py +15 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/tests/test_publish.py +11 -58
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/LICENSE +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/README.md +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/setup.cfg +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/src/agentic_dev_loop/__init__.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/src/agentic_dev_loop/core/__init__.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/src/agentic_dev_loop/core/config.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/src/agentic_dev_loop/core/paths.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/src/agentic_dev_loop/core/profiles/__init__.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/src/agentic_dev_loop/core/profiles/data/dotnet-node.yaml +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/src/agentic_dev_loop/core/profiles/data/python.yaml +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/src/agentic_dev_loop/core/results.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/src/agentic_dev_loop/core/verdict.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/src/agentic_dev_loop/engine/__init__.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/src/agentic_dev_loop/engine/actions.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/src/agentic_dev_loop/engine/agent_error_guide.md +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/src/agentic_dev_loop/engine/agent_error_guide.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/src/agentic_dev_loop/engine/agents.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/src/agentic_dev_loop/engine/allowlist.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/src/agentic_dev_loop/engine/brief_coverage.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/src/agentic_dev_loop/engine/brief_prompt.md +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/src/agentic_dev_loop/engine/brief_prompt.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/src/agentic_dev_loop/engine/cli.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/src/agentic_dev_loop/engine/containers.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/src/agentic_dev_loop/engine/deps.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/src/agentic_dev_loop/engine/dryrun.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/src/agentic_dev_loop/engine/egress_policy.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/src/agentic_dev_loop/engine/egress_proxy.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/src/agentic_dev_loop/engine/extensions/__init__.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/src/agentic_dev_loop/engine/forbidden.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/src/agentic_dev_loop/engine/graph.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/src/agentic_dev_loop/engine/hostboundary.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/src/agentic_dev_loop/engine/isolation.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/src/agentic_dev_loop/engine/llm.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/src/agentic_dev_loop/engine/loaders.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/src/agentic_dev_loop/engine/mounts.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/src/agentic_dev_loop/engine/onboarding/__init__.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/src/agentic_dev_loop/engine/onboarding/checks.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/src/agentic_dev_loop/engine/onboarding/doctor.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/src/agentic_dev_loop/engine/onboarding/init.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/src/agentic_dev_loop/engine/onboarding/recipes/dotnet-node.yaml +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/src/agentic_dev_loop/engine/onboarding/recipes/python.yaml +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/src/agentic_dev_loop/engine/onboarding/recipes.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/src/agentic_dev_loop/engine/onboarding/templates/dev.agent.md +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/src/agentic_dev_loop/engine/onboarding/templates/env.example +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/src/agentic_dev_loop/engine/onboarding/templates/qa.agent.md +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/src/agentic_dev_loop/engine/onboarding/templates/review.agent.md +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/src/agentic_dev_loop/engine/onboarding/templates/trigger-agentic-dev-loop.sh +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/src/agentic_dev_loop/engine/onboarding/templates.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/src/agentic_dev_loop/engine/outputs.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/src/agentic_dev_loop/engine/presets.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/src/agentic_dev_loop/engine/proc.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/src/agentic_dev_loop/engine/registry.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/src/agentic_dev_loop/engine/seccomp/__init__.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/src/agentic_dev_loop/engine/seccomp/chromium-userns.json +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/src/agentic_dev_loop/engine/secrets.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/src/agentic_dev_loop/engine/stages.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/src/agentic_dev_loop/engine/step_workspace.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/src/agentic_dev_loop/engine/sync_back.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/src/agentic_dev_loop/py.typed +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/src/agentic_dev_loop/viz/__init__.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/src/agentic_dev_loop/viz/__main__.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/src/agentic_dev_loop/viz/server.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/src/agentic_dev_loop.egg-info/SOURCES.txt +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/src/agentic_dev_loop.egg-info/dependency_links.txt +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/src/agentic_dev_loop.egg-info/entry_points.txt +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/src/agentic_dev_loop.egg-info/requires.txt +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/src/agentic_dev_loop.egg-info/top_level.txt +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/tests/test_029_merge_on_conflict.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/tests/test_033_brief_step.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/tests/test_035_finalize_nudge.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/tests/test_036_banned_commands_and_lane_boundary.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/tests/test_041_brief_coverage.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/tests/test_046_brief_prompt.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/tests/test_055_cli.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/tests/test_055_doctor.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/tests/test_055_init.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/tests/test_055_profile_loading.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/tests/test_055_profiles.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/tests/test_055_recipes.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/tests/test_055_schema_lock.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/tests/test_055_templates.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/tests/test_actions.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/tests/test_agent_error_guide.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/tests/test_agents.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/tests/test_cli.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/tests/test_config.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/tests/test_containers.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/tests/test_deps.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/tests/test_dry_run.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/tests/test_e2e_fixtures.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/tests/test_egress_proxy.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/tests/test_graph.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/tests/test_hostboundary.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/tests/test_hostboundary_integration.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/tests/test_isolation.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/tests/test_isolation_integration.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/tests/test_isolation_pbt.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/tests/test_llm.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/tests/test_loaders.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/tests/test_module_contract.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/tests/test_outputs.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/tests/test_outputs_pbt.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/tests/test_proc.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/tests/test_qa_prompt.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/tests/test_registry.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/tests/test_repo_ascii.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/tests/test_results.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/tests/test_sdk_compat.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/tests/test_secrets.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/tests/test_secrets_integration.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/tests/test_secrets_pipeline.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/tests/test_source_resolution.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/tests/test_stages.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/tests/test_step_workspace.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/tests/test_sync_back.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/tests/test_trigger_script.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/tests/test_unit5_config.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/tests/test_unit5_pbt.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/tests/test_unit5_pure.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/tests/test_verdict.py +0 -0
- {agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/tests/test_viz.py +0 -0
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "agentic-dev-loop"
|
|
7
|
-
version = "0.10.
|
|
7
|
+
version = "0.10.4"
|
|
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"
|
{agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/src/agentic_dev_loop/engine/extensions/aidlc.py
RENAMED
|
@@ -74,12 +74,18 @@ def resolve_unit_docs_with_sources(
|
|
|
74
74
|
sources[f"inception/{file.name}"] = file
|
|
75
75
|
|
|
76
76
|
# The unit's code-generation plans are the build spec - absent is fine,
|
|
77
|
-
# present is how the spec reaches agents.
|
|
77
|
+
# present is how the spec reaches agents. Two shapes are in the wild:
|
|
78
|
+
# bare (`unit-3-code-generation-plan.md`) and infixed
|
|
79
|
+
# (`unit-3-scan-core-types-code-generation-plan.md`); the bare shape must
|
|
80
|
+
# not be lost, and neither pattern may leak into a slug that merely
|
|
81
|
+
# extends this one (unit-3 must not match a unit-30 plan).
|
|
78
82
|
plans_dir = docs_dir / "construction" / "plans"
|
|
79
83
|
if plans_dir.is_dir():
|
|
80
|
-
for
|
|
81
|
-
|
|
82
|
-
|
|
84
|
+
for pattern in (f"{unit_slug}-code-generation-plan.md",
|
|
85
|
+
f"{unit_slug}-*-code-generation-plan.md"):
|
|
86
|
+
for file in sorted(plans_dir.glob(pattern)):
|
|
87
|
+
docs[f"plans/{file.name}"] = file.read_text(encoding="utf-8")
|
|
88
|
+
sources[f"plans/{file.name}"] = file
|
|
83
89
|
|
|
84
90
|
return docs, sources
|
|
85
91
|
|
|
@@ -135,6 +135,21 @@ class TestResolveUnitDocs:
|
|
|
135
135
|
assert not any("nfr-design" in k for k in docs)
|
|
136
136
|
assert not any("unit-2" in k for k in docs)
|
|
137
137
|
|
|
138
|
+
def test_loads_bare_slug_code_generation_plan(self, tmp_path):
|
|
139
|
+
"""`{slug}-code-generation-plan.md` (no infix) is the build spec -
|
|
140
|
+
the repo's actual plan filenames, e.g. unit-3-code-generation-plan.md,
|
|
141
|
+
must load, not only infixed variants like unit-3-scan-*."""
|
|
142
|
+
unit_dir = tmp_path / "construction" / "unit-3"
|
|
143
|
+
unit_dir.mkdir(parents=True)
|
|
144
|
+
(unit_dir / "design.md").write_text("# Design")
|
|
145
|
+
plans = tmp_path / "construction" / "plans"
|
|
146
|
+
plans.mkdir(parents=True)
|
|
147
|
+
(plans / "unit-3-code-generation-plan.md").write_text("# Build spec")
|
|
148
|
+
|
|
149
|
+
docs = resolve_unit_docs(tmp_path, "unit-3")
|
|
150
|
+
|
|
151
|
+
assert docs["plans/unit-3-code-generation-plan.md"] == "# Build spec"
|
|
152
|
+
|
|
138
153
|
def test_missing_plans_dir_is_not_an_error(self, tmp_path):
|
|
139
154
|
unit_dir = tmp_path / "construction" / "unit-2"
|
|
140
155
|
unit_dir.mkdir(parents=True)
|
|
@@ -264,79 +264,32 @@ class TestConsumerAdoption:
|
|
|
264
264
|
assert proc.returncode == 0, proc.stderr
|
|
265
265
|
assert read_version(repo) == "0.2.1"
|
|
266
266
|
|
|
267
|
-
def
|
|
268
|
-
"""
|
|
269
|
-
|
|
270
|
-
|
|
267
|
+
def test_dry_run_refuses_violating_entry(self, tmp_path):
|
|
268
|
+
"""The dry run is the pre-cut gate: it runs the same refusal checks
|
|
269
|
+
as the real cut, so a violating entry is caught before anything is
|
|
270
|
+
written, committed, or tagged."""
|
|
271
271
|
repo, _ = make_repo(
|
|
272
272
|
tmp_path,
|
|
273
273
|
unreleased=(
|
|
274
274
|
"### Changed\n\n"
|
|
275
|
-
"- feat:
|
|
276
|
-
),
|
|
277
|
-
)
|
|
278
|
-
proc = run_publish(repo, "--patch")
|
|
279
|
-
assert proc.returncode != 0
|
|
280
|
-
assert "Consumer adoption" in proc.stderr
|
|
281
|
-
assert read_version(repo) == "0.2.0"
|
|
282
|
-
assert tags(repo) == []
|
|
283
|
-
|
|
284
|
-
def test_046_marker_without_adoption_section_fails(self, tmp_path):
|
|
285
|
-
"""Plan 046 obligates consumers to delete the vendored brief prompt
|
|
286
|
-
and declare brief_inputs.sections, so its slug is registered too:
|
|
287
|
-
a release entry referencing it without a `### Consumer adoption`
|
|
288
|
-
note gets refused."""
|
|
289
|
-
repo, _ = make_repo(
|
|
290
|
-
tmp_path,
|
|
291
|
-
unreleased=(
|
|
292
|
-
"### Changed\n\n"
|
|
293
|
-
"- feat: tweak plan 046-embed-brief-prompt\n"
|
|
294
|
-
),
|
|
295
|
-
)
|
|
296
|
-
proc = run_publish(repo, "--patch")
|
|
297
|
-
assert proc.returncode != 0
|
|
298
|
-
assert "Consumer adoption" in proc.stderr
|
|
299
|
-
assert read_version(repo) == "0.2.0"
|
|
300
|
-
assert tags(repo) == []
|
|
301
|
-
|
|
302
|
-
def test_054_marker_without_adoption_section_fails(self, tmp_path):
|
|
303
|
-
"""Plan 054 flips reasoning passback to config-gated: pipelines
|
|
304
|
-
whose llm:/llms: entries point at a thinking model must set
|
|
305
|
-
reasoning_effort (absent effort now forwards nothing and raises a
|
|
306
|
-
D12 engine error), so its slug is registered: a release entry
|
|
307
|
-
referencing it without a `### Consumer adoption` note gets
|
|
308
|
-
refused."""
|
|
309
|
-
repo, _ = make_repo(
|
|
310
|
-
tmp_path,
|
|
311
|
-
unreleased=(
|
|
312
|
-
"### Changed\n\n"
|
|
313
|
-
"- feat: implement plan 054-per-step-model\n"
|
|
275
|
+
"- feat: construct plan 031-qa-environmental-verdict.md\n"
|
|
314
276
|
),
|
|
315
277
|
)
|
|
316
|
-
proc = run_publish(repo, "--patch")
|
|
278
|
+
proc = run_publish(repo, "--patch", "--dry-run")
|
|
317
279
|
assert proc.returncode != 0
|
|
318
280
|
assert "Consumer adoption" in proc.stderr
|
|
319
281
|
assert read_version(repo) == "0.2.0"
|
|
320
282
|
assert tags(repo) == []
|
|
283
|
+
assert last_subject(repo) == "chore: initial"
|
|
321
284
|
|
|
322
|
-
def
|
|
323
|
-
"""Plan 055 migrates consumer repos onto profiles and recipes
|
|
324
|
-
(profile key, trigger rewrite, isolation-block deletion), so its
|
|
325
|
-
slug is registered: a release entry referencing it without a
|
|
326
|
-
`### Consumer adoption` note gets refused."""
|
|
285
|
+
def test_dry_run_passes_violation_free_entry(self, tmp_path):
|
|
327
286
|
repo, _ = make_repo(
|
|
328
287
|
tmp_path,
|
|
329
|
-
unreleased=
|
|
330
|
-
"### Changed\n\n"
|
|
331
|
-
"- feat: implement plan 055-consumer-onboarding-init-doctor\n"
|
|
332
|
-
),
|
|
288
|
+
unreleased="### Changed\n\n- feat: add kernel sandbox\n",
|
|
333
289
|
)
|
|
334
|
-
proc = run_publish(repo, "--patch")
|
|
335
|
-
assert proc.returncode
|
|
336
|
-
assert "Consumer adoption" in proc.stderr
|
|
290
|
+
proc = run_publish(repo, "--patch", "--dry-run")
|
|
291
|
+
assert proc.returncode == 0, proc.stderr
|
|
337
292
|
assert read_version(repo) == "0.2.0"
|
|
338
|
-
assert tags(repo) == []
|
|
339
|
-
|
|
340
293
|
|
|
341
294
|
class TestGitOps:
|
|
342
295
|
def test_commit_tag_and_push(self, tmp_path):
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/src/agentic_dev_loop/core/profiles/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/src/agentic_dev_loop/engine/agent_error_guide.md
RENAMED
|
File without changes
|
{agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/src/agentic_dev_loop/engine/agent_error_guide.py
RENAMED
|
File without changes
|
|
File without changes
|
{agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/src/agentic_dev_loop/engine/allowlist.py
RENAMED
|
File without changes
|
{agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/src/agentic_dev_loop/engine/brief_coverage.py
RENAMED
|
File without changes
|
{agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/src/agentic_dev_loop/engine/brief_prompt.md
RENAMED
|
File without changes
|
{agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/src/agentic_dev_loop/engine/brief_prompt.py
RENAMED
|
File without changes
|
|
File without changes
|
{agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/src/agentic_dev_loop/engine/containers.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/src/agentic_dev_loop/engine/egress_policy.py
RENAMED
|
File without changes
|
{agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/src/agentic_dev_loop/engine/egress_proxy.py
RENAMED
|
File without changes
|
|
File without changes
|
{agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/src/agentic_dev_loop/engine/forbidden.py
RENAMED
|
File without changes
|
|
File without changes
|
{agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/src/agentic_dev_loop/engine/hostboundary.py
RENAMED
|
File without changes
|
{agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/src/agentic_dev_loop/engine/isolation.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/src/agentic_dev_loop/engine/onboarding/checks.py
RENAMED
|
File without changes
|
{agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/src/agentic_dev_loop/engine/onboarding/doctor.py
RENAMED
|
File without changes
|
{agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/src/agentic_dev_loop/engine/onboarding/init.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/src/agentic_dev_loop/engine/seccomp/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/src/agentic_dev_loop/engine/step_workspace.py
RENAMED
|
File without changes
|
{agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/src/agentic_dev_loop/engine/sync_back.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/src/agentic_dev_loop.egg-info/SOURCES.txt
RENAMED
|
File without changes
|
|
File without changes
|
{agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/src/agentic_dev_loop.egg-info/entry_points.txt
RENAMED
|
File without changes
|
{agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/src/agentic_dev_loop.egg-info/requires.txt
RENAMED
|
File without changes
|
{agentic_dev_loop-0.10.3 → agentic_dev_loop-0.10.4}/src/agentic_dev_loop.egg-info/top_level.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|