Skip to content

wip: capture wip/2026-07-28-capture-BytePort-fresh (audit 2026-07-24..08-02) - #329

Open
KooshaPari wants to merge 81 commits into
mainfrom
wip/2026-07-28-capture-BytePort-fresh
Open

wip: capture wip/2026-07-28-capture-BytePort-fresh (audit 2026-07-24..08-02)#329
KooshaPari wants to merge 81 commits into
mainfrom
wip/2026-07-28-capture-BytePort-fresh

Conversation

@KooshaPari

@KooshaPari KooshaPari commented Aug 3, 2026

Copy link
Copy Markdown
Owner

User description

Automated audit capture of local dirty state.

  • Branch: wip/2026-07-28-capture-BytePort-fresh
  • Captured and pushed during the cross-drive audit sessions (2026-07-24 to 2026-08-02).
  • Working tree changes preserved; no destructive operations.

CodeAnt-AI Description

Add owner-scoped compute-mesh desired state with deployment handoff tracking

What Changed

  • Authenticated users can submit and list their compute-mesh workload intents through protected endpoints; the owner is taken from authentication rather than the request body.
  • Workload requests validate composition digests, artifact references, supported execution backends, workload names, and placement details before acceptance.
  • Accepted intents are stored with deployment records and retain composition and artifact metadata for later reconciliation.
  • Deployment creation now accepts, validates, stores, and returns optional composition handoff metadata.
  • Provider requests now respect caller deadlines, and provider error responses are limited to 64 KB.
  • Added guidance describing the compute-mesh control plane and execution-substrate boundaries, and removed committed runtime secrets from configuration.

Impact

✅ Owner-scoped workload submissions
✅ Persistent composition-to-artifact traceability
✅ Fewer stalled provider requests
✅ Bounded provider error responses

💡 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.

KooshaPari and others added 30 commits June 30, 2026 01:07
* fix(stubs): remove dead locateNVMS todo!() and update stub inventory

backend/nvms.rs: locateNVMS() was declared but never called in the active
codebase. Replaced todo!() with an explanatory comment documenting why the
function was removed and where NVMS file location logic actually lives (Go
provisioner layer). Addresses scorecard L37 / stub-inventory entry.

stub-inventory.md: mark locateNVMS entry as resolved; correct stale notes
on deploy.go TODO (already gone) and Gemini provider (already implemented).

* feat(ci): replace fr-coverage echo stub with real Rust/Go coverage gates

fr-coverage.yml: was a single echo line. Now runs cargo llvm-cov (>=50%
lines) for the Rust workspace and go test -coverprofile (>=50%) for the Go
backend on every PR and main push. Uploads lcov/coverage.out artifacts with
14-day retention.

RATCHETS.md: new file documenting all coverage and lint ratchets, current
thresholds, how-to-bump instructions, and relationship to CI workflows.
Addresses scorecard L11 (quality gates), L38 (ratchets), L32 (test infra).

* docs: fill CLAUDE.md stub and replace SLO template with BytePort SLOs

CLAUDE.md: was a 471-byte stub with 'TBD: describe the top-level directories'.
Now documents actual project layout (backend Go/Go-NVMS, Rust crates, frontend
Astro+Svelte, ports), build/test commands for all three stacks, key services,
conventions, and CI gate inventory. Addresses scorecard unjustified scope
reduction #5.

docs/operations/slos.md: was the org-wide SLO template copy (copy/paste
boilerplate). Now contains BytePort-specific SLOs for API server availability
(99.5%), p99 latency (<=500ms), deploy pipeline success rate (95%), deploy
p95 latency (<=120s), and CI pass rate (99%), with measurement methodology
grounded in actual code (Gin middleware, SQLite deployments table). Addresses
scorecard L27 (failure observability).

---------

Co-authored-by: KooshaPari <koosha@example.com>
* fix: remove Cargo.lock from .gitignore (reproducible builds for application workspace)

* E5: BytePort → phenoregistry adapter crate
* fix(p3): remediate audit findings (clean)

Top 3 audit findings (surgical fixes):

1. CORS wildcard origin: restrict to allowedOrigins list in server.go
2. Missing return after http.Error: add return in deploy.go error handler
3. derivable_impls: add #[derive] for HookTiming in schema.rs

Pre-existing compilation fixes to make clippy --all-targets -- -D warnings
pass:
- byteport-otel: migrate to opentelemetry v0.28 API (Resource::builder(),
  SdkTracerProvider, MetricResult, etc.)
- byteport-transport: move #[instrument] from impl block to fn level
- byteport-cli: fix borrow-after-move for title in Prompt action

Pre-existing fmt/test fixes:
- Remove broken network_mock.rs referencing non-existent src/network.rs
- Remove unsupported Tauri security headers (Referrer-Policy,
  X-Frame-Options, Strict-Transport-Security)
- cargo fmt applied across all workspace crates

Verification:
- cargo clippy --all-targets -- -D warnings: zero errors
- cargo fmt --check: passes

* chore: remove accidental worktree commit

---------

Co-authored-by: KooshaPari <koosha@example.com>
…#274)

Wires the reusable quality gate from KooshaPari/phenotype-tooling onto
the BytePort workspace. Per the '1 via 2' protocol (gate first RED, then
backfill until it can be flipped to blocking):

