gabriel / musehub public
feat patch phase2 feat/fetch-mpack-cache #6 / 7
AI Agent gabriel · 6 days ago · Jun 12, 2026 · Diff

feat(phase2): fetch.mpack.prebuild job handler + worker dispatch (issue #92 FMC_04-08)

process_fetch_mpack_prebuild_job in musehub_wire_fetch.py: - reads tip_commit_ids from job payload - skips tips with a fresh (non-expired) MusehubFetchMPackCache entry - calls wire_fetch_mpack for each uncached tip, upserts cache row - logs timing at each step with logger.warning

worker.py: fetch.mpack.prebuild dispatch case added alongside mpack.gc.

4 tests green: FMC_07 (build+cache, skip fresh, empty noop), FMC_08 (field correctness).

sha256:0e447fc3f6b7887d5d9e86b557c659ef7d0b05e2e09ddb0cb551ada240e48a51 sha
+26 ~9 symbols
3 changed · 972 in snapshot files
sha256:2149b8b335fe9f08ecff9f00a63d90405276d90c385b9b542a63a774f7d2bee5 snapshot
+26
symbols added
~9
symbols modified
3
files changed
972
files in snapshot
0
dead code introduced
Semantic Changes 35 symbols
~ tests/test_fetch_mpack_prebuild.py .py 23 symbols added
+ _fake_commit_id function function _fake_commit_id L30–31
+ _fake_mpack_id function function _fake_mpack_id L34–35
+ _insert_job function async_function _insert_job L38–55
+ _now function function _now L26–27
+ AsyncMock import import AsyncMock L13–13
+ AsyncSession import import AsyncSession L17–17
+ MusehubBackgroundJob import import MusehubBackgroundJob L20–20
+ MusehubFetchMPackCache import import MusehubFetchMPackCache L21–21
+ annotations import import annotations L9–9
+ compute_job_id import import compute_job_id L19–19
+ create_repo import import create_repo L23–23
+ datetime import import datetime L12–12
+ hashlib import import hashlib L11–11
+ patch import import patch L13–13
+ process_fetch_mpack_prebuild_job import import process_fetch_mpack_prebuild_job L22–22
+ pytest import import pytest L15–15
+ select import import select L16–16
+ timedelta import import timedelta L12–12
+ timezone import import timezone L12–12
+ test_fmc_07_builds_each_tip_and_writes_cache function async_function test_fmc_07_builds_each_tip_and_writes_cache L61–98
+ test_fmc_07b_skips_tips_with_fresh_cache function async_function test_fmc_07b_skips_tips_with_fresh_cache L102–143
+ test_fmc_07c_empty_payload_is_a_noop function async_function test_fmc_07c_empty_payload_is_a_noop L147–161
+ test_fmc_08_cache_row_has_correct_fields function async_function test_fmc_08_cache_row_has_correct_fields L167–193
~ musehub/services/musehub_wire_fetch.py .py 3 symbols added, 8 symbols modified
+ FetchMPackPrebuildResult class class FetchMPackPrebuildResult L821–825
+ MusehubFetchMPackCache import import MusehubFetchMPackCache L15–15
+ process_fetch_mpack_prebuild_job function async_function process_fetch_mpack_prebuild_job L828–936
~ musehub/worker.py .py 1 symbol modified
Files Changed
+1 ~2
972 in snapshot

0 comments

No comments yet. Be the first to start the discussion.

To add a comment, use the Muse CLI: muse hub commit comment sha256:0e447fc3f6b7887d5d9e86b557c659ef7d0b05e2e09ddb0cb551ada240e48a51 --body "your comment"