Version
LifeOS 7.40.4 (main @ 5e2f2e8).
What is broken
fetchGitHubRepo in the Upgrade skill asks GitHub for one fixed page, releases?per_page=5 and commits?since=…&per_page=10, then walks that page until it hits the last-seen tag or SHA. When more releases than that land between two checks, the older ones never show up in the report, and the saved state jumps past them anyway. Claude Code ships close to daily, so a week or so between runs is enough. On a 12-day gap it reported v2.1.275 through v2.1.280 and missed v2.1.269 through v2.1.274, which is where the Monitor persistent removal and the omitClaudeMd agent field landed.
Where (file:line)
LifeOS/install/skills/Upgrade/Tools/Anthropic.ts:238 (commits)
LifeOS/install/skills/Upgrade/Tools/Anthropic.ts:275 (releases)
Suggested fix
Page until the last-seen item or the since window, with a page cap. One small helper covers both calls:
export async function pageUntil<T>(
fetchPage: (page: number) => Promise<T[] | null>,
stop: (item: T) => boolean,
maxPages = 5,
): Promise<T[]> {
const out: T[] = [];
for (let page = 1; page <= maxPages; page++) {
const items = await fetchPage(page);
if (!items || items.length === 0) break;
for (const item of items) {
out.push(item);
if (stop(item)) return out;
}
}
return out;
}
For releases, stop on the last-seen tag or on published_at < since, and drop anything older than the window. With the last-seen tag set back 12 releases, the paged version reported all 11 tags published in that gap (v2.1.279 was never published); the fixed page reported 5.
main() also runs on import. Guarding it with if (import.meta.main) lets the helper be unit-tested.
Version
LifeOS 7.40.4 (
main@ 5e2f2e8).What is broken
fetchGitHubRepoin the Upgrade skill asks GitHub for one fixed page,releases?per_page=5andcommits?since=…&per_page=10, then walks that page until it hits the last-seen tag or SHA. When more releases than that land between two checks, the older ones never show up in the report, and the saved state jumps past them anyway. Claude Code ships close to daily, so a week or so between runs is enough. On a 12-day gap it reported v2.1.275 through v2.1.280 and missed v2.1.269 through v2.1.274, which is where the Monitorpersistentremoval and theomitClaudeMdagent field landed.Where (file:line)
LifeOS/install/skills/Upgrade/Tools/Anthropic.ts:238(commits)LifeOS/install/skills/Upgrade/Tools/Anthropic.ts:275(releases)Suggested fix
Page until the last-seen item or the
sincewindow, with a page cap. One small helper covers both calls:For releases, stop on the last-seen tag or on
published_at < since, and drop anything older than the window. With the last-seen tag set back 12 releases, the paged version reported all 11 tags published in that gap (v2.1.279 was never published); the fixed page reported 5.main()also runs on import. Guarding it withif (import.meta.main)lets the helper be unit-tested.