Skip to content

docs: journey-traceability + iconography implementation#40

Merged
KooshaPari merged 1 commit into
mainfrom
feat/journey-impl
May 1, 2026
Merged

docs: journey-traceability + iconography implementation#40
KooshaPari merged 1 commit into
mainfrom
feat/journey-impl

Conversation

@KooshaPari
Copy link
Copy Markdown
Owner

@KooshaPari KooshaPari commented May 1, 2026

User description

Journey traceability docs + Fluent/Material iconography SVGs + CI gate. Stub manifests — populate to pass CI.

Co-authored-by: Claude Opus 4.7 noreply@anthropic.com

Note

Medium Risk
Adds a new GitHub Actions workflow that can block PRs/merges by failing when journey manifests are missing or assertions fail, so it may immediately break CI until manifests are populated.

Overview
Introduces a new Journey Gate GitHub Actions workflow (.github/workflows/journey-gate.yml) that installs dependencies, discovers manifest.verified.json files, validates them, and runs strict assertions (with optional live verification via ANTHROPIC_API_KEY). The workflow is currently stubbed to fail when no manifests are found, forcing repos to add journey coverage before CI will pass.

Adds initial journey traceability documentation (docs/operations/journey-traceability.md), a stub journey manifest (docs/journeys/manifests/main-flow.json), and a new iconography spec plus Fluent/Material SVG icon sets under docs/operations/iconography/.

Reviewed by Cursor Bugbot for commit 7f27cd7. Bugbot is set up for automated code reviews on this repo. Configure here.


CodeAnt-AI Description

Add journey traceability docs, icon guidance, and a CI gate for journey manifests

What Changed

  • Added journey traceability docs that define which user flows to document, when to capture keyframes, and where journey manifests live
  • Added an iconography spec covering the supported icon styles and shared accessibility rules
  • Added a starter journey manifest for the main flow
  • Added a GitHub Actions gate that checks for journey manifests, validates them, and fails PRs when required coverage is missing

Impact

✅ Clearer journey coverage requirements
✅ Fewer PRs missing required journey manifests
✅ Earlier CI failures for incomplete traceability

🔄 Retrigger CodeAnt AI Review

Details

💡 Usage Guide

Checking Your Pull Request

Every time you make a pull request, our system automatically looks through it. We check for security issues, mistakes in how you're setting up your infrastructure, and common code problems. We do this to make sure your changes are solid and won't cause any trouble later.

Talking to CodeAnt AI

Got a question or need a hand with something in your pull request? You can easily get in touch with CodeAnt AI right here. Just type the following in a comment on your pull request, and replace "Your question here" with whatever you want to ask:

@codeant-ai ask: Your question here

This lets you have a chat with CodeAnt AI about your pull request, making it easier to understand and improve your code.

Example

@codeant-ai ask: Can you suggest a safer alternative to storing this secret?

Preserve Org Learnings with CodeAnt

You can record team preferences so CodeAnt AI applies them in future reviews. Reply directly to the specific CodeAnt AI suggestion (in the same thread) and replace "Your feedback here" with your input:

@codeant-ai: Your feedback here

This helps CodeAnt AI learn and adapt to your team's coding style and standards.

Example

@codeant-ai: Do not flag unused imports.

Retrigger review

Ask CodeAnt AI to review the PR again, by typing:

@codeant-ai: review

Check Your Repository Health

To analyze the health of your code repository, visit our dashboard at https://app.codeant.ai. This tool helps you identify potential issues and areas for improvement in your codebase, ensuring your repository maintains high standards of code health.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings May 1, 2026 15:37
@gemini-code-assist
Copy link
Copy Markdown

Warning

You have reached your daily quota limit. Please wait up to 24 hours and I will start processing your requests again!

@codeant-ai
Copy link
Copy Markdown

codeant-ai Bot commented May 1, 2026

CodeAnt AI is reviewing your PR.


Thanks for using CodeAnt! 🎉

