Skip to content

fix(vale): use wrapper, add missing configs, disable noisy rules#7026

Merged
jstirnaman merged 3 commits intomasterfrom
fix/vale-ci-improvements
Apr 1, 2026
Merged

fix(vale): use wrapper, add missing configs, disable noisy rules#7026
jstirnaman merged 3 commits intomasterfrom
fix/vale-ci-improvements

Conversation

@jstirnaman
Copy link
Copy Markdown
Contributor

Summary

  • Switch CI vale-check.sh from direct Docker invocation to .ci/vale/vale.sh wrapper (uses local binary when available, falls back to Docker with pinned version)
  • Add "Install Vale" step to workflow for faster CI runs without Docker overhead
  • Add missing core and clustered product config mappings to get_vale_config() — files in these products were falling through to root .vale.ini, skipping product-specific branding rules
  • Disable high-false-positive style rules (passive voice, weasel words, cliches, first person, future tense) across all 6 Vale configs — these are better handled contextually during content review

Test plan

  • Vale CI workflow runs on this PR and produces results
  • Verify core and clustered files use product-specific configs (check Vale output grouping)
  • Confirm reduced noise in Vale warnings (no passive voice, weasel word, or cliché alerts)

- Switch CI vale-check.sh from direct Docker to .ci/vale/vale.sh wrapper
  (uses local binary when available, falls back to Docker with pinned version)
- Add "Install Vale" step to workflow for faster CI runs without Docker
- Add missing core and clustered product config mappings to get_vale_config()
- Disable high-false-positive style rules (passive voice, weasel words,
  cliches, first person, future tense) across all 6 Vale configs — these
  are better handled contextually by LLMs during content review
- Keep all mechanical rules active (branding, spelling, capitalization,
  date format, repeated words, etc.)
@jstirnaman jstirnaman requested a review from a team as a code owner March 31, 2026 21:01
@jstirnaman jstirnaman requested review from sanderson and removed request for a team March 31, 2026 21:01
@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Mar 31, 2026

Vale Style Check Results

Metric Count
Errors 0
Warnings 38
Suggestions 49
Warnings (38)
File Line Rule Message
.claude/skills/vale-linting/SKILL.md 20 write-good.Passive 'are flagged' may be passive voice. Use active voice if you can.
.claude/skills/vale-linting/SKILL.md 44 write-good.Passive 'is installed' may be passive voice. Use active voice if you can.
.claude/skills/vale-linting/SKILL.md 72 write-good.TooWordy 'multiple' is too wordy.
.claude/skills/vale-linting/SKILL.md 85 write-good.Passive 'are disabled' may be passive voice. Use active voice if you can.
.claude/skills/vale-linting/SKILL.md 113 write-good.TooWordy 'aggregate' is too wordy.
.claude/skills/vale-linting/SKILL.md 113 write-good.TooWordy 'expiration' is too wordy.
.claude/skills/vale-linting/SKILL.md 113 write-good.TooWordy 'multiple' is too wordy.
.claude/skills/vale-linting/SKILL.md 161 write-good.Passive 'is disabled' may be passive voice. Use active voice if you can.
.claude/skills/vale-linting/SKILL.md 161 write-good.Passive 'is enabled' may be passive voice. Use active voice if you can.
.claude/skills/vale-linting/SKILL.md 162 write-good.TooWordy 'Additional' is too wordy.
.claude/skills/vale-linting/SKILL.md 244 write-good.Passive 'is disabled' may be passive voice. Use active voice if you can.
.claude/skills/vale-linting/SKILL.md 275 write-good.TooWordy 'validate' is too wordy.
.claude/skills/vale-linting/SKILL.md 275 write-good.Passive 'were stripped' may be passive voice. Use active voice if you can.
.claude/skills/vale-linting/SKILL.md 337 write-good.Passive 'be flagged' may be passive voice. Use active voice if you can.
.claude/skills/vale-linting/SKILL.md 384 write-good.Passive 'is Flagged' may be passive voice. Use active voice if you can.
.claude/skills/vale-linting/SKILL.md 405 write-good.Passive 'are disabled' may be passive voice. Use active voice if you can.
.claude/skills/vale-linting/SKILL.md 406 write-good.Passive 'are disabled' may be passive voice. Use active voice if you can.
.claude/skills/vale-rule-config/SKILL.md 44 write-good.Weasel 'several' is a weasel word!
.claude/skills/vale-rule-config/SKILL.md 106 write-good.Passive 'is written' may be passive voice. Use active voice if you can.
.claude/skills/vale-rule-config/SKILL.md 110 write-good.Passive 'being written' may be passive voice. Use active voice if you can.

Showing first 20 of 38 warnings.


Check passed

@github-actions github-actions bot added product:v2 InfluxDB v2 (Cloud TSM, OSS) product:v3-distributed InfluxDB 3 Cloud Serverless, Cloud Dedicated, Clustered product:v3-monolith InfluxDB 3 Core and Enterprise (single-node / clusterable) labels Mar 31, 2026
@jstirnaman
Copy link
Copy Markdown
Contributor Author

Auto code review

No issues found. Checked for bugs and CLAUDE.md compliance.

🤖 Generated with Claude Code

- vale-linting: update execution docs (binary-first, Docker fallback),
  expand disabled rules table (4 → 19), add URL limitation section,
  add CI workflow files to Related Files table
- vale-rule-config: add URL limitation note, replace stale product
  config example with cross-reference to vale-linting skill
@jstirnaman jstirnaman merged commit 1e2a703 into master Apr 1, 2026
14 checks passed
@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Apr 1, 2026

Development Plan (preserved by cleanup workflow)

Full plan details from PLAN.md, preserved before automated cleanup:


Plan: Document v1.12.3

Source

  • Project: influxdb-v1.12.3
  • Branch: worktree-influxdb-v1.12.3

Objective

OSS and Enterprise v1.12.3 release is partially documented.
OSS is already released.
Enterprise will become GA tomorrow (2026-03-31) pending No-/Go decision.

Enterprise documentation is not yet published (pending decision).

The following items need to be documented.
Here are the 9 open issues from Devan Benz (@devanbenz) in influxdata/docs-v2. All are related to InfluxDB v1 (Enterprise/OSS 1.12.3):

Milestone: v1.12.3 (release:pending)

# Title Scope Source PR
#6851 Smarter data node selection for backups Enterprise plutonium#4406
#6846 influxd-ctl backup validates -from node exists Enterprise plutonium#4228
#6845 New -e flag on influxd-ctl show-shards Enterprise plutonium#4306
#6844 New rpc-resettable-*-timeout cluster config options Enterprise plutonium#4433
#6843 New -timeout global flag for influxd-ctl Enterprise plutonium#4342
#6842 New influx-meta cleanup-shards command Enterprise plutonium#4345
#6839 CQ diagnostics in /debug/vars Both influxdb#26874
#6838 Running config in /debug/vars Both influxdb#26624
#6837 New time_format query parameter for HTTP API Both influxdb#26596
#6805 SHOW QUERIES displays user Both plutonium#4379
#6803 Reload log level on SIGHUP Enterprise plutonium#4237
#6802 Per-user query response bytes statistic Both influxdb#27188

