Skip to content

fix(noodle): daily-slot budget bugs + design cleanup (1.0.9) - #317

Merged
Gunterlie merged 1 commit into
stagingfrom
untangle-the-spaghetti
Aug 13, 2026
Merged

fix(noodle): daily-slot budget bugs + design cleanup (1.0.9)#317
Gunterlie merged 1 commit into
stagingfrom
untangle-the-spaghetti

Conversation

@Gunterlie

@Gunterlie Gunterlie commented Aug 13, 2026

Copy link
Copy Markdown
Contributor

Pull request

Important

Contributions target staging. Only SpicyMarinara may promote this repository's staging branch to main.
Outside and first-time contributors also require an approving review from SpicyMarinara.

Linked issue

Closes #318

Why this change

Noodler's automatic-posting budget silently locked out image posting while text kept working. Two bugs, both in the daily "slot" system:

  1. Failed text/image generation attempts (provider errors, moderation rejects, timeouts) permanently consumed a slot in the rolling 24h budget even though nothing published. Image generation fails more often than text, so a handful of image failures could exhaust the image budget for the day while text kept posting normally.
  2. The image budget was also a second, redundant limiter. The publish schedule already caps output to postsPerDay posts a day; gating images with a separate counter on top of that just created a pool that could drain on its own, and made "8 posts/day" secretly mean two independent pools of 8 — confusing for a primarily-image product.

What changed

  • noodle.storage.ts: failed attempts no longer count against the daily budget (both the claim check and the status display).
  • noodle-noodler-reserve.operation.ts: removed the separate image quota. Images now ride the post they belong to; the publish schedule is the sole limiter.
  • NoodlerPublishingSettings.tsx / en.json: settings show one "Automatic posts today" counter instead of two "provider claims" tiles, and the posting-schedule copy spells out that each post may include an image.
  • NoodlerHome.tsx: "Refresh NoodleR now" shows a completion popup naming which creators got a new post, in addition to the existing toast.
  • Bumped noodle to 1.0.9 and rebuilt the artifact/catalog entries.

Package and security impact

  • Affected package IDs: noodle
  • Engine compatibility impact: none
  • New or changed permissions/entrypoints: none
  • Restart, storage, update, or uninstall impact: standard package update (restart required, per manifest); no storage schema change

Validation

  • node scripts/validate-catalog.mjs passes locally
  • git diff --check passes locally
  • Rebuilt every affected manifest, payload, artifact, and catalog entry
  • Installed or updated the affected package through Marinara Engine
  • Checked supported modes, restart behavior, and uninstall cleanup
  • Read and followed CONTRIBUTING.md

Manual verification notes

  • npm run test:noodle:regressions — all 12 suites pass
  • node scripts/test-catalog-lanes.mjs and node scripts/validate-package-locales.mjs pass
  • Deployed the built package to the dev-marinara test Engine (10.0.0.113) via direct docker-copy; verified served client.js sha256 matches the local build, /api/health returns ok, and the noodle package reports status: active, readiness: ready with no error after container restart.

Documentation impact

  • No documentation changes needed

UI evidence (if applicable)

N/A — settings-panel copy/counter change and a completion popup; verified by hand on the dev Engine, no visual diff captured.

… budget into the schedule (1.0.9)

Failed text/image generation attempts permanently consumed a slot in
the rolling 24h automatic-posting budget, even though nothing
published. Image generation fails more often than text, so this
silently locked out image posting for creators while text kept
working. Failed attempts no longer count against the budget.

The image generation budget was also a second, mostly-redundant
limiter: the publish schedule already bounds output to postsPerDay
posts a day, so gating images with their own separate counter just
created a pool that could drain on its own (e.g. from failures) while
the real limiter kept working fine. Images no longer book a separate
daily quota; they ride the post they belong to. Settings now show one
"Automatic posts today" counter instead of two easily-misread
"provider claims" tiles.

Also gives "Refresh NoodleR now" a completion popup naming which
creators got a new post, instead of a bare toast.
@github-actions github-actions Bot added the bugfix Bug fix label Aug 13, 2026
@github-actions github-actions Bot added packages Agent package sources and manifests artifacts Generated downloadable package artifacts catalog Official catalog and package schemas build Build scripts, snapshots, and validation labels Aug 13, 2026
@coderabbitai

