Skip to content

Add internal signal links as a source type #22

Description

@evkw

Problem

Sometimes multiple signals are resolved because the work has been collapsed into another signal, e.g.

Collapsing all this work into signal XYZ

Today the only way to reference that target signal is to paste a localhost URL, but that is brittle because URLs will break when Hermes moves from local Docker hosting to another origin.

Goal

Allow a signal source/event to reference another Hermes signal by internal signal ID, making the relationship origin-agnostic.

Proposed UX

On Signal Detail, when adding a source/link:

  • Support existing external URL source
  • Add an option to link another signal
  • User can search signals by title/id
  • Selecting a signal stores the target signal ID
  • Render linked signal as an internal reference, e.g.
Linked signal: XYZ - Payment rules cleanup
Clicking it navigates using the current app origin/router, not a stored URL.

Data Model

Add support for internal signal references.
Possible approach:

Event {
  id
  signalId
  note
  link?              // external URL
  linkedSignalId?    // internal Hermes signal reference
  createdAt
}

Alternative if sources are separate from events:

SignalSource {
  id
  signalId
  type: "external_link" | "internal_signal"
  title
  url?
  linkedSignalId?
  createdAt
}

Acceptance Criteria

  • User can search for an existing signal when adding a source/link.
  • User can attach another signal as an internal reference.
  • Stored reference uses linkedSignalId, not a copied URL.
  • Linked signal renders as a clickable internal app link.
  • Link still works if Hermes changes host/origin.
  • Resolved signals can still be searched and linked.
  • Prevent linking a signal to itself.
  • Add basic handling for deleted/missing linked signals.
  • Update current spec and schema docs.

Notes

This supports the workflow where older/duplicate signals are resolved after being collapsed into a canonical signal.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions