# Bone Flow #023 - Validation Report

Version: 1.0.79  
Status: Release Ready Candidate  
Handover baseline: v1.0.6

## 1. Static / implementation verification

実装時に次を再検証しています。

- #021 / #002 Version系統・必要API・Registry互換性 bootstrap contract
- 11 JavaScript modules syntax check
- 4 JSON Schema parse / schema self-check
- 5 Preview fixture parse/definition expectations
- 3 validation-only fixtures
- Basic Canonical Definition と handover formal example の exact一致
- Error Flow Working Definition と handover formal example の全体 exact一致
- B-01 collision result `e90a7a18`
- B-02 empty Comment/Tooltip → canonical null
- B-03 Error Flow: Nodes=4 / Joints=4 / diagnostics=4（3 ERROR + 1 WARNING）/ UTF-16 offsets exact
- N-01 dedicated SVG per intersection style batch
- N-02 separate #021/#002 Shadow Roots
- N-03 duplicate SourceRef[]
- N-06 global style/width solid/4
- N-09 Mini Map single workspace key
- N-13 normal Joint = source OUT / target IN; RETURN Joint = source RETURN / target RETURN
- N-14 multi-line continuation

## 2. v1.0.35 runtime verification status

v1.0.37 は #002 v1.1.29 を正式依存として継続します。#002 v1.1.29 の実API・Error Preview・Port/Route契約を再確認し、#023 Error Flow adapterをその実挙動へ合わせて修正しました。v1.0.35はError Joint endpoint/marker/animationの差分があるため別ゲートとして再実行します。

この作成環境のChromium headless実行はプロセスが正常終了せずRuntime QA結果を取得できなかったため、v1.0.37 の実ブラウザ Runtime QA は **NOT VERIFIED** です。確認していない項目をPASSにはしません。

代わりに作成時には以下を独立検証しています。

- #002 v1.1.29 critical SHA-256 8件 exact match
- #002 v1.1.29 `resolvePortRoles / resolvePortRole / validatePortConnection` API存在
- #002 `resolveRoute()` orthogonal: straight=0 bend / L-route=1 bend
- #023 custom Joint SVG path generation = removed
- #023 Joint Adapter が `sourcePortPosition / targetPortPosition / orthogonalMode=minimal` を #002へ渡すこと
- #023 Joint Adapter が `sourceShapeBounds / targetShapeBounds / shapeAvoidanceEnabled / shapeAvoidancePadding=12` を #002へ渡すこと
- TB Normal Shape effective role = `TOP IN / RIGHT RETURN / BOTTOM OUT / LEFT RETURN`
- `OUT -> IN` / `OUT -> RETURN` / `RETURN -> RETURN` が有効。`OUT -> OUT` / `RETURN -> IN` はERROR
- Workspace `portVisible=true` default
- 5 Preview fixture Parser / Definition / Validation result
- Basic / Decision / Data / Table = semantic ERROR 0
- Error Flow = root-cause ERROR 4
- 全 #023 JavaScript syntax PASS

実 localhost での Smoke / Validation はユーザー環境で必ず再実行してください。

## 3. Formal release gates

この作成環境では以下は **NOT VERIFIED** のままです。

- Windows `install.ps1` actual
- Windows `install.bat` actual
- `http://localhost/BoneFlow/test/bone-flow-editor.html` actual navigation/visual confirmation
- real-origin IndexedDB を含む Smoke ALL PASS / Validation ALL PASS

理由: 実行環境に Windows PowerShell がなく、管理ブラウザ policy が localhost navigation を block するためです。

したがって本パッケージは **Release Ready Candidate** とし、上記実環境ゲートを実施して全PASSした時点だけ `Release Ready` と判定します。

## 4. Test page

URL:

`http://localhost/BoneFlow/test/bone-flow-editor.html`

Test page は formal fixtures を `boneflow/data/flow-editor/samples/` から直接読み込みます。hardcoded replacement fixture は使用しません。

画面下部 Runtime QA で Smoke / Validation 各結果を表示します。Console Error 0 / JavaScript Error 0 も gate に含みます。

## v1.0.14 QA interaction isolation