coderabbitai Bot commented Aug 13, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 14bedfb1-85cd-488b-83ec-f96034f644e9

📥 Commits

Reviewing files that changed from the base of the PR and between 494e210 and 9ad0f51.

⛔ Files ignored due to path filters (4)
  • artifacts/noodle-1.0.8.zip is excluded by !**/*.zip, !artifacts/**
  • artifacts/noodle-1.0.9.zip is excluded by !**/*.zip, !artifacts/**
  • packages/noodle/client.js is excluded by !packages/**/client.js
  • packages/noodle/server.mjs is excluded by !packages/**/server.mjs
📒 Files selected for processing (10)
  • catalog/catalog.json
  • catalog/v2/catalog.json
  • catalog/v3/catalog.json
  • packages/noodle/manifest.json
  • packages/noodle/src/engine/packages/client/src/components/noodle/NoodlerHome.tsx
  • packages/noodle/src/engine/packages/client/src/components/noodle/NoodlerPublishingSettings.tsx
  • packages/noodle/src/engine/packages/client/src/localization/locales/en.json
  • packages/noodle/src/engine/packages/server/src/services/noodle/noodle-noodler-reserve.operation.ts
  • packages/noodle/src/engine/packages/server/src/services/storage/noodle.storage.ts
  • scripts/build-feature-packages.mjs

📝 Walkthrough

Walkthrough

Noodle was updated to version 1.0.9. Noodler quota accounting now excludes failed attempts and separate image quotas. The client shows refresh results and revised publishing counters.

Changes

Noodler quota accounting and client behavior

Layer / File(s) Summary
Quota accounting
packages/noodle/src/engine/packages/server/src/services/noodle/noodle-noodler-reserve.operation.ts, packages/noodle/src/engine/packages/server/src/services/storage/noodle.storage.ts
Image generation no longer consumes a separate automatic-attempt quota. Failed attempts no longer count toward rolling usage totals or reserve status.
Refresh feedback and publishing counters
packages/noodle/src/engine/packages/client/src/components/noodle/NoodlerHome.tsx, packages/noodle/src/engine/packages/client/src/components/noodle/NoodlerPublishingSettings.tsx, packages/noodle/src/engine/packages/client/src/localization/locales/en.json
Refresh completion alerts list profiles with generated posts. Publishing counters use a two-column layout, show posts made today, and omit image claims. Localization describes refresh results and evenly spaced automatic posts.
Noodle 1.0.9 metadata
packages/noodle/manifest.json, scripts/build-feature-packages.mjs, catalog/catalog.json, catalog/v2/catalog.json, catalog/v3/catalog.json
The manifest, build script, and catalogs reference version 1.0.9 with updated checksums, sizes, artifact URLs, and generation timestamps.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Mergeability Score: ⚪ Minimal · up to 9ad0f

The PR stops failed generation attempts from consuming daily posting capacity, uses the daily post schedule as the sole limiter, and adds completion feedback for manual refreshes. The supplied checks and deployment verification pass, and no actionable merge-blocking risk remains.

Possibly related issues

  • Pasta-Devs/Marinara-Agents issue 318 — Directly covers failed-attempt counting, removal of the separate image quota, simplified counters, and refresh completion feedback.

Possibly related PRs

Suggested reviewers: spicymarinara

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Title check ✅ Passed The title clearly summarizes the daily-slot budget fixes and design cleanup in the Noodle 1.0.9 update.
Description check ✅ Passed The description includes the linked issue, rationale, changes, impact, validation results, deployment notes, and documentation status.
✨ Finishing Touches 💡 2
📝 Generate docstrings 💡
  • Create stacked PR
  • Commit on current branch
🛠️ Fix failing CI checks 💡
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch untangle-the-spaghetti

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@Gunterlie
Gunterlie merged commit c64cf60 into staging Aug 13, 2026
22 of 28 checks passed
@Gunterlie
Gunterlie deleted the untangle-the-spaghetti branch August 13, 2026 13:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

artifacts Generated downloadable package artifacts bugfix Bug fix build Build scripts, snapshots, and validation catalog Official catalog and package schemas packages Agent package sources and manifests

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant