From f0d98dfd867bbf795373fa2804608b0a1b8d7aea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?FabioLeit=C3=A3o?= Date: Tue, 22 Sep 2026 14:00:49 -0300 Subject: [PATCH] chore(release): cut 1.8.0-rc with maturity_build rc band entry MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Promote working line 1.8.0-beta → 1.8.0-rc (maturity_build 127 per ADR-0073). Sync VERSIONING, CHANGELOG, release notes, packaging metadata, and version guards. Published PyPI/Hub channels remain on 1.7.4.post12 until stable 1.8.0 ritual. --- CHANGELOG.md | 17 +++++- CONTRIBUTING.md | 2 +- CONTRIBUTING.pt_BR.md | 2 +- README.md | 2 +- README.pt_BR.md | 2 +- SECURITY.md | 2 +- SECURITY.pt_BR.md | 2 +- core/about.py | 2 +- docs/VERSIONING.md | 4 +- docs/VERSIONING.pt_BR.md | 4 +- docs/data_boar.1 | 2 +- docs/data_boar.5 | 2 +- docs/ops/HOMEBREW_TAP.md | 2 +- docs/ops/HOMEBREW_TAP.pt_BR.md | 2 +- docs/ops/today-mode/PUBLISHED_SYNC.md | 4 +- docs/ops/today-mode/PUBLISHED_SYNC.pt_BR.md | 4 +- docs/plans/PLANS_TODO.md | 2 +- docs/releases/1.8.0-beta.md | 4 +- docs/releases/1.8.0-rc.md | 55 +++++++++++++++++++ main.py | 2 +- packaging/nfpm/generated/PACKAGES.meta.json | 2 +- .../nfpm/generated/data-boar-compressed.yaml | 12 ++-- .../nfpm/generated/data-boar-dataformats.yaml | 12 ++-- packaging/nfpm/generated/data-boar-mssql.yaml | 12 ++-- packaging/nfpm/generated/data-boar-nosql.yaml | 12 ++-- .../nfpm/generated/data-boar-richmedia.yaml | 12 ++-- .../nfpm/generated/data-boar-shares.yaml | 12 ++-- packaging/nfpm/generated/data-boar.yaml | 2 +- packaging/void/generated/PACKAGES.meta.json | 4 +- .../void/generated/srcpkgs/data-boar/template | 2 +- pyproject.toml | 10 ++-- tests/test_emit_provenance.py | 4 +- tests/test_maturity_build_accounting.py | 16 ++++-- tests/test_native_package_release.py | 20 +++---- tests/test_pyproject_sql_extras.py | 10 ++-- tests/test_report_advisory.py | 2 +- uv.lock | 2 +- 37 files changed, 168 insertions(+), 96 deletions(-) create mode 100644 docs/releases/1.8.0-rc.md diff --git a/CHANGELOG.md b/CHANGELOG.md index ef43fd36f..22bbf2307 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,13 +4,24 @@ Human-readable summary of user-facing changes. **Detailed release notes:** [docs ## Unreleased (`main`) -Empty while the working tree carries **`1.8.0-beta`** (see section below). +Empty while the working tree carries **`1.8.0-rc`** (see section below). --- -## 1.8.0-beta (working line on `main` — git-only) +## 1.8.0-rc (working line on `main` — git-only) -> Opens the **`1.8.0`** public line. **`[project] version = 1.8.0-beta`** (ADR-0073 PEP 440 hyphen form). **`[tool.databoar] maturity_build = 69`** — octet **resets** into beta band **1–126** at cut (`604c1b5c`, 2026-08-02); **reconciled 2026-08-18** after **68** `fix`/`feat` commits on `main` were not reflected in `pyproject.toml` during a heavy sprint (**process lapse, not a policy regression**). Does **not** continue from **`1.7.4.post12` / `.263`**. **Not** on PyPI or Docker Hub **`latest`** (distribution policy: pre-release = git-only). Notes: [docs/releases/1.8.0-beta.md](docs/releases/1.8.0-beta.md). +> Release candidate for **`1.8.0`**. **`[project] version = 1.8.0-rc`** (ADR-0073 PEP 440 hyphen form). **`[tool.databoar] maturity_build = 127`** — **rc band entry** on promotion from **`1.8.0-beta`** (last beta reconciliation **`.116`**, 2026-08-22). **Not** on PyPI or Docker Hub **`latest`**. Notes: [docs/releases/1.8.0-rc.md](docs/releases/1.8.0-rc.md). + +### Promotion from `1.8.0-beta` (2026-09-22) + +- **Cut:** `chore(release): cut 1.8.0-rc` — suffix **`1.8.0-beta` → `1.8.0-rc`**; `maturity_build` **116 → 127** (rc band floor; ADR-0073 same-line beta→rc decision). +- **Highlights:** feature and fix bullets accumulated during the beta line remain under **§ 1.8.0-beta** below (not duplicated here). + +--- + +## 1.8.0-beta (frozen at RC promotion — git-only history) + +> Opened the **`1.8.0`** public line (superseded on `main` by **`1.8.0-rc`** — see § above). **`[project] version` was `1.8.0-beta`**; **`maturity_build`** reached **`.116`** at last beta reconciliation (**2026-08-22**). Notes: [docs/releases/1.8.0-beta.md](docs/releases/1.8.0-beta.md). ### Maturity octet reconciliation (2026-08-18) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index a74525245..02f3bbee7 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -18,7 +18,7 @@ Thank you for considering contributing. This document covers local setup, workfl uvx data-boar --demo ``` - Pre-release lines on **`main`** (for example **`1.8.0-beta`**) stay **git-only** — they are not the PyPI wheel. For contributors, or to run that working tree, use a **git clone** with **`uv sync`** or **`pip install -e .`**. The tree still contains the historical **`lgpd_crawler`** Python package for imports and continuity — that is implementation layout, not the product name. Rename context: **[ADR 0014](docs/adr/ADR-0014-rename-repo-and-package-python3-lgpd-crawler-to-data-boar.md)**. + Pre-release lines on **`main`** (for example **`1.8.0-rc`**) stay **git-only** — they are not the PyPI wheel. For contributors, or to run that working tree, use a **git clone** with **`uv sync`** or **`pip install -e .`**. The tree still contains the historical **`lgpd_crawler`** Python package for imports and continuity — that is implementation layout, not the product name. Rename context: **[ADR 0014](docs/adr/ADR-0014-rename-repo-and-package-python3-lgpd-crawler-to-data-boar.md)**. **SQL connectors (optional extras):** Core **`pip install data-boar`** includes **filesystem + SQLite** scanning only — no PostgreSQL/MySQL/MariaDB/MSSQL/Oracle C-extension wheels. Install per engine: diff --git a/CONTRIBUTING.pt_BR.md b/CONTRIBUTING.pt_BR.md index b35b024f8..f4e2a2028 100644 --- a/CONTRIBUTING.pt_BR.md +++ b/CONTRIBUTING.pt_BR.md @@ -18,7 +18,7 @@ Obrigado por considerar contribuir. Este documento cobre a configuração local, uvx data-boar --demo ``` - Linhas pré-release no **`main`** (por exemplo **`1.8.0-beta`**) continuam **só git** — não são a wheel do PyPI. Para colaboradores, ou para rodar essa árvore de trabalho, use **clone git** + **`uv sync`** ou **`pip install -e .`**. O repositório ainda contém o pacote Python histórico **`lgpd_crawler`** (imports) — é detalhe de implementação, não o nome do produto. Contexto da renomeação: **[ADR 0014](docs/adr/ADR-0014-rename-repo-and-package-python3-lgpd-crawler-to-data-boar.md)**. + Linhas pré-release no **`main`** (por exemplo **`1.8.0-rc`**) continuam **só git** — não são a wheel do PyPI. Para colaboradores, ou para rodar essa árvore de trabalho, use **clone git** + **`uv sync`** ou **`pip install -e .`**. O repositório ainda contém o pacote Python histórico **`lgpd_crawler`** (imports) — é detalhe de implementação, não o nome do produto. Contexto da renomeação: **[ADR 0014](docs/adr/ADR-0014-rename-repo-and-package-python3-lgpd-crawler-to-data-boar.md)**. **Conectores SQL (extras opcionais):** o **`pip install data-boar`** *core* cobre **arquivos + SQLite** — sem wheels C-extension de PostgreSQL/MySQL/MariaDB/MSSQL/Oracle. Instale por motor: diff --git a/README.md b/README.md index 9214ab912..e93965eba 100644 --- a/README.md +++ b/README.md @@ -93,7 +93,7 @@ Data Boar runs as a **one-shot CLI** audit or as a **REST API** (default port 80 | Sensitivity detection (ML/DL terms) | [SENSITIVITY_DETECTION.md](docs/SENSITIVITY_DETECTION.md) · [SENSITIVITY_DETECTION.pt_BR.md](docs/SENSITIVITY_DETECTION.pt_BR.md) | | Minor / child-related data (thresholds, optional full scan, cross-ref, samples) | [MINOR_DETECTION.md](docs/MINOR_DETECTION.md) · [MINOR_DETECTION.pt_BR.md](docs/MINOR_DETECTION.pt_BR.md) | | Testing, security, contributing | [docs/TESTING.md](docs/TESTING.md) · [SECURITY.md](SECURITY.md) · [CONTRIBUTING.md](CONTRIBUTING.md) | -| **`pip` / `uvx` from PyPI** | The package **is on** [PyPI](https://pypi.org/project/data-boar/). Install with **`pip install data-boar`** or **`pipx install data-boar`**. Zero-clone CLI: **`uvx data-boar --config config.yaml`**. Lowest-friction demo: **`uvx data-boar --demo`**. The last **stable** wheel can lag **`main`** (pre-release lines such as **`1.8.0-beta`** are git-only). Contributor clone: **git clone** + **`uv sync`** — see [CONTRIBUTING.md — Repository and install identity](CONTRIBUTING.md#repository-and-install-identity-data-boar). On Debian/Ubuntu and Fedora with Python >=3.12, `pip`/`pipx` is usually frictionless; RHEL9-family and Alpine/musl currently need one extra onboarding step — see [TROUBLESHOOTING.md](docs/TROUBLESHOOTING.md). | +| **`pip` / `uvx` from PyPI** | The package **is on** [PyPI](https://pypi.org/project/data-boar/). Install with **`pip install data-boar`** or **`pipx install data-boar`**. Zero-clone CLI: **`uvx data-boar --config config.yaml`**. Lowest-friction demo: **`uvx data-boar --demo`**. The last **stable** wheel can lag **`main`** (pre-release lines such as **`1.8.0-rc`** are git-only). Contributor clone: **git clone** + **`uv sync`** — see [CONTRIBUTING.md — Repository and install identity](CONTRIBUTING.md#repository-and-install-identity-data-boar). On Debian/Ubuntu and Fedora with Python >=3.12, `pip`/`pipx` is usually frictionless; RHEL9-family and Alpine/musl currently need one extra onboarding step — see [TROUBLESHOOTING.md](docs/TROUBLESHOOTING.md). | **Quick start:** the [5-min QuickStart](QUICKSTART.md) walks through both paths (Docker or local `uv`, copy-paste); the full flag and configuration reference is in [USAGE.md](docs/USAGE.md). For Linux distro caveats (including current RHEL9-family and Alpine/musl `pipx` onboarding pre-steps), see [TROUBLESHOOTING.md](docs/TROUBLESHOOTING.md) and the [OS compatibility matrix](docs/ops/OS_COMPATIBILITY_TESTING_MATRIX.md). On **Linux (native, not Docker)**, install system libraries **before** `uv sync` — see [Technical guide — Requirements and environment preparation](docs/TECH_GUIDE.md#requirements-and-environment-preparation). **Do not commit** root `config.yaml` (`.gitignore`); it may contain LAN paths and secrets — see [CONTRIBUTING.md](CONTRIBUTING.md#public-repo-hygiene-lan-credentials). diff --git a/README.pt_BR.md b/README.pt_BR.md index a5b528424..b0ed5814d 100644 --- a/README.pt_BR.md +++ b/README.pt_BR.md @@ -93,7 +93,7 @@ Se você precisa de: - **Detecção de sensibilidade (termos ML/DL):** [SENSITIVITY_DETECTION.pt_BR.md](docs/SENSITIVITY_DETECTION.pt_BR.md) · [SENSITIVITY_DETECTION.md](docs/SENSITIVITY_DETECTION.md) - **Dados de menores / crianças (limiar, varredura opcional ampliada, cruzamento, amostras):** [MINOR_DETECTION.pt_BR.md](docs/MINOR_DETECTION.pt_BR.md) · [MINOR_DETECTION.md](docs/MINOR_DETECTION.md) - **Testes, segurança, contribuição:** [docs/TESTING.pt_BR.md](docs/TESTING.pt_BR.md) · [SECURITY.pt_BR.md](SECURITY.pt_BR.md) · [CONTRIBUTING.pt_BR.md](CONTRIBUTING.pt_BR.md) -- **pip / `uvx` via PyPI:** o pacote **já está no** [PyPI](https://pypi.org/project/data-boar/). Instale com **`pip install data-boar`** ou **`pipx install data-boar`**. CLI sem clone: **`uvx data-boar --config config.yaml`**. Demo de menor atrito: **`uvx data-boar --demo`**. A última wheel **estável** pode ficar atrás do **`main`** (linhas pré-release como **`1.8.0-beta`** são só git). Clone de colaborador: **git clone** + **`uv sync`** — veja [CONTRIBUTING.pt_BR.md — Repositório e identidade](CONTRIBUTING.pt_BR.md#repositório-e-identidade-de-instalação-data-boar). Em Debian/Ubuntu e Fedora com Python >=3.12, `pip`/`pipx` costuma ser sem atrito; em RHEL9-family e Alpine/musl há 1 passo extra de onboarding — veja [TROUBLESHOOTING.pt_BR.md](docs/TROUBLESHOOTING.pt_BR.md). +- **pip / `uvx` via PyPI:** o pacote **já está no** [PyPI](https://pypi.org/project/data-boar/). Instale com **`pip install data-boar`** ou **`pipx install data-boar`**. CLI sem clone: **`uvx data-boar --config config.yaml`**. Demo de menor atrito: **`uvx data-boar --demo`**. A última wheel **estável** pode ficar atrás do **`main`** (linhas pré-release como **`1.8.0-rc`** são só git). Clone de colaborador: **git clone** + **`uv sync`** — veja [CONTRIBUTING.pt_BR.md — Repositório e identidade](CONTRIBUTING.pt_BR.md#repositório-e-identidade-de-instalação-data-boar). Em Debian/Ubuntu e Fedora com Python >=3.12, `pip`/`pipx` costuma ser sem atrito; em RHEL9-family e Alpine/musl há 1 passo extra de onboarding — veja [TROUBLESHOOTING.pt_BR.md](docs/TROUBLESHOOTING.pt_BR.md). **Início rápido:** o [QuickStart de 5 min](QUICKSTART.pt_BR.md) cobre os dois caminhos (Docker ou `uv` local, copia-e-cola); a referência completa de flags e configuração está em [USAGE.pt_BR.md](docs/USAGE.pt_BR.md). Para ressalvas por distro Linux (incluindo os pré-passos atuais de onboarding `pipx` em RHEL9-family e Alpine/musl), veja [TROUBLESHOOTING.pt_BR.md](docs/TROUBLESHOOTING.pt_BR.md) e a [matriz de compatibilidade de SO](docs/ops/OS_COMPATIBILITY_TESTING_MATRIX.pt_BR.md). Em **Linux nativo (sem Docker)**, instale as bibliotecas de sistema **antes** de `uv sync` — veja [Guia técnico — Requisitos e preparação do ambiente](docs/TECH_GUIDE.pt_BR.md#requisitos-e-preparação-do-ambiente). **Não commite** o `config.yaml` da raiz (`.gitignore`); pode conter caminhos da LAN e segredos — veja a seção **Higiene do repositório público** em [CONTRIBUTING.pt_BR.md](CONTRIBUTING.pt_BR.md). diff --git a/SECURITY.md b/SECURITY.md index 9a551214a..cef9aafca 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -39,7 +39,7 @@ OpenSSF Scorecard for this repository (badge after publish; JSON API): [Scorecar | Line | Status | | ----- | ------ | | **1.7.4.x** (stable **1.7.4**, including PyPI **1.7.4.postN**; Docker Hub `fabioleitao/data_boar` **1.7.4** / `latest` when those tags are published) | **Supported** — security fixes for this stable line | -| **`main`** (working tree; currently **1.8.0-beta**, git-only) | **Supported** — fixes land here first, then stable as appropriate | +| **`main`** (working tree; currently **1.8.0-rc**, git-only) | **Supported** — fixes land here first, then stable as appropriate | **Not supported:** tags and images **older than 1.7.4**; unofficial forks or rebuilt images; unofficial mirrors; any fourth-segment “1.7.4.N” public version (this project does not publish that scheme — see [docs/VERSIONING.md](docs/VERSIONING.md)). diff --git a/SECURITY.pt_BR.md b/SECURITY.pt_BR.md index bb0891211..84c9ad973 100644 --- a/SECURITY.pt_BR.md +++ b/SECURITY.pt_BR.md @@ -39,7 +39,7 @@ OpenSSF Scorecard deste repositório (badge depois do publish; API JSON): [visua | Linha | Estado | | ----- | ------ | | **1.7.4.x** (estável **1.7.4**, incluindo PyPI **1.7.4.postN**; Docker Hub `fabioleitao/data_boar` **1.7.4** / `latest` quando essas tags estão publicadas) | **Suportada** — correções de segurança nesta linha estável | -| **`main`** (árvore de trabalho; atualmente **1.8.0-beta**, só git) | **Suportada** — correções entram aqui primeiro, depois no estável quando couber | +| **`main`** (árvore de trabalho; atualmente **1.8.0-rc**, só git) | **Suportada** — correções entram aqui primeiro, depois no estável quando couber | **Não suportado:** tags e imagens **anteriores a 1.7.4**; forks ou imagens reconstruídas não oficiais; espelhos não oficiais; qualquer versão pública com quarto segmento “1.7.4.N” (este projeto não publica esse esquema — veja [docs/VERSIONING.pt_BR.md](docs/VERSIONING.pt_BR.md)). diff --git a/core/about.py b/core/about.py index 5b8b9c461..74190105b 100644 --- a/core/about.py +++ b/core/about.py @@ -9,7 +9,7 @@ from pathlib import Path # docs/VERSIONING.md checklist §2 — keep identical to pyproject.toml ``[project].version``. -_FALLBACK_VERSION = "1.8.0-beta" +_FALLBACK_VERSION = "1.8.0-rc" def _package_version() -> str: diff --git a/docs/VERSIONING.md b/docs/VERSIONING.md index a7cc2e972..07a57dd85 100644 --- a/docs/VERSIONING.md +++ b/docs/VERSIONING.md @@ -64,11 +64,11 @@ When the project opens a **new semver line** (e.g. **`1.8.0`** after **`1.7.4`** Suffixes (`-beta`, `-rc`, `-rc-N`) are required on `main` while a **release gate** issue (e.g. GitHub #406) is **open**. A green **commit gate** (`check-all`) never authorizes removing them — see ADR-0072. Gate **#406** closed with **1.7.4** stable (PR **#1024**). -### Current lines (`1.7.4` published · `1.8.0-beta` working) +### Current lines (`1.7.4` published · `1.8.0-rc` working) | Label | Status | | --- | --- | -| **`main` working tree** | **`1.8.0-beta`** in `pyproject.toml` (`maturity_build = 116` — beta band; reconciled 2026-08-22). Git-only for consumers. | +| **`main` working tree** | **`1.8.0-rc`** in `pyproject.toml` (`maturity_build = 127` — rc band entry; promoted 2026-09-22). Git-only for consumers. | | **Published customer channels** | **`1.7.4.post12`** / **`v1.7.4.post12`** on PyPI + Hub (+ historical GA **`1.7.4`**) until a later **`1.8.0`** release-ritual | | **#970** | Premature stable bump/tag without release gate — corrected by **ADR-0072** + gate **#406**; **`1.7.4` is not VOID** | | **Post-GA public fix numbering** | **Resolved** (#977) — **`1.7.4`** fix-line used **`.postN`** + octet; **`.postN` does not carry** onto **`1.8.0-beta`** | diff --git a/docs/VERSIONING.pt_BR.md b/docs/VERSIONING.pt_BR.md index 5ebd7720a..f3cb19f39 100644 --- a/docs/VERSIONING.pt_BR.md +++ b/docs/VERSIONING.pt_BR.md @@ -64,11 +64,11 @@ Ao abrir uma **nova linha semver** (ex.: **`1.8.0`** após **`1.7.4`**), **`matu Sufixos (`-beta`, `-rc`, `-rc-N`) são obrigatórios em `main` enquanto um issue de **release gate** (ex.: GitHub #406) estiver **aberto**. **Commit gate** verde (`check-all`) **não** autoriza removê-los — ver ADR-0072. Gate **#406** fechado com **1.7.4** stable (PR **#1024**). -### Linhas atuais (`1.7.4` publicado · `1.8.0-beta` working) +### Linhas atuais (`1.7.4` publicado · `1.8.0-rc` working) | Rótulo | Status | | --- | --- | -| **Working tree `main`** | **`1.8.0-beta`** no `pyproject.toml` (`maturity_build = 116` — faixa beta; reconciliado 2026-08-18). Só git para consumidores. | +| **Working tree `main`** | **`1.8.0-rc`** no `pyproject.toml` (`maturity_build = 127` — entrada na faixa rc; promovido 2026-09-22). Só git para consumidores. | | **Canais publicados** | **`1.7.4.post12`** / **`v1.7.4.post12`** no PyPI + Hub (+ GA histórico **`1.7.4`**) até ritual futuro de **`1.8.0`** | | **#970** | Bump/tag stable prematuro sem release gate — corrigido por **ADR-0072** + gate **#406**; **`1.7.4` não é VOID** | | **Numeração pública pós-GA** | **Resolvido** (#977) — fix-line **`1.7.4`** usou **`.postN`** + octeto; **`.postN` não carrega** para **`1.8.0-beta`** | diff --git a/docs/data_boar.1 b/docs/data_boar.1 index d3fb621e8..14c9d5c1c 100644 --- a/docs/data_boar.1 +++ b/docs/data_boar.1 @@ -1,6 +1,6 @@ .\" data_boar.1 - man page for Data Boar (application; PyPI distribution: data-boar) .\" View as: man data-boar (primary), man data_boar or man lgpd_crawler (symlink aliases) -.TH DATA-BOAR 1 "August 2026" "Data Boar 1.8.0-beta" "User Commands" +.TH DATA-BOAR 1 "September 2026" "Data Boar 1.8.0-rc" "User Commands" .SH NAME data-boar, data_boar, lgpd_crawler \- enterprise data discovery and risk governance (Data Boar) . diff --git a/docs/data_boar.5 b/docs/data_boar.5 index 0afdfa6f4..53d75a5b8 100644 --- a/docs/data_boar.5 +++ b/docs/data_boar.5 @@ -1,6 +1,6 @@ .\" data_boar.5 - file formats and configuration for Data Boar (PyPI distribution: data-boar) .\" View as: man 5 data-boar (primary), man 5 data_boar or man 5 lgpd_crawler (symlink aliases) -.TH DATA-BOAR 5 "August 2026" "Data Boar 1.8.0-beta" "File Formats" +.TH DATA-BOAR 5 "September 2026" "Data Boar 1.8.0-rc" "File Formats" .SH NAME data-boar config, data_boar config, lgpd_crawler config \- configuration and pattern file formats for Data Boar (compliance-aware discovery and mapping) . diff --git a/docs/ops/HOMEBREW_TAP.md b/docs/ops/HOMEBREW_TAP.md index 43b9bc429..d6cf6880f 100644 --- a/docs/ops/HOMEBREW_TAP.md +++ b/docs/ops/HOMEBREW_TAP.md @@ -58,7 +58,7 @@ Automation: Sync to the public tap repo needs repository secret **`HOMEBREW_TAP_TOKEN`** (contents:write on `DataBoar/homebrew-databoar`). Without it, the formula still bumps in this product repo via PR; the tap clone is skipped. -Pre-release git-only versions (`1.8.0-beta`) are **not** formula targets — Homebrew users get the latest **PyPI** release. +Pre-release git-only versions (`1.8.0-rc`) are **not** formula targets — Homebrew users get the latest **PyPI** release. ## Troubleshooting diff --git a/docs/ops/HOMEBREW_TAP.pt_BR.md b/docs/ops/HOMEBREW_TAP.pt_BR.md index 45421b040..1a50a9b87 100644 --- a/docs/ops/HOMEBREW_TAP.pt_BR.md +++ b/docs/ops/HOMEBREW_TAP.pt_BR.md @@ -58,7 +58,7 @@ Automação: Sincronizar o repositório público do tap exige o secret **`HOMEBREW_TAP_TOKEN`** (contents:write em `DataBoar/homebrew-databoar`). Sem o secret, a fórmula ainda sobe PR neste repo; o clone do tap é ignorado. -Versões git-only de pré-release (`1.8.0-beta`) **não** são alvo da fórmula — quem usa Homebrew recebe o último release **PyPI**. +Versões git-only de pré-release (`1.8.0-rc`) **não** são alvo da fórmula — quem usa Homebrew recebe o último release **PyPI**. ## Resolução de problemas diff --git a/docs/ops/today-mode/PUBLISHED_SYNC.md b/docs/ops/today-mode/PUBLISHED_SYNC.md index c72a3002a..3c99a1d64 100644 --- a/docs/ops/today-mode/PUBLISHED_SYNC.md +++ b/docs/ops/today-mode/PUBLISHED_SYNC.md @@ -13,12 +13,12 @@ | Field | Value | | ----- | ----- | | **Verified** | **2026-08-18** | -| **`pyproject.toml` on `main`** | **`1.8.0-beta`** (`maturity_build=116`) — `1.8.0` beta line; octet reconciled after sprint (ADR-0073). Git-only for consumers; **not** on PyPI/Hub. | +| **`pyproject.toml` on `main`** | **`1.8.0-rc`** (`maturity_build=127`) — `1.8.0` release-candidate line (ADR-0073). Git-only for consumers; **not** on PyPI/Hub. | | **PyPI** (published) | [**data-boar `1.7.4.post12`**](https://pypi.org/project/data-boar/1.7.4.post12/) — `pip install data-boar` (published **2026-07-30 00:42:09 UTC**, Trusted Publishing via **`publish-pypi.yml`**) | | **GitHub Release Latest** (published) | [**v1.7.4.post12**](https://github.com/DataBoar/data-boar/releases/tag/v1.7.4.post12) (notes: **`docs/releases/1.7.4.post12.md`**, **`CHANGELOG.md`**; annotated tag SSH-signed). Optional pre-release tag **`v1.8.0-beta`** when operator cuts it — see [1.8.0-beta.md](../../releases/1.8.0-beta.md). | | **Docker Hub** (published) | **`fabioleitao/data_boar:1.7.4.post12`** + **`latest`** = `sha256:ab8f5dad3e336…` (published **2026-07-30**; base **`python:3.14-slim`**, distroless nonroot, **`popcnt=0`**). Historical June GA tag **`1.7.4`** left untouched. **No** Hub marketing refresh for **`-beta`**. | | **Wheelhouse** | [**`wheelhouse-x86-64-v1-2026-07-29`**](https://github.com/DataBoar/data-boar-site/releases/tag/wheelhouse-x86-64-v1-2026-07-29) — **58** `.whl` (incl. **14× `cp314t`**: 10 ML + 4 SQL extras `linux_x86_64`) | -| **Next publishable** | Promote toward **`1.8.0-rc`** / stable **`1.8.0`** per [VERSIONING.md](../VERSIONING.md) + ADR-0072/0073 (release gate + release-ritual) | +| **Next publishable** | Stable **`1.8.0`** per [VERSIONING.md](../VERSIONING.md) + ADR-0072/0073 (release-ritual) | --- diff --git a/docs/ops/today-mode/PUBLISHED_SYNC.pt_BR.md b/docs/ops/today-mode/PUBLISHED_SYNC.pt_BR.md index 677329e7b..f591367f8 100644 --- a/docs/ops/today-mode/PUBLISHED_SYNC.pt_BR.md +++ b/docs/ops/today-mode/PUBLISHED_SYNC.pt_BR.md @@ -13,12 +13,12 @@ | Campo | Valor | | ----- | ----- | | **Verificado** | **2026-08-18** | -| **`pyproject.toml` em `main`** | **`1.8.0-beta`** (`maturity_build=116`) — linha beta `1.8.0`; octeto reconciliado após sprint (ADR-0073). Só git para consumidores; **não** no PyPI/Hub. | +| **`pyproject.toml` em `main`** | **`1.8.0-rc`** (`maturity_build=127`) — linha candidata `1.8.0` (ADR-0073). Só git para consumidores; **não** no PyPI/Hub. | | **PyPI** (publicado) | [**data-boar `1.7.4.post12`**](https://pypi.org/project/data-boar/1.7.4.post12/) — `pip install data-boar` (publicado **2026-07-30 00:42:09 UTC**, Trusted Publishing via **`publish-pypi.yml`**) | | **GitHub Release Latest** (publicado) | [**v1.7.4.post12**](https://github.com/DataBoar/data-boar/releases/tag/v1.7.4.post12) (notas: **`docs/releases/1.7.4.post12.md`**, **`CHANGELOG.md`**; tag anotada assinada por SSH). Tag opcional de pré-release **`v1.8.0-beta`** quando o operador cortar — ver [1.8.0-beta.md](../../releases/1.8.0-beta.md). | | **Docker Hub** (publicado) | **`fabioleitao/data_boar:1.7.4.post12`** + **`latest`** = `sha256:ab8f5dad3e336…` (publicado **2026-07-30**; base **`python:3.14-slim`**, distroless nonroot, **`popcnt=0`**). Tag histórica de junho **`1.7.4`** intocada. **Sem** refresh de marketing Hub só por **`-beta`**. | | **Wheelhouse** | [**`wheelhouse-x86-64-v1-2026-07-29`**](https://github.com/DataBoar/data-boar-site/releases/tag/wheelhouse-x86-64-v1-2026-07-29) — **58** `.whl` (incl. **14× `cp314t`**: 10 ML + 4 extras SQL `linux_x86_64`) | -| **Próximo publicável** | Promover para **`1.8.0-rc`** / estável **`1.8.0`** conforme [VERSIONING.md](../VERSIONING.md) + ADR-0072/0073 (release gate + release-ritual) | +| **Próximo publicável** | Estável **`1.8.0`** conforme [VERSIONING.md](../VERSIONING.md) + ADR-0072/0073 (release-ritual) | --- diff --git a/docs/plans/PLANS_TODO.md b/docs/plans/PLANS_TODO.md index 825fa065f..5133cf867 100644 --- a/docs/plans/PLANS_TODO.md +++ b/docs/plans/PLANS_TODO.md @@ -96,7 +96,7 @@ When **partners** or **buyers** anchor on a vertical (MSP, insurance, RPO, real - **Jurisdiction hints (shipped):** Optional DPO-oriented **Report info** rows from **finding metadata** heuristics (`report.jurisdiction_hints`, CLI/API/dashboard opt-in); **not** legal conclusions — [ADR 0026](../adr/ADR-0026-optional-jurisdiction-hints-dpo-facing-heuristic-metadata-only.md), [USAGE.md](../USAGE.md). Further regions/samples remain **incremental** (config + code), not a completeness promise. - **Dependabot / pip-audit / PyPI supply chain:** Committed **`uv.lock`**, CI **`pip-audit`**, and **Dependabot** (pip + github-actions) address **known CVEs** and **dependency drift** on the **PyPI** install path—they do **not** replace human review of PRs or detect every **malicious** / typosquat scenario. **SBOM** artifacts: [ADR 0003](../adr/ADR-0003-sbom-roadmap-cyclonedx-then-syft.md). CI workflows (**`ci.yml`**, **CodeQL**, **Semgrep**, **slack-ops-digest**) pin third-party Actions to **commit SHAs**; **`setup-uv`** pins **uv** CLI semver — bump via **Dependabot** (github-actions) or deliberately; details: [WORKFLOW_DEFERRED_FOLLOWUPS.md](../ops/WORKFLOW_DEFERRED_FOLLOWUPS.md). Framing (trust, marketplaces): [SUPPLY_CHAIN_AND_TRUST_SIGNALS.md](../ops/inspirations/SUPPLY_CHAIN_AND_TRUST_SIGNALS.md). **Bump workflow:** edit **`pyproject.toml`**, then **`uv lock`**, **`uv export --no-emit-package pyproject.toml -o requirements.txt`**, **`.\scripts\check-all.ps1`**. **Upstream-blocked alerts:** [DEPENDABOT_PYOPENSSL_SNOWFLAKE.md](../ops/DEPENDABOT_PYOPENSSL_SNOWFLAKE.md); [DEPENDABOT_PYGMENTS_CVE.md](../ops/DEPENDABOT_PYGMENTS_CVE.md). - **Docker Hub / Scout (–1b):** After **deps or Dockerfile** changes, rebuild, **push**, **`docker scout quickview`**. Debian **base** packages may still show **CVEs with no fix** in the current slim image (e.g. **ncurses**) — acceptable until **`python:*-slim`** refreshes; document operator exceptions if needed. -- **Published vs working:** **published** customer channels remain **`1.7.4.post12`** / **`v1.7.4.post12`** (PyPI + Hub; GA **`1.7.4`** in history). **`main` working tree:** **`1.8.0-beta`** (`maturity_build=116`, ADR-0073 beta band; reconciled 2026-08-22) — git-only; notes [docs/releases/1.8.0-beta.md](../releases/1.8.0-beta.md). **Next publishable horizon:** **`1.8.0-rc`** / stable **`1.8.0`**. **Pick one primary slice per bundle** (avoid mixing maturity POC closure, vendor adapters, and unrelated H3 fronts): default **v1.8.0** candidate is maturity assessment **POC ready** (`scripts/smoke-maturity-assessment-poc.ps1` + [SMOKE_MATURITY_ASSESSMENT_POC.md](../ops/SMOKE_MATURITY_ASSESSMENT_POC.md) checklist). Further **scope-import** vendor adapters are GitHub milestone **v1.8.1** (not v1.8.0). +- **Published vs working:** **published** customer channels remain **`1.7.4.post12`** / **`v1.7.4.post12`** (PyPI + Hub; GA **`1.7.4`** in history). **`main` working tree:** **`1.8.0-rc`** (`maturity_build=127`, ADR-0073 rc band; cut 2026-09-22) — git-only; notes [docs/releases/1.8.0-rc.md](../releases/1.8.0-rc.md) (beta history: [1.8.0-beta.md](../releases/1.8.0-beta.md)). **Next publishable horizon:** stable **`1.8.0`**. **Pick one primary slice per bundle** (avoid mixing maturity POC closure, vendor adapters, and unrelated H3 fronts): default **v1.8.0** candidate is maturity assessment **POC ready** (`scripts/smoke-maturity-assessment-poc.ps1` + [SMOKE_MATURITY_ASSESSMENT_POC.md](../ops/SMOKE_MATURITY_ASSESSMENT_POC.md) checklist). Further **scope-import** vendor adapters are GitHub milestone **v1.8.1** (not v1.8.0). - **Dashboard transport (HTTPS / explicit HTTP):** Shipped on `main` — `main.py --web` requires **`--https-cert-file`+`--https-key-file`** or **`--allow-insecure-http`** (or `api.*` equivalents); Docker **`CMD`** includes `--allow-insecure-http`; **`GET /status`** and **`GET /health`** expose **`dashboard_transport`**, **`enterprise_surface`**, and canonical **`trust_state`** / **`trust_reasons`** / **`output_confidence`** (S2a wave-1). See [PLAN_DASHBOARD_HTTPS_BY_DEFAULT_AND_HTTP_EXPLICIT_RISK.md](completed/PLAN_DASHBOARD_HTTPS_BY_DEFAULT_AND_HTTP_EXPLICIT_RISK.md) (Phase 4 audit-export ✅; Phase 7 🔄 partial wave-1). **Trusted-proxy edge TLS (#1515):** [PLAN_DASHBOARD_TRUSTED_PROXY_TLS.md](PLAN_DASHBOARD_TRUSTED_PROXY_TLS.md) — suppress false plaintext banner only when peer ∈ `api.trusted_proxy_cidrs` and forwarded proto is trusted `https`. - **Opt-in port / service hints (roadmap):** Proposal only — allowlisted hosts/ports, zero-trust friendly, optional enterprise feature; [PLAN_OPT_IN_NETWORK_PORT_SERVICE_HINTS.md](PLAN_OPT_IN_NETWORK_PORT_SERVICE_HINTS.md). - **Scope import / inventory bootstrap (roadmap):** **v1 shipped on `main`:** `scripts/scope_import_csv.py` + `config/scope_import_csv.py` + **GLPI adapter** (`scope_import_glpi`) + tests + USAGE/TECH_GUIDE + **EN/pt-BR** [SCOPE_IMPORT_QUICKSTART.md](../ops/SCOPE_IMPORT_QUICKSTART.md) — canonical **CSV → YAML `targets` fragment** for operator merge; see [PLAN_SCOPE_IMPORT_FROM_EXPORTS.md](completed/PLAN_SCOPE_IMPORT_FROM_EXPORTS.md). **Further vendor adapters** (Live Optics, Nagios/Cacti-class, observability exports) **stay backlog until promoted**; complements opt-in port hints (**passive seed** vs **active** probes). **Medium-term [H2]:** [PLAN_DATABRICKS_UNITY_LAKEHOUSE_SCOPE_AND_SCAN.md](PLAN_DATABRICKS_UNITY_LAKEHOUSE_SCOPE_AND_SCAN.md) — **lakehouse as soup ingredient** (SQL scan) + **UC / curated tables as recipe** (inventory → targets); **Pro/Enterprise–shaped**, **customer-pull** before deep design. **[H2] findings sink:** [PLAN_FINDINGS_CORPORATE_REPOSITORY_EXPORT.md](PLAN_FINDINGS_CORPORATE_REPOSITORY_EXPORT.md) — optional **export/sync of scan findings** from local SQLite to **customer-chosen** corporate stores (SQL, MongoDB, lake/object staging); **v1.8.0 [#1058](https://github.com/DataBoar/data-boar/issues/1058)** docs-first: catalog tag formats + opt-in PII-as-quality-check sidecar; **discovery stays read-only** (no source write-back). Same **customer-pull** rule; **reorder PLANS_TODO** if a contract requires it sooner. diff --git a/docs/releases/1.8.0-beta.md b/docs/releases/1.8.0-beta.md index bebe4a6cc..d0b71c25b 100644 --- a/docs/releases/1.8.0-beta.md +++ b/docs/releases/1.8.0-beta.md @@ -1,4 +1,6 @@ -# Pre-release 1.8.0-beta (git working line — not PyPI / Docker Hub marketing) +# Pre-release 1.8.0-beta (historical beta line — superseded on `main` by **`1.8.0-rc`**) + +> **Current working line:** [1.8.0-rc.md](1.8.0-rc.md). Below documents the **beta** era of the **`1.8.0`** public line. **Kind:** **GitHub pre-release** (non-production) when tagged — use **Set as a pre-release** / `gh release create … --prerelease`. diff --git a/docs/releases/1.8.0-rc.md b/docs/releases/1.8.0-rc.md new file mode 100644 index 000000000..bcccb7fb1 --- /dev/null +++ b/docs/releases/1.8.0-rc.md @@ -0,0 +1,55 @@ +# Pre-release 1.8.0-rc (release candidate — not PyPI / Docker Hub marketing) + +**Kind:** **GitHub pre-release** (non-production) when tagged — use **Set as a pre-release** / `gh release create … --prerelease`. + +**Working version string:** **`1.8.0-rc`** in `pyproject.toml` and on public surfaces (`--version`, About, User-Agent). + +**Maturity octet (ADR-0073):** **`[tool.databoar] maturity_build = 127`** — **rc band entry** on same-line promotion from **`1.8.0-beta`** (last beta reconciliation **`.116`**, 2026-08-22). Resolves the ADR-0073 **TBD** at first **`1.8.0-rc`** cut: **jump to rc band floor (`127`)**, not organic continuation from **`.116`**. **`.postN`** does not apply on this pre-release line. + +**Published customer channels (unchanged until stable `1.8.0` ritual):** + +| Channel | Still | +| --- | --- | +| **PyPI / Docker Hub / GitHub Latest (stable pointer)** | **`1.7.4.post12`** / **`v1.7.4.post12`** (and historical GA **`1.7.4`**) | +| **Hub marketing paste** | No refresh required for **`-rc`** alone ([VERSIONING.md](../VERSIONING.md), release-publish-sequencing) | + +--- + +## Intent + +- Signal **release-candidate readiness** for **`1.8.0`** on `main` (tests/docs/supply-chain posture aligned for final validation) **without** moving PyPI **`latest`** or Docker Hub **`latest`** off the **`1.7.4`** fix-line. +- Accumulated product highlights since **`1.7.4.post12`** remain catalogued under **[CHANGELOG.md](../../CHANGELOG.md)** § **`1.8.0-beta`** (frozen at this promotion). + +--- + +## Map: public version ↔ maturity_build (1.8.0 line) + +| `[project] version` | `maturity_build` | Notes | +| --- | --- | --- | +| **`1.8.0-beta`** (cut `604c1b5c`) | **`.1`** | Beta band reset | +| **`1.8.0-beta`** (reconciled 2026-08-22) | **`.116`** | Last beta octet before RC | +| **`1.8.0-rc`** (this cut) | **`.127`** | RC band entry — see [1.8.0-beta.md](1.8.0-beta.md) for beta-era map | + +--- + +## Optional GitHub pre-release (operator only) + +After this bump is on `main`: + +```bash +git tag -a v1.8.0-rc -m "v1.8.0-rc: 1.8.0 release candidate" +git push origin v1.8.0-rc +gh release create v1.8.0-rc --prerelease --title "v1.8.0-rc (pre-release)" --notes-file docs/releases/1.8.0-rc.md +``` + +**Web UI:** enable **Set as a pre-release**; leave **Set as the latest release** **off** so **`v1.7.4.post12`** remains the stable **Latest** pointer unless you intentionally promote an RC. + +**Do not** publish PyPI or move Docker Hub **`latest`** for **`-rc`** (distribution policy: git-only for external consumers on pre-release indexes). + +--- + +## Toward stable `1.8.0` + +1. Final validation (CI green, operator lab evidence, release notes for **`1.8.0`**). +2. Bump `pyproject.toml` to **`1.8.0`** (no suffix) on the commit you will tag — **`maturity_build`** → **`.200`** GA anchor per ADR-0073. +3. Operator **release-ritual**: tag **`v1.8.0`** → GitHub Release (not pre-release) → local Docker smoke → Hub/PyPI as applicable. diff --git a/main.py b/main.py index 02051c807..19d7b3847 100644 --- a/main.py +++ b/main.py @@ -538,7 +538,7 @@ def main() -> None: "\n" " # After a pip/pipx upgrade: re-baseline integrity hashes (operator confirm)\n" f" {prog} --config config.yaml --reconcile-integrity-anchor " - "--confirm-upgrade-to=1.8.0-beta\n" + "--confirm-upgrade-to=1.8.0-rc\n" "\n" "Web/API examples:\n" " # HTTPS: PEM cert + key (TLS >= 1.2)\n" diff --git a/packaging/nfpm/generated/PACKAGES.meta.json b/packaging/nfpm/generated/PACKAGES.meta.json index 82dae673b..1d4a1dfce 100644 --- a/packaging/nfpm/generated/PACKAGES.meta.json +++ b/packaging/nfpm/generated/PACKAGES.meta.json @@ -2,7 +2,7 @@ "schema_version": 1, "issue": 1403, "adr": "0084", - "version": "1.8.0-beta", + "version": "1.8.0-rc", "packagers": [ "deb", "rpm", diff --git a/packaging/nfpm/generated/data-boar-compressed.yaml b/packaging/nfpm/generated/data-boar-compressed.yaml index 637fe530e..e887409dc 100644 --- a/packaging/nfpm/generated/data-boar-compressed.yaml +++ b/packaging/nfpm/generated/data-boar-compressed.yaml @@ -1,7 +1,7 @@ name: data-boar-compressed arch: ${NFPM_ARCH} platform: linux -version: 1.8.0-beta +version: 1.8.0-rc version_schema: none release: '1' section: utils @@ -14,7 +14,7 @@ vendor: Data Boar homepage: https://github.com/DataBoar/data-boar license: AGPL-3.0-or-later depends: -- data-boar (= 1.8.0-beta-1) +- data-boar (= 1.8.0-rc-1) contents: - src: staging/usr/lib/data-boar/extras/compressed/ dst: /usr/lib/data-boar/extras/compressed/ @@ -22,13 +22,13 @@ contents: overrides: deb: depends: - - data-boar (= 1.8.0-beta-1) + - data-boar (= 1.8.0-rc-1) rpm: depends: - - data-boar = 1.8.0-beta-1 + - data-boar = 1.8.0-rc-1 apk: depends: - - data-boar=1.8.0-beta-r1 + - data-boar=1.8.0-rc-r1 archlinux: depends: - - data-boar=1.8.0-beta-1 + - data-boar=1.8.0-rc-1 diff --git a/packaging/nfpm/generated/data-boar-dataformats.yaml b/packaging/nfpm/generated/data-boar-dataformats.yaml index 51572b2fe..7c68a0a81 100644 --- a/packaging/nfpm/generated/data-boar-dataformats.yaml +++ b/packaging/nfpm/generated/data-boar-dataformats.yaml @@ -1,7 +1,7 @@ name: data-boar-dataformats arch: ${NFPM_ARCH} platform: linux -version: 1.8.0-beta +version: 1.8.0-rc version_schema: none release: '1' section: utils @@ -14,7 +14,7 @@ vendor: Data Boar homepage: https://github.com/DataBoar/data-boar license: AGPL-3.0-or-later depends: -- data-boar (= 1.8.0-beta-1) +- data-boar (= 1.8.0-rc-1) contents: - src: staging/usr/lib/data-boar/extras/dataformats/ dst: /usr/lib/data-boar/extras/dataformats/ @@ -22,13 +22,13 @@ contents: overrides: deb: depends: - - data-boar (= 1.8.0-beta-1) + - data-boar (= 1.8.0-rc-1) rpm: depends: - - data-boar = 1.8.0-beta-1 + - data-boar = 1.8.0-rc-1 apk: depends: - - data-boar=1.8.0-beta-r1 + - data-boar=1.8.0-rc-r1 archlinux: depends: - - data-boar=1.8.0-beta-1 + - data-boar=1.8.0-rc-1 diff --git a/packaging/nfpm/generated/data-boar-mssql.yaml b/packaging/nfpm/generated/data-boar-mssql.yaml index e766e35c2..ab4455d33 100644 --- a/packaging/nfpm/generated/data-boar-mssql.yaml +++ b/packaging/nfpm/generated/data-boar-mssql.yaml @@ -1,7 +1,7 @@ name: data-boar-mssql arch: ${NFPM_ARCH} platform: linux -version: 1.8.0-beta +version: 1.8.0-rc version_schema: none release: '1' section: utils @@ -14,7 +14,7 @@ vendor: Data Boar homepage: https://github.com/DataBoar/data-boar license: AGPL-3.0-or-later depends: -- data-boar (= 1.8.0-beta-1) +- data-boar (= 1.8.0-rc-1) contents: - src: staging/usr/lib/data-boar/extras/mssql/ dst: /usr/lib/data-boar/extras/mssql/ @@ -22,13 +22,13 @@ contents: overrides: deb: depends: - - data-boar (= 1.8.0-beta-1) + - data-boar (= 1.8.0-rc-1) rpm: depends: - - data-boar = 1.8.0-beta-1 + - data-boar = 1.8.0-rc-1 apk: depends: - - data-boar=1.8.0-beta-r1 + - data-boar=1.8.0-rc-r1 archlinux: depends: - - data-boar=1.8.0-beta-1 + - data-boar=1.8.0-rc-1 diff --git a/packaging/nfpm/generated/data-boar-nosql.yaml b/packaging/nfpm/generated/data-boar-nosql.yaml index 067a9fced..deb2e6487 100644 --- a/packaging/nfpm/generated/data-boar-nosql.yaml +++ b/packaging/nfpm/generated/data-boar-nosql.yaml @@ -1,7 +1,7 @@ name: data-boar-nosql arch: ${NFPM_ARCH} platform: linux -version: 1.8.0-beta +version: 1.8.0-rc version_schema: none release: '1' section: utils @@ -14,7 +14,7 @@ vendor: Data Boar homepage: https://github.com/DataBoar/data-boar license: AGPL-3.0-or-later depends: -- data-boar (= 1.8.0-beta-1) +- data-boar (= 1.8.0-rc-1) contents: - src: staging/usr/lib/data-boar/extras/nosql/ dst: /usr/lib/data-boar/extras/nosql/ @@ -22,13 +22,13 @@ contents: overrides: deb: depends: - - data-boar (= 1.8.0-beta-1) + - data-boar (= 1.8.0-rc-1) rpm: depends: - - data-boar = 1.8.0-beta-1 + - data-boar = 1.8.0-rc-1 apk: depends: - - data-boar=1.8.0-beta-r1 + - data-boar=1.8.0-rc-r1 archlinux: depends: - - data-boar=1.8.0-beta-1 + - data-boar=1.8.0-rc-1 diff --git a/packaging/nfpm/generated/data-boar-richmedia.yaml b/packaging/nfpm/generated/data-boar-richmedia.yaml index 93f8c362a..53d08f2e0 100644 --- a/packaging/nfpm/generated/data-boar-richmedia.yaml +++ b/packaging/nfpm/generated/data-boar-richmedia.yaml @@ -1,7 +1,7 @@ name: data-boar-richmedia arch: ${NFPM_ARCH} platform: linux -version: 1.8.0-beta +version: 1.8.0-rc version_schema: none release: '1' section: utils @@ -14,7 +14,7 @@ vendor: Data Boar homepage: https://github.com/DataBoar/data-boar license: AGPL-3.0-or-later depends: -- data-boar (= 1.8.0-beta-1) +- data-boar (= 1.8.0-rc-1) contents: - src: staging/usr/lib/data-boar/extras/richmedia/ dst: /usr/lib/data-boar/extras/richmedia/ @@ -22,13 +22,13 @@ contents: overrides: deb: depends: - - data-boar (= 1.8.0-beta-1) + - data-boar (= 1.8.0-rc-1) rpm: depends: - - data-boar = 1.8.0-beta-1 + - data-boar = 1.8.0-rc-1 apk: depends: - - data-boar=1.8.0-beta-r1 + - data-boar=1.8.0-rc-r1 archlinux: depends: - - data-boar=1.8.0-beta-1 + - data-boar=1.8.0-rc-1 diff --git a/packaging/nfpm/generated/data-boar-shares.yaml b/packaging/nfpm/generated/data-boar-shares.yaml index b34967052..1a81eaeda 100644 --- a/packaging/nfpm/generated/data-boar-shares.yaml +++ b/packaging/nfpm/generated/data-boar-shares.yaml @@ -1,7 +1,7 @@ name: data-boar-shares arch: ${NFPM_ARCH} platform: linux -version: 1.8.0-beta +version: 1.8.0-rc version_schema: none release: '1' section: utils @@ -14,7 +14,7 @@ vendor: Data Boar homepage: https://github.com/DataBoar/data-boar license: AGPL-3.0-or-later depends: -- data-boar (= 1.8.0-beta-1) +- data-boar (= 1.8.0-rc-1) contents: - src: staging/usr/lib/data-boar/extras/shares/ dst: /usr/lib/data-boar/extras/shares/ @@ -22,13 +22,13 @@ contents: overrides: deb: depends: - - data-boar (= 1.8.0-beta-1) + - data-boar (= 1.8.0-rc-1) rpm: depends: - - data-boar = 1.8.0-beta-1 + - data-boar = 1.8.0-rc-1 apk: depends: - - data-boar=1.8.0-beta-r1 + - data-boar=1.8.0-rc-r1 archlinux: depends: - - data-boar=1.8.0-beta-1 + - data-boar=1.8.0-rc-1 diff --git a/packaging/nfpm/generated/data-boar.yaml b/packaging/nfpm/generated/data-boar.yaml index 91e9a1bd7..7f2593b49 100644 --- a/packaging/nfpm/generated/data-boar.yaml +++ b/packaging/nfpm/generated/data-boar.yaml @@ -1,7 +1,7 @@ name: data-boar arch: ${NFPM_ARCH} platform: linux -version: 1.8.0-beta +version: 1.8.0-rc version_schema: none release: '1' section: utils diff --git a/packaging/void/generated/PACKAGES.meta.json b/packaging/void/generated/PACKAGES.meta.json index 7ff3631b8..973b169d8 100644 --- a/packaging/void/generated/PACKAGES.meta.json +++ b/packaging/void/generated/PACKAGES.meta.json @@ -2,8 +2,8 @@ "schema_version": 1, "issue": 1404, "adr": "0084", - "version_pep440": "1.8.0-beta", - "version_xbps": "1.8.0beta1", + "version_pep440": "1.8.0-rc", + "version_xbps": "1.8.0rc1", "packager": "xbps", "void_packages_overlay": "packaging/void/generated/srcpkgs", "upstream_void_packages": "out_of_scope", diff --git a/packaging/void/generated/srcpkgs/data-boar/template b/packaging/void/generated/srcpkgs/data-boar/template index 26fe8b698..12f47d8cb 100644 --- a/packaging/void/generated/srcpkgs/data-boar/template +++ b/packaging/void/generated/srcpkgs/data-boar/template @@ -6,7 +6,7 @@ # void-packages submission is out of scope for #1404. # Validation: Podman Void — not lab metal. glibc staging is x86_64 only. pkgname=data-boar -version=1.8.0beta1 +version=1.8.0rc1 revision=1 archs="x86_64" create_wrksrc=yes diff --git a/pyproject.toml b/pyproject.toml index 5a098fdbe..6a1d07318 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "data-boar" -version = "1.8.0-beta" +version = "1.8.0-rc" description = "Data Boar — compliance-aware discovery and mapping of personal and sensitive data across databases, files, and APIs (LGPD, GDPR, CCPA, and configurable frameworks)." readme = "README.md" requires-python = ">=3.12" @@ -381,8 +381,8 @@ dev = [ ] # Operator-only maturity octet (ADR-0073). Never copy into [project].version. -# New public line 1.8.0: maturity_build resets to beta band (1–126); first beta = 1. -# Reconciled 2026-08-22: 115 fix/feat since cut 604c1b5c → .116 (see docs/releases/1.8.0-beta.md). -# Map / notes: docs/releases/1.8.0-beta.md (prior 1.7.4.postN maps remain under docs/releases/). +# 1.8.0 line: beta band 1–126 (cut 604c1b5c); rc band 127–199 (promotion 2026-09-22). +# Last beta reconciliation: maturity_build = 116 (2026-08-22). RC cut enters rc band at 127 (ADR-0073). +# Map / notes: docs/releases/1.8.0-rc.md (beta map: docs/releases/1.8.0-beta.md). [tool.databoar] -maturity_build = 116 +maturity_build = 127 diff --git a/tests/test_emit_provenance.py b/tests/test_emit_provenance.py index 8a3617f8c..fec509f13 100644 --- a/tests/test_emit_provenance.py +++ b/tests/test_emit_provenance.py @@ -27,7 +27,7 @@ def test_emit_and_verify_with_sboms(tmp_path: Path) -> None: _sha_file(app, b'{"bomFormat":"CycloneDX"}') _sha_file(runtime, b'{"bomFormat":"CycloneDX","specVersion":"1.6"}') (tmp_path / "pyproject.toml").write_text( - '[project]\nname = "data-boar"\nversion = "1.8.0-beta"\n', + '[project]\nname = "data-boar"\nversion = "1.8.0-rc"\n', encoding="utf-8", ) commit = "a" * 40 @@ -53,7 +53,7 @@ def test_emit_and_verify_with_sboms(tmp_path: Path) -> None: assert record["kind"] == KIND assert record["signed_slsa"] is False assert record["source_commit"] == commit - assert record["version"] == "1.8.0-beta" + assert record["version"] == "1.8.0-rc" assert "application" in record["sbom_digests"] assert "runtime" in record["sbom_digests"] assert record["signed_attestation"] is None diff --git a/tests/test_maturity_build_accounting.py b/tests/test_maturity_build_accounting.py index 2c1de23d3..ba1640afe 100644 --- a/tests/test_maturity_build_accounting.py +++ b/tests/test_maturity_build_accounting.py @@ -24,10 +24,11 @@ POST11_MATURITY_BUILD = 262 POST12_FIX_COUNT = 1 POST12_MATURITY_BUILD = 263 -# New public line 1.8.0-beta (ADR-0073): octet resets into beta band; first beta = 1. -# Reconciled 2026-08-22: 115 fix/feat commits since cut 604c1b5c (exclusive) → 1 + 115 = 116. +# 1.8.0 beta line (ADR-0073): octet resets into beta band at cut; reconciled 2026-08-22. LINE_180_BETA_FIX_COUNT_SINCE_CUT = 115 LINE_180_BETA_MATURITY_BUILD = 1 + LINE_180_BETA_FIX_COUNT_SINCE_CUT +# 1.8.0-rc promotion (2026-09-22): rc band floor per docs/releases/1.8.0-rc.md. +LINE_180_RC_MATURITY_BUILD = 127 def _load_pyproject() -> dict: @@ -52,11 +53,14 @@ def test_post12_canonical_map_arithmetic_is_internally_consistent() -> None: assert POST7_MATURITY_BUILD + POST8_FIX_COUNT == POST8_MATURITY_BUILD -def test_pyproject_maturity_build_matches_180_beta_reconciled_octet() -> None: +def test_pyproject_maturity_build_matches_180_rc_cut() -> None: data = _load_pyproject() version = data.get("project", {}).get("version") maturity = data.get("tool", {}).get("databoar", {}).get("maturity_build") - assert version == "1.8.0-beta" - assert maturity == LINE_180_BETA_MATURITY_BUILD - assert maturity == 116 + assert version == "1.8.0-rc" + assert maturity == LINE_180_RC_MATURITY_BUILD + assert maturity == 127 assert maturity != POST12_MATURITY_BUILD # must not carry .263 across lines + assert ( + maturity > LINE_180_BETA_MATURITY_BUILD + ) # rc band entry above last beta octet diff --git a/tests/test_native_package_release.py b/tests/test_native_package_release.py index 000aab953..08b84b677 100644 --- a/tests/test_native_package_release.py +++ b/tests/test_native_package_release.py @@ -32,8 +32,8 @@ def test_issue_1408_example_names_are_valid() -> None: def test_nfpm_apk_filename_normalizes_to_alpine() -> None: """nfpm 2.x emits name_ver_arch.apk; #1408 contract is name-ver-rN.apk.""" - nfpm = "data-boar_1.8.0-beta-r1_x86_64.apk" - alpine = "data-boar-1.8.0-beta-r1.apk" + nfpm = "data-boar_1.8.0-rc-r1_x86_64.apk" + alpine = "data-boar-1.8.0-rc-r1.apk" assert classify_package_name(nfpm) is None assert alpine_apk_name_from_nfpm(nfpm) == alpine assert classify_package_name(alpine) == "apk" @@ -41,10 +41,10 @@ def test_nfpm_apk_filename_normalizes_to_alpine() -> None: def test_normalize_nfpm_apk_renames_in_dir(tmp_path: Path) -> None: - src = tmp_path / "data-boar_1.8.0-beta-r1_x86_64.apk" + src = tmp_path / "data-boar_1.8.0-rc-r1_x86_64.apk" src.write_bytes(b"apk-stub\n") renamed = normalize_nfpm_apk_filenames(tmp_path) - dest = tmp_path / "data-boar-1.8.0-beta-r1.apk" + dest = tmp_path / "data-boar-1.8.0-rc-r1.apk" assert [p.name for p in renamed] == [dest.name] assert dest.is_file() assert not src.exists() @@ -60,7 +60,7 @@ def test_hyphen_only_deb_is_rejected() -> None: def test_validate_and_checksums(tmp_path: Path) -> None: - pkg = tmp_path / "data-boar_1.8.0-beta_amd64.deb" + pkg = tmp_path / "data-boar_1.8.0-rc_amd64.deb" pkg.write_bytes(b"deb-stub\n") assert validate_package_names(tmp_path) == [] sums = write_sha256sums(tmp_path) @@ -75,14 +75,14 @@ def test_validate_and_checksums(tmp_path: Path) -> None: def test_merge_native_packages_leaves_files_intact() -> None: manifest = { "generated_at": "2026-08-18T00:00:00Z", - "data_boar_version": "1.8.0-beta", + "data_boar_version": "1.8.0-rc", "files": [{"path": "main.py", "sha256": "ab" * 32}], } merged = merge_native_packages( manifest, [ { - "name": "data-boar_1.8.0-beta_amd64.deb", + "name": "data-boar_1.8.0-rc_amd64.deb", "packager": "deb", "sha256": "cd" * 32, } @@ -94,13 +94,13 @@ def test_merge_native_packages_leaves_files_intact() -> None: def test_maybe_gpg_sign_sums_skips_without_key(tmp_path: Path) -> None: sums = tmp_path / "SHA256SUMS" - sums.write_text("deadbeef data-boar_1.8.0-beta_amd64.deb\n", encoding="utf-8") + sums.write_text("deadbeef data-boar_1.8.0-rc_amd64.deb\n", encoding="utf-8") assert maybe_gpg_sign_sums(sums) is None assert not (tmp_path / "SHA256SUMS.asc").exists() def test_merge_manifest_refuses_missing_or_empty_files(tmp_path: Path) -> None: - pkg = tmp_path / "data-boar_1.8.0-beta_amd64.deb" + pkg = tmp_path / "data-boar_1.8.0-rc_amd64.deb" pkg.write_bytes(b"deb-stub\n") missing = tmp_path / "no-such-manifest.json" assert ( @@ -156,7 +156,7 @@ def test_apply_preserved_native_packages(tmp_path: Path) -> None: { "files": [], "native_packages": [ - {"name": "data-boar_1.8.0-beta_amd64.deb", "sha256": "bb" * 32} + {"name": "data-boar_1.8.0-rc_amd64.deb", "sha256": "bb" * 32} ], } ) diff --git a/tests/test_pyproject_sql_extras.py b/tests/test_pyproject_sql_extras.py index a10a8f2a2..450586164 100644 --- a/tests/test_pyproject_sql_extras.py +++ b/tests/test_pyproject_sql_extras.py @@ -61,14 +61,14 @@ def test_sql_optional_extras_present() -> None: assert not missing, f"missing SQL extras in pyproject.toml: {missing}" -def test_maturity_build_reconciled_for_180_beta_line() -> None: - """ADR-0073: beta band reset at cut; octet advances per fix/feat (reconciled .116).""" +def test_maturity_build_matches_180_rc_cut() -> None: + """ADR-0073: rc band entry at 127 on beta→rc promotion (docs/releases/1.8.0-rc.md).""" data = _load_pyproject() maturity = data.get("tool", {}).get("databoar", {}).get("maturity_build") - assert maturity == 116 + assert maturity == 127 -def test_version_is_180_beta_not_phantom_175() -> None: +def test_version_is_180_rc_not_phantom_175() -> None: version = _load_pyproject().get("project", {}).get("version") - assert version == "1.8.0-beta" + assert version == "1.8.0-rc" assert not str(version).startswith("1.7.5") diff --git a/tests/test_report_advisory.py b/tests/test_report_advisory.py index 621b58bd5..bbfcdf099 100644 --- a/tests/test_report_advisory.py +++ b/tests/test_report_advisory.py @@ -17,7 +17,7 @@ def _about(**overrides: object) -> dict: about = { "name": "Data Boar", - "version": "1.8.0-beta", + "version": "1.8.0-rc", "author": "Fabio Leitao", "license": "BSD 3-Clause License", "copyright": "Copyright (c) 2025-2026, Fabio Leitao", diff --git a/uv.lock b/uv.lock index 3eaff5d48..a78355709 100644 --- a/uv.lock +++ b/uv.lock @@ -1041,7 +1041,7 @@ validation = [ [[package]] name = "data-boar" -version = "1.8.0b0" +version = "1.8.0rc0" source = { editable = "." } dependencies = [ { name = "annotated-doc" },