Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# Default owners. The GetTechAPI org has no teams yet.
* @Seungpyo1007

/data/ @Seungpyo1007
/app/ @Seungpyo1007
/.github/ @Seungpyo1007
22 changes: 22 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
name: "Bug report"
description: Report a bug in the validator, CI, or site
labels: ["bug"]
body:
- type: textarea
id: what-happened
attributes:
label: What happened?
validations:
required: true
- type: textarea
id: reproduce
attributes:
label: Steps to reproduce
validations:
required: true
- type: textarea
id: expected
attributes:
label: Expected behavior
validations:
required: true
1 change: 1 addition & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
blank_issues_enabled: true
41 changes: 41 additions & 0 deletions .github/ISSUE_TEMPLATE/data_addition.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
name: "ES data addition"
description: Request a new engineering-sample CPU record
labels: ["data", "enhancement"]
body:
- type: dropdown
id: sample_class
attributes:
label: Sample class
options:
- es
default: 0
validations:
required: true
- type: input
id: identifier
attributes:
label: Identifier (Intel Q-spec or AMD OPN)
placeholder: "QXLB or 100-000000665-21_N"
validations:
required: true
- type: input
id: manufacturer
attributes:
label: Manufacturer
placeholder: "intel or amd"
validations:
required: true
- type: textarea
id: sources
attributes:
label: Public source URLs (at least one)
description: Vendor leaks on public pages, CPU-World, news, benchmark listings. No NDA datasheets.
validations:
required: true
- type: checkboxes
id: not_qs
attributes:
label: Scope
options:
- label: This is an engineering sample (ES), not QS and not a retail SKU.
required: true
24 changes: 24 additions & 0 deletions .github/ISSUE_TEMPLATE/data_correction.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
name: "ES data correction"
description: Correct an existing engineering-sample record
labels: ["data"]
body:
- type: input
id: slug
attributes:
label: Record slug
placeholder: "intel-qxlb"
validations:
required: true
- type: input
id: field
attributes:
label: Field to correct
placeholder: "boost_clock_ghz"
validations:
required: true
- type: textarea
id: correction
attributes:
label: Current value to correct value (with public source)
validations:
required: true
23 changes: 23 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
name: "Feature request"
description: Propose a schema, validator, or site change
labels: ["enhancement"]
body:
- type: textarea
id: problem
attributes:
label: Problem / motivation
validations:
required: true
- type: textarea
id: proposal
attributes:
label: Proposed solution
validations:
required: true
- type: checkboxes
id: scope
attributes:
label: Scope check
options:
- label: This stays ES-only (QS and retail SKUs belong in TechAPI, not here).
required: true
18 changes: 18 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
<!-- PR title must follow Conventional Commits, e.g. data(cpu): add Intel QXLB ES -->

## What & why

<!-- What does this change and why? Use "Closes #123" for scoped work issues. Do not close the long-running tracker (#1). -->

## Source

<!-- Public source URLs for ES identification (CPU-World, news, benchmark listings). No NDA material. -->

## Checklist

- [ ] `python -m app.validate` passes locally
- [ ] Record `sample_class` is `es` (QS / retail / production are rejected)
- [ ] Files live at `data/cpu/<manufacturer>/<year>/<segment>/<slug>.json`
- [ ] Slugs are kebab-case and unique
- [ ] `source_urls` cites at least one public reference
- [ ] `qspec` (Intel) and/or `opn` (AMD) is present
39 changes: 39 additions & 0 deletions .github/workflows/deploy-pages.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
name: deploy-pages

on:
push:
branches: [main]
workflow_dispatch:

permissions:
contents: read
pages: write
id-token: write

concurrency:
group: pages
cancel-in-progress: true

jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Build static index
run: python site/build.py
- uses: actions/upload-pages-artifact@v3
with:
path: site

deploy:
needs: build
runs-on: ubuntu-latest
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- id: deployment
uses: actions/deploy-pages@v4
22 changes: 22 additions & 0 deletions .github/workflows/validate-data.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
name: validate-data

on:
pull_request:
branches: [develop, main]
push:
branches: [develop, main]

jobs:
validate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Validate ES catalog
run: python -m app.validate
- name: Tests (ES pass, QS/retail fail)
run: |
python -m pip install pytest
python -m pytest -q
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -30,3 +30,6 @@ coverage.xml

# Generated site catalog (rebuilt in CI)
site/catalog.json

# Local GitHub setup helpers (not part of the catalog)
.github-setup/
51 changes: 47 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,54 @@

**Engineering-sample (ES) CPU catalog** for [GetTechAPI](https://github.com/GetTechAPI).

Retail and qualification-sample (QS) CPUs do **not** belong here. Official production SKUs live in [TechAPI](https://github.com/GetTechAPI/TechAPI). This repository is a prototype holding area for publicly documented ES parts only.
[![validate-data](https://github.com/GetTechAPI/cpu-engineering-samples/actions/workflows/validate-data.yml/badge.svg)](https://github.com/GetTechAPI/cpu-engineering-samples/actions/workflows/validate-data.yml)
&nbsp;Data: **CC-BY-SA 4.0** · Code: **MIT**

See the `develop` branch for the working tree.
Retail / production CPUs live in [**TechAPI**](https://github.com/GetTechAPI/TechAPI). Qualification samples (QS) are also out of scope. This repository is a **prototype** holding area for publicly documented ES parts so they never mix into the official catalog.

## Scope

| Belongs here | Belongs in TechAPI |
|---|---|
| Engineering samples (`sample_class: es`) | Retail / production SKUs |
| Intel Q-spec ES, AMD OPN ES | QS / qualification samples |
| Public third-party listings | Official product pages as source of truth |

ES processors are pre-production parts. They are not for sale, not warranted, and this dataset is **not** an Intel or AMD product. Records cite already-public sources only. No NDA material.

## Layout

```text
data/cpu/<manufacturer>/<year>/<segment>/<slug>.json
app/validate.py # stdlib validator; rejects QS/retail
site/ # static index (GitHub Pages)
```

Slugs identify the **sample** (`intel-qxlb`, `amd-100-000000665-21-n`), not the retail name. `retail_equivalent` is an optional TechAPI CPU slug string, not a foreign key.

## Self-check

```bash
python -m app.validate
python -m pytest -q
```

The validator uses the Python standard library. QS, retail, and production `sample_class` values fail the build.

## Branching (git-flow)

| Branch | Role |
|---|---|
| `main` | Released state. Pages deploys from here. |
| `develop` | Integration. Default branch. |
| `feat/*`, `data/*`, `fix/*`, `ci/*`, `docs/*`, `chore/*` | Short-lived branches cut from `develop`. |

A release is a PR from `develop` to `main`. Open work PRs **against `develop`**.

## Contributing

Open a PR against `develop` with a new/updated JSON file. `sample_class` must be `es`. Include `qspec` (Intel) and/or `opn` (AMD) and at least one public `source_url`.

## License

- Code: [MIT](LICENSE)
- Data: [CC-BY-SA 4.0](DATA_LICENSE.md)
Data is [CC-BY-SA 4.0](DATA_LICENSE.md); attribute "Data from GetTechAPI / cpu-engineering-samples". Validator and site code are [MIT](LICENSE).
1 change: 1 addition & 0 deletions app/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
"""cpu-engineering-samples application package."""
Loading
Loading