We're free for open-source projects. if you're enjoying it, help us grow by sharing.

Share on X ·
Reddit ·
LinkedIn

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 1, 2026

Warning

Rate limit exceeded

@KooshaPari has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 6 minutes and 38 seconds before requesting another review.

To keep reviews running without waiting, you can enable usage-based add-on for your organization. This allows additional reviews beyond the hourly cap. Account admins can enable it under billing.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: cc882ffa-6aa1-48f6-bb3f-056c43d3ea42

📥 Commits

Reviewing files that changed from the base of the PR and between 74647af and 7f27cd7.

⛔ Files ignored due to path filters (20)
  • docs/operations/iconography/fluent/branch.svg is excluded by !**/*.svg
  • docs/operations/iconography/fluent/dashboard.svg is excluded by !**/*.svg
  • docs/operations/iconography/fluent/home.svg is excluded by !**/*.svg
  • docs/operations/iconography/fluent/package.svg is excluded by !**/*.svg
  • docs/operations/iconography/fluent/plugin.svg is excluded by !**/*.svg
  • docs/operations/iconography/fluent/search.svg is excluded by !**/*.svg
  • docs/operations/iconography/fluent/settings.svg is excluded by !**/*.svg
  • docs/operations/iconography/fluent/terminal.svg is excluded by !**/*.svg
  • docs/operations/iconography/fluent/user.svg is excluded by !**/*.svg
  • docs/operations/iconography/fluent/workflow.svg is excluded by !**/*.svg
  • docs/operations/iconography/material/branch.svg is excluded by !**/*.svg
  • docs/operations/iconography/material/dashboard.svg is excluded by !**/*.svg
  • docs/operations/iconography/material/home.svg is excluded by !**/*.svg
  • docs/operations/iconography/material/package.svg is excluded by !**/*.svg
  • docs/operations/iconography/material/plugin.svg is excluded by !**/*.svg
  • docs/operations/iconography/material/search.svg is excluded by !**/*.svg
  • docs/operations/iconography/material/settings.svg is excluded by !**/*.svg
  • docs/operations/iconography/material/terminal.svg is excluded by !**/*.svg
  • docs/operations/iconography/material/user.svg is excluded by !**/*.svg
  • docs/operations/iconography/material/workflow.svg is excluded by !**/*.svg
📒 Files selected for processing (4)
  • .github/workflows/journey-gate.yml
  • docs/journeys/manifests/main-flow.json
  • docs/operations/iconography/SPEC.md
  • docs/operations/journey-traceability.md
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/journey-impl
✨ Simplify code
  • Create PR with simplified code
  • Commit simplified code in branch feat/journey-impl

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share
Review rate limit: 0/1 reviews remaining, refill in 6 minutes and 38 seconds.

Comment @coderabbitai help to get the list of available commands and usage tips.

@sonarqubecloud
Copy link
Copy Markdown

sonarqubecloud Bot commented May 1, 2026

@codeant-ai codeant-ai Bot added the size:L This PR changes 100-499 lines, ignoring generated files label May 1, 2026
@KooshaPari KooshaPari merged commit cefaefc into main May 1, 2026
15 of 18 checks passed
Comment on lines +32 to +110
manifest_path:
description: 'Glob pattern for manifests (default: "**/manifest.verified.json")'
required: false
default: '**/manifest.verified.json'
strict_mode:
description: 'Run assertions in --strict mode (fail on violations)'
required: false
default: 'true'
type: boolean
live_verification:
description: 'Use --live mode (requires ANTHROPIC_API_KEY secret)'
required: false
default: 'false'
type: boolean

env:
PHENOTYPE_JOURNEY_STRICT: ${{ inputs.strict_mode || 'true' }}

jobs:
journey-gate:
name: Journey Verification
runs-on: ubuntu-latest
timeout-minutes: 15

steps:
- name: Checkout
uses: actions/checkout@v4

# ---------------------------------------------------------------------
# 1. Install runtime dependencies
# ---------------------------------------------------------------------
- name: Install tesseract OCR
run: |
sudo apt-get update -qq
sudo apt-get install -y -qq tesseract-ocr \
|| { echo "WARNING: tesseract install failed — assertions will skip"; }

- name: Check tesseract availability
run: |
if command -v tesseract &>/dev/null; then
echo "tesseract: $(tesseract --version | head -1)"
else
echo "tesseract: NOT FOUND — OCR assertions will be skipped"
fi

# ---------------------------------------------------------------------
# 2. Install phenotype-journey CLI
# ---------------------------------------------------------------------
- name: Install phenotype-journey
run: |
if command -v phenotype-journey &>/dev/null; then
echo "phenotype-journey: $(phenotype-journey --version 2>/dev/null || phenotype-journey --help 2>&1 | head -1)"
else
echo "Installing phenotype-journey..."
# Install via cargo if available, else download binary
if command -v cargo &>/dev/null; then
cargo install phenotype-journey --locked \
|| { echo "ERROR: phenotype-journey install failed"; exit 1; }
else
# Download latest release binary (adjust URL as needed)
curl -fsSL https://github.com/KooshaPari/phenotype-journeys/releases/latest/download/phenotype-journey-x86_64-unknown-linux-gnu \
-o /usr/local/bin/phenotype-journey \
&& chmod +x /usr/local/bin/phenotype-journey \
|| { echo "ERROR: phenotype-journey download failed"; exit 1; }
fi
fi

# ---------------------------------------------------------------------
# 3. Find all manifest.verified.json files
# ---------------------------------------------------------------------
- name: Discover manifests
id: discover
run: |
GLOB="${MANIFEST_PATH:-**/manifest.verified.json}"
echo "Glob pattern: $GLOB"

