公开研究副本:本地绝对路径、实验主机地址已脱敏。NA 保留,完整可执行库存恢复为 0。角色与功能关联是可审核离线推断,未经人工金标或独立外部审查。历史代表截图不认证当次控件对齐。原件 SHA 只认证原件,公开字节 SHA 见发布清单。
功能入口的三层探索机会账本
复用既有116个功能×run组,深审40组、1,967次真实入口发生。没有从resource-id或Action Type重新发明功能合并。确认成员、先前pending/UNKNOWN保留;CreateList仅上下文记录,不补为Ⅰ类。全部入口标签继承离线推断,未经人工金标。
State、Action、Result三个层次
- State:每次入口的 source/target、真实顺序、版本、局部后续记录;访问与首次观察按全run前缀。State拆分/版本变化不被自动并成新业务。共享State允许重叠。
- Action:23,279次完整确认执行与18,926个有目标操作发生事实;
functional-action-result-ledger.*2,792行以局部Concrete键归集,保留真实输入参数、逐次执行ID、目标分布。当前可用/未试Concrete列全为NA,不把历史出现过的控件当永久机会。 - Result:每个具体动作的Target、版本转换、新ID三元组、输入文本、模式/对象敏感性。Target不同为“可区分GUI结果”,不是已认证业务功能分支;Target相同也不能证明数据落盘/后端结果一致。
all_results_explored=UNKNOWN。
账本和检查点将“已经执行过操作”与“所有结果已探索”分开。model-action-concrete-diversity.csv列出一个version/State/ModelAction下实际执行过的不同identity,不是当时同页同时可用的数量。颜色/日期/动态文本可能增加具体键,不按其数量宣称新业务。
未验证机会如何保留
历史Selection未访问ID是模型机会提示。对每个检查点,只取过去已访问source的最近同version快照,减去之后至检查点已有确认执行的ModelAction,记录age和原enabled-valid-unvisited数量;无法把数量映射到每个ID的enabled/valid,也无法证明旧快照在当前页仍有效。
未来真正执行的这些ID写入独立 historical-opportunity-warnings.csv,132行是跨检查点重复证据,不是132个独立新操作。后来成功只能验证后来机会,不能回填过去身份与有效性。Back模型提示单列action_type,不作为待试具体控件。
边界和复用限制
B沿真实确认执行,GUI ID/timestamp/State/version/事件位置任何断裂即右删失;明确页面/Activity退出、其他Ⅰ入口、QuickFix模式移交分段,并保留退出结果。Save/Back不按名称提前切;固定2/5/10/20步仅对照。不同入口的B片段可共享操作,非互斥分区。
除ODK Download、AD Editor、Omni Settings、Scarlet CreateNote、Wiki Search已有页面线索外,其他冻结功能用同Activity保守片段;MainActivity内功能切换可能漏切。complete只表示观察到分段边界,不能当完整业务访问认证。发生关联表不用于严格因果归因或业务覆盖率。
| Run | 冻结功能线索 | 入口次数 | B边界已观察 | 关联新State / 首次ID转换 / 首次局部Concrete | 最多相同完整路径 | 同GUI树 |
|---|---|---|---|---|---|---|
| omninotes-Rep1 | settings | 12 | 10 | 4 / 64 / 77 | 1 | 16 |
| omninotes-Rep1 | set-reminder | 49 | 37 | 19 / 162 / 165 | 7 | 29 |
| omninotes-Rep1 | attachment | 40 | 38 | 5 / 50 / 51 | 17 | 5 |
| omninotes-Rep1 | search-notes | 68 | 55 | 30 / 158 / 166 | 2 | 40 |
| omninotes-Rep2 | search-notes | 127 | 75 | 29 / 162 / 166 | 13 | 31 |
| omninotes-Rep2 | attachment | 21 | 18 | 9 / 50 / 41 | 2 | 2 |
| omninotes-Rep2 | settings | 9 | 9 | 9 / 56 / 53 | 1 | 12 |
| omninotes-Rep2 | set-reminder | 21 | 19 | 20 / 154 / 161 | 1 | 14 |
| odkcollect-Rep1 | download | 121 | 112 | 5 / 20 / 12 | 77 | 0 |
| odkcollect-Rep1 | drafts | 121 | 118 | 0 / 2 / 2 | 116 | 0 |
| odkcollect-Rep1 | start-new-form | 121 | 119 | 0 / 3 / 2 | 117 | 0 |
| odkcollect-Rep1 | settings | 2 | 1 | 3 / 9 / 9 | 1 | 5 |
| odkcollect-Rep2 | drafts | 109 | 105 | 1 / 4 / 5 | 80 | 0 |
| odkcollect-Rep2 | start-new-form | 109 | 104 | 2 / 11 / 13 | 78 | 0 |
| odkcollect-Rep2 | download | 109 | 96 | 2 / 11 / 8 | 64 | 0 |
| odkcollect-Rep2 | settings | 3 | 2 | 6 / 40 / 43 | 1 | 9 |
| scarletnotes-Rep1 | create-note-empty-state | 27 | 22 | 11 / 165 / 358 | 2 | 130 |
| scarletnotes-Rep1 | search-notes | 34 | 32 | 17 / 110 / 121 | 2 | 34 |
| scarletnotes-Rep1 | settings | 16 | 13 | 11 / 87 / 97 | 1 | 13 |
| scarletnotes-Rep2 | create-note-empty-state | 134 | 132 | 0 / 10 / 8 | 66 | 1 |
| scarletnotes-Rep2 | search-notes | 98 | 93 | 8 / 77 / 86 | 57 | 27 |
| scarletnotes-Rep2 | settings | 99 | 93 | 11 / 87 / 79 | 61 | 7 |
| wikipedia-Rep1 | article-gallery | 9 | 8 | 7 / 39 / 40 | 1 | 0 |
| wikipedia-Rep1 | find-in-article | 24 | 21 | 26 / 68 / 80 | 1 | 15 |
| wikipedia-Rep1 | global-search | 29 | 22 | 22 / 98 / 98 | 1 | 32 |
| wikipedia-Rep1 | reading-theme | 8 | 7 | 12 / 73 / 73 | 1 | 1 |
| wikipedia-Rep1 | edit-article | 7 | 4 | 11 / 50 / 49 | 1 | 0 |
| wikipedia-Rep2 | global-search | 55 | 48 | 35 / 146 / 155 | 1 | 45 |
| wikipedia-Rep2 | find-in-article | 17 | 17 | 7 / 23 / 30 | 1 | 3 |
| wikipedia-Rep2 | reading-theme | 12 | 9 | 17 / 101 / 95 | 1 | 1 |
| wikipedia-Rep2 | article-gallery | 6 | 5 | 3 / 19 / 20 | 1 | 6 |
| wikipedia-Rep2 | edit-article | 5 | 5 | 15 / 69 / 67 | 1 | 0 |
| activitydiary-Rep1 | add-activity | 56 | 46 | 5 / 83 / 142 | 2 | 5 |
| activitydiary-Rep1 | edit-existing-activity | 81 | 72 | 15 / 124 / 183 | 1 | 55 |
| activitydiary-Rep1 | settings | 22 | 18 | 18 / 148 / 145 | 1 | 18 |
| activitydiary-Rep1 | manage-activities | 4 | 4 | 1 / 3 / 2 | 2 | 0 |
| activitydiary-Rep2 | add-activity | 63 | 52 | 9 / 96 / 93 | 6 | 9 |
| activitydiary-Rep2 | edit-existing-activity | 101 | 98 | 4 / 116 / 115 | 11 | 65 |
| activitydiary-Rep2 | manage-activities | 6 | 6 | 2 / 7 / 6 | 1 | 1 |
| activitydiary-Rep2 | settings | 12 | 10 | 11 / 110 / 117 | 1 | 42 |
S/T/C列是去重执行集合中全run首次观察事件数,退出结果可在内;跨功能行可能重叠,不求和当总覆盖。查看器可逐次检查动作、树、边界和未来验证。