@wenathlan/saddle 1.8.16 → 1.8.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +38 -13
- package/dist/apps/registry.d.ts +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/isolation/contracts.d.ts +118 -0
- package/dist/isolation/contracts.d.ts.map +1 -0
- package/dist/isolation/contracts.js +84 -0
- package/dist/isolation/contracts.js.map +1 -0
- package/dist/mcp/server.d.ts +2 -2
- package/dist/scrape/robots.js +1 -1
- package/docs/artifactavailability.md +18 -2
- package/docs/containerplatforms-1.8.17.md +29 -0
- package/docs/releasenotes-1.8.16.md +6 -2
- package/docs/releasenotes-1.8.17.md +43 -0
- package/docs/releasenotes-1.8.18.md +32 -0
- package/docs/research-1.8.18-isolation.md +43 -0
- package/docs/saddle.archive.1.8.17.tar.gz.gpg +0 -0
- package/docs/todo-1.8.16.md +92 -8
- package/docs/todo-1.8.18.md +152 -0
- package/docs/workflowoperations.md +32 -0
- package/extension/manifest.json +1 -1
- package/package.json +3 -2
- package/docs/logs/.gitkeep +0 -0
- package/docs/plans/00.index.md +0 -50
- package/docs/plans/01.architecture.md +0 -86
- package/docs/plans/02.research.computer.use.md +0 -58
- package/docs/plans/03.research.captcha.bypass.md +0 -68
- package/docs/plans/04.research.sandbox.ai.md +0 -52
- package/docs/plans/05.capture.platform.md +0 -57
- package/docs/plans/06.dependencies.md +0 -97
- package/docs/plans/07.captcha.test.page.md +0 -41
- package/docs/plans/08.production.infra.md +0 -70
- package/docs/plans/09.database.schema.md +0 -121
- package/docs/plans/10.cloudinary.storage.md +0 -57
- package/docs/plans/11.movement.logs.json.md +0 -72
- package/docs/plans/12.research.atlas.agent.browser.md +0 -79
- package/docs/plans/13.research.anti.detection.md +0 -898
- package/docs/plans/14.research.proxy.md +0 -1495
- package/docs/plans/15.research.retry.rate.limit.md +0 -1958
- package/docs/plans/16.research.crawling.md +0 -1417
- package/docs/plans/17.research.caching.md +0 -1610
- package/docs/plans/18.research.content.extraction.md +0 -1952
- package/docs/plans/19.research.errors.events.md +0 -1523
- package/docs/plans/20.research.zod.validation.md +0 -1350
- package/docs/plans/21.research.batch.concurrency.md +0 -1888
- package/docs/plans/22.research.universal.runtime.md +0 -944
- package/docs/plans/23.research.ai.integration.md +0 -1465
- package/docs/plans/24.research.memory.persistence.md +0 -1979
- package/docs/plans/25.research.server.api.md +0 -342
- package/docs/plans/26.research.compilation.md +0 -249
- package/docs/plans/27.research.html.parsing.md +0 -251
- package/docs/plans/28.action.plan.md +0 -50
- package/docs/plans/29.api.reference.md +0 -174
- package/docs/plans/30.architecture.plan.md +0 -94
- package/docs/plans/31.auditoria.dados.md +0 -163
- package/docs/plans/32.bots.automacao.computacional.md +0 -214
- package/docs/plans/33.bots.codigo.revisao.md +0 -220
- package/docs/plans/34.bots.seguranca.cicd.md +0 -366
- package/docs/plans/35.comparativo.concorrencia.md +0 -464
- package/docs/plans/36.computational.memory.md +0 -340
- package/docs/plans/37.deploystrategy.md +0 -394
- package/docs/plans/38.flow.md +0 -155
- package/docs/plans/39.multi.platform.bot.md +0 -252
- package/docs/plans/40.npm.publish.md +0 -250
- package/docs/plans/41.o.que.falta.md +0 -407
- package/docs/plans/42.pesquisa.concorrencia.md +0 -721
- package/docs/plans/43.plan.universal.architecture.md +0 -496
- package/docs/plans/44.reference.md +0 -100
- package/docs/plans/45.robotarchitecture.md +0 -237
- package/docs/plans/46.scdnintegration.md +0 -284
- package/docs/plans/47.multiforge.readme.md +0 -129
- package/docs/plans/48.theory.v4.repo.os.md +0 -152
- package/docs/plans/49.third.party.infra.md +0 -12
- package/docs/plans/50.file.as.compute.md +0 -39
- package/docs/plans/51.architecture.virtual.processor.md +0 -80
- package/docs/plans/52.manifesto.v8.md +0 -11
- package/docs/plans/58.cdn.list.md +0 -23
- package/docs/plans/59.sql.frameworks.md +0 -33
- package/docs/plans/60.sql.thirdparty.md +0 -26
- package/docs/plans/61.objective.multiforge.md +0 -63
- package/docs/plans/62.huggingface.upload.md +0 -26
- package/docs/plans/63.kaggle.upload.md +0 -24
- package/docs/plans/64.npm.storage.md +0 -30
- package/docs/plans/65.rclone.terabox.md +0 -32
- package/docs/plans/66.buckets.and.models.todo.md +0 -14
- package/docs/plans/67.database.todo.md +0 -13
- package/docs/plans/68.deploy.packages.todo.md +0 -12
- package/docs/plans/69.report.human.operator.md +0 -133
- package/docs/plans/70.report.brain2qwerty.ems.md +0 -135
- package/docs/plans/71.report.hd.infinito.vram.md +0 -155
- package/docs/plans/72.plan.hd.infinito.node.md +0 -146
- package/docs/plans/73.plan.scifi.repos.md +0 -125
- package/docs/plans/74.000.manifesto.v8.flat.2..md +0 -11
- package/docs/plans/README.md +0 -489
- package/docs/plans/aggregate_platforms.mjs +0 -146
- package/docs/plans/examplesession.json +0 -36
- package/docs/plans/missing-facts.md +0 -192
- package/docs/plans/models.md +0 -64
- package/docs/plans/organize.cjs +0 -270
- package/docs/plans/platforms.md +0 -2887
- package/docs/plans/sites.md +0 -31322
- package/docs/sources/farm.py +0 -117
- package/docs/sources/html/saddle1.html +0 -132
- package/docs/sources/html/saddle2.html +0 -157
- package/docs/sources/html/saddle3.html +0 -119
- package/docs/sources/html/saddle4.html +0 -144
- package/docs/sources/html/saddle5.html +0 -72
- package/docs/sources/html/saddle6.html +0 -171
- package/docs/sources/html/saddle7.html +0 -236
- package/docs/sources/saddle.ts +0 -74
- package/docs/sources/schema.prisma +0 -88
- package/docs/sources/script.sh +0 -64
- package/docs/sources/workflows.yml +0 -458
- package/docs/talks1/_body.txt +0 -14
- package/docs/talks1/_index.md +0 -15
- package/docs/talks1/_screenshot.png +0 -0
- package/docs/talks1/assistant-01.md +0 -5
- package/docs/talks1/assistant-02.md +0 -5
- package/docs/talks1/assistant-03.md +0 -531
- package/docs/talks1/assistant-04.md +0 -26
- package/docs/talks1/assistant-05.md +0 -774
- package/docs/talks1/assistant-06.md +0 -1718
- package/docs/talks1/scrape-share.cjs +0 -185
- package/docs/talks1/scrape-share.ts +0 -183
- package/docs/talks1/user-01.md +0 -3
- package/docs/talks1/user-02.md +0 -3
- package/docs/talks1/user-03.md +0 -88
- package/docs/talks1/user-04.md +0 -3
- package/docs/talks1/user-05.md +0 -3
- package/docs/talks1/user-06.md +0 -88
- package/docs/talks1/user-07.md +0 -88
- package/docs/talks2/_body.txt +0 -14
- package/docs/talks2/_index.md +0 -16
- package/docs/talks2/_screenshot.png +0 -0
- package/docs/talks2/assistant-01.md +0 -5
- package/docs/talks2/assistant-02.md +0 -5
- package/docs/talks2/assistant-03.md +0 -424
- package/docs/talks2/assistant-04.md +0 -598
- package/docs/talks2/assistant-05.md +0 -1280
- package/docs/talks2/assistant-06.md +0 -1227
- package/docs/talks2/assistant-07.md +0 -1252
- package/docs/talks2/user-01.md +0 -3
- package/docs/talks2/user-02.md +0 -3
- package/docs/talks2/user-03.md +0 -88
- package/docs/talks2/user-04.md +0 -88
- package/docs/talks2/user-05.md +0 -88
- package/docs/talks2/user-06.md +0 -88
- package/docs/talks2/user-07.md +0 -3
- package/docs/talks3/_body.txt +0 -467
- package/docs/talks3/_index.md +0 -10
- package/docs/talks3/_screenshot.png +0 -0
- package/docs/talks3/assistant-01.md +0 -417
- package/docs/talks3/assistant-02.md +0 -417
- package/docs/talks3/assistant-03.md +0 -29
- package/docs/talks3/assistant-04.md +0 -727
- package/docs/talks3/user-01.md +0 -88
- package/docs/talks3/user-02.md +0 -88
- package/docs/talks3/user-03.md +0 -3
- package/docs/talks3/user-04.md +0 -3
- package/docs/talks4/_body.txt +0 -14
- package/docs/talks4/_index.md +0 -12
- package/docs/talks4/_screenshot.png +0 -0
- package/docs/talks4/assistant-01.md +0 -5
- package/docs/talks4/assistant-02.md +0 -5
- package/docs/talks4/assistant-03.md +0 -35
- package/docs/talks4/assistant-04.md +0 -512
- package/docs/talks4/assistant-05.md +0 -599
- package/docs/talks4/user-01.md +0 -3
- package/docs/talks4/user-02.md +0 -3
- package/docs/talks4/user-03.md +0 -88
- package/docs/talks4/user-04.md +0 -88
- package/docs/talks4/user-05.md +0 -7
- package/docs/talks5/_body.txt +0 -14
- package/docs/talks5/_index.md +0 -13
- package/docs/talks5/_screenshot.png +0 -0
- package/docs/talks5/assistant-01.md +0 -5
- package/docs/talks5/assistant-02.md +0 -5
- package/docs/talks5/assistant-03.md +0 -690
- package/docs/talks5/assistant-04.md +0 -758
- package/docs/talks5/assistant-05.md +0 -974
- package/docs/talks5/user-01.md +0 -3
- package/docs/talks5/user-02.md +0 -3
- package/docs/talks5/user-03.md +0 -105
- package/docs/talks5/user-04.md +0 -105
- package/docs/talks5/user-05.md +0 -63
- package/docs/talks5/user-06.md +0 -105
- package/docs/talks6/_body.txt +0 -14
- package/docs/talks6/_index.md +0 -9
- package/docs/talks6/_screenshot.png +0 -0
- package/docs/talks6/assistant-01.md +0 -5
- package/docs/talks6/assistant-02.md +0 -5
- package/docs/talks6/assistant-03.md +0 -1499
- package/docs/talks6/user-01.md +0 -3
- package/docs/talks6/user-02.md +0 -3
- package/docs/talks6/user-03.md +0 -88
- package/docs/talks6/user-04.md +0 -88
- package/docs/talks7/_body.txt +0 -14
- package/docs/talks7/_index.md +0 -10
- package/docs/talks7/_screenshot.png +0 -0
- package/docs/talks7/assistant-01.md +0 -5
- package/docs/talks7/assistant-02.md +0 -5
- package/docs/talks7/assistant-03.md +0 -523
- package/docs/talks7/assistant-04.md +0 -617
- package/docs/talks7/user-01.md +0 -3
- package/docs/talks7/user-02.md +0 -3
- package/docs/talks7/user-03.md +0 -105
- package/docs/talks7/user-04.md +0 -67
- package/docs/talks8/conversa1.txt +0 -1322
- package/docs/talks8/conversa2.txt +0 -237
- package/docs/talks9/Beyond the Obvious_ 50 Plataformas Auto-Hospedadas de Forja de C/303/263digo para Al/303/251m de Gitea e GitLab.md" +0 -174
- package/docs/talks9/De NPM a Multi-Linguagem_ Uma Arquitetura T/303/251cnica para a Execu/303/247/303/243o Integrada de C/303/263digo no Ecossistema Node.js.md" +0 -59
- package/docs/talks9/De NPM a VMs Virtuais_ Uma An/303/241lise Arquitet/303/264nica para a Realiza/303/247/303/243o do Ciclo de Vida do Projeto SADDLE.md" +0 -91
- package/docs/talks9/Mapeamento da Engrenagem Computacional_ Uma Arquitetura para Execu/303/247/303/243o Isolada e Persist/303/252ncia em Ambientes Distribu/303/255dos.md" +0 -116
- package/docs/talks9/O Cen/303/241rio Pr/303/241tico do SADDLE_ Uma An/303/241lise de Viabilidade e Modelo de Ciclo de Vida Integrado.md" +0 -128
- package/docs/talks9/README (2).md +0 -489
- package/docs/talks9/README.md +0 -198
- package/docs/talks9/Viabilidade do Saddle_ Uma An/303/241lise T/303/251cnica da Transforma/303/247/303/243o de Armazenamento Remoto em Mem/303/263ria Computacional.md" +0 -80
- package/docs/talks9/conversa.txt +0 -544
- package/docs/talks9/other (2).md +0 -39
- package/docs/talks9/other.md +0 -57
- package/docs/talks9/outro.txt +0 -24
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# Saddle 1.8.18
|
|
2
|
+
|
|
3
|
+
Saddle 1.8.18 adds a data-only isolation planning surface and a single-site playground. It does not turn the package into a VPS, a micro-VM, a database host, a remote browser, or an executor. A binary, browser, container, provider, storage, database, network, or host operation remains unavailable until an operator supplies a compatible adapter, an explicit policy and a matching approval. The initial web projection uses a fixed safe fixture and produces only plans, denials or caller-owned handoffs.
|
|
4
|
+
|
|
5
|
+
## Changes
|
|
6
|
+
|
|
7
|
+
| Area | Change |
|
|
8
|
+
| --- | --- |
|
|
9
|
+
| Isolation contracts | Adds `executionrequest`, `executiondecision` and `executionhandoff` to normalize intent, make the default denial explicit and render an adapter handoff without invoking it. |
|
|
10
|
+
| Internal API | Adds `internalenvelope` and `internalapi` for typed gateway, planning, policy, materialization, execution, persistence and evidence projections. |
|
|
11
|
+
| Package surface | Adds `@wenathlan/saddle/isolation` as a narrow browser-safe subpath instead of requiring the complete root export graph. |
|
|
12
|
+
| Default posture | Rejects effects without matching effect policy, target policy, approval, adapter capability and named adapter owner. The decision contains no effect invocation. |
|
|
13
|
+
| Playground | Adds the unified `/playground` route under `web/`, showing a fixed descriptor, six internal boundaries and the difference between denial and a still-non-executing handoff. |
|
|
14
|
+
| Versioning | Aligns active package, registry, native, extension, crawler, Capacitor and iOS metadata to `1.8.18`, with iOS build number `1008018`. |
|
|
15
|
+
|
|
16
|
+
## Operational boundary
|
|
17
|
+
|
|
18
|
+
An in-memory object, an in-memory database or a JavaScript data structure runs on the resources of its process host. It is not a VPS or a micro-VM. A remote browser, OCI sandbox, WebAssembly runtime and KVM micro-VM likewise require a real operator host and resource budget. The library does not select, pay for, create or use any such infrastructure. The new contracts make those future integration points explicit without activating them.
|
|
19
|
+
|
|
20
|
+
## Expected artifact matrix
|
|
21
|
+
|
|
22
|
+
The tag-driven release workflow derives names from `v1.8.18`. If the platform workflows complete, the candidate matrix contains the following 38 release assets. This is an expected matrix, not a claim that assets, registry entries, signatures, scans or platform execution have already been independently verified.
|
|
23
|
+
|
|
24
|
+
| Class | Expected assets |
|
|
25
|
+
| --- | --- |
|
|
26
|
+
| Primary artifacts | `saddle.aab.1.8.18.aab`, `saddle.apk.1.8.18.apk`, `saddle.browser.1.8.18.arm64.app.zip`, `saddle.browser.1.8.18.arm64.appimage`, `saddle.browser.1.8.18.arm64.deb`, `saddle.browser.1.8.18.arm64.dmg`, `saddle.browser.1.8.18.arm64.exe`, `saddle.browser.1.8.18.arm64.msi`, `saddle.browser.1.8.18.arm64.rpm`, `saddle.browser.1.8.18.x64.app.zip`, `saddle.browser.1.8.18.x64.appimage`, `saddle.browser.1.8.18.x64.deb`, `saddle.browser.1.8.18.x64.dmg`, `saddle.browser.1.8.18.x64.exe`, `saddle.browser.1.8.18.x64.msi`, `saddle.browser.1.8.18.x64.rpm`, `saddle.browser.1.8.18.x86.exe`, `saddle.browser.1.8.18.x86.msi`, `saddle.container.1.8.18.tar.gz`, `saddle.extension.1.8.18.zip` |
|
|
27
|
+
| Manifests | `manifest.android.1.8.18.json`, `manifest.container.1.8.18.json`, `manifest.desktop.linux.arm64.1.8.18.json`, `manifest.desktop.linux.x64.1.8.18.json`, `manifest.desktop.macos.arm64.1.8.18.json`, `manifest.desktop.macos.x64.1.8.18.json`, `manifest.desktop.windows.arm64.1.8.18.json`, `manifest.desktop.windows.x64.1.8.18.json`, `manifest.desktop.windows.x86.1.8.18.json` |
|
|
28
|
+
| Checksums | `sha256.android.1.8.18`, `sha256.container.1.8.18`, `sha256.desktop.linux.arm64.1.8.18`, `sha256.desktop.linux.x64.1.8.18`, `sha256.desktop.macos.arm64.1.8.18`, `sha256.desktop.macos.x64.1.8.18`, `sha256.desktop.windows.arm64.1.8.18`, `sha256.desktop.windows.x64.1.8.18`, `sha256.desktop.windows.x86.1.8.18` |
|
|
29
|
+
|
|
30
|
+
## Verification boundary
|
|
31
|
+
|
|
32
|
+
The deterministic engine suite has passed 139 active tests for this candidate. The web TypeScript check and static build have passed, and the `/playground` route was manually verified in its denial and handoff-projection states. Registry availability, image manifest inspection, scan results, signing status, SBOM validation, Android signing, iOS artifacts and attached release assets must be recorded only after their relevant workflow outputs independently complete.
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# 1.8.18 isolation research record
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
This record classifies operational prerequisites for the execution adapters proposed for Saddle 1.8.18. It is evidence for planning only; it does not add a provider dependency, provision infrastructure, or assert that Saddle already operates any of the listed systems.
|
|
6
|
+
|
|
7
|
+
## Findings
|
|
8
|
+
|
|
9
|
+
| Technology | Verified finding | Saddle disposition |
|
|
10
|
+
| --- | --- | --- |
|
|
11
|
+
| Neko | Neko is a self-hosted remote browser or desktop built around container images and WebRTC. Operation requires image selection, networking, authentication, and usually a TURN or port-routing strategy. Browser persistence and file access require explicit policy or volume configuration. | Treat as a caller-owned remote-browser adapter candidate. The root library can describe requirements and validate a receipt; it cannot claim remote browser isolation without a configured operator deployment. |
|
|
12
|
+
| gVisor | gVisor supplies the OCI `runsc` runtime for sandboxed containers. It has its own compatibility and performance boundaries and is not a conventional virtual machine. | Treat as a caller-owned OCI isolation adapter candidate. A plan must declare the image, mount, network, resource and receipt policy before dispatch. |
|
|
13
|
+
| Firecracker | Firecracker runs KVM micro-VMs and requires host KVM access, a compatible Linux architecture, kernel image, root filesystem image, and production jailer configuration. | Treat as a caller-owned micro-VM adapter candidate requiring dedicated host infrastructure. It cannot run in the transport-neutral root or be promised by the static website. |
|
|
14
|
+
|
|
15
|
+
## Planning implication
|
|
16
|
+
|
|
17
|
+
The feasible 1.8.18 foundation is a serializable, denied-by-default execution plan plus adapter interfaces and capability receipts. The initial `web/` playground can let an operator create and inspect plans, binary metadata and policy outcomes with safe local fixtures. It must not execute uploaded binaries, create sandboxes, attach to Docker, start browser sessions, manage credentials, or expose a network target without a separately configured backend.
|
|
18
|
+
|
|
19
|
+
## Submitted-material synthesis
|
|
20
|
+
|
|
21
|
+
The submitted conversation records request that the former multi-site design be consolidated into one `web/` site. The useful architectural intent is a single user-facing surface that has internal API boundaries corresponding to a gateway, a plan coordinator, a working-set/materialization layer, an executor boundary, a persistence boundary, and a receipt/audit projection. That intent is compatible with Saddle's contract model when each boundary is represented by a deterministic in-memory demonstration adapter by default.
|
|
22
|
+
|
|
23
|
+
The same records contain several claims that must not become product statements. A static site cannot be a server, a VPS, or a micro-VM by itself. An in-memory filesystem, SQLite `:memory:`, PouchDB memory adapter, or JavaScript object graph still consumes the memory and CPU of whichever process hosts it; it provides data isolation or a logical model, not no-hardware computation. An actual remote browser, binary processor, container, gVisor sandbox, or Firecracker micro-VM necessarily runs on some host and consumes its resources. A persistent embedded database necessarily consumes the host's storage. Those capabilities therefore remain disabled unless the caller explicitly provides an adapter and an approval; the default playground will demonstrate planning and denial paths only.
|
|
24
|
+
|
|
25
|
+
The requested product default is consequently recorded as: no user-machine access, no implicit network call, no provider account, no paid product, no free-tier product, no local disk use, no binary execution, no browser launch, and no remote dispatch. A caller may add a local, remote, storage, database, browser, container, or micro-VM adapter later, but the receipt must identify that it was enabled and what resources it is permitted to use.
|
|
26
|
+
|
|
27
|
+
## Submitted material provenance
|
|
28
|
+
|
|
29
|
+
1. User-provided `CONVERSA25.txt`
|
|
30
|
+
2. User-provided `CONVERSA26.txt`
|
|
31
|
+
3. User-provided `CONVERSA27.txt`
|
|
32
|
+
4. User-provided `conversa.txt`
|
|
33
|
+
5. User-provided `pasted_content.txt`
|
|
34
|
+
|
|
35
|
+
## Playground verification
|
|
36
|
+
|
|
37
|
+
The unified `/playground` route was built and inspected through a temporary preview. The rendered page presents the six internal boundaries, the fixed binary descriptor, a default `EXECUTION_POLICY_DENIED` projection with an empty effects list, and an optional handoff projection that remains explicitly non-executing. The navigation includes the new Playground route and the page copy distinguishes internal typed envelopes from hidden endpoints, second sites, remote machines, or active infrastructure. The responsive layout presents the boundary map as an editorial six-stage band and places the policy-state projection beside its two state controls without visually implying that either button starts an executor. Selecting the optional state changed the projection to `CALLER_ADAPTER_REQUIRED` with `caller-delegates` and an empty effects array; it did not add a real adapter or initiate an operation.
|
|
38
|
+
|
|
39
|
+
## Sources
|
|
40
|
+
|
|
41
|
+
1. [Neko documentation](https://neko.m1k1o.net/docs/v2)
|
|
42
|
+
2. [Firecracker getting started guide](https://github.com/firecracker-microvm/firecracker/blob/main/docs/getting-started.md)
|
|
43
|
+
3. [gVisor documentation](https://gvisor.dev/docs/)
|
|
Binary file
|
package/docs/todo-1.8.16.md
CHANGED
|
@@ -634,18 +634,102 @@
|
|
|
634
634
|
- [ ] Update package exports only for stable, explicitly documented additive contracts.
|
|
635
635
|
- [ ] Update type declarations and package-import tests for every export-map change.
|
|
636
636
|
- [ ] Update changelog.md from verified completed work rather than the original research hypothesis.
|
|
637
|
-
- [
|
|
638
|
-
- [
|
|
639
|
-
- [
|
|
640
|
-
- [
|
|
637
|
+
- [x] Create docs/releasenotes-1.8.16.md only after artifact inventory, signing status, workflows, and registry results are known. The final release record lists 38 attached assets and the manual Android fallback state.
|
|
638
|
+
- [x] Update docs/artifactavailability.md only from generated and remotely verified release evidence. The 1.8.15 and 1.8.16 matrices use published release inventories.
|
|
639
|
+
- [x] Run npm test, legacy tests, web typecheck, web build, formatcheck, package dry-run, high-severity audit, and flat-native validation on the final candidate. The candidate passed 136 active and 69 legacy tests with all required gates.
|
|
640
|
+
- [x] Review CI workflows for tag-derived versioning, no hardcoded release version, no exposed secrets, and no unverified publish claim. Tag-triggered registry and asset workflows completed with explicit signing-state boundaries.
|
|
641
641
|
- [ ] Review the final diff for forbidden src directories, generated output, underscore artifact names, stale package identities, misleading security claims, and unsupported provider promises.
|
|
642
642
|
- [ ] Bump all active manifests to 1.8.16 only after all selected features and gates are complete.
|
|
643
643
|
- [ ] Update the iOS build number to 1008016 only during the validated 1.8.16 manifest bump.
|
|
644
|
-
- [
|
|
645
|
-
- [
|
|
646
|
-
- [
|
|
647
|
-
- [
|
|
644
|
+
- [x] Create the 1.8.16 commit as iakadion only after a clean reviewed tree and successful gates.
|
|
645
|
+
- [x] Push main only after the validated commit and release evidence are ready.
|
|
646
|
+
- [x] Create immutable tag v1.8.16 only after confirming no historical tag is changed.
|
|
647
|
+
- [x] Create the GitHub release only with evidence-backed notes and actual asset names.
|
|
648
648
|
- [ ] Verify GHCR first, then GitHub Packages npm, npmjs, Maven, NuGet, and RubyGems with remote result evidence.
|
|
649
649
|
- [ ] Verify container pull, OCI label, and smoke-test results after GHCR publication.
|
|
650
650
|
- [ ] Record unavailable artifacts and caller-owned signing steps as unavailable instead of treating CI output as trusted distribution.
|
|
651
651
|
- [ ] Mark each completed 1.8.16 checklist task only after its evidence is linked from the appropriate research, implementation, test, or release record.
|
|
652
|
+
|
|
653
|
+
## 9. Workflow hygiene and cache retention
|
|
654
|
+
|
|
655
|
+
- [x] Inventory every YAML file under `.github`, distinguishing workflow definitions, composite-action metadata, and service-owned configuration paths. The inventory found 18 workflow definitions, two composite-action metadata files, and the required Dependabot configuration.
|
|
656
|
+
- [x] Verify GitHub's current required paths for workflow files, composite actions, and Dependabot configuration before moving any YAML file. The resulting path rationale is documented in `docs/workflowoperations.md`.
|
|
657
|
+
- [x] Standardize workflow definitions under `.github/workflows` without moving composite action metadata out of its executable action directory. Existing workflow definitions already use lower-case `.yml` files in that canonical directory.
|
|
658
|
+
- [x] Keep Dependabot configuration in its GitHub-required location and document why it is not a runnable workflow.
|
|
659
|
+
- [x] Review the mobile workflow triggers and ensure release Android artifacts can be produced automatically with an explicit non-production signing state when caller secrets are unavailable.
|
|
660
|
+
- [x] Preserve production Android signing as caller-owned when all configured signing secrets are present.
|
|
661
|
+
- [x] Inventory existing GitHub Actions caches by key, size, ref, last-access time, and workflow source before changing retention behavior. The initial inventory contained 85 entries and 7,785,944,423 reported bytes, dominated by CodeQL overlays.
|
|
662
|
+
- [x] Add a least-privilege cache-retention workflow that deletes only caches from this repository after a documented age threshold and never deletes artifacts or release assets.
|
|
663
|
+
- [x] Add bounded cache cleanup after completed workflows only where it does not remove a cache required by concurrent work. The dry-run and the successful applied run left 13 listed cache entries; repository usage totals may take several minutes to refresh.
|
|
664
|
+
- [x] Add workflow validation and deterministic tests or inspections for YAML syntax, permissions, triggers, and cache deletion scope.
|
|
665
|
+
- [x] Record the resulting cache policy, manual fallback, and non-goals in release or operational documentation.
|
|
666
|
+
|
|
667
|
+
## 10. Version 1.8.17 container platform expansion
|
|
668
|
+
|
|
669
|
+
- [x] Inventory the platforms and digests present in the published 1.8.16 container manifest before changing the build matrix. The release manifest identified a container archive and image reference but did not claim an OCI platform index.
|
|
670
|
+
- [x] Compare requested operating-system and architecture combinations against Docker Buildx, OCI image-index, Node runtime, and runner support.
|
|
671
|
+
- [x] Distinguish publishable Linux OCI variants from Windows container variants that require a compatible Windows base image and Windows runner.
|
|
672
|
+
- [x] Avoid claiming an `unknown` platform as a runnable operating-system or architecture target.
|
|
673
|
+
- [x] Select a supported 1.8.17 Linux multi-architecture matrix and record rejected or deferred combinations with their technical reason in `docs/containerplatforms-1.8.17.md`.
|
|
674
|
+
- [x] Review the current container workflow, image base, tags, OCI labels, post-push pull, label verification, and smoke test before modifying it.
|
|
675
|
+
- [x] Extend the container workflow only for platform combinations that can build and execute the packaged Saddle runtime: `linux/amd64`, `linux/arm64`, and `linux/ppc64le`.
|
|
676
|
+
- [x] Keep release-tag version derivation, registry credentials, permissions, and the container-first documentation order intact.
|
|
677
|
+
- [x] Update every active 1.8.16 version metadata location to 1.8.17 after the implementation scope is validated.
|
|
678
|
+
- [x] Update release notes, changelog, registry and artifact documentation with an accurate platform matrix and no unverified image claims.
|
|
679
|
+
- [x] Validate YAML formatting, package and engine gates, workflow logic, package dry-run, high-severity audit, flat-native validation, and whitespace before creating the 1.8.17 tag.
|
|
680
|
+
- [x] Publish and inspect the 1.8.17 release, all registry workflows, container manifest platforms, post-push label checks, and smoke-test results. The public release contains 38 assets; GHCR run `31847952976` verified `linux/amd64`, `linux/arm64`, and `linux/ppc64le` and completed the amd64 label and CLI smoke checks.
|
|
681
|
+
|
|
682
|
+
## 11. Version 1.8.17 README consolidation and archival request
|
|
683
|
+
|
|
684
|
+
- [x] Inventory every historical `README.md` revision with Git before selecting durable content for the current README. The root history contains 41 revisions and separate platform README paths.
|
|
685
|
+
- [x] Consolidate still-relevant capabilities, installation paths, modes, packaging surfaces, and limits into an external consolidation record while preserving the README scope reference.
|
|
686
|
+
- [x] Update active release references to `1.8.17` while preserving historical release records as history rather than overwriting them.
|
|
687
|
+
- [ ] Remove direct links or filename references to documents inside `docs/` from the README; retain only appropriate root-document references.
|
|
688
|
+
- [x] Inventory the exact user-requested documentation range before any archive operation and exclude the archive itself from recursive inputs.
|
|
689
|
+
- [x] Receive a user-supplied passphrase before creating an encrypted archive; do not generate an unrecoverable undocumented credential.
|
|
690
|
+
- [x] Create and verify the requested encrypted archive only after the passphrase and archive scope are explicit. The verified list contains 199 files and 13 directory entries with unrelated assets excluded.
|
|
691
|
+
- [x] Preserve the current README as a non-deterministic scope reference; record the historical consolidation and active 1.8.17 reference matrix outside that file.
|
|
692
|
+
- [x] Build the encrypted package from `docs/logs`, `docs/plans`, `docs/sources`, and `docs/talks1` through `docs/talks9`, excluding unrelated `docs/assets` content and the generated archive itself.
|
|
693
|
+
|
|
694
|
+
## 12. Encrypted documentation relocation
|
|
695
|
+
|
|
696
|
+
- [x] Move the verified encrypted package from the repository root into `docs/` without changing its bytes.
|
|
697
|
+
- [x] Remove only `docs/logs`, `docs/plans`, `docs/sources`, and `docs/talks1` through `docs/talks9` after the package is present at its destination.
|
|
698
|
+
- [x] Verify that `docs/assets` and all remaining top-level documentation files survive the removal before committing.
|
|
699
|
+
|
|
700
|
+
## 13. README version-reference audit
|
|
701
|
+
|
|
702
|
+
- [x] Enumerate every version reference in the current README and every historical root README revision with Git. The root history contains 41 revisions and the current README retains 1.8.14 scope statements.
|
|
703
|
+
- [x] Distinguish active metadata from immutable historical release evidence and identify stale version statements.
|
|
704
|
+
- [x] Preserve the current README as a scope reference while recording the complete capability consolidation outside it.
|
|
705
|
+
- [x] Ensure the external consolidation uses the active 1.8.17 matrix and does not contain direct links to materials inside `docs/`.
|
|
706
|
+
- [x] Validate and commit the version-reference audit without rewriting the README scope document.
|
|
707
|
+
|
|
708
|
+
## 14. Whole-repository active-version audit
|
|
709
|
+
|
|
710
|
+
- [x] Enumerate every tracked current-file reference to a pre-1.8.17 version and classify it as active metadata, test fixture, changelog, release evidence, research, or scope text.
|
|
711
|
+
- [x] Inspect every historical root README revision for durable behavior not yet represented in the external consolidation.
|
|
712
|
+
- [x] Update any discovered active metadata to 1.8.17 while preserving tests, historical records, and scope references. No old Saddle product metadata remained; the Android build-variable match is an AndroidX dependency.
|
|
713
|
+
- [x] Expand the external consolidation with the complete classification and durable historical behavior, without direct links to internal materials.
|
|
714
|
+
- [x] Validate and commit the whole-repository version audit without reworking the README scope document. The only excluded non-product token is an AndroidX dependency version.
|
|
715
|
+
|
|
716
|
+
## 15. Direct README re-evaluation request
|
|
717
|
+
|
|
718
|
+
- [ ] Inventory the README's release badge, current-scope statements, historical sections, and direct internal references.
|
|
719
|
+
- [ ] Compare every affected section with all historical root README revisions before deciding whether it can represent 1.8.17 truthfully.
|
|
720
|
+
- [ ] Identify the exact set of active release references that could be updated without rewriting the preserved scope document or corrupting historical evidence.
|
|
721
|
+
- [ ] Validate and record the direct README re-evaluation outcome.
|
|
722
|
+
|
|
723
|
+
## 16. npm distribution and 1.8.18 planning base
|
|
724
|
+
|
|
725
|
+
- [x] Inspect the package dry-run contents to confirm which README the npm package distributes and whether a separate distribution document exists. The package contains the root README and the extension README; no separate distribution README exists.
|
|
726
|
+
- [x] Map each durable capability from the 41 historical README revisions into the consolidated planning base for 1.8.18.
|
|
727
|
+
- [x] Record any permitted active metadata alignment separately from the immutable README scope reference.
|
|
728
|
+
- [x] Validate and commit the 1.8.18 planning base without replacing the README scope document.
|
|
729
|
+
|
|
730
|
+
## 17. README publication consolidation request
|
|
731
|
+
|
|
732
|
+
- [x] Build a section-by-section matrix across the 41 root README revisions and the current README.
|
|
733
|
+
- [x] Identify all release references that describe the active package rather than historical evidence or fixture state.
|
|
734
|
+
- [x] Consolidate the README into foundation, engine, productization, API, extension, security, package, development, CLI, repository, history and current-scope sections while preserving historical evidence accurately.
|
|
735
|
+
- [x] Validate the README-facing update through `npm pack --dry-run`; the resulting `@wenathlan/saddle@1.8.17` package contains the root README.
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
# Saddle 1.8.18 — isolated execution and binary-processing plan
|
|
2
|
+
|
|
3
|
+
> This plan contains **920 individual actions**. It uses 92 unchecked work packages, each with ten ordered actions: **inspect, extract, classify, design, implement, test, boundary-test, review, document, and record**. The ten actions apply to the exact subject named by each work package; a package may be marked complete only after all ten actions have evidence.
|
|
4
|
+
|
|
5
|
+
## Completion guardrails
|
|
6
|
+
|
|
7
|
+
| Rule | Requirement |
|
|
8
|
+
| --- | --- |
|
|
9
|
+
| Truthfulness | A contract may describe, plan, validate, or invoke isolation. It must not claim to provide a VPS, micro-VM, browser isolation, persistent database, GPU, signing, or a remote service unless the caller supplies and verifies the corresponding adapter. |
|
|
10
|
+
| Isolation | Untrusted bytes are never executed by the transport-neutral root. Execution requires a caller-owned isolated-runner adapter and an explicit policy. |
|
|
11
|
+
| Storage | Remote storage is durable state, not literal RAM or VRAM. Materialization remains bounded, measurable, and caller-owned. |
|
|
12
|
+
| Effects | Network, browser, container, filesystem, database, credentials, dispatch, retention, and deletion remain explicit privileged effects. |
|
|
13
|
+
| Compatibility | New contracts are additive, TypeScript-first, dependency-free, serializable, root-first, and use deterministic tests. |
|
|
14
|
+
| Publishing | Release work begins only after all gates pass and every version-bearing manifest agrees on `1.8.18`. |
|
|
15
|
+
|
|
16
|
+
## 1. Scope source audit — actions 001–100
|
|
17
|
+
|
|
18
|
+
- [ ] **001–010.** Read README source lines 001–200; extract architecture, mode, and naming requirements.
|
|
19
|
+
- [ ] **011–020.** Read README source lines 201–400; extract execution, binary, and isolation requirements.
|
|
20
|
+
- [ ] **021–030.** Read README source lines 401–600; extract storage, memory, and provider assertions.
|
|
21
|
+
- [ ] **031–040.** Read README source lines 601–800; extract runner, workflow, and deployment assertions.
|
|
22
|
+
- [ ] **041–050.** Read README source lines 801–1000; extract agent, browser, scrape, and bot assertions.
|
|
23
|
+
- [ ] **051–060.** Read README source lines 1001–1200; extract protocol, database, and API assertions.
|
|
24
|
+
- [ ] **061–070.** Read README source lines 1201–1400; extract package, native, and extension assertions.
|
|
25
|
+
- [ ] **071–080.** Read README source lines 1401–1600; extract web, playground, and UI assertions.
|
|
26
|
+
- [ ] **081–090.** Read README source lines 1601–1848; extract release, quality, and governance assertions.
|
|
27
|
+
- [ ] **091–100.** Compare the extracted source claims with current 1.8.17 code, tests, manifests, and shipped artifacts.
|
|
28
|
+
|
|
29
|
+
## 2. Feasibility, terminology, and capability evidence — actions 101–200
|
|
30
|
+
|
|
31
|
+
- [ ] **101–110.** Classify every source claim as shipped, adapter-ready, research-only, deferred, infeasible, or policy-rejected.
|
|
32
|
+
- [ ] **111–120.** Define precise vocabulary for process plan, isolated execution, sandbox adapter, container adapter, micro-VM adapter, and remote runner.
|
|
33
|
+
- [ ] **121–130.** Define precise vocabulary for durable storage, working set, cache, mmap, tmpfs, memory pressure, and materialization.
|
|
34
|
+
- [ ] **131–140.** Define precise vocabulary for binary inspection, binary transform, binary execution, binary artifact, and binary provenance.
|
|
35
|
+
- [ ] **141–150.** Define precise vocabulary for browser transport, browser session, browser isolation, browser action, and browser evidence.
|
|
36
|
+
- [ ] **151–160.** Define precise vocabulary for edge processing, third-party runner, provider chain, job lease, and artifact boundary.
|
|
37
|
+
- [ ] **161–170.** Define a claim-evidence schema that distinguishes declared capability from verified capability and observed result.
|
|
38
|
+
- [ ] **171–180.** Define a capability receipt schema for platform, architecture, isolation mechanism, limits, and adapter identity.
|
|
39
|
+
- [ ] **181–190.** Define a policy vocabulary for allowed, denied, approval-required, unknown, expired, and unsupported execution requests.
|
|
40
|
+
- [ ] **191–200.** Document the non-goals: no false VPS, no hidden credentials, no arbitrary code execution in the root, and no quota evasion.
|
|
41
|
+
|
|
42
|
+
## 3. Execution-policy contracts — actions 201–300
|
|
43
|
+
|
|
44
|
+
- [ ] **201–210.** Design the serializable execution-request contract with input reference, target, policy, and artifact destination.
|
|
45
|
+
- [ ] **211–220.** Design the serializable execution-policy contract with network, filesystem, process, time, memory, and output limits.
|
|
46
|
+
- [ ] **221–230.** Design the serializable execution-plan contract that separates planning from privileged execution.
|
|
47
|
+
- [ ] **231–240.** Design the serializable execution-receipt contract for adapter identity, limits, timings, exit classification, and artifacts.
|
|
48
|
+
- [ ] **241–250.** Design the serializable execution-evidence contract for hashes, logs, retention intent, and verification state.
|
|
49
|
+
- [ ] **251–260.** Design the isolated-runner adapter interface without importing Docker, Firecracker, Playwright, or provider SDKs in the root.
|
|
50
|
+
- [ ] **261–270.** Design the cancellation and unknown-remote-state contract with no false rollback claims.
|
|
51
|
+
- [ ] **271–280.** Design the admission-control contract for queue budget, concurrency budget, working-set budget, and execution quota.
|
|
52
|
+
- [ ] **281–290.** Design the explicit approval token and consent correlation contract for privileged execution requests.
|
|
53
|
+
- [ ] **291–300.** Design deterministic fixture shapes for accepted, denied, expired, unsupported, cancelled, and unknown execution states.
|
|
54
|
+
|
|
55
|
+
## 4. Binary inspection and transformation contracts — actions 301–400
|
|
56
|
+
|
|
57
|
+
- [ ] **301–310.** Define a binary-source contract for inline bytes, durable artifact references, and caller-owned streams.
|
|
58
|
+
- [ ] **311–320.** Define bounded binary metadata inspection based on magic bytes, size, digest, and declared media type.
|
|
59
|
+
- [ ] **321–330.** Define binary classification results for archive, executable, document, image, model, unknown, and malformed input.
|
|
60
|
+
- [ ] **331–340.** Define the binary-transform plan contract with deterministic input, options, cache identity, and output expectations.
|
|
61
|
+
- [ ] **341–350.** Define the transform adapter interface for caller-owned WASM, native, container, or remote execution paths.
|
|
62
|
+
- [ ] **351–360.** Define archive-inspection contracts that list entries and limits without extracting untrusted content.
|
|
63
|
+
- [ ] **361–370.** Define archive-extraction plans that require a caller-owned extraction adapter and explicit path controls.
|
|
64
|
+
- [ ] **371–380.** Define binary-output verification for digest, byte count, media type, expected structure, and provenance.
|
|
65
|
+
- [ ] **381–390.** Define binary-processing failure taxonomy for malformed, oversized, unsupported, denied, timeout, and verification failure.
|
|
66
|
+
- [ ] **391–400.** Define deterministic binary fixtures and fuzz boundaries without storing unsafe executable payloads in the repository.
|
|
67
|
+
|
|
68
|
+
## 5. Working-set, storage, and materialization contracts — actions 401–500
|
|
69
|
+
|
|
70
|
+
- [ ] **401–410.** Define working-set admission estimates for byte size, range support, locality, and required transforms.
|
|
71
|
+
- [ ] **411–420.** Define bounded range materialization plans for local, remote, chunked, and content-addressed storage adapters.
|
|
72
|
+
- [ ] **421–430.** Define cache identity, cache freshness, cache evidence, and caller-owned eviction plans.
|
|
73
|
+
- [ ] **431–440.** Define temporary materialization lifecycle states from planned through verified cleanup intent.
|
|
74
|
+
- [ ] **441–450.** Define storage capability receipts for range reads, writes, integrity checks, regions, and retention constraints.
|
|
75
|
+
- [ ] **451–460.** Define integrity verification for chunks, manifests, content addresses, and reconstructed binary artifacts.
|
|
76
|
+
- [ ] **461–470.** Define storage-pool policy for primary, mirror, fan-out, quorum, repair planning, and no-background-retry limits.
|
|
77
|
+
- [ ] **471–480.** Define memory-pressure decisions that remain declarative and never claim local or remote RAM ownership.
|
|
78
|
+
- [ ] **481–490.** Define storage-to-execution handoff records with bytes, hash, policy identity, and recipient adapter identity.
|
|
79
|
+
- [ ] **491–500.** Define deterministic tests for working-set budgets, range support, corrupt members, and cleanup-plan generation.
|
|
80
|
+
|
|
81
|
+
## 6. Runner, provider-chain, and remote-isolation adapters — actions 501–600
|
|
82
|
+
|
|
83
|
+
- [ ] **501–510.** Define runner capability declarations for process, container, micro-VM, browser, network, and hardware attributes.
|
|
84
|
+
- [ ] **511–520.** Define runner eligibility evaluation with explicit requirements and no provider-specific implicit fallback.
|
|
85
|
+
- [ ] **521–530.** Define deterministic provider-chain selection from declared capabilities, policy, preference, and evidence.
|
|
86
|
+
- [ ] **531–540.** Define runner dispatch plans that remain effect-free until a caller-provided adapter executes them.
|
|
87
|
+
- [ ] **541–550.** Define GitHub Actions runner adapter requirements without treating an ephemeral workflow as a permanent VPS.
|
|
88
|
+
- [ ] **551–560.** Define Forgejo, Gitea, GitLab, Codeberg, and Woodpecker adapter requirements without embedding tokens or endpoints.
|
|
89
|
+
- [ ] **561–570.** Define container-runner adapter requirements for image identity, read-only input, bounded mounts, resource limits, and receipt evidence.
|
|
90
|
+
- [ ] **571–580.** Define micro-VM adapter requirements for kernel/image provenance, CPU/memory limits, network policy, and lifecycle receipt.
|
|
91
|
+
- [ ] **581–590.** Define remote cancellation, observation, and handoff semantics when provider state is delayed, unknown, or unavailable.
|
|
92
|
+
- [ ] **591–600.** Define deterministic fake-runner tests proving planning, policy denial, adapter selection, and receipt validation without remote execution.
|
|
93
|
+
|
|
94
|
+
## 7. Agent browser, scrape, and MCP capability contracts — actions 601–700
|
|
95
|
+
|
|
96
|
+
- [ ] **601–610.** Define browser-session capability receipts for transport, isolation claim, headless state, and permitted actions.
|
|
97
|
+
- [ ] **611–620.** Define browser-action request and evidence contracts for navigation, click, type, capture, and download planning.
|
|
98
|
+
- [ ] **621–630.** Define browser isolation requirements that require a caller-owned transport and cannot be inferred from a UI label.
|
|
99
|
+
- [ ] **631–640.** Define snapshot, frame, tab, and context-budget handoffs between browser adapters and agent logic.
|
|
100
|
+
- [ ] **641–650.** Define scrape-request consent, robots, freshness, cache, provenance, and bounded-output policy contracts.
|
|
101
|
+
- [ ] **651–660.** Define crawler frontier, domain budget, retry, queue, and cancellation contracts with explicit persistence ownership.
|
|
102
|
+
- [ ] **661–670.** Define proxy and captcha boundaries as caller-owned evidence or adapters, never bundled bypass behavior.
|
|
103
|
+
- [ ] **671–680.** Define MCP tool declarations for execution planning, binary inspection, capability evaluation, and artifact evidence.
|
|
104
|
+
- [ ] **681–690.** Define SaddleBot task boundaries for explicit operator commands, message provenance, and no autonomous credential handling.
|
|
105
|
+
- [ ] **691–700.** Define deterministic tests for browser evidence, scraper freshness, crawl budgets, MCP serialization, and bot policy rejection.
|
|
106
|
+
|
|
107
|
+
## 8. Persistence, database, protocol, and observability contracts — actions 701–800
|
|
108
|
+
|
|
109
|
+
- [ ] **701–710.** Define persistence interfaces for execution plans, receipts, evidence, artifacts, approvals, and resumable tasks.
|
|
110
|
+
- [ ] **711–720.** Evaluate Drizzle ORM only as an optional caller-owned persistence adapter, not as a root dependency or required database.
|
|
111
|
+
- [ ] **721–730.** Define relational schema projections for jobs, artifacts, leases, receipts, evidence, approvals, and retention decisions.
|
|
112
|
+
- [ ] **731–740.** Define migration ownership, database credentials, tenancy, and backup policy as application-layer responsibilities.
|
|
113
|
+
- [ ] **741–750.** Define JSON, NDJSON, SSE, block, and MCP representations for execution states and binary-processing progress.
|
|
114
|
+
- [ ] **751–760.** Define event correlation identifiers across job, runner, artifact, approval, browser, and delivery boundaries.
|
|
115
|
+
- [ ] **761–770.** Define redaction controls for logs, metadata, URLs, headers, secrets, and binary-derived strings.
|
|
116
|
+
- [ ] **771–780.** Define health, heartbeat, queue depth, working-set pressure, and adapter freshness observations without false availability claims.
|
|
117
|
+
- [ ] **781–790.** Define audit trail integrity for plan-to-receipt transitions, evidence references, and operator-visible denial reasons.
|
|
118
|
+
- [ ] **791–800.** Define deterministic persistence-adapter tests using in-memory fakes and no mandatory database server.
|
|
119
|
+
|
|
120
|
+
## 9. Unified `web/` playground — actions 801–900
|
|
121
|
+
|
|
122
|
+
- [ ] **801–810.** Audit the existing root-first `web/` site, routes, assets, build script, and deployment-neutral base-path behavior.
|
|
123
|
+
- [ ] **811–820.** Define the playground information architecture for capability planning, binary inspection, execution policy, receipt viewing, and integration guidance.
|
|
124
|
+
- [ ] **821–830.** Define a browser-only demonstration model that uses local fixtures and does not execute uploaded or remote binaries.
|
|
125
|
+
- [ ] **831–840.** Define a playground execution-plan form with explicit policy fields, bounded input options, and denial explanations.
|
|
126
|
+
- [ ] **841–850.** Define a playground binary-inspection form limited to metadata and caller-selected safe sample fixtures.
|
|
127
|
+
- [ ] **851–860.** Define a playground storage-to-working-set visualization that explains stages and limits without claiming RAM conversion.
|
|
128
|
+
- [ ] **861–870.** Define a playground runner-selection view that compares declared capabilities and leaves dispatch disabled without an adapter.
|
|
129
|
+
- [ ] **871–880.** Define a playground browser and scrape view that displays evidence boundaries, consent needs, and caller-owned transport requirements.
|
|
130
|
+
- [ ] **881–890.** Define a playground integration view for library import, adapters, database option, container option, and hosted-operation prerequisites.
|
|
131
|
+
- [ ] **891–900.** Define responsive, accessible, deterministic UI tests and static build verification for every new playground state.
|
|
132
|
+
|
|
133
|
+
## 10. Security, quality, packaging, and 1.8.18 release — actions 901–920
|
|
134
|
+
|
|
135
|
+
- [ ] **901–910.** Perform the 1.8.18 threat-model review for untrusted bytes, remote dispatch, archive handling, secrets, browser actions, SSRF, and provider boundaries.
|
|
136
|
+
- [ ] **911–920.** Run final source, test, package, native, documentation, version, artifact, release-note, and registry-readiness gates before creating any 1.8.18 tag.
|
|
137
|
+
|
|
138
|
+
## 11. Unified internal API architecture — actions 921–970
|
|
139
|
+
|
|
140
|
+
- [x] **921–930.** Define internal API boundaries for gateway, planner, materializer, executor, persistence, and receipt projection within the single `web/` surface.
|
|
141
|
+
- [x] **931–940.** Define a hard default policy that rejects user-hardware access, local execution, remote dispatch, paid providers, and free-tier providers until the caller explicitly supplies an adapter and approval.
|
|
142
|
+
- [x] **941–950.** Define in-memory demonstration adapters for the six internal API boundaries that are deterministic, do not call the network, and do not execute supplied bytes.
|
|
143
|
+
- [x] **951–960.** Define browser-facing internal API request and response envelopes for plan creation, policy evaluation, binary metadata inspection, and receipt projection.
|
|
144
|
+
- [x] **961–970.** Define test cases proving that a missing adapter, unapproved provider, remote URL, local hardware target, or binary execution request yields a structured denial without side effects.
|
|
145
|
+
|
|
146
|
+
## 12. Final version alignment and commit — actions 971–980
|
|
147
|
+
|
|
148
|
+
- [x] **971–980.** Align active npm, lockfile, Maven, NuGet, RubyGems, extension, desktop, Capacitor, crawler and iOS metadata to `1.8.18`; create the candidate release note, run the release gates, inspect the npm package, configure `iakadion` authorship, commit, and push the verified source revision.
|
|
149
|
+
|
|
150
|
+
## Evidence ledger
|
|
151
|
+
|
|
152
|
+
Every completed ten-action work package must link its evidence to the final release record: source revision or research URL, design note, code path, deterministic test name, boundary test, documentation update, validation command, result, reviewer state, and disposition. The 970 actions deliberately start with factual classification; implementation may proceed only for capabilities that are both technically feasible and expressible without false infrastructure claims.
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# Workflow operations
|
|
2
|
+
|
|
3
|
+
Saddle keeps executable GitHub workflow definitions in `.github/workflows`. GitHub requires workflow YAML files in that directory. The repository currently uses lower-case `.yml` names for every workflow definition.[1]
|
|
4
|
+
|
|
5
|
+
Composite action metadata remains in `.github/actions/<action>/action.yml`. Those files are not standalone workflows: the repository invokes them as local actions from their directory, so moving them into the workflow directory would break their executable local-action path. Dependabot configuration remains at `.github/dependabot.yml`, which is the path GitHub requires on the default branch; it is dependency-update configuration rather than a runnable workflow.[2]
|
|
6
|
+
|
|
7
|
+
## Mobile release policy
|
|
8
|
+
|
|
9
|
+
The Android job first uses caller-provided production signing material only when all required repository secrets exist. If a release is published without that material, it automatically generates a temporary `ci-test-key`, attaches the APK and AAB, and records `ci-test-key` in the Android manifest. This keeps the release artifact flow automatic without representing the result as production-signed. Manual Android runs remain opt-in for the same fallback through `allow_test_signing=true`. iOS remains disabled until the caller enables its separate signing and provisioning path.
|
|
10
|
+
|
|
11
|
+
## Cache retention policy
|
|
12
|
+
|
|
13
|
+
The `cache retention` workflow runs after CodeQL completes and on a daily schedule. A manual run defaults to reporting candidates only; its `apply` input must be set to `true` to delete anything. It receives only `actions: write` and `contents: read`, and uses the repository-scoped cache API. It does not access artifacts, releases, packages, source checkouts, or external repositories.
|
|
14
|
+
|
|
15
|
+
| Scope | Retention rule |
|
|
16
|
+
| -------------------------------------- | ------------------------------------------------------------------------------- |
|
|
17
|
+
| `refs/heads/main` CodeQL caches | Retain the three most recently accessed entries. |
|
|
18
|
+
| `refs/heads/main` Node caches | Retain the two most recently accessed entries. |
|
|
19
|
+
| `refs/heads/main` Java or other caches | Retain the most recently accessed entry per family. |
|
|
20
|
+
| Non-default refs | Retain entries accessed within the latest six hours, then delete older entries. |
|
|
21
|
+
|
|
22
|
+
The policy is intentionally bounded because GitHub cache entries are mutable accelerators, not release evidence. GitHub documents default seven-day inactivity eviction and a default 10 GB per-repository quota; proactively keeping a small recent set prevents repeated CodeQL overlays and tag-scoped entries from consuming the whole quota.[3]
|
|
23
|
+
|
|
24
|
+
Release-only target planning and GitHub Packages npm publication explicitly disable the Node package-manager cache. Those jobs receive little benefit from a tag-scoped cache and otherwise create entries that cannot be reused by the default branch.
|
|
25
|
+
|
|
26
|
+
Cache deletion is idempotent: a cache may expire or be evicted between the list and delete requests. A `404` for such an entry is logged and does not stop retention of the remaining candidates.
|
|
27
|
+
|
|
28
|
+
## References
|
|
29
|
+
|
|
30
|
+
[1]: https://docs.github.com/actions/using-workflows/workflow-syntax-for-github-actions "Workflow syntax for GitHub Actions"
|
|
31
|
+
[2]: https://docs.github.com/en/code-security/concepts/supply-chain-security/about-the-dependabot-yml-file "About the dependabot.yml file"
|
|
32
|
+
[3]: https://docs.github.com/en/actions/reference/workflows-and-actions/dependency-caching "Dependency caching reference"
|
package/extension/manifest.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"manifest_version": 3,
|
|
3
3
|
"name": "Saddle browser bridge",
|
|
4
|
-
"version": "1.8.
|
|
4
|
+
"version": "1.8.18",
|
|
5
5
|
"description": "User initiated page snapshots through the Saddle browser contract.",
|
|
6
6
|
"minimum_chrome_version": "110",
|
|
7
7
|
"permissions": ["activeTab", "scripting", "storage"],
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wenathlan/saddle",
|
|
3
|
-
"version": "1.8.
|
|
3
|
+
"version": "1.8.18",
|
|
4
4
|
"description": "binary computing engine that turns distributed storage into a publishable working set",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"private": false,
|
|
@@ -83,7 +83,8 @@
|
|
|
83
83
|
"./surface-requirements": "./dist/surfaces/requirements.js",
|
|
84
84
|
"./worker": "./dist/runtime/worker.js",
|
|
85
85
|
"./binary-archive": "./dist/binary/archive.js",
|
|
86
|
-
"./binary-transform": "./dist/binary/transform.js"
|
|
86
|
+
"./binary-transform": "./dist/binary/transform.js",
|
|
87
|
+
"./isolation": "./dist/isolation/contracts.js"
|
|
87
88
|
},
|
|
88
89
|
"files": [
|
|
89
90
|
"dist",
|
package/docs/logs/.gitkeep
DELETED
|
File without changes
|
package/docs/plans/00.index.md
DELETED
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
# Index
|
|
2
|
-
|
|
3
|
-
Project: **UKA** — computer use agent, sandbox for AI and captcha bypass. Super bot with computational memory. Package `@wenathlan/saddle`. Domain acquired.
|
|
4
|
-
|
|
5
|
-
Theme: computer use, bypasses, captcha, sandbox for AI, container for AI, multi-platform bot, storage-to-compute memory transformation.
|
|
6
|
-
|
|
7
|
-
## Planning Documents (`docs/plans`)
|
|
8
|
-
|
|
9
|
-
| # | File | Subject |
|
|
10
|
-
|---|------|---------|
|
|
11
|
-
| 01 | [architecture.md](./01.architecture.md) | General system architecture |
|
|
12
|
-
| 02 | [research.computer.use.md](./02.research.computer.use.md) | Research: computer use agents 2026 |
|
|
13
|
-
| 03 | [research.captcha.bypass.md](./03.research.captcha.bypass.md) | Research: hcaptcha cloudflare recaptcha bypass |
|
|
14
|
-
| 04 | [research.sandbox.ai.md](./04.research.sandbox.ai.md) | Research: virtual sandbox and containers for AI |
|
|
15
|
-
| 05 | [capture.platform.md](./05.capture.platform.md) | Browser movement capture platform |
|
|
16
|
-
| 06 | [dependencies.md](./06.dependencies.md) | 60+ project dependencies |
|
|
17
|
-
| 07 | [captcha.test.page.md](./07.captcha.test.page.md) | Test page with hcaptcha cloudflare |
|
|
18
|
-
| 08 | [production.infra.md](./08.production.infra.md) | Production infra (vercel/netlify) and sandbox backend |
|
|
19
|
-
| 09 | [database.schema.md](./09.database.schema.md) | Database schema (drizzle/prisma/mysql2) |
|
|
20
|
-
| 10 | [cloudinary.storage.md](./10.cloudinary.storage.md) | Data storage on cloudinary |
|
|
21
|
-
| 11 | [movement.logs.json.md](./11.movement.logs.json.md) | JSON movement log format (brave) |
|
|
22
|
-
| 12 | [research.atlas.agent.browser.md](./12.research.atlas.agent.browser.md) | Atlas: agent browser repos with same classification |
|
|
23
|
-
| 28 | [action.plan.md](./28.action.plan.md) | Action plan and next steps |
|
|
24
|
-
|
|
25
|
-
## Super Bot Documentation (`docs/plans`)
|
|
26
|
-
|
|
27
|
-
| # | File | Subject |
|
|
28
|
-
|---|------|---------|
|
|
29
|
-
| 45 | [robotarchitecture.md](./45.robotarchitecture.md) | Super bot architecture overview |
|
|
30
|
-
| 37 | [deploystrategy.md](./37.deploystrategy.md) | Deploy strategies (Netlify, Vercel, CI/CD, Docker, VM) |
|
|
31
|
-
| 36 | [computational.memory.md](./36.computational.memory.md) | Storage-to-compute memory transformation system |
|
|
32
|
-
| 39 | [multi.platform.bot.md](./39.multi.platform.bot.md) | Multi-platform bot (GitHub, GitLab, Forgejo, Gitea, Discord) |
|
|
33
|
-
| 40 | [npm.publish.md](./40.npm.publish.md) | NPM package publishing (`@wenathlan/saddle`) |
|
|
34
|
-
| 46 | [scdnintegration.md](./46.scdnintegration.md) | SCDN integration for assets and deployment |
|
|
35
|
-
| 44 | [reference.md](./44.reference.md) | Reference index for all saddle documentation |
|
|
36
|
-
| 33 | [bots.codigo.revisao.md](./33.bots.codigo.revisao.md) | Best AI code review bots (research) |
|
|
37
|
-
| 32 | [bots.automacao.computacional.md](./32.bots.automacao.computacional.md) | Best computational automation bots (research) |
|
|
38
|
-
| 34 | [bots.seguranca.cicd.md](./34.bots.seguranca.cicd.md) | Bot research (security + CI/CD) |
|
|
39
|
-
|
|
40
|
-
## Folders
|
|
41
|
-
|
|
42
|
-
- `docs/plans/` — planning and research (this index)
|
|
43
|
-
- `docs/talks/` — decision transcripts
|
|
44
|
-
- `docs/logs/` — JSON movement logs from Brave (`examplesession.json`)
|
|
45
|
-
- `tests/` — unit tests (`examples/`, `output/`, `scripts/`)
|
|
46
|
-
- `web/` — production site, deployed to Vercel or Netlify (files at root, no `src/`)
|
|
47
|
-
|
|
48
|
-
## Phase Decision
|
|
49
|
-
|
|
50
|
-
We are in **planning + research**. Platform implementation starts **only after user approval** (see `28.action.plan.md`).
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
# 01 Architecture
|
|
2
|
-
|
|
3
|
-
## Goal
|
|
4
|
-
|
|
5
|
-
Build **UKA**, a computer use agent for ai that:
|
|
6
|
-
|
|
7
|
-
1. Captures human movement in the browser (virtual mouse, virtual arrow, click, rotation, coordinates) in a real environment (brave / chromium).
|
|
8
|
-
2. Exports movement as json logs to `docs/logs/`.
|
|
9
|
-
3. Runs in a virtual sandbox to isolate ai agent execution.
|
|
10
|
-
4. Faces strong captchas (hcaptcha, cloudflare turnstile, recaptcha) in controlled tests, opening test pages in brave.
|
|
11
|
-
5. Persists data in production via a deployed site (vercel/netlify) plus db (drizzle/prisma/mysql2) plus cloudinary.
|
|
12
|
-
|
|
13
|
-
## Architecture rules (skill arch)
|
|
14
|
-
|
|
15
|
-
- No `src/` folder. Logic lives at the root of `web/`.
|
|
16
|
-
- No vercel functions. No netlify functions. Use prisma, drizzle, mysql2, socket.
|
|
17
|
-
- No localhost. Host is parametrized (`host`). Ports randomized then locked.
|
|
18
|
-
- Files lowercase. No underscore. No hyphen. English docs. Jsdoc comments.
|
|
19
|
-
- Logic grouped. Up to 20 related logics per file.
|
|
20
|
-
- Runs as a library across modes (computer, browser, cli, binary, headless, etc).
|
|
21
|
-
|
|
22
|
-
## Atlas (the browser)
|
|
23
|
-
|
|
24
|
-
Atlas is the real browser component of UKA. It works across the 30 modes from the
|
|
25
|
-
architecture skill (computer, browser, cli, binary, headless, etc) and its primary
|
|
26
|
-
job is to bypass hcaptcha so the agent can act. It serves both the agent and the
|
|
27
|
-
sandbox, and talks to our own database on vercel/netlify. See
|
|
28
|
-
[12 research atlas agent browser](./12-research-atlas-agent-browser.md) for the
|
|
29
|
-
prior-art survey and the p1 stealth / p2 vlm / p3 token fallback layering.
|
|
30
|
-
|
|
31
|
-
## Components
|
|
32
|
-
|
|
33
|
-
```
|
|
34
|
-
atlas (web/atlas.js + deps)
|
|
35
|
-
- real browser across 30 modes
|
|
36
|
-
- stealth layer + hcaptcha bypass (vlm or token api fallback)
|
|
37
|
-
- feeds agent and sandbox
|
|
38
|
-
|
|
39
|
-
capture ui (web/*.html + web/capture.js)
|
|
40
|
-
- virtual arrow / virtual mouse injected via cdp
|
|
41
|
-
- captures click, drag, scroll, coordinates, rotation
|
|
42
|
-
- exports json to docs/logs/
|
|
43
|
-
|
|
44
|
-
sandbox (web/ + @vercel/sandbox)
|
|
45
|
-
- isolated firecracker microvm per session/agent
|
|
46
|
-
- chrome/brave ready, novnc streaming
|
|
47
|
-
- api https (post/get) to the deployed site
|
|
48
|
-
|
|
49
|
-
production backend (web/, deployed to vercel/netlify)
|
|
50
|
-
- open node server (hono/express), not platform functions
|
|
51
|
-
- db (drizzle + mysql2 + prisma schema)
|
|
52
|
-
- cloudinary for assets and replays
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
## Main flows
|
|
56
|
-
|
|
57
|
-
### A. Capture (local/dev)
|
|
58
|
-
1. Open brave via playwright/chromium with `chrome.debugger` (cdp).
|
|
59
|
-
2. Inject svg cursor sprite plus event listeners (`Input.dispatchMouseEvent`).
|
|
60
|
-
3. Record each event with timestamp, type, coordinates, target, rng seed.
|
|
61
|
-
4. Compact trajectories and export to `docs/logs/<session>.json`.
|
|
62
|
-
|
|
63
|
-
### B. Captcha test
|
|
64
|
-
1. Open test page (`tests/examples/hcaptchatest.html` or a real site).
|
|
65
|
-
2. Run solver (hcaptcha challenger / vision) or record manual bypass.
|
|
66
|
-
3. Save evidence (screenshot, token, log) to `tests/output/`.
|
|
67
|
-
|
|
68
|
-
### C. Production
|
|
69
|
-
1. Agent calls the deployed site api (`web/`).
|
|
70
|
-
2. Backend writes session to db (drizzle/mysql2) and assets to cloudinary.
|
|
71
|
-
3. Logs and replays available via get https.
|
|
72
|
-
|
|
73
|
-
## Key technologies (details in `06-dependencies.md`)
|
|
74
|
-
|
|
75
|
-
- Browser automation: `playwright`, `puppeteer`, `chromium-bidi`, `@playwright/test`
|
|
76
|
-
- Human mouse: `bezier-js`, `@napi-rs/canvas`, `d3`
|
|
77
|
-
- Ai / vision: `ai`, `@ai-sdk/*`, `@xenova/transformers`, `onnxruntime-web`, `tesseract.js`
|
|
78
|
-
- Sandbox: `@vercel/sandbox`, `vercel`
|
|
79
|
-
- Server: `hono`, `express`, `cors`, `helmet`, `socket.io` (socket realtime)
|
|
80
|
-
- Db: `drizzle-orm`, `mysql2`, `@prisma/client`, `prisma`
|
|
81
|
-
- Storage: `cloudinary`
|
|
82
|
-
- Validation: `zod`, `valibot`, `arktype`
|
|
83
|
-
|
|
84
|
-
## Next steps
|
|
85
|
-
|
|
86
|
-
See `action-plan.md`. Implementation starts after user approval.
|