Skip to content

Add site map CSV import export - #752

Merged
flesher merged 55 commits into
mainfrom
issue-745
Jul 20, 2026
Merged

flesher merged 55 commits into
mainfrom
issue-745

Conversation

@flesher

@flesher flesher commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

Reviewable diff: +3232/-4 across 13 files (excludes generated, test, and story files).

Summary

This PR adds a Site Map CSV import/export workflow for fleet topology: sites, buildings, racks, and miner placement. Operators can export a deterministic multi-section CSV, edit assignments offline, preview validation results and change summaries, then commit the exact dry-run plan through a token-gated import.

The first shipped write path supports updates to existing site/building/rack layout data, miner placement moves, and rack slot swaps. Site-map CSV v1 is explicitly scoped to existing topology and placement updates: new site/building/rack rows, miner name edits, and remove-omitted delete/unassign workflows return validation errors without a commit token until those write paths are implemented.

How it works

The client calls a new SiteMapService.ExportSiteMapCsv streaming RPC from the Fleet header. The server builds a snapshot from site, building, rack collection, rack-slot, and miner state sources, then emits a BOM-prefixed CSV with SITE, BUILDING, RACK, and MINER sections.

Import starts with a dry run. The server parses the same section format, validates row uniqueness, known miners, read-only miner identity fields, rack/building/site placement consistency, rack slot bounds, rack and building capacity, duplicate desired slots, and conflicts with unchanged current slot occupants. If the CSV omits existing entities, the response asks the user to continue with omitted rows left in place before it returns a commit token. Remove-omitted requests are rejected as unsupported in v1.

Commit replays the exact CSV bytes and omission mode with the dry-run token. The server rejects drift, revalidates, then applies supported changes in one transaction: site/building/rack updates first, miner rack reparenting and site/building cascade, and finally rack slot updates after clearing pending slots so swaps do not trip the unique rack-slot constraint.

Diagrams

flowchart LR
  A["Fleet header"] --> B["useSiteMapCsv hook"]
  B --> C["SiteMapService RPC"]
  C --> D["sitemap handler"]
  D --> E["sitemap domain service"]
  E --> F["site/building stores"]
  E --> G["rack collection store"]
  E --> H["fleet miner snapshots"]
  E --> I["device custom-name store"]
Loading
sequenceDiagram
  participant User
  participant UI as Fleet CSV modal
  participant API as SiteMapService
  participant Domain as SiteMap domain
  participant DB as Stores

  User->>UI: Choose edited CSV
  UI->>API: ImportSiteMapCsv(dry_run=true)
  API->>Domain: Parse and validate
  Domain->>DB: Load current topology snapshot
  Domain-->>API: Errors, omissions, changes, commit token
  API-->>UI: Preview response
  User->>UI: Confirm import
  UI->>API: ImportSiteMapCsv(dry_run=false, token)
  API->>Domain: Revalidate same plan
  Domain->>DB: Apply supported writes in one transaction
  API-->>UI: Applied change summary
Loading

Areas of the code involved

Area / package / file What changed Why it matters for review
proto/sitemap/v1/sitemap.proto Adds SiteMapService, omission modes, validation errors, and change summaries. Defines the client/server contract and dry-run/commit-token shape.
server/internal/domain/sitemap/ Implements CSV export, parsing, validation, diff summaries, supported commit guards, and transactional apply. Core correctness boundary for placement, slot, capacity, read-only, and rename semantics.
server/internal/handlers/sitemap/ Connect handler maps authenticated org context to the domain service. Permission and transport boundary for import/export requests.
server/cmd/fleetd/main.go Registers sitemap service with reflection and the HTTP mux. Makes the RPC reachable in the fleet server.
server/internal/handlers/middleware/rpc_permissions.go Adds coarse RPC permission classification for export/import. Keeps new procedures covered by the middleware registry.
client/src/protoFleet/api/useSiteMapCsv.ts Adds export download and import dry-run/commit API hook. Client API layer, loading guards, auth error handling, and CSV file transfer.
client/src/protoFleet/features/fleetManagement/components/FleetLayout/FleetLayout.tsx Adds right-aligned Fleet-header import/export actions and owns the import modal. User-facing entry point is fleet-level instead of table-toolbar-level.
client/src/protoFleet/features/fleetManagement/components/SiteMapCsvImportModal.tsx Adds file picker, omission choice, validation errors, preview summary, and confirm action. Main operator workflow and failure visibility.
client/vite.config.ts Uses an absolute Rollup input path. Fixes local Vite build resolution for the current workspace layout.
Generated files Adds generated TS and Go sitemap protobuf/connect output. Generated — skip.

Key technical decisions & trade-offs

Decision Alternative
Use a multi-section CSV keyed by existing entity identifiers. A single denormalized row per miner would make site/building/rack-only edits ambiguous.
Require dry-run commit tokens before writes. Applying immediately after upload would risk committing stale previews after topology changes.
Keep miner device_identifier as the identity key and allow miner name edits. Treating name as identity would block useful bulk rename workflows and make matching fragile.
Leave miner serial_number, mac_address, and ip_address read-only on import. Updating those from a topology import would blur placement edits with device identity/network state.
Derive miner site/building from rack or direct building when exported rows omit ancestors. Requiring repeated ancestor columns is noisier and easier to edit inconsistently.
Clear pending rack slots before setting new positions during a move set. Updating slots one-by-one breaks valid swaps on the unique rack slot constraint.
Reject unsupported create/delete/unassign paths during validation. Advertising unimplemented previews would produce commit-token dead ends and misleading destructive-change summaries.