- Automated Smoke/Validation execution MUST NOT display user-facing `confirm`, `prompt`, or `alert` dialogs.
- S32 sample-switch routing verification stubs `confirm` only for the duration of the automated check and restores the original function in `finally`.
- Base and UI event binding are idempotent; repeated `bindEvents()` calls must not duplicate click handlers.
- Sample document loading is single-flight; concurrent/re-entrant requests share the same in-flight operation so discard confirmation cannot duplicate for one user action.


## v1.0.34 interactive editing gates

- Shape Adapter exposes compatible Port hit-testing without changing #021.
- Renderer exposes live geometry refresh so Shape dragging reroutes Joints before Source commit.
- Joint Adapter exposes selection hit paths and exactly two endpoint handles for a selected connected Joint.
- Endpoint editing validates the whole pair through #002 v1.1.29. Valid pairs are `OUT -> IN`, `OUT -> RETURN`, and `RETURN -> RETURN`; invalid pairs include `OUT -> OUT` and `RETURN -> IN`.
- Continuation/shared endpoint edits are normalized to independent canonical Joint statements before one endpoint is patched.
- Interaction overlay is a #023-owned layer and does not inject CSS into #021/#002 Shadow Roots.
- Browser pointer behavior remains an actual localhost Runtime QA gate; it is not preclaimed by static verification.

## v1.0.34 interaction gates

- S35 verifies direct Joint interaction, reconnect-candidate, right-click, and renderer mediation APIs.
- S36 verifies Hover causes no visual control change; clicking either a Joint route or its endpoint selects the Joint and shows one persistent `≡` affordance plus exactly two endpoint reconnect handles.
- S37 verifies the expanded compatible-Port snap zone against actual #021 Port geometry.
- S38 verifies the full interaction host remains pointer-transparent while visible endpoint/`≡` affordances explicitly remain pointer targets.
- S41 verifies right-click opens the same selected-Joint quick menu.
- S42 verifies compatible reconnect Ports are visibly exposed and fully cleared.
- S43 verifies visible hit controls carry direct Joint/endpoint metadata.


## v1.0.34 quick-menu / clearance gates

- Default resolved Joint Port Clearance is `40px`; #002 receives the same `orthogonalClearance` value.
- Per-Joint `color:"#RRGGBB"` and `clearance:0..120` parse, validate, canonicalize, regenerate, and reparse deterministically.
- Hover does not show endpoint circles or the menu affordance. No edit controls depend on pointer Hover.
- Joint route or endpoint click selection renders a visible bright selection overlay, exactly two endpoint handles, and one persistent `≡` menu affordance.
- The mini menu exposes Straight / Rounded / Curve, Color, Animation, line comment (Joint Label), and Clearance, and is positioned beside the selected Joint `≡` affordance (right side when possible, otherwise left).
- S44 verifies a real composed pointer event on the selected Joint ≡ affordance opens the adjacent mini menu.
- S45 verifies a real endpoint pointer event enters reconnect mode, removes the dragged origin handle, exposes compatible Ports, and cleanly cancels.
- S46 verifies reconnect pointer movement shows the moving endpoint grip, detects an actual compatible #021 Port, and marks the active drop target.

## v1.0.34 endpoint interaction gates

- S45: endpoint pressは即reconnectせず、FROM/TOをarmしてからdrag閾値でreconnectへ移る。
- S46: reconnect drag中はmoving gripと互換Port吸着を表示する。
- S47: 選択済みJoint線の押下は近い端点を選択し、Shape選択経路へイベントを渡さない。


## v1.0.34 reconnect endpoint display correction

- 再接続ドラッグ中は通常のJoint endpoint handleを全て非表示にする。
- 再接続Previewレイヤーだけが固定端点1個と移動端点1個を描画する。
- 固定端点は元の実Port中心へ固定し、移動端点はpointerへ追従し、候補Portへ入った場合はその実Port中心へ吸着する。
- ドラッグPreviewではDirection Markerを出さず、操作点と方向Markerを混同させない。
- 未吸着の移動端点には旧Port方向を流用せず、候補Portへ吸着した時だけそのPort方向をroutingへ渡す。

## v1.0.34 reconnect screen-space alignment gates

- S48 verifies the reconnect preview owns exactly one fixed and one moving grip in screen space and compares both against actual #021 Port DOM centers.
- S49 repeats fixed-endpoint alignment at 137% zoom with non-zero pan to catch zoom/pan-dependent drift.

