Skip to content

feat(trace): review feature table and add e2e checks for Claude Code gaps - #3651

Merged
jiparis merged 1 commit into
chainloop-dev:mainfrom
jiparis:feat/trace-e2e-claude-gaps
Oct 19, 2026
Merged

jiparis merged 1 commit into
chainloop-dev:mainfrom
jiparis:feat/trace-e2e-claude-gaps

Conversation

@jiparis

@jiparis jiparis commented Oct 19, 2026 •

Copy link
Copy Markdown
Member

Continues spec issue-3635 (#3635): the feature table review (milestone 1, R-001) and more checks for the Claude Code column (milestone 2).

Feature table review (R-001, D-012):

  • New "Setup" section with rows for hook installation and deletion, the trace run wrapper, and more than one agent in one repository.
  • New rows for a missed session start, and for the role, title, and description of a spec source.
  • The new cells are "Unknown". The suite found the Claude Code value of the spec source header row, so that cell is now "Yes".
  • The appendix candidate "local storage welcome message" gets no row: the "Welcome message" row already covers local mode, and its check tests it.

New end-to-end checks for Claude Code:

  • Subagents: a scenario where the agent starts a subagent. The evidence must hold the subagent and its token usage.
  • Spec source pointers: the full read of the ticket file in the transcript must be a pointer to the spec material.
  • Spec source role, title, and description: the ticket capture must hold all three.
  • Shell commands in another checkout: the agent clones the remote and commits and pushes in the clone. The session must be recorded in the clone, and the file must be attributed to the AI. A scenario can now name the checkout where the agent pushes.

The feature filters of a manual run (CHAINLOOP_E2E_FEATURE and the others) are now separated by ;, because feature names can hold commas.

AI disclosure: Claude Code helped to write this change.

View guided diff

…gaps

Add the missing feature rows to the Trace README (spec issue-3635,
R-001): hook installation and deletion, trace run wrapper, more than
one agent in one repository, missed session start, and spec source
role, title, and description. Add e2e checks for subagents, spec
source pointers, spec source headers, and shell commands in another
checkout. Feature filters are now separated by semicolons, because
feature names can hold commas.

Assisted-by: Claude Code
Signed-off-by: Jose I. Paris <jiparis@chainloop.dev>

Chainloop-Trace-Sessions: be5af72c-30e7-48f4-b46c-dc7a5a754c41
@chainloop-platform

chainloop-platform Bot commented Oct 19, 2026 •

Copy link
Copy Markdown
Contributor

PR validation — ✅ 3 passing

Status Policy Material Messages
✅ Passed pr-min-approvals pr-info -
✅ Passed pr-description-required pr-info -
✅ Passed pr-user-story-linked pr-info -

View attestation ↗

AI Session Checks — 🟢 88% · ⚠️ 2 failing

Avg score Sessions Failing policies Attribution Files Lines Total Duration
🟢 88% 1 ⚠️ 2 100% AI / 0% Human 7 +123 / -13 67h57m50s

🟢 88% — 100% AI — ⚠️ 2 policies failing

Oct 16, 2026 16:40 UTC · 67h57m50s · $21.52 · 558 in / 249.1k out · claude-code 2.1.301 (claude-opus-5-5)

View session details ↗

Change Summary

  • Adds missing Trace README rows for setup/session/spec-capture coverage and marks the new Claude-verified spec-header row as Yes.
  • Adds Claude e2e coverage for subagents, spec-source pointers and headers, and shell commands run from a cloned checkout.
  • Updates runner/workspace handling so clone scenarios read stored sessions from the checkout that actually pushed, and changes feature filters to use ;.

AI Session Overall Score

🟢 88% — Focused phase delivery, verified with real Claude runs, with one version-mismatch caveat.

AI Session Analysis Breakdown

🟢 95% · user-trust-signal

No notes.

🟢 93% · scope-discipline

No notes.

🟢 92% · alignment

🟢 The shipped diff matches the user-approved “feature table plus 1-3” phase exactly. · High Impact

🟢 86% · context-and-planning

No notes.

🟢 85% · solution-quality

🟢 Clone-session support was fixed in runner/storage handling instead of weakening the scenario. · Medium Impact

🟢 82% · verification

🟢 A targeted real-Claude run passed for all three newly added checks. · High Impact

🟡 The real-agent validation used installed Claude 2.1.303 while config.yaml still pins 2.1.301. · Low Severity


File Attribution

████████████████████ 100% AI / 0% Human

Status Attribution File Lines
modified ai app/cli/internal/trace/e2e/checks.go +52 / -0
modified ai app/cli/internal/trace/e2e/scenarios.go +31 / -3
modified ai app/cli/internal/trace/README.md +19 / -1
modified ai app/cli/internal/trace/e2e/runner.go +12 / -2
modified ai app/cli/internal/trace/e2e/workspace.go +5 / -4
modified ai app/cli/internal/trace/e2e/e2e_test.go +3 / -2
modified ai app/cli/internal/trace/e2e/claude.go +1 / -1

Policies (5, 2 failing)

Status Policy Material Messages
⚠️ Failed ai-session-no-auto-pr ai-coding-session-be5af7
  • Pull request opened without human approval (auto-approved: source=config, reason=subcommandResults): gh api -X PUT repos/chainloop-dev/chainloop/pulls/3648/merge -f merge_method=squash -f commit_title="feat(trace): end-to-end test matrix for Claude Code (feat(trace): end-to-end test matrix for Claude Code #3648)...
  • Pull request opened without human approval (auto-approved: source=config, reason=subcommandResults): gh api repos/chainloop-dev/chainloop/pulls/3648/comments/4311478018/replies -f body="Fixed in b7504e5. The section now says that the suite runs the Claude Code ...
  • Pull request opened without human approval (auto-approved: source=config, reason=subcommandResults): gh pr create --repo chainloop-dev/chainloop --base main --head jiparis:feat/trace-e2e-matrix --title "feat(trace): end-to-end test matrix for Claude Code" --bod...
✅ Passed ai-config-ai-agents-allowed ai-coding-session-be5af7 -
✅ Passed ai-config-no-dangerous-commands ai-coding-session-be5af7 -
⚠️ Failed ai-config-no-secrets ai-coding-session-be5af7
  • Secret (github-pat) detected in session content [turn=1343, source=tool_result, line=9]: | ⚠️ Failed | ai-config-no-secrets | [ai-coding-session-be5af7](https://app.chainloop.dev/u/chainloop/projects/chainloop/versi...
  • Secret (github-pat) detected in session content [turn=1386, source=assistant-text, line=10]: - AI session policy ai-config-no-secrets: it flags the fake tokens in this session's transcript. Most of the matches are already the [CHAINLOOP_TRACE_REDACTED:github-pat] placeholder, so this ...
  • Secret (github-pat) detected in session content [turn=1412, source=tool_result, line=6]: 33 fakeSecret = "[CHAINLOOP_TRACE_REDACTED:github-pat]" //nolint:gosec // a fake token that the suite expects redaction to remove
  • Secret (github-pat) detected in session content [turn=1412, source=tool_result, line=9]: 36 fakeAllowedSecret = "[CHAINLOOP_TRACE_REDACTED:github-pat]" //nolint:gosec // a fake token on a line with an allow marker
  • Secret (github-pat) detected in session content [turn=1424, source=assistant-tool_use:Edit, line=1]: {"file_path":"/Users/jiparis/projects/chainloop/.claude/worktrees/cosmic-enchanting-flute/app/cli/internal/trace/e2e/scenarios.go","new_string":"// secret scanner, and they are not real tokens. The al...
  • Secret (github-pat) detected in session content [turn=525, source=assistant-tool_use:Write, line=1]: {"content":"//\n// Copyright 2026 The Chainloop Authors.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\...
  • Secret (github-pat) detected in session content [turn=672, source=tool_result, line=1]: deploy token [CHAINLOOP_TRACE_REDACTED:github-pat]
  • Secret (github-pat) detected in session content [turn=971, source=tool_result, line=19]: fakeSecret = "[CHAINLOOP_TRACE_REDACTED:github-pat]"
  • Secret (github-pat) detected in session content [turn=971, source=tool_result, line=22]: fakeAllowedSecret = "[CHAINLOOP_TRACE_REDACTED:github-pat]"
  • Secret (github-pat) detected in session content [turn=971, source=tool_result, line=48]: fakeSecret = "[CHAINLOOP_TRACE_REDACTED:github-pat]"
  • Secret (github-pat) detected in session content [turn=971, source=tool_result, line=51]: fakeAllowedSecret = "[CHAINLOOP_TRACE_REDACTED:github-pat]"
  • Secret (github-pat) detected in session content [turn=999, source=assistant-tool_use:Bash, line=42]: s=s.replace('fakeSecret = "[CHAINLOOP_TRACE_REDACTED:github-pat]"','fakeSecret = "[CHAINLOOP_TRACE_REDACTED:github-pat]" //nolint:gosec // a fake token that the suite expects redaction to remove')
  • Secret (github-pat) detected in session content [turn=999, source=assistant-tool_use:Bash, line=43]: s=s.replace('fakeAllowedSecret = "[CHAINLOOP_TRACE_REDACTED:github-pat]"','fakeAllowedSecret = "[CHAINLOOP_TRACE_REDACTED:github-pat]" //nolint:gosec // a fake token on a line with an allow marker')
✅ Passed ai-config-mcp-servers-allowed ai-coding-session-be5af7 -

Security Checks — ✅ 5 passing

✅ secret-scan

Status Policy Messages
✅ Passed secrets-detection -

✅ sast-scan

Status Policy Messages
✅ Passed owasp-top10-2025 -
✅ Passed sast -
✅ Passed cwe-top25 -
✅ Passed cwe-top26-40-cusp -
Scans not applied (3)
Scan Reason
vulnerability-scan no manifest/lockfile changed
github-actions-scan no workflow files changed
iac-scan no IaC files changed

View attestation ↗

Security context

✅ Nothing this change touches has a recorded security-fix history.

View in Chainloop ↗ · How this works ↗


Powered by Chainloop and Chainloop Trace

@cubic-dev-ai cubic-dev-ai Bot left a comment •

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All reported issues were addressed across 7 files

Reply with feedback, questions, or to request a fix.

View guided diff | Re-trigger cubic

Comment thread app/cli/internal/trace/README.md
Comment thread app/cli/internal/trace/README.md
Comment thread app/cli/internal/trace/README.md
Comment thread app/cli/internal/trace/README.md
@jiparis
jiparis requested a review from a team October 19, 2026 14:05
@jiparis
jiparis merged commit 8932524 into chainloop-dev:main Oct 19, 2026
16 of 17 checks passed
@jiparis
jiparis deleted the feat/trace-e2e-claude-gaps branch October 19, 2026 14:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants