You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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:
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.
Changing consumer PR bodies or merging consumer sync PRs from this issue.
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 ortasks_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.
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:
templates/consumer-repo/.github/workflows/agents-81-gate-followups.yml— runner dispatch debounce treats anycompletedrecord 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.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
scripts/runner_lib/core.pydebounce productivity semantics that the gate-followups workflow calls viapython -m scripts.runner_lib should-dispatch.Tasks
scripts/runner_lib/core.py, extendshould_dispatch/record_completionso acompleteddispatch is only debounced when it was productive (head commit changed ortasks_completed_delta > 0recorded in the completion payload).tests/scripts/test_runner_lib_dispatch.py(or existing runner_lib test module) proving acompletedrecord with zero commits and zero task delta does not block the nextshould_dispatchfor the same head.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 ofitemsat lines 155 and 214.test_embed_preserves_index_alignment_with_blank_inputstotests/tools/test_embedding_provider.pyasserting five inputs including blanks yield five vectors../scripts/sync_templates.shsotemplates/consumer-repo/.github/workflows/agents-81-gate-followups.ymland synced tool copies match.Acceptance Criteria
pytest tests/scripts/test_runner_lib_dispatch.py tests/tools/test_embedding_provider.py -qpasses, including both new tests named above../scripts/sync_templates.shexits 0 withgit status --porcelain templates/consumer-repoempty on an already-synced tree.tools/embedding_provider.py→ the index-alignment test must FAIL → revert.Implementation Notes
Review threads: stranske/Ready#573 on
tools/embedding_provider.pyand.github/workflows/agents-81-gate-followups.yml. Gate-followups calls debounce attemplates/consumer-repo/.github/workflows/agents-81-gate-followups.yml:398-402viapython -m scripts.runner_lib should-dispatch.