## v1.0.34 added gates

- Multiline Basic Flow connector absolute SourceRef slice equals connector raw token.
- Basic Flow Joint line/color/animation/comment/clearance edits round-trip without SOURCE_SYNC_ERROR rollback.
- Role-safe reconnect is pair-aware: normal FROM/TO use OUT/IN, RETURN Joint FROM/TO use RETURN/RETURN.

## v1.0.34 Runtime QA isolation

- Startup Runtime QA is executed with workspace/recovery persistence suspended.
- The full document/workspace/UI state is snapshotted before Smoke/Validation and restored in `finally` after QA.
- Smoke tests that mutate Joint properties (S51/S52) restore the current document themselves before returning.
- S53 verifies that the Basic Flow document and Preview have no residual curve/property mutation after those tests.
- Runtime QA must never change the user's initial Preview, Source, selection, zoom/pan, sample identity, history, dirty state, recovery state, or workspace state.

## v1.0.34 reconnect four-port visibility gates

- S54: #021実Shapeが `IN:TOP / IN:LEFT / OUT:RIGHT / OUT:BOTTOM` を公開すること。
- S55: `TO/IN` と `FROM/OUT` の候補強調・非互換Port減光が4ポートすべてへ適用されること。
- S56: FROM/TO端点選択ガイドが #021実Port位置から生成されること。
- V30: #021実4ポートのrole mapと再接続候補position配列が一致すること。


## v1.0.34 RETURN / Shape Avoidance gates

- S54: #021 physical four-port DOM is projected to the #002 v1.1.29 effective role map.
- S55: reconnect UI distinguishes IN, OUT, and RETURN candidates.
- S56: a normal selected Joint exposes only OUT=BOTTOM and IN=TOP in TB.
- S57: Decision sample loop resolves LEFT RETURN -> LEFT RETURN.
- S58: actual #023 rendered orthogonal paths expose `shapeAvoidanceEnabled=true` and padding `12`.
- V31: RETURN physical selectors canonicalize and validate.
- V32: mixed RETURN -> IN is rejected with `JOINT_PORT_ROLE_INCOMPATIBLE`.

## v1.0.34 Runtime QA failure diagnostics

Runtime QA のFAILは各項目を折りたたみ可能な詳細として表示し、`Test / Expected / Actual / Error / Stack` を保持します。ブラウザから `window.BONE_FLOW_023_LAST_FAILURES` で配列取得でき、「FAIL JSONコピー」でも同じ内容を取得できます。

追加Gate:
- S59: #002 v1.1.29 の `OUT -> RETURN` を含む正式5組合せ判定
- S60: 接続未成立時、requested Curveでも実RouteはStraight固定
- S61: Bridge / Jump がフラグだけでなく実SVG `Q` geometryを生成
- V33: `BOTTOM OUT -> RIGHT RETURN` physical selector がCanonical/semantic PASS
- V34: `RETURN -> IN` は引き続き `JOINT_PORT_ROLE_INCOMPATIBLE`


## v1.0.34 Runtime QA correction

- S46/S48 reconnect QA selects a visible Port whose effective role is actually compatible through #002 `validatePortConnection()`; it no longer assumes the first `IN` DOM Port is a valid snap target.
- S52 verifies the current #002 `renderIntersections()` output (`.bf-intersection-line[data-route="curve"]`) and cubic Curve geometry instead of the retired pre-batch path class.
- S53 compares the document against the Runtime QA entry snapshot. It does not assume `requested.line` is `default`; Basic Flow formally resolves `@joint line=orthogonal`.
- These four tests return structured Actual diagnostics on failure.

## v1.0.34 UI gates

S62-S65で Runtime QA accordion、日本語Flow Settings menu、現在値読込、9 directiveのatomic apply/reparseを検証します。v1.0.29はユーザーlocalhost Runtime QAで 99/99 ALL PASS確認済みです。

S66-S68で Shape drag cleanup を検証します。v1.0.34 のRuntime QAは Smoke 68 + Validation 34 = 102項目を再確認します。


## v1.0.34 Shape drag cleanup
- Connected Joint endpoint circles are represented only by actual #021 Shape ports; duplicate #002 endpoint markers are suppressed in #023.
- Shape drag start clears armed reconnect candidates, drop-target state and reconnect preview.
- Pending drag preview frames are cancelled before committing manual position to prevent stale geometry artifacts.