- .qgate.toml: threshold 85, marks a11y/dast N/A (Tauri webview + no
  published OpenAPI). mutation/perf stay ON (cargo-mutants + criterion
  nightly already exist in the repo's CI).
- .github/workflows/qgate.yml: installs cargo-llvm-cov, generates
  workspace-wide lcov, invokes the reusable gate
- continue-on-error: true until per-module coverage reaches threshold
- sast-config=auto enables the Sast category (semgrep) from PR #198
  once that lands

The existing .github/workflows/quality-gate.yml was a placeholder
(echoed 'quality gate check') — renamed to _quality-gate.placeholder.yml
to preserve history. BytePort's existing sbom.yml continues to generate
sbom.cdx.json as a workflow artifact; qgate's SBOM category will
detect that artifact at the conventional path once #198 lands.

Co-authored-by: KooshaPari <koosha@example.com>
Bumps [opentelemetry_sdk](https://github.com/open-telemetry/opentelemetry-rust) from 0.28.0 to 0.32.1.
- [Release notes](https://github.com/open-telemetry/opentelemetry-rust/releases)
- [Changelog](https://github.com/open-telemetry/opentelemetry-rust/blob/main/docs/release_0.32.md)
- [Commits](open-telemetry/opentelemetry-rust@opentelemetry_sdk-0.28.0...opentelemetry-semantic-conventions-0.32.1)

---
updated-dependencies:
- dependency-name: opentelemetry_sdk
  dependency-version: 0.32.1
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
)

* fix: remove Cargo.lock from .gitignore (reproducible builds for application workspace)

* docs(E2): verify terminal UI recovery on main, update worklog and grade report
Bumps the npm group in /frontend/web with 19 updates:

| Package | From | To |
| --- | --- | --- |
| [@rollup/rollup-darwin-arm64](https://github.com/rollup/rollup) | `4.60.2` | `4.61.1` |
| [@chromatic-com/storybook](https://github.com/chromaui/addon-visual-tests) | `5.1.2` | `5.2.1` |
| [@storybook/svelte](https://github.com/storybookjs/storybook/tree/HEAD/code/renderers/svelte) | `10.3.5` | `10.4.3` |
| [@storybook/sveltekit](https://github.com/storybookjs/storybook/tree/HEAD/code/frameworks/sveltekit) | `10.3.5` | `10.4.3` |
| [@sveltejs/kit](https://github.com/sveltejs/kit/tree/HEAD/packages/kit) | `2.63.0` | `2.64.0` |
| [@sveltejs/vite-plugin-svelte](https://github.com/sveltejs/vite-plugin-svelte/tree/HEAD/packages/vite-plugin-svelte) | `7.0.0` | `7.1.2` |
| [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) | `25.9.1` | `25.9.2` |
| [bits-ui](https://github.com/huntabyte/bits-ui) | `2.18.0` | `2.18.1` |
| [eslint](https://github.com/eslint/eslint) | `10.2.1` | `10.4.1` |
| [eslint-plugin-svelte](https://github.com/sveltejs/eslint-plugin-svelte/tree/HEAD/packages/eslint-plugin-svelte) | `3.17.1` | `3.19.0` |
| [globals](https://github.com/sindresorhus/globals) | `17.5.0` | `17.6.0` |
| [prettier](https://github.com/prettier/prettier) | `3.8.3` | `3.8.4` |
| [prettier-plugin-svelte](https://github.com/sveltejs/prettier-plugin-svelte) | `3.5.2` | `4.1.0` |
| [storybook](https://github.com/storybookjs/storybook/tree/HEAD/code/core) | `10.3.5` | `10.4.3` |
| [svelte](https://github.com/sveltejs/svelte/tree/HEAD/packages/svelte) | `5.56.1` | `5.56.3` |
| [svelte-preprocess](https://github.com/sveltejs/svelte-preprocess) | `6.0.3` | `6.0.5` |
| [tailwind-merge](https://github.com/dcastil/tailwind-merge) | `3.5.0` | `3.6.0` |
| [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) | `8.60.1` | `8.61.0` |
| [zod](https://github.com/colinhacks/zod) | `4.3.6` | `4.4.3` |

Updates `@rollup/rollup-darwin-arm64` from 4.60.2 to 4.61.1
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](rollup/rollup@v4.60.2...v4.61.1)

Updates `@chromatic-com/storybook` from 5.1.2 to 5.2.1
- [Release notes](https://github.com/chromaui/addon-visual-tests/releases)
- [Changelog](https://github.com/chromaui/addon-visual-tests/blob/v5.2.1/CHANGELOG.md)
- [Commits](chromaui/addon-visual-tests@v5.1.2...v5.2.1)

Updates `@storybook/svelte` from 10.3.5 to 10.4.3
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v10.4.3/code/renderers/svelte)

Updates `@storybook/sveltekit` from 10.3.5 to 10.4.3
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v10.4.3/code/frameworks/sveltekit)

Updates `@sveltejs/kit` from 2.63.0 to 2.64.0
- [Release notes](https://github.com/sveltejs/kit/releases)
- [Changelog](https://github.com/sveltejs/kit/blob/main/packages/kit/CHANGELOG.md)
- [Commits](https://github.com/sveltejs/kit/commits/@sveltejs/kit@2.64.0/packages/kit)

Updates `@sveltejs/vite-plugin-svelte` from 7.0.0 to 7.1.2
- [Release notes](https://github.com/sveltejs/vite-plugin-svelte/releases)
- [Changelog](https://github.com/sveltejs/vite-plugin-svelte/blob/main/packages/vite-plugin-svelte/CHANGELOG.md)
- [Commits](https://github.com/sveltejs/vite-plugin-svelte/commits/@sveltejs/vite-plugin-svelte@7.1.2/packages/vite-plugin-svelte)

Updates `@types/node` from 25.9.1 to 25.9.2
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Updates `bits-ui` from 2.18.0 to 2.18.1
- [Release notes](https://github.com/huntabyte/bits-ui/releases)
- [Commits](https://github.com/huntabyte/bits-ui/compare/bits-ui@2.18.0...bits-ui@2.18.1)

Updates `eslint` from 10.2.1 to 10.4.1
- [Release notes](https://github.com/eslint/eslint/releases)
- [Commits](eslint/eslint@v10.2.1...v10.4.1)

Updates `eslint-plugin-svelte` from 3.17.1 to 3.19.0
- [Release notes](https://github.com/sveltejs/eslint-plugin-svelte/releases)
- [Changelog](https://github.com/sveltejs/eslint-plugin-svelte/blob/main/packages/eslint-plugin-svelte/CHANGELOG.md)
- [Commits](https://github.com/sveltejs/eslint-plugin-svelte/commits/eslint-plugin-svelte@3.19.0/packages/eslint-plugin-svelte)

Updates `globals` from 17.5.0 to 17.6.0
- [Release notes](https://github.com/sindresorhus/globals/releases)
- [Commits](sindresorhus/globals@v17.5.0...v17.6.0)

Updates `prettier` from 3.8.3 to 3.8.4
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md)
- [Commits](prettier/prettier@3.8.3...3.8.4)

Updates `prettier-plugin-svelte` from 3.5.2 to 4.1.0
- [Release notes](https://github.com/sveltejs/prettier-plugin-svelte/releases)
- [Changelog](https://github.com/sveltejs/prettier-plugin-svelte/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sveltejs/prettier-plugin-svelte/compare/v3.5.2...prettier-plugin-svelte@4.1.0)

Updates `storybook` from 10.3.5 to 10.4.3
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v10.4.3/code/core)

Updates `svelte` from 5.56.1 to 5.56.3
- [Release notes](https://github.com/sveltejs/svelte/releases)
- [Changelog](https://github.com/sveltejs/svelte/blob/main/packages/svelte/CHANGELOG.md)
- [Commits](https://github.com/sveltejs/svelte/commits/svelte@5.56.3/packages/svelte)

Updates `svelte-preprocess` from 6.0.3 to 6.0.5
- [Release notes](https://github.com/sveltejs/svelte-preprocess/releases)
- [Changelog](https://github.com/sveltejs/svelte-preprocess/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sveltejs/svelte-preprocess/compare/v6.0.3...svelte-preprocess@6.0.5)

Updates `tailwind-merge` from 3.5.0 to 3.6.0
- [Release notes](https://github.com/dcastil/tailwind-merge/releases)
- [Commits](dcastil/tailwind-merge@v3.5.0...v3.6.0)

Updates `typescript-eslint` from 8.60.1 to 8.61.0
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.61.0/packages/typescript-eslint)

Updates `zod` from 4.3.6 to 4.4.3
- [Release notes](https://github.com/colinhacks/zod/releases)
- [Commits](colinhacks/zod@v4.3.6...v4.4.3)

---
updated-dependencies:
- dependency-name: "@rollup/rollup-darwin-arm64"
  dependency-version: 4.61.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: npm
- dependency-name: "@chromatic-com/storybook"
  dependency-version: 5.2.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: npm
- dependency-name: "@storybook/svelte"
  dependency-version: 10.4.3
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: npm
- dependency-name: "@storybook/sveltekit"
  dependency-version: 10.4.3
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: npm
- dependency-name: "@sveltejs/kit"
  dependency-version: 2.64.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: npm
- dependency-name: "@sveltejs/vite-plugin-svelte"
  dependency-version: 7.1.2
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: npm
- dependency-name: "@types/node"
  dependency-version: 25.9.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: npm
- dependency-name: bits-ui
  dependency-version: 2.18.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: npm
- dependency-name: eslint
  dependency-version: 10.4.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: npm
- dependency-name: eslint-plugin-svelte
  dependency-version: 3.19.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: npm
- dependency-name: globals
  dependency-version: 17.6.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: npm
- dependency-name: prettier
  dependency-version: 3.8.4
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: npm
- dependency-name: prettier-plugin-svelte
  dependency-version: 4.1.0
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: npm
- dependency-name: storybook
  dependency-version: 10.4.3
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: npm
- dependency-name: svelte
  dependency-version: 5.56.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: npm
- dependency-name: svelte-preprocess
  dependency-version: 6.0.5
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: npm
- dependency-name: tailwind-merge
  dependency-version: 3.6.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: npm
- dependency-name: typescript-eslint
  dependency-version: 8.61.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: npm
- dependency-name: zod
  dependency-version: 4.4.3
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: npm
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
#233)

* feat(types): extract duplicated OCI helpers into phenotype-types crate

* fix: use nested if-let instead of let-chains for Rust 2021 compat
Co-authored-by: Phenotype Agent <agent@phenotype.ai>
Co-authored-by: Phenotype Agent <agent@phenotype.ai>
…S8 from 0 to 2) (#202)

Source: SLSA-BUILD-TEMPLATE.md in phenotype/docs/audits/.
S8 P0 lift (priority 36, 8/11 repos at 0).

Co-authored-by: Phenotype Agent <agent@phenotype.ai>
* feat: add Rust CI workflow

* feat(security): T12-A secrets scan (trufflehog + gitleaks) - WP wp-201-03

* docs(L7-001,gitignore): refresh BytePort intent/boundary + harden .gitignore

L7-007 pass (2026-06-20):
- Refresh intent/boundary docs: bound_prompts 57→2, prune stale table rows,
  update last_verified
- Add .pre-commit-hooks.yaml for the pre-commit CI workflow

.gitignore enhancement:
- Add Cargo/LLVM coverage artifacts (*.profraw, *.profdata)
- Add Node/TS build artifacts (dist/, build/)
- Add Tauri-generated output (frontend/web/src-tauri/gen/)
- Add .audit/, .history/ (ephemeral scanner output)
- Add worktrees pattern (*-wtrees/, *-wt-*/)
- Comprehensive editor/OS/env file coverage

Refs:
- plans/2026-06-17-v7-dag-stable.md §L7-001
- findings/71-pillar-2026-06-17.md

* fix(nvms): migrate spin http sdk

* ci(workflows): pin GitHub actions by commit sha

* ci(workflows): restore release-side workflow YAML

* ci(workflows): repair pinned action shas

---------

Co-authored-by: Phenotype Agent <agent@phenotype.ai>
* feat(E8): add W3C TraceContext propagation crate + OTel version uplift

Add byteport-otel::propagation module with VecInjector, current_context_envs(),
propagate_to_cmd(), and propagate_to_tokio_cmd() for W3C TraceContext injection
into spawned child processes. Register TraceContextPropagator globally in
init_telemetry(). Uplift OTel crates from 0.28→0.32 and fix API surface changes
(ExporterBuildError, init_metrics return type, tokio async test).

* feat(E8): add Upload subcommand with Transport::CreateUpload OTel span + propagation

Add Upload subcommand to the CLI that dispatches Transport::CreateUpload
inside a tracing span and calls byteport_otel::propagation::current_context_envs()
to forward W3C TraceContext headers to downstream processes. Includes TDD tests:
dispatch_upload_produces_instruction and propagation_is_no_op_without_provider.

---------

Co-authored-by: KooshaPari <koosha@example.com>
)

* fix: remove ratchet.yml template and fix release.yml sbom workflow reference

- Removes ratchet.yml which was a documentation template with invalid YAML
  causing workflow parse failures
- Removes missing sbom-monthly.yml reference from release.yml
  (reusable workflow does not exist in phenotype-tooling)
- Keeps release draft and Tauri build/publish jobs functional
- tier2-coverage-gate.yml handles coverage ratcheting for BytePort

Fixes failing workflows: ratchet.yml, release.yml

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* fix: restructure qgate.yml to use reusable workflow at job level

Reusable workflows in GitHub Actions must be called at the job level using 'uses:',
not as a step. The previous implementation tried to use the phenotype-tooling
quality-gate.yml reusable workflow as a step, which is invalid.

Restructured to:
- Split into two jobs: 'coverage' (generates lcov) and 'qgate' (runs quality gate)
- Reusable workflow now called at job level as required
- Coverage artifact still passed between jobs

Fixes workflow file parsing issue that was blocking qgate.yml execution.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* fix: correct workflow action versions and TruffleHog configuration

Fixes two workflow issues from PR #276:

1. TruffleHog Secret Scan (secrets-scan.yml):
   - Remove duplicate --fail flag in extra_args (action passes it by default)
   - This fixes the 'flag cannot be repeated' error

2. Lint Workflow (lint.yml):
   - Replace invalid action SHA hashes with valid semantic versions:
     * actions/checkout@v6
     * actions/setup-go@v5
     * golangci/golangci-lint-action@v6
   - Add working-directory: backend to target Go modules
   - Fixes workflow resolution errors from invalid/non-existent action versions

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
* Fix: Remove unused Rust dependencies detected by cargo-machete

Removed unused dependencies from:
- byteport-cli: serde, serde_yaml, thiserror
- byteport-otel: serde, thiserror, tracing
- byteport-registry-adapter: thiserror
- byteport-transport: byteport-otel
- pheno-dag: serde_json
- phenotype-types: anyhow, chrono, tokio
- src-tauri: clap-ext

Added cargo-machete ignore list to src-tauri for false positives:
- Ignored: log, serde, serde_json (actually used but not detected)

Fixes CI ci.yml Cargo machete (unused deps) workflow failure.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* Fix: Grant contents:write permission to release-drafter job

The 'draft' job uses release-drafter/release-drafter action to create
release drafts, which requires contents:write permission.

Error was: 'Resource not accessible by integration' when attempting to
create a release with insufficient token scope.

Fixes Release workflow failure.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* Fix: Remove otel feature from byteport-transport and apply fmt

- Removed otel feature and its optional tracing dependency from byteport-transport
  (byteport-otel dep was removed as unused, breaking the feature definition)
- Applied cargo fmt to fix formatting issues in byteport-cli
- Resolves manifest parse errors in cargo fmt/clippy checks

Fixes Rust CI workflow failures (format check, clippy, test exit codes).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* Fix: Comprehensive workflow diagnostics and fixes

Fixes for all 6 failing BytePort workflows:

1. **Lint (golangci-lint Go 1.25 mismatch)**:
   - Downgrade backend/go.mod and backend/nvms/go.mod from 1.25.0 to 1.24
   - Remove toolchain go1.25 from nvms
   - No Go 1.25-specific syntax found; safe downgrade

2. **Governance (unpinned GitHub Actions)**:
   - Pin all GitHub Actions to full commit SHAs:
     * actions/checkout@v6/v4
     * actions/setup-go@v5/v4
     * actions/setup-node@v4
     * golangci-lint-action@v6
   - Update governance check regex to allow reusable workflow @main refs

3. **E2E Tests (npm storybook peer dependencies)**:
   - Upgrade @storybook addons from v8.6.x to v10.4.3
   - Align addon-essentials, addon-interactions, blocks, test versions
   - All @storybook packages now on v10.4.3

4. **CI ci.yaml (Go local path dependency)**:
   - Comment out local replace for github.com/kooshapari/nanovms
   - Resolves 'replacement directory not found' error
   - Note: nanovms needs publishing or phenotype-tooling clone in CI

5. **CI ci.yml (cargo machete unused deps)**:
   - Remove unused dependencies from crates (already in prior commit)
   - cargo-machete now passes

6. **Release workflow (token permissions)**:
   - Grant contents:write permission to release-drafter job (already in prior commit)
   - Resolves 'Resource not accessible' error

7. **Rust CI (byteport-transport otel feature)**:
   - Remove orphaned otel feature from byteport-transport
   - Apply cargo fmt formatting (already in prior commit)

All fixes target root causes, not symptoms.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* Fix: release.yml simplify Tauri build and upload

Removes download-artifact complexity and uses tauri-action's
includeRelease=true to directly upload artifacts to GitHub Release.
Tauri action handles release creation and upload in one step.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
- release.yml: fix draft job permissions (contents: read -> write) so release-drafter can update drafts
- e2e.yml: fix YAML syntax (separate uses statements with proper newlines)
- lint.yml: fix YAML syntax (separate uses statements with proper newlines)

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
…rkflows (#279)

- Replace invalid SHA a309ff8b426b58ec0e2a45f0f869d46889d02405 with v4 tag
- Fixes action resolution errors in tier-0-gate.yml and e2e.yml
- Allows GitHub Actions to resolve to correct setup-node v4 release
* Fix: resolve invalid setup-node action SHAs in tier-0-gate and e2e workflows

- Replace invalid SHA a309ff8b426b58ec0e2a45f0f869d46889d02405 with v4 tag
- Fixes action resolution errors in tier-0-gate.yml and e2e.yml
- Allows GitHub Actions to resolve to correct setup-node v4 release

* Fix: pin all GitHub Actions to commit SHAs for governance compliance

- lint.yml: Pin golangci/golangci-lint-action to v6 commit SHA
- release.yml: Pin actions/checkout, actions/setup-node, dtolnay/rust-toolchain, and tauri-apps/tauri-action to specific commit SHAs

This resolves OpenSSF Scorecard pinned-dependencies requirement and governance workflow violations.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* Fix: restore valid setup-node action SHA in e2e.yml

Prior commit in history accidentally unpinned setup-node action. Restore the correct pinned SHA to resolve governance workflow violations.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
- Fix actions/setup-go reference (was broken/invalid SHA)
- Use SHAs that are known to work from other CI workflows
- Pin golangci/golangci-lint-action to verified commit SHA

This fixes the Lint workflow execution failures.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Root cause: package.json pinned @storybook/addon-essentials,
addon-interactions, blocks, and test to ^10.4.3 -- a version line
that was never published for those packages (Storybook 9+ folded
them into the core 'storybook' package). This made npm ci fail on
every platform in release.yml's Tauri build matrix.

- Remove addon-essentials/addon-interactions/blocks/test (merged
  into storybook core in v9+); update .storybook/main.js addons list
  to match
- Bump storybook/svelte/sveltekit to matching 10.4.6 (verified peer
  compat with vite ^8.0.10 already in use)
- Move @rollup/rollup-darwin-arm64 and @tauri-apps/cli-darwin-arm64
  from dependencies to optionalDependencies -- these are macOS-only
  native bindings that were breaking npm ci on Linux/Windows CI
  runners with EBADPLATFORM
- Regenerated package-lock.json; verified npm ci succeeds cleanly

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
Tauri v2 schema does not allow an 'updater' key under 'bundle' --
only 'createUpdaterArtifacts' (bool). The v1-style nested updater
config (active/endpoints/dialog/pubkey) under bundle was rejected
by the schema validator, failing every Tauri build in release.yml
with: Additional properties are not allowed ('updater' was unexpected).

The correct v2 location for updater config is plugins.updater,
which was already present (duplicated). Also disabled updater
artifact generation and the updater plugin since the pubkey is
still a placeholder (REPLACE_WITH_RELEASE_SIGNING_PUBKEY) -- a
real minisign keypair must be provisioned before enabling signed
auto-updates.

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings August 3, 2026 01:07
@gemini-code-assist

Copy link
Copy Markdown

Caution

The consumer version of Gemini Code Assist on GitHub has been sunset. All code review activity has officially ceased.

@codeant-ai

codeant-ai Bot commented Aug 3, 2026

Copy link
Copy Markdown

🤖 CodeAnt AI — Review Status

Status Commit Started (UTC) Finished (UTC)
✅ Incremental review completed 8c9e81d Aug 20, 2026 · 09:59 09:59
✅ Reviewed your PR 672cd3b Aug 03, 2026 · 01:07 01:10

@codeant-ai

codeant-ai Bot commented Aug 3, 2026

Copy link
Copy Markdown

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

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@codeant-ai codeant-ai Bot added the size:XXL This PR changes 1000+ lines, ignoring generated files label Aug 3, 2026
Comment on lines +30 to +31
if err := request.Validate(""); err == nil {
t.Fatal("missing authenticated owner accepted")

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Suggestion: The test name claims to reject owner impersonation, but this assertion only validates an empty authenticated owner. Since DesiredStateRequest has no owner field, it never exercises a request containing an attacker-supplied owner or verifies that such a value is ignored; add an explicit handler-level impersonation test or rename the test to reflect the condition it actually covers. [inconsistent naming]

Severity Level: Minor 🧹
- ⚠️ Application test name overstates impersonation coverage.
- ⚠️ Handler-level impersonation coverage already exists.
- ⚠️ No production ownership behavior is changed by this test gap.

Fix in Cursor Fix in VSCode Claude

(Use Cmd/Ctrl + Click for best experience)

Prompt for AI Agent 🤖
This is a comment left during a code review.

**Path:** backend/internal/application/meshworkload/submit_test.go
**Line:** 30:31
**Comment:**
	*Inconsistent Naming: The test name claims to reject owner impersonation, but this assertion only validates an empty authenticated owner. Since `DesiredStateRequest` has no owner field, it never exercises a request containing an attacker-supplied owner or verifies that such a value is ignored; add an explicit handler-level impersonation test or rename the test to reflect the condition it actually covers.

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.
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
👍 | 👎

Comment on lines +9 to +24
func validateCompositionMetadata(digest, artifactRef string) error {
if digest != "" {
const prefix = "sha256:"
encoded := strings.TrimPrefix(digest, prefix)
if encoded == digest || len(encoded) != 64 {
return fmt.Errorf("composition_digest must be sha256 followed by 64 hexadecimal characters")
}
if _, err := hex.DecodeString(encoded); err != nil {
return fmt.Errorf("composition_digest must be sha256 followed by 64 hexadecimal characters")
}
}
if len(artifactRef) > 512 || strings.IndexFunc(artifactRef, func(r rune) bool { return r < 0x20 || r == 0x7f }) >= 0 {
return fmt.Errorf("artifact_ref must be at most 512 characters and contain no control characters")
}
return nil
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Suggestion: This validator permits a digest without an artifact reference and an artifact reference without a digest, while the mesh contract requires both fields. The deployment creation path persists metadata whenever either field is present, so incomplete composition records can enter the same storage used by mesh listing and be exposed as incomplete workloads. Require both fields together or keep these metadata records out of the mesh representation. [incomplete implementation]

Severity Level: Major ⚠️
- ⚠️ Regular deployments can appear as incomplete mesh workloads.
- ⚠️ Mesh consumers receive missing digest or artifact data.

Fix in Cursor Fix in VSCode Claude

(Use Cmd/Ctrl + Click for best experience)

Prompt for AI Agent 🤖
This is a comment left during a code review.

**Path:** backend/internal/application/deployment/composition_metadata.go
**Line:** 9:24
**Comment:**
	*Incomplete Implementation: This validator permits a digest without an artifact reference and an artifact reference without a digest, while the mesh contract requires both fields. The deployment creation path persists metadata whenever either field is present, so incomplete composition records can enter the same storage used by mesh listing and be exposed as incomplete workloads. Require both fields together or keep these metadata records out of the mesh representation.

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.
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
👍 | 👎

Comment on lines +31 to +41
func (s *DeploymentStore) Save(ctx context.Context, owner string, req DesiredStateRequest) error {
dep, err := domain.NewDeployment(req.Name, owner, nil)
if err != nil {
return err
}
dep.SetCompositionMetadata(domain.CompositionMetadata{Digest: req.CompositionDigest, ArtifactRef: req.ArtifactRef})
dep.SetProvider("execution_backend", req.ExecutionBackend)
if len(req.Placement.Labels)+len(req.Placement.Constraints) > 0 {
dep.SetProvider("placement", req.Placement)
}
return s.repository.Create(ctx, dep)

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Suggestion: Creating the deployment directly through repository.Create bypasses the existing ValidateDeployment contract, which checks for duplicate names within an owner. Repeated submissions with the same owner and name will therefore create multiple desired states because the database only enforces UUID uniqueness. Validate the deployment before persisting and enforce the uniqueness atomically at the persistence layer. [api mismatch]

Severity Level: Major ⚠️
- ❌ Repeated submissions create duplicate owner workloads.
- ⚠️ Reconciliation receives ambiguous desired-state records.

Fix in Cursor Fix in VSCode Claude

(Use Cmd/Ctrl + Click for best experience)

Prompt for AI Agent 🤖
This is a comment left during a code review.

**Path:** backend/internal/application/meshworkload/submit.go
**Line:** 31:41
**Comment:**
	*Api Mismatch: Creating the deployment directly through `repository.Create` bypasses the existing `ValidateDeployment` contract, which checks for duplicate names within an owner. Repeated submissions with the same owner and name will therefore create multiple desired states because the database only enforces UUID uniqueness. Validate the deployment before persisting and enforce the uniqueness atomically at the persistence layer.

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.
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
👍 | 👎

Comment on lines +56 to +57
backend, _ := dep.Providers()["execution_backend"].(string)
responses = append(responses, DesiredStateResponse{Name: dep.Name(), Owner: dep.Owner(), CompositionDigest: metadata.Digest, ArtifactRef: metadata.ArtifactRef, ExecutionBackend: backend, Status: dep.Status().String(), AcceptedAt: dep.CreatedAt()})

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Suggestion: The placement is persisted under the provider map, but the response construction only reads execution_backend and never reconstructs Placement. Consequently, GET /mesh/workloads returns an empty placement for every workload that supplied labels or constraints. Decode the stored placement and assign it to the response. [logic error]

Severity Level: Major ⚠️
- ❌ Placement labels disappear from mesh workload listings.
- ❌ Reconciliation clients cannot recover scheduling constraints.

Fix in Cursor Fix in VSCode Claude

(Use Cmd/Ctrl + Click for best experience)

Prompt for AI Agent 🤖
This is a comment left during a code review.

**Path:** backend/internal/application/meshworkload/submit.go
**Line:** 56:57
**Comment:**
	*Logic Error: The placement is persisted under the provider map, but the response construction only reads `execution_backend` and never reconstructs `Placement`. Consequently, `GET /mesh/workloads` returns an empty placement for every workload that supplied labels or constraints. Decode the stored placement and assign it to the response.

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.
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
👍 | 👎

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 672cd3ba14

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread .cargo/audit.toml Outdated
Comment on lines -10 to -23
ignore = [
# --- Real vulnerabilities: no resolvable fixed version yet ---
# RUSTSEC-2026-0194 / RUSTSEC-2026-0195: quick-xml <0.41.0 quadratic
# runtime / unbounded namespace allocation. quick-xml is pulled in
# transitively via plist -> tauri (macOS Info.plist / bundle metadata
# parsing at build/bundle time, not on any attacker-reachable runtime
# path). Upstream `plist` v1.9.0 (latest release) still pins
# `quick-xml = "^0.39.2"`, so no combination of `cargo update` can reach
# the fixed 0.41.0 line without plist publishing a new release. Bumped
# plist 1.7.4 -> 1.9.0 / quick-xml 0.38.4 -> 0.39.4 (closest available)
# in this change; re-evaluate for a further bump once plist relaxes its
# quick-xml constraint upstream.
"RUSTSEC-2026-0194",
"RUSTSEC-2026-0195",

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Restore the cargo-audit advisory suppressions

Deleting this config re-enables the previously documented RustSec failures while Cargo.lock still pins quick-xml 0.39.4, which is below the RustSec patched range for RUSTSEC-2026-0195 (>=0.41.0). In CI paths that run cargo audit/rustsec/audit-check, the removed [advisories].ignore entries were the only suppression for RUSTSEC-2026-0194/0195, so the required supply-chain gate will fail until the config is restored or the dependency is actually upgraded.

Useful? React with 👍 / 👎.

continue
}
backend, _ := dep.Providers()["execution_backend"].(string)
responses = append(responses, DesiredStateResponse{Name: dep.Name(), Owner: dep.Owner(), CompositionDigest: metadata.Digest, ArtifactRef: metadata.ArtifactRef, ExecutionBackend: backend, Status: dep.Status().String(), AcceptedAt: dep.CreatedAt()})

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Preserve placement when listing workloads

For a workload submitted with placement, POST /mesh/workloads echoes the placement but the persisted GET /mesh/workloads response is rebuilt here without assigning Placement; region/zone/node_pool-only placement is also skipped during Save, so schedulers lose the placement intent after the first read. Include the stored placement in this response and persist it whenever any placement field is set.

Useful? React with 👍 / 👎.

switch {
case errors.As(err, &validationErr):
c.JSON(http.StatusBadRequest, ErrorResponse{Error: validationErr.Error(), Code: "VALIDATION_ERROR"})
case errors.Is(err, context.Canceled):

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

WARNING: context.DeadlineExceeded is not handled alongside context.Canceled. When a request's deadline expires, ctx.Err() returns context.DeadlineExceeded, which falls through to the default case and returns 500 instead of 408. Add errors.Is(err, context.DeadlineExceeded) to the switch.


Reply with @kilocode-bot fix it to have Kilo Code address this issue.

// List returns persisted desired state for the authenticated owner.
func (h *MeshWorkloadHandler) List(c *gin.Context) {
owner := getUserUUID(c)
responses, err := h.useCase.List(c.Request.Context(), owner)

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

WARNING: The List handler does not handle context.Canceled or context.DeadlineExceeded. If the context is cancelled or its deadline expires during the store read, the error falls through to the 500 case. Add the same context error handling as the Submit handler.


Reply with @kilocode-bot fix it to have Kilo Code address this issue.


// WorkloadIntent is an owner-scoped desired-state request for the compute mesh.
// Provider credentials and provider-specific state stay behind adapters.
type WorkloadIntent struct {

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

SUGGESTION: WorkloadIntent is defined and tested but never imported or used outside the mesh package. The mesh workload endpoint uses meshworkload.DesiredStateRequest instead. Either wire WorkloadIntent into the handler or remove it to avoid dead code.


Reply with @kilocode-bot fix it to have Kilo Code address this issue.

return nil, err
}
responses := make([]DesiredStateResponse, 0, len(deployments))
for _, dep := range deployments {

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

SUGGESTION: DeploymentStore.List returns every deployment for the owner that has composition metadata, including regular deployments created through the standard deployment flow. This could expose non-mesh deployments through the mesh listing endpoint. Consider adding a marker or filter to distinguish mesh intents from regular deployments.


Reply with @kilocode-bot fix it to have Kilo Code address this issue.

return nil, req.Context().Err()
}

func TestVercelValidateCredentialsHonorsCallerDeadline(t *testing.T) {

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

SUGGESTION: This test only covers VercelProvider.ValidateCredentials for deadline handling. NetlifyProvider and RailwayProvider also make HTTP calls that should honor caller cancellation and deadlines. Add equivalent tests for those providers.


Reply with @kilocode-bot fix it to have Kilo Code address this issue.

@kilo-code-bot

kilo-code-bot Bot commented Aug 3, 2026

Copy link
Copy Markdown

Code Review Summary

Status: 8 Issues Found (incremental) | Recommendation: Address before merge

Incremental pass on 8c9e81d (1 commit after the prior review at 672cd3b). The prior review's 10 findings on the mesh/deployment Go code are on files unchanged by this commit, so they remain open on the PR but are out of scope for this incremental diff.

Overview

Severity Count
CRITICAL 1
WARNING 3
SUGGESTION 4
Issue Details (click to expand)

CRITICAL

File Line Issue
.github/workflows/fuzz.yml 13 cargo fuzz run runs with no time budget or target and will hang CI until the runner is killed

WARNING

File Line Issue
fuzz/Cargo.toml 6 Fuzz crate missing [dependencies] (arbitrary, libfuzzer-sys); won't compile
fuzz/fuzz_target.rs 2 use arbitrary::Arbitrary; is unused and depends on an undeclared crate; fails to build
.github/workflows/bench.yml 12 benches/criterion_bench.rs is not wired as a [[bench]] and benches/ is not a workspace member, so cargo bench runs nothing (masked by `

SUGGESTION

File Line Issue
benches/criterion_bench.rs 3 `b.iter(
.github/workflows/mutation.yml 13 Whole-workspace cargo mutants with `
mutants.toml 2 fail = true is defeated by `
user-scorecard.json 5 Leaks local path with username C:\\Users\\koosh\\BytePort-fresh
Files Reviewed (9 incremental files)
  • .github/workflows/bench.yml - 1 issue
  • .github/workflows/fuzz.yml - 1 issue (CRITICAL)
  • .github/workflows/mutation.yml - 1 issue
  • benches/criterion_bench.rs - 1 issue
  • fuzz/Cargo.toml - 1 issue
  • fuzz/fuzz_target.rs - 1 issue
  • mutants.toml - 1 issue
  • user-scorecard.json - 1 issue
  • backend/byteport-api - see note below

Note (not a line-commentable item)

backend/byteport-api is a 21 MB PE32+ Windows executable committed to the repo in this PR. Committing a compiled binary bloats history, is platform-specific, and may embed secrets/keys. It should be removed and gitignored (build artifacts belong in release/CI artifacts, not source control).

Previous Review Summary (commit 672cd3b)

Current summary above is authoritative. Previous snapshots are kept for context only.

Previous review (commit 672cd3b)

Status: 10 Issues Found | Recommendation: Address before merge

Overview

Severity Count
CRITICAL 1
WARNING 7
SUGGESTION 2
Issue Details (click to expand)

CRITICAL

File Line Issue
.cargo/audit.toml 23 Deletion removes cargo-audit advisory suppressions, re-enabling RustSec failures (RUSTSEC-2026-0194/0195) that were previously documented as safe-to-ignore

WARNING

File Line Issue
backend/internal/application/deployment/composition_metadata.go 24 Validator permits a digest without an artifact reference and an artifact reference without a digest, while the mesh contract requires both fields
backend/internal/application/meshworkload/submit.go 41 DeploymentStore.Save creates deployments directly through repository.Create, bypassing ValidateDeployment and its duplicate-name check
backend/internal/application/meshworkload/submit.go 57 DeploymentStore.List does not reconstruct Placement from the stored provider map, so GET /mesh/workloads returns empty placement for every workload
backend/internal/infrastructure/http/handlers/mesh_workload_handler.go 59 context.DeadlineExceeded is not handled alongside context.Canceled; deadline expiry returns 500 instead of 408
backend/internal/infrastructure/http/handlers/mesh_workload_handler.go 31 List handler has no context cancellation or deadline handling; cancelled requests fall through to 500
backend/internal/application/meshworkload/submit.go 51 DeploymentStore.List returns all deployments with composition metadata for the owner, including regular deployments that are not mesh intents
backend/lib/cloud/provider_timeout_test.go 18 Only tests VercelProvider for deadline handling; NetlifyProvider and RailwayProvider also make HTTP calls that should honor caller cancellation

SUGGESTION

File Line Issue
backend/internal/application/meshworkload/submit_test.go 31 Test name claims to reject owner impersonation but only validates an empty authenticated owner; DesiredStateRequest has no owner field so impersonation is handled at the handler level
backend/internal/application/mesh/intent.go 12 WorkloadIntent is defined and tested but never imported or used outside the mesh package — dead code
Files Reviewed (7 files)
  • backend/internal/application/mesh/intent.go - 1 issue
  • backend/internal/application/mesh/intent_test.go - 0 issues
  • backend/internal/application/meshworkload/submit.go - 3 issues
  • backend/internal/application/meshworkload/submit_test.go - 1 issue
  • backend/internal/application/deployment/composition_metadata.go - 1 issue
  • backend/internal/application/deployment/composition_metadata_test.go - 0 issues
  • backend/internal/infrastructure/http/handlers/mesh_workload_handler.go - 2 issues
  • backend/internal/infrastructure/http/handlers/mesh_workload_handler_test.go - 0 issues
  • backend/lib/cloud/http_helpers.go - 0 issues
  • backend/lib/cloud/http_helpers_test.go - 0 issues
  • backend/lib/cloud/provider_timeout_test.go - 1 issue
  • backend/lib/cloud/provider_netlify.go - 0 issues
  • backend/lib/cloud/provider_railway.go - 0 issues
  • backend/lib/cloud/provider_vercel.go - 0 issues
  • .cargo/audit.toml (deleted) - 1 issue

Fix these issues in Kilo Cloud


Reviewed by free · Input: 71.3K · Output: 15.6K · Cached: 255.7K

@mergify mergify Bot added go Pull requests that update go code typescript labels Aug 13, 2026
@mergify

mergify Bot commented Aug 13, 2026

Copy link
Copy Markdown

Large PR Alert: This PR touches 329 files. Consider splitting into smaller PRs for easier review.

@codeant-ai

codeant-ai Bot commented Aug 20, 2026

Copy link
Copy Markdown

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:XXL This PR changes 1000+ lines, ignoring generated files and removed size:XXL This PR changes 1000+ lines, ignoring generated files labels Aug 20, 2026
@mergify mergify Bot added the rust Pull requests that update rust code label Aug 20, 2026
@sonarqubecloud

Copy link
Copy Markdown

Quality Gate Failed Quality Gate failed

Failed conditions
C Security Rating on New Code (required ≥ A)

See analysis details on SonarQube Cloud

Catch issues before they fail your Quality Gate with our IDE extension SonarQube for IDE

- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- run: cargo install cargo-fuzz
- run: if [ -d fuzz ]; then cargo fuzz run 2>&1 | tail -50 || true; else echo no-fuzz; fi

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

CRITICAL: cargo fuzz run has no time budget and will hang CI indefinitely.

cargo fuzz run runs the fuzzer in the foreground until it finds a crash. With no -V/-j limit, no target specified, and no timeout-minutes on the job, this never returns and the workflow hangs until the runner is killed. Add a budget, e.g. cargo fuzz run fuzz_target -V 60 or wrap with timeout 300 cargo fuzz run fuzz_target.


Reply with @kilocode-bot fix it to have Kilo Code address this issue.

Comment thread fuzz/Cargo.toml
edition = "2021"
[[bin]]
name = "fuzz_target"
path = "fuzz_target.rs"

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

WARNING: Missing [dependencies] — the fuzz crate will not compile.

fuzz_target.rs imports arbitrary::Arbitrary and calls libfuzzer_sys::fuzz_target!, but neither crate is declared. cargo fuzz run (fuzz.yml:13) will fail to build. Add:

[dependencies]
arbitrary = { version = "1", features = ["derive"] }
libfuzzer-sys = "0.4"

Reply with @kilocode-bot fix it to have Kilo Code address this issue.

Comment thread fuzz/fuzz_target.rs
@@ -0,0 +1,3 @@
#![no_main]
use arbitrary::Arbitrary;

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

WARNING: Unused import / won't compile.

use arbitrary::Arbitrary; is never used — the fuzz target takes raw &[u8] directly and never invokes the Arbitrary trait. Combined with the missing arbitrary dependency (see fuzz/Cargo.toml), the crate fails to build. Remove the import or actually use Arbitrary for a typed target.


Reply with @kilocode-bot fix it to have Kilo Code address this issue.

steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- run: if [ -d benches ]; then cargo bench 2>&1 | tail -50 || true; else echo no-bench; fi

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

WARNING: Orphaned benchmark — cargo bench runs nothing.

benches/criterion_bench.rs is not declared as a [[bench]] in any Cargo.toml and benches/ is not a workspace member, so cargo bench from the workspace root compiles no benchmarks. The trailing || true also hides this no-op. Wire it up with a [[bench]] entry plus a criterion dev-dependency, or drop the workflow.


Reply with @kilocode-bot fix it to have Kilo Code address this issue.

@@ -0,0 +1,6 @@
use criterion::{criterion_group, criterion_main, Criterion};
fn bench_placeholder(c: &mut Criterion) {
c.bench_function("placeholder", |b| { b.iter(|| { 1 + 1 }) });

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

SUGGESTION: Benchmark body can be optimized away.

b.iter(|| { 1 + 1 }) is constant-foldable and may be eliminated, giving a meaningless measurement. Wrap the work in criterion::black_box! so the compiler cannot optimize it out. (Also note this bench is not wired into a package — see bench.yml.)


Reply with @kilocode-bot fix it to have Kilo Code address this issue.

- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- run: cargo install cargo-mutants
- run: cargo mutants --no-shuffle -j 2 --timeout 120 2>&1 | tail -100 || true

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

SUGGESTION: Whole-workspace mutation testing plus || true defeats the gate.

cargo mutants on a large workspace can run for hours and there is no timeout-minutes/path filter. The trailing || true means survived mutants never fail CI, contradicting fail = true in mutants.toml. Consider path-scoping, a timeout, and dropping || true so real findings surface.


Reply with @kilocode-bot fix it to have Kilo Code address this issue.

Comment thread mutants.toml
@@ -0,0 +1,2 @@
# cargo-mutants configuration
fail = true

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

SUGGESTION: fail = true is contradicted by || true in mutation.yml.

This setting makes cargo-mutants exit non-zero on survived mutants, but the workflow appends || true, so the non-zero is swallowed and the gate never triggers. Align the two — remove || true in the workflow or set fail = false here.


Reply with @kilocode-bot fix it to have Kilo Code address this issue.

Comment thread user-scorecard.json
"schema_version": "1.0",
"generated_at": "2026-08-20T02:12:58.411401+00:00",
"repo": "BytePort-fresh",
"repo_path": "C:\\Users\\koosh\\BytePort-fresh",

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

SUGGESTION: Leaked local path with username.

"repo_path": "C:\\Users\\koosh\\BytePort-fresh" exposes a local machine path and username. This generated scorecard artifact should not be committed to the repo; if kept, strip environment-specific fields.


Reply with @kilocode-bot fix it to have Kilo Code address this issue.

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

Labels

go Pull requests that update go code rust Pull requests that update rust code size:XXL This PR changes 1000+ lines, ignoring generated files typescript

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants