Skip to content

DO NOT MERGE — merge train: 3176,3149,3171,3148 - #3179

Closed
trinity-ability wants to merge 13 commits into
devfrom
train/20261002-0717
Closed

trinity-ability wants to merge 13 commits into
devfrom
train/20261002-0717

Conversation

@trinity-ability

Copy link
Copy Markdown
Contributor

Integration surface for #3176, #3149, #3171, #3148. Never merged; members merge individually once green.

🤖 Generated with Claude Code

dolho and others added 13 commits October 1, 2026 13:57
…ive activity line (#3001)

The Work card's steps sentence was ruled for ent#525, before #620 put the
agent's live activity line on the same card. So an agent that publishes no
pipeline showed "Thinking" / "Reading …" with "<agent> doesn't report steps."
directly beneath it, and the card contradicted itself.

stepsLine() gains `{ activitySeen }`. Once PortalWorkCard has shown a live line
on this run, the `none` sentence is withheld (kind `activity`, no text). This
is sticky across the 15 s beat gaps and resets for a new run. "Could not be
read right now" is unchanged, since it stays true either way, and the sentence
still shows for an agent that reports neither stages nor activity.

This re-lands the closed #3002 on top of #2972, which rewrote the same row for
the chat's one-line card (`reserveLiveRows`, #2964). There, `activity` is
silent like `pending`: the reserved row stays, blank and aria-hidden, so the
card keeps its shape. stepsLine still returns `who` for the `none` sentence.

workStepsActivity.spec.js (mounted): 4 of 8 fail on dev and all pass with the
fix. It covers the rule, a live line beside the sentence, suppression between
beats with a reset for the next run, and the chat card's reserved row staying
blank at h-4.

Fixes #3001

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…d pytest jobs as failures

dependabot-auto-merge.yml waits on every check-run named build or
pytest* and treated any completed non-success conclusion as a failed
gate. Since the #2945 tiering every PR carries 'pytest (base, inline
fallback)' and 'pytest (push, absolute failures)' as completed/skipped
— they run on other events — so the gate answered 'a gating check
failed' on every Dependabot PR from mid-September on, with build and
pytest (head) green beside them, and the queue filled with unreviewed
green patch/minor bumps (3100, 2967, 2965, 2830 merged by hand today).

Exempt 'skipped' only. A behavioural test executes the step's script
under bash with gh stubbed: skipped+success passes, failure/cancelled/
timed_out/action_required still block. The test skips on a bash
without mapfile (macOS /bin/bash 3.2); ubuntu-latest runs it.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Ruled 2026-10-01: the sentence goes, not only beside a live activity line.
Before the first line it read as a fault, and beside "Thinking" / "Reading …"
as the card contradicting itself. A running card now shows the live activity
line, or the stages when the agent publishes them, or nothing.

- stepsLine(steps) returns { kind: 'none', text: '' } for an agent with no
  stages. The `activitySeen` option and the name/claim split (`who`), which
  existed only for the sentence, are gone.
- PortalWorkCard treats `none` like `pending`. It renders nothing outside the
  chat. In the chat's one-line card (`reserveLiveRows`, #2964) the reserved
  row stays, blank and aria-hidden, so the card keeps its shape.
- "Steps could not be read right now." stays, since it reports a real failure.

Tests: workStepsActivity.spec.js covers the card before the first line, beside
a live line, between heartbeats, the unknown sentence, and the chat card's
blank h-4 row. Four #2964 and ent#525 tests that asserted the sentence now
assert its absence, with the shape guarantees they protect kept. Restoring
the sentence in stepsLine turns the spec red. Full suite: 244 files, 4,484
tests.

Docs: architecture, feature flow, requirement and user doc updated.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…NTEND_URL is unset (#3170)

The backend builds a public link's `url` as `${FRONTEND_URL}/chat/<token>`,
and FRONTEND_URL defaults to empty, so the Sharing panel showed and copied a
bare `/chat/<token>` path. Resolve it against the page origin in the panel.
An absolute `url` or `external_url` passes through unchanged.

Closes #3170

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
pytest (head) runs its suite with '|| true' and is green whatever the tests
do; the unit verdict is the 'regression diff' job, which the ^build$|pytest
filter never selected. With skipped rows no longer failing the gate, a
patch/minor bump that breaks unit tests would have auto-merged. New test runs
the workflow's own jq filter under real jq.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
`regression diff` needs the pytest jobs, so GitHub creates its check-run
only after `pytest (head)` finishes. In that window every gating row is
green or skipped, and the gate read "nothing pending" and passed without
the unit verdict. A missing `regression diff` row is now pending, and a
poll where every row is skipped no longer counts as green.

merge-train: mechanical fix on our own PR, per the merge-train note.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
`\s*[:=]?\s*` lets the two adjacent `\s*` split a run of whitespace every
way, so classification was quadratic in stderr length (~47s on 200k
spaces, inline on the agent server's event loop). `\s*(?:[:=]\s*)?`
matches the same strings in linear time.

merge-train: mechanical, per the merge-train note on the PR.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The feature-flow and three code comments still described the removed
sentence (the agent-name truncation, "the card says ..."). Comment and
doc text only; no behaviour change.

merge-train: mechanical, per the merge-train note on the PR.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ui PR touches the frontend UI — triggers Playwright e2e tests

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants