Implement ACTIVITY-WP-0021 production automation reliability
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 2s
Build and Publish Container Image / build-and-push (push) Successful in 47s

Root-cause IssueSink 503 (dead Forgejo PAT on issue-core), add state-hub
task sink path B, log runs before emit, harden sync_schedules, deterministic
SBOM/triage reports, DB probe thrash fix, and prod automation-status helper.
This commit is contained in:
tegwick 2026-07-21 04:21:55 +02:00
parent 1209ff6973
commit 98e8aa83bd
15 changed files with 638 additions and 63 deletions

View file

@ -362,17 +362,41 @@ async def evaluate_instructions(payload: dict) -> dict:
context,
llm_client,
)
if result.report is not None:
report = result.report
output_validated = result.output_validated
review_required = result.review_required
validation_error = result.validation_error
# ACTIVITY-WP-0021-T05: when LLM produces nothing but a curated digest
# is present and the instruction has report sinks, still emit a
# deterministic digest-only report so operators are not silent-blind.
if report is None and instruction.report_sinks:
digest = context.get("daily_triage_digest")
if isinstance(digest, str) and digest.strip():
report = {
"summary": (
f"Deterministic daily triage digest only "
f"(instruction {instruction.id} produced no LLM report)."
),
"status": "candidate_digest_only",
"deterministic": True,
"digest_preview": digest[:4000],
}
output_validated = False
review_required = True
validation_error = (
validation_error or "no_llm_report; posted deterministic digest"
)
if report is not None:
reports.append({
"instruction_id": instruction.id,
"report": result.report,
"report": report,
"sinks": instruction.report_sinks,
"condition": result.condition_matched,
"prompt_hash": result.prompt_hash,
"model": result.model,
"output_validated": result.output_validated,
"review_required": result.review_required,
"validation_error": result.validation_error,
"output_validated": output_validated,
"review_required": review_required,
"validation_error": validation_error,
"llm_response_metadata": result.llm_response_metadata,
})
for spec in result.tasks: