Skip to content

[MINOR] chore: merge develop to main - #72

Merged
alain-sv merged 38 commits into
mainfrom
release/minor-20260702-153924
Jul 2, 2026
Merged

[MINOR] chore: merge develop to main#72
alain-sv merged 38 commits into
mainfrom
release/minor-20260702-153924

Conversation

@alain-sv

@alain-sv alain-sv commented Jul 2, 2026

Copy link
Copy Markdown
Contributor

Release PR created by just ship minor. Merge this PR after required checks pass; the publish workflow will bump the minor version from the merge commit token.

alain-sv and others added 30 commits May 13, 2026 14:20
Pin all uses of actions/checkout@v6 and actions/setup-python@v6 to
their commit SHAs across every workflow, closing the remaining
floating-tag attack surface.

- actions/checkout  → de0fac2e (v6)
- actions/setup-python → a309ff8b (v6)
…facts (#46)

Prevents parallel matrix jobs racing on the same Actions cache
reservation. Also records two CI tooling facts in AGENTS.md.
* feat: add supervaizer v2 contract primitives

* feat: add supervaizer v2 a2a action endpoint

* feat: expose supervaizer v2 registration in a2a card

* feat: add supervaizer v2 action decorator

* docs: update supervaizer v2 changelog

* precommit fix

* refactor: move controller api version to contracts

* minor

* fix: scope v2 action handlers by agent

* feat: guard supervaizer v2 agent identity

* feat: include v2 job state in sync result

* feat: add v2 resource form fields

* feat: add v2 resource option sources

* feat: add v2 awaiting form fields

* feat: load supervaizer v2 surfaces over a2a

* feat: expose local hello world v2 contract

* feat: add v2 job source target type

* feat: stream v2 action effects over a2a

* fix: advertise v2 push notifications as unsupported

* refactor: remove legacy dynamic choices

* feat: complete local hello world v2 hitl flow

* refactor: remove legacy job poll

* docs: refresh generated contract docs

* test: align v2 prompt editor fixture

* test: align v2 contact import fixture

* test: align v2 scenario builder fixture

* test: align v2 overview fixture

* test: align v2 campaign contact fixture

* feat: add v2 registration builder

* feat: type v2 dataset display metadata

* minor

* fix: precommit

* feat: add comprehensive documentation for SUPERVAIZER API, Admin Interface, CLI, Parameter Validation, Persistence, Protocols, and REST API

* minor

* chore: change copyright dates

from 2024-2025 to 2024-2026

* fix: harden agent model surface and v2 contract hygiene

Use modern typing in agent.py, keep server encrypted params internal,
document deterministic agent ids, tighten A2A health status rules, drop
legacy hello-world v2 input aliases, and clarify v2 contract fields.

* feat: enhance agent method validation and improve v2 action safety

- Introduced validation to reject agent methods using blocked module

  roots.- Added checks to ensure declared method paths are used in

  agent execution.- Enhanced v2 action results with replay safety

  metadata validation.- Updated changelog and documentation to reflect

  these changes.

* feat: add v2 resource import contracts

* test: align v2 contract fixtures

* minor

* fix: require auth for a2a controller

* minor
…alidation improvements

- Added optional `metadata` field to `V2CaseSnapshot` for case-level context.
- Implemented validation for Studio registration handshake to ensure API key consistency.
- Enhanced server API key handling for stability during reloads.
- Updated tests to cover new functionality and validation paths.
* docs: plan workspace agent grants

* docs: add Studio grant acceptance UX

* feat: add workspace agent authorization

* feat: add workspace binding protocol

* fix: stabilize workspace authorization

* ✨feat: add workspace auth helpers and use them in tests

* ✨feat: require workspace auth and tighten agent checks

* fix: require workspace auth for Studio A2A

* fix: harden workspace authorization checks

* fix: normalize malformed workspace auth inputs
…bility

- Added support for newline-delimited JSON logging when `SUPERVAIZER_LOG_FORMAT=json` is set.
- Updated logging configuration to allow structured logs for access-denial events.
- Enhanced `log_access_denied_api` and `log_access_denied_tailscale` functions to include structured fields.
- Added tests to verify structured logging outputs in `tests/test_common.py`.
# Conflicts:
#	docs/CHANGELOG.md
* Clean up Supervaizer lifespan shutdown

* Document Supervaizer import placement rule

* Fix lifespan cleanup test determinism

* Address lifespan shutdown review feedback

* ✨feat: rename test and assert scheduled step task

* ✨ feat: update GitNexus index counts in AGENTS.md
* Refactor Supervaizer server modules

* ✨ feat: update GitNexus index stats in AGENTS.md

* ✨docs update changelog AGENTS guidance

* ✨feat: add v2 methods, tests and license header
* Clean up Supervaizer lifespan shutdown

* Document Supervaizer import placement rule

* Fix lifespan cleanup test determinism

* Address lifespan shutdown review feedback

* ✨feat: rename test and assert scheduled step task

* ✨ feat: update GitNexus index counts in AGENTS.md

* feat(v2): add agent action methods
- Updated mypy hook to use project-specific configuration for consistency with uv.lock.
- Improved validation for v2_registration and v2_method_declarations in Agent class to ensure proper type handling.
- Enhanced logging configuration to cast message records for structured logging compatibility.
Bumps [uv](https://github.com/astral-sh/uv) from 0.11.14 to 0.11.15.
- [Release notes](https://github.com/astral-sh/uv/releases)
- [Changelog](https://github.com/astral-sh/uv/blob/main/CHANGELOG.md)
- [Commits](astral-sh/uv@0.11.14...0.11.15)

---
updated-dependencies:
- dependency-name: uv
  dependency-version: 0.11.15
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [starlette](https://github.com/Kludex/starlette) from 0.50.0 to 1.0.1.
- [Release notes](https://github.com/Kludex/starlette/releases)
- [Changelog](https://github.com/Kludex/starlette/blob/main/docs/release-notes.md)
- [Commits](Kludex/starlette@0.50.0...1.0.1)

---
updated-dependencies:
- dependency-name: starlette
  dependency-version: 1.0.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [trufflesecurity/trufflehog](https://github.com/trufflesecurity/trufflehog) from 3.95.3 to 3.95.5.
- [Release notes](https://github.com/trufflesecurity/trufflehog/releases)
- [Commits](trufflesecurity/trufflehog@37b7700...d411fff)

---
updated-dependencies:
- dependency-name: trufflesecurity/trufflehog
  dependency-version: 3.95.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Add 21 skill symlinks under .agents/skills/ pointing to the local
runwaize_skills_cookbook installation, covering cloud-run basics,
Pulumi migration/tooling skills (terraform, CDK, ARM, ESC, component,
automation-api, upgrade-provider, best-practices, neo-handoff),
Google Cloud WAF pillars (security, reliability, performance,
cost-optimization, operational-excellence), google-cloud-recipe-auth,
google-cloud-networking-observability, cloudformation-to-pulumi,
package-usage, provider-upgrade, and upstream-patches.

Update AGENTS.md GitNexus index stats to reflect the current index
(6273 symbols, 11483 relationships, 281 execution flows).
Bumps [astral-sh/setup-uv](https://github.com/astral-sh/setup-uv) from 8.1.0 to 8.2.0.
- [Release notes](https://github.com/astral-sh/setup-uv/releases)
- [Commits](astral-sh/setup-uv@0880764...fac544c)

---
updated-dependencies:
- dependency-name: astral-sh/setup-uv
  dependency-version: 8.2.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [actions/checkout](https://github.com/actions/checkout) from 6.0.2 to 6.0.3.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](actions/checkout@de0fac2...df4cb1c)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: 6.0.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
dependabot Bot and others added 8 commits June 20, 2026 16:06
Bumps [starlette](https://github.com/Kludex/starlette) from 1.0.1 to 1.3.1.
- [Release notes](https://github.com/Kludex/starlette/releases)
- [Changelog](https://github.com/Kludex/starlette/blob/main/docs/release-notes.md)
- [Commits](Kludex/starlette@1.0.1...1.3.1)

---
updated-dependencies:
- dependency-name: starlette
  dependency-version: 1.3.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [cryptography](https://github.com/pyca/cryptography) from 48.0.0 to 48.0.1.
- [Changelog](https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst)
- [Commits](pyca/cryptography@48.0.0...48.0.1)

---
updated-dependencies:
- dependency-name: cryptography
  dependency-version: 48.0.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>
Bumps [actions/checkout](https://github.com/actions/checkout) from 6.0.3 to 7.0.0.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](actions/checkout@df4cb1c...9c091bb)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: 7.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [softprops/action-gh-release](https://github.com/softprops/action-gh-release) from 3.0.0 to 3.0.1.
- [Release notes](https://github.com/softprops/action-gh-release/releases)
- [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md)
- [Commits](softprops/action-gh-release@b430933...718ea10)

---
updated-dependencies:
- dependency-name: softprops/action-gh-release
  dependency-version: 3.0.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [trufflesecurity/trufflehog](https://github.com/trufflesecurity/trufflehog) from 3.95.5 to 3.95.6.
- [Release notes](https://github.com/trufflesecurity/trufflehog/releases)
- [Commits](trufflesecurity/trufflehog@d411fff...30d5bb9)

---
updated-dependencies:
- dependency-name: trufflesecurity/trufflehog
  dependency-version: 3.95.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* feat: add managed context SDK client

* ✨ feat: update gitn docs to use local run.cjs and paginate list_repos

* ✨ feat: add MPLv2 license headers to module and test files

* fix: address managed context review feedback
* ✨ feat(contracts): add V2ContextAssignment for context.assign

* ✨ feat(contracts): constrain context scope and document assignment semantics

Address PR #71 review: V2ContextAssignmentItem.scope is now Literal["workspace", "mission"] (matching other closed v2 vocabularies) with a ValidationError regression test, and the v2 doc gains explicit context.assign semantics: refs-not-content payload, freeze-on-pull with provenance, mandatory fetched-vs-assigned version check that fails the assignment on mismatch, and no live context reads during execution.

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

* 🐛 fix(contracts): require mission_id for mission-scoped context assignments

Address PR #71 follow-up review: a V2ContextAssignment containing scope="mission" items but no mission_id passed validation while the agent-side ContextClient.open() would have no mission context to fetch with. A model_validator now rejects that combination; workspace-only assignments still allow a null mission_id.

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

* 🐛 fix(contracts): reject whitespace-only mission_id for mission-scoped assignments

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

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
@alain-sv
alain-sv merged commit 0a92633 into main Jul 2, 2026
8 checks passed
@qodo-code-review

Copy link
Copy Markdown

PR Summary by Qodo

Release: add ContextClient + context.assign contract; refresh CI action pins

✨ Enhancement 🧪 Tests 📝 Documentation ⚙️ Configuration changes 🕐 40+ Minutes

Grey Divider

AI Description

• Add ContextClient (search/open) for Supervaize-managed runtime context endpoints.
• Introduce v2 context.assign contract types and export them via supervaizer package.
• Update CI workflow action pins and GitNexus docs; expand tests and changelog.
Diagram

graph TD
  SDK["supervaizer SDK"] --> ACC["Account"] --> CTX["ContextClient"] --> API{{"Supervaize API"}}
  SDK --> CON["contracts.py"] --> V2["V2 context.assign"]
  WF(["GitHub Actions"]) --> TST(["Pytest"]) --> CTX
  TST --> V2
  DOC["Docs/Changelog"] --> V2

  subgraph Legend
    direction LR
    _m["Module/File"] ~~~ _e{{"External"}} ~~~ _c(["CI/Tests"])
  end
Loading
High-Level Assessment

The following are alternative approaches to this PR:

1. Share a single httpx client factory across SDK services
  • ➕ Avoids duplicating module-level httpx.Client + atexit shutdown patterns
  • ➕ Centralizes retry/timeout configuration in one place
  • ➖ Creates tighter coupling between otherwise independent SDK modules
  • ➖ May require a small internal abstraction layer (more code movement now)
2. Allow injecting an httpx.Client into ContextClient
  • ➕ Improves testability and lets callers manage lifecycle/timeouts
  • ➕ Avoids long-lived global clients in embedded environments
  • ➖ Expands public API surface (support burden)
  • ➖ Callers must understand httpx lifecycle semantics
3. Provide an async ContextClient (in addition to sync)
  • ➕ Better fit for async agents/services already using AsyncClient
  • ➕ Avoids blocking calls in async contexts
  • ➖ More surface area to maintain and document
  • ➖ Potential for subtle behavior drift between sync and async implementations

Recommendation: The PR’s approach (a simple sync ContextClient with a shared transport and atexit close) is consistent with existing account_service patterns and is fine for a lightweight SDK feature. If this client grows (timeouts, auth variants, streaming, etc.), consider refactoring toward a shared HTTP client factory and/or optional client injection to reduce duplication and improve lifecycle control.

Files changed (42) +643 / -94

Enhancement (4) +222 / -0
__init__.pyExport context module and new v2 context assignment contracts +16/-0

Export context module and new v2 context assignment contracts

• Extends package-level lazy exports to include ContextClient-related types plus V2_ACTION_CONTEXT_ASSIGN and V2ContextAssignment models.

src/supervaizer/init.py

account.pyExpose Account.context accessor +6/-0

Expose Account.context accessor

• Imports ContextClient and adds an Account.context property to provide a convenient entry point for context operations.

src/supervaizer/account.py

context.pyAdd ContextClient with search/open APIs +172/-0

Add ContextClient with search/open APIs

• Introduces a new sync client for /context/search and /context/open endpoints with typed Pydantic models, basic input validation, and shared httpx client lifecycle management.

src/supervaizer/context.py

contracts.pyAdd v2 context.assign action id and payload models +28/-0

Add v2 context.assign action id and payload models

• Defines V2_ACTION_CONTEXT_ASSIGN plus V2ContextAssignmentItem/V2ContextAssignment models, including validation requiring mission_id when mission-scoped items are present.

src/supervaizer/contracts.py

Tests (2) +250 / -0
test_context_client.pyAdd unit tests for ContextClient payloads and validation +162/-0

Add unit tests for ContextClient payloads and validation

• Adds tests that mock httpx POST calls to verify correct URLs/payloads and ensures conflicting workspace IDs and blank mission IDs are rejected.

tests/test_context_client.py

test_contracts.pyAdd contract parsing/validation tests for V2ContextAssignment +88/-0

Add contract parsing/validation tests for V2ContextAssignment

• Adds tests covering parsing, empty-item acceptance, mission_id requirements for mission-scoped items, and scope validation, and asserts the action id constant value.

tests/test_contracts.py

Documentation (9) +137 / -81
SKILL.mdUpdate GitNexus CLI usage to use repo-local runner +8/-6

Update GitNexus CLI usage to use repo-local runner

• Replaces npx-based examples with node .gitnexus/run.cjs commands and adds troubleshooting guidance for missing runner/bootstrap issues.

.claude/skills/gitnexus/gitnexus-cli/SKILL.md

SKILL.mdRename GitNexus MCP tool calls in debugging skill +15/-15

Rename GitNexus MCP tool calls in debugging skill

• Updates documented tool names (query/context/cypher) and refreshes stale-index remediation instructions to use the repo-local runner.

.claude/skills/gitnexus/gitnexus-debugging/SKILL.md

SKILL.mdRename GitNexus MCP tool calls in exploring skill +11/-11

Rename GitNexus MCP tool calls in exploring skill

• Updates examples to use query/context and switches re-index instructions to node .gitnexus/run.cjs analyze.

.claude/skills/gitnexus/gitnexus-exploring/SKILL.md

SKILL.mdDocument list_repos pagination and repo-local runner +33/-2

Document list_repos pagination and repo-local runner

• Updates stale-index guidance and adds a detailed section describing list_repos pagination behavior and deterministic ordering.

.claude/skills/gitnexus/gitnexus-guide/SKILL.md

SKILL.mdRename GitNexus MCP tool calls in impact analysis skill +10/-10

Rename GitNexus MCP tool calls in impact analysis skill

• Renames impact/detect_changes examples and updates re-index instructions to use the repo-local runner.

.claude/skills/gitnexus/gitnexus-impact-analysis/SKILL.md

SKILL.mdRename GitNexus MCP tool calls in refactoring skill +25/-25

Rename GitNexus MCP tool calls in refactoring skill

• Updates rename/impact/query/context/detect_changes/cypher naming throughout and refreshes the stale-index remediation command.

.claude/skills/gitnexus/gitnexus-refactoring/SKILL.md

AGENTS.mdUpdate GitNexus guidance and tool names in agent instructions +10/-10

Update GitNexus guidance and tool names in agent instructions

• Updates indexed symbol/relationship counts and revises guidance to use node .gitnexus/run.cjs and the renamed MCP tool functions (impact/query/context/detect_changes/rename).

AGENTS.md

2026_05_SUPERVAIZER_v2.mdDocument new v2 context.assign action semantics +7/-0

Document new v2 context.assign action semantics

• Adds the context.assign action id and describes version-checked context snapshotting semantics via ContextClient.open with provenance requirements.

docs/2026_05_SUPERVAIZER_v2.md

CHANGELOG.mdAdd Unreleased entries for context.assign contract and tests +18/-2

Add Unreleased entries for context.assign contract and tests

• Documents the new context.assign typed contract and records additional test coverage plus updated test counts/timings.

docs/CHANGELOG.md

Other (27) +34 / -13
cloud-run-basicsAdd agent skill pointer for cloud-run-basics +1/-0

Add agent skill pointer for cloud-run-basics

• Adds a new skill entry under .agents/skills referencing a local cookbook path.

.agents/skills/cloud-run-basics

cloudformation-to-pulumiAdd agent skill pointer for cloudformation-to-pulumi +1/-0

Add agent skill pointer for cloudformation-to-pulumi

• Adds a new skill entry under .agents/skills referencing a local cookbook path.

.agents/skills/cloudformation-to-pulumi

google-cloud-networking-observabilityAdd agent skill pointer for GCP networking observability +1/-0

Add agent skill pointer for GCP networking observability

• Adds a new skill entry under .agents/skills referencing a local cookbook path.

.agents/skills/google-cloud-networking-observability

google-cloud-recipe-authAdd agent skill pointer for GCP recipe auth +1/-0

Add agent skill pointer for GCP recipe auth

• Adds a new skill entry under .agents/skills referencing a local cookbook path.

.agents/skills/google-cloud-recipe-auth

google-cloud-waf-cost-optimizationAdd agent skill pointer for GCP WAF cost optimization +1/-0

Add agent skill pointer for GCP WAF cost optimization

• Adds a new skill entry under .agents/skills referencing a local cookbook path.

.agents/skills/google-cloud-waf-cost-optimization

google-cloud-waf-operational-excellenceAdd agent skill pointer for GCP WAF operational excellence +1/-0

Add agent skill pointer for GCP WAF operational excellence

• Adds a new skill entry under .agents/skills referencing a local cookbook path.

.agents/skills/google-cloud-waf-operational-excellence

google-cloud-waf-performance-optimizationAdd agent skill pointer for GCP WAF performance optimization +1/-0

Add agent skill pointer for GCP WAF performance optimization

• Adds a new skill entry under .agents/skills referencing a local cookbook path.

.agents/skills/google-cloud-waf-performance-optimization

google-cloud-waf-reliabilityAdd agent skill pointer for GCP WAF reliability +1/-0

Add agent skill pointer for GCP WAF reliability

• Adds a new skill entry under .agents/skills referencing a local cookbook path.

.agents/skills/google-cloud-waf-reliability

google-cloud-waf-securityAdd agent skill pointer for GCP WAF security +1/-0

Add agent skill pointer for GCP WAF security

• Adds a new skill entry under .agents/skills referencing a local cookbook path.

.agents/skills/google-cloud-waf-security

package-usageAdd agent skill pointer for package usage +1/-0

Add agent skill pointer for package usage

• Adds a new skill entry under .agents/skills referencing a local cookbook path.

.agents/skills/package-usage

provider-upgradeAdd agent skill pointer for provider upgrade +1/-0

Add agent skill pointer for provider upgrade

• Adds a new skill entry under .agents/skills referencing a local cookbook path.

.agents/skills/provider-upgrade

pulumi-arm-to-pulumiAdd agent skill pointer for pulumi ARM migration +1/-0

Add agent skill pointer for pulumi ARM migration

• Adds a new skill entry under .agents/skills referencing a local cookbook path.

.agents/skills/pulumi-arm-to-pulumi

pulumi-automation-apiAdd agent skill pointer for Pulumi Automation API +1/-0

Add agent skill pointer for Pulumi Automation API

• Adds a new skill entry under .agents/skills referencing a local cookbook path.

.agents/skills/pulumi-automation-api

pulumi-best-practicesAdd agent skill pointer for Pulumi best practices +1/-0

Add agent skill pointer for Pulumi best practices

• Adds a new skill entry under .agents/skills referencing a local cookbook path.

.agents/skills/pulumi-best-practices

pulumi-cdk-to-pulumiAdd agent skill pointer for CDK-to-Pulumi migration +1/-0

Add agent skill pointer for CDK-to-Pulumi migration

• Adds a new skill entry under .agents/skills referencing a local cookbook path.

.agents/skills/pulumi-cdk-to-pulumi

pulumi-componentAdd agent skill pointer for Pulumi components +1/-0

Add agent skill pointer for Pulumi components

• Adds a new skill entry under .agents/skills referencing a local cookbook path.

.agents/skills/pulumi-component

pulumi-escAdd agent skill pointer for Pulumi ESC +1/-0

Add agent skill pointer for Pulumi ESC

• Adds a new skill entry under .agents/skills referencing a local cookbook path.

.agents/skills/pulumi-esc

pulumi-neo-handoffAdd agent skill pointer for Pulumi neo handoff +1/-0

Add agent skill pointer for Pulumi neo handoff

• Adds a new skill entry under .agents/skills referencing a local cookbook path.

.agents/skills/pulumi-neo-handoff

pulumi-terraform-to-pulumiAdd agent skill pointer for Terraform-to-Pulumi migration +1/-0

Add agent skill pointer for Terraform-to-Pulumi migration

• Adds a new skill entry under .agents/skills referencing a local cookbook path.

.agents/skills/pulumi-terraform-to-pulumi

pulumi-upgrade-providerAdd agent skill pointer for Pulumi provider upgrades +1/-0

Add agent skill pointer for Pulumi provider upgrades

• Adds a new skill entry under .agents/skills referencing a local cookbook path.

.agents/skills/pulumi-upgrade-provider

upstream-patchesAdd agent skill pointer for upstream patches +1/-0

Add agent skill pointer for upstream patches

• Adds a new skill entry under .agents/skills referencing a local cookbook path.

.agents/skills/upstream-patches

publish-pypi.ymlRefresh publish-pypi workflow action pins +2/-2

Refresh publish-pypi workflow action pins

• Pins actions/checkout to v7.0.0 SHA and bumps setup-uv to v8.2.0 for the PyPI publish workflow.

.github/workflows/publish-pypi.yml

publish.ymlRefresh publish workflow checkout pin +1/-1

Refresh publish workflow checkout pin

• Pins actions/checkout to v7.0.0 SHA in the main publish workflow.

.github/workflows/publish.yml

python-package.ymlRefresh CI workflow action pins for package checks +4/-4

Refresh CI workflow action pins for package checks

• Pins actions/checkout to v7.0.0 SHA and bumps setup-uv to v8.2.0 in both pre-commit and test matrix jobs.

.github/workflows/python-package.yml

release.ymlRefresh release workflow action pins +2/-2

Refresh release workflow action pins

• Pins actions/checkout to v7.0.0 SHA and bumps softprops/action-gh-release to v3.0.1.

.github/workflows/release.yml

trufflehog-full-scan.ymlBump trufflehog action pin for full scans +2/-2

Bump trufflehog action pin for full scans

• Pins actions/checkout to v7.0.0 SHA and bumps trufflesecurity/trufflehog to v3.95.6 for full-repo scanning.

.github/workflows/trufflehog-full-scan.yml

trufflehog-security.ymlBump trufflehog action pin for security scans +2/-2

Bump trufflehog action pin for security scans

• Pins actions/checkout to v7.0.0 SHA and bumps trufflesecurity/trufflehog to v3.95.6 for secret scanning.

.github/workflows/trufflehog-security.yml

@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: 46e0e51bb2

ℹ️ 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".

@@ -0,0 +1 @@
/Users/alp/.runwaize_skills_cookbook/chef/skills/cloud-run-basics No newline at end of file

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Replace absolute local skill symlinks

When this repo is cloned anywhere other than the original /Users/alp machine, this new symlink and the other new .agents/skills/* symlinks are dangling, so agent skill discovery cannot open the referenced SKILL.md files. Please commit the actual skill directories or use repo-relative links instead of absolute workstation paths.

Useful? React with 👍 / 👎.

@qodo-code-review

Copy link
Copy Markdown

Code Review by Qodo

🐞 Bugs (2) 📘 Rule violations (1) 📜 Skill insights (0)

Context used
✅ Compliance rules (platform): 32 rules

Grey Divider


Action required

1. Absolute-path skill pointers 🐞 Bug ⛨ Security
Description
The PR adds multiple .agents/skills/* entries whose content is an absolute developer-local path
under /Users/alp/..., which will not exist on CI/other machines and leaks a local filesystem path
into the repo. Any tooling that loads these skills will fail to resolve them outside the author’s
workstation.
Code

.agents/skills/cloud-run-basics[1]

+/Users/alp/.runwaize_skills_cookbook/chef/skills/cloud-run-basics
Relevance

⭐⭐ Medium

No historical evidence on .agents/skills absolute-path pointers; likely undesirable but unseen in
repo history.

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
The added .agents/skills/* files contain an absolute /Users/alp/... path, which is
machine-specific and will not resolve in other environments, while also disclosing a local
username/path in-repo.

.agents/skills/cloud-run-basics[1-1]
.agents/skills/provider-upgrade[1-1]
.agents/skills/pulumi-automation-api[1-1]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
Several new `.agents/skills/*` files embed an absolute path like `/Users/alp/...`. This is non-portable and leaks a developer-local path into the repository.

## Issue Context
These one-line files look like symlink targets or path pointers. Absolute paths will break in CI and on other developers’ machines.

## Fix
- Remove these absolute-path entries from the repo, or replace them with:
 - repo-relative symlinks/paths, or
 - checked-in skill content within the repo.
- Ensure the resulting files work in a fresh clone on Linux CI.

## Fix Focus Areas
- .agents/skills/cloud-run-basics[1-1]
- .agents/skills/cloudformation-to-pulumi[1-1]
- .agents/skills/google-cloud-networking-observability[1-1]
- .agents/skills/google-cloud-recipe-auth[1-1]
- .agents/skills/google-cloud-waf-cost-optimization[1-1]
- .agents/skills/google-cloud-waf-operational-excellence[1-1]
- .agents/skills/google-cloud-waf-performance-optimization[1-1]
- .agents/skills/google-cloud-waf-reliability[1-1]
- .agents/skills/google-cloud-waf-security[1-1]
- .agents/skills/package-usage[1-1]
- .agents/skills/provider-upgrade[1-1]
- .agents/skills/pulumi-arm-to-pulumi[1-1]
- .agents/skills/pulumi-automation-api[1-1]
- .agents/skills/pulumi-best-practices[1-1]
- .agents/skills/pulumi-cdk-to-pulumi[1-1]
- .agents/skills/pulumi-component[1-1]
- .agents/skills/pulumi-esc[1-1]
- .agents/skills/pulumi-neo-handoff[1-1]
- .agents/skills/pulumi-terraform-to-pulumi[1-1]
- .agents/skills/pulumi-upgrade-provider[1-1]
- .agents/skills/upstream-patches[1-1]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools



Remediation recommended

2. Retries env import crash 🐞 Bug ☼ Reliability
Description
supervaizer.context evaluates int(os.getenv("SUPERVAIZE_HTTP_MAX_RETRIES")) at import time, so a
non-integer env value raises ValueError and prevents importing the SDK. This is now triggered by a
normal Account import because account.py imports ContextClient unconditionally.
Code

src/supervaizer/context.py[R23-26]

+_sync_httpx_transport = httpx.HTTPTransport(
+    retries=int(os.getenv("SUPERVAIZE_HTTP_MAX_RETRIES", 2))
+)
+_sync_httpx_client = httpx.Client(transport=_sync_httpx_transport)
Relevance

⭐⭐ Medium

Team accepts robustness/error-handling hardening (PR #50), but no direct precedent for env int()
import-time crash.

PR-#50
PR-#65

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
The new module-level HTTPTransport is constructed using int(os.getenv(...)), which can raise
during import; and Account now imports ContextClient, making this import-time failure reachable
via common imports.

src/supervaizer/context.py[23-26]
src/supervaizer/account.py[19-22]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
`src/supervaizer/context.py` parses `SUPERVAIZE_HTTP_MAX_RETRIES` with `int(...)` at module import time. If the environment variable is malformed (e.g. `"two"`), importing `supervaizer.context` (and now `Account`) raises `ValueError` and breaks application startup.

## Issue Context
`Account` now imports `ContextClient`, which imports `supervaizer.context`, so this failure mode can happen even when callers are not using the context feature.

## Fix
- Parse `SUPERVAIZE_HTTP_MAX_RETRIES` defensively:
 - Wrap `int(...)` in `try/except ValueError` and fall back to the default.
 - Optionally log a warning indicating the value was invalid and defaulted.
- (Optional) Factor this into a shared helper so all HTTP clients use consistent parsing.

## Fix Focus Areas
- src/supervaizer/context.py[23-26]
- src/supervaizer/account.py[19-22]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools



Informational

3. Unreleased has ### Tests 📘 Rule violation ⚙ Maintainability
Description
In docs/CHANGELOG.md, the ## [Unreleased] section introduces a ### Tests subsection, but only
### Added, ### Changed, and ### Fixed are allowed. This breaks the changelog structure
expected by compliance tooling and release processes.
Code

docs/CHANGELOG.md[R19-29]

+### Tests
+
+- `tests/test_common.py` — structured JSON log output for API access-denial records
+- `just test`
+
+| Status     | Count |
+| ---------- | ----- |
+| ✅ Passed  | 677   |
+| 🤔 Skipped | 0     |
+| 🔴 Failed  | 0     |
+| ⏱️ in      | 65s   |
Relevance

⭐ Low

Repo already allows extra Unreleased subsections (e.g., “### Security” in PR #42/#44).

PR-#42
PR-#44

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
Rule 792249 restricts ## [Unreleased] subsections to only ### Added, ### Changed, and `###
Fixed. The PR adds a ### Tests heading under ## [Unreleased]` (lines 19-29), violating this
constraint.

Rule 792249: Changelog Unreleased section must only use Added/Changed/Fixed subsections
docs/CHANGELOG.md[13-29]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
`docs/CHANGELOG.md` adds a `### Tests` heading under `## [Unreleased]`, but the Unreleased section is only allowed to contain `### Added`, `### Changed`, and `### Fixed` subsections.

## Issue Context
Compliance requires the Unreleased section headings be restricted to `Added/Changed/Fixed` only; other headings (like `Tests`) must be converted into bullet points under one of the allowed subsections.

## Fix Focus Areas
- docs/CHANGELOG.md[13-30]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


Grey Divider

Qodo Logo

@@ -0,0 +1 @@
/Users/alp/.runwaize_skills_cookbook/chef/skills/cloud-run-basics No newline at end of file

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Action required

2. Absolute-path skill pointers 🐞 Bug ⛨ Security

The PR adds multiple .agents/skills/* entries whose content is an absolute developer-local path
under /Users/alp/..., which will not exist on CI/other machines and leaks a local filesystem path
into the repo. Any tooling that loads these skills will fail to resolve them outside the author’s
workstation.
Agent Prompt
## Issue description
Several new `.agents/skills/*` files embed an absolute path like `/Users/alp/...`. This is non-portable and leaks a developer-local path into the repository.

## Issue Context
These one-line files look like symlink targets or path pointers. Absolute paths will break in CI and on other developers’ machines.

## Fix
- Remove these absolute-path entries from the repo, or replace them with:
  - repo-relative symlinks/paths, or
  - checked-in skill content within the repo.
- Ensure the resulting files work in a fresh clone on Linux CI.

## Fix Focus Areas
- .agents/skills/cloud-run-basics[1-1]
- .agents/skills/cloudformation-to-pulumi[1-1]
- .agents/skills/google-cloud-networking-observability[1-1]
- .agents/skills/google-cloud-recipe-auth[1-1]
- .agents/skills/google-cloud-waf-cost-optimization[1-1]
- .agents/skills/google-cloud-waf-operational-excellence[1-1]
- .agents/skills/google-cloud-waf-performance-optimization[1-1]
- .agents/skills/google-cloud-waf-reliability[1-1]
- .agents/skills/google-cloud-waf-security[1-1]
- .agents/skills/package-usage[1-1]
- .agents/skills/provider-upgrade[1-1]
- .agents/skills/pulumi-arm-to-pulumi[1-1]
- .agents/skills/pulumi-automation-api[1-1]
- .agents/skills/pulumi-best-practices[1-1]
- .agents/skills/pulumi-cdk-to-pulumi[1-1]
- .agents/skills/pulumi-component[1-1]
- .agents/skills/pulumi-esc[1-1]
- .agents/skills/pulumi-neo-handoff[1-1]
- .agents/skills/pulumi-terraform-to-pulumi[1-1]
- .agents/skills/pulumi-upgrade-provider[1-1]
- .agents/skills/upstream-patches[1-1]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

Comment on lines +23 to +26
_sync_httpx_transport = httpx.HTTPTransport(
retries=int(os.getenv("SUPERVAIZE_HTTP_MAX_RETRIES", 2))
)
_sync_httpx_client = httpx.Client(transport=_sync_httpx_transport)

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Remediation recommended

3. Retries env import crash 🐞 Bug ☼ Reliability

supervaizer.context evaluates int(os.getenv("SUPERVAIZE_HTTP_MAX_RETRIES")) at import time, so a
non-integer env value raises ValueError and prevents importing the SDK. This is now triggered by a
normal Account import because account.py imports ContextClient unconditionally.
Agent Prompt
## Issue description
`src/supervaizer/context.py` parses `SUPERVAIZE_HTTP_MAX_RETRIES` with `int(...)` at module import time. If the environment variable is malformed (e.g. `"two"`), importing `supervaizer.context` (and now `Account`) raises `ValueError` and breaks application startup.

## Issue Context
`Account` now imports `ContextClient`, which imports `supervaizer.context`, so this failure mode can happen even when callers are not using the context feature.

## Fix
- Parse `SUPERVAIZE_HTTP_MAX_RETRIES` defensively:
  - Wrap `int(...)` in `try/except ValueError` and fall back to the default.
  - Optionally log a warning indicating the value was invalid and defaulted.
- (Optional) Factor this into a shared helper so all HTTP clients use consistent parsing.

## Fix Focus Areas
- src/supervaizer/context.py[23-26]
- src/supervaizer/account.py[19-22]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

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