## v1.0.34 UI / drag regression gates

S69-S73で Shape direct drag、2本の可変幅Splitter、Source/Property独立文字サイズ、Mini Map新規既定OFFを確認します。Runtime QAは Smoke 73 + Validation 34 = 107項目です。


S74-S76で Direction-aware Auto Layout を検証します。TB→LR等のPort回転でRETURN意味を維持し、auto方向変更時にmanual座標を解除し、LR/RLで横方向のrank/branch間隔を確保します。Runtime QAは Smoke 84 + Validation 34 = 118項目です。


## v1.0.34 Error Flow visual diagnostic gates

S77-S80で Error Flow 4 root-cause の実Preview表現を検証します。

- S77: `UNKNOWN_NODE_ID / UNKNOWN_FIELD_ID / INVALID_FIELD_PORT / FIELD_TYPE_MISMATCH` の4 diagnostic pathがすべて存在する。
- S78: `UNKNOWN_FIELD_ID` は実在Target起点のmissing-source straight stubであり、通常接続として描画しない。
- S79: `INVALID_FIELD_PORT` は実在する `customers.customer_id.OUT` Portから短いerror stubを開始する。
- S80: `FIELD_TYPE_MISMATCH` は実在endpoint間のgeometryを保持しつつ、明示的なerror markerを持つ。

Runtime QA は Smoke 84 + Validation 34 = 118項目です。


## v1.0.34 Error Flow CASE-oriented Preview

Error Flow は意味上の `nodes=4 / joints=4` を変更せず、表示だけを診断ケース単位へ分離する。現在の#002 v1.1.29互換判定では CASE1-3=ERROR、CASE4 INT→VARCHAR=WARNING とする。Source 中の `# CASE n - EXPECT CODE` を Preview のケース見出しとして表示し、その直下へ当該ケースで必要な #021 Shape の表示コピーを配置する。表示コピーは同じDefinition Nodeを複製して見せるだけで、Working DefinitionのNode数を増やさない。

- LR / RL: CASE1 → CASE4 を左から右へ順番に配置する。
- TB / BT: CASE1 → CASE4 を上から下へ順番に配置する。
- CASE見出しは必ず対象Shapeより上に表示する。
- CASE2/3で再利用される `customers` / `orders` は各ケースに表示コピーを持つため、原因ごとの関係が一画面で混線しない。
- Joint Errorは #002 `BoneJoint.drawLine()` / `BoneJoint.drawError()` を経由し、#023独自SVG path rendererは追加しない。
- S81-S84で4見出し、LR/TB順序、見出し直下配置、#002 Joint path利用を検証する。

Runtime QA は Smoke 84 + Validation 34 = **118項目**。

## v1.0.35 Error Flow / #002 integration gates

v1.0.35 は v1.0.34 の S81-S84 CASE-oriented Preview gateに加え、#002 v1.1.29の実endpoint規則を直接検査する。

- S85: TB表示でも `UNKNOWN_FIELD_ID` と `INVALID_FIELD_PORT` のJoint起点が #021 の実Field Portから外れない。
- S86: Error Flowの4 diagnostic Jointが `@joint animate=true/false` を #002 gradient-flowへ正しく伝播する。
- S87: `FIELD_TYPE_MISMATCH` をOrthogonalへ変更した場合、RIGHT→LEFT Field Port位置とShape Boundsを #002へ渡し、Shape Avoidanceを保持し、#002 Compatibility markerを最終Path上に置く。
- S88: `UNKNOWN_FIELD_ID` のmissing-source表示は、実在Targetを `x1/y1` としてTarget Port外向きへstubを伸ばす（#002 reverse-trace規則）。

Smoke Test = 88、Validation Test = 34、合計 = **122項目**。

この作成環境で実ブラウザRuntime QAを実行していない場合はPASSにせず **NOT VERIFIED** とする。Windows `install.ps1` / `install.bat` の実行も同様にユーザー環境確認を正式ゲートとして残す。


## v1.0.36 additional runtime gates

