Skip to content

Preserve nil-link items across pipeline rebuilds - #175

Merged
id774 merged 1 commit into
masterfrom
claude/fix-nil-link-pipeline-tgoxd0
Sep 7, 2026
Merged

Preserve nil-link items across pipeline rebuilds#175
id774 merged 1 commit into
masterfrom
claude/fix-nil-link-pipeline-tgoxd0

Conversation

@id774

@id774 id774 commented Sep 7, 2026

Copy link
Copy Markdown
Owner

Summary

  • FeedMaker.create_pipeline no longer drops items only because link is nil.
  • FeedObject no longer fabricates placeholder title/link values.
  • SubscriptionText now produces documented title-only / URL-only items.
  • FilterBatch -> FilterLimit regression proves linkless composition.
  • FilterImage implementation is unchanged; documentation now states responsibility correctly.

Reason

  • The pipeline contract allows link == nil; a missing field is documented
    data, not an error state (see doc/REQUIREMENTS.md section 8).
  • FilterBatch and FilterJoin produce legitimate linkless items by design.
  • FeedMaker.create_pipeline's hidden next if feed.link.nil? silently
    dropped those items, breaking composability with downstream link-independent
    plugins such as FilterLimit.
  • FeedObject's http://dummy / dummy placeholder defaults meant
    SubscriptionText's title-only and URL-only items disagreed with the
    contract documented in doc/PLUGINS.md's SubscriptionText table.

Tests

All commands below were run in this environment (Ruby 3.3.6) after
bundle install:

  • bundle exec rspec spec/lib/automatic/feed_maker_spec.rb — 14 examples, 0 failures
  • bundle exec rspec spec/plugins/subscription/text_spec.rb — 10 examples, 0 failures
  • bundle exec rspec spec/plugins/filter/batch_spec.rb — 12 examples, 0 failures
  • bundle exec rspec spec/plugins/filter/image_spec.rb — 3 examples, 0 failures
  • bundle exec rake spec:lib — 110 examples, 0 failures
  • bundle exec rake spec:plugins — 290 examples, 0 failures
  • bundle exec rake spec — 409 examples, 0 failures
  • gem build automatic.gemspec — succeeded (automatic-26.09.gem)
  • bundle exec ruby -Ilib -e "require 'automatic'" — exit 0
  • bundle exec bin/automatic --version — exit 0, prints 26.09
  • bundle exec bin/automatic --help — exit 0

Required CI (Ruby 3.3 / 3.4 / 4.0) status will be confirmed once the checks
run on this pull request.

Compatibility

  • Public call shapes of FeedMaker.generate_feed(hash) and
    FeedMaker.create_pipeline(items) are unchanged.
  • Recipe format is unchanged.
  • FilterImage's direct behavior (blanking link for non-image URLs) is
    unchanged; only its documentation wording was corrected.
  • Explicit nil-link guards in link-required plugins (e.g. StoreFile,
    StorePermalink) are unchanged.
  • Date fallback and item ordering (do_sort) behavior are unchanged.
  • No dependency changes.
  • VERSION remains 26.09; this is a correction that aligns the
    implementation with the already-documented pipeline contract.

Version History

Added one coherent entry to the existing unreleased v26.09 section of
doc/VERSIONS:

Preserve nil-link pipeline items and remove SubscriptionText placeholder
title and link values.

https://claude.ai/code/session_01CbtimCQAVdGhaEFXsEGKPK


Generated by Claude Code

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CbtimCQAVdGhaEFXsEGKPK
@id774
id774 merged commit b4ec0c5 into master Sep 7, 2026
8 checks passed
@id774
id774 deleted the claude/fix-nil-link-pipeline-tgoxd0 branch September 7, 2026 12:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants