# Steam Market Research continuation — September 6, 2026

Three offline branches using the September 5 snapshot: growth decomposition,
deckbuilder reception and hybrids, and a manual description pilot. The previous
session summary consulted was Steam Market Research 5; earlier logs were excluded.
No web requests or media downloads were made. Source files are read only to these
scripts; all new artifacts are in this directory.

Read `findings.md` for the report. The substantive findings are also delivered in
chat. Figures have PNG and vector SVG versions.

## Population and boundaries

The existing normalized game table contains 184,664 app identities. Main analyses
reuse the prior paid, released, non-explicit population and its central
idle/incremental/FMV exclusions. The frozen prior classifier measures English store
promises, not verified depth, quality, feasible production scope or viable builds.
It has both false positives and false negatives. Current tags, descriptions and
prices can change after release. Missing/delisted games and incomplete Early Access
history limit historical comparisons. Zero reviews imply undefined positivity even
where the source stores zero in its percentage field.

Growth uses January–August cohorts in both years. Outcome comparisons use full
2025, January–June 2026, and July–August 2026 separately. The snapshot contains
lifetime-to-snapshot review counts; comparisons across periods do not measure
equal-age performance or changes in success probability.

## Methods

- Four named genre tags use top-20 membership. Exact overlapping signatures give
  mutually exclusive cells. For additive genre attribution, each multi-tag game
  contributes 1/k to its k memberships; this is a bookkeeping convention, not an
  estimated creative contribution. Games outside all four get their own cell.
- The symmetric growth decomposition is exact: change in count = change in cell
  size times the mean build-match rate + change in build-match rate times mean
  cell size. It separates catalog volume/composition from within-cell prevalence;
  neither term is causal. Object labels overlap and are inherited imperfect screens.
- Reception outcomes are >=100 filtered reviews; >=80% positive among those
  games; and the joint benchmark. Threshold tables also use 50/200 reviews and
  75/85% positivity. No threshold is a definition of profitability or quality.
- Expected counts reuse date/current-price stratification and calibrated sparse
  fallback from the previous pass. The reference is the full build pool, including
  the focal group. Within-deck hybrid ratios instead use the pooled 368 deck games
  and retain date bins. These two references must not be confused. They are
  descriptive standardization, not direct causal estimates or historical forecasts.
- Hybrid tag families overlap. `party_tactics` combines Party-Based RPG, Tactical
  RPG, Strategy RPG, Turn-Based Tactics, Grid-Based Movement and Hex Grid;
  `economy_building` combines Resource Management, Automation, Base Building,
  City Builder and Colony Sim. Other groups use their named tags. Rank-10 and
  rank-20 versions are retained. A lack of selected hybrid tags does not establish
  a conventional game, and Inventory Management does not establish spatial builds.
- The 60-game pilot samples four games from each of 15 period/family cells with
  a fixed seed. Exclusive sampling families use deck > auto > action > tower >
  other. This is an even exploratory sample, not market-prevalence estimation.
  Numerical review counts and prices were withheld while labeling, but names and
  store-embedded quotations were visible. One assistant labeled every description;
  this is not an independent inter-rater reliability study. The label file was
  hashed before outcome joining. Mechanism categories are heterogeneous and six
  descriptions remain unclear, so no universal mechanism classifier was scaled.
- The narrower explicit-interaction label was also frozen before outcomes. Pilot
  outcome contrasts are descriptive and very small, with price, family, prose
  length and existing-franchise confounds. Descriptions that do not explain an
  interaction may nevertheless describe games with excellent interactions.
- The inventory audit and card-language, price and text-length follow-ups were
  motivated by first-pass results; they are exploratory. Inventory labels use
  complete stored descriptions where needed plus bounded extracted passages.
- Figure intervals are simple 95% Wilson intervals. They do not account for
  exploratory selection, creator clustering or measurement errors.

## Artifacts and reproduction

Use `../.venv/bin/python` from this directory, or the corresponding full paths:

1. `prepare_pilot.py` freezes the sampled descriptions and specification.
2. `label_pilot.py` materializes the manual labels already recorded in that script.
3. `analyze.py` produces growth, reception, sensitivity and pilot-outcome tables.
4. `followups.py` produces the exploratory checks, inventory audit and case gallery.
5. `charts.py` generates the two figures.
6. `validate.py` checks accounting, focal count reproduction, calibration, label
   hashes, source matches, collection state and script syntax; it records source
   hashes in `source_manifest.json`.

`growth_*.csv` cover supply, fractions, signatures, price, text and creator checks.
`outside_four_tags.csv` shows overlapping tags in the remainder group.
`reception_groups.csv`, `reception_thresholds.csv`, `conditional_positivity.csv`,
`creator_sensitivity.csv`, `hybrid_combined.csv` and `deck_language_sensitivity.csv`
provide the reception results. `deck_members.parquet` contains individual games.
`pilot_blind.json`, `pilot_labels.json`, `pilot_labels_frozen.json`,
`pilot_with_outcomes.csv` and `pilot_results.csv` preserve the pilot.
`inventory_audit.parquet`, `inventory_audit_results.csv`, and `case_gallery.csv`
contain the examples, classification decisions and descriptions supporting the
qualitative discussion. No claim about a game's mechanics relies on having played it.