- S89: TB keeps CASE2/3/4 multi-Shape contents horizontal while CASE headings stack vertically.
- S90: TB -> LR direction transition rebuilds diagnostic FIELD endpoints against the new #021 actual-port geometry.
- S91: LR -> TB -> LR round trip does not leave detached diagnostic Joint geometry.

These are browser Runtime QA gates. Unexecuted gates are not reported as PASS.


## v1.0.37 additional direction-transition gates

- S92: FIELD IN/OUT remain LEFT/RIGHT in TB and LR.
- S93: TB -> LR checks final displayed #002 Joint origin pixels against actual #021 FIELD Port pixels.
- S94: LR -> TB performs the same final-pixel attachment check.
- S95: FIELD_TYPE_MISMATCH remains actual OUT/RIGHT -> IN/LEFT after a TB -> LR transition.

Smoke Test total: S01-S95. Validation Test remains V01-V34. Runtime QA total: 129 checks. Unexecuted browser gates are not reported as PASS.


## v1.0.38 Smoke Test correction

The three reported failures S79 / S86 / S87 were test-harness defects, not #002 rendering regressions.

- S79 now reads the #023 diagnostic coordinate dataset (`bf023DiagnosticX1/Y1`) consistently.
- S86 explicitly injects `@joint animate=true/false` because the canonical error sample omits that directive and inherits the default.
- S87 uses the default connector `--` so `@joint line=orthogonal` is actually inherited; `->` is an explicit Straight connector by syntax and must not be expected to become Orthogonal.

Runtime code and #002 v1.1.29 dependency behavior are unchanged by these three test corrections.


## v1.0.39 FIELD diagnostic visual gates

- S96: CASE2 / CASE3 の #002 実描画 Path 始点を `getScreenCTM()` で画面座標化し、#021 FIELD Port の実ピクセル中心と比較する。
- S97: CASE4 FIELD_TYPE_MISMATCH の #002 実描画 Path の始点・終点が customers.OUT / legacy.IN の実ピクセル中心に一致する。
- S98: TB描画後350ms経過しても CASE3 の実描画JointがFIELD OUTから離れない。

未実行のブラウザ Runtime QA は PASS と記録しない。


## v1.0.40 visual attachment gate correction

S96-S98 now inspect the live SVG path through `getPointAtLength()` + `getScreenCTM()` instead of relying on cached client-coordinate datasets. This verifies the line actually visible on screen against the current #021 FIELD Port center after Fit/zoom and after delayed TB layout.

## v1.0.48 #002 v1.1.29 integration gates

- S99: CASE1-3 markerは #002 `drawError()`、CASE4 INT→VARCHARは #002 `drawCompatibilityMarker()` の黄色輪郭△を使用する。#023はmarker形状を固定しない。
- S100: Decision `RIGHT→TOP` Curveは #002 v1.1.29 の直交Port Curveへ委譲し、旧来の大回りを発生させない。
- S101 / S103: RETURN→RETURNの物理RoleはRETURNのまま維持し、現在のWorking Definitionから送り出しRETURN位置だけOUT表示へ切替。元OUT位置はRETURN扱い・RETURN文字非表示。
- S102: Error Flow Fitは65%を下限とし、4 CASEを豆粒表示まで縮小しない。
- S104: 通常FlowのINT→VARCHAR WarningでもSource FIELD Portの赤丸を維持し、接続線上に#002の黄色輪郭△を表示する。
- V05 / V06: Error Flowは4診断（3 ERROR + 1 WARNING）として検証する。

Runtime QA historical count at v1.0.48: Smoke Test S01-S105 + Validation V01-V35 = **140 checks**.

この作成環境ではブラウザの組織ポリシーによりHTTPページ実行がブロックされるため、ブラウザRuntime QAは **NOT VERIFIED** のまま残す。ユーザーlocalhostでALL PASSを確認するまでRelease Readyとは扱わない。

- V35: `curve-side:auto|left|right` requested/resolved canonical round-trip.
- S105: `curve-side` parser / Working Definition propagation.


## v1.0.51 #002 v1.1.32 integration gates

- Dependency Lock and bootstrap require the exact #002 v1.1.32 version and critical SHA-256 set.
- S106 reproduces the Decision Flow `RIGHT -> TOP` near-placement Curve with actual #021 Port coordinates/bounds and requires a single Cubic, `curveHandle < 52`, and `shapeAvoidanceSafe=true`.
- S107 verifies #023 avoidance bounds are the physical #021 Shape boundary: Decision RIGHT Port center equals `bounds.right` and Target TOP Port center equals `bounds.top`, while the outer SVG/viewBox still contains padding.
- S108 verifies the actually rendered Decision RIGHT→TOP Curve remains inside the natural corridor and does not escape more than 18px beyond the endpoint right edge.
- V37 repeats the physical-boundary contract against #002 `resolveRoute()`.
- Runtime QA definition count for v1.0.51: Smoke S01-S108 + Validation V01-V37 = **145 checks**.
- V36 verifies RETURN physical roles are preserved while the active RETURN position displays as OUT and RETURN text remains hidden.
- Existing Error Flow CASE4 tests remain unchanged: INT -> VARCHAR is a Warning with a red Source FIELD port, connected Joint, and hollow yellow `△` on the final path.
- Build-environment note: managed Chromium policy blocks local/file URL navigation in this environment, so Browser Runtime QA is not marked PASS here. Final localhost Runtime QA remains the user-side acceptance gate.

- Decision RIGHT→TOP near Curve: #021 physical Shape boundary is derived from actual non-FIELD Port centers; Source RIGHT equals avoidanceBounds.right and Target TOP equals avoidanceBounds.top. Outer SVG/viewBox padding must not be passed to #002 Shape Avoidance.

## v1.0.51 S107 / V37 correction

- v1.0.50 correctly moved the Decision Target physical TOP boundary to the actual TOP Port center, but the returned bounds object omitted the `top` alias while exposing the same value as `y`.
- S107 and V37 intentionally continue to verify `bounds.top`; v1.0.51 fixes the adapter contract instead of weakening the tests.
- Runtime QA definition count remains Smoke S01-S108 + Validation V01-V37 = **145 checks**.

## v1.0.52 RETURN visible OUT regression

- S109: Decision sample `[ng].LEFT => [request].LEFT` keeps physical LEFT RETURN while a visible `OUT` text is rendered at LEFT. The former BOTTOM OUT label is hidden and no visible `RETURN` text exists.
- V38: validates exactly one active RETURN OUT alias at the actual sending physical Port.
- Runtime QA definition count for v1.0.52: Smoke S01-S109 + Validation V01-V38 = **147 checks**.
## v1.0.53 installer package regression

- `install.bat` and `install.ps1` are mandatory top-level package files and were restored from the established v1.0.48 installer structure.
- `install.bat` launches `install.ps1` with optional target forwarding.
- `install.ps1` verifies the package MANIFEST, validates locked #021/#002 critical-file SHA-256 before copying #023, backs up replaced #023 files, installs only MANIFEST-listed #023 files, then re-validates the locked dependencies.
- Installer version and `DEPENDENCY-LOCK.json implementationTarget` are fixed to `1.0.53`.


## v1.0.55 Decision arbitrary branch-key / label-offset regression

- S110 keeps the formal sample check: its source-defined `YES / NO` keys render independently from Joint comments.
- S111 replaces the same sample keys with `はい / いいえ`, verifies literal display, source-order RIGHT/BOTTOM routing, and verifies the branch labels are offset away from the outgoing Joint paths.
- S112 replaces the keys with `営業日 / 休日` and verifies they are not replaced by YES / NO.
- V40 verifies branch key text is preserved literally (including lowercase `yes`) without normalization.
- V41 verifies arbitrary branch keys still route by source order to RIGHT/BOTTOM and are exposed through the #021 Decision labels.
- S110 also verifies the independent Joint path comments `承認` / `否認` remain visible.
- V39 repeats the branch-key / Joint-comment separation contract.
- Runtime QA definition count for v1.0.55: Smoke S01-S112 + Validation V01-V41 = **153 checks**.


## v1.0.57 UI Theme visibility correction

- Toolbar `Theme` is Editor UI Theme only; it does not modify Flow `@theme light/dark/neon`.
- The old pseudo-Light implementation using whole-app `brightness()` / `filter` is prohibited. UI Light uses explicit high-contrast background/text/token/property colors.
- Source textarea remains transparent over the syntax-highlight layer, so text selection must use a translucent overlay; an opaque selection background is prohibited because it hides the highlighted characters.
- Runtime QA adds S113-S114 and V42-V43. Definition count: Smoke S01-S114 + Validation V01-V43 = **157 checks**.
- Browser localhost Runtime QA remains the final user-side gate when this build environment cannot execute the page.