Testing & validation

  • cd server && ../bin/go test -count=1 ./internal/domain/sitemap ./internal/handlers/middleware ./internal/handlers/sitemap ./cmd/fleetd
  • cd client && ../bin/npx tsc --noEmit
  • cd client && ../bin/npx vitest run src/protoFleet/features/fleetManagement/components/FleetLayout/FleetLayout.test.tsx
  • Manual happy-path checks during development covered export, edited CSV preview, miner rack assignment, slot swaps, direct building/site omission behavior, and miner name rename preview/apply.

@flesher
flesher requested a review from a team as a code owner July 15, 2026 20:17
Copilot AI review requested due to automatic review settings July 15, 2026 20:17
@github-actions github-actions Bot added documentation Improvements or additions to documentation javascript Pull requests that update javascript code client server shared labels Jul 15, 2026
@github-actions github-actions Bot added the review-policy: needs-review Managed by the Review Policy workflow. label Jul 15, 2026
@github-actions

github-actions Bot commented Jul 15, 2026

Copy link
Copy Markdown

🔐 Codex Security Review

Note: This is an automated security-focused code review generated by Codex.
It should be used as a supplementary check alongside human review.
False positives are possible - use your judgment.

Scope summary

  • Reviewed pull request diff only (c161fc9a15c30055a30f917a418e9c6354af9baa...6d860cef0d57c880a47c2576773eb9fce6165580, exact PR three-dot diff)
  • Model: gpt-5.5

💡 Click "edited" above to see previous reviews for this PR.


Review Summary

Overall Risk: MEDIUM

Findings

[MEDIUM] Remove-omitted import can race past hidden-resource checks

  • Category: Reliability
  • Location: server/internal/domain/sitemap/service.go:323
  • Description: The remove-omitted path checks omitted sites for curtailment response profiles and infrastructure devices before opening the import transaction and before locking the site rows. A concurrent create can add a response profile or infrastructure device after this count passes; the commit then proceeds to DeleteCurtailmentResponseProfilesBySite and SoftDeleteInfrastructureDevicesBySite inside deleteOmittedSites, bypassing the guard that says site-map CSV v1 cannot remove those hidden resources.
  • Impact: A site-map import can unexpectedly delete newly-created curtailment response profiles or soft-delete infrastructure devices for an omitted site, causing data loss and making the dry-run safety guarantee unreliable under concurrent admin activity.
  • Recommendation: Re-run the hidden-resource impact checks inside RunInTx after locking each omitted site, and abort if any count is nonzero. Alternatively, make the site-map delete path refuse to delete/soft-delete these hidden resource types with conditional writes under the same locks.

Notes

Review was limited to .git/codex-review.diff. I did not find cryptostealing/pool-hijack behavior or raw SQL interpolation in the changed hunks.


Generated by Codex Security Review |
Triggered by: @flesher |
Review workflow run

@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: 6b9a11e360

ℹ️ 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 server/internal/domain/sitemap/service.go
Comment thread server/internal/domain/sitemap/service.go Outdated
Comment thread server/internal/domain/sitemap/service.go Outdated
Comment thread server/internal/domain/sitemap/service.go Outdated
Comment thread server/internal/domain/sitemap/service.go Outdated

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Adds a Site Map CSV import/export workflow spanning new protobuf RPCs, server-side CSV snapshot/validation/apply logic, and ProtoFleet UI entry points (Fleet header actions + import modal) to let operators reconcile fleet topology and miner placement via a deterministic multi-section CSV.

Changes:

  • Introduces sitemap.v1.SiteMapService with export (server-streaming) and token-gated import (dry-run + commit).
  • Implements server domain logic to export CSV, parse/validate uploaded CSV, compute change summaries, and apply supported updates transactionally.
  • Adds ProtoFleet client hook + Fleet header actions + import modal UI to run preview/commit flows.

Reviewed changes