MANIFESTS=$(find . \
-name "manifest.verified.json" \
-not -path "*/node_modules/*" \
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🟠 Architect Review — HIGH

The workflow defines a manifest_path workflow_dispatch input and derives a GLOB variable but the Discover manifests step ignores both, always running find with a hard-coded -name "manifest.verified.json", so the documented override knob has no effect and alternate manifest layouts cannot be gated via this input.

Suggestion: Map the manifest_path input to an environment variable (e.g., MANIFEST_PATH) and use it in the Discover manifests step (for example via the GLOB variable in the find invocation) so manual runs and repo-specific manifest paths behave as documented.

Fix in Cursor | Fix in VSCode Claude

(Use Cmd/Ctrl + Click for best experience)

Prompt for AI Agent 🤖
This is an **Architect / Logical Review** comment left during a code review. These reviews are first-class, important findings — not optional suggestions. Do NOT dismiss this as a 'big architectural change' just because the title says architect review; most of these can be resolved with a small, localized fix once the intent is understood.

**Path:** .github/workflows/journey-gate.yml
**Line:** 32:110
**Comment:**
	*HIGH: The workflow defines a `manifest_path` workflow_dispatch input and derives a `GLOB` variable but the Discover manifests step ignores both, always running `find` with a hard-coded `-name "manifest.verified.json"`, so the documented override knob has no effect and alternate manifest layouts cannot be gated via this input.

Validate the correctness of the flagged issue. If correct, How can I resolve this? If you propose a fix, implement it and please make it concise.
If a suggested approach is provided above, use it as the authoritative instruction. If no explicit code suggestion is given, you MUST still draft and apply your own minimal, localized fix — do not punt back with 'no suggestion provided, review manually'. Keep the change as small as possible: add a guard clause, gate on a loading state, reorder an await, wrap in a conditional, etc. Do not refactor surrounding code or expand scope beyond the finding.
Once fix is implemented, also check other comments on the same PR, and ask user if the user wants to fix the rest of the comments as well. if said yes, then fetch all the comments validate the correctness and implement a minimal fix

@codeant-ai
Copy link
Copy Markdown

codeant-ai Bot commented May 1, 2026

CodeAnt AI finished reviewing your PR.

Copy link
Copy Markdown

@cursor cursor Bot left a comment

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes and found 5 potential issues.

Fix All in Cursor

Bugbot Autofix is ON, but it could not run because on-demand usage is turned off. To enable Bugbot Autofix, turn on on-demand usage and set a spend limit in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 7f27cd7. Configure here.

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24" role="img" aria-label="search" focusable="false" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M21 21l-4.35-4.35M11 19a8 8 0 1 0-16 8 8 8 0 0 0 16z"/></svg> No newline at end of file
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Search icon SVG path has malformed arc data

Medium Severity

The search icon's circle arc path a8 8 0 1 0-16 8 8 8 0 0 0 16z is missing a 0 dx value in both arcs. The correct path for a circle centered at (11,11) is a8 8 0 1 0 0-16 8 8 0 0 0 0 16z. Without the 0 dx, the first arc goes to (-5, 27) instead of (11, 3), rendering the circle entirely outside the 24×24 viewBox. Both the Fluent and Material versions are affected.

Additional Locations (1)
Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 7f27cd7. Configure here.

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24" role="img" aria-label="workflow" focusable="false" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M16 18l6-6-6-6M8 6l-6 6 6 12"/></svg> No newline at end of file
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Workflow icon has asymmetric left chevron path

Low Severity

The workflow icon's second chevron path segment l-6 6 6 12 draws the bottom leg to (8, 24) instead of (8, 18), making it twice as long as the top leg. The right chevron uses l6-6-6-6 (symmetric with dy=6 each leg), but the left chevron has 6 12 instead of 6 6, creating a visually lopsided icon.

Additional Locations (1)
Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 7f27cd7. Configure here.

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24" role="img" aria-label="branch" focusable="false" fill="currentColor"><path d="M6 3v12M18 6a3 3 0 0 1 0 6M6 18a3 3 0 0 1 0-6M18 9a9 9 0 0 1 0 9"/></svg> No newline at end of file
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Material icons use stroke paths with fill rendering

Medium Severity

The Material icons use fill="currentColor" with no stroke, but their path data is identical to the Fluent (stroke-based) icons. Open paths like straight lines (M6 3v12, M4 17l6-6-6-6M12 19h8) have no enclosed area for fill to render, so icons like branch, terminal, and workflow will be invisible. Filled icon variants need different closed-shape path data.

Additional Locations (2)
Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 7f27cd7. Configure here.

name: Journey Gate — No Manifests Found
runs-on: ubuntu-latest
needs: journey-gate
if: needs.journey-gate.result == 'failure' && needs.journey-gate.outputs.MANIFEST_COUNT == '0'
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Stub-mode job can't access journey-gate outputs

Medium Severity

The stub-mode job references needs.journey-gate.outputs.MANIFEST_COUNT, but the journey-gate job never declares an outputs: mapping at the job level. Step-level outputs (from steps.discover.outputs.MANIFEST_COUNT) are not automatically promoted to job-level outputs in GitHub Actions. The condition == '0' will always evaluate to false, so the stub-mode job will never execute.

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 7f27cd7. Configure here.

- name: Run assertions
env:
MANIFEST_LIST: ${{ steps.discover.outputs.MANIFEST_LIST }}
PHENOTYPE_JOURNEY_STRICT: ${{ inputs.strict_mode && 'true' || 'false' }}
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Strict mode disabled for push and PR triggers

High Severity

The expression ${{ inputs.strict_mode && 'true' || 'false' }} at the step-level env evaluates to 'false' for push and pull_request triggers because inputs.strict_mode is null/empty (inputs are only populated for workflow_dispatch). This step-level env overrides the correctly-defaulted workflow-level PHENOTYPE_JOURNEY_STRICT on line 48, so assertion violations silently pass on every push and PR — the two most common CI triggers — completely undermining the gate.

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 7f27cd7. Configure here.

@KooshaPari KooshaPari review requested due to automatic review settings May 1, 2026 15:58
@codeant-ai
Copy link
Copy Markdown

codeant-ai Bot commented May 8, 2026

CodeAnt AI is running the review.


Thanks for using CodeAnt! 🎉

We're free for open-source projects. if you're enjoying it, help us grow by sharing.

Share on X ·
Reddit ·
LinkedIn

@codeant-ai codeant-ai Bot added size:L This PR changes 100-499 lines, ignoring generated files and removed size:L This PR changes 100-499 lines, ignoring generated files labels May 8, 2026
@codeant-ai
Copy link
Copy Markdown

codeant-ai Bot commented May 8, 2026

Sequence Diagram

This PR adds a GitHub Actions workflow that enforces journey traceability by discovering verified journey manifests, validating them with the journey CLI, and failing CI when manifests are missing or checks do not pass.

sequenceDiagram
    participant Dev as Developer
    participant CI as GitHub Actions
    participant Gate as Journey Gate workflow
    participant CLI as Journey CLI
    participant Manifests as Journey manifests

    Dev->>CI: Push or open pull request to main
    CI->>Gate: Start Journey Gate job
    Gate->>Gate: Install tesseract and Journey CLI
    Gate->>Manifests: Discover manifest verified json files

    alt Manifests found
        Gate->>CLI: Validate and assert all manifests
        CLI-->>Gate: All validations and assertions pass
        Gate-->>CI: Mark Journey Gate job successful
        CI-->>Dev: Report passing journey checks
    else No manifests found
        Gate-->>CI: Fail job in stub mode
        CI-->>Dev: Require adding journey manifests to pass CI
    end
Loading

Generated by CodeAnt AI

@codeant-ai
Copy link
Copy Markdown

codeant-ai Bot commented May 8, 2026

CodeAnt AI finished running the review.


Thanks for using CodeAnt! 🎉

We're free for open-source projects. if you're enjoying it, help us grow by sharing.

Share on X ·
Reddit ·
LinkedIn

@codeant-ai
Copy link
Copy Markdown

codeant-ai Bot commented May 8, 2026

CodeAnt AI is running the review.


Thanks for using CodeAnt! 🎉

We're free for open-source projects. if you're enjoying it, help us grow by sharing.

Share on X ·
Reddit ·
LinkedIn

@codeant-ai codeant-ai Bot added size:L This PR changes 100-499 lines, ignoring generated files and removed size:L This PR changes 100-499 lines, ignoring generated files labels May 8, 2026
@codeant-ai
Copy link
Copy Markdown

codeant-ai Bot commented May 8, 2026

Sequence Diagram

This PR adds a Journey Gate GitHub Actions workflow that runs on pushes and pull requests to enforce the presence and validity of journey manifests, failing CI in stub mode until manifests are added and then validating, asserting, and optionally live-verifying them.

sequenceDiagram
    participant Dev as Developer
    participant GitHub as GitHub
    participant Gate as Journey Gate workflow
    participant CLI as Journey CLI
    participant Live as Live verification API

    Dev->>GitHub: Push or open pull request
    GitHub->>Gate: Trigger Journey Gate workflow
    Gate->>Gate: Discover manifest.verified.json files

    alt No manifests found
        Gate-->>Dev: Fail stub mode and instruct to add manifests
    else Manifests found
        Gate->>CLI: Validate and assert all manifests in strict mode
        opt Live verification enabled
            Gate->>Live: Verify manifests via live API
        end
        Gate-->>Dev: Report journey gate passed in CI
    end
Loading

Generated by CodeAnt AI

@codeant-ai
Copy link
Copy Markdown

codeant-ai Bot commented May 8, 2026

CodeAnt AI finished running the review.


Thanks for using CodeAnt! 🎉

We're free for open-source projects. if you're enjoying it, help us grow by sharing.

Share on X ·
Reddit ·
LinkedIn

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L This PR changes 100-499 lines, ignoring generated files

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant