Skip to content
Castellan
Developer Herald's icon

Concept · Developer Herald

Read as

How the Developer Herald decides what's news

The rules code follows for what's news and what's relevant in releases, issues and models; how the local model summarises release notes, and its limits; and how GitHub and Hugging Face are read.

Article
1503
Applies to
Developer Herald 0.9.3
Last reviewed
For
For developers
Written for Developer Herald 0.9.3. Developer Herald is at 0.9.4 now (1 small release since: what changed).

The baseline#

The first time a feed is read, what upstream has then is recorded as known: its releases, an issue's state, comments and links, or a search's models. None of it is news. A feed added later gets its own baseline.

What's news#

FeedNews
ReleasesA tag not seen before. A prerelease is marked as one. A draft is never news, nor an older release that comes back into the list when a newer one is deleted.
Tracked issuesIts state changes (open, closed with its reason, reopened); it gains comments (how many, and the newest one's author and date); or a fix appears on its timeline: a pull request that refers to it, the commit that closed it, or a commit that mentions it.
Hugging FaceA model new to a search, or one whose card changed. One search's updates in one round are one item, as an author often touches many model cards at once. A model found by two searches is news once.

What's relevant#

A release is flagged relevant when its title or notes mention one of your keywords, or one of your tracked issues. The lines that match are quoted word for word, with their line numbers and the matches highlighted.

A tracked issue counts by its URL or owner/name#n anywhere. A bare #n counts only in its own repository's notes: in another project's notes, #787 is that project's own pull request. News about a tracked issue is always relevant.

What the model adds#

With Plain-words notes on, a small model on this PC writes a two- or three-sentence summary of each new release's notes, asked for the main changes, new models and features first. It runs on the NPU, a graphics card or the processor, taking its turn with the other agents (see Where the work runs), and each summary is labelled with where it was written: "note from the NPU, unverified".

  • The notes are cleaned first: link targets, images, "first contribution" lines, pull request bylines, and paragraphs repeated from the release before, so a header every release carries isn't read as news.
  • Long notes are read in pieces, each summarised, then combined. At most 6 pieces (about 30,000 characters); longer notes are summarised from their start, and the page says how much was read.
  • At most 6 releases a round are summarised (Model calls per round). New releases come first, then each feed's latest, so the first round has summaries too. A quiet release isn't summarised.
  • Nothing is asked twice: summaries are kept by release and notes.
  • When the accelerators are busy (4 or more waiting on every one, or no turn within 10 minutes), summarising stops for the round, and the page says "Busy: summaries deferred to a later round". The next round tries again.
  • Without the local AI, the news, its relevance and the quoted lines are all still there, with a line saying why there's no summary.

How it reads upstream#

GitHub is read through the GitHub CLI (gh) when it's installed and signed in, else through GitHub's public API without a token. Which one is decided every 10 minutes, so signing gh in takes effect without a restart.

  • Signed in, the hour's allowance is 5,000 requests; without, 60, enough for a few dozen feeds once their first answers are known.
  • An unchanged answer (304) doesn't count against the allowance.
  • Below a tenth of the allowance left, the GitHub feeds wait for the next round.
  • Every call is a read: it can't comment or change anything.

npm, crates.io and PyPI are read only to find a suggested package's repository. Hugging Face is read through its public API, without a token.

A failing feed shows its error on the page, and doesn't stop the others. Offline, a feed that can't be read shows "offline", what it had stands, and it's read again next round. Anything that looks like a token is blanked from errors.

Its limits#

  • It reads the newest 10 releases of each repository a round (Releases read per repo). More than that between two rounds, and it misses the oldest.
  • A pull request linked to an issue only through GitHub's sidebar isn't visible to it: only pull requests and commits that refer to the issue are.
  • Relevance is keyword matching. A release that matters without using your words isn't flagged. Add the words your upstreams use.

Is this page right?

If something on it is wrong or out of date, tell us and we'll fix the page.

Still stuck? Write to support@castellan-software.com and mention article 1503. Every version of Developer Herald, and what changed in it, is in its release notes.