From 11afd46e3600ef8f8992f0d9ba21cb01235b07ff Mon Sep 17 00:00:00 2001 From: Bill Freeman Date: Wed, 21 Oct 2026 07:32:11 -0500 Subject: [PATCH 1/3] CS2 changelog: player_status.is_spotted removed (provisional date) Rendered from igl-gotv-v2 scripts/csds-changelog/changes.yaml. The date and the release line are corrected when the converter change reaches production. Co-Authored-By: Claude Opus 5.5 --- CHANGELOG.md | 1 + docs/datascience/adx/cs2/csds/changelog-by-channel.md | 1 + docs/datascience/adx/cs2/csds/changelog.md | 8 ++++++++ 3 files changed, 10 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index da31e34..078cc2a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/). ### Changed +- CS2 changelog: add the removal of `player_status.is_spotted` (provisional date). - CS2 changelog: add the `convar` channel and `header.is_queued_matchmaking` / `queued_matchmaking_mode` under 2026-10-15 (parser 6.0.0), and `header.round_time`, `objective`, `patch_version`, `is_pov_recording` and `is_truncated` under 2026-10-16 (parser 6.2.0), dated from the production deployments. - CS2 spec: the header gains `round_time`, `objective`, `patch_version`, `is_pov_recording` and `is_truncated` (parser 6.2.0). The CS2 changelog gets its entry when the parser reaches production. - CS2 changelog: add `player_command` and `player_subtick_input` under 2026-10-14 (provisional). diff --git a/docs/datascience/adx/cs2/csds/changelog-by-channel.md b/docs/datascience/adx/cs2/csds/changelog-by-channel.md index 3757df2..44ad5e0 100644 --- a/docs/datascience/adx/cs2/csds/changelog-by-channel.md +++ b/docs/datascience/adx/cs2/csds/changelog-by-channel.md @@ -288,6 +288,7 @@ Dates are the day (UTC) a change reached production. ## player_status +- **2026-10-21**, column removed: `is_spotted`. **Breaking:** no longer written, so code that reads it breaks. It was the game's own "spotted" flag on each player, and it proved unreliable as a sign of who could see whom: checked against real kills, it was never set for one victim who was being shot, and set only a fraction of a second before another kill. Matches published earlier keep the column. Some later manifests still list it, with origin `replay-deleted` and no data behind it. - **2026-10-14**, columns added: `progress_bar_start`, `progress_bar_duration`, `last_injury_time`, `is_in_reload`, `reserve_ammo`, `deploy_tick`. The player's and the held weapon's own state, all nullable. `progress_bar_start` and `progress_bar_duration` are the defuse progress bar. `progress_bar_start` is when the player's last defuse began, in seconds on the clock of `second`, and keeps that value after the defuse ends. `progress_bar_duration` is the bar's length in seconds while it shows (10, or 5 with a kit) and negative otherwise. CS2 doesn't use the bar for planting. `last_injury_time` is when the player last took damage, on the clock of `second`. Both times are null until first set. `is_in_reload` is the held weapon's reload flag; unlike `is_reloading` it falls as soon as a reload stops, and about a third of reloads end early in a weapon switch. `reserve_ammo` is the held weapon's reserve and drops by one magazine per completed reload; null for knives, grenades and equipment. `deploy_tick` is the tick the held weapon was drawn, joinable on `tick`. - **2026-10-05**, types changed: `player_id_fixed`. An integer in every match, with nulls where no player matched. Before, a match in which any row found no player wrote the column as a double, so its type changed from match to match. - **2026-10-05**, types changed. Written compactly, with the same values. Each integer column is the smallest signed type that holds it, `int8`, `int16` or `int32`, where it was `int64`. The floats read from the demo are `float32`, where they were `double`. `place_name` is dictionary-encoded. The spec's tables give every column's type. pandas reads nullable `Int8`, `Int16` or `Int32` where it read `Int64`, and a category for `place_name`. Element-wise arithmetic stays narrow and can wrap (with `int16` `money`, `money * 5` gives 14,464 for 16,000), so cast to a wider type first. How to read old and new files together is in [The player tables](./spec.md#the-player-tables). diff --git a/docs/datascience/adx/cs2/csds/changelog.md b/docs/datascience/adx/cs2/csds/changelog.md index c4f7e2a..1c3bb12 100644 --- a/docs/datascience/adx/cs2/csds/changelog.md +++ b/docs/datascience/adx/cs2/csds/changelog.md @@ -25,6 +25,14 @@ The same changes are listed channel by channel on the removes personal data; and the publisher, which sends matches to Data Exchange. +## 2026-10-21 + +_The converter release that stops writing player_status.is_spotted (date provisional)._ + +**Columns removed** + +- `player_status.is_spotted`: **Breaking:** no longer written, so code that reads it breaks. It was the game's own "spotted" flag on each player, and it proved unreliable as a sign of who could see whom: checked against real kills, it was never set for one victim who was being shot, and set only a fraction of a second before another kill. Matches published earlier keep the column. Some later manifests still list it, with origin `replay-deleted` and no data behind it. + ## 2026-10-16 _Parser 6.2.0._ From 9bc6b42a3b0667f8bfd072bdf89a05a3085be008 Mon Sep 17 00:00:00 2001 From: Bill Freeman Date: Wed, 21 Oct 2026 07:36:44 -0500 Subject: [PATCH 2/3] Mark the provisional date as approximate in both views Co-Authored-By: Claude Opus 5.5 --- docs/datascience/adx/cs2/csds/changelog-by-channel.md | 2 +- docs/datascience/adx/cs2/csds/changelog.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/datascience/adx/cs2/csds/changelog-by-channel.md b/docs/datascience/adx/cs2/csds/changelog-by-channel.md index 44ad5e0..8450089 100644 --- a/docs/datascience/adx/cs2/csds/changelog-by-channel.md +++ b/docs/datascience/adx/cs2/csds/changelog-by-channel.md @@ -288,7 +288,7 @@ Dates are the day (UTC) a change reached production. ## player_status -- **2026-10-21**, column removed: `is_spotted`. **Breaking:** no longer written, so code that reads it breaks. It was the game's own "spotted" flag on each player, and it proved unreliable as a sign of who could see whom: checked against real kills, it was never set for one victim who was being shot, and set only a fraction of a second before another kill. Matches published earlier keep the column. Some later manifests still list it, with origin `replay-deleted` and no data behind it. +- **About 2026-10-21**, column removed: `is_spotted`. **Breaking:** no longer written, so code that reads it breaks. It was the game's own "spotted" flag on each player, and it proved unreliable as a sign of who could see whom: checked against real kills, it was never set for one victim who was being shot, and set only a fraction of a second before another kill. Matches published earlier keep the column. Some later manifests still list it, with origin `replay-deleted` and no data behind it. - **2026-10-14**, columns added: `progress_bar_start`, `progress_bar_duration`, `last_injury_time`, `is_in_reload`, `reserve_ammo`, `deploy_tick`. The player's and the held weapon's own state, all nullable. `progress_bar_start` and `progress_bar_duration` are the defuse progress bar. `progress_bar_start` is when the player's last defuse began, in seconds on the clock of `second`, and keeps that value after the defuse ends. `progress_bar_duration` is the bar's length in seconds while it shows (10, or 5 with a kit) and negative otherwise. CS2 doesn't use the bar for planting. `last_injury_time` is when the player last took damage, on the clock of `second`. Both times are null until first set. `is_in_reload` is the held weapon's reload flag; unlike `is_reloading` it falls as soon as a reload stops, and about a third of reloads end early in a weapon switch. `reserve_ammo` is the held weapon's reserve and drops by one magazine per completed reload; null for knives, grenades and equipment. `deploy_tick` is the tick the held weapon was drawn, joinable on `tick`. - **2026-10-05**, types changed: `player_id_fixed`. An integer in every match, with nulls where no player matched. Before, a match in which any row found no player wrote the column as a double, so its type changed from match to match. - **2026-10-05**, types changed. Written compactly, with the same values. Each integer column is the smallest signed type that holds it, `int8`, `int16` or `int32`, where it was `int64`. The floats read from the demo are `float32`, where they were `double`. `place_name` is dictionary-encoded. The spec's tables give every column's type. pandas reads nullable `Int8`, `Int16` or `Int32` where it read `Int64`, and a category for `place_name`. Element-wise arithmetic stays narrow and can wrap (with `int16` `money`, `money * 5` gives 14,464 for 16,000), so cast to a wider type first. How to read old and new files together is in [The player tables](./spec.md#the-player-tables). diff --git a/docs/datascience/adx/cs2/csds/changelog.md b/docs/datascience/adx/cs2/csds/changelog.md index 1c3bb12..84f8c8a 100644 --- a/docs/datascience/adx/cs2/csds/changelog.md +++ b/docs/datascience/adx/cs2/csds/changelog.md @@ -25,7 +25,7 @@ The same changes are listed channel by channel on the removes personal data; and the publisher, which sends matches to Data Exchange. -## 2026-10-21 +## About 2026-10-21 _The converter release that stops writing player_status.is_spotted (date provisional)._ From 71648603cba1a88ce862e71f7bb9b3cc89952108 Mon Sep 17 00:00:00 2001 From: Bill Freeman Date: Wed, 21 Oct 2026 07:40:43 -0500 Subject: [PATCH 3/3] CS2 changelog: the is_spotted entry dated 2026-10-21, the release day Co-Authored-By: Claude Opus 5.5 --- CHANGELOG.md | 2 +- docs/datascience/adx/cs2/csds/changelog-by-channel.md | 2 +- docs/datascience/adx/cs2/csds/changelog.md | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 078cc2a..d94f5e3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,7 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/). ### Changed -- CS2 changelog: add the removal of `player_status.is_spotted` (provisional date). +- CS2 changelog: add the removal of `player_status.is_spotted` under 2026-10-21. - CS2 changelog: add the `convar` channel and `header.is_queued_matchmaking` / `queued_matchmaking_mode` under 2026-10-15 (parser 6.0.0), and `header.round_time`, `objective`, `patch_version`, `is_pov_recording` and `is_truncated` under 2026-10-16 (parser 6.2.0), dated from the production deployments. - CS2 spec: the header gains `round_time`, `objective`, `patch_version`, `is_pov_recording` and `is_truncated` (parser 6.2.0). The CS2 changelog gets its entry when the parser reaches production. - CS2 changelog: add `player_command` and `player_subtick_input` under 2026-10-14 (provisional). diff --git a/docs/datascience/adx/cs2/csds/changelog-by-channel.md b/docs/datascience/adx/cs2/csds/changelog-by-channel.md index 8450089..44ad5e0 100644 --- a/docs/datascience/adx/cs2/csds/changelog-by-channel.md +++ b/docs/datascience/adx/cs2/csds/changelog-by-channel.md @@ -288,7 +288,7 @@ Dates are the day (UTC) a change reached production. ## player_status -- **About 2026-10-21**, column removed: `is_spotted`. **Breaking:** no longer written, so code that reads it breaks. It was the game's own "spotted" flag on each player, and it proved unreliable as a sign of who could see whom: checked against real kills, it was never set for one victim who was being shot, and set only a fraction of a second before another kill. Matches published earlier keep the column. Some later manifests still list it, with origin `replay-deleted` and no data behind it. +- **2026-10-21**, column removed: `is_spotted`. **Breaking:** no longer written, so code that reads it breaks. It was the game's own "spotted" flag on each player, and it proved unreliable as a sign of who could see whom: checked against real kills, it was never set for one victim who was being shot, and set only a fraction of a second before another kill. Matches published earlier keep the column. Some later manifests still list it, with origin `replay-deleted` and no data behind it. - **2026-10-14**, columns added: `progress_bar_start`, `progress_bar_duration`, `last_injury_time`, `is_in_reload`, `reserve_ammo`, `deploy_tick`. The player's and the held weapon's own state, all nullable. `progress_bar_start` and `progress_bar_duration` are the defuse progress bar. `progress_bar_start` is when the player's last defuse began, in seconds on the clock of `second`, and keeps that value after the defuse ends. `progress_bar_duration` is the bar's length in seconds while it shows (10, or 5 with a kit) and negative otherwise. CS2 doesn't use the bar for planting. `last_injury_time` is when the player last took damage, on the clock of `second`. Both times are null until first set. `is_in_reload` is the held weapon's reload flag; unlike `is_reloading` it falls as soon as a reload stops, and about a third of reloads end early in a weapon switch. `reserve_ammo` is the held weapon's reserve and drops by one magazine per completed reload; null for knives, grenades and equipment. `deploy_tick` is the tick the held weapon was drawn, joinable on `tick`. - **2026-10-05**, types changed: `player_id_fixed`. An integer in every match, with nulls where no player matched. Before, a match in which any row found no player wrote the column as a double, so its type changed from match to match. - **2026-10-05**, types changed. Written compactly, with the same values. Each integer column is the smallest signed type that holds it, `int8`, `int16` or `int32`, where it was `int64`. The floats read from the demo are `float32`, where they were `double`. `place_name` is dictionary-encoded. The spec's tables give every column's type. pandas reads nullable `Int8`, `Int16` or `Int32` where it read `Int64`, and a category for `place_name`. Element-wise arithmetic stays narrow and can wrap (with `int16` `money`, `money * 5` gives 14,464 for 16,000), so cast to a wider type first. How to read old and new files together is in [The player tables](./spec.md#the-player-tables). diff --git a/docs/datascience/adx/cs2/csds/changelog.md b/docs/datascience/adx/cs2/csds/changelog.md index 84f8c8a..573e276 100644 --- a/docs/datascience/adx/cs2/csds/changelog.md +++ b/docs/datascience/adx/cs2/csds/changelog.md @@ -25,9 +25,9 @@ The same changes are listed channel by channel on the removes personal data; and the publisher, which sends matches to Data Exchange. -## About 2026-10-21 +## 2026-10-21 -_The converter release that stops writing player_status.is_spotted (date provisional)._ +_The converter release that stops writing player_status.is_spotted._ **Columns removed**