Skip to content

[sync-review] Fix upstream manifest-synced paths blocking stranske/Ready#573 #3449

Description

@stranske

Why

Consumer sync PR stranske/Ready#573 (also stranske/Doc-Lineage#26) has unresolved bot review threads on two manifest-synced paths whose upstream sources live in Workflows:

  1. templates/consumer-repo/.github/workflows/agents-81-gate-followups.yml — runner dispatch debounce treats any completed record on the same (pr, head_sha, provider) as productive, but Keepalive runner-dispatch debounce latches on a zero-output run (duplicate-completed deadlock) #3433 requires counting task deltas; a no-commit run that advances task state must not burn the debounce key.
  2. tools/embedding_provider.py — blank inputs are filtered out of the returned vector list, breaking the one-vector-per-input contract exercised by consumer tests.

Scope

Fix both upstream sources in Workflows main so maint-68 sync regeneration outdates the consumer review threads.

Non-Goals

Tasks

  • In scripts/runner_lib/core.py, extend should_dispatch / record_completion so a completed dispatch is only debounced when it was productive (head commit changed or tasks_completed_delta > 0 recorded in the completion payload).
  • Add a regression in tests/scripts/test_runner_lib_dispatch.py (or existing runner_lib test module) proving a completed record with zero commits and zero task delta does not block the next should_dispatch for the same head.
  • In tools/embedding_provider.py, preserve index-aligned output: return one vector per input position (zero/blank-safe vector for empty strings) instead of filtering blanks out of items at lines 155 and 214.
  • Add test_embed_preserves_index_alignment_with_blank_inputs to tests/tools/test_embedding_provider.py asserting five inputs including blanks yield five vectors.
  • Run ./scripts/sync_templates.sh so templates/consumer-repo/.github/workflows/agents-81-gate-followups.yml and synced tool copies match.

Acceptance Criteria

  • pytest tests/scripts/test_runner_lib_dispatch.py tests/tools/test_embedding_provider.py -q passes, including both new tests named above.
  • ./scripts/sync_templates.sh exits 0 with git status --porcelain templates/consumer-repo empty on an already-synced tree.
  • Deliberate-break gate: restore blank-filtering in tools/embedding_provider.py → the index-alignment test must FAIL → revert.

Implementation Notes

Review threads: stranske/Ready#573 on tools/embedding_provider.py and .github/workflows/agents-81-gate-followups.yml. Gate-followups calls debounce at templates/consumer-repo/.github/workflows/agents-81-gate-followups.yml:398-402 via python -m scripts.runner_lib should-dispatch.

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions