Skip to content

build: Bootstrap agent-ready infrastructure#643

Open
dahlem wants to merge 1 commit intomainfrom
agentready-bootstrap
Open

build: Bootstrap agent-ready infrastructure#643
dahlem wants to merge 1 commit intomainfrom
agentready-bootstrap

Conversation

@dahlem
Copy link

@dahlem dahlem commented Feb 12, 2026

Summary

  • Bootstrap agent-ready infrastructure via agentready bootstrap
  • Add assessment report from agentready assess
  • Add CI workflows, issue/PR templates, pre-commit config, and other repo hygiene files

Files added/modified

  • .agentready/ — assessment reports and configuration
  • .github/workflows/ — CI workflows (agentready assessment, security, tests)
  • .github/ISSUE_TEMPLATE/ — issue templates
  • .github/PULL_REQUEST_TEMPLATE.md — PR template
  • .github/CODEOWNERS — code ownership
  • .github/dependabot.yml — dependency update config
  • .pre-commit-config.yaml — pre-commit hooks
  • CODE_OF_CONDUCT.md — code of conduct (if added)

Test plan

  • Verify CI workflows pass on the PR
  • Review agentready assessment report
  • Confirm no unintended file changes

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Documentation

    • Added Code of Conduct establishing community standards and expectations.
    • Added issue templates for bug reports and feature requests to streamline community contributions.
    • Added pull request template for consistent submission guidelines.
  • Chores

    • Configured repository assessment and quality reporting infrastructure.
    • Established automated security scanning and testing pipelines.
    • Added pre-commit hooks to enforce code quality standards.
    • Updated dependency management configuration for improved automation.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@openshift-ci
Copy link

openshift-ci bot commented Feb 12, 2026

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by:

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

Copy link
Contributor

@sourcery-ai sourcery-ai bot left a comment

Choose a reason for hiding this comment

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

Sorry @dahlem, your pull request is larger than the review limit of 150000 diff characters

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Feb 12, 2026

📝 Walkthrough

Walkthrough

This pull request introduces repository infrastructure, governance, and assessment configuration for the trustyai-service-operator project. Changes include AgentReady assessment artifacts, GitHub governance files (CODEOWNERS, issue templates, pull request template), CI/CD workflows for security scanning and testing, pre-commit hooks configuration, dependabot updates, and a project code of conduct.

Changes

Cohort / File(s) Summary
AgentReady Assessment Artifacts
.agentready/assessment-20260212-110002.json, .agentready/assessment-latest.json, .agentready/report-20260212-110002.md, .agentready/report-latest.md, .agentready/report-latest.html
Adds comprehensive repository quality assessment reports including scoring, findings, remediation guidance across multiple attributes (documentation, testing, CI/CD, security, code quality), and latest report pointers.
GitHub Governance & Templates
.github/CODEOWNERS, .github/ISSUE_TEMPLATE/bug_report.md, .github/ISSUE_TEMPLATE/feature_request.md, .github/PULL_REQUEST_TEMPLATE.md
Establishes code ownership rules, standardized issue templates for bug reports and feature requests, and pull request template to guide contributor submissions.
GitHub Actions Workflows
.github/workflows/agentready-assessment.yml, .github/workflows/security.yml, .github/workflows/tests.yml
Introduces CI/CD pipelines for AgentReady assessments, security scanning (CodeQL and gosec), and automated testing across Go versions 1.21–1.22 with coverage reporting.
Dependency & Git Configuration
.github/dependabot.yml, .pre-commit-config.yaml
Configures automated dependency updates with PR limits and labels, and pre-commit hooks for code formatting, security checks, linting, and conventional commits.
Project Governance
CODE_OF_CONDUCT.md
Adds community code of conduct establishing standards for inclusive and respectful behavior.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Poem

🐰 A warren of workflows now secured and bright,
With templates and hooks to guide us right,
From pre-commit checks to scans for security's might,
Our tests and assessments shine in the light,
A code of conduct—our shared delight! 🌟

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'build: Bootstrap agent-ready infrastructure' accurately describes the primary change—bootstrapping AgentReady infrastructure including assessment reports, CI workflows, and repository hygiene files.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch agentready-bootstrap

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

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

@github-actions
Copy link

🤖 AgentReady Assessment Report

Repository: trustyai-service-operator
Path: /home/runner/work/trustyai-service-operator/trustyai-service-operator
Branch: HEAD | Commit: 2374d2ed
Assessed: February 12, 2026 at 4:10 PM
AgentReady Version: 2.27.0
Run by: runner@runnervmwffz4


📊 Summary

Metric Value
Overall Score 57.4/100 🥉 Bronze (Tier Definitions)
Attributes Assessed 18/25
Attributes Not Assessed 7
Assessment Duration 0.1s

Languages Detected

  • Go: 134 files
  • YAML: 99 files
  • Markdown: 10 files

Repository Stats

  • Total Files: 270
  • Total Lines: 63,043

🎯 Priority Improvements

