Skip to content

Pulse TELOS page: the Projects-and-Work band is one synthetic row with empty badges, blank owners and goal mirrors shown as work #2048

Description

@lgertel

Version: LifeOS 7.40.4 (ce046f2)

What

The "Projects and Work" band on /telos (and /, its alias) is built from the work board's In-Progress column and nothing else. On a populated install it renders:

  • one pseudo-project row titled "Work in flight" for every card, never the projects TELOS § Projects declares;
  • an empty strategy badge on the row and on every work cell (strategy: "");
  • a blank owner on every cell, because the owner matcher looks for a lowercase agent: label while the sweep writes Agent:<name>;
  • [Goal] … mirror cards (the ones WorkSweep mints for active TELOS goals) listed as work in flight.

Where

LIFEOS/PULSE/Observability/observability.ts

  • agentFromLabels (line 4064): labels.find((x) => x.startsWith("agent:")) — case-sensitive, so Agent:<name> (the casing LIFEOS/TOOLS/WorkSweep.ts writes at lines 272, 395, 460, 531) never matches and owner is "".
  • buildProjectsFromStatus (line 4079): pushes a single { id: "WORK", title: "Work in flight", strategy: "" } and maps each card to { strategy: "", owner: agentFromLabels(...) }; no filter for [Goal] titles; no join to TELOS § Projects or PROJECTS.md.

Reproduce

  1. On an install with a work repo configured, take any card so it sits in the In-Progress column (Status:in-progress); let the sweep mint a [Goal] mirror for an active goal and move it there too.
  2. curl -s localhost:31337/api/telos/overview | jq '.projects'.
  3. Observe: projects[0].title == "Work in flight", strategy == "" on the row and on each work[] entry, owner == "" on every card labelled Agent:<name>, and the [Goal] … card present in work[].
  4. Open /telos, section "Projects and Work": the badge column is blank, the owner column is blank.

Expected

  • Cards join the project they belong to (TELOS § Projects entry, matched by the card's Property: label), with unmatched cards under a "Work in flight" row.
  • Every strategy badge and owner carries a value (the project's served goal/strategy ID, else the property, else an explicit unmapped).
  • Owner labels match in any case.
  • [Goal] … mirrors never appear as work.

Fix shape

A pure module beside observability.ts (overview-work.ts) that takes the in-flight cards, the TELOS § Projects entries and the Bunker monitor state and returns the band rows: case-insensitive Agent:/Property: label readers, a [Goal] title filter, a badge that is never empty, grouping by matched project. observability.ts keeps a four-line wrapper. Unit-testable without a daemon; a PR can follow with the file and its tests as one hunk.

Activity

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

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions