Skip to content

build(deps): bump actions/upload-artifact from 4 to 6 - #3

Merged
masteroleg merged 1 commit into
mainfrom
dependabot/github_actions/actions/upload-artifact-6
Feb 18, 2026
Merged

masteroleg merged 1 commit into
mainfrom
dependabot/github_actions/actions/upload-artifact-6

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Feb 17, 2026

Copy link
Copy Markdown
Contributor

Bumps actions/upload-artifact from 4 to 6.

Release notes

Sourced from actions/upload-artifact's releases.

v6.0.0

v6 - What's new

[!IMPORTANT] actions/upload-artifact@v6 now runs on Node.js 24 (runs.using: node24) and requires a minimum Actions Runner version of 2.327.1. If you are using self-hosted runners, ensure they are updated before upgrading.

Node.js 24

This release updates the runtime to Node.js 24. v5 had preliminary support for Node.js 24, however this action was by default still running on Node.js 20. Now this action by default will run on Node.js 24.

What's Changed

Full Changelog: actions/upload-artifact@v5.0.0...v6.0.0

v5.0.0

What's Changed

BREAKING CHANGE: this update supports Node v24.x. This is not a breaking change per-se but we're treating it as such.

New Contributors

Full Changelog: actions/upload-artifact@v4...v5.0.0

v4.6.2

What's Changed

New Contributors

Full Changelog: actions/upload-artifact@v4...v4.6.2

v4.6.1

What's Changed

... (truncated)

Commits
  • b7c566a Merge pull request #745 from actions/upload-artifact-v6-release
  • e516bc8 docs: correct description of Node.js 24 support in README
  • ddc45ed docs: update README to correct action name for Node.js 24 support
  • 615b319 chore: release v6.0.0 for Node.js 24 support
  • 017748b Merge pull request #744 from actions/fix-storage-blob
  • 38d4c79 chore: rebuild dist
  • 7d27270 chore: add missing license cache files for @​actions/core, @​actions/io, and mi...
  • 5f643d3 chore: update license files for @​actions/artifact@​5.0.1 dependencies
  • 1df1684 chore: update package-lock.json with @​actions/artifact@​5.0.1
  • b5b1a91 fix: update @​actions/artifact to ^5.0.0 for Node.js 24 punycode fix
  • Additional commits viewable in compare view

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4 to 6.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](actions/upload-artifact@v4...v6)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot added dependencies Pull requests that update a dependency file github_actions Pull requests that update GitHub Actions code labels Feb 17, 2026
@masteroleg
masteroleg merged commit 6710c99 into main Feb 18, 2026
1 check passed
@dependabot
dependabot Bot deleted the dependabot/github_actions/actions/upload-artifact-6 branch February 18, 2026 19:34
masteroleg added a commit that referenced this pull request Mar 14, 2026
…review

Restored the [data-routing-official] card that was incorrectly removed during a previous code review fix. Story 3.2 requires two distinct routing cards (official → Diia and business → request form) to satisfy the audience routing contract.

RUSSIAN SUMMARY:
Восстановлена карточка официального маршрута [data-routing-official], которая была ошибочно удалена в предыдущем коммите "code review fix". Story 3.2 явно требует две отдельные карточки маршрутизации (официальный путь → Diia и бизнес-путь → форма запроса) для соблюдения контракта аудиторной маршрутизации. Удаление было вызвано неправильной характеристикой карточки как "дублирующего CTA", хотя она является необходимой частью интерфейса выбора пути.

- `site/perevir-product/index.html` — restored official routing card with Diia CTA, satisfies Story 3.2 "two distinct paths" contract
  RU: восстановлена карточка официального маршрута с ссылкой на Diia, выполняет контракт Story 3.2 о двух отдельных путях

diff --git a/_bmad-output/implementation-artifacts/4-1-track-movement-from-homepage-to-proof.md b/_bmad-output/implementation-artifacts/4-1-track-movement-from-homepage-to-proof.md
new file mode 100644
index 0000000..38e96ed
--- /dev/null
+++ b/_bmad-output/implementation-artifacts/4-1-track-movement-from-homepage-to-proof.md
@@ -0,0 +1,289 @@
+# Story 4.1: Track Movement from Homepage to Proof
+
+Status: in-progress
+
+<!-- Note: Validation is optional. Run validate-create-story for quality check before dev-story. -->
+
+## Story
+
+As a product team member,
+I want to see when visitors move from the homepage to the main proof example,
+So that I can tell whether the trust-first entry is being used.
+
+## Acceptance Criteria
+
+**Given** a visitor moves from the homepage to the main proof example
+**When** that movement is captured
+**Then** it is recorded as a homepage-to-proof action
+**And** it can be distinguished from unrelated page views
+
+**Given** measurement data is stored or reviewed
+**When** homepage-to-proof actions are recorded
+**Then** the data excludes full raw codes and personal data
+**And** it remains suitable for public-site reporting
+
+**Given** measurement capture fails or is unavailable
+**When** a visitor uses the homepage proof entry
+**Then** the visitor still reaches the proof page normally
+**And** the measurement problem does not break the user journey
+
+## Tasks / Subtasks
+
+- [x] Define and document UTM parameter convention (AC: #1, #2) — see Dev Notes
+  - [x] Confirm `utm_source`, `utm_medium`, `utm_campaign` values match this story record
+- [x] Add UTM params to the homepage hero CTA link (AC: #1, #3)
+  - [x] Update `site/index.html` line 164: `href="/v/genuim/"` → `href="/v/genuim/?utm_source=homepage&utm_medium=hero_cta&utm_campaign=proof_entry"`
+  - [x] Verify the link still navigates to the proof page correctly in a browser
+- [x] Update the existing @smoke E2E test that asserts exact href (AC: #1, #3)
+  - [x] In `tests/e2e/home.spec.ts` line 38: updated `toHaveAttribute("href", "/v/genuim/")` to exact new URL with UTM params
+- [x] Add new @smoke E2E test verifying UTM params are present on the hero CTA (AC: #1, #2)
+  - [x] New test: hero CTA href contains `utm_source=homepage`, `utm_medium=hero_cta`, `utm_campaign=proof_entry`
+  - [x] Verify UTM params do not include personal data, raw codes, or PII
+- [x] Run full smoke suite before marking done (AC: #3)
+  - [x] `npm run test:smoke` (desktop Chromium) — 41/41 passing
+  - [x] `npm run test:smoke:mobile` (mobile) — 42/42 passing
+
+## Dev Notes
+
+### Epic 4 Preflight
+
+Epic 4 delivers funnel visibility for the Phase 1 proof-first journey. It has 3 stories:
+- **4.1** ← this story — UTM params on homepage CTA (passive, HTML-only)
+- **4.2** — Track requests by scenario and source (builds on 3.4 metadata)
+- **4.3** — Review the proof-first funnel (team-facing review guide)
+
+**What Epic 4 is allowed to do (Phase 1 boundary):**
+- ✅ Add passive UTM params to key CTA links (URL only, no JS, no script tags)
+- ✅ Document available measurement signals for manual team review
+- ✅ Use data already captured in `mailto:` payload from Story 3.4 (`scenario`, `source_path`)
+- ✅ Google Search Console + manual URL review as review mechanism
+
+**What Epic 4 is explicitly forbidden from doing:**
+- ❌ Installing Google Analytics, Plausible, or any third-party analytics script
+- ❌ Firing JS tracking events or custom measurement events
+- ❌ Creating a backend ingestion pipeline or request logging
+- ❌ Introducing telemetry or server-side capture of any kind
+- ❌ Building a live dashboard or live analytics surface
+- ❌ Including personal data or raw excise codes in any reporting output
+- ❌ Claiming data was "recorded" server-side or "stored" in a backend
+
+**Dependencies from Epic 3 already in place:**
+- `scenario` and `source_path` in `mailto:` payload → ✅ Story 3.4 done
+- CTA with `?scenario=brand-proof` on `/perevir-product/` → ✅ Story 3.2 done
+- Request form → ✅ Story 3.3 done
+- **What was NOT done before 4.1:** UTM params on the homepage hero CTA → this story
+
+---
+
+### UTM Parameter Convention (Defined Here — Use Exactly As Specified)
+
+The following UTM parameters are approved for this story. Use these exact values — do not invent alternatives.
+
+| Parameter | Value | Meaning |
+|-----------|-------|---------|
+| `utm_source` | `homepage` | Source page: the homepage |
+| `utm_medium` | `hero_cta` | Placement: hero call-to-action |
+| `utm_campaign` | `proof_entry` | Funnel: Phase 1 proof entry |
+
+**Resulting full CTA URL:**
+```
+/v/genuim/?utm_source=homepage&utm_medium=hero_cta&utm_campaign=proof_entry
+```
+
+**Privacy contract for these values:**
+- All values are predefined static strings — no personal data, no visitor identifiers, no raw codes

<div class="hero-actions">
-								<a href="/v/genuim/" class="cta-button">
+								<a href="/v/genuim/?utm_source=homepage&utm_medium=hero_cta&utm_campaign=proof_entry" class="cta-button">
 									<svg class="cta-button__icon" fill="none" stroke="currentColor" viewBox="0 0 24 24"
 										aria-hidden="true">
 										<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
diff --git a/tests/e2e/home.spec.ts b/tests/e2e/home.spec.ts
index ee21d0d..86d455f 100644
--- a/tests/e2e/home.spec.ts
+++ b/tests/e2e/home.spec.ts
@@ -32,10 +32,36 @@ test("@smoke GM landing page primary CTA links to /v/genuim", async ({
 	await page.goto(new URL("/", baseURL ?? "http://localhost:3000").toString());
 	await page.waitForLoadState("domcontentloaded");

-	// Primary CTA in hero must navigate to canonical proof path (AC: 3)
+	// Primary CTA in hero must navigate to canonical proof path with UTM params (AC: 3)
 	const primaryCta = page.locator(".hero-actions .cta-button").first();
 	await expect(primaryCta).toBeVisible();
-	await expect(primaryCta).toHaveAttribute("href", "/v/genuim/");
+	await expect(primaryCta).toHaveAttribute(
+		"href",
+		"/v/genuim/?utm_source=homepage&utm_medium=hero_cta&utm_campaign=proof_entry",
+	);
+});
+
+test("@smoke GM hero CTA includes required UTM params for homepage-to-proof tracking", async ({
+	page,
+	baseURL,
+}) => {
+	await page.goto(new URL("/", baseURL ?? "http://localhost:3000").toString());
+	await page.waitForLoadState("domcontentloaded");
+
+	// Primary CTA href must contain all required UTM parameters (AC: 1, 2)
+	const primaryCta = page.locator(".hero-actions .cta-button").first();
+	const href = await primaryCta.getAttribute("href");
+
+	// Verify all three UTM params are present
+	expect(href).toContain("utm_source=homepage");
+	expect(href).toContain("utm_medium=hero_cta");
+	expect(href).toContain("utm_campaign=proof_entry");
+
+	// Verify UTM values are static and do not contain personal data or raw codes
+	expect(href).not.toContain("email");
+	expect(href).not.toContain("@");
+	expect(href).not.toContain("phone");
+	expect(href).not.toContain("code");
 });

 test("GM landing page first screen is usable at 360px width", async ({

if (total + snippet.length > maxChars) break;
		snippets.push(snippet);
		total += snippet.length + 2;
	}

	return snippets.join("\n\n");
};

const buildPromptWithOptions = (files, stat, diff, options) => {
	const examples = options.includeExamples
		? `Example 1 - BMAD changes:\n\n` +
			`docs(bmad): align Phase 1 proof scope and request metadata\n\n` +
			`Synchronize planning artifacts for Phase 1 to clarify proof scope boundaries, metadata request flow, and validation rules across BMAD documents.\n\n` +
			`RUSSIAN SUMMARY:\n` +
			`Синхронизированы planning artifacts для Phase 1: уточнены границы proof scope, metadata request flow и validation rules. Теперь acceptance criteria в PRD точно соответствуют архитектуре и не противоречат друг другу.\n\n` +
			`- \`_bmad-output/planning-artifacts/prd.md\` — clarify acceptance criteria and moderation rules for proof validation boundaries\n` +
			`  RU: Конкретизированы acceptance criteria для proof validation, указаны случаи, когда модерация требуется или может быть пропущена\n\n` +
			`- \`_bmad-output/planning-artifacts/epics.md\` — remove future-phase items from active backlog to avoid scope creep\n` +
			`  RU: Убраны планы для Phase 2+ из текущего backlog, чтобы не путать с Phase 1 delivery\n\n` +
			`- \`_bmad-output/planning-artifacts/architecture.md\` — align proof routes and request metadata structures\n` +
			`  RU: Выровнены proof-flow routes и data structures в request/metadata, удалены противоречия\n\n` +
			`Example 2 - Site feature:\n\n` +
			`fix(epic-3): address code review findings and improve UX\n\n` +
			`Refine page naming, remove duplicate CTAs, add accessibility attributes, and sync documentation after code review. Improves user clarity and accessibility compliance.\n\n` +
			`RUSSIAN SUMMARY:\n` +
			`Исправлены замечания code review для Epic 3: переименована страница маршрутизации для ясности, удалён дублирующий CTA, добавлены атрибуты доступности, синхронизирована документация. Пользователям теперь понятнее, куда нужно идти, а доступность соответствует WCAG.\n\n` +
			`- \`site/perevir-product/index.html\` — rename from "Official Checking" to "Choose Your Path" for clarity\n` +
			`  RU: Переименована в "Choose Your Path" вместо "Official Checking" — пользователи теперь понимают, что это выбор сценария, а не готовый ответ\n\n` +
			`- \`site/request/index.html\` — fix fallback messages and add ARIA accessibility attributes\n` +
			`  RU: Обновлены fallback сообщения (убрано "visible below"), добавлены role, aria-live, aria-label для скрин-ридеров\n\n` +

A  _bmad-output/implementation-artifacts/4-1-track-movement-from-homepage-to-proof.md
M  _bmad-output/implementation-artifacts/sprint-status.yaml
M  site/index.html
M  tests/e2e/home.spec.ts

Тест русского текста: Синхронизированы planning artifacts
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file github_actions Pull requests that update GitHub Actions code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant