Repository navigation
[ALLEN Pi/Spark G2] Report "not known whether it happened" as its own task state - #61
aien-spark wants to merge 2 commits into
Conversation
…#55) TaskState gains Uncertain(FailureRecord). A started task that ends by timeout or interrupt while its certainty is Uncertain now becomes Uncertain instead of Failed or Cancelled. Uncertain is not terminal. Its dependents are neither run nor skipped: they stay Pending, are listed unfinished, and WorkflowReport.blocked_behind_uncertain names the uncertain task each one waits on. The bus publishes nothing for the new state (no variant yet, item 4) rather than a false Failed or Cancelled. Tests (red first): Uncertain timeout gives Uncertain and blocks dependents transitively; NoEffect timeout is still Failed; cancel of an Uncertain runner gives Uncertain; the state round trips in the snapshot. Three existing tests whose bodies only wait now declare NoEffect; the old timeout test's writer row now expects Uncertain. Deliberate break (Uncertain mapped back to Failed) turns 4 tests red. Frozen first cut: items 1, 3, 5. Items 2 and 4 are not in this change. Co-Authored-By: Claude Opus 5.5 <[email protected]>
Co-Authored-By: Claude Opus 5.5 <[email protected]>
⚖️ Sovereign Code Review & Alignment GateGreetings @aien-spark. I am AIEN, the automated review gate for the AIENOS project. Your pull request #61 ("[ALLEN Pi/Spark G2] Report "not known whether it happened" as its own task state") has undergone automated auditing against the project standards. ✅ Doctrine Diff Audit: PASS
🌿 Sovereign Steward: Contributor Alignment InterviewGreetings @aien-spark. I am AIEN, the automated steward for the AIENOS project. We welcome all contributors who share our commitment to open collaboration, global humanity, and disciplined systems craftsmanship. We build to expand computing capability, advance open-source intelligence, and share technology freely with the world. Your pull request #61 ("[ALLEN Pi/Spark G2] Report "not known whether it happened" as its own task state") is ready for stewardship alignment. Please respond directly to these four alignment inquiries:
Reply to this comment with your affirmation. Once verified against the project standards, I will grant the |
Closes #55
Stacked on #60 (G1). Base is the G1 branch so this diff shows G2 only.
What changed
TaskState::Uncertain(FailureRecord): a started task that ends by timeout or interrupt while its certainty isUncertaingets this state instead ofFailedorCancelled. Not terminal.Pending, are listed inunfinished, and the newWorkflowReport.blocked_behind_uncertainnames the uncertain task each waits on (transitively).AegisEventvariant yet, item 4) rather than a false Failed or Cancelled; the ledger eventuncertainis written in sequence. The snapshot carries the state (serde round trip tested).docs/WORKFLOW-DAG.mdrules updated.Existing tests touched, with reason: three tests whose bodies only wait or sleep (
cancellation_cancels_running_and_pending...,cancel_while_waiting_for_approval...,total_budget_cancels_the_workflow) now declareNoEffect, the truthful certainty for those bodies, so they keep testing cancel mechanics. The writer row oftimeout_is_failed_timeout_with_runner_certaintyasserted exactly the behaviour #55 calls false; it now expectsUncertainand a Pending dependent.Tested commit
da79190(host, 2026-10-16). Gates rerun with sibling../aien-protocolsatmain4b76f7f(as the hosted job checks out): same results. First run used a sibling oninteg/allen-pispark-lane-c10c6e40.TaskState::Uncertainandblocked_behind_uncertaindid not exist)cargo test --verbose -- --test-threads=1)-D warnings)f80cac5; crumb commit changes no code)Uncertainmapped back toFailedinsettleg2_timeout_on_uncertain_runner...,g2_cancel_interrupting_uncertain_runner...,g2_uncertain_state_round_trips...,timeout_is_failed_timeout_with_runner_certainty); restored, 29 of 29 greenRemaining gap (outside the frozen first cut)
WorkflowStatusstill readsFailed(orCancelledafter an operator cancel) when a task is uncertain; the "needs reconciliation" status is not added.AegisEventvariant for the new state.Failedwith certaintyUncertain(lost response) staysFailed; [ALLEN Pi/Spark G2] Report "not known whether it happened" instead of "failed" or "cancelled" #55 scopes only interrupt and timeout.Next dependency
G3 (#56) stacks on this branch and uses this state.
🤖 Generated with Claude Code