Daily Production supports non-article packages and new-article limit #21

Closed
opened 2026-05-28 18:14:58 +01:00 by bingoss · 1 comment
Owner

What to build

Type: AFK.

Extend Daily Content Production so it respects the configurable Daily New-Article Limit while still allowing valid non-article work from the Active Weekly Plan. The run should choose higher-value non-article work when it outranks a new article and record why.

Acceptance criteria

  • The daily new-article limit is read from tenant settings with default 1 and only counts new_article packages.
  • Non-article packages can be produced in the same run when active-plan evidence and runtime limits allow them.
  • If no new article is produced because a non-article item is higher value, the run records the evidence-backed reason.
  • Tests are written first for default limit, zero limit, non-article continuation, and no-filler behavior.

Blocked by

## What to build Type: AFK. Extend Daily Content Production so it respects the configurable Daily New-Article Limit while still allowing valid non-article work from the Active Weekly Plan. The run should choose higher-value non-article work when it outranks a new article and record why. ## Acceptance criteria - [ ] The daily new-article limit is read from tenant settings with default 1 and only counts new_article packages. - [ ] Non-article packages can be produced in the same run when active-plan evidence and runtime limits allow them. - [ ] If no new article is produced because a non-article item is higher value, the run records the evidence-backed reason. - [ ] Tests are written first for default limit, zero limit, non-article continuation, and no-filler behavior. ## Blocked by - #19
Author
Owner

Issue #21 completion audit

Implemented and verified:

  • Daily Postgres queue selection now reads growth_control.get_daily_new_article_limit for the tenant and defaults to 1 through the existing tenant_settings function.
  • The limit is applied only to planned package type new_article. Non-article package rows continue to be selected in priority order when article rows exceed the limit.
  • Daily Production now claims only the target number it can process, so skipped rows are not left in_progress when target is lower than max assets.
  • Successful Daily Production run.json records daily_new_article_limit, new_article_package_count, and an evidence-backed new_article_not_produced_reason when a higher-priority non-article package outranks a new-article candidate.
  • Zero article limit leaves article rows ready and does not create filler packages.

Acceptance criteria audit:

  • Reads daily_new_article_limit from tenant settings with default 1: met.
  • Counts only new_article against the cap: met; article_refresh and all other package types continue normally.
  • Non-article packages can be produced in the same run subject to active-plan/runtime limits: met.
  • Records reason when no new article is produced because non-article work is higher value: met, including selected package, score, evidence source, and lower-ranked article candidate.
  • Tests first covered default limit, zero limit, non-article continuation, outranked reason, and no-filler behavior: met.

Tests run on codex-server:

  • python3 -m unittest tests.test_postgres_schema.SliceThreeContentPlanAndQueueDispatchTests.test_daily_runner_default_new_article_limit_allows_non_article_continuation tests.test_postgres_schema.SliceThreeContentPlanAndQueueDispatchTests.test_daily_runner_zero_new_article_limit_still_allows_non_article_work tests.test_postgres_schema.SliceThreeContentPlanAndQueueDispatchTests.test_daily_runner_records_reason_when_non_article_outranks_new_article tests.test_postgres_schema.SliceThreeContentPlanAndQueueDispatchTests.test_daily_runner_does_not_create_filler_when_zero_limit_leaves_only_articles
  • python3 -m unittest tests.test_postgres_schema tests.test_growth_engine tests.test_postgres_dashboard tests.test_weekly_telegram_summary tests.test_growth_orchestrator_worker tests.test_content_planner_contract && git diff --check
  • Result: all 207 regression tests passed, diff check clean.
Issue #21 completion audit Implemented and verified: - Daily Postgres queue selection now reads growth_control.get_daily_new_article_limit for the tenant and defaults to 1 through the existing tenant_settings function. - The limit is applied only to planned package type new_article. Non-article package rows continue to be selected in priority order when article rows exceed the limit. - Daily Production now claims only the target number it can process, so skipped rows are not left in_progress when target is lower than max assets. - Successful Daily Production run.json records daily_new_article_limit, new_article_package_count, and an evidence-backed new_article_not_produced_reason when a higher-priority non-article package outranks a new-article candidate. - Zero article limit leaves article rows ready and does not create filler packages. Acceptance criteria audit: - Reads daily_new_article_limit from tenant settings with default 1: met. - Counts only new_article against the cap: met; article_refresh and all other package types continue normally. - Non-article packages can be produced in the same run subject to active-plan/runtime limits: met. - Records reason when no new article is produced because non-article work is higher value: met, including selected package, score, evidence source, and lower-ranked article candidate. - Tests first covered default limit, zero limit, non-article continuation, outranked reason, and no-filler behavior: met. Tests run on codex-server: - python3 -m unittest tests.test_postgres_schema.SliceThreeContentPlanAndQueueDispatchTests.test_daily_runner_default_new_article_limit_allows_non_article_continuation tests.test_postgres_schema.SliceThreeContentPlanAndQueueDispatchTests.test_daily_runner_zero_new_article_limit_still_allows_non_article_work tests.test_postgres_schema.SliceThreeContentPlanAndQueueDispatchTests.test_daily_runner_records_reason_when_non_article_outranks_new_article tests.test_postgres_schema.SliceThreeContentPlanAndQueueDispatchTests.test_daily_runner_does_not_create_filler_when_zero_limit_leaves_only_articles - python3 -m unittest tests.test_postgres_schema tests.test_growth_engine tests.test_postgres_dashboard tests.test_weekly_telegram_summary tests.test_growth_orchestrator_worker tests.test_content_planner_contract && git diff --check - Result: all 207 regression tests passed, diff check clean.
Commenting is not possible because the repository is archived.
No milestone
No project
No assignees
1 participant
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
bingoss/owned-growth-engine#21
No description provided.