Focus on these high-impact fixes first:

  1. CLAUDE.md Configuration Files (Tier 1) - +10.0 points potential
    • Create CLAUDE.md or AGENTS.md with project-specific configuration for AI coding assistants
  2. Standard Project Layouts (Tier 1) - +10.0 points potential
    • Organize code into standard directories (src/, tests/, docs/)
  3. Conventional Commit Messages (Tier 2) - +3.0 points potential
    • Configure conventional commits with commitlint
  4. File Size Limits (Tier 2) - +3.0 points potential
    • Refactor large files into smaller, focused modules
  5. Concise Documentation (Tier 2) - +3.0 points potential
    • Make documentation more concise and structured

📋 Detailed Findings

Findings sorted by priority (Tier 1 failures first, then Tier 2, etc.)

T1 CLAUDE.md Configuration Files ❌ 0/100

📝 Remediation Steps

Measured: missing (Threshold: present)

Evidence:

  • CLAUDE.md not found in repository root
  • AGENTS.md not found (alternative)

Create CLAUDE.md or AGENTS.md with project-specific configuration for AI coding assistants

  1. Choose one of three approaches:
  2. Option 1: Create standalone CLAUDE.md (>50 bytes) with project context
  3. Option 2: Create AGENTS.md and symlink CLAUDE.md to it (cross-tool compatibility)
  4. Option 3: Create AGENTS.md and reference it with @AGENTS.md in minimal CLAUDE.md
  5. Add project overview and purpose
  6. Document key architectural patterns
  7. Specify coding standards and conventions
  8. Include build/test/deployment commands
  9. Add any project-specific context that helps AI assistants

Commands:

# Option 1: Standalone CLAUDE.md
touch CLAUDE.md
# Add content describing your project

# Option 2: Symlink CLAUDE.md to AGENTS.md
touch AGENTS.md
# Add content to AGENTS.md
ln -s AGENTS.md CLAUDE.md

# Option 3: @ reference in CLAUDE.md
echo '@AGENTS.md' > CLAUDE.md
touch AGENTS.md
# Add content to AGENTS.md

Examples:

# Standalone CLAUDE.md (Option 1)

## Overview
Brief description of what this project does.

## Architecture
Key patterns and structure.

## Development
```bash
# Install dependencies
npm install

# Run tests
npm test

# Build
npm run build

Coding Standards

  • Use TypeScript strict mode
  • Follow ESLint configuration
  • Write tests for new features

CLAUDE.md with @ reference (Option 3)

@AGENTS.md

AGENTS.md (shared by multiple tools)

Project Overview

This project implements a REST API for user management.

Architecture

  • Layered architecture: controllers, services, repositories
  • PostgreSQL database with SQLAlchemy ORM
  • FastAPI web framework

Development Workflow

# Setup
python -m venv .venv
source .venv/bin/activate
pip install -e .

# Run tests
pytest

# Start server
uvicorn app.main:app --reload

Code Conventions

  • Use type hints for all functions
  • Follow PEP 8 style guide
  • Write docstrings for public APIs
  • Maintain >80% test coverage

</details>

![T1](https://img.shields.io/badge/T1-Standard_Project_Layouts_50--100-red) **Standard Project Layouts** ❌ 50/100
<details>
<summary>📝 Remediation Steps</summary>

**Measured**: 1/2 directories (Threshold: 2/2 directories)

**Evidence**:
- Found 1/2 standard directories
- src/: ✗
- tests/: ✓

Organize code into standard directories (src/, tests/, docs/)

1. Create src/ directory for source code
2. Create tests/ directory for test files
3. Create docs/ directory for documentation
4. Move source code into src/
5. Move tests into tests/

**Commands**:
```bash
mkdir -p src tests docs
# Move source files to src/
# Move test files to tests/

T1 Dependency Security & Vulnerability Scanning ✅ 35/100

T1 README Structure ✅ 100/100

T1 Dependency Pinning for Reproducibility ✅ 100/100

T1 Type Annotations

T2 Conventional Commit Messages ❌ 0/100

📝 Remediation Steps

Measured: not configured (Threshold: configured)

Evidence:

  • No commitlint or husky configuration

Configure conventional commits with commitlint

  1. Install commitlint
  2. Configure husky for commit-msg hook

Commands:

npm install --save-dev @commitlint/cli @commitlint/config-conventional husky

T2 File Size Limits ❌ 40/100

📝 Remediation Steps

Measured: 4 huge, 12 large out of 134 (Threshold: <5% files >500 lines, 0 files >1000 lines)

Evidence:

  • Found 4 files >1000 lines (3.0% of 134 files)
  • Largest: controllers/evalhub/unit_test.go (1273 lines)

Refactor large files into smaller, focused modules

  1. Identify files >1000 lines
  2. Split into logical submodules
  3. Extract classes/functions into separate files
  4. Maintain single responsibility principle

Examples:

# Split large file:
# models.py (1500 lines) → models/user.py, models/product.py, models/order.py

T2 Concise Documentation ❌ 64/100

📝 Remediation Steps

Measured: 50 lines, 7 headings, 6 bullets (Threshold: <500 lines, structured format)

Evidence:

  • README length: 50 lines (excellent)
  • Heading density: 14.0 per 100 lines (target: 3-5)
  • Only 6 bullet points (prefer bullets over prose)

Make documentation more concise and structured

  1. Break long README into multiple documents (docs/ directory)
  2. Add clear Markdown headings (##, ###) for structure
  3. Convert prose paragraphs to bullet points where possible
  4. Add table of contents for documents >100 lines
  5. Use code blocks instead of describing commands in prose
  6. Move detailed content to wiki or docs/, keep README focused

Commands:

# Check README length
wc -l README.md

# Count headings
grep -c '^#' README.md

Examples:

# Good: Concise with structure

## Quick Start
```bash
pip install -e .
agentready assess .

Features

  • Fast repository scanning
  • HTML and Markdown reports
  • 25 agent-ready attributes

Documentation

See docs/ for detailed guides.

Bad: Verbose prose

This project is a tool that helps you assess your repository
against best practices for AI-assisted development. It works by
scanning your codebase and checking for various attributes that
make repositories more effective when working with AI coding
assistants like Claude Code...

[Many more paragraphs of prose...]


</details>

![T2](https://img.shields.io/badge/T2-.gitignore_Completeness_78--100-green) **.gitignore Completeness** ✅ 78/100

![T2](https://img.shields.io/badge/T2-Separation_of_Concerns_94--100-green) **Separation of Concerns** ✅ 94/100

![T2](https://img.shields.io/badge/T2-Pre-commit_Hooks_%26_CI%2FCD_Linting_100--100-green) **Pre-commit Hooks & CI/CD Linting** ✅ 100/100

![T2](https://img.shields.io/badge/T2-One-Command_Build%2FSetup_100--100-green) **One-Command Build/Setup** ✅ 100/100

![T2](https://img.shields.io/badge/T2-Test_Coverage_Requirements_N--A-lightgray) **Test Coverage Requirements** ⊘ 

![T2](https://img.shields.io/badge/T2-Inline_Documentation_N--A-lightgray) **Inline Documentation** ⊘ 

![T3](https://img.shields.io/badge/T3-Architecture_Decision_Records_%28ADRs%29_0--100-red) **Architecture Decision Records (ADRs)** ❌ 0/100
<details>
<summary>📝 Remediation Steps</summary>

**Measured**: no ADR directory (Threshold: ADR directory with decisions)

**Evidence**:
- No ADR directory found (checked docs/adr/, .adr/, adr/, docs/decisions/)

Create Architecture Decision Records (ADRs) directory and document key decisions

1. Create docs/adr/ directory in repository root
2. Use Michael Nygard ADR template or MADR format
3. Document each significant architectural decision
4. Number ADRs sequentially (0001-*.md, 0002-*.md)
5. Include Status, Context, Decision, and Consequences sections
6. Update ADR status when decisions are revised (Superseded, Deprecated)

**Commands**:
```bash
# Create ADR directory
mkdir -p docs/adr

# Create first ADR using template
cat > docs/adr/0001-use-architecture-decision-records.md << 'EOF'
# 1. Use Architecture Decision Records

Date: 2025-11-22

## Status
Accepted

## Context
We need to record architectural decisions made in this project.

## Decision
We will use Architecture Decision Records (ADRs) as described by Michael Nygard.

## Consequences
- Decisions are documented with context
- Future contributors understand rationale
- ADRs are lightweight and version-controlled
EOF

Examples:

# Example ADR Structure

```markdown
# 2. Use PostgreSQL for Database

Date: 2025-11-22

## Status
Accepted

## Context
We need a relational database for complex queries and ACID transactions.
Team has PostgreSQL experience. Need full-text search capabilities.

## Decision
Use PostgreSQL 15+ as primary database.

## Consequences
- Positive: Robust ACID, full-text search, team familiarity
- Negative: Higher resource usage than SQLite
- Neutral: Need to manage migrations, backups

</details>

![T3](https://img.shields.io/badge/T3-OpenAPI%2FSwagger_Specifications_0--100-red) **OpenAPI/Swagger Specifications** ❌ 0/100
<details>
<summary>📝 Remediation Steps</summary>

**Measured**: no OpenAPI spec (Threshold: OpenAPI 3.x spec present)

**Evidence**:
- No OpenAPI specification found
- Searched recursively for: openapi.yaml, openapi.yml, openapi.json, swagger.yaml, swagger.yml, swagger.json

Create OpenAPI specification for API endpoints

1. Create openapi.yaml in repository root
2. Define OpenAPI version 3.x
3. Document all API endpoints with full schemas
4. Add request/response examples
5. Define security schemes (API keys, OAuth, etc.)
6. Validate spec with Swagger Editor or Spectral
7. Generate API documentation with Swagger UI or ReDoc

**Commands**:
```bash
# Install OpenAPI validator
npm install -g @stoplight/spectral-cli

# Validate spec
spectral lint openapi.yaml

# Generate client SDK
npx @openapitools/openapi-generator-cli generate \
  -i openapi.yaml \
  -g python \
  -o client/

Examples:

# openapi.yaml - Minimal example
openapi: 3.1.0
info:
  title: My API
  version: 1.0.0
  description: API for managing users

servers:
  - url: https://api.example.com/v1

paths:
  /users/{userId}:
    get:
      summary: Get user by ID
      parameters:
        - name: userId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: User found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/User'
        '404':
          description: User not found

components:
  schemas:
    User:
      type: object
      required:
        - id
        - email
      properties:
        id:
          type: string
          example: "user_123"
        email:
          type: string
          format: email
          example: "user@example.com"
        name:
          type: string
          example: "John Doe"

T3 CI/CD Pipeline Visibility ✅ 80/100

T3 Issue & Pull Request Templates ✅ 100/100

T3 Cyclomatic Complexity Thresholds

T3 Semantic Naming

T3 Structured Logging

T4 Code Smell Elimination ❌ 0/100

📝 Remediation Steps

Measured: none (Threshold: ≥60% of applicable linters configured)

Evidence:

  • No linters configured

Configure 3 missing linter(s)

  1. Configure golangci-lint for Go
  2. Add actionlint for GitHub Actions workflow validation
  3. Configure markdownlint for documentation quality

Commands:

go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest
npm install --save-dev markdownlint-cli && touch .markdownlint.json

Examples:

# .pylintrc example
[MASTER]
max-line-length=100

[MESSAGES CONTROL]
disable=C0111
# .eslintrc.json example
{
  "extends": "eslint:recommended",
  "rules": {
    "no-console": "warn"
  }
}

T4 Container/Virtualization Setup ✅ 70/100

T4 Branch Protection Rules


📝 Assessment Metadata

  • AgentReady Version: v2.27.0
  • Research Version: v1.0.1
  • Repository Snapshot: 2374d2e
  • Assessment Duration: 0.1s
  • Assessed By: runner@runnervmwffz4
  • Assessment Date: February 12, 2026 at 4:10 PM

🤖 Generated with Claude Code

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 11

🤖 Fix all issues with AI agents
In @.agentready/assessment-20260212-110002.json:
- Around line 3-13: The assessment JSON contains developer-local sensitive
fields (metadata.executed_by, metadata.command, metadata.working_directory,
repository.path) that leak machine-specific info; update the agentready
assessment generation or configuration to redact or omit these fields (configure
agentready to strip executed_by/command/working_directory and repository.path or
map them to generic placeholders), or add the generated .agentready/*.json
assessment files to .gitignore so they are not committed; ensure the change
targets the agentready output/config rather than editing each generated file
manually so future runs are safe.

In @.agentready/report-20260212-110002.md:
- Around line 3-8: The committed AgentReady report file
report-20260212-110002.md includes sensitive local info (the "Path" value
`/Users/ddahlem/...` and the "Run by" value `ddahlem@ddahlem-mac`); update the
report-generation code to redact or omit environment-specific metadata fields
("Path", "Run by", hostname, and full user paths) before writing reports, and
instead emit non-identifying placeholders or a report-latest pointer;
additionally, add a rule to ignore timestamped reports (e.g., pattern
report-*.md) in .gitignore or ensure only report-latest.* is committed so local
filesystem paths and machine identifiers are not committed.

In @.github/CODEOWNERS:
- Around line 12-13: Replace the placeholder team/user handle "@owner" in the
CODEOWNERS entry (the line containing "*    `@owner`") with the actual GitHub
username or team responsible for the repo (for example "@dahlem" or
"@trustyai-explainability/maintainers"), ensuring the wildcard rule now
references a valid user/team so GitHub can resolve code ownership correctly.

In @.github/ISSUE_TEMPLATE/bug_report.md:
- Around line 30-34: The "Environment" section of the bug_report.md template
incorrectly asks for "Python Version" for a Go project; update the Environment
section header lines to replace the "Python Version: [e.g. 3.11]" bullet with a
Go-specific field such as "Go Version: [e.g. 1.20]" (or "Golang Version") so the
template matches the project's language and tooling—edit the Environment block
in .github/ISSUE_TEMPLATE/bug_report.md accordingly.

In @.github/PULL_REQUEST_TEMPLATE.md:
- Around line 34-37: The checklist item "Unit tests pass (`pytest`)" incorrectly
references Python; update the PR template to call the Go test runner by
replacing `pytest` with `go test` (or the project's canonical test command) and
adjust any related checklist text to "Unit tests pass (`go test`)" so it
accurately reflects this Go project's test command.

In @.github/workflows/agentready-assessment.yml:
- Around line 42-63: Search for an existing assessment comment before creating a
new one: use github.rest.issues.listComments to find a comment matching a unique
marker (e.g., a header string you add in report content or the bot's username)
for context.issue.number, and if found call github.rest.issues.update instead of
github.rest.issues.createComment; otherwise fall back to createComment. Also
make report-reading robust: after reading reportPath (the variable reportPath),
detect if its contents look like a pointer (e.g., a filename) and if so read
that target file to obtain the actual report body before posting; keep using
fs.existsSync and fs.readFileSync but add this pointer-resolution step so the
posted body is the real report text.

In @.github/workflows/security.yml:
- Around line 47-50: The workflow step "Run Gosec Security Scanner" is using
securego/gosec@master and the args include '-no-fail'; change the action
reference to a fixed tagged release (e.g., securego/gosec@v2.23.0) instead of
`@master` to avoid supply-chain risk, and remove or document the '-no-fail' flag
in the args (currently '-no-fail -fmt sarif -out results.sarif ./...') so that
findings can fail the workflow once the baseline is addressed.

In @.github/workflows/tests.yml:
- Around line 45-49: The "Upload coverage to Codecov" step has a YAML syntax
error because the if: condition was placed inline with with:, and it also
references ./coverage.xml while the test step produces coverage.txt; fix by
placing the if: condition on its own line at the same indentation level as uses:
(above the with: block) so YAML parses correctly, and update the with.files
value from ./coverage.xml to ./coverage.txt (keep fail_ci_if_error: false
intact) in the "Upload coverage to Codecov" step.
- Around line 37-40: Update the GitHub Actions step that uses
golangci/golangci-lint-action: change the uses value from
golangci/golangci-lint-action@v3 to golangci/golangci-lint-action@v9 and replace
the with: version: latest entry by pinning the lint binary to a specific release
(for example set version: v1.59.0 or another exact golangci-lint tag you intend
to standardize on) so CI runs are reproducible; edit the step referenced by the
uses and version keys in the workflow.
- Around line 12-14: Update the GitHub Actions test matrix under strategy.matrix
(the go-version entry) to remove EOL Go 1.21 and align with go.mod by using 1.23
as the minimum; replace the existing ['1.21','1.22'] list with a set of
currently supported releases (e.g., ['1.23','1.24','1.25']) so the workflow
tests at least go 1.23 and newer supported versions.

In `@CODE_OF_CONDUCT.md`:
- Around line 29-31: Update the "Enforcement" section to include a clear
reporting channel by appending a contact method (e.g., a dedicated email like
conduct@example.com or a URL to a reporting form) and a short instruction for
reporters; modify the Enforcement paragraph so it reads that incidents may be
reported to the project team at [email or link] and include any preferred
confidentiality/response expectations.
🧹 Nitpick comments (4)
.github/dependabot.yml (1)

7-18: Consider adding open-pull-requests-limit to the github-actions ecosystem block for consistency.

The gomod block specifies open-pull-requests-limit: 10, but the new github-actions block omits it (defaults to 5). If the limit was intentionally raised for gomod, you likely want the same for actions to keep the configuration consistent.

Suggested change
   - package-ecosystem: "github-actions"
     directory: "/"
     schedule:
       interval: "weekly"
+    open-pull-requests-limit: 10
     labels:
       - "dependencies"
       - "github-actions"
.pre-commit-config.yaml (2)

14-30: Duplicate pre-commit-golang repo entry — consolidate into one.

The same repository (dnephin/pre-commit-golang at v0.5.1) is declared twice (lines 14–18 and 26–30). All four hooks can be listed under a single entry.

♻️ Proposed consolidation
   - repo: https://github.com/dnephin/pre-commit-golang
     rev: v0.5.1
     hooks:
       - id: go-fmt
       - id: go-imports
-
-  - repo: https://github.com/golangci/golangci-lint
-    rev: v1.55.2
-    hooks:
-      - id: golangci-lint
-        args: ['--fix']
-
-  - repo: https://github.com/dnephin/pre-commit-golang
-    rev: v0.5.1
-    hooks:
       - id: go-vet
       - id: go-unit-tests
+
+  - repo: https://github.com/golangci/golangci-lint
+    rev: v1.55.2
+    hooks:
+      - id: golangci-lint
+        args: ['--fix']

20-24: Update golangci-lint to a recent version.

v1.55.2 is significantly outdated; v2.9.0 is the current release as of February 2026. Newer versions include additional linter rules and bug fixes. Also confirm that using args: ['--fix'] in the pre-commit hook is intentional, as it will silently rewrite files during the run.

.github/workflows/agentready-assessment.yml (1)

27-28: Pin the agentready package version for reproducible CI.

pip install agentready installs whatever the latest version is at runtime. A breaking change in a future release could silently break this workflow. Pin to the version used to generate the bootstrap artifacts (2.27.0 per the assessment report).

♻️ Proposed fix
       - name: Install AgentReady
         run: |
-          pip install agentready
+          pip install agentready==2.27.0

Comment on lines +3 to +13
"metadata": {
"agentready_version": "2.27.0",
"research_version": "1.0.1",
"assessment_timestamp": "2026-02-12T11:00:02.669636",
"assessment_timestamp_human": "February 12, 2026 at 11:00 AM",
"executed_by": "ddahlem@ddahlem-mac",
"command": "/Users/ddahlem/.local/bin/agentready assess .",
"working_directory": "/Users/ddahlem/Documents/repos/trusty/trustyai-explainability/trustyai-service-operator"
},
"repository": {
"path": "/Users/ddahlem/Documents/repos/trusty/trustyai-explainability/trustyai-service-operator",
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Same local environment metadata leak as in the Markdown report.

The metadata.executed_by, metadata.command, metadata.working_directory, and repository.path fields all contain developer-local paths and machine identifiers. Consider configuring the agentready tool to redact these before committing, or adding the timestamped assessment files to .gitignore.

🤖 Prompt for AI Agents
In @.agentready/assessment-20260212-110002.json around lines 3 - 13, The
assessment JSON contains developer-local sensitive fields (metadata.executed_by,
metadata.command, metadata.working_directory, repository.path) that leak
machine-specific info; update the agentready assessment generation or
configuration to redact or omit these fields (configure agentready to strip
executed_by/command/working_directory and repository.path or map them to generic
placeholders), or add the generated .agentready/*.json assessment files to
.gitignore so they are not committed; ensure the change targets the agentready
output/config rather than editing each generated file manually so future runs
are safe.

Comment on lines +3 to +8
**Repository**: trustyai-service-operator
**Path**: `/Users/ddahlem/Documents/repos/trusty/trustyai-explainability/trustyai-service-operator`
**Branch**: `main` | **Commit**: `d5109111`
**Assessed**: February 12, 2026 at 11:00 AM
**AgentReady Version**: 2.27.0
**Run by**: ddahlem@ddahlem-mac
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Local filesystem path and hostname leaked in committed report.

Lines 4 and 8 expose a developer's local filesystem path (/Users/ddahlem/Documents/...) and machine identifier (ddahlem@ddahlem-mac). These are unnecessary details in a public repository. Consider stripping or redacting environment-specific metadata from committed assessment reports, or adding the timestamped reports to .gitignore and only committing the report-latest.* pointers.

🧰 Tools
🪛 LanguageTool

[style] ~6-~6: Some style guides suggest that commas should set off the year in a month-day-year date.
Context: ...: d5109111 Assessed: February 12, 2026 at 11:00 AM AgentReady Version: 2.2...

(MISSING_COMMA_AFTER_YEAR)

🤖 Prompt for AI Agents
In @.agentready/report-20260212-110002.md around lines 3 - 8, The committed
AgentReady report file report-20260212-110002.md includes sensitive local info
(the "Path" value `/Users/ddahlem/...` and the "Run by" value
`ddahlem@ddahlem-mac`); update the report-generation code to redact or omit
environment-specific metadata fields ("Path", "Run by", hostname, and full user
paths) before writing reports, and instead emit non-identifying placeholders or
a report-latest pointer; additionally, add a rule to ignore timestamped reports
(e.g., pattern report-*.md) in .gitignore or ensure only report-latest.* is
committed so local filesystem paths and machine identifiers are not committed.

Comment on lines +12 to +13
# Default: assign to repository owner
* @owner No newline at end of file
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

@owner is a placeholder — replace with actual GitHub username or team.

GitHub will fail to resolve @owner as a valid user/team, rendering the CODEOWNERS file non-functional. Replace it with the actual repository owner (e.g., @dahlem or @trustyai-explainability/maintainers).

🤖 Prompt for AI Agents
In @.github/CODEOWNERS around lines 12 - 13, Replace the placeholder team/user
handle "@owner" in the CODEOWNERS entry (the line containing "*    `@owner`") with
the actual GitHub username or team responsible for the repo (for example
"@dahlem" or "@trustyai-explainability/maintainers"), ensuring the wildcard rule
now references a valid user/team so GitHub can resolve code ownership correctly.

Comment on lines +30 to +34
## Environment

- OS: [e.g. macOS 14.0, Ubuntu 22.04]
- Version: [e.g. 1.0.0]
- Python Version: [e.g. 3.11]
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Environment section references "Python Version" — this is a Go project.

Proposed fix
 ## Environment
 
 - OS: [e.g. macOS 14.0, Ubuntu 22.04]
 - Version: [e.g. 1.0.0]
-- Python Version: [e.g. 3.11]
+- Go Version: [e.g. 1.22]
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
## Environment
- OS: [e.g. macOS 14.0, Ubuntu 22.04]
- Version: [e.g. 1.0.0]
- Python Version: [e.g. 3.11]
## Environment
- OS: [e.g. macOS 14.0, Ubuntu 22.04]
- Version: [e.g. 1.0.0]
- Go Version: [e.g. 1.22]
🤖 Prompt for AI Agents
In @.github/ISSUE_TEMPLATE/bug_report.md around lines 30 - 34, The "Environment"
section of the bug_report.md template incorrectly asks for "Python Version" for
a Go project; update the Environment section header lines to replace the "Python
Version: [e.g. 3.11]" bullet with a Go-specific field such as "Go Version: [e.g.
1.20]" (or "Golang Version") so the template matches the project's language and
tooling—edit the Environment block in .github/ISSUE_TEMPLATE/bug_report.md
accordingly.

Comment on lines +34 to +37
- [ ] Unit tests pass (`pytest`)
- [ ] Integration tests pass
- [ ] Manual testing performed
- [ ] No new warnings or errors
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Testing checklist references pytest, but this is a Go project.

The test command should reference go test (or the project's actual test runner) instead of pytest.

Proposed fix
-- [ ] Unit tests pass (`pytest`)
+- [ ] Unit tests pass (`go test ./...`)
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
- [ ] Unit tests pass (`pytest`)
- [ ] Integration tests pass
- [ ] Manual testing performed
- [ ] No new warnings or errors
- [ ] Unit tests pass (`go test ./...`)
- [ ] Integration tests pass
- [ ] Manual testing performed
- [ ] No new warnings or errors
🤖 Prompt for AI Agents
In @.github/PULL_REQUEST_TEMPLATE.md around lines 34 - 37, The checklist item
"Unit tests pass (`pytest`)" incorrectly references Python; update the PR
template to call the Go test runner by replacing `pytest` with `go test` (or the
project's canonical test command) and adjust any related checklist text to "Unit
tests pass (`go test`)" so it accurately reflects this Go project's test
command.

Comment on lines +47 to +50
- name: Run Gosec Security Scanner
uses: securego/gosec@master
with:
args: '-no-fail -fmt sarif -out results.sarif ./...'
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🌐 Web query:

securego/gosec GitHub releases latest version

💡 Result:

The latest GitHub release for securego/gosec is v2.23.0, published February 11, 2026. [1]


Pin gosec to a tagged release instead of @master.

Using @master for a security scanner is a supply-chain risk — any push to that branch would execute in your CI with security-events: write permissions. Pin to a specific version tag like v2.23.0 (the current latest release).

Additionally, -no-fail means security findings will never fail the workflow. This may be intentional for bootstrapping, but consider removing it once the baseline is clean.

Proposed fix
       - name: Run Gosec Security Scanner
-        uses: securego/gosec@master
+        uses: securego/gosec@v2.23.0
         with:
           args: '-no-fail -fmt sarif -out results.sarif ./...'
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
- name: Run Gosec Security Scanner
uses: securego/gosec@master
with:
args: '-no-fail -fmt sarif -out results.sarif ./...'
- name: Run Gosec Security Scanner
uses: securego/gosec@v2.23.0
with:
args: '-no-fail -fmt sarif -out results.sarif ./...'
🤖 Prompt for AI Agents
In @.github/workflows/security.yml around lines 47 - 50, The workflow step "Run
Gosec Security Scanner" is using securego/gosec@master and the args include
'-no-fail'; change the action reference to a fixed tagged release (e.g.,
securego/gosec@v2.23.0) instead of `@master` to avoid supply-chain risk, and
remove or document the '-no-fail' flag in the args (currently '-no-fail -fmt
sarif -out results.sarif ./...') so that findings can fail the workflow once the
baseline is addressed.

Comment on lines +12 to +14
strategy:
matrix:
go-version: ['1.21', '1.22']
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Locate and examine go.mod file
fd -g 'go.mod' -x head -5 {}

Repository: trustyai-explainability/trustyai-service-operator

Length of output: 182


🌐 Web query:

Go 1.21 end of life release cycle schedule

💡 Result:

Go 1.21 support / end-of-life (EOL)

Go’s policy: each major Go release is supported until there are two newer major releases. Minor (patch) releases are issued for critical fixes (including security) while a release is supported. [1]

Key dates for Go 1.21

  • Go 1.21.0 released: 2023-08-08 [2]
  • Go 1.22.0 released: 2024-02-06 [3]
  • Go 1.23.0 released: 2024-08-13 [4] → this is when Go 1.21 reached EOL (because 1.22 and 1.23 are the two newer major releases) [1][4]
  • Last Go 1.21 patch release: go1.21.13 (2024-08-06) [5]

So, Go 1.21 has been end-of-life since 2024-08-13, and you should not expect further security/bugfix releases for the 1.21.x line after that point. [1][4]

Sources

  1. Go “Release Policy” (go.dev Release History page). (go.dev)
  2. go1.21.0 release entry (released 2023-08-08). (go.dev)
  3. go1.22.0 release entry (released 2024-02-06). (go.dev)
  4. go1.23.0 release entry (released 2024-08-13). (go.dev)
  5. go1.21.13 release entry (released 2024-08-06). (go.dev)

Citations:


Update the test matrix to match the project's minimum Go version and remove EOL versions.

The matrix currently tests Go 1.21 and 1.22, but go.mod specifies go 1.23.0 as the minimum version. Additionally, Go 1.21 reached end-of-life on 2024-08-13 and no longer receives security patches. Update the matrix to test 1.23 as the minimum (matching go.mod) and include newer supported versions.

🤖 Prompt for AI Agents
In @.github/workflows/tests.yml around lines 12 - 14, Update the GitHub Actions
test matrix under strategy.matrix (the go-version entry) to remove EOL Go 1.21
and align with go.mod by using 1.23 as the minimum; replace the existing
['1.21','1.22'] list with a set of currently supported releases (e.g.,
['1.23','1.24','1.25']) so the workflow tests at least go 1.23 and newer
supported versions.

Comment on lines +37 to +40
- name: Run golangci-lint
uses: golangci/golangci-lint-action@v3
with:
version: latest
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🌐 Web query:

latest version of golangci-lint-action GitHub Action

💡 Result:

The latest golangci/golangci-lint-action release is v9.2.0 (released Dec 2, 2025). [1]

Typical usage (pin to major): uses: golangci/golangci-lint-action@v9 (or pin exactly: @v9.2.0). [2]

Sources: [1] [2]


Upgrade golangci-lint-action to v9 and pin the lint version.

golangci/golangci-lint-action@v3 is outdated (current latest is v9). Also, using version: latest for the lint binary causes non-reproducible CI runs — pin to a specific version instead.

🤖 Prompt for AI Agents
In @.github/workflows/tests.yml around lines 37 - 40, Update the GitHub Actions
step that uses golangci/golangci-lint-action: change the uses value from
golangci/golangci-lint-action@v3 to golangci/golangci-lint-action@v9 and replace
the with: version: latest entry by pinning the lint binary to a specific release
(for example set version: v1.59.0 or another exact golangci-lint tag you intend
to standardize on) so CI runs are reproducible; edit the step referenced by the
uses and version keys in the workflow.

Comment on lines +45 to +49
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v4
if: matrix.go-version == '1.22' with:
files: ./coverage.xml
fail_ci_if_error: false
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

Critical YAML syntax error on Line 47 — workflow will fail to parse.

The if: condition and with: are on the same line, producing invalid YAML (confirmed by actionlint). Additionally, the coverage upload references coverage.xml but the test step on Line 43 generates coverage.txt.

Proposed fix
       - name: Upload coverage to Codecov
         uses: codecov/codecov-action@v4
-if: matrix.go-version == '1.22'        with:
-          files: ./coverage.xml
+        if: matrix.go-version == '1.22'
+        with:
+          files: ./coverage.txt
           fail_ci_if_error: false
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v4
if: matrix.go-version == '1.22' with:
files: ./coverage.xml
fail_ci_if_error: false
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v4
if: matrix.go-version == '1.22'
with:
files: ./coverage.txt
fail_ci_if_error: false
🧰 Tools
🪛 actionlint (1.7.10)

[error] 47-47: could not parse as YAML: mapping values are not allowed in this context

(syntax-check)

🤖 Prompt for AI Agents
In @.github/workflows/tests.yml around lines 45 - 49, The "Upload coverage to
Codecov" step has a YAML syntax error because the if: condition was placed
inline with with:, and it also references ./coverage.xml while the test step
produces coverage.txt; fix by placing the if: condition on its own line at the
same indentation level as uses: (above the with: block) so YAML parses
correctly, and update the with.files value from ./coverage.xml to ./coverage.txt
(keep fail_ci_if_error: false intact) in the "Upload coverage to Codecov" step.

Comment on lines +29 to +31
## Enforcement

Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the project team. All complaints will be reviewed and investigated promptly and fairly.
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Enforcement section lacks a contact method for reporting incidents.

"Reported to the project team" doesn't tell reporters how to reach the team. Consider adding a contact email or link (e.g., conduct@example.com or a link to a reporting form).

🤖 Prompt for AI Agents
In `@CODE_OF_CONDUCT.md` around lines 29 - 31, Update the "Enforcement" section to
include a clear reporting channel by appending a contact method (e.g., a
dedicated email like conduct@example.com or a URL to a reporting form) and a
short instruction for reporters; modify the Enforcement paragraph so it reads
that incidents may be reported to the project team at [email or link] and
include any preferred confidentiality/response expectations.

@github-advanced-security
Copy link

This pull request sets up GitHub code scanning for this repository. Once the scans have completed and the checks have passed, the analysis results for this pull request branch will appear on this overview. Once you merge this pull request, the 'Security' tab will show more code scanning analysis results (for example, for the default branch). Depending on your configuration and choice of analysis tool, future pull requests will be annotated with code scanning analysis results. For more information about GitHub code scanning, check out the documentation.

@openshift-ci
Copy link

openshift-ci bot commented Feb 12, 2026

@dahlem: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name Commit Details Required Rerun command
ci/prow/trustyai-service-operator-e2e 0c77af3 link true /test trustyai-service-operator-e2e

Full PR test history. Your PR dashboard.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

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.

1 participant