Outstanding issue (partially covered by #6950):

# Title Scope Source PR
#6713 influxd-ctl backup gzip/bufsize flags Enterprise plutonium#4375

All milestone issues are labeled release:pending. #6713 is assigned to Devan — 3 of 5 flags already in PR #6950; -bufsize and -cpuprofile remain.

Existing PRs

PR Status Covers
#6945 (OSS) Merged Release notes, config opts (https-insecure-certificate, advanced-expiration), FUTURE/PAST LIMIT fix, version bump
#6950 (Enterprise) Open, pending GA Same as OSS + 3 backup compression flags (gzipCompressionLevel, gzipBlockCount, gzipBlockSize), version bump. Already reviewed — merges as-is when Enterprise goes GA.

Work streams

Three deliverables, in order:

  1. Source analysis — Run derive tool from influxdata/docs-tooling to extract implementation details for all 9 issues (especially influx-meta cleanup-shards and new flags/config options)
    influx-meta command definition from source: https://github.com/influxdata/plutonium/blob/d5e4c142764e5617c1b137b7dd6b18cf4bb62811/cmd/influx-meta/cmd/root.go#L39
  2. New Enterprise follow-up PR — All 9 issues' Enterprise-side docs (6 Enterprise-only + Enterprise side of 3 shared features). Opens after feat(enterprise): InfluxDB Enterprise v1.12.3 release #6950 merges.
  3. New OSS PR — The 3 shared features' OSS-side docs (time_format, CQ diagnostics, config in /debug/vars)

Tasks

0. Source analysis (prerequisite)

1. Enterprise follow-up PR

Enterprise tools/influxd-ctl/ updates

Enterprise administration/configure/ updates

New Enterprise page

Enterprise tools/api.md updates (shared features, Enterprise side)

Enterprise query language updates

Enterprise release notes

  • Update release-notes.md to cover features from all issues

2. OSS PR

OSS tools/api.md updates (shared features, OSS side)

OSS query language updates

OSS release notes

  • Update release-notes.md if shared features aren't already listed

Key file paths

File Issues
content/enterprise_influxdb/v1/tools/influxd-ctl/_index.md #6843
content/enterprise_influxdb/v1/tools/influxd-ctl/backup.md #6846, #6851, #6713
content/enterprise_influxdb/v1/tools/influxd-ctl/show-shards.md #6845
content/enterprise_influxdb/v1/administration/configure/config-data-nodes.md #6844, #6803
content/enterprise_influxdb/v1/tools/api.md #6837, #6838, #6839, #6802
content/enterprise_influxdb/v1/query_language/ (TBD) #6805
content/enterprise_influxdb/v1/about-the-project/release-notes.md all
content/influxdb/v1/tools/api.md #6837, #6838, #6839, #6802
content/influxdb/v1/query_language/ (TBD) #6805
content/influxdb/v1/about_the_project/release-notes.md #6837, #6838, #6839, #6802, #6805
TBD (new page for influx-meta cleanup-shards) #6842

Source Analysis Results

Each issue below includes the docs-v2 issue description, the source PR, and corroboration against the v1.12.3 source code.


#6846influxd-ctl backup validates -from node exists

Docs issue: influxd-ctl backup now validates that the data node specified with -from exists in the cluster before starting the backup. Previously, specifying a non-existent node could lead to confusing errors. Now the command fails immediately with: data node "<addr>" does not exist. Enterprise 1.12.3+.

Source PR: plutonium#4228 (cherry-picked as #4319, merged 2025-09-30)
Files: cmd/influxd-ctl/backup/command.go, cmd/integration_backup_test.go

Corroboration: ✅ Confirmed in cmd/influxd-ctl/backup/command.go:610-621. The Init() method iterates cmd.nodes checking node.TCPHost == cmd.ca.Addr. Error format matches: fmt.Errorf("data node %q does not exist", cmd.ca.Addr).

Additional context: PR #4406 ("smarter data node selection", cherry-picked as #4412, merged 2026-02-17) builds on this — it adds fallback logic when the -from node doesn't own the shard, preferring other owners sorted by recency.


#6845 — New -e flag on influxd-ctl show-shards

Docs issue: A new -e flag has been added to influxd-ctl show-shards. By default, expired shards are filtered out. When -e is passed, expired shards are included. Example: influxd-ctl show-shards -e. Enterprise 1.12.3+.

Source PR: plutonium#4306 (cherry-picked as #4338, merged 2025-10-06)
Files: cmd/influxd-ctl/show/shards.go, meta/control/client.go, meta/control/client_internal_test.go

Corroboration: ✅ Confirmed in cmd/influxd-ctl/show/shards.go:46:

fs.BoolVar(&showExpiredShards, "e", false, "includes expired shards in display")

Passed to c.ShowShards(verbose, metadataConsistency, showExpiredShards) at line 58.


#6844 — New cluster config timeout options ⚠️ RENAMED

Docs issue: Two new [cluster] config options: storage-read-timeout (default "15m") and storage-write-timeout (default "15m"). Read/write inactivity timeouts for Storage API RPC operations. Resettable on each operation. Clamped to shard-reader-timeout/shard-writer-timeout when non-zero. Set to "0" to disable. Enterprise 1.12.3+.

Source PRs:

  1. plutonium#4398 (cherry-picked as #4411, merged 2026-02-12): Added StorageReadTimeout/StorageWriteTimeout with TOML keys storage-read-timeout/storage-write-timeout and clamping via NormalizeStorageTimeouts().
    Files: cluster/config.go, cluster/service.go, cluster/shard_mapper.go, cluster/storage_timeout_test.go, cmd/influxd/run/server.go, etc/config.sample.toml
    Context: Fixed yamux stream pile-up during flux queries across nodes (EAR#6292).
  2. plutonium#4433 (cherry-picked as #4434, merged 2026-03-02): Renamed storage-*-timeoutrpc-resettable-*-timeout, removed clamping, broadened scope from Storage API to all incoming RPC connections.
    Source issue: plutonium#4418

Corroboration: ⚠️ Issue description is stale — names and behavior changed after filing.

Actual TOML config keys in v1.12.3:

Config key Type Default Section Description
rpc-resettable-read-timeout duration "15m" [cluster] Read inactivity timeout for incoming RPC connections. Resets on each read. Set to "0" to disable.
rpc-resettable-write-timeout duration "15m" [cluster] Write inactivity timeout for incoming RPC connections. Resets on each write. Set to "0" to disable.

Discrepancies from issue description:

  1. Names changed: storage-read-timeoutrpc-resettable-read-timeout, storage-write-timeoutrpc-resettable-write-timeout
  2. Clamping removed: no longer clamped to shard-reader-timeout/shard-writer-timeout
  3. Scope broadened: applies to all incoming RPC connections, not just Storage API

Source: cluster/config.go:55-63, etc/config.sample.toml


#6843 — New -timeout global flag for influxd-ctl

Docs issue: A new -timeout <duration> global flag for influxd-ctl. Overrides the default 10-second timeout for all operations. Example: influxd-ctl -timeout 30s show-shards. Enterprise 1.12.3+.

Source PR: plutonium#4342 (cherry-picked as #4393, merged 2026-01-02)
Files: cmd/influxd-ctl/config/config.go, cmd/influxd-ctl/main.go, cmd/influxd-ctl/show/node_test.go, cmd/integration_restore_test.go, cmd/integration_timeout_test.go, cmd/testhelper/integration.go, meta/control/client.go

Corroboration: ✅ Confirmed in cmd/influxd-ctl/main.go:101:

flag.DurationVar(&cmdConfig.Timeout, "timeout", 10*time.Second, "Override default timeout of 10s")

Global flag defined before subcommand parsing. Stored in cmdConfig.Timeout and passed to all subcommands.


#6842 — New influx-meta cleanup-shards command

Docs issue: A new influx-meta cleanup-shards command to clean up shards and shard groups in the metadata of a live cluster. Removes shards with no owners, removes empty shard groups, displays summary for confirmation, fails safely if metadata is modified while running. Enterprise 1.12.3+.

Source PR: plutonium#4345 (merged 2025-10-24)
Files: cmd/influx-meta/cmd/cleanupshards.go, cmd/influx-meta/cmd/cleanupshards_test.go, cmd/influx-meta/cmd/mockgen/cleanupshards_mock.go

Corroboration: ✅ All four behaviors from the issue confirmed in source:

  1. Shards with no owners removed: slices.DeleteFunc() filtering on owner count (cleanupshards.go:170-234)
  2. Empty shard groups removed: after orphan shard removal, groups with no shards are removed
  3. Summary displayed: tab-separated table with ID, Database, RP, Shard Group, Start, End
  4. Safe failure: VerifyClusterDataUnchanged() checks metadata twice using google/go-cmp deep comparison

influx-meta binary context: Existing binary at cmd/influx-meta/ with 9 subcommands:
import, export, make-node-passive, convert, cleanup-shards, renumber-shard-groups, set-shard-group, fix-shard-owners, make-node-active

Root description: "Export and edit meta data in a live InfluxDB 1.x cluster. Use with GREAT caution."

Global flags (inherited by all subcommands):

Flag Type Default Description
--host string localhost:8091 address:port of meta node
--config string $HOME/.influx-meta.yaml config file path

Prerequisites (from source code comments): No concurrent metadata-modifying operations (disable anti-entropy, stop influxd-ctl ops). Check shard end times with SHOW SHARDS — ensure no shards within 30 min of end time.

Page structure decision: influx-meta currently has no documentation pages. Need new page(s) — at minimum content/enterprise_influxdb/v1/tools/influx-meta/cleanup-shards.md.


#6839 — CQ diagnostics in /debug/vars

Docs issue: /debug/vars now includes CQ diagnostic information under a "cq" key. Aids monitoring and troubleshooting CQ execution. OSS and Enterprise 1.12.3+.

Source PR: influxdb#26874 (merged 2025-10-03)
Files: cmd/influxd/run/server.go, monitor/service.go, monitor/service_test.go, services/continuous_querier/service.go, services/httpd/handler.go

Corroboration: ✅ Confirmed. The PR body shows the exact output format:

"cq": {
  "queryFail": 0,
  "queryOk": 2
}

Clarification: The issue says "diagnostics" but the implementation uses the statistics interface, not Diagnostics() (which returns empty — service.go:175-177). The CQ Statistics() method (service.go:162-171) returns a models.Statistic with name "cq" containing queryOk and queryFail counters. These are rendered under the statistics section of /debug/vars.

The distinction matters for docs: this data appears in the statistics section of the response, not the diagnostics section. The keys are queryOk (camelCase) and queryFail (camelCase).


#6838 — Running configuration in /debug/vars

Docs issue: /debug/vars now includes a "config" key containing the running server configuration. Useful for remote diagnostics without direct config file access. toml.Size → integers (bytes); toml.Duration → human-readable duration strings. OSS and Enterprise 1.12.3+.

Source PR: influxdb#26624 (merged 2025-08-20)
Files: cmd/influxd/run/server.go, monitor/service.go, monitor/service_test.go, services/httpd/handler.go, tsdb/config.go

Corroboration: ✅ Confirmed. The PR body shows the exact output structure:

"config": {
  "aggressive-points-per-block": 10000,
  "cache-max-memory-size": 1073741824,
  "cache-snapshot-memory-size": 26214400,
  "cache-snapshot-write-cold-duration": "10m0s",
  "compact-full-write-cold-duration": "4h0m0s",
  "compact-throughput": 50331648,
  "compact-throughput-burst": 50331648,
  "dir": "/home/foo/.influxdb/data",
  "max-concurrent-compactions": 0,
  "max-index-log-file-size": 1048576,
  "max-series-per-database": 1000000,
  "max-values-per-tag": 100000,
  "series-file-max-concurrent-compactions": 0,
  "series-id-set-cache-size": 100,
  "strict-error-handling": false,
  "wal-dir": "/home/foo/.influxdb/wal",
  "wal-fsync-delay": "0s"
}

Registered via m.RegisterDiagnosticsClient("config", m.TSDBConfig) in monitor/service.go:164-165. Type conversions in services/httpd/handler.go:2701-2723.

Note for Enterprise: The Enterprise [cluster] config also exposes its fields via its own Diagnostics() method (cluster/config.go:138-159), including dial-timeout, pool-max-idle-streams, shard-reader-timeout, rpc-resettable-*-timeout, cluster-tracing, etc.


#6837 — New time_format query parameter

Docs issue: A new time_format query parameter on /query. Accepted values: rfc3339, epoch (default: epoch). rfc3339 returns timestamps as RFC3339Nano strings. epoch preserves existing behavior with precision parameter. Invalid values return 400 Bad Request. OSS and Enterprise 1.12.3+.

Source PR: influxdb#26596 (merged 2025-07-10)
Files: services/httpd/handler.go, services/httpd/handler_test.go

Corroboration: ✅ All four points from the issue confirmed:

  1. Accepted values: rfc3339, epochhandler.go:635-638 defines timeFormats := []string{"rfc3339", "epoch"}
  2. Default: epochhandler.go:641: if timeFormat == "" { timeFormat = "epoch" }
  3. RFC3339Nano output: handler.go:809-812 calls convertToTimeFormat(r, time.RFC3339Nano)
  4. 400 on invalid: handler.go:643-644: "Time format must be one of the following: rfc3339,epoch"

Additional detail from source: When time_format=epoch, the existing epoch precision parameter (u, ms, s, m, h) continues to work via convertToEpoch(r, epoch) at line 807-808.

Endpoints: GET /query (line 200), POST /query (line 204).


#6713 — Document influxd-ctl backup changes

Docs issue: Document new flags for influxd-ctl backup: gzipCompressionLevel, cpuprofile, bufsize, gzipBlockCount, gzipBlockSize. Include performance characteristics for gzipCompressionLevel. Assigned to @devanbenz.

Source PR: plutonium#4375 (cherry-picked as #4400, merged 2026-01-07)
Files: cluster/config.go, cluster/service.go, cmd/influxd-ctl/backup/command.go, etc/config.sample.toml

Corroboration: ✅ All 5 flags confirmed in cmd/influxd-ctl/backup/command.go:170-180:

Flag Type Default Description In #6950?
-gzipCompressionLevel string "default" Compression level: default, full, speedy, none ✅ Yes
-gzipBlockCount int runtime.GOMAXPROCS(0) Concurrent compression blocks. Recommended: 1-2x CPU cores ✅ Yes
-gzipBlockSize int 1048576 (1 MB) Block size for gzip. Recommended: >1 MB for performance ✅ Yes
-bufsize uint64 1048576 (1 MB) Buffer size for writing gzip files ❌ Not in #6950
-cpuprofile string "" Write CPU profile to file ❌ Not in #6950

Validation: gzipBlockSize > 0, gzipBlockCount > 0 (command.go:245-251).


#6851 — Smarter data node selection for backups

Docs issue: When backing up a shard, skip copies with zero bytes and select the most recently written copy first. Keep trying shard copies from owning nodes until success or no more copies available. New -staleness-threshold flag: during incremental backups, skip shards whose last write time is within this duration from the last backup. Defaults to cache-snapshot-write-cold-duration (currently 10 minutes). Enterprise 1.12.3+.

Source PR: plutonium#4406 (cherry-picked as #4412, merged 2026-02-17)
Files: cmd/influxd-ctl/backup/command.go, cmd/influxd-ctl/backup/command_test.go, cmd/integration_backup_test.go

Corroboration: ✅ Confirmed in cmd/influxd-ctl/backup/command.go:

New flag (line 181):

fs.DurationVar(&ca.StalenessThreshold, "staleness-threshold", DefaultStalenessThreshold,
  "For incremental backups, shards within this duration of the existing backup are considered current and skipped.")
Flag Type Default Description
-staleness-threshold duration tsdb.DefaultCacheSnapshotWriteColdDuration (10m) For incremental backups, skip shards modified within this duration of the existing backup

Validation: must be non-negative (line 253).

Behavior details from source:

  1. Zero-byte filtering (line 914): slices.DeleteFunc(allSources, func(si SourceInfo) bool { return si.Size == 0 }) — copies with zero bytes are skipped
  2. Recency sorting (line 948): sources sorted by Modified time descending — most recently written copy tried first
  3. Staleness check (line 928/972-984): IsShardBackupCurrent() returns true when the backup time + staleness threshold is after the shard's modification time AND the backup is at least as large as the shard
  4. Fallback (line 935): if the most recent copy is current, stale copies (modified before backup time) are filtered, and remaining copies are tried in recency order

#6805 — SHOW QUERIES displays user

Docs issue: The user is now printed for each query shown with SHOW QUERIES. Assists organizations sharing a single InfluxDB instance to attribute queries for performance analysis or debugging. OSS and Enterprise 1.12.3+.

Source PR: plutonium#4379 (merged 2025-11-20)
Files: cluster/statement_executor.go, cmd/integration_show_queries_test.go, rpc/rpc.go
Related OSS PRs: influxdb#26980

Corroboration: ✅ Confirmed in both repos.

OSS columns (query/task_manager.go:34):

qid | query | database | duration | status | user

Enterprise columns (cluster/statement_executor.go:93):

qid | node_id | tcp_host | query | database | duration | status | user

The user column is the last column in both. Enterprise adds node_id and tcp_host columns (positions 2 and 3) compared to OSS.

The user value comes from q.User in the query info. For unauthenticated queries, this will be an empty string.

Note: Enterprise's implementation in cluster/statement_executor.go fans out ShowQueriesRequest RPCs to all data nodes and aggregates results. The User field is propagated through rpc/rpc.go.


#6803 — Reload log level on SIGHUP

Docs issue: The log level can now be changed without stopping the node by sending SIGHUP. Very helpful for debugging without rebooting data nodes. Enterprise only, not OSS.

Source PR: plutonium#4237 (merged 2025-05-06)
Files: cmd/influxd/run/command.go, cmd/influxd/run/command_test.go, cmd/influxd/run/config.go, cmd/influxd/run/config_test.go

Corroboration: ✅ Confirmed Enterprise-only. No SIGHUP handling in OSS cmd/influxd/run/.

SIGHUP handler (cmd/influxd/run/command.go:213-246):

  1. Listens for syscall.SIGHUP via signal.Notify
  2. Reloads the full config from the config file path
  3. Reloads TLS managers (certificates)
  4. Reloads entitlements (license)
  5. Reloads anti-entropy service (closes and re-opens)
  6. Dynamically changes log level: config.Logging.Level.SetLevel(reloadedConfig.Logging.Level.Level())

Workflow: Edit the config file's [logging] section to change level, then send SIGHUP to the data node process:

kill -SIGHUP <pid>

Log message on receipt: "Received SIGHUP. Attempting to reload licence information and anti-entropy configuration."
Log message on level change: "configured logger" with format and level fields.

What is reloaded on SIGHUP (beyond log level):

  • TLS certificates (cluster inter-node TLS)
  • Entitlements/license
  • Anti-entropy service configuration

#6802 — Per-user query response bytes statistic

Docs issue: Admins can now see how many bytes each user has queried. Available in /debug/vars, SHOW STATS, and _internal database. OSS and Enterprise 1.12.3+.

Source PR: influxdb#27188 (merged 2026-02-06)
Files: services/httpd/config.go, services/httpd/handler.go, services/httpd/handler_test.go, services/httpd/service.go, pkg/data/gensyncmap/gensyncmap.go

Corroboration: ✅ Confirmed in services/httpd/:

Configuration (config.go:68):

Config key Type Default Env var Section
user-query-bytes-enabled bool false INFLUXDB_HTTP_USER_QUERY_BYTES_ENABLED [http]

Statistics structure (handler.go:484-498, service.go:51-56):

  • Measurement name: userquerybytes
  • Tag: user (tag key from StatUserTagKey = "user")
  • Tag value for unauthenticated: (anonymous) (from StatAnonymousUser)
  • Field: userQueryRespBytes (from statUserQueryRespBytes)
  • Additional inherited tags: bind (HTTP bind address)

Example output (from PR):

> SHOW STATS FOR 'userquerybytes'
name: userquerybytes
tags: bind=:8086, user=FRED
userQueryRespBytes
------------------
9009874

_internal database schema:

> SELECT * FROM userquerybytes
name: userquerybytes
time                bind  hostname    user userQueryRespBytes
----                ----  --------    ---- ------------------
1770405340000000000 :8086 myhost      FRED 476

Visibility in /debug/vars: Only appears when user-query-bytes-enabled is true AND at least one user has made a query. Admin-only when pprof-auth-enabled is true.


PR #6950 link check fixes

PR link check found 28 broken fragment links (first run) + 13 additional (second run). All resolved.

Fixed (in this branch, first pass)

Broken link Fix File
config-data-nodes/#https-insecure-certificate Added #### https-insecure-certificate heading to [cluster] section config-data-nodes.md
config-data-nodes/#https-insecure-certificate-1 Added #### https-insecure-certificate heading to [http] section (Hugo generates -1 suffix) config-data-nodes.md
config-data-nodes/#advanced-expiration Added #### advanced-expiration heading to [tls] section config-data-nodes.md
backup/#backup-compression Added -gzipBlockCount, -gzipBlockSize, -gzipCompressionLevel to flags table; changed release notes link to backup/#flags backup.md, release-notes.md

Fixed (second pass — CI run #23826485679)

Broken link Fix File
github.com/influxdb/influxdb/issues/4275 (404) Wrong GitHub org: influxdbinfluxdata manage-database.md (enterprise + OSS)
wiki.mozilla.org/...#Modern_compatibility (fragment gone) Removed #Modern_compatibility fragment config.md (OSS)
config-data-nodes/#pprof-enabled-1 Only one pprof-enabled heading exists → #pprof-enabled release-notes.md
authentication_and_authorization/#authenticate-requests Old page is now an alias → rewrote to configure/security/authentication/ query_language/_index.md
authentication_and_authorization/#user-types-and-privileges manage/users-and-permissions/authorization-influxql/#non-admin-users query_language/_index.md
authentication_and_authorization/#user-management-commands manage/users-and-permissions/authorization-influxql/#user-management-commands query_language/_index.md
backup-and-restore/#example Heading is "Example: export and import..." → #example-export-and-import-for-disaster-recovery backup-and-restore.md
backup-and-restore/#perform-a-metastore-only-backup Heading says "metadata" not "metastore" → #perform-a-metadata-only-backup backup-and-restore.md
backup-and-restore/#restore-from-a-full-backup Heading is "Restore from a -full backup" → #restore-from-a--full-backup backup-and-restore.md
replacing-nodes/#replace-a-data-node-in-an-influxdb-enterprise-cluster Heading uses plural "nodes" → #replace-data-nodes-in-an-influxdb-enterprise-cluster replacing-nodes.md
replacing-nodes/#31-kill-the-meta-process-on-the-leader-node Heading 3.1 - produced triple-hyphen slug; changed heading to 3.1. format replacing-nodes.md
replacing-nodes/#32-remove-and-replace-the-old-leader-node Same: 3.2 -3.2. format replacing-nodes.md
replacing-nodes/#2-1-provision-a-new-meta-node Hugo removes . without hyphen → #21-provision-a-new-meta-node replacing-nodes.md

Also fixed (pre-existing broken links, all resolved)

Old path /administration/configuration/ (should be /configure/config-data-nodes/) FIXED

Source: release-notes.md (old release entries) — paths updated to /configure/config-data-nodes/.

Old path /administration/config-data-nodes (missing /configure/) FIXED

All occurrences in upgrading.md, replacing-nodes.md, config-meta-nodes.md updated to /configure/config-data-nodes/ with correct fragments.

Old path /administration/config-meta-nodes + default value suffix FIXED

influxd-ctl/_index.md updated to configure/config-meta-nodes/#auth-enabled.

Fragment includes default value FIXED

  • release-notes.md: #termination-query-log#termination-query-log--false; #max-values-per-tag-100000#max-values-per-tag

Self-reference #meta-internal-shared-secret in config-meta-nodes.md FIXED

Changed to #internal-shared-secret (2 occurrences).

Missing/wrong headings in spec.md FIXED

  • Removed ToC entry for non-existent #query-engine-internals
  • #execution-time#execution_time; #planning-time#planning_time
  • #understanding-iterators / #understanding-cursors → replaced with links to existing #iterator-type / #cursor-type sections

Redirected/wrong paths FIXED

  • authentication_and_authorization/#set-up-authenticationconfigure/security/authentication/#enable-authentication (in tools/api.md, query_language/_index.md)
  • query_management/#list-currently-running-queries-with-show-queries → added influxql_query_management/ to path (in spec.md)
  • influxql_query_management.md: fixed coordinator link text → [cluster], path → configure/config-data-nodes/#cluster

Glossary and misc FIXED

  • glossary/#replication-factor#replication-factor-rf in 10 enterprise files (OSS refs left as-is — correct there)
  • backup-and-restore/#restore#restore-utility in migration.md
  • Mozilla wiki #Modern_compatibility fragment removed from external link in config-data-nodes.md

Notes

Cleanup

jstirnaman added a commit that referenced this pull request Apr 9, 2026
…aster (#7068)

* fix(vale): add SQL/InfluxQL keywords to Acronyms rule exceptions (#7023)

* fix(vale): add SQL/InfluxQL keywords to Acronyms rule exceptions

The Acronyms rule matches any 3-5 uppercase letter word and suggests
spelling it out. This causes high-noise, low-signal warnings for
standard SQL/InfluxQL keywords (FROM, JOIN, WHERE, GROUP, ORDER, etc.)
that are conventionally written in uppercase in queries and prose.

Add ~90 common SQL/InfluxQL keywords to the exceptions list so they
stop triggering the "spell out acronym" suggestion.

https://claude.ai/code/session_01JZPd1PjSCLJW5NrT2AbSTF

* fix(vale): address Copilot review on Acronyms exceptions

- Quote YAML reserved words: "NULL", "ON", "TRUE" to prevent parsing
  as null/boolean
- Remove BY (2 chars, outside the 3-5 char rule pattern)
- Add NAME alongside NAMES for InfluxQL coverage

https://claude.ai/code/session_01JZPd1PjSCLJW5NrT2AbSTF

---------

Co-authored-by: Claude <noreply@anthropic.com>

* fix(ci): Prevent workflow re-runs from overwriting successful PR check status (#7025)

* Initial plan

* fix(ci): Prevent workflow re-runs from overwriting successful PR check status

Add check-existing-success job to doc-review, auto-label, and pr-preview
workflows. When a re-run (attempt > 1) detects that successful check runs
already exist for the same commit from a different workflow run, it aborts
to prevent "skipped" status from overwriting "success" in the PR Checks UI.

Agent-Logs-Url: https://github.com/influxdata/docs-v2/sessions/8124b791-ebd6-4cc7-bee9-17493a141d94

Co-authored-by: jstirnaman <212227+jstirnaman@users.noreply.github.com>

* fix(ci): Only abort re-runs that would skip jobs, not those that would execute

Refined the fix to only abort re-runs when:
1. This is a re-run (attempt > 1)
2. The job conditions would cause jobs to SKIP (not actually execute)
3. Successful check runs already exist for this commit

Re-runs that would actually execute jobs (and potentially fail) are allowed
to proceed because failures are important information.

Agent-Logs-Url: https://github.com/influxdata/docs-v2/sessions/8124b791-ebd6-4cc7-bee9-17493a141d94

Co-authored-by: jstirnaman <212227+jstirnaman@users.noreply.github.com>

* fix(ci): Include check job names in successful run detection

Address code review feedback by including the check job names in the
list of jobs to check for successful runs, ensuring consistency.

Agent-Logs-Url: https://github.com/influxdata/docs-v2/sessions/8124b791-ebd6-4cc7-bee9-17493a141d94

Co-authored-by: jstirnaman <212227+jstirnaman@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: jstirnaman <212227+jstirnaman@users.noreply.github.com>

* feat(enterprise): InfluxDB Enterprise v1.12.3 release (#6950)

* Revert "InfluxDB 1.12.3 release (#6872)"

This reverts commit 14e021a.

* fix(v1): split v1.12.3 release — publish OSS, defer Enterprise pending GA

Revert the combined InfluxDB 1.12.3 release commit and re-add only
OSS v1.12.3 documentation. Enterprise v1.12.3 docs will be published
in a separate PR once the release artifact is GA in the portal.

Also adds FUTURE/PAST LIMIT ordering caution for users on versions
prior to v1.12.3 (from copilot/restore-ordering-warning-influxql).

* chore: document separate OSS/Enterprise PR workflow for v1 releases

Update the influxdb1-tech-writer agent, v1 release PR template, and
prepare-release-notes command to enforce the practice of always creating
separate PRs for OSS v1 and Enterprise v1 releases. Enterprise must wait
for GA in the portal before merging.

* fix(enterprise): restore FUTURE/PAST LIMIT grammar productions in InfluxQL spec

The revert of the combined v1.12.3 commit removed grammar production
definitions (retention_future_limit, retention_past_limit) that document
existing InfluxQL syntax, not v1.12.3-specific features. Restore them
so the grammar is complete.

* Revert "fix(enterprise): restore FUTURE/PAST LIMIT grammar productions in InfluxQL spec"

This reverts commit c497f13.

* fix(v1): remove incorrect FUTURE/PAST LIMIT ordering caution from OSS spec

The caution stated that prior to v1.12.3, PAST LIMIT must appear before
FUTURE LIMIT. This is incorrect — the correct syntax has always been
FUTURE LIMIT before PAST LIMIT. The v1.12.3 fix addresses Enterprise
meta-node recording of limits, not parser syntax order.

* fix(enterprise): correct FUTURE/PAST LIMIT documentation for v1.12.2 (closes #6590)

The correct InfluxQL syntax has always been FUTURE LIMIT before PAST LIMIT.
The old docs incorrectly showed PAST before FUTURE in grammar definitions,
examples, and section ordering. Also fixes a broken glossary anchor link
for replication factor and adds missing production rule definitions to the
spec.

* style(enterprise): clean up InfluxQL spec formatting and fix broken links

- Update frontmatter: improve description, remove v2 alias, add related links
- Replace absolute-URL TOC with relative-anchor TOC
- Convert legacy `> **NOTE:**` callouts to `> [!Note]` format
- Fix h5 headings in EXPLAIN ANALYZE section to h4
- Fix broken anchor links (#execution-time, #planning-time → #execution_time, #planning_time)
- Fix cross-reference links in EXPLAIN ANALYZE to use absolute paths
- Fix typos: "keywords" → "keyword", "retention polices" → "retention policies"
- Rewrite KILL QUERY section with proper Syntax header and combined example block
- Fix SHOW STATS headings: remove backtick-wrapping from section headings
- Add [with_key_clause] to SHOW TAG KEYS grammar and add example
- Remove trailing whitespace in SHOW SHARDS section
- Fix 3 broken cross-references in config-meta-nodes.md to use correct
  /enterprise_influxdb/v1/administration/configure/config-data-nodes/ path

* feat(enterprise): InfluxDB Enterprise v1.12.3 release documentation

Add Enterprise v1.12.3 documentation including:
- Release notes with new features and bug fixes
- Configuration options: https-insecure-certificate, advanced-expiration
- Backup compression flags (gzipCompressionLevel, gzipBlockCount, gzipBlockSize)
- Add FUTURE/PAST LIMIT support to ALTER RETENTION POLICY (fixed in v1.12.3)

Merge when Enterprise v1.12.3 is GA in the InfluxData portal.

* fix(enterprise): correct FUTURE/PAST LIMIT documentation for v1.12.2 (closes #6590) (#6947)

The correct InfluxQL syntax has always been FUTURE LIMIT before PAST LIMIT.
The old docs incorrectly showed PAST before FUTURE in grammar definitions,
examples, and section ordering. Also fixes a broken glossary anchor link
for replication factor and adds missing production rule definitions to the
spec.

* style(enterprise): clean up InfluxQL spec and fix broken config links (#6949)

* fix(enterprise): correct FUTURE/PAST LIMIT documentation for v1.12.2 (closes #6590)

The correct InfluxQL syntax has always been FUTURE LIMIT before PAST LIMIT.
The old docs incorrectly showed PAST before FUTURE in grammar definitions,
examples, and section ordering. Also fixes a broken glossary anchor link
for replication factor and adds missing production rule definitions to the
spec.

* style(enterprise): clean up InfluxQL spec formatting and fix broken links

- Update frontmatter: improve description, remove v2 alias, add related links
- Replace absolute-URL TOC with relative-anchor TOC
- Convert legacy `> **NOTE:**` callouts to `> [!Note]` format
- Fix h5 headings in EXPLAIN ANALYZE section to h4
- Fix broken anchor links (#execution-time, #planning-time → #execution_time, #planning_time)
- Fix cross-reference links in EXPLAIN ANALYZE to use absolute paths
- Fix typos: "keywords" → "keyword", "retention polices" → "retention policies"
- Rewrite KILL QUERY section with proper Syntax header and combined example block
- Fix SHOW STATS headings: remove backtick-wrapping from section headings
- Add [with_key_clause] to SHOW TAG KEYS grammar and add example
- Remove trailing whitespace in SHOW SHARDS section
- Fix 3 broken cross-references in config-meta-nodes.md to use correct
  /enterprise_influxdb/v1/administration/configure/config-data-nodes/ path

* feat(enterprise): document influxd-ctl backup improvements (#7021)

* chore: update v1.12.3 documentation plan with source analysis

* feat(enterprise): document influxd-ctl backup improvements

Add v1.12.3 backup improvements:
- `-from` now validates that the node exists in the cluster (#6846)
- Smarter node selection: skip zero-byte copies, prefer most recent
  writes, fall back to other owners (#6851)
- New `-staleness-threshold` flag for incremental backups (#6851)
- New `-bufsize` and `-cpuprofile` flags (#6713)

closes #6846
closes #6851
closes #6713

* fix: correct grammar in backup flags table

* Update content/enterprise_influxdb/v1/tools/influxd-ctl/backup.md

* feat(v1): document time_format query parameter (#7011)

* feat(v1): document time_format query parameter for /query endpoint

Add the new `time_format` query parameter to the /query HTTP endpoint
documentation for both InfluxDB OSS v1 and Enterprise v1. This parameter
lets users choose between epoch (default) and RFC3339Nano timestamp
formats in query responses.

closes #6837

* style(v1): fix time_format example formatting

Separate curl commands from output, add metadata version tag,
add parameter bullets, remove $ prompt, use json code fence.

* fix(v1): metadata tag on time_format example, not RFC3339 output

The metadata version tag should identify the new parameter, not the
output format which was already available.

* fix(v1): link time_format changelog entry to new docs section

* feat(v1): document /debug/vars config and CQ statistics (#7013)

* chore: update v1.12.3 documentation plan with source analysis

* feat(v1): document running config in /debug/vars endpoint

Add documentation for the `config` key in the `/debug/vars` HTTP
endpoint response for both OSS v1 and Enterprise v1. This exposes the
active TSDB storage configuration for remote diagnostics.

closes #6838

* fix(v1): clarify config value types in /debug/vars docs

Replace internal Go type references (toml.Size, toml.Duration) with
user-facing descriptions and concrete examples from the JSON output.
Link to the TSDB data settings configuration reference.

* feat(v1): document CQ statistics in /debug/vars endpoint

Add documentation for the `cq` key in the `/debug/vars` HTTP endpoint
response for both OSS v1 and Enterprise v1. This exposes continuous
query execution counters (queryOk, queryFail).

closes #6839

* fix(v1): Fix broken anchor links in API documentation (#7016)

* Initial plan

* fix(v1): Fix broken anchor links in API documentation

- Fix fragment links in OSS v1 api.md:
  - #api-v2-query-http-endpoint → #apiv2query-http-endpoint
  - #api-v2-write-http-endpoint → #apiv2write-http-endpoint
  - #debug-pprof-http-endpoint → #debugpprof-http-endpoint
  - #debug-requests-http-endpoint → #debugrequests-http-endpoint
  - #debug-vars-http-endpoint → #debugvars-http-endpoint

- Fix fragment and path links in Enterprise v1 api.md:
  - #http-endpoints-settings → #http-endpoint-settings (singular)
  - #influxdb-20-api-compatibility-endpoints → #influxdb-2x-api-compatibility-endpoints
  - /influxdb/v2.x/api-guide/client-libraries → /influxdb/v2/api-guide/client-libraries
  - Update authentication link path and anchor

Agent-Logs-Url: https://github.com/influxdata/docs-v2/sessions/6b684002-2875-4254-a87c-e45b58fcf5da

Co-authored-by: jstirnaman <212227+jstirnaman@users.noreply.github.com>

* fix(feedback): map enterprise_influxdb to influxdb GitHub namespace for issue links (#7024)

* Initial plan

* fix(feedback): map enterprise_influxdb to influxdb GitHub namespace for issue links

Agent-Logs-Url: https://github.com/influxdata/docs-v2/sessions/a50bf9d2-21e4-4c29-955a-9a263867d111

Co-authored-by: jstirnaman <212227+jstirnaman@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: jstirnaman <212227+jstirnaman@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: jstirnaman <212227+jstirnaman@users.noreply.github.com>

---------

Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>

* feat(enterprise): document -e flag on influxd-ctl show-shards (#7014)

* chore: update v1.12.3 documentation plan with source analysis

* feat(enterprise): document -e flag on influxd-ctl show-shards

Add the new `-e` flag that includes expired shards in the output.
By default, expired shards are now filtered out.

closes #6845

* feat(enterprise): document -timeout global flag for influxd-ctl (#7015)

* chore: update v1.12.3 documentation plan with source analysis

* feat(enterprise): document -timeout global flag for influxd-ctl

Add the new `-timeout` global flag that overrides the default 10-second
timeout for all influxd-ctl operations.

closes #6843

* feat(v1): document user column in SHOW QUERIES output (#7017)

* chore: update v1.12.3 documentation plan with source analysis

* feat(v1): document user column in SHOW QUERIES output

Add the `user` column to SHOW QUERIES examples and column explanations
for both OSS v1 and Enterprise v1. This column displays the user who
initiated the query, aiding attribution for shared instances.

Also fix pre-existing omission in Enterprise docs: add `node_id` and
`tcp_host` columns that were missing from the SHOW QUERIES example
despite being referenced in the KILL QUERY section.

closes #6805

* feat(enterprise): document SIGHUP log level reload (#7018)

* chore: update v1.12.3 documentation plan with source analysis

* feat(enterprise): document SIGHUP log level reload

Document that sending SIGHUP to Enterprise data nodes reloads the
logging level from the configuration file without requiring a restart.
Also note that SIGHUP reloads TLS certs, entitlements, and anti-entropy.

closes #6803

* feat(v1): document user-query-bytes-enabled config option (#7019)

* chore: update v1.12.3 documentation plan with source analysis

* feat(v1): document user-query-bytes-enabled config option

Add the `user-query-bytes-enabled` HTTP config option for both OSS v1
and Enterprise v1. When enabled, InfluxDB tracks per-user query response
bytes in the `userquerybytes` measurement.

closes #6802

* feat(enterprise): document rpc-resettable-*-timeout config options (#7020)

* chore: update v1.12.3 documentation plan with source analysis

* feat(enterprise): document rpc-resettable-*-timeout config options

Add `rpc-resettable-read-timeout` and `rpc-resettable-write-timeout`
to the [cluster] config section. These are inactivity timeouts for
incoming RPC connections between data nodes that reset on each
successful read/write operation.

Note: issue #6844 originally described these as `storage-read-timeout`
and `storage-write-timeout`, but they were renamed before v1.12.3.

closes #6844

* feat(enterprise): add v1.12.3 release notes and bump product version

Restore Enterprise v1.12.3 release notes and products.yml bump that
were lost when the fix-unpublish branch was merged into this PR.
Add release note entries for features documented in later PRs
(backup improvements, show-shards -e, -timeout, rpc-resettable
timeouts). Port hyperlinks from OSS release notes. Fix 15+ broken
links in older release notes entries.

* chore(enterprise): update enterprise 1.12.3 version and binary naming convention (#7027)

* chore(enterprise): add ent 1.12.3 release summary, update release notes description (#7028)

* Clarify speed improvements in release notes

Updated speed improvement metrics for TSI series deletion.

* fix(enterprise): fix broken fragment links across v1 docs

Fix 28 broken fragment links found by PR link checker:
- Add missing config headings (https-insecure-certificate, advanced-expiration)
- Add gzip backup compression flags to influxd-ctl backup flags table
- Fix old paths (/administration/configuration/ → /configure/config-data-nodes/)
- Fix fragments with default value suffixes (#max-values-per-tag-100000 → #max-values-per-tag)
- Fix glossary links (#replication-factor → #replication-factor-rf)
- Fix self-references in config-meta-nodes.md
- Fix spec.md underscore fragments and remove dead ToC entries
- Update authentication and query management link paths

* fix(enterprise): fix remaining broken links from CI run #23826485679

Fix 13 link-checker errors across v1 Enterprise and OSS docs:
- Fix wrong GitHub org (influxdb → influxdata) in manage-database.md
- Remove stale Mozilla wiki fragment in OSS config.md
- Fix pprof-enabled-1 → pprof-enabled in release-notes.md
- Rewrite auth links from old alias to actual pages in query_language
- Fix mismatched same-page fragments in backup-and-restore.md
- Normalize heading format (3.x - → 3.x.) in replacing-nodes.md

---------

Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Scott Anderson <sanderson@users.noreply.github.com>

* fix(ci): cleanup PLAN files in a separate PR, add to comment, not description  (#7029)

* chore(deps): update yarn dependencies

Run yarn to update lockfile with latest compatible versions.

* chore(ci): Install context harness management commands and workflow
- **.claude/commands/plan.md**: Creates and manages PLAN.md to guide agent work in the branch. Assumed to be a temporary file.
- **.claude/commands/finish.md**: Cleans up temporary planning file, generates a summary for a PR.
- **.github/workflows/cleanup-ephermal-docs.yml**: Safety net workflow to remove temporary files before the branch is merged into `master` (or `main`)

* Improve cleanup workflow resilience and fork compatibility (#6822)

* Initial plan

* fix(ci): improve cleanup workflow resilience and fork compatibility

- Switch from pull_request to pull_request_target for fork compatibility
- Use fetch-depth: 0 to get full history
- Add git pull --rebase before push to handle concurrent merges
- Soften startup hook reference to clarify it's configurable

Co-authored-by: jstirnaman <212227+jstirnaman@users.noreply.github.com>

* fix(ci): add error handling and security documentation

- Add fallback to regular merge if rebase fails due to conflicts
- Document security considerations for pull_request_target usage
- Clarify why this workflow is safe for fork PRs

Co-authored-by: jstirnaman <212227+jstirnaman@users.noreply.github.com>

* fix(ci): make merge strategy explicit in fallback

Use --no-rebase --no-edit flags to ensure merge doesn't prompt for editor

Co-authored-by: jstirnaman <212227+jstirnaman@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: jstirnaman <212227+jstirnaman@users.noreply.github.com>

* fix: preserve full plan details on PR instead of summary only

Update the /finish command and cleanup workflow to add complete PLAN.md
contents to the PR description or comments, rather than just a summary.

- /finish: reads full PLAN.md and appends it to PR description (in a
  collapsible details block) or posts as PR comment if description is long
- cleanup workflow: posts full plan contents as PR comment before removing
  ephemeral files, adds pull-requests:write permission for commenting

https://claude.ai/code/session_019Qfh7drSHEfryWP1DPCCiy

* fix: rename /plan to /task-plan to avoid shadowing built-in command

Claude Code has a built-in /plan command for entering plan mode.
Rename to /task-plan to avoid the conflict.

https://claude.ai/code/session_019Qfh7drSHEfryWP1DPCCiy

* fix: trigger cleanup workflow on push, not just PR merge

The cleanup workflow only triggered on pull_request_target (closed),
which doesn't cover cases where PLAN.md reaches master via direct
push or squash merge without the PR event firing correctly.

Add a push trigger with path filters for ephemeral files so cleanup
runs regardless of how the files reach the main branch. The PR
comment step is gated to only run for PR events.

https://claude.ai/code/session_019Qfh7drSHEfryWP1DPCCiy

* fix: create cleanup PR instead of pushing directly to protected branch

The cleanup workflow was failing because master has branch protection
rules that block direct pushes. The git push in the "Remove ephemeral
files" step returned exit code 1.

Change strategy: instead of pushing a commit directly to master, create
a cleanup branch and open a PR. Use gh pr merge --auto --squash to
auto-merge once required checks pass.

https://claude.ai/code/session_019Qfh7drSHEfryWP1DPCCiy

* fix: always post plan details as PR comment, not in description

Simplify the /finish command to always use a PR comment for preserving
plan details. This keeps the PR description clean and editable.

https://claude.ai/code/session_019Qfh7drSHEfryWP1DPCCiy

---------

Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Claude <noreply@anthropic.com>

* fix(vale): use wrapper, add missing configs, disable noisy rules (#7026)

* fix(vale): use wrapper, add missing configs, disable noisy rules

- Switch CI vale-check.sh from direct Docker to .ci/vale/vale.sh wrapper
  (uses local binary when available, falls back to Docker with pinned version)
- Add "Install Vale" step to workflow for faster CI runs without Docker
- Add missing core and clustered product config mappings to get_vale_config()
- Disable high-false-positive style rules (passive voice, weasel words,
  cliches, first person, future tense) across all 6 Vale configs — these
  are better handled contextually by LLMs during content review
- Keep all mechanical rules active (branding, spelling, capitalization,
  date format, repeated words, etc.)

* chore(skills): update Vale skills with CI workflow and disabled rules

- vale-linting: update execution docs (binary-first, Docker fallback),
  expand disabled rules table (4 → 19), add URL limitation section,
  add CI workflow files to Related Files table
- vale-rule-config: add URL limitation note, replace stale product
  config example with cross-reference to vale-linting skill

* chore(ci): update GitHub Actions to Node.js 24-compatible versions (#7032)

Node.js 20 actions are deprecated and will be forced to Node.js 24
on June 2, 2026. Update all workflow actions to versions that natively
support Node.js 24:

- actions/checkout v4 → v6
- actions/github-script v7 → v8
- actions/upload-artifact v4 → v7
- actions/download-artifact v4 → v8
- actions/setup-node v4 → v6
- actions/setup-python v4 → v6
- peter-evans/create-pull-request v5/v7 → v8

* chore: remove ephemeral planning docs [skip ci] (#7034)

Automated cleanup of development planning documents.
These files are used during development but shouldn't
persist on the main branch.

Files removed: PLAN.md

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* fix(enterprise): correct RPM download URL delimiters in v1.12.3 docs (#7039)

RPM package URLs used `_c` (underscore) instead of `-c` (hyphen)
before the cluster version prefix, producing broken download links.

Fixes across all five affected pages: data node install, meta node
install, single-server install, upgrading, and migration guides.

closes #7036

* Release influxdb v3.9.0 (#7045)

* feat(influxdb3): Bump version to 3.9.0

* docs(enterprise): rewrite performance upgrade preview documentation (#7035)

* docs(enterprise): rewrite performance upgrade preview documentation

Completely rewrites the InfluxDB 3 Enterprise performance upgrade preview
docs to reflect the current state of the storage layer upgrades. Adds
documentation for column families, auto-DVC, bulk export, Parquet upgrade
path, and updates all configuration flags to match the current codebase.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* docs(enterprise): refine performance upgrade preview content

- Change "Private preview beta" to "Performance preview beta"
- Remove Auto-DVC section from main page
- Replace "legacy Parquet engine" / "new engine" with "Parquet and .pt files"
- Add Parquet auto-upgrade warning to enable section
- Add "What is" and "Why" section structure

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Update content/influxdb3/enterprise/admin/pachatree/_index.md

Co-authored-by: Jason Stirnaman <jstirnaman@influxdata.com>

* Update content/influxdb3/enterprise/admin/pachatree/_index.md

Co-authored-by: Jason Stirnaman <jstirnaman@influxdata.com>

* Update content/influxdb3/enterprise/admin/pachatree/_index.md

Co-authored-by: Jason Stirnaman <jstirnaman@influxdata.com>

* Update content/influxdb3/enterprise/admin/pachatree/_index.md

Co-authored-by: Jason Stirnaman <jstirnaman@influxdata.com>

* Update content/influxdb3/enterprise/admin/pachatree/configure.md

Co-authored-by: Jason Stirnaman <jstirnaman@influxdata.com>

* fix(enterprise): singular dedicated compactor node

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Update content/influxdb3/enterprise/admin/pachatree/_index.md

Co-authored-by: Jason Stirnaman <jstirnaman@influxdata.com>

* docs(enterprise): move performance preview out of admin to /performance-preview/

Moves docs from /admin/pachatree/ to /performance-preview/ for a cleaner
URL and proper sidebar placement as a top-level Enterprise section.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Apply suggestions from code review

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Apply suggestions from code review

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Apply suggestions from code review

* fix(enterprise): address PR review feedback

- Rename --enable-auto-dvc to --pt-enable-auto-dvc (canonical flag name)
- Remove broken Auto-DVC anchor link from configure page
- Align notification wording with "beta" (not "private preview")
- Fix notification ID dot to dash (influxdb3-9-performance-preview)
- Clarify column families syntax is for line protocol

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* docs(influxdb3): fix configuration defaults for performance preview

Correct default values based on code audit:

- Change --pt-max-columns from ~6.5M to 10,000,000 (10M)
- Add Enterprise default value (3d) for --pt-file-cache-recency

The --pt-max-columns default was incorrect (code defines
Catalog::MAX_TOTAL_COLUMNS = 10_000_000). The --pt-file-cache-recency
inherits from --parquet-mem-cache-query-path-duration, which defaults
to 3d in Enterprise.

Code audit findings from @peterbarnett03

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* docs(enterprise): add downgrade-to-parquet documentation

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* docs(enterprise): add cross-references to performance preview (#7049)

* docs(enterprise): add cross-references to performance preview overview

Link key terms (Apache Parquet, series key, line protocol, Gen0,
compaction levels) to their reference pages and glossary entries.
Add WAL-to-Gen0 pipeline summary in the bounded compaction section.

* docs(enterprise): clarify "Why these upgrades" intro wording

Reorder to: existing storage layer → customer needs → upgrades extend it.
Replace "default" with "existing" to avoid ambiguity and drop negative
value judgment.

* Update content/influxdb3/enterprise/performance-preview/_index.md

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: Jason Stirnaman <jstirnaman@influxdata.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* docs(enterprise): add --use-pacha-tree to influxdb3 serve CLI reference (#7046)

Add CLI reference entries for the performance upgrade preview flag
and grouped --pt-* tuning options, linking to the main preview page
and configuration reference.

* feat(enterprise): add v3.9.0 export and telemetry API endpoints (#7047)

* feat(enterprise): add v3.9.0 export and telemetry API endpoints

Add Export data (beta) tag and four export endpoints
(databases, tables, windows, window_data) gated behind
--use-pacha-tree. Add query_sql_telemetry endpoint.
Update write_lp with column families docs and query endpoints
with hybrid query mode note. Bump spec version to v3.9.0.

* docs(api): simplify hybrid query mode wording

Change 'merge results from both legacy Parquet and new .pt storage'
to 'merge results from Parquet and .pt files' for clarity.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Update static/openapi/influxdb3-enterprise-openapi.yaml

* Update api-docs/influxdb3/enterprise/v3/influxdb3-enterprise-openapi.yaml

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* feat(influxdb3): add v3.9.0 release notes for Core and Enterprise (#7050)

Core: DataFusion upgrade, Python runtime upgrade, product identity
in HTTP responses, database lifecycle hardening.

Enterprise: performance upgrade preview (beta) with --use-pacha-tree,
bulk data export, automatic DVC, downgrade-to-parquet, --yes/-y for
delete commands, 1MB default string field limit, compaction stability.

---------

Co-authored-by: peterbarnett03 <peter.barnett03@gmail.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* fix: code-callout shortcode (#7051)

Fix code-callout

* style(enterprise): fix formatting in performance preview (#7052)

Replace -- with em dashes and colons, remove trailing whitespace
on code-callout closing tag.

* Update string field value size limit from 64KB to 1MB (#7054)

* Initial plan

* docs(line-protocol): update string field value size limit from 64KB to 1MB

Agent-Logs-Url: https://github.com/influxdata/docs-v2/sessions/bca48bb7-d708-4770-bdf4-cd2e96a20d33

Co-authored-by: jstirnaman <212227+jstirnaman@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: jstirnaman <212227+jstirnaman@users.noreply.github.com>

* chore: add Claude Preview launch.json for dev servers (#7056)

Configure Hugo dev server (port 1313) and test server (port 1315)
for Claude Preview integration.

* fix(dx): unblock claude worktree start and pre-push hooks (#7059)

* fix(claude): remove blocking WorktreeCreate yarn install hook

The synchronous WorktreeCreate hook ran yarn install with a 120s
timeout, blocking the Claude Code TUI when launched with `-w`. With
puppeteer and playwright in deps, the install reliably exceeds the
timeout.

The async SessionStart hook already handles "first session in a new
worktree" via its `[ ! -d node_modules ]` guard, so the WorktreeCreate
hook is redundant.

Also harden SessionStart:
- Skip puppeteer/playwright browser downloads
- Bump timeout 120 -> 300

* fix(lefthook): disable docker-dependent pre-push hooks

Comment out pre-push hooks that require docker:
- prune-legacy-containers
- build-pytest-image
- *-pytest code-block test tasks (cloud, cloud-dedicated,
  cloud-serverless, clustered, telegraf, v2)

These blocked pushes for any change when docker was not running
locally, even when the change had nothing to do with code blocks
or container management.

Replace prune-legacy-containers with list-legacy-containers, a
fault-safe task that exits 0 when docker is unavailable and only
warns about exited influxdata-docs containers when docker is
running. Run code-block tests on demand via yarn test:codeblocks:*.

* fix(influxdb3): correct wal-snapshot-size example from 100MB to 100 (#7066)

* Initial plan

* fix(influxdb3): correct wal-snapshot-size example from 100MB to 100

Agent-Logs-Url: https://github.com/influxdata/docs-v2/sessions/b793da7d-0941-4a24-b8fd-ea0e9817ca3a

Co-authored-by: jstirnaman <212227+jstirnaman@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: jstirnaman <212227+jstirnaman@users.noreply.github.com>

* fix(enterprise): change resource_identifier to resource_names in token API docs (#7064)

* Initial plan

* fix(enterprise): change resource_identifier to resource_names in token API docs

Agent-Logs-Url: https://github.com/influxdata/docs-v2/sessions/eb87b46a-7801-4d7e-b6d8-b0cb693bfcb6

Co-authored-by: jstirnaman <212227+jstirnaman@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: jstirnaman <212227+jstirnaman@users.noreply.github.com>
Co-authored-by: Jason Stirnaman <jstirnaman@influxdata.com>

* docs(enterprise): simplify performance preview terminology in release notes (#7053)

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: Jason Stirnaman <jstirnaman@influxdata.com>

* Initial plan

* fix(enterprise): squash duplicate commits — rebase perf-preview note and replication link onto correct paths (#7077)

* Initial plan

* fix: remove extraneous master commits from PR branch

Squashes back to the clean targeted state: only the performance-preview/
directory additions that are the actual intent of this PR.

Removes all unrelated commits from master that were included accidentally
via 'Merge branch master into copilot/rebase-on-master'.

Co-authored-by: jstirnaman <212227+jstirnaman@users.noreply.github.com>

* fix: remove extraneous master commits from PR branch

Agent-Logs-Url: https://github.com/influxdata/docs-v2/sessions/71cda8c8-9176-4d88-a464-5c104d9202a4

Co-authored-by: jstirnaman <212227+jstirnaman@users.noreply.github.com>

* chore: remove .claude/launch.json (unrelated to this PR)

Co-authored-by: jstirnaman <212227+jstirnaman@users.noreply.github.com>

* chore: remove ephemeral PLAN.md planning document

Co-authored-by: jstirnaman <212227+jstirnaman@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: jstirnaman <212227+jstirnaman@users.noreply.github.com>

---------

Co-authored-by: Jason Stirnaman <jstirnaman@influxdata.com>
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: jstirnaman <212227+jstirnaman@users.noreply.github.com>
Co-authored-by: Scott Anderson <sanderson@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: peterbarnett03 <peter.barnett03@gmail.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

product:v2 InfluxDB v2 (Cloud TSM, OSS) product:v3-distributed InfluxDB 3 Cloud Serverless, Cloud Dedicated, Clustered product:v3-monolith InfluxDB 3 Core and Enterprise (single-node / clusterable)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant