diff --git a/desktop/README.md b/desktop/README.md index 2b98c274..a78dea01 100644 --- a/desktop/README.md +++ b/desktop/README.md @@ -259,15 +259,24 @@ App Hub is on by default. Open **App Hub** from the launcher to browse the signe #### Try your own app before it is published -Publish the bundle into a local catalog with a throwaway anchor (OctoScript-App-Design-Flow's [PUBLISHING §4](https://github.com/OctoSense-org/OctoScript-App-Design-Flow/blob/main/docs/PUBLISHING.md#4-rehearse-the-store-path-locally) gives the `hub keygen`/`certify`/`publish` commands), then point this shell at it: +For public distribution, open an [App Hub submission issue](https://github.com/OctoSense-org/OctoSense-App-Hub/issues/new?template=submit-app.yml), then add the GitHub release evidence when ready. The normal [GitHub publishing flow](https://github.com/OctoSense-org/OctoSense-App-Hub/blob/main/docs/SUBMITTING.md) requires no separate developer publisher key; a tag or Release alone is not Hub approval. + +The following is an **optional local legacy-catalog rehearsal**. Design Flow's [PUBLISHING §4](https://github.com/OctoSense-org/OctoScript-App-Design-Flow/blob/main/docs/PUBLISHING.md#4-rehearse-the-store-path-locally) describes its compatibility bundle and throwaway catalog keys (`hub keygen`/`certify`/`publish`); these are not prerequisites for normal GitHub publishing. Never restamp a GitHub-attested release for this older recipe. + +After preparing the mirror, replace the two quoted values below. Always use a fresh profile: a library that already cached the v2 catalog refuses a legacy downgrade. **This revised launch recipe is source-reviewed, not yet run against the newly compatible shell binary.** ```sh -OCTOSENSE_HUB= OCTOSENSE_HUB_ANCHOR= \ - OCTOSENSE_HOME=/tmp/octosense-test OCTOSENSE_APP_DATA=/tmp/octosense-test-apps \ +REHEARSAL_MIRROR='/absolute/path/to/your/test-mirror' +REHEARSAL_ANCHOR='replace-with-test-anchor-public-hex' +REHEARSAL_ROOT="$(mktemp -d "${TMPDIR:-/tmp}/octosense-hub-rehearsal.XXXXXX")" +OCTOSENSE_HUB_CATALOG=legacy \ + OCTOSENSE_HUB="$REHEARSAL_MIRROR" OCTOSENSE_HUB_ANCHOR="$REHEARSAL_ANCHOR" \ + OCTOSENSE_HOME="$REHEARSAL_ROOT/shell" OCTOSENSE_APP_DATA="$REHEARSAL_ROOT/apps" \ + OCTOS_APP_CORE_DIR="$REHEARSAL_ROOT/core" \ cargo run --release -p octosense ``` -Open **App Hub**, choose the app, **Get**, scroll to **Install**, then **Open**: it runs in the Card runner under its manifest, as a store app would. Verified on macOS on 2026-09-26 with a new script app (in the OctoSense-Desktop repository, before the merge). The two `OCTOSENSE_*` state variables keep the test out of `~/.octosense`. +Open **App Hub**, choose the app, **Get**, scroll to **Install**, then **Open**: it runs in the Card runner under its manifest. The earlier legacy-catalog UI flow was verified on macOS on 2026-09-26 with a new script app, before the repository merge; that historical result does not verify the new GitHub publisher path. The separate shell/app directories keep this rehearsal out of your normal profile, and the explicit kernel directory prevents copying personal provider settings into it. This local catalog does not submit or publish an app to the official Hub. ### Choosing and overriding system apps diff --git a/desktop/README.zh-CN.md b/desktop/README.zh-CN.md index 7427de66..1fe103f2 100644 --- a/desktop/README.zh-CN.md +++ b/desktop/README.zh-CN.md @@ -256,15 +256,24 @@ App Hub 默认开启。从 launcher 打开 **App Hub**,浏览签名目录并 #### 发布前试用自己的应用 -用一次性信任锚把应用包发布到本地目录(命令见 OctoScript-App-Design-Flow 的 [PUBLISHING §4](https://github.com/OctoSense-org/OctoScript-App-Design-Flow/blob/main/docs/PUBLISHING.md#4-rehearse-the-store-path-locally):`hub keygen`/`certify`/`publish`),再让本 Shell 指向它: +正式分发时,先创建 [App Hub 投稿 issue](https://github.com/OctoSense-org/OctoSense-App-Hub/issues/new?template=submit-app.yml),准备好后再补充 GitHub 发布证据。常规 [GitHub 发布流程](https://github.com/OctoSense-org/OctoSense-App-Hub/blob/main/docs/SUBMITTING.zh-CN.md)不要求开发者单独管理发布者密钥;创建标签或 Release 不等于获得 Hub 批准。 + +下文是**可选的本地旧版目录演练**。Design Flow 的 [PUBLISHING §4](https://github.com/OctoSense-org/OctoScript-App-Design-Flow/blob/main/docs/PUBLISHING.zh-CN.md#4-在本地演练商店流程)说明其兼容包与一次性目录密钥(`hub keygen`/`certify`/`publish`);它们不是常规 GitHub 发布的前置要求。不要为这个旧流程重新写入已附加 GitHub 证明的发布包摘要。 + +准备好镜像后,替换下方两个带引号的值。始终使用全新的配置目录:已经缓存 v2 目录的库会拒绝降级到旧版目录。**这份修订后的启动配方已经过源码核对,但尚未在新兼容 Shell 二进制上运行。** ```sh -OCTOSENSE_HUB= OCTOSENSE_HUB_ANCHOR= \ - OCTOSENSE_HOME=/tmp/octosense-test OCTOSENSE_APP_DATA=/tmp/octosense-test-apps \ +REHEARSAL_MIRROR='/absolute/path/to/your/test-mirror' +REHEARSAL_ANCHOR='replace-with-test-anchor-public-hex' +REHEARSAL_ROOT="$(mktemp -d "${TMPDIR:-/tmp}/octosense-hub-rehearsal.XXXXXX")" +OCTOSENSE_HUB_CATALOG=legacy \ + OCTOSENSE_HUB="$REHEARSAL_MIRROR" OCTOSENSE_HUB_ANCHOR="$REHEARSAL_ANCHOR" \ + OCTOSENSE_HOME="$REHEARSAL_ROOT/shell" OCTOSENSE_APP_DATA="$REHEARSAL_ROOT/apps" \ + OCTOS_APP_CORE_DIR="$REHEARSAL_ROOT/core" \ cargo run --release -p octosense ``` -打开 **App Hub**,选中应用,点 **Get**,向下滚动到 **Install**,然后点 **Open**:它会像商店应用一样,在 Card runner 中按其 manifest 运行。已于 2026-09-26 在 macOS 上用一个新的脚本应用验证(当时在仓库合并前的 OctoSense-Desktop 仓库中)。两个 `OCTOSENSE_*` 状态变量让测试不影响 `~/.octosense`。 +打开 **App Hub**,选中应用,点 **Get**,向下滚动到 **Install**,然后点 **Open**:应用在 Card runner 中按其 manifest 运行。早期旧版目录的界面流程已于 2026-09-26 在 macOS 上用一个新的脚本应用验证,当时仓库尚未合并;这条历史记录不验证新的 GitHub 发布者路径。独立的 Shell/应用目录让演练不影响平时的配置,显式指定内核目录可阻止把个人提供商设置复制进去。本地目录不会向官方 Hub 提交或发布应用。 ### 选择与覆盖系统应用 diff --git a/desktop/reviews/github-publisher-ui-2026-10-08/01-search.png b/desktop/reviews/github-publisher-ui-2026-10-08/01-search.png new file mode 100644 index 00000000..aea62b49 Binary files /dev/null and b/desktop/reviews/github-publisher-ui-2026-10-08/01-search.png differ diff --git a/desktop/reviews/github-publisher-ui-2026-10-08/02-installed-note.png b/desktop/reviews/github-publisher-ui-2026-10-08/02-installed-note.png new file mode 100644 index 00000000..12f417c6 Binary files /dev/null and b/desktop/reviews/github-publisher-ui-2026-10-08/02-installed-note.png differ diff --git a/desktop/reviews/github-publisher-ui-2026-10-08/03-updated-notes.png b/desktop/reviews/github-publisher-ui-2026-10-08/03-updated-notes.png new file mode 100644 index 00000000..3f81b132 Binary files /dev/null and b/desktop/reviews/github-publisher-ui-2026-10-08/03-updated-notes.png differ diff --git a/desktop/reviews/github-publisher-ui-2026-10-08/04-retained-note.png b/desktop/reviews/github-publisher-ui-2026-10-08/04-retained-note.png new file mode 100644 index 00000000..c6371950 Binary files /dev/null and b/desktop/reviews/github-publisher-ui-2026-10-08/04-retained-note.png differ diff --git a/desktop/reviews/github-publisher-ui-2026-10-08/README.md b/desktop/reviews/github-publisher-ui-2026-10-08/README.md new file mode 100644 index 00000000..040d20af --- /dev/null +++ b/desktop/reviews/github-publisher-ui-2026-10-08/README.md @@ -0,0 +1,52 @@ +# Keyless publisher UI acceptance — 2026-10-08 + +[简体中文](README.zh-CN.md) + +The final packaged macOS shell at `5e1a8414cba4c9c3ab041b5555b6d90bcbad03bb` passed **8/8 checks** in a new native Makepad instrument run with fresh app data. Its [receipt](macos-final-5e1.json) binds the executable and genuine GitHub release packs by SHA-256. The earlier source-`5607e90b` [receipt](macos-5607.json) and captures below remain unchanged; the rebuilt executable has identical bytes, but the final package was actually rerun. This is a focused publishing/install/update test, not extended UX soaking or a release announcement. + +The run declined App Hub's optional agent, searched for Publishing Test Notes, installed and opened version 0.1.0, added a note, restarted, updated to 0.1.1, retained that note, added another and removed the first, then reopened the installed app from Library after another restart. The remaining note persisted. All owned shell processes stopped. Four original captures were inspected; no personal accounts, credentials, or private paths appear in them. + +| Captured state | Evidence | +| --- | --- | +| Search result | [Search](01-search.png) | +| Installed app with its first note | [Version 0.1.0](02-installed-note.png) | +| Updated app after editing its notes | [Version 0.1.1](03-updated-notes.png) | +| Reopened app with retained data | [Library reopen](04-retained-note.png) | + +## Proof and catalog boundaries + +The genuine developer proofs came from the fixture's [0.1.0 workflow](https://github.com/ymote/octosense-publisher-fixture/actions/runs/37736273522) and [0.1.1 workflow](https://github.com/ymote/octosense-publisher-fixture/actions/runs/37736765473). No developer signing key or repository signing secret was used. The shell installed the sealed release bytes, not a restamped source checkout. + +Admission used an **isolated local legacy test catalog**, signed with temporary Hub-only keys that were deleted after both catalog snapshots were prepared. It explicitly selected `OCTOSENSE_HUB_CATALOG=legacy` with new shell, app, and core data directories. It did not mutate the public catalog or submit the fixture to App Hub. This is separate from verification of the production GitHub-attested sequence-11 catalog. A real developer requests publication through an [App Hub submission issue](https://github.com/OctoSense-org/OctoSense-App-Hub/issues/new?template=submit-app.yml); a successful GitHub release alone does not request or approve admission. + +## Instrument limitations + +Earlier attempts exposed missing driver handling for first-run agent consent, scrolling to the install confirmation, and startup snapshot readiness. They also encountered transient `wait=1` frame-acknowledgement errors after input had already applied. The successful driver queued native input with `wait=0`, then checked the actual UI and stored state; it did not replay ambiguous writes. Read-only screenshot arming retries were bounded to eight seconds. The receipt records these limits and earlier outcomes rather than treating every attempt as a pass. + +The custom-drawn optional-agent consent buttons were not in the widget snapshot. The driver used the inspected native screen to choose **Don't allow** and verified the denied consent in its own profile. No agent or model call was required for the tested app. + +## Android fixture preparation + +The original two packs declare only macOS. New genuine [0.1.2](https://github.com/ymote/octosense-publisher-fixture/actions/runs/37742612574) and [0.1.3](https://github.com/ymote/octosense-publisher-fixture/actions/runs/37742627927) releases declare macOS and Android and use the merged Design Flow generator at `6f4ce207` with App Hub `655114c4943cd2490daaefa2173e7b5aaa20669f`. Their workflows, native proof verification, platform declarations, and hashes passed; see the [preparation receipt](android-fixture-releases.json). This receipt does **not** claim phone UI acceptance. The old packs and evidence remain unchanged. + +## Final package and OnePlus 6 + +The final Mac run repeated all eight checks. Original [installed](final-01-installed-note.png) and [updated](final-02-updated-notes.png) captures were inspected. [Capture hashes](captures-sha256.json) bind the checked-in originals. + +The actual OnePlus 6 run at `8afcf35f03649f31b939b822302c132f18feb86e` passed **8/8 functional checks**: search/install/open 0.1.2, add a note, update to 0.1.3 with exact proof and note retained, edit the note list, and restart/Library Open with the final note intact. See its [receipt](android-8af.json) and [original reopened screen](android-24-library-opened.png). Other capture hashes remain in the receipt; raw logs and private profiles are not committed. + +**The phone has a visual defect:** “Publishing Test Notes” clips at the right edge. Body text wraps and the tested actions remain reachable. This is a functional pass, not a clean mobile UX pass. The inherited starter-template heading has a separate narrow-window fix; that fix was not applied to these immutable phone releases or claimed phone-tested. + +The phone used an isolated debug Home package, scoped ADB input and an ephemeral local legacy catalog. It did not replace normal Home or use personal accounts/models. Its source predates the final packaging-only changes; the receipt retains the actual source and APK hashes. Both Mac and phone test processes were stopped. These are synthetic publisher-fixture results, not acceptance of the separately submitted ymote Notes, Inbox, Calendar or Camera apps. + +## Release-candidate phone rerun at 933abbcf + +The OnePlus 6 repeated **8/8 publisher checks and 5/5 L0 layout checks** on exact source `933abbcf2737e652acd9cae2a4c9ffc16bfdaec6`, runtime tree `6c080f31adb899611e6ebe132ccfa2eead06cf9b`, and App Hub `ba36df0505e198f998201af312ff5184df98cae9`. The [build receipt](android-933-build.json) records a clean-source, two-job Android build. Both isolated debug-package flows explicitly unset `MAKEPAD_SPLASH_BUDGET_MS`, exercising the normal **64 ms** default. These results supersede the older phone run for this source revision without changing its historical evidence. + +The [publisher receipt](android-933-publisher.json) records genuine 0.1.2 → 0.1.3 release installation, exact proof preservation, note editing, and persistence after process restart and Library Open. Its [original final screen](android-933-library-opened.png) shows the retained note. The immutable fixture's title still clips; this remains a functional pass with that visual defect. + +The separate [L0 receipt](android-933-l0.json) covers a zero-capability synthetic measured canvas: aligned top markers, initial bottom clipping, one real swipe exposing the final native toggle, and real taps changing it off → on → off. Original OS captures show [the top](android-933-l0-top.png), [the exposed off state](android-933-l0-off.png), [the on state](android-933-l0-on.png), and [the restored off state](android-933-l0-off-again.png). This proves scrolling and native widget hit testing; it does not prove a business reducer, backend write, or persisted toggle state. The measured vertical origin includes the approximately 80-pixel Android status-bar inset, not a separately offset nested host pane. + +**Capture limitation:** supplemental Makepad texture readback lagged interactions even after the capture timestamp changed. A capture requested after scrolling still showed the top; one requested after the tap still showed the previous off state. The receipts retain their hashes as diagnostic evidence. Post-scroll and toggle assertions use the current OS screenshots, not those delayed native captures. + +Both flows used temporary local legacy test catalogs and separate app data. The publisher packs retain genuine GitHub proofs; the L0 fixture instead has an ephemeral synthetic test signature and was not publicly published. Neither test grants production App Hub admission. Normal Home, personal accounts, and models were untouched; the assigned test package was stopped. This is focused acceptance of a debug Home shell with `dev-mode,app-hub`, not a production Android package or a full device UX soak. diff --git a/desktop/reviews/github-publisher-ui-2026-10-08/README.zh-CN.md b/desktop/reviews/github-publisher-ui-2026-10-08/README.zh-CN.md new file mode 100644 index 00000000..87cfd1cf --- /dev/null +++ b/desktop/reviews/github-publisher-ui-2026-10-08/README.zh-CN.md @@ -0,0 +1,52 @@ +# 无独立密钥的开发者发布 UI 验收 — 2026-10-08 + +[English](README.md) + +最终源码 `5e1a8414cba4c9c3ab041b5555b6d90bcbad03bb` 的 macOS 打包 Shell 使用原生 Makepad instrument 和全新数据,重新通过 **8/8 项检查**。[最终收据](macos-final-5e1.json)用 SHA-256 绑定可执行文件和真实 GitHub 发布包。先前 `5607e90b` 的[收据](macos-5607.json)及下方截图保持不变;重建后可执行文件字节相同,但最终包仍实际重跑了一遍。这是针对发布、安装和更新的验收,不是长时间 UX 浸泡测试,也不是正式发行公告。 + +测试拒绝了 App Hub 的可选 Agent,搜索 Publishing Test Notes,安装并打开 0.1.0,添加笔记,重启后更新到 0.1.1,确认原笔记保留,添加第二条并删除第一条,再次重启并从应用库打开。剩余笔记仍然存在。测试启动的 Shell 进程均已退出。四张原始截图均已审视,不包含个人账户、凭证或私有路径。 + +| 截图状态 | 证据 | +| --- | --- | +| 搜索结果 | [搜索](01-search.png) | +| 安装后的应用及第一条笔记 | [0.1.0](02-installed-note.png) | +| 更新后修改笔记 | [0.1.1](03-updated-notes.png) | +| 重新打开后数据保留 | [从应用库打开](04-retained-note.png) | + +## 发布证明与目录边界 + +真实开发者证明来自测试仓库的 [0.1.0 工作流](https://github.com/ymote/octosense-publisher-fixture/actions/runs/37736273522)和 [0.1.1 工作流](https://github.com/ymote/octosense-publisher-fixture/actions/runs/37736765473)。没有使用开发者签名密钥或仓库签名 secret。Shell 安装的是附有证明的发布原始字节,不是重新盖章的源码检出。 + +准入使用**隔离的本地旧格式测试目录**,其临时 Hub 专用密钥在两个目录快照生成后已删除。测试显式设置 `OCTOSENSE_HUB_CATALOG=legacy`,并使用全新的 Shell、应用和 core 数据目录。没有修改公开目录,也没有向 App Hub 提交测试应用。这与生产 GitHub 证明目录 sequence 11 的验证是两项独立证据。正式开发者通过 [App Hub 提交 issue](https://github.com/OctoSense-org/OctoSense-App-Hub/issues/new?template=submit-app.yml)申请发布;GitHub release 成功本身并不构成申请或批准。 + +## Instrument 限制 + +此前尝试暴露了驱动未处理首次 Agent 同意框、安装确认按钮滚动以及启动快照尚未就绪的情况。还遇到过输入已生效但 `wait=1` 帧确认失败的瞬态错误。成功的驱动使用 `wait=0` 排队原生输入,随后验证真实 UI 和存储状态,没有重放结果不明确的写操作。只读截图请求的重试限定为八秒。收据保留这些限制和此前结果,没有将每次尝试都记为成功。 + +自绘的可选 Agent 同意按钮没有出现在控件快照中。驱动根据已审视的原生画面选择 **Don't allow**,并验证自身测试配置中的拒绝记录。被测应用不需要 Agent 或模型调用。 + +## Android 测试包准备 + +原来的两个包只声明 macOS。新生成的真实 [0.1.2](https://github.com/ymote/octosense-publisher-fixture/actions/runs/37742612574)和 [0.1.3](https://github.com/ymote/octosense-publisher-fixture/actions/runs/37742627927) 发布同时声明 macOS 与 Android,使用已合并的 Design Flow `6f4ce207` 生成器和 App Hub `655114c4943cd2490daaefa2173e7b5aaa20669f`。工作流、原生证明验证、平台声明与哈希均通过,详见[准备收据](android-fixture-releases.json)。该收据**不代表**手机 UI 已通过验收。旧包及证据保持原样。 + +## 最终打包版本与 OnePlus 6 + +最终 Mac 测试重跑了全部八项检查,并审视原始[安装后](final-01-installed-note.png)和[更新后](final-02-updated-notes.png)截图。[截图哈希](captures-sha256.json)绑定本仓库保存的原图。 + +OnePlus 6 真机使用源码 `8afcf35f03649f31b939b822302c132f18feb86e`,通过 **8/8 项功能检查**:搜索、安装并打开 0.1.2,添加笔记,更新到 0.1.3 后完整证明及笔记保留,修改笔记列表,重启后从应用库打开仍保留最终笔记。详见[真机收据](android-8af.json)及[重新打开的原始画面](android-24-library-opened.png)。其余截图哈希保留在收据中;不提交原始日志或私有配置。 + +**手机仍有视觉缺陷:**“Publishing Test Notes”标题在右侧被截断。正文可换行,被测操作仍可触达。这是功能通过,不是完整的移动 UX 通过。问题来自初始模板标题,另有窄窗口修复;该修复没有改写这些不可变发布包,也未宣称通过手机复测。 + +手机使用隔离的 debug Home 包、限定包范围的 ADB 输入和临时本地旧格式目录;没有替换日常 Home,也未使用个人账户或模型。手机源码早于最终打包专用修改,收据保留实际源码和 APK 哈希。Mac 与手机测试进程均已结束。这些是合成发布测试应用的结果,不是另行提交的 ymote Notes、Inbox、Calendar 或 Camera 应用的验收。 + +## 933abbcf 发布候选版本的手机复测 + +OnePlus 6 在准确源码 `933abbcf2737e652acd9cae2a4c9ffc16bfdaec6`、运行时树 `6c080f31adb899611e6ebe132ccfa2eead06cf9b` 和 App Hub `ba36df0505e198f998201af312ff5184df98cae9` 上,重新通过 **8/8 项发布流程检查及 5/5 项 L0 布局检查**。[构建收据](android-933-build.json)记录了干净源码、两个并行任务的 Android 构建。两个隔离 debug 包流程均显式清除 `MAKEPAD_SPLASH_BUDGET_MS`,使用正常的 **64 毫秒**默认预算。这些结果针对当前源码替代较早的手机结果,但不修改历史证据。 + +[发布流程收据](android-933-publisher.json)记录真实 0.1.2 → 0.1.3 发布包的安装、完整证明保留、笔记修改,以及进程重启后从应用库打开仍保留数据。[最终原始画面](android-933-library-opened.png)显示保留的笔记。不可变测试包的标题仍然被截断,因此依旧是带有该视觉缺陷的功能通过。 + +独立的 [L0 收据](android-933-l0.json)覆盖零权限的合成测量画布:顶部标记对齐、底部初始不可见、一次真实滑动露出最后的原生开关,以及真实点击实现关 → 开 → 关。原始系统截图分别显示[顶部](android-933-l0-top.png)、[露出的关闭状态](android-933-l0-off.png)、[开启状态](android-933-l0-on.png)和[恢复关闭](android-933-l0-off-again.png)。这验证滚动和原生控件命中,不代表业务 reducer、后端写入或开关状态持久化。测得的垂直起点包含约 80 像素的 Android 状态栏偏移,不是另行偏移的嵌套宿主面板。 + +**截图限制:**补充的 Makepad 纹理回读会落后于交互,即使截图时间戳已更新。滚动后请求的截图仍显示顶部,点击后请求的截图仍显示先前的关闭状态。收据保留这些哈希作为诊断证据。滚动后和开关状态的断言依据当前系统截图,而非这些延迟的原生截图。 + +两个流程使用临时本地旧格式测试目录及独立应用数据。发布测试包保留真实 GitHub 证明;L0 测试包使用临时合成测试签名,未公开发布。两项测试均不构成生产 App Hub 准入。日常 Home、个人账户和模型均未触及,指定测试包已停止。这是使用 `dev-mode,app-hub` 的 debug Home Shell 针对性验收,不是 Android 生产包验收或全设备 UX 浸泡测试。 diff --git a/desktop/reviews/github-publisher-ui-2026-10-08/android-24-library-opened.png b/desktop/reviews/github-publisher-ui-2026-10-08/android-24-library-opened.png new file mode 100644 index 00000000..63817ce2 Binary files /dev/null and b/desktop/reviews/github-publisher-ui-2026-10-08/android-24-library-opened.png differ diff --git a/desktop/reviews/github-publisher-ui-2026-10-08/android-8af.json b/desktop/reviews/github-publisher-ui-2026-10-08/android-8af.json new file mode 100644 index 00000000..d9f70331 --- /dev/null +++ b/desktop/reviews/github-publisher-ui-2026-10-08/android-8af.json @@ -0,0 +1,179 @@ +{ + "schema": 1, + "scope": "actual-oneplus6-full-shell-app-hub-publisher-ui", + "tested_source": "8afcf35f03649f31b939b822302c132f18feb86e", + "source_dirty": false, + "runtime_tree": "6a6baef94610d7b6f8c7edcb0e7db3fc786415ea", + "hub_revision": "655114c4943cd2490daaefa2173e7b5aaa20669f", + "app_contract_version": "1.8.0", + "device_model": "OnePlus 6", + "input_method": "scoped-adb-with-owned-package-foreground-check", + "build_features": [ + "dev-mode", + "app-hub" + ], + "package": "dev.makepad.octosense.publisherlab.checked8af", + "apk_sha256": "d6b330ff2219aa288da189cbfd183ff7c1d31e9977bf1b4a1f351db1ab45f521", + "original_apk_sha256": "d6b55de5a9d37db9b3b9195a29d337e47bd03d0de01971757fb37ef03aa7efc0", + "native_library_sha256": "5d0f68938f854e2cda511267eb09755e88100a309f50b64a6ca21b6cfc65b507", + "native_library_unmodified_by_debug_wrapper": true, + "debug_wrapper_purpose": "isolate shell/app/core storage and use ephemeral local catalog mirror", + "first_package_install_utc": "2026-10-08T07:45:52Z", + "finished_utc": "2026-10-08T07:56:35Z", + "catalog_authority": "ephemeral-local-legacy-not-production-github-v2", + "developer_key_used": false, + "publisher_proof": "genuine-github-tag-push", + "production_publication": false, + "normal_home_changed": false, + "personal_accounts_used": false, + "models_used": false, + "owned_package_stopped": true, + "functional_checks_passed": 8, + "functional_checks_total": 8, + "functional_passed": true, + "checks": [ + { + "name": "search_and_install_initial_genuine_release", + "passed": true, + "evidence": [ + { + "file": "05-search-result.png", + "sha256": "2fb7faec8b8005fa1cf24a90cd05e57b8f9deaef069e3adb0b24c5c49cfe01dd" + }, + { + "file": "07-install-review.png", + "sha256": "ebc625334c04e280e3a029653a422c13026788802577a49d4a38585aa74fdd06" + }, + { + "file": "08-installed.png", + "sha256": "f96d87b6e94aa2bef4dedfa34bc38367ef55d710679119e528dd89e45252d174" + } + ] + }, + { + "name": "open_initial_app_and_persist_note", + "passed": true, + "evidence": [ + { + "file": "10-opened.png", + "sha256": "ee0e468460e46a9449bcfa5e86359296a7b3f77f907264e4ff8f43cf1fd429a1" + }, + { + "file": "12-note-saved.png", + "sha256": "34aee84e3236c1d44083218d9923b9b4519a3ba07831559d421c1a0ab220581c" + } + ] + }, + { + "name": "recognize_new_genuine_release_as_update", + "passed": true, + "evidence": [ + { + "file": "13-update-catalog.png", + "sha256": "1ef3238653870de97b34696f12c4453c25345e5603f06e59767544b7de090439" + } + ] + }, + { + "name": "install_update_preserves_exact_github_proof", + "passed": true, + "evidence": [ + { + "file": "15-update-review.png", + "sha256": "2f0466acad5963c3aecb04528cd8b9e3a0d81ea4b6156e2340a11998bcefeea1" + }, + { + "file": "17-updated-open-ready.png", + "sha256": "15e200524ad408a662163645082b0ab9c71ff0d580014baed849a1ae61568a63" + } + ] + }, + { + "name": "updated_app_loads_existing_note", + "passed": true, + "evidence": [ + { + "file": "18-note-after-update.png", + "sha256": "128c358dd8dd3b36f19c1392f5ec108afe7cb1f43f299fc7d08e32832bfff7ca" + } + ] + }, + { + "name": "updated_app_adds_second_note", + "passed": true, + "evidence": [ + { + "file": "19-two-notes.png", + "sha256": "3db12dc713812ac74d8922707026fbae30b8d3072b449fa4ffac67a9a30cb4b6" + } + ] + }, + { + "name": "updated_app_removes_selected_note", + "passed": true, + "evidence": [ + { + "file": "20-note-removed.png", + "sha256": "3d185d48a768a0de229e03be6504637ac86dc3e7c20b03a3abbd2375a891d5ab" + } + ] + }, + { + "name": "process_restart_and_library_open_preserve_final_note", + "passed": true, + "evidence": [ + { + "file": "23-library.png", + "sha256": "d87db2c4a07a96b5f8764f0d20f68fa5606ed9205f03a54d2af76fcdbffcb173" + }, + { + "file": "24-library-opened.png", + "sha256": "daa501b339e7189eadbda1750bdcefd0f34222529e028e2e976fe3ca5ee8ea9a" + } + ] + } + ], + "fixture_releases": [ + { + "version": "0.1.2", + "app_id": "dev.octosense.publisher-fixture", + "pack_sha256": "6f0f48859044f280bb70caa9e5686478d712dfc7b497a8ff5d47aac887b80d6f", + "catalog_sha256": "54ec6c01c08c2462c836ef47b72557a6ca46c030a72a51b52e401c14c101e137", + "source_commit": "9df54b1fc8b701e4356b16dd8e8acdce43fc010d", + "full_github_proof_preserved": true + }, + { + "version": "0.1.3", + "app_id": "dev.octosense.publisher-fixture", + "pack_sha256": "ac62bad25923e112cc64ce863df9fac20f6feebecb0e6df253695f4203629053", + "catalog_sha256": "a8771e88f82cc27453f2ca4e0912587e3e8fea9faad748c64c58e8d5a3b3bb30", + "source_commit": "fdbdf950589f16220a5579786b44c4d1626292e7", + "full_github_proof_preserved": true + } + ], + "final_state": { + "version": "0.1.3", + "manifest_and_proof_exact": true, + "notes": [ + [ + "Saved after update" + ] + ] + }, + "visual_review": { + "performed": true, + "overall": "functional-pass-with-fixture-layout-defect", + "finding": "The fixture title Publishing Test Notes clips at the right edge on this phone. Body text wraps; input, Add, remove, Hub consent, Update and Open remain reachable. This is not a clean mobile UX pass.", + "evidence": "24-library-opened.png" + }, + "test_limits": [ + "Full isolated Home shell built without default model/kernel features.", + "Catalog authority is an ephemeral local legacy test authority; these genuine publisher fixtures were not admitted to the production catalog.", + "OS screenshots and scoped ADB input cover the real phone UI; Makepad remote instrumentation is unavailable in this Android build.", + "No account connection, provider/model call, personal data, physical write approval or normal Home replacement was tested.", + "Brief startup black frame and immediate pre-focus capture refusal were retained; no ambiguous write was replayed." + ], + "actions_sha256": "af73513b283ef7398738420d5928e0d1293368af5da596b0216464900181d2f8", + "private_driver_sha256": "e9bc50ef9050766ccd38ce5053f65754ea86e61dfc691631b542987c6369c870", + "packaging_receipt_sha256": "914cf73ed47923d30f6885013544900843225dc9e58b7f239f3cfc9526d6a542" +} diff --git a/desktop/reviews/github-publisher-ui-2026-10-08/android-933-build.json b/desktop/reviews/github-publisher-ui-2026-10-08/android-933-build.json new file mode 100644 index 00000000..2c00e000 --- /dev/null +++ b/desktop/reviews/github-publisher-ui-2026-10-08/android-933-build.json @@ -0,0 +1,15 @@ +{ + "source_revision": "933abbcf2737e652acd9cae2a4c9ffc16bfdaec6", + "runtime_tree": "6c080f31adb899611e6ebe132ccfa2eead06cf9b", + "source_dirty": false, + "package": "dev.makepad.octosense.publisherlab.checked8af", + "crate": "octosense-home", + "started_at_utc": "2026-10-08T09:12:46.980289+00:00", + "packager_sha256": "585e8edcdfbdfa8bbd1fb77f0d76a85edbf92fd378dc5b6c5887196ed9d53dcb", + "jobs": 2, + "debuggable_test_build": true, + "host_aws_lc_builder": "cc (committed target-scoped Cargo configuration)", + "exit_code": 0, + "elapsed_seconds": 292.186, + "finished_at_utc": "2026-10-08T09:17:39.200783+00:00" +} diff --git a/desktop/reviews/github-publisher-ui-2026-10-08/android-933-l0-off-again.png b/desktop/reviews/github-publisher-ui-2026-10-08/android-933-l0-off-again.png new file mode 100644 index 00000000..2f6e6dfe Binary files /dev/null and b/desktop/reviews/github-publisher-ui-2026-10-08/android-933-l0-off-again.png differ diff --git a/desktop/reviews/github-publisher-ui-2026-10-08/android-933-l0-off.png b/desktop/reviews/github-publisher-ui-2026-10-08/android-933-l0-off.png new file mode 100644 index 00000000..2f6e6dfe Binary files /dev/null and b/desktop/reviews/github-publisher-ui-2026-10-08/android-933-l0-off.png differ diff --git a/desktop/reviews/github-publisher-ui-2026-10-08/android-933-l0-on.png b/desktop/reviews/github-publisher-ui-2026-10-08/android-933-l0-on.png new file mode 100644 index 00000000..07bf10fb Binary files /dev/null and b/desktop/reviews/github-publisher-ui-2026-10-08/android-933-l0-on.png differ diff --git a/desktop/reviews/github-publisher-ui-2026-10-08/android-933-l0-top.png b/desktop/reviews/github-publisher-ui-2026-10-08/android-933-l0-top.png new file mode 100644 index 00000000..a255d478 Binary files /dev/null and b/desktop/reviews/github-publisher-ui-2026-10-08/android-933-l0-top.png differ diff --git a/desktop/reviews/github-publisher-ui-2026-10-08/android-933-l0.json b/desktop/reviews/github-publisher-ui-2026-10-08/android-933-l0.json new file mode 100644 index 00000000..c0a6d3a3 --- /dev/null +++ b/desktop/reviews/github-publisher-ui-2026-10-08/android-933-l0.json @@ -0,0 +1,63 @@ +{ + "schema": 1, + "status": "passed", + "source_revision": "933abbcf2737e652acd9cae2a4c9ffc16bfdaec6", + "runtime_tree": "6c080f31adb899611e6ebe132ccfa2eead06cf9b", + "apk_sha256": "3f1bd36441ec147795033ad668020b8e295758119a01939aa2c5698a614b7f1d", + "app_id": "dev.octosense.layoutprobe", + "package": "dev.makepad.octosense.publisherlab.checked8af", + "checks": [ + "installed zero-capability fixture identity matches local admitted bytes", + "measured aligned origin markers and initial bottom clipping", + "real vertical gestures reveal final measured native control", + "tap at observed final-control position changes native toggle off to on", + "second real tap restores native off state" + ], + "capabilities": [], + "surface": "OS screenshots plus separately labelled Makepad app-texture readback", + "fixture_author": "test agent", + "driver": "test agent through bounded ADB gestures", + "no_provider_or_model": true, + "normal_home_changed": false, + "unverified": [ + "L0 reducer or host-service actions", + "durable app state", + "broad performance/UX acceptance" + ], + "manifest_sha256": "c601ebcadd7a3519120895706965e58761d2615d275eb05b3f2775239756ec93", + "scale_pixels_per_design_point": 2.8117469879518073, + "canvas_origin_os_pixels": [ + 0.13554216867469648, + 79.6355421686747 + ], + "swipes_to_final": 1, + "visual_review": { + "performed": true, + "basis": "Original Android OS screenshots", + "result": "The five content sections, footer, and final native switch are visible and readable. Real scrolling exposes the final switch; its observed state changes amber to green and back to amber." + }, + "owned_package_stopped": true, + "captures": { + "01-top.native.png": "fd536f3cc933b73ba023fd29b636da56b4d7791d1fefeccb5e78c80618f7b2e2", + "01-top.os.png": "56649d977e274e657eba652fddfbfbeae4f7237813c53d8d50e4d1e25b15f83c", + "02-bottom.native.png": "ec806636cb9a600922d73a31e28fc5cfee974a6e4ef18aa1fcebd8da42c80996", + "02-scroll-1.os.png": "998bffc55bac03d53a6059d6f7b95f11ad9a50cc96174867f43ffd1bce7ec4f5", + "03-toggle-on.native.png": "2ae89a749a66ae5b108fe4fbba719784e9104001a00e6f879272876b050cd446", + "03-toggle-on.os.png": "86f6b6e9bf79b7137410d93dac7fc6ba2cd14ca2cb954c53bedb6fd3ea823ef8", + "04-toggle-off.os.png": "998bffc55bac03d53a6059d6f7b95f11ad9a50cc96174867f43ffd1bce7ec4f5" + }, + "evidence_limitations": [ + "Native app-texture readback lagged the preceding interaction despite capture timestamp changes: the bottom capture still showed the top, and the on-state capture still showed the previous off state. These images are retained as diagnostics and are not used to prove post-scroll or toggle state.", + "The measured approximately 80-pixel vertical origin is the Android status-bar inset. It does not establish a nonzero nested host-pane origin beyond OS insets.", + "The native toggle demonstrates ephemeral widget interaction only, not an L0 business reducer, backend write, or persisted toggle state." + ], + "catalog_authority": "ephemeral-local-legacy-test-only", + "publisher_proof": "synthetic-ephemeral-test-signature-not-github", + "fixture_not_production_published": true, + "hub_revision": "ba36df0505e198f998201af312ff5184df98cae9", + "functional_checks_passed": 5, + "functional_checks_total": 5, + "evidence_basis": "Actual OS screenshots and pixel analysis; supplemental native captures lag interactions.", + "default_splash_budget_ms": 64, + "test_budget_override_used": false +} diff --git a/desktop/reviews/github-publisher-ui-2026-10-08/android-933-library-opened.png b/desktop/reviews/github-publisher-ui-2026-10-08/android-933-library-opened.png new file mode 100644 index 00000000..9bb66e6f Binary files /dev/null and b/desktop/reviews/github-publisher-ui-2026-10-08/android-933-library-opened.png differ diff --git a/desktop/reviews/github-publisher-ui-2026-10-08/android-933-publisher.json b/desktop/reviews/github-publisher-ui-2026-10-08/android-933-publisher.json new file mode 100644 index 00000000..1d73d6f6 --- /dev/null +++ b/desktop/reviews/github-publisher-ui-2026-10-08/android-933-publisher.json @@ -0,0 +1,124 @@ +{ + "schema": 1, + "scope": "actual-oneplus6-full-shell-app-hub-publisher-ui", + "tested_source": "933abbcf2737e652acd9cae2a4c9ffc16bfdaec6", + "source_dirty": false, + "runtime_tree": "6c080f31adb899611e6ebe132ccfa2eead06cf9b", + "hub_revision": "ba36df0505e198f998201af312ff5184df98cae9", + "app_contract_version": "1.8.0", + "device_model": "OnePlus 6", + "input_method": "scoped-adb-with-owned-package-foreground-check", + "build_features": [ + "dev-mode", + "app-hub" + ], + "package": "dev.makepad.octosense.publisherlab.checked8af", + "apk_sha256": "e8cd7e350add259ff76f3a7c9e53c95b0429a7ce7c4e8ba028eaca46744b3c7d", + "original_apk_sha256": "5c7604de281f3f839b4abe5535107b15e919130c4240adaf1657b331fb0c2b2b", + "native_library_sha256": "395768d5dc6072a5f9fb602e51c5047679aabc9034796208503fadacab95f3ab", + "native_library_unmodified_by_debug_wrapper": true, + "catalog_authority": "ephemeral-local-legacy-not-production-github-v2", + "developer_key_used": false, + "publisher_proof": "genuine-github-tag-push", + "production_publication": false, + "normal_home_changed": false, + "personal_accounts_used": false, + "models_used": false, + "owned_package_stopped": true, + "functional_checks_passed": 8, + "functional_checks_total": 8, + "functional_passed": true, + "checks": [ + { + "name": "search_and_install_initial_genuine_release", + "passed": true + }, + { + "name": "open_initial_app_and_persist_note", + "passed": true + }, + { + "name": "recognize_new_genuine_release_as_update", + "passed": true + }, + { + "name": "install_update_preserves_exact_github_proof", + "passed": true + }, + { + "name": "updated_app_loads_existing_note", + "passed": true + }, + { + "name": "updated_app_adds_second_note", + "passed": true + }, + { + "name": "updated_app_removes_selected_note", + "passed": true + }, + { + "name": "process_restart_and_library_open_preserve_final_note", + "passed": true + } + ], + "final_state": { + "version": "0.1.3", + "manifest_and_proof_exact": true, + "notes": [ + [ + "Saved after RC update" + ] + ] + }, + "screenshots": { + "01-consent.png": "386f42b90d5e9c2bc1e8b9c0f19d4091ea4a5329711c6f5cdc6aef2fe76fb123", + "05-search-result.png": "ed31bd87c08e0bb8c350f3bc9af521dddddc4efce1d66c3dae919551e77857b2", + "07-install-review.png": "57bd9fb7172a310cfdc01d14ee22df1b258a45e970982ea689c0bd3f77ae5282", + "09-open-ready.png": "488e91e27da16e643cf80c22da80677ee95b208aecfe050ed67ae83373ec927a", + "12-note-saved.png": "aabeb7f131fd73a67b12d67cc76770e02a85693570b2e258bca8bf5160bd921c", + "13-update-catalog.png": "702302df4f3d2bda3b603644909ee29e285665c13aef83cdafd3409bd6c1b811", + "15-update-review.png": "47718b47349ef75a56be0a7bb24e4fd11af1445413d5cd07e099bde89e8f0900", + "18-note-after-update.png": "73cb0b9a25b7cbe5b0e544293ba5ce962f02997b684ac06a795f106aedafef9b", + "19-two-notes.png": "72a48ebf35739d5145f8cfc845dde6c5f354e26c7471cb420268517d6d328289", + "20-note-removed.png": "f2b01499291b1b43d864ed9672ca52c7d7cdb901bb6f95abb6e7500cf18210c7", + "23-library.png": "d74595d074222568e4b07a23fe7637242d54dc8c394269b11ab3cdc779b7f026", + "24-library-opened.png": "6bf71ae303a75a9196d0346acd766b264d4b078d8a3ca2176b5a15b142ae4052" + }, + "actions_sha256": "fbb2e934686f5540dd8da4dc1f6d601ac8faab009363bb6b15d99f4c636d4342", + "packaging_receipt_sha256": "8e723aa7b127036fd4d163f7ba4144cd3aa212005ab9057aec5ae3bc24b54f3d", + "private_driver_sha256": "d2a26a1af446bb5f0768f17172e9d2489cad8d3ec5fa5665aa0ca54ca2db9dd5", + "finished_utc": "2026-10-08T09:20:21.398076+00:00", + "visual_review": { + "performed": true, + "overall": "functional-pass-with-fixture-layout-defect", + "finding": "The immutable fixture title Publishing Test Notes clips at the right edge on this phone; input, Add, remove, install review, Update and Open remain reachable. The later starter-template heading fix is not present in these historical test releases." + }, + "test_limits": [ + "Isolated Home shell without default model/kernel features; this is a debug acceptance APK, not an Android release artifact.", + "MAKEPAD_SPLASH_BUDGET_MS is explicitly unset; normal64ms runtime default is exercised.", + "Local legacy catalog is temporary; these genuine keyless publisher fixtures are not production App Hub entries.", + "Actual OS screenshots and ADB gestures; no native app-texture or Android remote instrumentation used for state assertions.", + "No accounts, provider/model calls, physical write approval, production public-catalog discovery or normal Home replacement." + ], + "fixture_releases": [ + { + "version": "0.1.2", + "app_id": "dev.octosense.publisher-fixture", + "pack_sha256": "6f0f48859044f280bb70caa9e5686478d712dfc7b497a8ff5d47aac887b80d6f", + "catalog_sha256": "54ec6c01c08c2462c836ef47b72557a6ca46c030a72a51b52e401c14c101e137", + "source_commit": "9df54b1fc8b701e4356b16dd8e8acdce43fc010d", + "full_github_proof_preserved": true + }, + { + "version": "0.1.3", + "app_id": "dev.octosense.publisher-fixture", + "pack_sha256": "ac62bad25923e112cc64ce863df9fac20f6feebecb0e6df253695f4203629053", + "catalog_sha256": "a8771e88f82cc27453f2ca4e0912587e3e8fea9faad748c64c58e8d5a3b3bb30", + "source_commit": "fdbdf950589f16220a5579786b44c4d1626292e7", + "full_github_proof_preserved": true + } + ], + "default_splash_budget_ms": 64, + "test_budget_override_used": false +} diff --git a/desktop/reviews/github-publisher-ui-2026-10-08/android-fixture-releases.json b/desktop/reviews/github-publisher-ui-2026-10-08/android-fixture-releases.json new file mode 100644 index 00000000..6f14f760 --- /dev/null +++ b/desktop/reviews/github-publisher-ui-2026-10-08/android-fixture-releases.json @@ -0,0 +1,44 @@ +{ + "schema": 1, + "scope": "synthetic-android-publisher-release-preparation", + "design_flow_source": "6f4ce207", + "hub_workflow_source": "655114c4943cd2490daaefa2173e7b5aaa20669f", + "repository": "ymote/octosense-publisher-fixture", + "developer_signing_key": false, + "submission_issue_created": false, + "production_hub_admission": false, + "platforms": [ + "macos", + "android" + ], + "source_gate_passed": true, + "releases": [ + { + "tag": "v0.1.2", + "source": "9df54b1fc8b701e4356b16dd8e8acdce43fc010d", + "run": "https://github.com/ymote/octosense-publisher-fixture/actions/runs/37742612574", + "workflow_conclusion": "success", + "pack_sha256": "6f0f48859044f280bb70caa9e5686478d712dfc7b497a8ff5d47aac887b80d6f", + "native_publisher_verify": "passed", + "platform_declaration_verified": [ + "macos", + "android" + ] + }, + { + "tag": "v0.1.3", + "source": "fdbdf950589f16220a5579786b44c4d1626292e7", + "run": "https://github.com/ymote/octosense-publisher-fixture/actions/runs/37742627927", + "workflow_conclusion": "success", + "pack_sha256": "ac62bad25923e112cc64ce863df9fac20f6feebecb0e6df253695f4203629053", + "native_publisher_verify": "passed", + "platform_declaration_verified": [ + "macos", + "android" + ] + } + ], + "native_phone_install": "pending", + "ephemeral_hub_private_keys_deleted": true, + "catalog_scope": "temporary-local-legacy-not-production-github-v2" +} diff --git a/desktop/reviews/github-publisher-ui-2026-10-08/captures-sha256.json b/desktop/reviews/github-publisher-ui-2026-10-08/captures-sha256.json new file mode 100644 index 00000000..bcd408b5 --- /dev/null +++ b/desktop/reviews/github-publisher-ui-2026-10-08/captures-sha256.json @@ -0,0 +1,14 @@ +{ + "01-search.png": "9051e407dd2e4cab33050756864763af8de3747a692dbc3dcf1d4a44c6fc9a81", + "02-installed-note.png": "b43dbfd6889706d37aac209ae98ae8f8074ef2d0da3e8a2bc1d1de7233c4abe6", + "03-updated-notes.png": "7b89fb9f93d3eb53762afc2c0b36e880831424a081730b6f8456253c9414672d", + "04-retained-note.png": "3f8e64dbfef6ada6b19f8605a28a51cc0fa7a89a6be5fe2826f8c1700f1031f6", + "android-24-library-opened.png": "daa501b339e7189eadbda1750bdcefd0f34222529e028e2e976fe3ca5ee8ea9a", + "android-933-l0-off-again.png": "998bffc55bac03d53a6059d6f7b95f11ad9a50cc96174867f43ffd1bce7ec4f5", + "android-933-l0-off.png": "998bffc55bac03d53a6059d6f7b95f11ad9a50cc96174867f43ffd1bce7ec4f5", + "android-933-l0-on.png": "86f6b6e9bf79b7137410d93dac7fc6ba2cd14ca2cb954c53bedb6fd3ea823ef8", + "android-933-l0-top.png": "56649d977e274e657eba652fddfbfbeae4f7237813c53d8d50e4d1e25b15f83c", + "android-933-library-opened.png": "6bf71ae303a75a9196d0346acd766b264d4b078d8a3ca2176b5a15b142ae4052", + "final-01-installed-note.png": "1fbe0b5f8b3aafe2e0646e8966e858ea939bb47e6e53b10fa6194fbfbbd32c34", + "final-02-updated-notes.png": "20ef25ae25d97474cb1d5d9b567814335cc7a7800287132f6a1878d947f34f0c" +} diff --git a/desktop/reviews/github-publisher-ui-2026-10-08/final-01-installed-note.png b/desktop/reviews/github-publisher-ui-2026-10-08/final-01-installed-note.png new file mode 100644 index 00000000..be24a0fb Binary files /dev/null and b/desktop/reviews/github-publisher-ui-2026-10-08/final-01-installed-note.png differ diff --git a/desktop/reviews/github-publisher-ui-2026-10-08/final-02-updated-notes.png b/desktop/reviews/github-publisher-ui-2026-10-08/final-02-updated-notes.png new file mode 100644 index 00000000..9e18010f Binary files /dev/null and b/desktop/reviews/github-publisher-ui-2026-10-08/final-02-updated-notes.png differ diff --git a/desktop/reviews/github-publisher-ui-2026-10-08/macos-5607.json b/desktop/reviews/github-publisher-ui-2026-10-08/macos-5607.json new file mode 100644 index 00000000..22ea4c5b --- /dev/null +++ b/desktop/reviews/github-publisher-ui-2026-10-08/macos-5607.json @@ -0,0 +1,121 @@ +{ + "schema": 1, + "status": "passed", + "driver": "native Makepad instrument on an owned hidden Mac shell", + "shell_source": "5607e90b5c0ac217d6cd2d946c06dc6d2f046c00", + "shell_binary_sha256": "e758a27c2d07ea7e8651e953b5ec267fcb19918a9b4dc04166cc77c0de530539", + "catalog_authority": "temporary-local-legacy-not-production-v2", + "publisher_proof": "genuine-github-tag-push", + "fixture_submission_issue": false, + "production_publication": false, + "personal_profiles_or_credentials_used": false, + "checks": [ + "optional_hub_agent_declined_in_test_profile", + "search_displays_genuine_first_release", + "ui_installs_and_opens_first_release", + "first_note_added_in_app_ui", + "ui_installs_verified_keyless_update", + "note_survives_update_and_restart", + "note_removed_in_app_ui", + "updated_app_reopens_from_library_with_persistent_data" + ], + "owned_processes_stopped": true, + "visual_review": { + "status": "passed", + "method": "inspected four original native Makepad captures", + "observations": [ + "Search result and Get action visible", + "Editable note input and Add action readable and reachable", + "Updated note visible after deletion of original note", + "Library reopen retains the remaining note" + ], + "not_claimed": [ + "extended UX soaking", + "public catalog admission", + "Google or GitHub account login", + "phone validation", + "release availability" + ] + }, + "input_completion": "queued native input followed by bounded snapshot/state checks and real captures", + "release_inputs": [ + { + "version": "0.1.0", + "app_id": "dev.octosense.publisher-fixture", + "pack_sha256": "2447bde3fe6789efd288b9470f24660e45ec4f57849b40b204c35ba297cd2a6b", + "catalog_sha256": "29f2ae626fb82cc28c9592d5e018f7f791e3b4817340d99e5324a685abeee83c", + "source_commit": "6d77703ba5877051cd1b7da36b21deee7aa08038", + "full_github_proof_preserved": true + }, + { + "version": "0.1.1", + "app_id": "dev.octosense.publisher-fixture", + "pack_sha256": "9a0d13ea3b02758a960064d9503358e027a8c1370ca247022febb9664cf5df34", + "catalog_sha256": "230f3606121882a20d0cb8e9bb98622fb965c4f2d8feb35a736a6b6c70cef732", + "source_commit": "6019a0e169d4c65cefc211cb3082ca1bbde6ad3a", + "full_github_proof_preserved": true + } + ], + "versions": [ + "0.1.0", + "0.1.1" + ], + "instrument_limitations": [ + "wait=1 input may return requested input frame could not be submitted; retry after the input is applied. Final driver uses wait=0 and verifies UI/state instead of replaying ambiguous writes.", + "Read-only screenshot grab can return grab frame could not be submitted at arming; retry. Final driver bounds retries to eight seconds.", + "Initial App Hub agent-consent buttons are custom-drawn and absent from widget snapshots; the driver declines the optional agent using the inspected screen and verifies the persisted denial." + ], + "driver_sha256": "87094cac045167235ef8a1ec6fe89b49762b136542bed02d4b58d141e07c2937", + "captures": [ + { + "name": "01-search.png", + "sha256": "9051e407dd2e4cab33050756864763af8de3747a692dbc3dcf1d4a44c6fc9a81", + "kind": "original-native-capture", + "privacy_review": "synthetic app and fresh shell; no private paths/accounts" + }, + { + "name": "02-installed-note.png", + "sha256": "b43dbfd6889706d37aac209ae98ae8f8074ef2d0da3e8a2bc1d1de7233c4abe6", + "kind": "original-native-capture", + "privacy_review": "synthetic app and fresh shell; no private paths/accounts" + }, + { + "name": "03-updated-notes.png", + "sha256": "7b89fb9f93d3eb53762afc2c0b36e880831424a081730b6f8456253c9414672d", + "kind": "original-native-capture", + "privacy_review": "synthetic app and fresh shell; no private paths/accounts" + }, + { + "name": "04-retained-note.png", + "sha256": "3f8e64dbfef6ada6b19f8605a28a51cc0fa7a89a6be5fe2826f8c1700f1031f6", + "kind": "original-native-capture", + "privacy_review": "synthetic app and fresh shell; no private paths/accounts" + } + ], + "earlier_attempts": [ + { + "attempt": 1, + "outcome": "driver omitted optional agent-consent handling" + }, + { + "attempt": 2, + "outcome": "driver omitted scroll to installation confirmation" + }, + { + "attempt": 3, + "outcome": "startup snapshot not yet available" + }, + { + "attempt": 4, + "outcome": "input frame acknowledgement failed after update; installed version verified as 0.1.1" + }, + { + "attempt": 5, + "outcome": "input frame acknowledgement failed on Search; exact error retained privately" + }, + { + "attempt": 6, + "outcome": "read-only capture frame arming failed after successful install and note entry" + } + ] +} diff --git a/desktop/reviews/github-publisher-ui-2026-10-08/macos-final-5e1.json b/desktop/reviews/github-publisher-ui-2026-10-08/macos-final-5e1.json new file mode 100644 index 00000000..f61c4ef4 --- /dev/null +++ b/desktop/reviews/github-publisher-ui-2026-10-08/macos-final-5e1.json @@ -0,0 +1,47 @@ +{ + "schema": 1, + "status": "passed", + "driver": "native Makepad instrument on an owned hidden Mac shell", + "shell_source": "5e1a8414cba4c9c3ab041b5555b6d90bcbad03bb", + "shell_binary_sha256": "e758a27c2d07ea7e8651e953b5ec267fcb19918a9b4dc04166cc77c0de530539", + "catalog_authority": "temporary-local-legacy-not-production-v2", + "publisher_proof": "genuine-github-tag-push", + "fixture_submission_issue": false, + "production_publication": false, + "personal_profiles_or_credentials_used": false, + "checks": [ + "optional_hub_agent_declined_in_test_profile", + "search_displays_genuine_first_release", + "ui_installs_and_opens_first_release", + "first_note_added_in_app_ui", + "ui_installs_verified_keyless_update", + "note_survives_update_and_restart", + "note_removed_in_app_ui", + "updated_app_reopens_from_library_with_persistent_data" + ], + "owned_processes_stopped": true, + "visual_review": "Original native captures inspected; readable title and note text, reachable input/actions; synthetic macOS fixture only", + "input_completion": "queued native input followed by bounded snapshot/state checks and real captures", + "release_inputs": [ + { + "version": "0.1.0", + "app_id": "dev.octosense.publisher-fixture", + "pack_sha256": "2447bde3fe6789efd288b9470f24660e45ec4f57849b40b204c35ba297cd2a6b", + "catalog_sha256": "29f2ae626fb82cc28c9592d5e018f7f791e3b4817340d99e5324a685abeee83c", + "source_commit": "6d77703ba5877051cd1b7da36b21deee7aa08038", + "full_github_proof_preserved": true + }, + { + "version": "0.1.1", + "app_id": "dev.octosense.publisher-fixture", + "pack_sha256": "9a0d13ea3b02758a960064d9503358e027a8c1370ca247022febb9664cf5df34", + "catalog_sha256": "230f3606121882a20d0cb8e9bb98622fb965c4f2d8feb35a736a6b6c70cef732", + "source_commit": "6019a0e169d4c65cefc211cb3082ca1bbde6ad3a", + "full_github_proof_preserved": true + } + ], + "versions": [ + "0.1.0", + "0.1.1" + ] +}