Skip to content

Commit df7998b

Browse files
Release v0.9.0: Hostile Precision & Lab Gallery (#66)
1 parent 1fc5ffe commit df7998b

263 files changed

Lines changed: 16945 additions & 16775 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.bumpversion.toml

Lines changed: 47 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
# SPDX-License-Identifier: Apache-2.0
33

44
[tool.bumpversion]
5-
current_version = "0.7.1"
5+
current_version = "0.9.0"
66
parse = "(?P<major>\\d+)\\.(?P<minor>\\d+)\\.(?P<patch>\\d+)"
77
serialize = ["{major}.{minor}.{patch}"]
88

@@ -14,8 +14,8 @@ regex = true
1414

1515
[[tool.bumpversion.files]]
1616
filename = "package-lock.json"
17-
search = '"name":\s*"zenzic-docs",\s*"version":\s*"\d+\.\d+\.\d+"'
18-
replace = '"name": "zenzic-docs",\n "version": "{new_version}"'
17+
search = '"name":\s*"zenzic-doc",\s*"version":\s*"\d+\.\d+\.\d+"'
18+
replace = '"name": "zenzic-doc",\n "version": "{new_version}"'
1919
regex = true
2020

2121
[[tool.bumpversion.files]]
@@ -28,57 +28,76 @@ filename = "docusaurus.config.ts"
2828
search = "v{current_version}"
2929
replace = "v{new_version}"
3030

31-
[[tool.bumpversion.files]]
32-
filename = "README.md"
33-
search = "v{current_version}"
34-
replace = "v{new_version}"
3531

3632
[[tool.bumpversion.files]]
37-
filename = "README.it.md"
33+
filename = "RELEASE.md"
3834
search = "v{current_version}"
3935
replace = "v{new_version}"
4036

4137
[[tool.bumpversion.files]]
4238
filename = "RELEASE.md"
43-
search = "v{current_version}"
44-
replace = "v{new_version}"
39+
search = '(?m)^(\| Date\s+\|\s+)\d{{4}}-\d{{2}}-\d{{2}}(\s*\|)$'
40+
replace = '| Date | {now:%Y-%m-%d} |'
41+
regex = true
4542

4643
[[tool.bumpversion.files]]
47-
filename = "RELEASE.it.md"
48-
search = "v{current_version}"
49-
replace = "v{new_version}"
44+
filename = "docs/how-to/configure-ci-cd.mdx"
45+
search = 'version:\s*"?v?{current_version}"?'
46+
replace = 'version: "{new_version}"'
47+
regex = true
5048

5149
[[tool.bumpversion.files]]
52-
filename = "i18n/en/code.json"
50+
filename = "i18n/it/docusaurus-plugin-content-docs/current/how-to/configure-ci-cd.mdx"
51+
search = 'version:\s*"?v?{current_version}"?'
52+
replace = 'version: "{new_version}"'
53+
regex = true
54+
55+
[[tool.bumpversion.files]]
56+
filename = "i18n/it/docusaurus-plugin-content-docs/current.json"
57+
search = '"message": "{current_version}"'
58+
replace = '"message": "{new_version}"'
59+
60+
[[tool.bumpversion.files]]
61+
filename = "README.md"
62+
search = "badge/Zenzic-v{current_version}-blue"
63+
replace = "badge/Zenzic-v{new_version}-blue"
64+
65+
[[tool.bumpversion.files]]
66+
filename = "README.it.md"
67+
search = "badge/Zenzic-v{current_version}-blue"
68+
replace = "badge/Zenzic-v{new_version}-blue"
69+
70+
[[tool.bumpversion.files]]
71+
filename = "static/assets/brand/zenzic-brand-system.html"
5372
search = "v{current_version}"
5473
replace = "v{new_version}"
5574

5675
[[tool.bumpversion.files]]
57-
filename = "i18n/it/code.json"
76+
filename = "static/assets/social/social-card.svg"
5877
search = "v{current_version}"
5978
replace = "v{new_version}"
6079

6180
[[tool.bumpversion.files]]
62-
filename = "src/components/Homepage/Hero.tsx"
81+
filename = "static/assets/social/social-card-light.svg"
6382
search = "v{current_version}"
6483
replace = "v{new_version}"
6584

6685
[[tool.bumpversion.files]]
67-
filename = "src/components/Homepage/Quickstart.tsx"
68-
search = "zenzic {current_version}"
69-
replace = "zenzic {new_version}"
86+
filename = "i18n/en/code.json"
87+
search = '"message": "v{current_version}"'
88+
replace = '"message": "v{new_version}"'
7089

7190
[[tool.bumpversion.files]]
72-
filename = "src/pages/index.tsx"
73-
search = '"softwareVersion": "{current_version}"'
74-
replace = '"softwareVersion": "{new_version}"'
91+
filename = "i18n/it/code.json"
92+
search = '"message": "v{current_version}"'
93+
replace = '"message": "v{new_version}"'
7594

7695
[[tool.bumpversion.files]]
77-
filename = "docs/how-to/configure-ci-cd.mdx"
78-
search = 'version: "{current_version}"'
79-
replace = 'version: "{new_version}"'
96+
filename = "src/components/Homepage/Hero.tsx"
97+
search = "v{current_version}"
98+
replace = "v{new_version}"
8099

81100
[[tool.bumpversion.files]]
82-
filename = "i18n/it/docusaurus-plugin-content-docs/current/how-to/configure-ci-cd.mdx"
83-
search = 'version: "{current_version}"'
84-
replace = 'version: "{new_version}"'
101+
filename = "src/components/Homepage/Features.tsx"
102+
search = "v{current_version}"
103+
replace = "v{new_version}"
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
# SPDX-FileCopyrightText: 2026 PythonWoods <dev@pythonwoods.dev>
2+
# SPDX-License-Identifier: Apache-2.0
3+
4+
name: Bug Report
5+
description: Report a broken link, rendering error, translation issue, or build failure in the documentation portal.
6+
title: "fix(docs): <short description>"
7+
labels: ["bug", "triage"]
8+
body:
9+
- type: markdown
10+
attributes:
11+
value: |
12+
Thank you for taking the time to report a bug. Please fill in all required fields.
13+
14+
- type: dropdown
15+
id: category
16+
attributes:
17+
label: Bug category
18+
options:
19+
- Broken internal link
20+
- Broken external link
21+
- Translation error (EN / IT mismatch)
22+
- Missing translation (page not localised)
23+
- Rendering error (code block, admonition, diagram)
24+
- Build failure (yarn build / Docusaurus error)
25+
- Navigation / sidebar issue
26+
- Other
27+
multiple: false
28+
validations:
29+
required: true
30+
31+
- type: input
32+
id: page_url
33+
attributes:
34+
label: Affected page URL
35+
description: The URL of the page where the bug occurs (use the production URL or the local dev URL).
36+
placeholder: "https://zenzic.dev/docs/getting-started or http://localhost:3000/..."
37+
validations:
38+
required: true
39+
40+
- type: dropdown
41+
id: language
42+
attributes:
43+
label: Language
44+
options:
45+
- English (default)
46+
- Italian (it)
47+
- Both
48+
validations:
49+
required: true
50+
51+
- type: textarea
52+
id: expected
53+
attributes:
54+
label: Expected behaviour
55+
description: What should the page show or do?
56+
validations:
57+
required: true
58+
59+
- type: textarea
60+
id: actual
61+
attributes:
62+
label: Actual behaviour
63+
description: What does it actually show or do? Include screenshots if relevant.
64+
validations:
65+
required: true
66+
67+
- type: checkboxes
68+
id: checklist
69+
attributes:
70+
label: Pre-submission checklist
71+
options:
72+
- label: I have searched existing issues and this is not a duplicate.
73+
required: true
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
# SPDX-FileCopyrightText: 2026 PythonWoods <dev@pythonwoods.dev>
2+
# SPDX-License-Identifier: Apache-2.0
3+
4+
name: Feature Request
5+
description: Propose new documentation content, a translation, a tutorial, or a structural improvement.
6+
title: "feat(docs): <short description>"
7+
labels: ["enhancement", "triage"]
8+
body:
9+
- type: markdown
10+
attributes:
11+
value: |
12+
Before opening a feature request, please check the
13+
[open issues](https://github.com/PythonWoods/zenzic-doc/issues) to avoid duplicates.
14+
15+
- type: dropdown
16+
id: category
17+
attributes:
18+
label: Feature category
19+
options:
20+
- New tutorial
21+
- New how-to guide
22+
- New reference page
23+
- New blog post / release log
24+
- New ADR (Architecture Decision Record)
25+
- Italian translation of existing page
26+
- Navigation / sidebar restructure
27+
- Search improvement
28+
- Other
29+
multiple: false
30+
validations:
31+
required: true
32+
33+
- type: textarea
34+
id: problem
35+
attributes:
36+
label: Problem to solve
37+
description: What documentation gap does this fill? What question does it answer?
38+
validations:
39+
required: true
40+
41+
- type: textarea
42+
id: proposal
43+
attributes:
44+
label: Proposed content / change
45+
description: Describe the new page, section, or structural change in concrete terms.
46+
validations:
47+
required: true
48+
49+
- type: checkboxes
50+
id: pillars
51+
attributes:
52+
label: Documentation quality pillars
53+
description: Please confirm your proposal respects all that apply.
54+
options:
55+
- label: >
56+
**Accuracy** — all code samples and commands have been tested against the
57+
current stable Zenzic release.
58+
- label: >
59+
**EN / IT parity** — I will provide both English and Italian versions, or I have
60+
noted in the description that a Core Maintainer should handle the translation.
61+
- label: >
62+
**Zenzic-validated** — the page will pass `just check` (no broken links,
63+
no orphaned assets).
64+
65+
- type: checkboxes
66+
id: checklist
67+
attributes:
68+
label: Pre-submission checklist
69+
options:
70+
- label: I have searched existing issues and this is not a duplicate.
71+
required: true
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
---
2+
name: "🛡️ Gate Bypass Post-Mortem"
3+
about: "Break-Glass protocol — documented bypass of the `just verify` Final Guard."
4+
title: "[BYPASS] <short-emergency-description>"
5+
labels: ["gate-bypass", "priority:critical"]
6+
assignees: ""
7+
---
8+
<!-- SPDX-FileCopyrightText: 2026 PythonWoods <dev@pythonwoods.dev> -->
9+
<!-- SPDX-License-Identifier: Apache-2.0 -->
10+
<!-- markdownlint-disable MD003 MD041 -->
11+
12+
> **Blameless principles**
13+
>
14+
> 1. **Data, not blame.** The failure log is objective evidence; narrative is secondary.
15+
> 2. **System focus.** Root cause identifies *why the pipeline* (Zenzic / yarn build / GHA) failed, never who pushed.
16+
> 3. **Always-on remediation.** Every bypass produces a task that hardens the gate so it is no longer needed next time.
17+
18+
## 🚨 1. Trigger
19+
20+
> What made the immediate bypass necessary? (production hotfix, total CI infra outage, broken upstream Node dependency, ...)
21+
22+
## 📊 2. Gate Failure Log (Evidence)
23+
24+
> Paste the full output of `just verify` (or the failing step) that blocked the push.
25+
26+
```bash
27+
# paste log here
28+
```
29+
30+
## 🔍 3. Root Cause Analysis
31+
32+
- [ ] **False positive** (Zenzic flagged a legitimate documentation link)
33+
- [ ] **Build failure** (yarn build / Docusaurus rendering error)
34+
- [ ] **Flakiness** (network fetch during build, `yarn install` failure)
35+
- [ ] **Infrastructure** (GitHub Actions / local runner offline)
36+
- [ ] **Technical debt** (broken link introduced by upstream content change)
37+
- [ ] **Other** — describe:
38+
39+
## 🛠️ 4. Remediation
40+
41+
> Concrete change to the gate so this bypass becomes unnecessary in the future. Link the follow-up PR/issue here.
42+
43+
## ⏳ 5. Timeline & Scope
44+
45+
- **Bypass commit SHA / branch / PR:**
46+
- **Bypass author:** (informational only — blameless)
47+
- **Bypass time → post-mortem time** (max 24h):
48+
- **Permanent fix merged at:**
49+
50+
---
51+
52+
*Bypass closed only when the permanent fix lands. Until then this issue stays open and is reviewed at every sprint retrospective.*

.github/PULL_REQUEST_TEMPLATE.md

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
<!-- SPDX-FileCopyrightText: 2026 PythonWoods <dev@pythonwoods.dev> -->
2+
<!-- SPDX-License-Identifier: Apache-2.0 -->
3+
<!-- markdownlint-disable MD041 -->
4+
5+
## Description
6+
7+
<!-- Describe your changes in detail. Link the issue this PR resolves. -->
8+
9+
Closes #
10+
11+
## Type of change
12+
13+
- [ ] Bug fix (broken link, rendering error, build failure)
14+
- [ ] New content (tutorial, how-to, blog post, ADR)
15+
- [ ] Translation (EN ↔ IT)
16+
- [ ] Structural / navigation change
17+
- [ ] Dependency update (npm, Docusaurus version)
18+
19+
---
20+
21+
## Documentation Quality — mandatory checklist
22+
23+
Every PR touching `docs/`, `blog/`, `src/`, or `i18n/` must satisfy all that apply.
24+
25+
### 1. Accuracy & Link Validity
26+
27+
- [ ] All new internal links use relative paths and have been verified locally
28+
(`just check` or `yarn build` must pass without broken-link errors).
29+
- [ ] External links point to canonical, stable URLs — not redirects or preview deployments.
30+
- [ ] Code samples have been tested against the referenced Zenzic version.
31+
32+
### 2. EN / IT Parity
33+
34+
- [ ] The English source file(s) in `docs/`, `blog/`, or `src/` have been updated (or are unchanged).
35+
- [ ] The corresponding Italian file(s) in `i18n/it/` have been updated — **or** I have left a
36+
comment below explaining why parity is deferred and which Core Maintainer will handle the translation.
37+
38+
> **Graceful Degradation clause** — If you don't speak Italian, update the English files and
39+
> leave a comment here. A Core Maintainer will handle the Italian translation.
40+
41+
### 3. Build & Zenzic Self-Check
42+
43+
- [ ] `yarn build` completes without errors locally.
44+
- [ ] `just check` (Zenzic self-audit of this documentation portal) passes without new findings.
45+
- [ ] REUSE/SPDX headers are present on every new file.
46+
47+
### 4. D.I.A. (Documentation Impact Analysis)
48+
49+
- [ ] **D.I.A. (Documentation Impact Analysis):** I have evaluated the impact of this code change on the public documentation.
50+
- *If impacted:* [ ] I have opened a PR on `zenzic-doc` OR [ ] I request maintainer assistance to update the docs.
51+
52+
---
53+
54+
## Notes for reviewers
55+
56+
<!-- Anything unusual about this PR that reviewers should know? -->

0 commit comments

Comments
 (0)