Skip to content

feat: Pulse campaign activity and fair feed collection #85

Closed

Description

@Jammy2211

Pulse Live Feed coverage and collection fairness

Difficulty: medium
Consequence: judge
Status: approved

Target: @PyAutoScientist. Pulse is read-only evidence owner.

Original request

looks like a good start, I think pulse work is missing so do we need to get support for more boards up?

Approved three-step proposal

  1. Check collection is progressing reliably.
  2. Route profiling development work to Pulse.
  3. Add dated campaign/run updates, grouped by campaign so individual measurements do not flood the feed.

User approval (verbatim): yeah do all 3
Interpretation stated to user: the three Pulse steps, not a simultaneous Insight/Cortex rollout.

Plan

  • Bound per-repository collection work as well as whole-cycle request/time limits; retain partial normalized history and rotate fairly. Confirm existing deployment/schedule evidence, without inventing a scheduler guarantee.
  • Configure explicit profiling-repository-to-Pulse board routing using body-map identities. Reuse existing board UI/grouping and source links.
  • Read Pulse campaigns.yaml, registry.yaml and captured snapshots from one verified public Pulse commit. Publish factual campaign check-in updates using the recorded last_checkin, stable IDs and deduplication by meaningful content; no refresh-as-event. Keep active distinct from running and needs-decision distinct from failed. Group associated task updates under campaign IDs.
  • Support dated run evidence grouped through explicit campaign association only. Current 112 measurements have null measured_at and no universal campaign association: omit them from timeline and expose coverage counts/reasons, never substitute ingest/render/commit time. Do not infer speedups, acceptance or run submission.
  • Keep first-load seed and unchanged polling distinct; same-content check-ins do not create repeated events. Existing registered GitHub work stays visible and actor links stay public.
  • Validate fairness, repeated unchanged check-ins, invalid/undated evidence, stale fallbacks, campaign grouping, existing grouped UI and live read-only Pulse ingest. No Pulse/project edits or profiling execution.
    Tier: judge — human /prm.

Files and tests

scripts/activity_feed.py: per-source API allowance, source routing from config, integrate separate Pulse collector coverage and normalized rows without breaking cache schema migration.
scripts/pulse_activity.py (new): pinned public read adapter, campaign/task normalization and dated explicitly associated run groups. Source statuses and timestamps are evidence, not scientific verdicts.
config/activity_sources.json (new): explicit registered profiling repo routing; configured Pulse owner identity, no guessed project campaign associations.
REPORTING.md and collector tests: coverage semantics, fairness budgets, continuity, privacy, timestamp honesty. Reuse live_feed.js UI contract; only label adjustments if the source scope needs it.

Findings / branch survey

Current publication is initial manual run38469411015; no subsequent scheduled run listed at inspection. This alone is not proof of broken scheduler. Initial collection covered four sources fully, one partially; Pulse awaited collection. Existing global budget can be consumed by one busy repository. Pulse campaign ledger has12 campaigns and recorded last_checkin2026-10-13T17:51:40Z; measurement snapshot112 records has unknown measured_at. Review/ingest times cannot become measurement times.
Scientist main clean, Pulse main clean, no active claims. Preserve existing unregistered DNA Scientist worktree. Proposed feature/pulse-live-feed at .worktrees/pulse-live-feed/PyAutoScientist. Heart entry STALE permits development planning; readiness rechecked at ship.

Activity

  1. Jammy2211 commented on Oct 13, 2026

    @Jammy2211
    ContributorAuthor

    Pulse Live Feed coverage and collection fairness

    Shipped all three approved Pulse steps in PyAutoScientist PR #86: #86
    Issue: #85
    Merged 2026-10-13 at 36ee0ca; head 1196bee. Every task branch commit is contained in origin/main.

    Added a 12-request per-repository allowance so busy sources yield, explicit profiling repository routes to Pulse, and pinned public Pulse campaign/task collection. Meaningful updates are deduplicated and grouped by campaign; unchanged check-ins do not create events. Live validation found 12 campaign rows. Run evidence requires actual measurement dates and explicit campaign/run association. The inspected snapshot contains 100 undated measurements and 12 dated measurements without explicit association; these remain coverage gaps, not invented feed events. Existing five-minute collection delivery remains best effort.

    Validation: Python suite 171 passed before two final regressions; final collector/adapter suite 25 passed; JavaScript suite 7 passed; six browser viewport/theme cases plus no-JS passed. Read-only pinned adapter returned 12 campaigns; integrated production CLI returned 26 Pulse-labelled rows including those campaigns. CI Board tests run 38471290462 and its tests job passed for the exact head. Heart was STALE solely for missing current-source rehearsal, with no red/yellow reasons.

    Publication dispatched on merged main: https://github.com/PyAutoLabs/PyAutoScientist/actions/runs/38471616619 . Publication and live verification receipt: tmp/pulse-live-feed/publication.json. Test, browser and collection evidence: tmp/pulse-live-feed/.

    Pulse and project repositories remained read-only; MyScientist was unchanged. No inference, production profiling, scientific acceptance or new science collection was performed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions