Skip to content

Fix research certification completion livelock - #30

Open
hanshenmesen wants to merge 3 commits into
lbx154:mainfrom
hanshenmesen:codex/fix-research-certification-livelock
Open

Fix research certification completion livelock#30
hanshenmesen wants to merge 3 commits into
lbx154:mainfrom
hanshenmesen:codex/fix-research-certification-livelock

Conversation

@hanshenmesen

@hanshenmesen hanshenmesen commented Aug 13, 2026

Copy link
Copy Markdown

What changed

  • preserve research_target_set_at when the Manager reasserts the same vertical and research target
  • treat a persisted research-quality target as an authoritative final-certification gate, even for finite campaigns with the legacy paper gate disabled
  • keep final_submission scope through planner normalization, backlog tagging, and stale-task filtering
  • tell the Planner to create a final_submission certification task when research-target completion is rejected
  • version the Manager→Planner instruction and grant one bounded migration retry to projects already terminal-idled by the old routing contract
  • add regression coverage for timestamp invalidation, feedback migration/routing, task scope, and final gate acceptance
  • regenerate the checked-in release artifacts

Root cause

Two independent paths made the completion invariant impossible to satisfy. Normal Manager reclassification refreshed research_target_set_at after each mission, which made newly written certification evidence immediately look stale. Separately, finite campaigns disabled the legacy paper gate, so planner tasks requesting final_submission were downgraded to bounded and could never persist final_submission_certified=true.

The Planner therefore kept returning PROJECT_DONE=true, while the host repeatedly rejected it with missing_exploratory_reviewer_certification. Projects that had already repeated this three times also persisted the feedback circuit-breaker state, so the fix includes a one-time instruction-version migration rather than requiring operators to delete state files.

Impact

Finite research campaigns with an exploratory, publishable, or doctoral target can now run one authoritative independent certification and terminate. Ordinary bounded verticals still normalize inapplicable final_submission tasks to bounded, and existing Markdown artifacts are not trusted as certification by themselves.

Validation

  • ruff check on the changed Python and test files
  • 116 targeted completion, lifecycle, and release tests passed
  • all non-quant repository tests were exercised; unrelated environment failures remain for missing optional QR support, missing python PATH alias, and an integration test that invokes a real local manager tool
  • full collection additionally requires optional numpy/pandas quant dependencies not installed in this environment
  • release artifacts rebuilt successfully with python -m argus_skill.release_tools.build_release
  • reproduced against project s-4d0fe00c: the persisted three-attempt rejection migrated to instruction v2, the Planner scheduled exactly one certification mission, and the running backlog row has scope:final_submission, stage_closing, and review:required

@hanshenmesen
hanshenmesen marked this pull request as ready for review August 13, 2026 05:06
@lbx154
lbx154 requested a review from Chenxxxxxx06 August 14, 2026 12:56
Keep the evidence epoch stable for ordinary reclassification while opening
a new epoch when a replacement intent reuses the same research target.

Co-Authored-By: GPT-5.6-Sol <noreply@anthropic.com>
@Chenxxxxxx06

Copy link
Copy Markdown
Collaborator

I pushed a small maintainer follow-up in 8d22ff9 for the author to consider.

Preserving research_target_set_at for ordinary same-target reclassification fixes the livelock, but the same rule also preserved an old certification when a genuinely new intent reused the same vertical and target. The follow-up keeps the epoch stable for normal reclassification while explicitly refreshing it for replacement/adapted intents and for a new task after the prior vertical reached its terminal stage.

The existing same-vertical/new-task regression now also verifies that the research evidence epoch advances, so the prior task's certification cannot satisfy the replacement task.

Validation:

  • targeted completion, research-target, vertical, and Manager regressions: 36 passed
  • Ruff on the changed Python files: passed

Please review whether this intent boundary matches the desired lifecycle contract. The branch still needs to be rebased onto current main, release artifacts regenerated, and CI rerun before merge.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants