init: company-haness 설계
This commit is contained in:
+89
@@ -0,0 +1,89 @@
|
||||
report-type: workflow-artifact
|
||||
artifact-kind: overall-design
|
||||
artifact-version: 1
|
||||
tier: standard
|
||||
identity:
|
||||
artifact-id: ARCH-SOLUTION-20260718T151500Z
|
||||
workflow-id: hyeonworks-vnext-v1
|
||||
stage: design
|
||||
producer-role-id: ARCH-SOLUTION
|
||||
created-at: 20260718T151500Z
|
||||
attempt-id: 1
|
||||
payload:
|
||||
basis-artifact-id: EXEC-CEO-20260718T111108Z
|
||||
basis-artifact-sha256: 59aa01ae31c922475055d80a11a8facf298c6c7a0b900bbd086cd98324d326a4
|
||||
source-artifact-refs:
|
||||
- artifact-id: EXEC-CEO-20260718T111108Z
|
||||
artifact-sha256: 59aa01ae31c922475055d80a11a8facf298c6c7a0b900bbd086cd98324d326a4
|
||||
- artifact-id: DES-DIRECTOR-20260718T151300Z
|
||||
artifact-sha256: ad2120ba2b214a58adc17aac5620c6e19bd727ac4cfd1a48a41c2a75327ff885
|
||||
summary: >-
|
||||
Technology Atlas v1은 Lost Update 하나를 깊이 학습하는 zero-dependency 정적 웹 앱이다.
|
||||
hash route와 명시적 scenario registry, 하나의 reducer가 홈·개념·증상·Lab·완료를 연결한다.
|
||||
서버·계정·원격 데이터 없이 브라우저 내부 deterministic state만 사용해 제품 약속과 운영 범위를 일치시킨다.
|
||||
architecture-boundaries:
|
||||
- id: static-delivery
|
||||
owns: HTML, CSS, JavaScript와 로컬 정적 서버
|
||||
excludes: SSR, backend, account, API gateway, remote database
|
||||
- id: route-controller
|
||||
owns: hash route 해석, 화면 렌더, route-safe focus 이동
|
||||
invariant: skip link는 hashchange를 발생시키지 않는다.
|
||||
- id: scenario-registry
|
||||
owns: tx-lost-update-01의 단계·trace·clue·transfer 콘텐츠
|
||||
invariant: concept와 symptom entry가 동일 scenario object를 참조한다.
|
||||
- id: lab-reducer
|
||||
owns: entryMode, phase, cursor, prediction, explanation, transfer 상태 전이
|
||||
invariant: entryMode는 orientation 메타데이터이고 합류 후 reducer를 분기하지 않는다.
|
||||
- id: verification-fixture
|
||||
owns: reducer 일반성과 route-state 회귀를 확인하는 짧은 fixture
|
||||
excludes: 공개 학습 콘텐츠 주장
|
||||
quality-attributes:
|
||||
- {attribute: learning-integrity, target: Predict→Observe→Compare→Explain→Transfer 순서와 100·120·150·70 인과 증거 고정}
|
||||
- {attribute: accessibility, target: 360·768·1280에서 keyboard completion, visible focus, semantic controls, no horizontal overflow}
|
||||
- {attribute: honesty, target: guided simulation을 실제 진단·로그·원격 DB로 표현하지 않음}
|
||||
- {attribute: reliability, target: network 없는 로컬 실행에서 deterministic full flow 반복 통과}
|
||||
- {attribute: maintainability, target: 첫 공개 주제 동안 framework·schema platform 없이 읽을 수 있는 정적 모듈 유지}
|
||||
- {attribute: performance, target: third-party runtime과 remote asset 요청 0개}
|
||||
decisions:
|
||||
- id: ADR-001-STATIC-SPA
|
||||
choice: zero-dependency hash-routed static app
|
||||
rationale: 현재 한 주제·로컬 상태 범위에 서버와 framework는 비용만 늘린다.
|
||||
revisit: 콘텐츠가 세 개를 넘거나 server-backed progress가 승인될 때
|
||||
- id: ADR-002-SHARED-REDUCER
|
||||
choice: 두 entry가 동일 scenario와 reducer를 사용
|
||||
rationale: CEO kill criterion인 두 제품화와 지식 불일치를 구조적으로 막는다.
|
||||
revisit: 하지 않음; 제품 불변식
|
||||
- id: ADR-003-STATE-IN-MEMORY
|
||||
choice: 진행 상태는 현재 세션 메모리에만 유지
|
||||
rationale: persistence·privacy·migration 설계를 만들지 않고 정직한 범위를 유지한다.
|
||||
revisit: 사용자 계정/재방문 진행 저장이 별도 결정으로 승인될 때
|
||||
- id: ADR-004-NATIVE-CONTROLS
|
||||
choice: button, textarea, anchor, main을 native semantics로 사용
|
||||
rationale: custom widget의 접근성 복잡도를 피한다.
|
||||
revisit: 기능적으로 native control로 표현할 수 없는 상호작용이 생길 때
|
||||
dependencies: []
|
||||
compatibility-assumptions:
|
||||
- 최신 evergreen Chrome 계열에서 ES2019 수준 JavaScript와 hashchange를 지원한다.
|
||||
- 배포 호스트는 정적 파일과 index.html을 제공하며 원격 서비스는 필요하지 않다.
|
||||
- approved-design-direction의 exact token·interaction·accessibility 계약이 ui-design과 일치한다.
|
||||
- 실제 사용자 학습성과 측정은 후속 제품 분석이며 v1 자동 검증 범위가 아니다.
|
||||
conflicts: []
|
||||
handoff:
|
||||
implementation: hyeonworks/app 아래의 독립 실행 가능한 정적 앱
|
||||
required-verification: full dual-entry browser flow, viewport matrix, contrast, keyboard/focus, static network boundary
|
||||
report-header:
|
||||
bottom-line: >-
|
||||
v1은 하나의 deterministic reducer를 중심으로 한 zero-dependency 정적 앱으로 설계한다.
|
||||
현재 범위에 backend·persistence·범용 콘텐츠 플랫폼을 추가하지 않으면서 학습 깊이와 접근성을 코드로 검증한다.
|
||||
decision-needed: {needed: false, approver: null}
|
||||
confidence: {value: High, derived-from: accepted-ceo-basis-approved-direction-and-live-prototype}
|
||||
risks:
|
||||
- 단일 app module은 세 번째 주제부터 편집 충돌이 늘 수 있다.
|
||||
- 메모리 진행 상태는 새로고침 뒤 복구되지 않으며 이는 의도된 v1 경계다.
|
||||
evidence:
|
||||
- source-uri: hyeonworks/completion-records/hyeonworks-vnext-v1/EXEC-CEO-20260718T111108Z.report.yaml
|
||||
grade: E3
|
||||
note: exact accepted product decision and scope boundaries
|
||||
- source-uri: hyeonworks/design-direction/hyeonworks-vnext-v1/prototype/core-flow.yaml
|
||||
grade: E3
|
||||
note: browser-tested implementation evidence for the architecture
|
||||
+68
@@ -0,0 +1,68 @@
|
||||
report-type: workflow-artifact
|
||||
artifact-kind: approved-design-direction
|
||||
artifact-version: 1
|
||||
tier: standard
|
||||
identity:
|
||||
artifact-id: DES-DIRECTOR-20260718T151300Z
|
||||
workflow-id: hyeonworks-vnext-v1
|
||||
stage: design
|
||||
producer-role-id: DES-DIRECTOR
|
||||
created-at: 20260718T151300Z
|
||||
attempt-id: 1
|
||||
payload:
|
||||
basis-artifact-id: EXEC-CEO-20260718T111108Z
|
||||
basis-artifact-sha256: 59aa01ae31c922475055d80a11a8facf298c6c7a0b900bbd086cd98324d326a4
|
||||
direction-approval:
|
||||
child-workflow-id: hyeonworks-vnext-v1-direction
|
||||
approved-direction-id: DES-DIRECTOR-20260718T151100Z
|
||||
approved-direction-sha256: ce8414dff0472e61961ea77b5930e1e706cf7e4596f8a7d230f3cb4ac18f9abb
|
||||
selected-direction-id: ledger-studio
|
||||
winner-prototype-id: ENG-FE-20260718T144700Z
|
||||
winner-prototype-sha256: 8b208279e12f9aea0fa6d7a3c320811b0e72ddb74c6afac64cddadf4b157cf76
|
||||
seven-lens-panel-id: DES-DIRECTOR-20260718T150500Z
|
||||
panel-verdict: pass
|
||||
visual-thesis: >-
|
||||
전문 저널의 질문과 causal ledger를 결합해 사용자의 예측과 실제 실행 증거의 차이를 읽게 한다.
|
||||
비대칭 editorial spread가 제품의 깊이를 표현하고 일반 dashboard·terminal 은유는 사용하지 않는다.
|
||||
locked-invariants:
|
||||
- LI-EDITORIAL-EVIDENCE
|
||||
- LI-DUAL-ENTRY-SHARED-CORE
|
||||
- LI-EVIDENCE-LEARNING-LOOP
|
||||
- LI-HONEST-BOUNDARY
|
||||
- LI-ACCESSIBLE-READING
|
||||
interaction-contract:
|
||||
entries: [concept, symptom-debugger]
|
||||
shared-scenario: tx-lost-update-01
|
||||
shared-loop: [Predict, Observe, Compare, Explain, Transfer]
|
||||
route-safe-skip-link: true
|
||||
fixture-boundary: verification-only
|
||||
token-contract:
|
||||
paper: '#f3efe4'
|
||||
ink: '#1b201e'
|
||||
deep: '#202724'
|
||||
observed: '#ad4031'
|
||||
accent-on-deep: '#ff8873'
|
||||
pending: '#535c58'
|
||||
control-border: '#88877e'
|
||||
normal-text-contrast-min: '4.5:1'
|
||||
essential-control-contrast-min: '3:1'
|
||||
scope-boundary:
|
||||
included: [static educational UI, deterministic Lost Update scenario, local progress state, browser accessibility]
|
||||
excluded: [real log ingestion, remote database connection, AI diagnosis, accounts, server persistence, public API]
|
||||
handoff-rule: ui-design과 구현은 이 exact basis와 interaction/token/accessibility 계약을 바꾸지 않는다.
|
||||
report-header:
|
||||
bottom-line: >-
|
||||
7-lens를 통과한 Ledger Studio revision 4를 부모 설계의 유일한 UI 방향으로 승격한다.
|
||||
두 입구·하나의 Lab, 다섯 단계 학습 루프, 정직한 guided simulation 경계를 구현 계약으로 고정한다.
|
||||
decision-needed: {needed: false, approver: null}
|
||||
confidence: {value: High, derived-from: exact-approved-direction-and-seven-lens-browser-backed-panel}
|
||||
risks:
|
||||
- 구현 단계가 두 entry를 별도 reducer로 분기하면 승인 방향이 훼손된다.
|
||||
- 세 번째 주제 전까지는 범용 콘텐츠 플랫폼을 미리 설계하지 않는다.
|
||||
evidence:
|
||||
- source-uri: hyeonworks/completion-records/hyeonworks-vnext-v1-direction/DES-DIRECTOR-20260718T151100Z.report.yaml
|
||||
grade: E3
|
||||
note: exact accepted approved-direction bound to parent
|
||||
- source-uri: hyeonworks/completion-records/hyeonworks-vnext-v1-direction/DES-DIRECTOR-20260718T150500Z.report.yaml
|
||||
grade: E3
|
||||
note: exact seven-lens pass panel
|
||||
+86
@@ -0,0 +1,86 @@
|
||||
report-type: workflow-artifact
|
||||
artifact-kind: ui-design
|
||||
artifact-version: 1
|
||||
tier: standard
|
||||
identity:
|
||||
artifact-id: DES-VISUAL-20260718T151500Z
|
||||
workflow-id: hyeonworks-vnext-v1
|
||||
stage: design
|
||||
producer-role-id: DES-VISUAL
|
||||
created-at: 20260718T151500Z
|
||||
attempt-id: 1
|
||||
payload:
|
||||
basis-artifact-id: EXEC-CEO-20260718T111108Z
|
||||
basis-artifact-sha256: 59aa01ae31c922475055d80a11a8facf298c6c7a0b900bbd086cd98324d326a4
|
||||
user-flows:
|
||||
- id: FLOW-CONCEPT
|
||||
steps: [홈에서 개념 입구 선택, 격리 수준 orientation 읽기, 같은 Lab 시작, Predict, Observe, Compare, Explain, Transfer]
|
||||
completion: 사용자가 Lost Update 인과를 서술하고 새 사례 전이를 제출한다.
|
||||
- id: FLOW-SYMPTOM-DEBUGGER
|
||||
steps: [홈에서 증상 입구 선택, 결과 70 단서 공개, 후보 메커니즘 확인, 같은 Lab 시작, Predict, Observe, Compare, Explain, Transfer]
|
||||
completion: 실제 진단이 아니라 guided scenario 검증임을 이해한 채 같은 Lab을 완주한다.
|
||||
- id: FLOW-KEYBOARD
|
||||
steps: [skip link로 현재 main 이동, 모든 control을 Tab·Enter·Space로 조작, 입력 focus 유지, Transfer 완료]
|
||||
completion: pointer 없이 전체 경로가 완주된다.
|
||||
screen-inventory:
|
||||
- {screen-id: HOME, purpose: 제품 약속과 두 입구를 한 화면에서 제시, route: '#/'}
|
||||
- {screen-id: ORIENT-CONCEPT, purpose: isolation 약속에서 질문을 형성, route: '#/orient/concept'}
|
||||
- {screen-id: ORIENT-SYMPTOM, purpose: 70이라는 증상과 후보 단서를 단계적으로 공개, route: '#/orient/symptom'}
|
||||
- {screen-id: LAB, purpose: 다섯 단계 학습 루프와 causal ledger 실행, route: '#/lab/tx-lost-update-01'}
|
||||
- {screen-id: COMPLETE, purpose: 설명과 transfer의 완료 상태를 정직하게 요약, route: same Lab state}
|
||||
state-matrix:
|
||||
- {state: home, required: [two distinct entries, shared-Lab statement, guided-learning boundary]}
|
||||
- {state: symptom-hidden, required: [single reveal control, no premature diagnosis claim]}
|
||||
- {state: symptom-revealed, required: [70 clue, candidate mechanism, same-Lab CTA]}
|
||||
- {state: predict, required: [editable prediction, locked future evidence]}
|
||||
- {state: observe-running, required: [100·120·150·70 trace, cursor progression, pending labels]}
|
||||
- {state: compare, required: [prediction versus observation, lost write causal relation]}
|
||||
- {state: explain, required: [user-authored causal explanation, prompt does not reveal full answer first]}
|
||||
- {state: transfer, required: [new-case prompt, user-authored transfer, completion boundary]}
|
||||
accessibility:
|
||||
landmarks: skip link targets the currently rendered main without route mutation
|
||||
keyboard: every interactive state is reachable and operable with native controls
|
||||
focus: visible focus ring and deterministic focus restoration after render
|
||||
contrast: normal text 4.5:1 minimum and essential control boundary 3:1 minimum on actual surface
|
||||
color-independence: value, transaction, observed, pending, and completion have text/shape labels
|
||||
responsive: 360·768·1280 DOM order preserved with zero document overflow
|
||||
motion: essential meaning does not depend on animation; reduced motion remains usable
|
||||
language: Korean words are not split into single-character vertical fragments
|
||||
design-system-bindings:
|
||||
- {token: surface.paper, value: '#f3efe4', use: reading canvas}
|
||||
- {token: content.ink, value: '#1b201e', use: primary paper text}
|
||||
- {token: surface.deep, value: '#202724', use: evidence Lab}
|
||||
- {token: evidence.observed, value: '#ad4031', use: observed evidence on light surfaces}
|
||||
- {token: evidence.on-deep, value: '#ff8873', use: highlighted evidence on deep surface}
|
||||
- {token: evidence.pending, value: '#535c58', use: pending trace with computed AA contrast}
|
||||
- {token: control.border, value: '#88877e', use: essential field and choice boundary}
|
||||
- {component: editorial-spread, rule: asymmetric thesis and ledger; no generic card grid}
|
||||
- {component: causal-ledger, rule: mono evidence sequence with semantic labels}
|
||||
- {component: phase-rail, rule: five ordered phases; current and complete text labels}
|
||||
visual-rationale: >-
|
||||
기술을 깊게 배운다는 약속을 화려한 dashboard 대신 읽고 표시하고 대조하는 편집 기록으로 표현한다.
|
||||
serif 논제는 질문의 무게를, mono ledger는 실행 증거의 정밀함을, coral은 예측과 다른 관찰 순간을 담당한다.
|
||||
모바일에서는 장식적 비대칭보다 인과 읽기 순서를 우선해 단일 열로 수렴한다.
|
||||
approved-direction-binding:
|
||||
artifact-id: DES-DIRECTOR-20260718T151300Z
|
||||
artifact-sha256: ad2120ba2b214a58adc17aac5620c6e19bd727ac4cfd1a48a41c2a75327ff885
|
||||
prototype-binding:
|
||||
manifest: hyeonworks/design-direction/hyeonworks-vnext-v1/prototype/core-flow.yaml
|
||||
manifest-sha256: 287bc732d7ddf9076ae8377e9a6824ff1495513a2011b8521fae8036e2c33b77
|
||||
winner-id: ENG-FE-20260718T144700Z
|
||||
report-header:
|
||||
bottom-line: >-
|
||||
홈·두 orientation·공통 Lab·완료를 하나의 editorial evidence 시스템으로 명세했다.
|
||||
다섯 단계 상태, keyboard/focus, 실제 surface 대비와 360–1280px 읽기 순서를 구현 가능한 계약으로 고정한다.
|
||||
decision-needed: {needed: false, approver: null}
|
||||
confidence: {value: High, derived-from: approved-direction-and-r4-browser-viewport-contrast-matrix}
|
||||
risks:
|
||||
- editorial 밀도가 모바일에서 과해지지 않도록 각 phase에는 현재 필요한 control만 노출해야 한다.
|
||||
- fixture route는 검증 전용으로 공개 제품 내비게이션에 노출하지 않는다.
|
||||
evidence:
|
||||
- source-uri: hyeonworks/design-direction/hyeonworks-vnext-v1/prototype/core-flow.yaml
|
||||
grade: E3
|
||||
note: exact R4 manifest with three bound receipts
|
||||
- source-uri: hyeonworks/completion-records/hyeonworks-vnext-v1-direction/DES-VISUAL-20260718T145005Z.report.yaml
|
||||
grade: E3
|
||||
note: independent visual-craft pass across viewports and states
|
||||
@@ -0,0 +1,66 @@
|
||||
report-type: workflow-artifact
|
||||
artifact-kind: ui-implementation
|
||||
artifact-version: 1
|
||||
tier: standard
|
||||
identity:
|
||||
artifact-id: ENG-FE-20260718T152400Z
|
||||
workflow-id: hyeonworks-vnext-v1
|
||||
stage: build
|
||||
producer-role-id: ENG-FE
|
||||
created-at: 20260718T152400Z
|
||||
attempt-id: 1
|
||||
payload:
|
||||
summary: >-
|
||||
승인된 Ledger Studio revision 4를 hyeonworks/app의 독립 실행 가능한 zero-dependency 정적 앱으로 승격했다.
|
||||
배포 dist, 로컬 서버, static integrity 검증, 실제 Chrome full-flow 검증과 확인 스크린샷을 포함한다.
|
||||
source-revision:
|
||||
kind: source-bundle
|
||||
sha256: e27731ba712e1c6e7bde4d8600d9ff5abefea09f6909e5b8cbd7153958196ea6
|
||||
input-bindings:
|
||||
overall-design: {artifact-id: ARCH-SOLUTION-20260718T151500Z, sha256: 5217e3b3b8b9e3e33d13cd58e88112c32d93cbe9b51af9f919594d9be5f58d83}
|
||||
approved-design-direction: {artifact-id: DES-DIRECTOR-20260718T151300Z, sha256: ad2120ba2b214a58adc17aac5620c6e19bd727ac4cfd1a48a41c2a75327ff885}
|
||||
ui-design: {artifact-id: DES-VISUAL-20260718T151500Z, sha256: c1ed02e6b2b128c47f8dd3406f81b690b3d80636fc74eacbf442be7d667c8a4e}
|
||||
prd: {artifact-id: PROD-PM-20260718T152100Z, sha256: b9f162e7f26dff79e79f018488ad96d839701eec29b5eb5d15e1aad7f59bd627}
|
||||
acceptance-criteria: {artifact-id: PROD-PO-20260718T152300Z, sha256: ee4ac8fb7807c047b655c1b012b7604431cf075980aa9b41c4018ad2c5681176}
|
||||
delivered:
|
||||
app-root: hyeonworks/app
|
||||
deployable: hyeonworks/app/dist
|
||||
local-server: hyeonworks/app/scripts/serve.cjs
|
||||
static-verifier: hyeonworks/app/scripts/verify_static.cjs
|
||||
browser-verifier: hyeonworks/app/scripts/verify_flow.cjs
|
||||
screenshots: hyeonworks/app/verification/screenshots
|
||||
implementation-contract:
|
||||
runtime-dependencies: 0
|
||||
remote-assets: 0
|
||||
public-scenarios: [tx-lost-update-01]
|
||||
entries: [concept, symptom-debugger]
|
||||
shared-state-engine: learningReducer
|
||||
phases: [Predict, Observe, Compare, Explain, Transfer]
|
||||
supported-viewports: [360, 768, 1280]
|
||||
honest-boundary: guided simulation only; no live diagnosis, log ingestion, AI, or remote DB
|
||||
non-goals-preserved: [backend, persistence, account, public API, multi-topic platform, real incident diagnosis]
|
||||
rollback: hyeonworks/app은 승인 prototype을 변경하지 않은 독립 디렉터리이므로 app 디렉터리만 제외하면 원형이 보존된다.
|
||||
method-execution:
|
||||
role-id: ENG-FE
|
||||
method-id: frontend-implementation
|
||||
contract-sha256: 0464eead5e973155d003539b00b7b4b5c8b392de952ee16fd22eb63997a38f2d
|
||||
step-results:
|
||||
- {step-id: implement-ui, status: completed, output-binding: current-artifact}
|
||||
report-header:
|
||||
bottom-line: >-
|
||||
승인 prototype을 그대로 보존하면서 hyeonworks/app에 배포 가능 dist·zero-dependency 서버·정적/E2E 검증을 갖춘 실제 앱을 구현했다.
|
||||
decision-needed: {needed: false, approver: null}
|
||||
confidence: {value: High, derived-from: accepted-spec-byte-identical-r4-dist-and-independent-app-audit}
|
||||
risks:
|
||||
- 자동 접근성 실행은 Chrome 중심이며 실제 스크린리더 발화는 잔여 수동 검증 범위다.
|
||||
- verification fixture hash route는 내비게이션에 노출되지 않지만 dist에 포함돼 있다.
|
||||
evidence:
|
||||
- source-uri: hyeonworks/app/README.md
|
||||
grade: E3
|
||||
note: runnable production handoff
|
||||
- source-uri: hyeonworks/app/scripts/verify_flow.cjs
|
||||
grade: E3
|
||||
note: full browser regression suite
|
||||
- source-uri: hyeonworks/app/verification/approved-r4.json
|
||||
grade: E3
|
||||
note: exact approved winner file hashes
|
||||
@@ -0,0 +1,97 @@
|
||||
report-type: workflow-artifact
|
||||
artifact-kind: completion-record
|
||||
artifact-version: 1
|
||||
tier: standard
|
||||
identity:
|
||||
artifact-id: ENG-FE-20260718T152600Z
|
||||
workflow-id: hyeonworks-vnext-v1
|
||||
stage: build
|
||||
producer-role-id: ENG-FE
|
||||
created-at: 20260718T152600Z
|
||||
attempt-id: 1
|
||||
payload:
|
||||
summary: >-
|
||||
Technology Atlas의 첫 공개 딥다이브를 hyeonworks/app에 완성했다. 두 entry는 동일 Lost Update Lab과
|
||||
reducer로 합류하고 Predict→Observe→Compare→Explain→Transfer를 완주한다. 실제 앱 source bundle은
|
||||
정적 integrity와 headless Chrome 전체 흐름으로 검증됐다.
|
||||
source-revision:
|
||||
kind: source-bundle
|
||||
sha256: e27731ba712e1c6e7bde4d8600d9ff5abefea09f6909e5b8cbd7153958196ea6
|
||||
primary-artifacts:
|
||||
- {path: hyeonworks/app/dist/index.html, kind: deployable-html, sha256: 6295b1cf4b5f44cd4e9a5242643712728709ac851d62c4587ef933830bd33861}
|
||||
- {path: hyeonworks/app/dist/styles.css, kind: production-css, sha256: 71e51b907f5b01c480eb348df35db17995fc45269db36ed6a1afd113e3f29f58}
|
||||
- {path: hyeonworks/app/dist/app.js, kind: production-javascript, sha256: b148057f4d25ba6afb4170c82f5c832263563feaf99a345a0d79e350d83fbed3}
|
||||
- {path: hyeonworks/app/scripts/serve.cjs, kind: local-static-server, sha256: 7d60ac663b8e91d19a94fb90a3e1fb4564bcd56fce631e7cb0a998565a5f17e7}
|
||||
- {path: hyeonworks/app/scripts/verify_static.cjs, kind: static-verifier, sha256: 6bc257fae1b72ce4206f02021f122965833a8d959124cb23e690c401ed7dd842}
|
||||
- {path: hyeonworks/app/scripts/verify_flow.cjs, kind: browser-e2e-verifier, sha256: b552c6fe5b2336a58a9867d08190aa8d94378f33c697b7712834459f4af2f160}
|
||||
- {path: hyeonworks/app/package.json, kind: runnable-package-manifest, sha256: ad1a4310e6802db564a23969045fc52d09109190f6fa0fdb78d73798d4cf5aea}
|
||||
- {path: hyeonworks/app/README.md, kind: operator-handoff, sha256: 9dd5adfc0dc7593a23d2b578edca13bec0384a615f210fd54dd3c31abc96bc9e}
|
||||
- {path: hyeonworks/app/verification/approved-r4.json, kind: approved-baseline-binding, sha256: e83e47797fb8871cd0dbbdefc5acac2c4b9e9f418f7446d28eb7f27139a6f91f}
|
||||
acceptance-criteria-coverage:
|
||||
- criterion-id: AC-DUAL-ENTRY-SHARED-LAB
|
||||
status: Passed
|
||||
evidence-receipt-ids: [vr-1784388271-d3001b5d8706]
|
||||
- criterion-id: AC-FULL-LEARNING-LOOP
|
||||
status: Passed
|
||||
evidence-receipt-ids: [vr-1784388271-d3001b5d8706]
|
||||
- criterion-id: AC-CAUSAL-LEDGER-VALUES
|
||||
status: Passed
|
||||
evidence-receipt-ids: [vr-1784388271-d3001b5d8706]
|
||||
- criterion-id: AC-SYMPTOM-DEBUGGER-HONESTY
|
||||
status: Passed
|
||||
evidence-receipt-ids: [vr-1784388271-d3001b5d8706, vr-1784388251-82db6d30415d]
|
||||
- criterion-id: AC-A11Y-RESPONSIVE-STATE
|
||||
status: Passed
|
||||
evidence-receipt-ids: [vr-1784388271-d3001b5d8706]
|
||||
- criterion-id: AC-DETERMINISTIC-OFFLINE
|
||||
status: Passed
|
||||
evidence-receipt-ids: [vr-1784388251-82db6d30415d, vr-1784388271-d3001b5d8706]
|
||||
verification-receipt-ids:
|
||||
- vr-1784388251-82db6d30415d
|
||||
- vr-1784388271-d3001b5d8706
|
||||
verification-summary:
|
||||
static: approved R4 file hashes, zero runtime dependency, local-only assets, semantic shell and token markers passed.
|
||||
browser: dual entry, complete default and fixture loops, error/retry, 360·768·1280, keyboard/focus/skip state, contrast and zero browser errors passed.
|
||||
contrast: {lab-id: 7.1437, dark-boundary: 5.6157, pending: 5.4403, choice-border: 3.5575, textarea-border: 3.5575}
|
||||
remaining-risks:
|
||||
- severity: Low
|
||||
item: 자동 browser 검증은 Chrome 엔진 중심이며 실제 스크린리더 발화는 수동 잔여 검증이다.
|
||||
blocking: false
|
||||
- severity: Low
|
||||
item: 검증 전용 fixture hash route가 dist에 포함되지만 공개 내비게이션에는 노출되지 않는다.
|
||||
blocking: false
|
||||
method-execution:
|
||||
role-id: ENG-FE
|
||||
method-id: frontend-implementation
|
||||
contract-sha256: 0464eead5e973155d003539b00b7b4b5c8b392de952ee16fd22eb63997a38f2d
|
||||
step-results:
|
||||
- step-id: implement-ui
|
||||
status: completed
|
||||
output-binding: trusted-artifact
|
||||
artifact-refs:
|
||||
- {report-id: ENG-FE-20260718T152400Z, sha256: 849cde3678402dcc84fb4020de2b1f53f34139af5e2e6073769b3389352a053a}
|
||||
- {step-id: verify-ui, status: completed, output-binding: current-artifact}
|
||||
self-check-results:
|
||||
- step-id: verify-ui
|
||||
gate-id: ui-verified
|
||||
verdict: Passed
|
||||
evidence-refs: [vr-1784388251-82db6d30415d, vr-1784388271-d3001b5d8706, payload.acceptance-criteria-coverage]
|
||||
report-header:
|
||||
bottom-line: >-
|
||||
COMPLETED — 실제 production source bundle e27731ba…가 여섯 수용 기준을 모두 통과했고,
|
||||
배포 파일·서버·검증기·실행 안내까지 hyeonworks/app에 완성됐다.
|
||||
decision-needed: {needed: false, approver: null}
|
||||
confidence: {value: High, derived-from: typed-static-and-full-browser-receipts-plus-independent-temp-copy-audit}
|
||||
risks:
|
||||
- Chrome 이외 엔진과 실제 스크린리더 발화는 비차단 잔여 위험이다.
|
||||
- 실제 사용자 학습효과는 출시 후 관찰 대상이며 이 완료 기록이 대신 주장하지 않는다.
|
||||
evidence:
|
||||
- source-uri: hyeonworks/evidence/ledger.jsonl
|
||||
grade: E3
|
||||
note: typed build receipts bound to workflow and source revision
|
||||
- source-uri: hyeonworks/app/scripts/verify_flow.cjs
|
||||
grade: E3
|
||||
note: executable full-flow assertions
|
||||
- source-uri: hyeonworks/app/verification/approved-r4.json
|
||||
grade: E3
|
||||
note: exact approved baseline hashes
|
||||
@@ -0,0 +1,86 @@
|
||||
report-type: workflow-artifact
|
||||
artifact-kind: completion-record
|
||||
artifact-version: 1
|
||||
tier: standard
|
||||
identity:
|
||||
artifact-id: ENG-FE-20260718T153900Z
|
||||
workflow-id: hyeonworks-vnext-v1
|
||||
stage: build
|
||||
producer-role-id: ENG-FE
|
||||
created-at: 20260718T153900Z
|
||||
attempt-id: 2
|
||||
supersedes-report-id: ENG-FE-20260718T152600Z
|
||||
payload:
|
||||
summary: >-
|
||||
verification에서 발견한 responsive reflow와 진행 중 smooth scroll 사이의 skip-link 타이밍 회귀를 닫은
|
||||
production hardening revision이다. 현재 main focus·route·학습 상태 보존은 그대로 유지하고,
|
||||
main 시작과 첫 제목의 실제 가시성을 viewport layout 안정화 뒤 검증한다.
|
||||
source-revision:
|
||||
kind: source-bundle
|
||||
sha256: 276b49194885f7f2c7072732095294c36f804512032e20af54c1234ca3de26cb
|
||||
primary-artifacts:
|
||||
- {path: hyeonworks/app/dist/index.html, kind: deployable-html, sha256: 6295b1cf4b5f44cd4e9a5242643712728709ac851d62c4587ef933830bd33861}
|
||||
- {path: hyeonworks/app/dist/styles.css, kind: production-css, sha256: 71e51b907f5b01c480eb348df35db17995fc45269db36ed6a1afd113e3f29f58}
|
||||
- {path: hyeonworks/app/dist/app.js, kind: production-javascript, sha256: ff85c317c9579e341a0f98cf4371a64937b13be2a21c2ac244466a630dfe6e17}
|
||||
- {path: hyeonworks/app/scripts/serve.cjs, kind: local-static-server, sha256: 7d60ac663b8e91d19a94fb90a3e1fb4564bcd56fce631e7cb0a998565a5f17e7}
|
||||
- {path: hyeonworks/app/scripts/verify_static.cjs, kind: static-verifier, sha256: 888f43084a2a9fdd4678868bdb4f6289556c0d5e4d4a9e74442e19c9d9925e26}
|
||||
- {path: hyeonworks/app/scripts/verify_flow.cjs, kind: browser-e2e-verifier, sha256: 3b3816cd70e5f6061059cc667feb10d8b0a84c1dbbe2d734c950dc7e37c47147}
|
||||
- {path: hyeonworks/app/package.json, kind: runnable-package-manifest, sha256: ad1a4310e6802db564a23969045fc52d09109190f6fa0fdb78d73798d4cf5aea}
|
||||
- {path: hyeonworks/app/README.md, kind: operator-handoff, sha256: 8ec55a62f70fc7e3b8c1e794b96fd9ab22681be30e43ba391360ccd79fb74ad9}
|
||||
- {path: hyeonworks/app/verification/approved-r4.json, kind: baseline-and-hardening-provenance, sha256: 08a414ab22b97394477106df6ab2794b3f55b2914b51ed3191527f503993a8e1}
|
||||
acceptance-criteria-coverage:
|
||||
- {criterion-id: AC-DUAL-ENTRY-SHARED-LAB, status: Passed, evidence-receipt-ids: [vr-1784389079-234063b3e56d]}
|
||||
- {criterion-id: AC-FULL-LEARNING-LOOP, status: Passed, evidence-receipt-ids: [vr-1784389079-234063b3e56d]}
|
||||
- {criterion-id: AC-CAUSAL-LEDGER-VALUES, status: Passed, evidence-receipt-ids: [vr-1784389079-234063b3e56d]}
|
||||
- {criterion-id: AC-SYMPTOM-DEBUGGER-HONESTY, status: Passed, evidence-receipt-ids: [vr-1784389079-234063b3e56d, vr-1784389087-77f25d28672d]}
|
||||
- {criterion-id: AC-A11Y-RESPONSIVE-STATE, status: Passed, evidence-receipt-ids: [vr-1784389079-234063b3e56d]}
|
||||
- {criterion-id: AC-DETERMINISTIC-OFFLINE, status: Passed, evidence-receipt-ids: [vr-1784389087-77f25d28672d, vr-1784389110-f7cccb4db1b0]}
|
||||
verification-receipt-ids:
|
||||
- vr-1784389079-234063b3e56d
|
||||
- vr-1784389087-77f25d28672d
|
||||
- vr-1784389110-f7cccb4db1b0
|
||||
revision-closure:
|
||||
detected-by: vr-1784388413-a071334f9199 and reliability reruns
|
||||
cause: exact-pixel assertion raced responsive header reflow while an earlier smooth scroll was still active.
|
||||
production-fix: skip activation cancels smooth behavior, directly aligns current main, and holds auto scrolling through a settle window.
|
||||
verifier-fix: viewport layout settles for two animation frames and checks main-start tolerance plus first-heading visibility instead of brittle exact-zero pixels.
|
||||
repeat-proof: two unwrapped npm test passes followed by source-bound AC, static, and reliability receipts.
|
||||
contrast: {lab-id: 7.1437, dark-boundary: 5.6157, pending: 5.4403, choice-border: 3.5575, textarea-border: 3.5575}
|
||||
remaining-risks:
|
||||
- {severity: Low, item: Chrome 중심 자동화이며 실제 스크린리더 발화와 비-Chromium 엔진은 수동 잔여 검증이다., blocking: false}
|
||||
- {severity: Low, item: 검증 fixture hash route가 dist에 포함되지만 공개 내비게이션에는 노출되지 않는다., blocking: false}
|
||||
method-execution:
|
||||
role-id: ENG-FE
|
||||
method-id: frontend-implementation
|
||||
contract-sha256: 0464eead5e973155d003539b00b7b4b5c8b392de952ee16fd22eb63997a38f2d
|
||||
step-results:
|
||||
- step-id: implement-ui
|
||||
status: completed
|
||||
output-binding: trusted-artifact
|
||||
artifact-refs:
|
||||
- {report-id: ENG-FE-20260718T152400Z, sha256: 849cde3678402dcc84fb4020de2b1f53f34139af5e2e6073769b3389352a053a}
|
||||
- {step-id: verify-ui, status: completed, output-binding: current-artifact}
|
||||
self-check-results:
|
||||
- step-id: verify-ui
|
||||
gate-id: ui-verified
|
||||
verdict: Passed
|
||||
evidence-refs: [vr-1784389079-234063b3e56d, vr-1784389087-77f25d28672d, vr-1784389110-f7cccb4db1b0, payload.revision-closure]
|
||||
report-header:
|
||||
bottom-line: >-
|
||||
COMPLETED revision 2 — verification에서 발견된 skip-link/reflow 타이밍 회귀를 재현·교정했고,
|
||||
최종 source 276b4919…가 전체 flow·static integrity·반복 reliability를 모두 통과했다.
|
||||
decision-needed: {needed: false, approver: null}
|
||||
confidence: {value: High, derived-from: reproduced-failure-source-bound-fix-and-consecutive-full-suite-passes}
|
||||
risks:
|
||||
- 비-Chromium과 실제 스크린리더 발화는 비차단 잔여 위험이다.
|
||||
- 실제 사용자 학습효과는 출시 후 관찰 대상이며 자동 검증으로 대신 주장하지 않는다.
|
||||
evidence:
|
||||
- source-uri: hyeonworks/evidence/ledger.jsonl
|
||||
grade: E3
|
||||
note: final source-bound AC, test and reliability receipts plus preserved failure receipts
|
||||
- source-uri: hyeonworks/app/scripts/verify_flow.cjs
|
||||
grade: E3
|
||||
note: responsive layout settle, main-state preservation and first-heading visibility assertions
|
||||
- source-uri: hyeonworks/app/verification/approved-r4.json
|
||||
grade: E3
|
||||
note: approved winner provenance and explicit post-approval production hardening
|
||||
+50
@@ -0,0 +1,50 @@
|
||||
report-type: workflow-artifact
|
||||
artifact-kind: workload-profile
|
||||
artifact-version: 1
|
||||
identity:
|
||||
artifact-id: EXEC-CEO-20260718T110454Z-1
|
||||
workflow-id: hyeonworks-vnext-v1
|
||||
stage: intake
|
||||
producer-role-id: EXEC-CEO
|
||||
created-at: 20260718T110454Z
|
||||
attempt-id: 2
|
||||
payload:
|
||||
surfaces:
|
||||
ui: true
|
||||
public-api: false
|
||||
persistence: false
|
||||
infrastructure: false
|
||||
risk:
|
||||
security-bearing: false
|
||||
data-migration: false
|
||||
external-side-effect: false
|
||||
risk-level: Med
|
||||
reversibility: two-way-door
|
||||
blast-radius: single-role
|
||||
privacy: false
|
||||
regulatory: false
|
||||
slo-impact: false
|
||||
pii: false
|
||||
data-residency: false
|
||||
customer-impact: false
|
||||
revenue-impact: false
|
||||
required-capabilities: [product-strategy, learning-design, product-design, frontend-engineering, accessibility-qa]
|
||||
product-feature: true
|
||||
context-scope: company
|
||||
delivery-profile:
|
||||
target-repo: hyeonworks
|
||||
application-root: hyeonworks/app
|
||||
implementation: "browser-local deterministic learning product"
|
||||
verification: [static-contract, production-build, browser-e2e, keyboard-a11y, responsive-render]
|
||||
report-header:
|
||||
bottom-line: >-
|
||||
UI-bearing 표준 제품 작업이다. 외부 API·영속성·인프라·개인정보는 범위 밖이며, frontend와 학습 설계,
|
||||
접근성 QA에 집중한다.
|
||||
decision-needed: { needed: false, approver: EXEC-CEO }
|
||||
confidence: { value: Med, derived-from: explicit-company-context-and-bounded-surface-contract }
|
||||
risks:
|
||||
- "브라우저 로컬 시뮬레이션을 실제 데이터베이스 동작 보증처럼 표현하면 신뢰를 훼손한다."
|
||||
evidence:
|
||||
- source-uri: org-os/01-company/company-context.yaml
|
||||
grade: E2
|
||||
note: "공식 제품 범위·trust boundary·project manifest"
|
||||
+48
@@ -0,0 +1,48 @@
|
||||
report-type: workflow-artifact
|
||||
artifact-kind: decision-brief
|
||||
artifact-version: 1
|
||||
identity:
|
||||
artifact-id: EXEC-CEO-20260718T110454Z
|
||||
workflow-id: hyeonworks-vnext-v1
|
||||
stage: intake
|
||||
producer-role-id: EXEC-CEO
|
||||
created-at: 20260718T110454Z
|
||||
attempt-id: 1
|
||||
payload:
|
||||
mode: divergent
|
||||
tier: standard
|
||||
candidate-families: [FAM-STRATEGY, FAM-PRODUCT, FAM-DESIGN, FAM-ARCHITECTURE-TECH, FAM-ENG-FRONTEND, FAM-QA]
|
||||
objective: >-
|
||||
확정된 Atlas + limited symptom-first shared-core 전략을 실제로 학습 가능한 Hyeonworks vNext 제품으로
|
||||
설계·구현한다. 첫 범위는 Transaction Isolation / Lost Update이며 두 진입은 동일 실험을 공유한다.
|
||||
company-context-ref: org-os/01-company/company-context.yaml
|
||||
venture-decision-id: EXEC-CEO-20260718T110148Z
|
||||
company-decision-ids:
|
||||
- DEC-HW2-HYBRID-001
|
||||
- DEC-HW2-SCOPE-001
|
||||
- DEC-HW2-LEARNING-001
|
||||
- DEC-HW2-BOUNDARY-001
|
||||
required-outcomes:
|
||||
- "홈에서 개념으로 시작하기와 증상에서 시작하기의 차이가 명확하다"
|
||||
- "두 진입이 동일 Lost Update scenario와 학습 상태 엔진으로 합류한다"
|
||||
- "Predict → Observe → Compare → Explain → Transfer를 키보드와 모바일로 완주한다"
|
||||
- "증상 단서를 단계적으로 좁히되 실제 장애 확정 도구로 표현하지 않는다"
|
||||
non-goals:
|
||||
- "다중 도메인 증상 taxonomy, 실제 로그·DB 연결, AI 진단, 계정·결제·CMS"
|
||||
- "완성되지 않은 기술 주제를 활성 콘텐츠처럼 표시"
|
||||
report-header:
|
||||
bottom-line: >-
|
||||
새 제품 cascade는 과거 UI를 복원하지 않고, 승인된 hybrid 전략을 바탕으로 discovery부터 새 옵션을
|
||||
발산한 뒤 디자인 방향·설계·개발·브라우저 검증까지 표준 등급으로 진행한다.
|
||||
decision-needed: { needed: false, approver: HUMAN-001 }
|
||||
confidence: { value: Med, derived-from: accepted-company-strategy-with-unbuilt-product }
|
||||
risks:
|
||||
- "두 진입이 별도 flow와 콘텐츠로 갈라지면 과도한 설계가 된다."
|
||||
- "Lost Update 한 사례의 깊이가 부족하면 Atlas도 Debugger도 피상적으로 보일 수 있다."
|
||||
evidence:
|
||||
- source-uri: org-os/01-company/company-context.yaml
|
||||
grade: E2
|
||||
note: "새 HUMAN-001 승인 hybrid 전략의 공식 SoT"
|
||||
- source-uri: hyeonworks/completion-records/hyeonworks-company-bootstrap-v2/EXEC-CEO-20260718T110148Z.report.yaml
|
||||
grade: E3
|
||||
note: "표준 3안×9-gate 기반 venture decision"
|
||||
+99
@@ -0,0 +1,99 @@
|
||||
report-type: workflow-artifact
|
||||
artifact-kind: executive-decision-packet
|
||||
artifact-version: 1
|
||||
tier: standard
|
||||
identity:
|
||||
artifact-id: EXEC-CEO-20260718T111108Z
|
||||
workflow-id: hyeonworks-vnext-v1
|
||||
stage: decide
|
||||
producer-role-id: EXEC-CEO
|
||||
created-at: 20260718T111108Z
|
||||
attempt-id: 3
|
||||
payload:
|
||||
basis-artifact-id: STR-ANALYST-20260718T110705Z
|
||||
basis-artifact-sha256: df12abd3b459747fbcd396cdb1fb203351e39b79b130c44fe76a3a3facf1fda3
|
||||
recommendation: >-
|
||||
GO — OPT-DUAL-PORTAL을 선택한다. 홈은 "개념을 알고 있어요"와 "증상만 알고 있어요"라는
|
||||
두 출발점을 명확히 제공하되, 짧은 orientation 뒤 동일 tx-lost-update-01 Lab Brief로 합류한다.
|
||||
이후 URL·scenario data·reducer·학습 콘텐츠·진행 상태·Transfer 과제는 완전히 동일하다.
|
||||
Case File의 단서 전개는 공통 Lab 서사에만 차용하고, 큰 Atlas 지도는 완성 딥다이브 3개 전까지 보류한다.
|
||||
selected-option-id: OPT-DUAL-PORTAL
|
||||
evaluation-criteria:
|
||||
- "처음 보는 사용자가 10초 안에 제품 목적과 두 출발점의 차이를 이해하는가"
|
||||
- "두 진입이 하나의 shared core로 합류해 1인 운영성을 지키는가"
|
||||
- "Lost Update의 깊이 있는 학습과 새 사례 전이를 가능하게 하는가"
|
||||
- "실제 장애 확정 도구로 오인되지 않는가"
|
||||
- "360px·키보드·reduced motion까지 단순하고 견고하게 구현 가능한가"
|
||||
option-evaluations:
|
||||
- option-id: OPT-DUAL-PORTAL
|
||||
scores: {clarity: 5, learning-depth: 4, scope-control: 4, shared-core: 5, accessibility: 5}
|
||||
evidence-refs:
|
||||
- "STR-ANALYST-20260718T110705Z@df12abd3b459747fbcd396cdb1fb203351e39b79b130c44fe76a3a3facf1fda3"
|
||||
- "EXEC-CEO-20260718T110148Z@cb7e0e18a80cf6f25bd8be4eeea3933e616e24976b3b27f5c352f93f9bfccf8c"
|
||||
- option-id: OPT-CASE-FILE
|
||||
scores: {clarity: 3, learning-depth: 5, scope-control: 5, shared-core: 5, accessibility: 4}
|
||||
evidence-refs:
|
||||
- "STR-ANALYST-20260718T110705Z@df12abd3b459747fbcd396cdb1fb203351e39b79b130c44fe76a3a3facf1fda3"
|
||||
- option-id: OPT-ATLAS-WITH-DEBUG-DOCK
|
||||
scores: {clarity: 3, learning-depth: 4, scope-control: 3, shared-core: 4, accessibility: 3}
|
||||
evidence-refs:
|
||||
- "STR-ANALYST-20260718T110705Z@df12abd3b459747fbcd396cdb1fb203351e39b79b130c44fe76a3a3facf1fda3"
|
||||
tradeoffs:
|
||||
- "두 출발점의 명확성을 얻는 대신 홈 선택 부담을 감수하고, '두 입구, 하나의 Lab' 문구로 완화한다."
|
||||
- "Atlas의 장기 확장성을 짧은 breadcrumb와 roadmap으로만 보여주고 과장된 지도를 만들지 않는다."
|
||||
- "Case File의 기억 가능한 단서 전개를 취하지만 탐정·incident·확정 진단 시각 언어는 사용하지 않는다."
|
||||
- "entryMode는 유입 메타데이터로만 유지하고 합류 후 reducer 동작을 분기하지 않는다."
|
||||
dissent:
|
||||
- "순수 구현 효율은 OPT-CASE-FILE이 더 높으며 Dual Portal이 두 제품처럼 보이면 선택 근거가 사라진다."
|
||||
- "사용자 실측 전에는 두 카드가 실제 시작률을 높이는지 알 수 없다."
|
||||
- "한 주제로 Atlas라는 이름을 쓰는 것 자체가 과장으로 느껴질 가능성이 있다."
|
||||
kill-criteria:
|
||||
- "두 진입에 별도 URL progress·scenario·reducer·설명 콘텐츠가 생긴다."
|
||||
- "사용자 5명 중 3명 이상이 두 출발점의 차이 또는 같은 Lab으로 합류한다는 사실을 설명하지 못한다."
|
||||
- "사용자 5명 중 3명 이상이 실제 장애 확정 도구로 오인한다."
|
||||
- "학습 후 3명 이상이 동일 값 읽기 → 독립 계산 → 마지막 쓰기 덮어쓰기 인과를 설명하지 못한다."
|
||||
- "360px 또는 키보드 전용 환경에서 Transfer까지 완주되지 않는다."
|
||||
revisit-conditions:
|
||||
- "Dual Portal 선택 혼란이 관찰되면 OPT-CASE-FILE 단일 화면으로 축소한다."
|
||||
- "완성형 딥다이브가 3개 이상 쌓이면 OPT-ATLAS-WITH-DEBUG-DOCK 또는 실제 Atlas map을 재평가한다."
|
||||
- "증상 진입 완주율과 학습 전이가 유지되면 같은 콘텐츠 모델의 두 번째 증상을 검토한다."
|
||||
evidence-refs:
|
||||
- "STR-ANALYST-20260718T110705Z@df12abd3b459747fbcd396cdb1fb203351e39b79b130c44fe76a3a3facf1fda3"
|
||||
- "EXEC-CEO-20260718T110148Z@cb7e0e18a80cf6f25bd8be4eeea3933e616e24976b3b27f5c352f93f9bfccf8c"
|
||||
- "org-os/01-company/company-context.yaml"
|
||||
method-execution:
|
||||
role-id: EXEC-CEO
|
||||
method-id: decide-direction
|
||||
contract-sha256: b5d36495b0e7e9a82fab77979a91c0144b1c51dbe1e6153352b6162272bb0d46
|
||||
step-results:
|
||||
- {step-id: read-evidence, status: completed, output-binding: current-artifact}
|
||||
- {step-id: evaluate-options, status: completed, output-binding: current-artifact}
|
||||
- {step-id: converge-decision, status: completed, output-binding: current-artifact}
|
||||
self-check-results:
|
||||
- step-id: converge-decision
|
||||
gate-id: single-direction
|
||||
verdict: Passed
|
||||
evidence-refs: ["payload.selected-option-id", "payload.option-evaluations", "payload.dissent"]
|
||||
decisions:
|
||||
- decision-id: HWVNEXT-PRODUCT-DIRECTION-001
|
||||
selected-option-id: OPT-DUAL-PORTAL
|
||||
alternatives:
|
||||
- {option-id: OPT-DUAL-PORTAL}
|
||||
- {option-id: OPT-CASE-FILE}
|
||||
- {option-id: OPT-ATLAS-WITH-DEBUG-DOCK}
|
||||
report-header:
|
||||
bottom-line: >-
|
||||
CEO는 Dual Portal을 선택한다. 두 입구를 명확히 보여주되 orientation 직후 하나의 Lost Update Lab으로
|
||||
합류하고, Case File은 공통 Lab 서사에만 차용하며 큰 Atlas 지도는 보류한다.
|
||||
decision-needed: { needed: true, approver: HUMAN-001 }
|
||||
confidence: { value: Med, derived-from: three-independent-lens-reviews-and-accepted-grounding }
|
||||
risks:
|
||||
- "두 개의 카드가 두 제품으로 인식될 수 있다."
|
||||
- "사용자 행동 데이터가 없어 선택 명확성은 디자인·브라우저 검증 후에도 실제 사용자 테스트가 필요하다."
|
||||
evidence:
|
||||
- source-uri: hyeonworks/completion-records/hyeonworks-vnext-v1/STR-ANALYST-20260718T110705Z.report.yaml
|
||||
grade: E3
|
||||
note: "세 experience option과 tradeoff가 보존된 accepted grounding"
|
||||
- source-uri: hyeonworks/completion-records/hyeonworks-company-bootstrap-v2/EXEC-CEO-20260718T110148Z.report.yaml
|
||||
grade: E3
|
||||
note: "accepted company strategy and shared-core boundaries"
|
||||
+45
@@ -0,0 +1,45 @@
|
||||
report-type: workflow-artifact
|
||||
artifact-kind: release-decision
|
||||
artifact-version: 1
|
||||
tier: standard
|
||||
identity:
|
||||
artifact-id: HUMAN-001-20260718T155500Z
|
||||
workflow-id: hyeonworks-vnext-v1
|
||||
stage: acceptance
|
||||
producer-role-id: HUMAN-001
|
||||
created-at: 20260718T155500Z
|
||||
payload:
|
||||
release-decision: {status: Approved}
|
||||
unresolved-critical-risks: false
|
||||
reviewed-completion-artifact-id: ENG-FE-20260718T153900Z
|
||||
reviewed-completion-artifact-sha256: cec169bd196221d1fe42f29d8f570f277a1872331eb88c489b4477aff1271d44
|
||||
reviewed-quality-event-id: wfe-20260718T155340Z-3d57e932
|
||||
reviewed-quality-artifact-id: QA-20260718T155400Z
|
||||
reviewed-quality-artifact-sha256: 9882d710d65c85ef18ba45deb148a535f1c399b8f3a87ccbb02e42afd99bdfe8
|
||||
approval-basis:
|
||||
- full learning flow and responsive keyboard behavior passed on the corrected exact source revision
|
||||
- static production integrity and deterministic repeat suite passed in the new verification epoch
|
||||
- the previously blocking skip-link timing regression is resolved with no open blocker
|
||||
residual-risks:
|
||||
- {severity: Low, blocking: false, item: non-Chromium engines and actual screen-reader speech remain manual follow-up coverage}
|
||||
- {severity: Low, blocking: false, item: learning outcome effectiveness requires post-release user observation}
|
||||
authority-note: >-
|
||||
The user explicitly requested that the complete workflow be run under an assumed approval so the finished result can be inspected.
|
||||
report-header:
|
||||
bottom-line: >-
|
||||
APPROVED — the corrected completion and its exact current quality event satisfy the standard-tier release gates;
|
||||
no unresolved Critical risk or open blocker remains.
|
||||
decision-needed: {needed: false, approver: HUMAN-001}
|
||||
confidence: {value: High, derived-from: exact-completion-quality-binding-and-user-assumed-approval}
|
||||
risks:
|
||||
- Remaining coverage gaps are Low and explicitly non-blocking.
|
||||
evidence:
|
||||
- source-uri: hyeonworks/completion-records/hyeonworks-vnext-v1/ENG-FE-20260718T153900Z.report.yaml
|
||||
grade: E3
|
||||
note: accepted corrected completion exact revision
|
||||
- source-uri: hyeonworks/completion-records/hyeonworks-vnext-v1/QA-20260718T155400Z.report.yaml
|
||||
grade: E3
|
||||
note: current Passed quality gate with resolved blocker
|
||||
- source-uri: hyeonworks/evidence/ledger.jsonl
|
||||
grade: E3
|
||||
note: fresh source-bound verification receipts
|
||||
+114
@@ -0,0 +1,114 @@
|
||||
report-type: workflow-artifact
|
||||
artifact-kind: opportunity-solution-tree
|
||||
artifact-version: 1
|
||||
tier: standard
|
||||
identity:
|
||||
artifact-id: PROD-PM-20260718T151700Z
|
||||
workflow-id: hyeonworks-vnext-v1
|
||||
stage: spec
|
||||
producer-role-id: PROD-PM
|
||||
created-at: 20260718T151700Z
|
||||
attempt-id: 1
|
||||
payload:
|
||||
root-outcome:
|
||||
id: OUTCOME-LOST-UPDATE-TRANSFER
|
||||
statement: >-
|
||||
사용자는 guided Lost Update 사례를 끝낸 뒤, 동일 값 읽기 → 독립 계산 → 마지막 쓰기 덮어쓰기라는
|
||||
인과를 증거 값으로 설명하고 새로운 재고 사례에서 사라진 변경을 스스로 찾아낸다.
|
||||
observable-completion:
|
||||
- 예측을 관찰 전에 기록한다.
|
||||
- 100·120·150·70과 여섯 실행 단계를 근거로 예상과 관찰을 비교한다.
|
||||
- read basis, final write, lost change를 사용해 인과 설명을 구성한다.
|
||||
- 별도 재고 사례에서 사라진 변화를 식별해 Transfer를 제출한다.
|
||||
target-job:
|
||||
actor: 트랜잭션 동시성 개념을 이름만 알거나 이상한 최종값만 본 학습자
|
||||
situation: Lost Update를 암기가 아니라 실행 순서와 값의 변화로 이해하고 싶을 때
|
||||
motivation: 원인을 재구성하고 다른 사례에서도 같은 메커니즘을 판별하고 싶다.
|
||||
opportunities:
|
||||
- id: OPP-EVIDENCE-GAP
|
||||
problem: 용어 설명만으로는 최종값 70이 왜 직렬 기대값 120과 다른지 재구성하기 어렵다.
|
||||
desired-change: 예측과 실제 READ/WRITE ledger를 나란히 비교한다.
|
||||
priority: 1
|
||||
- id: OPP-ENTRY-GAP
|
||||
problem: 개념명을 아는 사람과 결과 증상만 아는 사람은 시작 질문이 다르다.
|
||||
desired-change: 두 orientation을 제공하되 하나의 scenario와 reducer로 즉시 합류한다.
|
||||
priority: 2
|
||||
- id: OPP-TRANSFER-GAP
|
||||
problem: 정답 선택만으로는 새 사례에 지식을 옮길 수 있는지 알 수 없다.
|
||||
desired-change: 설명 구성과 새 재고 사례의 Transfer를 완료 경계로 둔다.
|
||||
priority: 3
|
||||
- id: OPP-TRUST-GAP
|
||||
problem: 증상 진입이 실제 로그 분석이나 장애 확정 기능으로 오인될 수 있다.
|
||||
desired-change: 모든 증상 단서를 guided simulation으로 명시한다.
|
||||
priority: 4
|
||||
solution-hypotheses:
|
||||
- id: SOL-DUAL-PORTAL-SHARED-LAB
|
||||
addresses: [OPP-ENTRY-GAP, OPP-EVIDENCE-GAP, OPP-TRANSFER-GAP, OPP-TRUST-GAP]
|
||||
hypothesis: >-
|
||||
개념·증상 두 입구와 하나의 deterministic Lab을 결합하면 시작 맥락을 존중하면서도
|
||||
중복 없이 Predict→Observe→Compare→Explain→Transfer의 깊은 학습을 제공할 수 있다.
|
||||
selected: true
|
||||
smallest-testable-scope: Lost Update 한 주제, 브라우저 로컬 상태, 원격 의존성 없음
|
||||
- id: SOL-SINGLE-CASE-FILE
|
||||
addresses: [OPP-EVIDENCE-GAP, OPP-TRANSFER-GAP]
|
||||
hypothesis: 하나의 사건 화면만 제공하면 구현은 단순하지만 두 시작 맥락의 차이가 약해진다.
|
||||
selected: false
|
||||
- id: SOL-ATLAS-MAP
|
||||
addresses: [OPP-ENTRY-GAP]
|
||||
hypothesis: 관계 지도를 먼저 제공하면 장기 확장은 보이지만 한 주제 v1에서는 범위를 과장한다.
|
||||
selected: false
|
||||
scope-boundary:
|
||||
in:
|
||||
- tx-lost-update-01 한 주제
|
||||
- 두 orientation과 동일 Lab 합류
|
||||
- causal ledger와 다섯 단계 학습 루프
|
||||
- 키보드·360/768/1280·skip-link 상태 보존
|
||||
- deterministic offline 실행
|
||||
out:
|
||||
- 실제 로그 수집·장애 원인 확정·AI 진단
|
||||
- 계정·진행 저장·원격 데이터베이스·서버 API
|
||||
- 세 주제 전에 범용 콘텐츠 플랫폼이나 Atlas map 구축
|
||||
evidence-bindings:
|
||||
product-decision:
|
||||
artifact-id: EXEC-CEO-20260718T111108Z
|
||||
artifact-sha256: 59aa01ae31c922475055d80a11a8facf298c6c7a0b900bbd086cd98324d326a4
|
||||
overall-design:
|
||||
artifact-id: ARCH-SOLUTION-20260718T151500Z
|
||||
artifact-sha256: 5217e3b3b8b9e3e33d13cd58e88112c32d93cbe9b51af9f919594d9be5f58d83
|
||||
method-execution:
|
||||
role-id: PROD-PM
|
||||
method-id: product-discovery
|
||||
contract-sha256: 26952bd19d4b39ecf35f674ba2abbcbf5ec14294911ef7f973bd63dc7666ed4a
|
||||
step-results:
|
||||
- step-id: frame-outcome
|
||||
status: completed
|
||||
output-binding: current-artifact
|
||||
decisions:
|
||||
- decision-id: HWVNEXT-SOLUTION-HYPOTHESIS-001
|
||||
alternatives:
|
||||
- option-id: SOL-DUAL-PORTAL-SHARED-LAB
|
||||
evidence-refs: [payload.opportunities, payload.evidence-bindings]
|
||||
- option-id: SOL-SINGLE-CASE-FILE
|
||||
evidence-refs: [payload.solution-hypotheses]
|
||||
- option-id: SOL-ATLAS-MAP
|
||||
evidence-refs: [payload.scope-boundary]
|
||||
selected-option-id: SOL-DUAL-PORTAL-SHARED-LAB
|
||||
rejection-rationales:
|
||||
SOL-SINGLE-CASE-FILE: 두 시작 맥락을 명확히 지원하지 못한다.
|
||||
SOL-ATLAS-MAP: 한 주제 v1에 구조와 표현을 과잉 설계한다.
|
||||
report-header:
|
||||
bottom-line: >-
|
||||
v1의 루트 성과는 Lost Update의 인과를 증거로 재구성하고 새 사례로 전이하는 것이다.
|
||||
이를 위해 두 입구가 하나의 deterministic Lab으로 합류하는 최소 가설을 선택했다.
|
||||
decision-needed: {needed: false, approver: null}
|
||||
confidence: {value: High, derived-from: accepted-product-decision-overall-design-and-browser-tested-direction}
|
||||
risks:
|
||||
- 실제 사용자 학습성과는 출시 후 별도 관찰이 필요하다.
|
||||
- 두 입구가 두 제품처럼 보이면 shared-Lab 문구와 orientation 길이를 다시 줄여야 한다.
|
||||
evidence:
|
||||
- source-uri: hyeonworks/completion-records/hyeonworks-vnext-v1/EXEC-CEO-20260718T111108Z.report.yaml
|
||||
grade: E3
|
||||
note: accepted dual-portal product decision and kill criteria
|
||||
- source-uri: hyeonworks/completion-records/hyeonworks-vnext-v1/ARCH-SOLUTION-20260718T151500Z.report.yaml
|
||||
grade: E3
|
||||
note: accepted architecture and explicit scope boundary
|
||||
+70
@@ -0,0 +1,70 @@
|
||||
report-type: workflow-artifact
|
||||
artifact-kind: opportunity-solution-tree
|
||||
artifact-version: 1
|
||||
tier: standard
|
||||
identity:
|
||||
artifact-id: PROD-PM-20260718T152000Z
|
||||
workflow-id: hyeonworks-vnext-v1
|
||||
stage: spec
|
||||
producer-role-id: PROD-PM
|
||||
created-at: 20260718T152000Z
|
||||
attempt-id: 1
|
||||
payload:
|
||||
outcome: >-
|
||||
개발자가 Lost Update를 정의로 외우는 데 그치지 않고, 실행 전 결과를 예측한 뒤 100·120·150·70의
|
||||
read/write 증거로 어긋남을 찾아 세 인과 요소를 설명하고 새 동시성 사례에 전이한다.
|
||||
opportunities:
|
||||
- id: OPP-ENTRY-CONTEXT
|
||||
problem: 사용자는 격리 개념을 알거나 이상 결과만 아는 서로 다른 상태에서 시작한다.
|
||||
solutions:
|
||||
- id: SOL-DUAL-ENTRY
|
||||
hypothesis: 두 orientation이 같은 scenario와 reducer로 합류하면 시작 맥락은 맞추면서 제품 분열을 막는다.
|
||||
- id: SOL-SINGLE-ARTICLE
|
||||
hypothesis: 한 문서 입구는 단순하지만 증상 기반 질문을 잃는다.
|
||||
- id: OPP-PASSIVE-UNDERSTANDING
|
||||
problem: 정답을 먼저 읽으면 실제 실행 순서와 마지막 write의 영향을 스스로 재구성하기 어렵다.
|
||||
solutions:
|
||||
- id: SOL-EVIDENCE-LOOP
|
||||
hypothesis: Predict→Observe→Compare→Explain→Transfer gate가 능동적 인과 구성을 유도한다.
|
||||
- id: SOL-REFERENCE-ONLY
|
||||
hypothesis: 긴 설명은 깊이를 주지만 예측·전이 행동을 증명하지 못한다.
|
||||
- id: OPP-DEBUGGER-TRUST
|
||||
problem: 증상에서 시작하는 흐름이 실제 장애 진단 도구로 오인될 수 있다.
|
||||
solutions:
|
||||
- id: SOL-GUIDED-DEBUGGER
|
||||
hypothesis: 단서→후보→고정 Lab 검증과 명시적 guided boundary가 디버거 사고법만 제공한다.
|
||||
- id: SOL-REAL-LOG-INGESTION
|
||||
hypothesis: 실제 로그 수집은 v1 범위·보안·데이터 설계를 과도하게 늘려 제외한다.
|
||||
selected-solution-set: [SOL-DUAL-ENTRY, SOL-EVIDENCE-LOOP, SOL-GUIDED-DEBUGGER]
|
||||
evidence-basis:
|
||||
overall-design-id: ARCH-SOLUTION-20260718T151500Z
|
||||
overall-design-sha256: 5217e3b3b8b9e3e33d13cd58e88112c32d93cbe9b51af9f919594d9be5f58d83
|
||||
approved-prototype-id: ENG-FE-20260718T144700Z
|
||||
method-execution:
|
||||
role-id: PROD-PM
|
||||
method-id: product-discovery
|
||||
contract-sha256: 26952bd19d4b39ecf35f674ba2abbcbf5ec14294911ef7f973bd63dc7666ed4a
|
||||
step-results:
|
||||
- {step-id: frame-outcome, status: completed, output-binding: current-artifact}
|
||||
decisions:
|
||||
- decision-id: HWVNEXT-SOLUTION-SET
|
||||
selected-option-id: SOL-EVIDENCE-LOOP
|
||||
alternatives:
|
||||
- {option-id: SOL-EVIDENCE-LOOP}
|
||||
- {option-id: SOL-REFERENCE-ONLY}
|
||||
- {option-id: SOL-REAL-LOG-INGESTION}
|
||||
report-header:
|
||||
bottom-line: >-
|
||||
제품 outcome을 ‘Lost Update 인과를 증거로 설명하고 전이한다’로 고정하고,
|
||||
두 입구·evidence learning loop·guided debugger를 최소 솔루션 집합으로 선택한다.
|
||||
decision-needed: {needed: false, approver: null}
|
||||
confidence: {value: Med, derived-from: accepted-overall-design-and-browser-tested-prototype-without-user-outcome-data}
|
||||
risks:
|
||||
- 실제 사용자 학습 성과는 아직 측정하지 않았으므로 자동 완주를 학습효과로 과장하지 않는다.
|
||||
evidence:
|
||||
- source-uri: hyeonworks/completion-records/hyeonworks-vnext-v1/ARCH-SOLUTION-20260718T151500Z.report.yaml
|
||||
grade: E3
|
||||
note: accepted architecture and quality boundaries
|
||||
- source-uri: hyeonworks/design-direction/hyeonworks-vnext-v1/prototype/core-flow.yaml
|
||||
grade: E3
|
||||
note: browser-tested shared learning loop
|
||||
+106
@@ -0,0 +1,106 @@
|
||||
report-type: workflow-artifact
|
||||
artifact-kind: prd
|
||||
artifact-version: 1
|
||||
tier: standard
|
||||
identity:
|
||||
artifact-id: PROD-PM-20260718T152100Z
|
||||
workflow-id: hyeonworks-vnext-v1
|
||||
stage: spec
|
||||
producer-role-id: PROD-PM
|
||||
created-at: 20260718T152100Z
|
||||
attempt-id: 1
|
||||
payload:
|
||||
basis-artifact-id: ARCH-SOLUTION-20260718T151500Z
|
||||
basis-artifact-sha256: 5217e3b3b8b9e3e33d13cd58e88112c32d93cbe9b51af9f919594d9be5f58d83
|
||||
problem: >-
|
||||
기술 학습자는 Transaction Isolation과 Lost Update의 정의를 읽어도, 두 세션이 같은 값을 읽고
|
||||
독립 계산한 뒤 마지막 write가 앞선 변화를 덮는 실행 인과를 스스로 재구성하기 어렵다.
|
||||
개념을 아는 사람과 결과 70이라는 증상만 아는 사람 모두에게 맞는 출발점이 필요하지만,
|
||||
두 개의 제품·진단 엔진·콘텐츠 사본을 만들면 품질과 정직성이 무너진다.
|
||||
outcomes:
|
||||
- 사용자가 정답을 보기 전에 기대 결과를 예측한다.
|
||||
- 사용자가 100→120/150→70 실행 증거에서 동일 read basis, 독립 계산, 마지막 write라는 세 요소를 연결한다.
|
||||
- 개념·증상 입구 모두 동일 Lost Update Lab과 진행 모델을 완주한다.
|
||||
- 사용자가 새 재고 사례에서 사라진 변화를 같은 인과 구조로 전이한다.
|
||||
- 제품이 guided simulation 경계를 명확히 유지한다.
|
||||
non-goals:
|
||||
- 실제 로그 수집·분석 또는 장애 원인 확정
|
||||
- 원격 데이터베이스 연결·쿼리 실행·벤더별 보장 판정
|
||||
- AI 진단, 계정, 서버 진행 저장, 공개 API
|
||||
- 여러 기술 주제를 빈 카드나 지도에 미리 채우는 것
|
||||
- 자동 테스트 통과를 실제 사용자 학습효과로 주장하는 것
|
||||
user-stories:
|
||||
- id: US-CONCEPT
|
||||
story: 격리 개념을 아는 개발자로서 약속과 실행 결과의 차이를 검증해 Lost Update 인과를 정확히 설명하고 싶다.
|
||||
- id: US-SYMPTOM
|
||||
story: 기대 120 대신 70이라는 증상만 아는 개발자로서 단서를 공개하고 후보 메커니즘을 고정 Lab에서 검증하고 싶다.
|
||||
- id: US-PRACTICE
|
||||
story: 학습자로서 예측부터 전이까지 순서대로 행동해 수동적 읽기가 아니라 내 설명을 만들고 싶다.
|
||||
- id: US-KEYBOARD
|
||||
story: 키보드·작은 화면 사용자로서 route나 진행 상태를 잃지 않고 전체 Lab을 완주하고 싶다.
|
||||
success-metrics:
|
||||
- id: QUALITY-DUAL-ENTRY
|
||||
launch-threshold: 두 공개 entry의 browser E2E가 동일 scenario-id와 reducer state에 합류해 100% 통과한다.
|
||||
- id: QUALITY-CAUSAL-LOOP
|
||||
launch-threshold: 기본 6-step과 회귀 fixture 4-step이 Predict→Transfer를 deterministic하게 반복 완주한다.
|
||||
- id: QUALITY-A11Y
|
||||
launch-threshold: 360·768·1280에서 문서 overflow 0, keyboard completion 100%, normal text 4.5:1 및 control 3:1 이상이다.
|
||||
- id: QUALITY-HONESTY
|
||||
launch-threshold: 모든 공개 진입과 완료 상태에 guided scenario 경계가 있고 remote request가 0건이다.
|
||||
- id: LEARNING-HYPOTHESIS
|
||||
post-launch-measure: 사용자 5명 중 3명 이상이 세 인과 요소와 새 사례를 설명하는지 별도 관찰한다; 출시 자동 게이트가 아니다.
|
||||
constraints:
|
||||
- zero runtime dependency와 정적 배포를 유지한다.
|
||||
- 주제는 Transaction Isolation / Lost Update 하나로 제한한다.
|
||||
- concept와 symptom entry는 scenario data·reducer·학습 콘텐츠를 복제하지 않는다.
|
||||
- 360px, keyboard, visible focus, reduced motion, 한국어 읽기 순서를 보존한다.
|
||||
- 실제 로그·원격 DB·AI 진단처럼 표현하지 않는다.
|
||||
prioritized-requirements:
|
||||
- {id: R1, priority: P0, requirement: 두 입구가 하나의 tx-lost-update-01 Lab에 합류한다.}
|
||||
- {id: R2, priority: P0, requirement: Predict→Observe→Compare→Explain→Transfer 순서와 gate를 유지한다.}
|
||||
- {id: R3, priority: P0, requirement: 100·120·150·70과 read/write 순서를 causal ledger로 관찰한다.}
|
||||
- {id: R4, priority: P0, requirement: symptom debugger는 단서·후보·검증을 제공하되 실제 진단을 주장하지 않는다.}
|
||||
- {id: R5, priority: P0, requirement: 반응형·keyboard·focus·skip-link state·contrast를 자동 검증한다.}
|
||||
- {id: R6, priority: P1, requirement: static local-only delivery와 deterministic regression fixture를 유지한다.}
|
||||
delivery-boundary:
|
||||
inspectable-app: hyeonworks/app
|
||||
first-public-topic: Transaction Isolation / Lost Update
|
||||
method-execution:
|
||||
role-id: PROD-PM
|
||||
method-id: product-discovery
|
||||
contract-sha256: 26952bd19d4b39ecf35f674ba2abbcbf5ec14294911ef7f973bd63dc7666ed4a
|
||||
step-results:
|
||||
- step-id: frame-outcome
|
||||
status: completed
|
||||
output-binding: trusted-artifact
|
||||
artifact-refs:
|
||||
- {report-id: PROD-PM-20260718T152000Z, sha256: f8af0e1bbaedf87dd955d663cad887545c1efc7347f0908942400707000b0045}
|
||||
- {step-id: write-prd, status: completed, output-binding: current-artifact}
|
||||
self-check-results:
|
||||
- step-id: write-prd
|
||||
gate-id: outcome-grounded
|
||||
verdict: Passed
|
||||
evidence-refs: [payload.outcomes, payload.success-metrics, payload.prioritized-requirements, PROD-PM-20260718T152000Z]
|
||||
decisions:
|
||||
- decision-id: HWVNEXT-V1-SCOPE
|
||||
selected-option-id: DUAL-ENTRY-SHARED-LAB
|
||||
alternatives:
|
||||
- {option-id: DUAL-ENTRY-SHARED-LAB}
|
||||
- {option-id: SINGLE-ARTICLE}
|
||||
- {option-id: REAL-DEBUGGING-PLATFORM}
|
||||
report-header:
|
||||
bottom-line: >-
|
||||
v1은 두 출발점이 하나의 Lost Update causal Lab으로 합류하는 깊이 학습 제품이다.
|
||||
출시 범위는 예측·관찰·비교·설명·전이와 접근성·정직한 경계이며 backend·실제 진단은 명시적으로 제외한다.
|
||||
decision-needed: {needed: false, approver: null}
|
||||
confidence: {value: Med, derived-from: accepted-strategy-design-and-browser-proof-with-user-learning-still-a-hypothesis}
|
||||
risks:
|
||||
- 실제 사용자에게 두 입구의 차이가 명확한지는 별도 사용성 관찰이 필요하다.
|
||||
- 한 주제에서 Atlas라는 명칭의 기대가 과할 수 있어 roadmap은 inactive로 정직하게 표시한다.
|
||||
evidence:
|
||||
- source-uri: hyeonworks/completion-records/hyeonworks-vnext-v1/PROD-PM-20260718T152000Z.report.yaml
|
||||
grade: E3
|
||||
note: exact opportunity-solution tree
|
||||
- source-uri: hyeonworks/completion-records/hyeonworks-vnext-v1/ARCH-SOLUTION-20260718T151500Z.report.yaml
|
||||
grade: E3
|
||||
note: accepted overall design
|
||||
+52
@@ -0,0 +1,52 @@
|
||||
report-type: workflow-artifact
|
||||
artifact-kind: product-goal
|
||||
artifact-version: 1
|
||||
tier: standard
|
||||
identity:
|
||||
artifact-id: PROD-PO-20260718T152200Z
|
||||
workflow-id: hyeonworks-vnext-v1
|
||||
stage: spec
|
||||
producer-role-id: PROD-PO
|
||||
created-at: 20260718T152200Z
|
||||
attempt-id: 1
|
||||
payload:
|
||||
goal: >-
|
||||
개념 또는 증상에서 출발한 개발자가 같은 Lost Update Lab에서 정답을 먼저 보지 않고 예측하고,
|
||||
실제 read/write 증거를 관찰·비교해 세 인과 요소를 설명한 뒤 새 사례에 전이할 수 있는
|
||||
첫 번째 완성형 Technology Atlas 딥다이브를 출시한다.
|
||||
prd-binding:
|
||||
artifact-id: PROD-PM-20260718T152100Z
|
||||
artifact-sha256: b9f162e7f26dff79e79f018488ad96d839701eec29b5eb5d15e1aad7f59bd627
|
||||
backlog-order:
|
||||
- {order: 1, item: shared scenario and reducer across two entries, risk: product split}
|
||||
- {order: 2, item: gated five-phase causal learning loop, risk: passive answer reveal}
|
||||
- {order: 3, item: exact 100·120·150·70 ledger and transfer case, risk: causal inaccuracy}
|
||||
- {order: 4, item: debugger clue flow plus guided boundary, risk: diagnosis misrepresentation}
|
||||
- {order: 5, item: responsive keyboard focus contrast and skip-state preservation, risk: inaccessible completion}
|
||||
- {order: 6, item: dependency-free local delivery and deterministic regression, risk: unnecessary operations}
|
||||
definition-of-done:
|
||||
- 여섯 수용 기준이 각각 실행 가능한 검증 방법과 expected result를 가진다.
|
||||
- actual production files와 전체 browser flow가 동일 source revision에 결속된다.
|
||||
- 독립 QA가 verification stage에서 새 영수증으로 quality gate를 통과한다.
|
||||
exclusions: [real diagnosis, remote database, account, persistence, public API, additional public topic]
|
||||
method-execution:
|
||||
role-id: PROD-PO
|
||||
method-id: backlog-definition
|
||||
contract-sha256: 2e233338fb4f316efbd68ae3af77b36474ecec9683f759bfbbb51bd55eecb34e
|
||||
step-results:
|
||||
- {step-id: set-goal, status: completed, output-binding: current-artifact}
|
||||
report-header:
|
||||
bottom-line: >-
|
||||
Product Goal은 두 입구에서 동일한 Lost Update 인과 Lab을 완주하고 새 사례로 전이하는 첫 딥다이브 출시다.
|
||||
백로그는 제품 분열·인과 오류·진단 오인·접근성 회귀 위험 순으로 정렬한다.
|
||||
decision-needed: {needed: false, approver: null}
|
||||
confidence: {value: Med, derived-from: accepted-prd-and-explicit-testable-done-boundary}
|
||||
risks:
|
||||
- 실제 학습성과는 출시 품질 게이트와 별개로 후속 관찰해야 한다.
|
||||
evidence:
|
||||
- source-uri: hyeonworks/completion-records/hyeonworks-vnext-v1/PROD-PM-20260718T152100Z.report.yaml
|
||||
grade: E3
|
||||
note: exact accepted PRD
|
||||
- source-uri: hyeonworks/app/README.md
|
||||
grade: E3
|
||||
note: inspectable production flow and honest scope
|
||||
+114
@@ -0,0 +1,114 @@
|
||||
report-type: workflow-artifact
|
||||
artifact-kind: acceptance-criteria
|
||||
artifact-version: 1
|
||||
tier: standard
|
||||
identity:
|
||||
artifact-id: PROD-PO-20260718T152300Z
|
||||
workflow-id: hyeonworks-vnext-v1
|
||||
stage: spec
|
||||
producer-role-id: PROD-PO
|
||||
created-at: 20260718T152300Z
|
||||
attempt-id: 1
|
||||
payload:
|
||||
basis-artifact-id: ARCH-SOLUTION-20260718T151500Z
|
||||
basis-artifact-sha256: 5217e3b3b8b9e3e33d13cd58e88112c32d93cbe9b51af9f919594d9be5f58d83
|
||||
prd-binding:
|
||||
artifact-id: PROD-PM-20260718T152100Z
|
||||
artifact-sha256: b9f162e7f26dff79e79f018488ad96d839701eec29b5eb5d15e1aad7f59bd627
|
||||
criteria:
|
||||
- criterion-id: AC-DUAL-ENTRY-SHARED-LAB
|
||||
preconditions: [앱이 홈 route에서 실행 중이다.]
|
||||
input:
|
||||
routes: ['#/orient/concept', '#/orient/symptom']
|
||||
action: 각 orientation에서 Lab 시작 control을 활성화한다.
|
||||
expected-result: >-
|
||||
두 경로는 모두 동일 '#/lab/tx-lost-update-01'로 이동하고 main의 scenario-id가
|
||||
tx-lost-update-01이며 동일한 initial state·phase order·learning reducer를 사용한다.
|
||||
risk-level: High
|
||||
verification-method: automated-test
|
||||
- criterion-id: AC-FULL-LEARNING-LOOP
|
||||
preconditions: [tx-lost-update-01 Lab이 초기화돼 있다.]
|
||||
input:
|
||||
actions: [prediction 선택, Observe 6단계 실행, Compare 확인, causal explanation 제출, transfer answer 제출]
|
||||
negative-paths: [설명 오답 제출 후 재시도, transfer 오답 제출 후 재시도]
|
||||
expected-result: >-
|
||||
Predict→Observe→Compare→Explain→Transfer만 순서대로 열리고 오답은 구체적 피드백과 focus를 제공하며,
|
||||
정답 후 완료 화면과 같은 Lab 재실행 control이 나타난다.
|
||||
risk-level: High
|
||||
verification-method: automated-test
|
||||
- criterion-id: AC-CAUSAL-LEDGER-VALUES
|
||||
preconditions: [Observe phase가 시작됐다.]
|
||||
input:
|
||||
scenario: A는 +50, B는 -30을 같은 initial 100에서 계산한다.
|
||||
expected-trace: [A read 100, B read 100, A computes 150, B computes 70, A writes 150, B writes 70]
|
||||
expected-result: >-
|
||||
serial expected 값은 120, 최종 observed 값은 70이며 Compare·Explain은 동일 read basis,
|
||||
독립 계산, B의 마지막 write가 A의 +50을 덮었다는 세 인과 요소에 결속된다.
|
||||
risk-level: Critical
|
||||
verification-method: automated-test
|
||||
- criterion-id: AC-SYMPTOM-DEBUGGER-HONESTY
|
||||
preconditions: [증상 orientation route가 열려 있다.]
|
||||
input:
|
||||
action: 단서 4개를 차례로 공개하고 후보 메커니즘에서 Lab을 시작한다.
|
||||
expected-result: >-
|
||||
결과 70에서 후보 Lost Update로 좁힌 뒤 공통 Lab으로 합류하고, 화면은 고정 guided scenario이며
|
||||
실제 로그 분석·AI 진단·원격 DB 실행·장애 원인 확정이 아님을 명시한다.
|
||||
risk-level: High
|
||||
verification-method: automated-test
|
||||
- criterion-id: AC-A11Y-RESPONSIVE-STATE
|
||||
preconditions: [Chrome에서 360px·768px·1280px viewport를 사용할 수 있다.]
|
||||
input:
|
||||
modes: [keyboard-only, pointer]
|
||||
skip-link-states: [home, concept, revealed-symptom, default-observe-cursor-1, fixture-observe-cursor-1]
|
||||
expected-result: >-
|
||||
모든 control이 키보드로 동작하고 focus가 가시적이며 skip link가 같은 main node에 focus하되
|
||||
hash·scenario·phase·cursor·trace/clue state를 보존한다. 문서 overflow는 0이고 표 overflow는
|
||||
내부 scroll container에만 격리되며 normal text 대비 4.5:1, essential control 경계 3:1 이상이다.
|
||||
risk-level: Critical
|
||||
verification-method: automated-test
|
||||
- criterion-id: AC-DETERMINISTIC-OFFLINE
|
||||
preconditions: [배포 dist와 Node.js 18 이상이 있다.]
|
||||
input:
|
||||
actions: [설치 없이 정적 서버 실행, full-flow 반복 실행, verification fixture 실행, remote request 감시]
|
||||
expected-result: >-
|
||||
runtime dependency와 remote asset/request가 0이고 기본·fixture scenario가 서로 섞이지 않으며
|
||||
반복 실행의 상태·값·완료 결과가 동일하다. 서버는 정적 파일과 최소 보안 헤더만 제공한다.
|
||||
risk-level: Med
|
||||
verification-method: automated-test
|
||||
coverage-rule: completion-record는 여섯 criterion-id를 그대로 사용하고 각 Passed 상태를 typed receipt에 결속한다.
|
||||
method-execution:
|
||||
role-id: PROD-PO
|
||||
method-id: backlog-definition
|
||||
contract-sha256: 2e233338fb4f316efbd68ae3af77b36474ecec9683f759bfbbb51bd55eecb34e
|
||||
step-results:
|
||||
- step-id: set-goal
|
||||
status: completed
|
||||
output-binding: trusted-artifact
|
||||
artifact-refs:
|
||||
- {report-id: PROD-PO-20260718T152200Z, sha256: 588440aaf0e7a7b41e05675b6b8ab98ae419b58c62ff46f76412cfc9257a77ea}
|
||||
- {step-id: define-acceptance, status: completed, output-binding: current-artifact}
|
||||
self-check-results:
|
||||
- step-id: define-acceptance
|
||||
gate-id: testable-criteria
|
||||
verdict: Passed
|
||||
evidence-refs:
|
||||
- payload.criteria.AC-DUAL-ENTRY-SHARED-LAB
|
||||
- payload.criteria.AC-FULL-LEARNING-LOOP
|
||||
- payload.criteria.AC-CAUSAL-LEDGER-VALUES
|
||||
- payload.criteria.AC-SYMPTOM-DEBUGGER-HONESTY
|
||||
- payload.criteria.AC-A11Y-RESPONSIVE-STATE
|
||||
- payload.criteria.AC-DETERMINISTIC-OFFLINE
|
||||
report-header:
|
||||
bottom-line: >-
|
||||
여섯 수용 기준이 제품 핵심·인과 정확성·디버거 정직성·접근성·오프라인 결정성을 실행 가능한 browser/static 검증으로 닫는다.
|
||||
decision-needed: {needed: false, approver: null}
|
||||
confidence: {value: High, derived-from: exact-prd-product-goal-and-existing-browser-assertion-coverage}
|
||||
risks:
|
||||
- 실제 스크린리더 발화와 비-Chromium 엔진은 이 자동 기준 밖이며 독립 잔여 위험으로 남긴다.
|
||||
evidence:
|
||||
- source-uri: hyeonworks/completion-records/hyeonworks-vnext-v1/PROD-PM-20260718T152100Z.report.yaml
|
||||
grade: E3
|
||||
note: exact accepted PRD
|
||||
- source-uri: hyeonworks/app/scripts/verify_flow.cjs
|
||||
grade: E3
|
||||
note: executable browser assertions covering the six criteria
|
||||
@@ -0,0 +1,50 @@
|
||||
report-type: workflow-artifact
|
||||
artifact-kind: compatibility-review
|
||||
artifact-version: 1
|
||||
tier: standard
|
||||
identity:
|
||||
artifact-id: QA-20260718T151700Z
|
||||
workflow-id: hyeonworks-vnext-v1
|
||||
stage: design
|
||||
producer-role-id: QA
|
||||
created-at: 20260718T151700Z
|
||||
attempt-id: 1
|
||||
payload:
|
||||
left:
|
||||
artifact-kind: approved-design-direction
|
||||
artifact-id: DES-DIRECTOR-20260718T151300Z
|
||||
artifact-sha256: ad2120ba2b214a58adc17aac5620c6e19bd727ac4cfd1a48a41c2a75327ff885
|
||||
right:
|
||||
artifact-kind: ui-design
|
||||
artifact-id: DES-VISUAL-20260718T151500Z
|
||||
artifact-sha256: c1ed02e6b2b128c47f8dd3406f81b690b3d80636fc74eacbf442be7d667c8a4e
|
||||
dimensions: [interaction, tokens, accessibility]
|
||||
findings: []
|
||||
verdict: Passed
|
||||
reviewer-role-id: QA
|
||||
checks:
|
||||
interaction:
|
||||
verdict: Passed
|
||||
evidence: 두 entry가 동일 tx-lost-update-01과 reducer, 동일 다섯 단계 루프에 합류하며 skip link가 route state를 보존한다.
|
||||
tokens:
|
||||
verdict: Passed
|
||||
evidence: paper·ink·deep·observed·on-deep·pending·control-border 값과 surface별 대비 floor가 정확히 일치한다.
|
||||
accessibility:
|
||||
verdict: Passed
|
||||
evidence: native controls, visible focus, current-main skip target, color-independent labels, 360·768·1280 읽기 순서 계약이 일치한다.
|
||||
independence: QA는 두 endpoint producer DES-DIRECTOR·DES-VISUAL과 다르며 exact immutable revision을 검토했다.
|
||||
report-header:
|
||||
bottom-line: >-
|
||||
PASS — 승인 방향과 UI 설계는 interaction·token·accessibility 세 계약에서 exact하게 일치하며
|
||||
구현 전달을 막는 finding이 없다.
|
||||
decision-needed: {needed: false, approver: null}
|
||||
confidence: {value: High, derived-from: exact-endpoint-sha-contract-comparison-and-r4-browser-evidence}
|
||||
risks:
|
||||
- 구현 중 token 이름만 복사하고 실제 surface 사용처가 달라지는 회귀는 브라우저 computed-style 검증으로 다시 잡아야 한다.
|
||||
evidence:
|
||||
- source-uri: hyeonworks/completion-records/hyeonworks-vnext-v1/DES-DIRECTOR-20260718T151300Z.report.yaml
|
||||
grade: E3
|
||||
note: exact approved design direction endpoint
|
||||
- source-uri: hyeonworks/completion-records/hyeonworks-vnext-v1/DES-VISUAL-20260718T151500Z.report.yaml
|
||||
grade: E3
|
||||
note: exact UI design endpoint
|
||||
@@ -0,0 +1,46 @@
|
||||
report-type: workflow-artifact
|
||||
artifact-kind: quality-gate-review
|
||||
artifact-version: 1
|
||||
tier: standard
|
||||
identity:
|
||||
artifact-id: QA-20260718T154200Z
|
||||
workflow-id: hyeonworks-vnext-v1
|
||||
stage: verification
|
||||
producer-role-id: QA
|
||||
created-at: 20260718T154200Z
|
||||
attempt-id: 1
|
||||
payload:
|
||||
quality-gate: {status: Failed}
|
||||
blocker-open: true
|
||||
reviewed-artifact-id: ENG-FE-20260718T152600Z
|
||||
reviewed-artifact-sha256: 5b8b256ce82f07b3f1d06f61926111460823ac6fe6b71934e5de2be2f7e3d0ad
|
||||
checks:
|
||||
- check-id: AC-FULL-FLOW
|
||||
category: acceptance-criteria
|
||||
status: Failed
|
||||
evidence-receipt-ids: [vr-1784388413-a071334f9199]
|
||||
findings:
|
||||
- finding-id: QF-SKIP-REFLOW-TIMING
|
||||
severity: High
|
||||
blocking: true
|
||||
resolved: false
|
||||
summary: >-
|
||||
768→360 responsive reflow 직후 이전 smooth scroll이 진행 중인 상태에서 skip link를 활성화하면
|
||||
current main의 시작 위치가 약 25px 위로 벗어나는 timing regression이 재현됐다.
|
||||
required-action: build 단계로 돌아가 production scroll cancellation과 non-brittle visibility regression을 구현한 뒤 새 source revision으로 재검증한다.
|
||||
independence: QA는 reviewed completion producer ENG-FE와 다르며 verification 진입 후 fresh typed receipt를 사용했다.
|
||||
report-header:
|
||||
bottom-line: >-
|
||||
FAILED — build source e27731ba…는 route와 학습 상태를 보존하지만 responsive reflow와 진행 중 scroll이 겹칠 때
|
||||
current main 시작 가시성이 흔들리므로 출시를 차단하고 build rework가 필요하다.
|
||||
decision-needed: {needed: false, approver: null}
|
||||
confidence: {value: High, derived-from: fresh-source-bound-reproducible-chrome-receipt}
|
||||
risks:
|
||||
- 재실행만으로 통과시키면 간헐적 접근성 회귀가 그대로 출시될 수 있다.
|
||||
evidence:
|
||||
- source-uri: hyeonworks/evidence/ledger.jsonl
|
||||
grade: E3
|
||||
note: failed typed receipt vr-1784388413-a071334f9199 bound to source e27731ba
|
||||
- source-uri: hyeonworks/app/scripts/verify_flow.cjs
|
||||
grade: E3
|
||||
note: exact skip state and in-view assertion
|
||||
@@ -0,0 +1,63 @@
|
||||
report-type: workflow-artifact
|
||||
artifact-kind: quality-gate-review
|
||||
artifact-version: 1
|
||||
tier: standard
|
||||
identity:
|
||||
artifact-id: QA-20260718T155400Z
|
||||
workflow-id: hyeonworks-vnext-v1
|
||||
stage: verification
|
||||
producer-role-id: QA
|
||||
created-at: 20260718T155400Z
|
||||
attempt-id: 2
|
||||
supersedes-report-id: QA-20260718T154200Z
|
||||
payload:
|
||||
quality-gate: {status: Passed}
|
||||
blocker-open: false
|
||||
reviewed-artifact-id: ENG-FE-20260718T153900Z
|
||||
reviewed-artifact-sha256: cec169bd196221d1fe42f29d8f570f277a1872331eb88c489b4477aff1271d44
|
||||
checks:
|
||||
- check-id: AC-FULL-FLOW
|
||||
category: acceptance-criteria
|
||||
status: Passed
|
||||
evidence-receipt-ids: [vr-1784389937-4c23760db5ed]
|
||||
- check-id: TEST-STATIC-QUALITY
|
||||
category: test
|
||||
status: Passed
|
||||
evidence-receipt-ids: [vr-1784389949-8e741a9a1f0e]
|
||||
- check-id: RELIABILITY-DETERMINISM
|
||||
category: reliability
|
||||
status: Passed
|
||||
evidence-receipt-ids: [vr-1784389973-18328d8be77c]
|
||||
findings:
|
||||
- finding-id: QF-SKIP-REFLOW-TIMING
|
||||
severity: High
|
||||
blocking: true
|
||||
resolved: true
|
||||
summary: >-
|
||||
responsive reflow와 진행 중 smooth scroll이 겹칠 때 발생하던 skip-link 가시성 회귀를
|
||||
production scroll cancellation과 layout-settled heading visibility 검증으로 닫았다.
|
||||
resolution-evidence-receipt-ids:
|
||||
- vr-1784389937-4c23760db5ed
|
||||
- vr-1784389973-18328d8be77c
|
||||
independence: >-
|
||||
QA는 completion producer ENG-FE와 분리되어 있으며, 수정 completion exact SHA가 build에서
|
||||
승인된 뒤 열린 새 verification epoch에서 세 검증을 독립적으로 다시 실행했다.
|
||||
report-header:
|
||||
bottom-line: >-
|
||||
PASSED — 수정 source 276b4919…와 completion cec169bd…가 전체 학습 플로우,
|
||||
정적 무결성, 반복 결정성 검증을 모두 통과했고 기존 High blocker는 해결됐다.
|
||||
decision-needed: {needed: false, approver: null}
|
||||
confidence: {value: High, derived-from: fresh-exact-source-bound-independent-verification}
|
||||
risks:
|
||||
- 비-Chromium 엔진과 실제 스크린리더 발화는 출시를 막지 않는 수동 잔여 검증이다.
|
||||
- 실제 사용자 학습효과는 운영 관찰 대상이며 자동화 결과로 대신 주장하지 않는다.
|
||||
evidence:
|
||||
- source-uri: hyeonworks/evidence/ledger.jsonl
|
||||
grade: E3
|
||||
note: 새 verification epoch의 AC, static, reliability typed receipts
|
||||
- source-uri: hyeonworks/app/scripts/verify_flow.cjs
|
||||
grade: E3
|
||||
note: dual-entry shared lab, full causal loop, responsive state, keyboard focus and contrast
|
||||
- source-uri: hyeonworks/app/scripts/verify_static.cjs
|
||||
grade: E3
|
||||
note: approved provenance, local-only assets and deployable static integrity
|
||||
+110
@@ -0,0 +1,110 @@
|
||||
report-type: workflow-artifact
|
||||
artifact-kind: grounding-package
|
||||
artifact-version: 1
|
||||
tier: standard
|
||||
identity:
|
||||
artifact-id: STR-ANALYST-20260718T110705Z
|
||||
workflow-id: hyeonworks-vnext-v1
|
||||
stage: discovery
|
||||
producer-role-id: STR-ANALYST
|
||||
created-at: 20260718T110705Z
|
||||
attempt-id: 1
|
||||
payload:
|
||||
problem-structure:
|
||||
user-job: >-
|
||||
개념명이나 실제 증상 중 자신이 아는 단서에서 시작해 Lost Update의 상태 변화와 인과를 직접
|
||||
검증하고, 새로운 동시성 사례에도 같은 메커니즘을 전이한다.
|
||||
current-gap:
|
||||
- "개념 중심 학습은 실제 증상과 연결이 약하고, 검색 중심 해결은 원리와 전이가 약하다."
|
||||
- "두 진입을 별도 제품처럼 만들면 콘텐츠와 상태 엔진이 중복된다."
|
||||
- "한 사례만으로도 깊이를 보여주면서 향후 Atlas 확장 구조를 전달해야 한다."
|
||||
- "guided simulation과 실제 데이터베이스 보장의 경계를 화면에서 명확히 해야 한다."
|
||||
key-questions:
|
||||
- "홈에서 두 진입을 어떻게 구분하되 선택 부담을 키우지 않을 것인가?"
|
||||
- "어느 진입에서도 동일 scenario와 학습 진행 상태로 합류한다는 것을 어떻게 보장할 것인가?"
|
||||
- "Lost Update를 표면 정의가 아니라 타임라인·값 변화·인과·통제·전이까지 얼마나 깊게 다룰 것인가?"
|
||||
analysis-synthesis:
|
||||
insight: >-
|
||||
제품의 핵심은 두 개의 기능이 아니라 하나의 학습 코어에 대한 두 개의 입구다. 첫 화면은 사용자가
|
||||
가진 단서에 맞는 진입을 제공하고, 이후 모든 단계는 동일 scenario contract와 상태 reducer를 사용해야 한다.
|
||||
invariant:
|
||||
- "single scenario id: tx-lost-update-01"
|
||||
- "single learning-state machine: orient → predict → trace → compare → explain → transfer"
|
||||
- "single mechanism content source: Lost Update causal model"
|
||||
- "diagnostic language is candidate/verify, never confirmed incident diagnosis"
|
||||
design-consequences:
|
||||
- "개념 진입은 작은 관계 지도와 핵심 질문을 먼저 보여준다."
|
||||
- "증상 진입은 4개 단서를 한 번에 답하지 않고 단계적으로 공개한다."
|
||||
- "두 경로는 실험 시작 전 하나의 Lab Brief에서 합류하며 이후 URL과 상태를 공유한다."
|
||||
- "준비 중 주제를 큰 카드 카탈로그로 만들지 않고 하단 roadmap에 정직하게 표시한다."
|
||||
evidence:
|
||||
- ref: hyeonworks/completion-records/hyeonworks-company-bootstrap-v2/EXEC-CEO-20260718T110148Z.report.yaml
|
||||
grade: E3
|
||||
finding: "HUMAN-001이 hybrid shared-core 전략과 첫 scenario 범위를 승인했다"
|
||||
- ref: org-os/01-company/company-context.yaml
|
||||
grade: E2
|
||||
finding: "제품 경계·학습 루프·operating constraints의 공식 SoT"
|
||||
- ref: hyeonworks/completion-records/hyeonworks-company-bootstrap-v2/EXEC-CEO-20260718T105950Z.report.yaml
|
||||
grade: E3
|
||||
finding: "독립 Debugger는 operability 실패, shared-core hybrid는 조건부 통과"
|
||||
options:
|
||||
- id: OPT-DUAL-PORTAL
|
||||
problem: "사용자가 가진 단서에 맞춰 개념과 증상 진입을 가장 명시적으로 구분하는 방법"
|
||||
concept: >-
|
||||
Dual Portal — 홈의 동등한 두 선택 카드가 Atlas Context 또는 Symptom Triage로 시작하고,
|
||||
짧은 orientation 뒤 하나의 Lost Update Lab으로 합류한다.
|
||||
tradeoffs:
|
||||
- "장점: 두 방식의 차이가 즉시 명확하고 사용자 최신 요구가 잘 보인다."
|
||||
- "단점: 첫 화면 선택 부담과 두 제품처럼 보일 위험이 있어 shared-core 표식이 필요하다."
|
||||
evidence-refs: ["EXEC-CEO-20260718T110148Z", "DEC-HW2-HYBRID-001"]
|
||||
- id: OPT-CASE-FILE
|
||||
problem: "증상에서 시작하되 제품 전체가 진단 도구로 보이지 않게 하는 방법"
|
||||
concept: >-
|
||||
Mechanism Case File — Lost Update 사건 파일 하나를 중심에 두고, 같은 화면에서 개념 렌즈와
|
||||
증상 렌즈를 전환하며 단서를 조사한 뒤 실험으로 이동한다.
|
||||
tradeoffs:
|
||||
- "장점: 하나의 이야기와 데이터 모델로 결속돼 중복이 가장 적다."
|
||||
- "단점: Atlas의 확장 구조와 두 진입 선택이 첫 방문에 덜 명확할 수 있다."
|
||||
evidence-refs: ["HYP-HW2-SHARED-CORE-001", "DEC-HW2-SCOPE-001"]
|
||||
- id: OPT-ATLAS-WITH-DEBUG-DOCK
|
||||
problem: "Technology Atlas 정체성을 강하게 유지하면서 symptom entry를 보조하는 방법"
|
||||
concept: >-
|
||||
Atlas + Debug Dock — 개념 관계 지도가 주 화면이고, '이런 증상을 보셨나요?' dock에서 Lost Update
|
||||
단서를 고르면 같은 map node와 Lab으로 연결된다.
|
||||
tradeoffs:
|
||||
- "장점: 장기 확장 구조가 가장 선명하고 Debugger가 독립 제품으로 보이지 않는다."
|
||||
- "단점: 한 주제뿐인 초기 제품에서 map이 과장돼 보일 수 있고 증상 진입이 부차적으로 느껴진다."
|
||||
evidence-refs: ["DEC-HW2-HYBRID-001", "DEC-HW2-SCOPE-001"]
|
||||
method-execution:
|
||||
role-id: STR-ANALYST
|
||||
method-id: strategy-analysis
|
||||
contract-sha256: 405d565f85b4e06aa2df9e1d41fe3cfd3be113d19b17cfc7dbb8f6172b166299
|
||||
step-results:
|
||||
- {step-id: structure-problem, status: completed, output-binding: current-artifact}
|
||||
- {step-id: analyze-environment, status: completed, output-binding: current-artifact}
|
||||
- {step-id: diverge-options, status: completed, output-binding: current-artifact}
|
||||
self-check-results:
|
||||
- step-id: diverge-options
|
||||
gate-id: options-diverge
|
||||
verdict: Passed
|
||||
evidence-refs: ["payload.options[0]", "payload.options[1]", "payload.options[2]"]
|
||||
decisions:
|
||||
- decision-id: HWVNEXT-DISCOVERY-OPTION-SET
|
||||
selected: null
|
||||
alternatives: [OPT-DUAL-PORTAL, OPT-CASE-FILE, OPT-ATLAS-WITH-DEBUG-DOCK]
|
||||
report-header:
|
||||
bottom-line: >-
|
||||
discovery는 같은 학습 코어를 유지하면서 진입 구조가 다른 세 안을 보존한다. 아직 선택하지 않으며,
|
||||
CEO decide에서 명확성·깊이·운영성·확장 정직성을 비교해야 한다.
|
||||
decision-needed: { needed: true, approver: EXEC-CEO }
|
||||
confidence: { value: Med, derived-from: accepted-strategy-and-no-user-behavior-yet }
|
||||
risks:
|
||||
- "사용자 관찰 없이 두 진입의 실제 이해도를 예측해야 한다."
|
||||
- "Atlas 확장성을 과도하게 강조하면 완성 콘텐츠 하나라는 정직한 범위를 흐릴 수 있다."
|
||||
evidence:
|
||||
- source-uri: hyeonworks/completion-records/hyeonworks-company-bootstrap-v2/EXEC-CEO-20260718T110148Z.report.yaml
|
||||
grade: E3
|
||||
note: "accepted hybrid strategy and product boundaries"
|
||||
- source-uri: hyeonworks/completion-records/hyeonworks-company-bootstrap-v2/EXEC-CEO-20260718T105950Z.report.yaml
|
||||
grade: E3
|
||||
note: "three-option nine-gate validation"
|
||||
Reference in New Issue
Block a user