chore: complete tech log product identity

This commit is contained in:
DongHyeonka
2026-08-13 18:53:52 +09:00
parent c2e35dd8ad
commit 002ba3624e
21 changed files with 23 additions and 23 deletions
+1 -1
View File
@@ -3,7 +3,7 @@ name: frontend-quality-gates
on: on:
push: push:
branches: [develop] branches: [main]
tags: ["v*"] tags: ["v*"]
pull_request: pull_request:
workflow_dispatch: workflow_dispatch:
Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 83 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.4 KiB

After

Width:  |  Height:  |  Size: 46 KiB

@@ -1,6 +1,6 @@
{ {
"$schema": "https://json-schema.org/draft/2020-12/schema", "$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://clean-architecture-frontend.local/schemas/dependency-inventory.schema.json", "$id": "https://tech-log-frontend.local/schemas/dependency-inventory.schema.json",
"additionalProperties": false, "additionalProperties": false,
"properties": { "properties": {
"dependencies": { "dependencies": {
@@ -1,6 +1,6 @@
{ {
"$schema": "https://json-schema.org/draft/2020-12/schema", "$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://clean-architecture-frontend.local/schemas/supply-chain-verification.schema.json", "$id": "https://tech-log-frontend.local/schemas/supply-chain-verification.schema.json",
"additionalProperties": false, "additionalProperties": false,
"properties": { "properties": {
"dependencyDiff": { "dependencyDiff": {
+2 -2
View File
@@ -21,7 +21,7 @@ const ARTIFACT_SCHEMA_DEFINITIONS = Object.freeze([
}, },
{ {
relativePath: "schemas/artifacts/dependency-inventory.schema.json", relativePath: "schemas/artifacts/dependency-inventory.schema.json",
id: "https://clean-architecture-frontend.local/schemas/dependency-inventory.schema.json", id: "https://tech-log-frontend.local/schemas/dependency-inventory.schema.json",
schema: dependencyInventoryArtifactSchema, schema: dependencyInventoryArtifactSchema,
}, },
{ {
@@ -31,7 +31,7 @@ const ARTIFACT_SCHEMA_DEFINITIONS = Object.freeze([
}, },
{ {
relativePath: "schemas/artifacts/supply-chain-verification.schema.json", relativePath: "schemas/artifacts/supply-chain-verification.schema.json",
id: "https://clean-architecture-frontend.local/schemas/supply-chain-verification.schema.json", id: "https://tech-log-frontend.local/schemas/supply-chain-verification.schema.json",
schema: supplyChainVerificationArtifactSchema, schema: supplyChainVerificationArtifactSchema,
}, },
] as const); ] as const);
+1 -1
View File
@@ -76,7 +76,7 @@ export function renderCiWorkflow(contract: CiGateContract): string {
"", "",
"on:", "on:",
" push:", " push:",
" branches: [develop]", " branches: [main]",
' tags: ["v*"]', ' tags: ["v*"]',
" pull_request:", " pull_request:",
" workflow_dispatch:", " workflow_dispatch:",
+1 -1
View File
@@ -270,7 +270,7 @@ const provenance = {
], ],
}, },
runDetails: { runDetails: {
builder: { id: "local:clean-architecture-frontend-template" }, builder: { id: "local:tech-log-frontend" },
metadata: { invocationId: "LOCAL_UNSIGNED" }, metadata: { invocationId: "LOCAL_UNSIGNED" },
}, },
materials: { materials: {
+1 -1
View File
@@ -304,7 +304,7 @@ export async function verifyLocalSupplyChainEvidence(
} }
export const LOCAL_EVIDENCE_VERIFIER_ID = export const LOCAL_EVIDENCE_VERIFIER_ID =
"clean-architecture-frontend-template/local-evidence-verifier"; "tech-log-frontend/local-evidence-verifier";
export const LOCAL_EVIDENCE_VERIFIER_VERSION = "1"; export const LOCAL_EVIDENCE_VERIFIER_VERSION = "1";
export { export {
LOCAL_EVIDENCE_POLICY_INPUT_PATHS, LOCAL_EVIDENCE_POLICY_INPUT_PATHS,
+1 -1
View File
@@ -10,7 +10,7 @@ import {
export const PROVIDER_FUTURE_SKEW_MS = 5 * 60 * 1_000; export const PROVIDER_FUTURE_SKEW_MS = 5 * 60 * 1_000;
export const PROVIDER_MAX_LIFETIME_MS = 2 * 60 * 60 * 1_000; export const PROVIDER_MAX_LIFETIME_MS = 2 * 60 * 60 * 1_000;
export const PROMOTION_VERIFIER_ID = export const PROMOTION_VERIFIER_ID =
"clean-architecture-frontend-template/promotion-verifier"; "tech-log-frontend/promotion-verifier";
export const PROMOTION_VERIFIER_VERSION = "3"; export const PROMOTION_VERIFIER_VERSION = "3";
const sha256 = z.string().regex(/^[a-f0-9]{64}$/u); const sha256 = z.string().regex(/^[a-f0-9]{64}$/u);
+4 -4
View File
@@ -3,7 +3,7 @@ import { INSTALLED_MESSAGE_CATALOGS } from "../../features/installed-feature-mes
const PLATFORM_KO_MESSAGES = { const PLATFORM_KO_MESSAGES = {
"common.unavailable": "요청한 문구를 표시할 수 없습니다.", "common.unavailable": "요청한 문구를 표시할 수 없습니다.",
"common.processing": "처리 중…", "common.processing": "처리 중…",
"common.appName": "Frontend Skeleton", "common.appName": "Tech Log",
"common.noDisplayValue": "표시 정보 없음", "common.noDisplayValue": "표시 정보 없음",
"action.retry": "다시 시도", "action.retry": "다시 시도",
"action.reauth": "로그인", "action.reauth": "로그인",
@@ -41,7 +41,7 @@ const PLATFORM_KO_MESSAGES = {
"shell.session.integrationFailed": "연동 필요", "shell.session.integrationFailed": "연동 필요",
"shell.session.actionFailed": "세션 작업을 완료하지 못했습니다.", "shell.session.actionFailed": "세션 작업을 완료하지 못했습니다.",
"route.APP_HOME.navigation": "홈", "route.APP_HOME.navigation": "홈",
"route.APP_HOME.title": "Clean Architecture Frontend", "route.APP_HOME.title": "Tech Log",
"route.EXAMPLES_PLATFORM.navigation": "플랫폼 구성", "route.EXAMPLES_PLATFORM.navigation": "플랫폼 구성",
"route.EXAMPLES_PLATFORM.title": "플랫폼 구성", "route.EXAMPLES_PLATFORM.title": "플랫폼 구성",
"route.EXAMPLES_UI.navigation": "UI 구성요소", "route.EXAMPLES_UI.navigation": "UI 구성요소",
@@ -158,7 +158,7 @@ export type MessageKey = keyof typeof KO_MESSAGES;
const PLATFORM_EN_MESSAGES = { const PLATFORM_EN_MESSAGES = {
"common.unavailable": "This message is unavailable.", "common.unavailable": "This message is unavailable.",
"common.processing": "Processing…", "common.processing": "Processing…",
"common.appName": "Frontend Skeleton", "common.appName": "Tech Log",
"common.noDisplayValue": "No display value", "common.noDisplayValue": "No display value",
"action.retry": "Try again", "action.retry": "Try again",
"action.reauth": "Sign in", "action.reauth": "Sign in",
@@ -196,7 +196,7 @@ const PLATFORM_EN_MESSAGES = {
"shell.session.integrationFailed": "Integration required", "shell.session.integrationFailed": "Integration required",
"shell.session.actionFailed": "The session action could not be completed.", "shell.session.actionFailed": "The session action could not be completed.",
"route.APP_HOME.navigation": "Home", "route.APP_HOME.navigation": "Home",
"route.APP_HOME.title": "Clean Architecture Frontend", "route.APP_HOME.title": "Tech Log",
"route.EXAMPLES_PLATFORM.navigation": "Platform composition", "route.EXAMPLES_PLATFORM.navigation": "Platform composition",
"route.EXAMPLES_PLATFORM.title": "Platform composition", "route.EXAMPLES_PLATFORM.title": "Platform composition",
"route.EXAMPLES_UI.navigation": "UI components", "route.EXAMPLES_UI.navigation": "UI components",
+1 -1
View File
@@ -40,7 +40,7 @@ export default function HomePage() {
<section className="ui-page"> <section className="ui-page">
<PageHeader <PageHeader
eyebrow="프로젝트 시작점" eyebrow="프로젝트 시작점"
title="Clean Architecture Frontend" title="Tech Log"
description="도메인을 추가하기 전에 실행 구조와 범용 사용자 경험을 확인할 수 있는 중립적인 스켈레톤입니다." description="도메인을 추가하기 전에 실행 구조와 범용 사용자 경험을 확인할 수 있는 중립적인 스켈레톤입니다."
/> />
<div className="readiness-grid" aria-label="구현 준비 상태"> <div className="readiness-grid" aria-label="구현 준비 상태">
+1 -1
View File
@@ -71,7 +71,7 @@ describe("generic application router", () => {
await screen.findByRole("heading", { name: "UI 구성요소", level: 1 }), await screen.findByRole("heading", { name: "UI 구성요소", level: 1 }),
).toBeVisible(); ).toBeVisible();
expect(window.location.pathname).toBe("/examples/ui"); expect(window.location.pathname).toBe("/examples/ui");
expect(document.title).toBe("UI 구성요소 · Frontend Skeleton"); expect(document.title).toBe("UI 구성요소 · Tech Log");
await waitFor(() => await waitFor(() =>
expect( expect(
screen.getByRole("heading", { name: "UI 구성요소", level: 1 }), screen.getByRole("heading", { name: "UI 구성요소", level: 1 }),
+1 -1
View File
@@ -62,7 +62,7 @@ describe("production runtime application tree", () => {
expect( expect(
await screen.findByRole("heading", { await screen.findByRole("heading", {
name: "Clean Architecture Frontend", name: "Tech Log",
}), }),
).toBeVisible(); ).toBeVisible();
expect( expect(
+1 -1
View File
@@ -3,7 +3,7 @@ import { expect, test } from "../support/browser/strict-browser-test.ts";
test("boots the public app shell", async ({ page }) => { test("boots the public app shell", async ({ page }) => {
await page.goto("/"); await page.goto("/");
await expect(page.getByRole("heading", { level: 1 })).toHaveText( await expect(page.getByRole("heading", { level: 1 })).toHaveText(
"Clean Architecture Frontend", "Tech Log",
); );
await expect(page.getByRole("navigation", { name: "주요 탐색" })).toBeVisible(); await expect(page.getByRole("navigation", { name: "주요 탐색" })).toBeVisible();
await expect(page.getByRole("main")).toBeVisible(); await expect(page.getByRole("main")).toBeVisible();
@@ -228,7 +228,7 @@ describe("reference feature page states", () => {
expect( expect(
await screen.findByRole("heading", { await screen.findByRole("heading", {
level: 1, level: 1,
name: "Clean Architecture Frontend", name: "Tech Log",
}), }),
).toBeVisible(); ).toBeVisible();
}); });
@@ -284,7 +284,7 @@ describe("reference feature page states", () => {
expect( expect(
await screen.findByRole("heading", { await screen.findByRole("heading", {
level: 1, level: 1,
name: "Clean Architecture Frontend", name: "Tech Log",
}), }),
).toBeVisible(); ).toBeVisible();
}); });
@@ -6,7 +6,7 @@ name: frontend-quality-gates
on: on:
push: push:
branches: [develop] branches: [main]
tags: ["v*"] tags: ["v*"]
pull_request: pull_request:
workflow_dispatch: workflow_dispatch:
+3 -3
View File
@@ -59,7 +59,7 @@ function passingAssessment(): any {
generatedAt: "2026-08-02T00:00:00.000Z", generatedAt: "2026-08-02T00:00:00.000Z",
status: "PASS" as const, status: "PASS" as const,
verifier: { verifier: {
id: "clean-architecture-frontend-template/local-evidence-verifier", id: "tech-log-frontend/local-evidence-verifier",
version: "1", version: "1",
sourceSha256: digest("verifier source"), sourceSha256: digest("verifier source"),
}, },
@@ -1490,7 +1490,7 @@ function syntheticSignedPromotionBundle() {
verifiedAt: "2026-08-02T01:00:00.000Z", verifiedAt: "2026-08-02T01:00:00.000Z",
status: "PASS", status: "PASS",
verifier: { verifier: {
id: "clean-architecture-frontend-template/promotion-verifier", id: "tech-log-frontend/promotion-verifier",
version: "3", version: "3",
}, },
run, run,
@@ -1806,7 +1806,7 @@ async function createArchivedAssessmentFixture(): Promise<{
const assessment = localEvidenceAssessmentArtifactSchema.parse({ const assessment = localEvidenceAssessmentArtifactSchema.parse({
...passingAssessment(), ...passingAssessment(),
verifier: { verifier: {
id: "clean-architecture-frontend-template/local-evidence-verifier", id: "tech-log-frontend/local-evidence-verifier",
version: "1", version: "1",
sourceSha256: supplyChainDigest( sourceSha256: supplyChainDigest(
policyInputs.filter(({ path: policyPath }) => verifierPaths.has(policyPath)), policyInputs.filter(({ path: policyPath }) => verifierPaths.has(policyPath)),
Binary file not shown.

Before

Width:  |  Height:  |  Size: 91 KiB

After

Width:  |  Height:  |  Size: 83 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 396 KiB

After

Width:  |  Height:  |  Size: 392 KiB