## v1.0.57 Export regression

- Source Export control exists and targets normalized `.bflow` Source.
- PNG rasterization source contains no `animate`, `animateMotion`, `animateTransform`, `set`, or moving flow indicator when `animation:false`.
- Animated SVG export declares `data-bf023-export-animation="on"` and preserves SVG/SMIL animation.
- Standalone SVG export declares `data-bf023-export-style="computed-inline"` and inlines resolved Shape/Joint paint styles instead of depending on Shadow DOM CSS.
- PNG export is generated from the static (`animation:false`) snapshot only.
- Live Preview animation setting is not modified by either export.


## v1.0.60 Validation harness correction

- V42-V45 use the existing validation `text()` fetch helper.
- Undefined `loadText()` is prohibited in the validation runner.
- This correction changes the QA harness only; Theme and Source/SVG/PNG export runtime behavior remains the v1.0.57 implementation.


## v1.0.60 Export toolbar regression

- S118 verifies Source/SVG/PNG save controls are unique, visible, and located in the sticky top toolbar rather than the collapsible Definition / JSON panel.
- V46 verifies the same ownership statically from the shipped HTML.
- Runtime QA definition count: Smoke S01-S118 + Validation V01-V46 = **164 checks**.

## v1.0.60 export correction

- S116 verifies the PNG source SVG is static.
- S117 verifies SVG uses `animation:true` while PNG uses `animation:false`.
- S119 verifies animated standalone SVG contains SMIL plus inlined Shape/Joint paint styles.
- V47 verifies the standalone export style-inlining implementation is present.

## v1.0.62 Transparent SVG / PNG export regression

- S120 verifies animated and static SVG snapshots declare transparent background and contain no direct root background rectangle. It also verifies PNG uses an alpha-enabled canvas, clears to transparency, and does not fill a background.
- V48 statically verifies the renderer no longer creates/appends the former export background rectangle and PNG uses explicit alpha/clear behavior without `fillRect()`.
- Runtime QA definition count: Smoke S01-S120 + Validation V01-V48 = **168 checks**.
- Browser localhost Runtime QA remains the final user-side acceptance gate; no unexecuted browser check is marked PASS by the package build.


## v1.0.62 Guide regression

Runtime QAは、入力ガイドの開閉、#021 Bone Shape CSSのShadow Root分離、Registry実Shapeカード生成、コード挿入UI、`023-Input-Guide.md`同梱を確認します。


## v1.0.65 Error Flow export regression

- S123: `error-flow.bflow`を描画後にSVG直列化し、Diagnostic Shape copy 7件以上、CASE見出し4件、4種類のError Code、透明背景、および非クリップviewBoxを確認する。
- V51: Rendererが `Shape.get()` のみではなくDiagnostic entry / CASE labelを解決し、Joint実描画BoundsをExport範囲へ含める実装を静的確認する。
- Runtime QA定義数: Smoke S01-S123 + Validation V01-V51 = **174 checks**。
- localhost Browser Runtime QA未実施項目はPASS扱いにしない。


### v1.0.65 deployment regression
- V52: no runtime hard-code to `/BoneFlow/`; dependency root is derived from the current editor URL.
- S124: Shape/Joint dependency CSS resolves below the actual current deployment root and preserves URL casing.

## v1.0.65 SVG export coordinate regression

- S125: non-100% Preview zoom / pan must not add any `1/zoom` scale transform to exported Joint layers.
- V53: Renderer export contract is logical-coordinate serialization; `getBBox()` is never divided by viewport zoom.
- Existing S01-S124 / V01-V52 remain regression requirements.

## v1.0.66 Export regression coverage

- S125: Preview zoom 173% / pan 状態でも #002 Joint Export layer が `1 / zoom` で論理座標へ正規化される。
- S126: Decision の `YES / NO` branch key が SVG Export で全文保持され、Shape SVG root は `overflow: visible`。
- S127: TABLE_DETAIL の IN / OUT Port Label が SVG外周で欠けない。
- S128: Error Flow を zoom 210% で Export しても CASE1-4 diagnostic code、red ×、Warning `△` を維持する。
- S129: Preview の #002 Direction Marker は維持し、Export copy の黒い outline だけ除去する。
- V53-V56: Joint zoom normalization、Shape overflow bounds、Direction Marker export-only outline suppression を静的契約として固定する。