Copilot reviewed 14 out of 17 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
server/internal/handlers/sitemap/handler.go New Connect handler enforcing permissions and delegating to sitemap domain service.
server/internal/handlers/middleware/rpc_permissions.go Registers sitemap RPCs in the procedure-permissions catalog.
server/internal/handlers/middleware/rpc_permissions_test.go Extends contract test coverage to include the new sitemap service.
server/internal/domain/sitemap/service.go Core CSV export/import: snapshot loading, parsing, validation, change planning, and transactional apply.
server/internal/domain/sitemap/service_test.go Unit tests for parsing, planning, validation edge cases (omissions, swaps, read-only fields, capacities).
server/cmd/fleetd/main.go Wires the sitemap domain service + handler into the fleet server mux and reflection allowlist.
proto/sitemap/v1/sitemap.proto Defines the sitemap RPC contract, omission modes, validation errors, and change summaries.
docs/plans/2026-07-14-745-import-export-site-map-csv-plan.md Plan doc describing CSV format, workflow, validation layers, and phased scope.
client/vite.config.ts Adjusts Rollup HTML input resolution using an absolute path.
client/src/protoFleet/features/fleetManagement/components/SiteMapCsvImportModal.tsx New UI modal for CSV upload, omission choice, preview errors/warnings/summary, and commit.
client/src/protoFleet/features/fleetManagement/components/FleetLayout/FleetLayout.tsx Adds Fleet header import/export actions and mounts the import modal.
client/src/protoFleet/features/fleetManagement/components/FleetLayout/FleetLayout.test.tsx Updates unit tests to mock sitemap hook/modal and keep FleetLayout tests stable.
client/src/protoFleet/api/useSiteMapCsv.ts New client hook for exporting and importing sitemap CSV via the generated client.
client/src/protoFleet/api/clients.ts Registers a new generated SiteMapService client in the ProtoFleet API client bundle.
client/src/protoFleet/api/generated/sitemap/v1/sitemap_pb.ts Generated TS protobuf/service descriptors for the new sitemap API (generated — skip).
server/generated/grpc/sitemap/v1/sitemapv1connect/sitemap.connect.go Generated Connect-Go bindings for the new sitemap service (generated — skip).
server/generated/grpc/sitemap/v1/sitemap.pb.go Generated Go protobuf types for the new sitemap API (generated — skip).

Comment thread server/internal/domain/sitemap/service.go Outdated
Comment thread server/internal/domain/sitemap/service.go
Comment thread server/internal/domain/sitemap/service.go
Comment thread server/internal/domain/sitemap/service.go Outdated

@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: 38b0150ef6

ℹ️ 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 server/internal/domain/sitemap/service.go Outdated
Comment thread server/internal/domain/sitemap/service.go Outdated
Comment thread server/internal/domain/sitemap/service.go

@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: d455786a78

ℹ️ 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 server/internal/domain/sitemap/service.go Outdated
Comment thread server/internal/domain/sitemap/service.go Outdated
Comment thread server/internal/domain/sitemap/service.go

@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: 75d3a7c36e

ℹ️ 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 server/internal/domain/sitemap/service.go
Comment thread server/internal/domain/sitemap/service.go Outdated
Comment thread server/internal/domain/sitemap/service.go Outdated

@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: c4793f2bf0

ℹ️ 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 server/internal/domain/sitemap/service.go Outdated
Comment thread server/internal/domain/sitemap/service.go Outdated
Comment thread server/internal/domain/sitemap/service.go Outdated

@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: c65201c11d

ℹ️ 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 server/internal/handlers/sitemap/handler.go Outdated

@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: 892844dd43

ℹ️ 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 server/internal/domain/sitemap/service.go Outdated
Comment thread server/internal/domain/sitemap/service.go Outdated

@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: 39628675cd

ℹ️ 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 server/internal/handlers/sitemap/handler.go
Comment thread server/internal/domain/sitemap/service.go Outdated

@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: 104fa46da1

ℹ️ 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 server/internal/domain/sitemap/service.go Outdated

@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: 24a2852274

ℹ️ 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 server/internal/domain/sitemap/service.go Outdated

@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: 7f1a9edfd2

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

@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: 6a0bf5f4cc

ℹ️ 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 server/internal/domain/sitemap/service.go Outdated

@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: df86a88a86

ℹ️ 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 server/internal/domain/sitemap/service.go

@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: 20db194fad

ℹ️ 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 server/internal/domain/sitemap/service.go Outdated

@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: 7d18add471

ℹ️ 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 server/internal/domain/sitemap/service.go Outdated

@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: 3308b318d8

ℹ️ 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 server/internal/domain/sitemap/service.go Outdated

@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: fba9268828

ℹ️ 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 server/internal/domain/sitemap/service.go Outdated
Comment thread server/internal/domain/sitemap/service.go Outdated
Comment thread server/internal/domain/sitemap/service.go Outdated

@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: 83d6eed984

ℹ️ 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 server/internal/domain/sitemap/service.go
Comment thread server/internal/domain/sitemap/service.go
Comment thread server/internal/domain/sitemap/service.go

@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: 1852edf1f0

ℹ️ 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 server/internal/domain/sitemap/service.go
Comment thread server/internal/domain/sitemap/service.go Outdated

@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: 94e71bd682

ℹ️ 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 server/internal/domain/sitemap/service.go Outdated

@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: 2962581847

ℹ️ 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 server/internal/domain/sitemap/service.go

@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: 6d860cef0d

ℹ️ 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 server/internal/domain/sitemap/service.go
@flesher
flesher merged commit 2fa4ccd into main Jul 20, 2026
54 of 55 checks passed
@flesher
flesher deleted the issue-745 branch July 20, 2026 16:11
@flesher flesher mentioned this pull request Jul 22, 2026
6 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

client documentation Improvements or additions to documentation javascript Pull requests that update javascript code review-policy: needs-review Managed by the Review Policy workflow. server shared

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants