forgexa-cli 1.82.1__tar.gz → 1.82.2__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.
- {forgexa_cli-1.82.1 → forgexa_cli-1.82.2}/PKG-INFO +1 -1
- {forgexa_cli-1.82.1 → forgexa_cli-1.82.2}/forgexa_cli/__init__.py +1 -1
- {forgexa_cli-1.82.1 → forgexa_cli-1.82.2}/forgexa_cli/agent_core.py +20 -2
- {forgexa_cli-1.82.1 → forgexa_cli-1.82.2}/forgexa_cli/daemon.py +2 -1
- {forgexa_cli-1.82.1 → forgexa_cli-1.82.2}/forgexa_cli.egg-info/PKG-INFO +1 -1
- {forgexa_cli-1.82.1 → forgexa_cli-1.82.2}/pyproject.toml +1 -1
- {forgexa_cli-1.82.1 → forgexa_cli-1.82.2}/README.md +0 -0
- {forgexa_cli-1.82.1 → forgexa_cli-1.82.2}/forgexa_cli/_build_config.py +0 -0
- {forgexa_cli-1.82.1 → forgexa_cli-1.82.2}/forgexa_cli/_local_bind.py +0 -0
- {forgexa_cli-1.82.1 → forgexa_cli-1.82.2}/forgexa_cli/autoupgrade.py +0 -0
- {forgexa_cli-1.82.1 → forgexa_cli-1.82.2}/forgexa_cli/aws_evidence.py +0 -0
- {forgexa_cli-1.82.1 → forgexa_cli-1.82.2}/forgexa_cli/aws_logs_evidence.py +0 -0
- {forgexa_cli-1.82.1 → forgexa_cli-1.82.2}/forgexa_cli/main.py +0 -0
- {forgexa_cli-1.82.1 → forgexa_cli-1.82.2}/forgexa_cli/observability_contract.py +0 -0
- {forgexa_cli-1.82.1 → forgexa_cli-1.82.2}/forgexa_cli/observability_evidence.py +0 -0
- {forgexa_cli-1.82.1 → forgexa_cli-1.82.2}/forgexa_cli/py.typed +0 -0
- {forgexa_cli-1.82.1 → forgexa_cli-1.82.2}/forgexa_cli/runtime_evidence.py +0 -0
- {forgexa_cli-1.82.1 → forgexa_cli-1.82.2}/forgexa_cli/zcode_protocol.py +0 -0
- {forgexa_cli-1.82.1 → forgexa_cli-1.82.2}/forgexa_cli.egg-info/SOURCES.txt +0 -0
- {forgexa_cli-1.82.1 → forgexa_cli-1.82.2}/forgexa_cli.egg-info/dependency_links.txt +0 -0
- {forgexa_cli-1.82.1 → forgexa_cli-1.82.2}/forgexa_cli.egg-info/entry_points.txt +0 -0
- {forgexa_cli-1.82.1 → forgexa_cli-1.82.2}/forgexa_cli.egg-info/requires.txt +0 -0
- {forgexa_cli-1.82.1 → forgexa_cli-1.82.2}/forgexa_cli.egg-info/top_level.txt +0 -0
- {forgexa_cli-1.82.1 → forgexa_cli-1.82.2}/setup.cfg +0 -0
- {forgexa_cli-1.82.1 → forgexa_cli-1.82.2}/tests/test_auth_and_runtime_commands.py +0 -0
- {forgexa_cli-1.82.1 → forgexa_cli-1.82.2}/tests/test_autoupgrade.py +0 -0
- {forgexa_cli-1.82.1 → forgexa_cli-1.82.2}/tests/test_check_command.py +0 -0
- {forgexa_cli-1.82.1 → forgexa_cli-1.82.2}/tests/test_expiry_warnings_and_revoke.py +0 -0
- {forgexa_cli-1.82.1 → forgexa_cli-1.82.2}/tests/test_local_bind_commands.py +0 -0
- {forgexa_cli-1.82.1 → forgexa_cli-1.82.2}/tests/test_runtime_credentials.py +0 -0
- {forgexa_cli-1.82.1 → forgexa_cli-1.82.2}/tests/test_session_credentials.py +0 -0
- {forgexa_cli-1.82.1 → forgexa_cli-1.82.2}/tests/test_silent_install.py +0 -0
- {forgexa_cli-1.82.1 → forgexa_cli-1.82.2}/tests/test_upgrade_observability.py +0 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"""forgexa-cli — Forgexa command-line client."""
|
|
2
|
-
__version__ = "1.82.
|
|
2
|
+
__version__ = "1.82.2"
|
|
@@ -239,6 +239,7 @@ def _assess_implementation_contributions(contract: dict, report: object) -> dict
|
|
|
239
239
|
task_types = {task["id"]: task.get("type") for task in contract.get("tasks") or []}
|
|
240
240
|
verification_ids = [task_id for task_id, task_type in task_types.items() if task_type in ("testing", "verify")]
|
|
241
241
|
verification_statuses = {row["task_id"]: row["status"] for row in report["task_checks"]}
|
|
242
|
+
pending_verification_ids = [task_id for task_id in verification_ids if verification_statuses.get(task_id) != "covered"]
|
|
242
243
|
checks = []
|
|
243
244
|
issues = []
|
|
244
245
|
pending = []
|
|
@@ -267,8 +268,25 @@ def _assess_implementation_contributions(contract: dict, report: object) -> dict
|
|
|
267
268
|
"task_id": task_id, "status": row.get("status"),
|
|
268
269
|
"description": row.get("description") or "Runtime acceptance remains pending",
|
|
269
270
|
"files": [], "evidence": row.get("evidence") or [],
|
|
270
|
-
} for task_id in
|
|
271
|
-
|
|
271
|
+
} for task_id in pending_verification_ids)
|
|
272
|
+
implementation_statuses = {row["task_id"]: row["status"] for row in checks}
|
|
273
|
+
acceptance_checks = []
|
|
274
|
+
for row in report["acceptance_checks"]:
|
|
275
|
+
if (
|
|
276
|
+
pending_verification_ids and row["status"] in ("blocked", "unverified")
|
|
277
|
+
and row.get("plan_revision") is None
|
|
278
|
+
and all(task_types.get(task_id) in ("coding", "fix") and implementation_statuses.get(task_id) == "covered"
|
|
279
|
+
for task_id in row["task_ids"])
|
|
280
|
+
):
|
|
281
|
+
row = {**row, "task_ids": [*row["task_ids"], *pending_verification_ids]}
|
|
282
|
+
pending.extend({
|
|
283
|
+
"task_id": task_id, "status": row["status"], "description": row["description"],
|
|
284
|
+
"files": row.get("files") or [], "evidence": row["evidence"],
|
|
285
|
+
} for task_id in pending_verification_ids)
|
|
286
|
+
acceptance_checks.append(row)
|
|
287
|
+
result = assess_implementation_audit({**contract, "version": 1}, {
|
|
288
|
+
**report, "task_checks": checks, "acceptance_checks": acceptance_checks,
|
|
289
|
+
})
|
|
272
290
|
result["report"] = report
|
|
273
291
|
result["issues"].extend(issues)
|
|
274
292
|
result["report_valid"] = not result["issues"]
|
|
@@ -1234,7 +1234,7 @@ except (ImportError, ModuleNotFoundError):
|
|
|
1234
1234
|
# DAEMON_VERSION is the protocol/logic version of the daemon code.
|
|
1235
1235
|
# Kept in sync with pyproject.toml version via bump-version.sh.
|
|
1236
1236
|
# CLIENT_TYPE identifies which packaging/distribution this daemon runs in.
|
|
1237
|
-
DAEMON_VERSION = "1.82.
|
|
1237
|
+
DAEMON_VERSION = "1.82.2"
|
|
1238
1238
|
|
|
1239
1239
|
|
|
1240
1240
|
def _detect_client_type() -> str:
|
|
@@ -13474,6 +13474,7 @@ class RuntimeDaemon:
|
|
|
13474
13474
|
result.status == "success"
|
|
13475
13475
|
and task.node_type in ("review", "coding", "testing")
|
|
13476
13476
|
and not bool((task.input_data or {}).get("verification_work_item"))
|
|
13477
|
+
and not isinstance((task.input_data or {}).get("approved_plan_baseline"), dict)
|
|
13477
13478
|
):
|
|
13478
13479
|
analysis_dir = (
|
|
13479
13480
|
(task.input_data or {}).get("analysis_output_dir", "")
|
|
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
|