<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Wiki on Dominicus In</title><link>https://dominicusin.github.io/wiki-build/</link><description>Recent content in Wiki on Dominicus In</description><generator>Hugo -- gohugo.io</generator><language>ru</language><copyright>© 2026</copyright><atom:link href="https://dominicusin.github.io/wiki-build/feed.xml" rel="self" type="application/rss+xml"/><item><title>CI/CD</title><link>https://dominicusin.github.io/wiki-build/ci-cd/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://dominicusin.github.io/wiki-build/ci-cd/</guid><description>&lt;h1 class="relative group"&gt;CI/CD
 &lt;div id="cicd" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#cicd" aria-label="Якорь"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h1&gt;
&lt;p&gt;Workflow inventory for &lt;code&gt;dominicusin.github.io&lt;/code&gt;. All checks must pass on &lt;code&gt;main&lt;/code&gt;.&lt;/p&gt;

&lt;h2 class="relative group"&gt;Required (branch protection)
 &lt;div id="required-branch-protection" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#required-branch-protection" aria-label="Якорь"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;🧪 Build, validate, test, link-check&lt;/strong&gt; (&lt;code&gt;quality.yml&lt;/code&gt;) — the only
&lt;em&gt;required&lt;/em&gt; status check. Lint + Hugo build + Jest + Playwright + link check.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 class="relative group"&gt;Security
 &lt;div id="security" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#security" aria-label="Якорь"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;Workflow&lt;/th&gt;
					&lt;th&gt;Purpose&lt;/th&gt;
					&lt;th&gt;Blocking?&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;security.yml&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;npm audit + Trivy + Semgrep&lt;/td&gt;
					&lt;td&gt;no&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;security-scan.yml&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;CodeQL + Gitleaks&lt;/td&gt;
					&lt;td&gt;no&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;dependency-review.yml&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;block PRs with new vulns&lt;/td&gt;
					&lt;td&gt;PR-only&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;sbom.yml&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;generate SBOM + attest&lt;/td&gt;
					&lt;td&gt;no&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;scorecard.yml&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;OpenSSF Scorecard&lt;/td&gt;
					&lt;td&gt;no (continue-on-error)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;license-check.yml&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;license allowlist&lt;/td&gt;
					&lt;td&gt;no&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;

&lt;h2 class="relative group"&gt;Housekeeping / PR mgmt
 &lt;div id="housekeeping--pr-mgmt" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#housekeeping--pr-mgmt" aria-label="Якорь"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;stale.yml&lt;/code&gt; — auto-close stale issues/PRs&lt;/li&gt;
&lt;li&gt;&lt;code&gt;lock-threads.yml&lt;/code&gt; — lock old threads&lt;/li&gt;
&lt;li&gt;&lt;code&gt;labeler.yml&lt;/code&gt; + &lt;code&gt;labeler.yml&lt;/code&gt; config — auto-label by path&lt;/li&gt;
&lt;li&gt;&lt;code&gt;pr-title-check.yml&lt;/code&gt; — Conventional Commits reminder&lt;/li&gt;
&lt;li&gt;&lt;code&gt;size-label.yml&lt;/code&gt; — PR size label&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 class="relative group"&gt;Deploy
 &lt;div id="deploy" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#deploy" aria-label="Якорь"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;hugo.yml&lt;/code&gt; — build + deploy to GitHub Pages (artifact attestation via
&lt;code&gt;actions/attest@v4.2.2&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;&lt;code&gt;deploy-dao.yml&lt;/code&gt; — DAO contract &lt;strong&gt;tests&lt;/strong&gt; always run; &lt;strong&gt;deploy&lt;/strong&gt; job
&lt;em&gt;skips&lt;/em&gt; when &lt;code&gt;DEPLOY_PRIVATE_KEY&lt;/code&gt; / &lt;code&gt;SEPOLIA_RPC_URL&lt;/code&gt; secrets are absent.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;fortify.yml&lt;/code&gt; — Fortify AST scan, &lt;em&gt;skips&lt;/em&gt; without credentials.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 class="relative group"&gt;Known external (not repo-owned)
 &lt;div id="known-external-not-repo-owned" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#known-external-not-repo-owned" aria-label="Якорь"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Vercel&lt;/strong&gt;, &lt;strong&gt;Snyk&lt;/strong&gt; — third-party GitHub Apps failing on rate/test limits.
Not fixable from this repo; disable in repo Settings → Integrations if unwanted.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CircleCI&lt;/strong&gt; — fixed via &lt;code&gt;.circleci/config.yml&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Engineering Blog — Wiki</title><link>https://dominicusin.github.io/wiki-build/home/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://dominicusin.github.io/wiki-build/home/</guid><description>&lt;h1 class="relative group"&gt;Engineering Blog — Wiki
 &lt;div id="engineering-blog--wiki" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#engineering-blog--wiki" aria-label="Якорь"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h1&gt;
&lt;p&gt;This wiki tracks the operations, CI/CD, and security posture of the
&lt;code&gt;dominicusin.github.io&lt;/code&gt; Hugo + Blowfish engineering blog.&lt;/p&gt;</description></item><item><title>Security</title><link>https://dominicusin.github.io/wiki-build/security/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://dominicusin.github.io/wiki-build/security/</guid><description>&lt;h1 class="relative group"&gt;Security
 &lt;div id="security" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#security" aria-label="Якорь"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h1&gt;
&lt;p&gt;Supply-chain and application-security posture for &lt;code&gt;dominicusin.github.io&lt;/code&gt;.&lt;/p&gt;

&lt;h2 class="relative group"&gt;Code scanning (CodeQL)
 &lt;div id="code-scanning-codeql" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#code-scanning-codeql" aria-label="Якорь"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Alerts: 0&lt;/strong&gt; (as of 2026-08-20). 8 &lt;code&gt;src/&lt;/code&gt; alerts fixed in code; 11
&lt;code&gt;scripts/&lt;/code&gt; alerts closed as &lt;code&gt;won't fix&lt;/code&gt; (build-time utilities, covered by
&lt;code&gt;codeql-config.yml&lt;/code&gt; &lt;code&gt;paths-ignore&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Config: &lt;code&gt;.github/codeql/codeql-config.yml&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 class="relative group"&gt;Secret scanning
 &lt;div id="secret-scanning" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#secret-scanning" aria-label="Якорь"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Resolved: Firebase web config is public-by-design (false positive).&lt;/li&gt;
&lt;li&gt;Gitleaks runs in &lt;code&gt;security-scan.yml&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 class="relative group"&gt;Attestations (SLSA)
 &lt;div id="attestations-slsa" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#attestations-slsa" aria-label="Якорь"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;actions/attest@v4.2.2&lt;/code&gt; (Generate Generic Attestations) runs on:
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;sbom.yml&lt;/code&gt; — attests the generated SBOM (&lt;code&gt;sbom.spdx.json&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;&lt;code&gt;hugo.yml&lt;/code&gt; — attests the built site artifact (&lt;code&gt;./public&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 class="relative group"&gt;Dependency hygiene
 &lt;div id="dependency-hygiene" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#dependency-hygiene" aria-label="Якорь"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Dependabot active (&lt;code&gt;dependabot.yml&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;&lt;code&gt;dependency-review.yml&lt;/code&gt; blocks PRs introducing new vulnerabilities.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;license-check.yml&lt;/code&gt; enforces a permissive license allowlist.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 class="relative group"&gt;Hardening notes
 &lt;div id="hardening-notes" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#hardening-notes" aria-label="Якорь"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;DA0 contracts compile/test under Hardhat &lt;strong&gt;2.x&lt;/strong&gt; (3.x breaks the CommonJS
config + chai-matchers). See issue #202 / milestone &amp;ldquo;CI/CD Hardening&amp;rdquo;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Deploy DAO contracts&lt;/code&gt; and &lt;code&gt;Fortify AST Scan&lt;/code&gt; are gated on secrets and
skip gracefully when absent (non-blocking).&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>