## v1.0.69 Export rendered-geometry regression

- S125: Preview 173% zoom / pan の Basic Flow で、Preview Joint の実描画 start/end と Export SVG の実描画 start/end を CTM 変換後の同一論理座標で比較する。Joint layer に `scale()` が無く、Preview Joint SVG wrapper を保持することも確認する。
- S128: ユーザー実画面と同じ縦方向 Error Flow (`TB`) / zoom 65% で、4 diagnostic Joint の実描画 start/end、4 error code、赤い×、Warning `△`、IN / OUT を確認する。
- S129: Preview の #002 Direction Marker は変更せず、Export copy の黒い outline stroke だけを除去する。
- S130: Basic / Decision / Data / Table / Error の5 Flowで、Animated SVG と PNG用 Static SVG の両方を実描画比較する。Decision YES / NO、Table/Error IN / OUT、Error `△` / × を保持し、Joint-only zoom scaleを禁止する。
- V53/V57: Export が完成済み Preview Joint SVG wrapper とその `viewBox` を使用し、子要素の別描画・`1 / zoom` 再計算を行わないことを静的確認する。
- Chromium 144 実描画回帰では5 Flowすべて Preview/Export Joint endpoint差が 0.001px 未満。Error Flow `TB` でも最大差 0.00005px 未満。Static SVG はブラウザでPNGへ実ラスタライズし、全5 Flowで成功した。
## v1.0.71 Installer regression coverage

- installer `$Version` / batch title / HTML / Editor API / `DEPENDENCY-LOCK.json implementationTarget` が `1.0.71` で一致すること。
- MANIFEST SHA-256 と ZIP integrity を実検証すること。
- v1.0.69 Export rendered-geometry regression を再実行し、5 Flow の SVG/PNG geometry を維持すること。



## v1.0.75 Dependency policy correction

- Runtime / Runtime QA / Installer は Component専用 `DEPENDENCY-LOCK` を参照しない。
- #021 / #002 のSHA-256依存固定検証は行わない。
- #021は1.0.x + 31 Shape以上 + `TABLE_DETAIL` + 必要API、#002は1.1.x + 必要APIで互換性を確認する。
- `MANIFEST.sha256` は #023 package内部の整合性検証としてのみ維持する。
- Runtime QA定義数は Smoke 130 + Validation 57 = **187 checks** のまま。
- Browser Runtime QA はこの作成環境では未実施のため、結果は **NOT VERIFIED**。


## v1.0.78 #040 ColorPicker consumer validation

- Runtime loads #001 Core public modules, #017 Text, #020 Label, #022 Hover Border Effect v1.0.8 and #040 ColorPicker v1.0.15 before #023 Editor modules.
- Joint mini-menu contains a Consumer-owned color trigger and the existing text HEX editor; it contains no Consumer native `input[type=color]` path.
- Caller accepts solid only, destroys the binding when the Joint menu closes, and RETURN uses the existing Joint `lineColor` Source patch.
- Runtime QA definition is Smoke 134 + Validation 59 = **193 checks**. Browser Runtime is not pre-declared PASS.


## v1.0.78 Runtime test correction

- S40 follows the current #040 Caller trigger (`data-mini-color-trigger`) and still verifies the HEX `lineColor` input.
- V52 verifies the actual URL-relative bootstrap contract and rejects hard-coded `/BoneFlow/` roots without requiring removed implementation text.

## v1.0.79 Dependency compatibility regression

- Bootstrap no longer requires exact #022 v1.0.8 or exact #040 v1.0.15 patch equality.
- #022 minimum v1.0.8 accepts 1.0.8 / 1.0.9 / 1.0.10 and rejects lower patch or major/minor mismatch.
- #040 minimum v1.0.15 accepts 1.0.15 / higher 1.0.x and rejects lower patch or major/minor mismatch. Required Public API remains mandatory.
- Smoke S131 validates minimum-version-compatible #040 Caller API instead of exact patch equality. Runtime QA definition count remains unchanged.
