feat(pet): add persistent world and work-driven dot forms - #6110
Conversation
Consolidate the canonical pet telemetry, world, score, replay and checkpoint sources with portable web, Rust, Swift and Kotlin hosts. Embed the same core in foreground Watch, preserve unknown coverage and native checkpoint files, and supply reproducible build and QA instructions. The whale is the home form of a field of dots. Richer work-driven forms are follow-up work, not a claim that this foundation completes the product. Validation: - Fresh source archive: pet typecheck/build, 33 tests passed, 0 failed. - Fresh source archive npm test: 66 package + 12 SDK + 446 web passed, 0 failed. - npm run check:web: passed production build with public GitHub release fetch. - TS/Rust/Swift: 190 matching checkpoints; standalone ratatui build passed. - Packaged Apple checkpoint/storage/host workflows: 8 passed, 0 failed. - Legacy local Whalesong consumer check: 306 passed, 0 failed. Full Rust suite, hosted CI, authenticated live attachment and release qualification remain separate, unclaimed evidence. See pet/QA.md. Refs #6109
The same dots now form reasoning knots, code strands, filesystem branches, browser layers, traffic circulation and open human-input junctions. New habitats use expression v2; legacy recordings keep their original v1 motion and behavior. Reject unknown and mismatched versions atomically. Preserve replay duration on browser reload and remove approach-to-owner presentation. Fix the RNG method name and redundant byte clamp reported by hosted clippy, and update the dock golden for the added Watch tab. Validation: npm test passed 66 package + 12 SDK + 446 web tests, 0 failed; npm run check:web passed in the extracted candidate with local dependencies. Pet check: 37 passed, 0 failed. TS/Rust/Swift/Kotlin: 380 matching checkpoints across v1/v2, with pinned v1 digests unchanged. Eight Apple host workflows and the iOS Simulator build passed. QuickJS v1/v2 checkpoint hydration plus 180 continuation frames passed for wild/demo; live resume remained unknown. Generated native resources match the candidate tree; cargo fmt check passed. Full workspace clippy and fresh hosted CI are pending at commit time. Refs #6109
|
Grokbot completed an independent advisory pass on the initial pet commit
Grokbot has now been assigned a second bounded QA pass on exact commit |
Replace the old iOS approach-to-owner introduction. Swift and Android accessibility descriptions report awaiting input only for an observed human channel, rather than interpreting any high salience as needing the owner. Validation: npm test passed 66 package + 12 SDK + 446 web tests, 0 failed; npm run check:web passed. iOS Simulator build succeeded. Android Compose compilation remains unverified; this changes its description source only. The particle/world/score sources and generated native bundles are unchanged. Addresses Grokbot QA findings on #6110. Refs #6109
|
Independent Grokbot pet QA is complete. Runtime/build review used exact commit
Grokbot separately verified current head The final head's GitHub Pet conformance job independently passed 37 tests + 380 checkpoints (run); the local product Node gate and iOS Simulator build also passed. Local Swift/Kotlin and QuickJS proof is recorded separately in the PR description. Grokbot did not execute a full TUI Watch binary, live tape/Runtime attachment, Swift/Kotlin hosts, or a browser-category span in the default demo. Local browser QA separately inspected browser/network/communication forms with an imported synthetic tape. Android app, macOS popover and listening/power quality remain unverified. Broader product CI is still running; this is advisory QA, not a release qualification. |
Default-off Watch sound streams canonical stereo PCM to one optional ffplay child. Hide, quiet, stale presentation and mute cancel output without stopping the world. Bound and discard delayed or excess packets; isolate player/PCM failures from telemetry and persistence. Translate all controls. Validation on this tree: - npm test: 66 package + 12 SDK + 446 web passed, 0 failed. - npm run check:web: passed (2 existing lint warnings, 0 errors). - Isolated exact audio/PCM source: 5 passed, 0 failed. - Actual FFplay output: three 4-second busy-host runs passed after queue fix. - 4 strings translated in all 15 complete locale packs. - Full Watch suite: 11 passed, 0 failed before final queue-full recovery fix; final full Rust rerun/build and PTY acceptance are still in progress. No world, score, replay format or generated native bundle changes.
Resolve the hosted needless_range_loop lint without changing sample order, validation, queue behavior or the shared score. Validation on this tree: - npm test: 66 package + 12 SDK + 446 web passed, 0 failed. - npm run check:web: passed (2 existing lint warnings, 0 errors). - Workspace clippy, all targets/features with repository lint allowances: passed. - Exact audio/PCM source tests: 5 passed, 0 failed, byte-identical core PCM. Parent 6dbec2c passed 11 full Watch tests, 1 command test, 51 localization tests, full binary build, and capture/actual-FFplay PTY lifecycle walkthroughs. This follow-up changes only three interleaving lines in audio.rs.
|
Grokbot completed the bounded audio QA on
Local evidence remains separate: The new hosted CI verdict remains pending. These are development/QA receipts, not a release or merge approval. |
Build a Compose app with the canonical QuickJS world and score, native stereo AudioTrack, lifecycle controls, replay import/export and recoverable atomic habitats. Verify the Kotlin renderer against the shared world and add an Android emulator CI job with downloadable APK and reports. Keep FNV-1a digests exact using integer halves in engines without BigInt. Native hosts now accept checkpoint-free exports in their recorded expression version. Use 30 Hz chunks in the PCM fidelity test; 400 ms renders could expire the presentation deadline under Windows CI load. Production expiry is unchanged. Validation on tree 9aa56e2: - npm test: 66 package + 12 SDK + 446 web passed, 0 failed. - npm run check:web: passed; two existing lint warnings. - pet check: 38 passed, 0 failed; 380 TS/Rust/Swift/Kotlin checkpoints match. - Android assemble/lint and 5 device tests: passed, 0 failed (API 35 ARM64). - Actual TUI Watch: 11 passed, 0 failed; isolated PCM/sink subset: 5 passed. - Apple: 8 checkpoint/storage workflows passed, including two-hour restore. - rustfmt and actionlint: passed. No physical-device listening/power acceptance or real Runtime attachment claim.
Publish pause and motion controls from the owning world worker after the current frame and output settle. Stop audio when a newer pause, background or mute request arrives. The lifecycle test waits for the applied state before checking frozen particles and saved time. Require an observed human frame, pending wait and attention before Android announces input pending. Validation: Android assembleDebug, connectedDebugAndroidTest and lintDebug passed (5 tests, 0 failures, API 35 ARM64). npm test passed: 66 package + 12 SDK + 446 web tests, 0 failures. npm run check:web passed with 2 existing warnings. Hosted CI will qualify this commit separately.
|
Android QA receipt for Codewhalebot independently ran Grok's Android source review identified the missing observed-human guard on the input accessibility label. Its initial suggestion to reproduce that through a non-human wait in Event demo was incorrect: the canonical bucketer derives waiting from human events. Grok explicitly corrected that source guess; it was never a device receipt. The new guard also handles imported flat buckets and uncertain frames. Grok inspected the exact three-file follow-up and found no remaining source defect in the label or pause/background ordering. It did not rerun unchanged shared-core tests or claim the local native results as its own. Hosted Android at Local follow-up validation also passed APK/lint and five API 35 ARM64 instrumentation tests, plus |
… timing Bind the wrapped SSE pipeline to the Runtime cancellation signal so Ctrl+C closes an idle body after garbage collection. Add a real HTTP regression fixture and document authenticated read-only journal acceptance. Separate the actual TUI PCM cursor rendering from presentation. Compare partitioned samples before wall-clock delivery; retain the production 500 ms expiry, bounded sink, mute and invalid-sample tests. The previous macOS CI run passed 15421/15422 tests; its fidelity check incorrectly required a legitimately stale packet to be delivered. Validation: pet typecheck/build and 39 tests passed, 0 failed; actual TUI Watch 11 passed, 0 failed. npm test passed: 66 package + 12 SDK + 446 web tests, 0 failures. npm run check:web passed with 2 existing warnings. Authenticated local Runtime 0.9.13 recording produced 45 contiguous unknown buckets over 18 seconds and exited cleanly in 41 ms; no provider turn was started. New hosted CI and independent QA are pending.
|
Grokbot follow-up completed on exact commit On its Linux host with Node 22.19.0, Grok also reviewed the Runtime pipeline cancellation and the TUI This was executed Node QA plus Rust source review. Grok did not run the full Watch test link, product Node gate, Android build or private Runtime journal. Local exact-source evidence is separately recorded: 11 Watch tests and the 66 package + 12 SDK + 446 web gate passed; the authenticated 18-second recorder run produced 45 contiguous unknown buckets and stopped cleanly in 41 ms. Fresh hosted CI remains a separate verdict. No merge, release or deployment occurred. |
Keep Apple source and preference unchanged when autosave fails, with explicit UI handling for leaving an unsaved visit. Add iOS recording export. All host exports carry the current checkpoint and serialize bounded history slices outside the embedded runtime heap; Android stages the complete export before opening the user destination. Browser imports validate and resume checkpoint-bearing recordings atomically. Native autosave/import remains 8 MiB; recovery exports and browser import support 64 MiB. The Runtime reconnect fixture now waits for recorded phase evidence instead of assuming its fixed sleep outlasted reconnect and a full telemetry bin. Validation: pet typecheck/build and 40 tests passed, 0 failed; actual Watch 11 passed, 0 failed; 9 Apple workflows passed; macOS and iOS Simulator builds passed. Android APK/lint and 7 API 35 ARM64 instrumentation tests passed, including an export of 90000 interactions beyond the autosave limit. A 9790159-byte browser recording reopened at its saved 13.2-second checkpoint. The original Apple source plus a test API shim fails the save-conflict regression. npm test: 66 package + 12 SDK + 446 web tests passed, 0 failures. npm run check:web passed, with 2 existing lint warnings. Hosted CI and Grokbot follow-up on this commit are pending; automatic history rotation and native live-companion acceptance remain open.
Keep the imported browser world alive across source changes and validate an import once before adopting it. Require explicit Android confirmation before reopening saved state. Stream the interaction checksum without allocating a second complete history string; serialized checksum bytes are unchanged. Validation on this exact source tree: - npm test: 66 package + 12 SDK + 446 web tests pass, 0 fail. - npm run check:web: pass, 2 existing warnings. - Pet typecheck/build and tests: 40 pass, 0 fail. - Product TUI Watch: 11 pass, 0 fail. - Apple checkpoint workflows: 9 pass; macOS bundle build passes. - Android assemble, lint and API 35 emulator: 7 tests pass, 0 fail. - Browser: 9,790,159-byte recording returns at 13.2 seconds with its code/strike/roll pose.
The evidence section already records the nine passing Apple workflows. Keep the command instructions independent of a changing test count. Validation: npm test passed 66 package + 12 SDK + 446 web tests, 0 fail; npm run check:web passed with 2 existing warnings. Runtime source and native bundles are unchanged from 49e6df2 (40 pet, 11 Watch, 9 Apple and 7 Android pass).
|
Recovery QA is complete for runtime commit Grokbot independently ran Node 22.19.0 Our local runtime evidence: 40 pet tests, 11 actual TUI Watch tests, 9 Apple checkpoint/storage/recovery workflows, macOS bundle build, Android assemble/lint and 7 API 35 ARM64 device tests all passed. The required Node/web gate passed 66 package + 12 SDK + 446 web tests, and check:web passed with two existing warnings; the gate passed again after the documentation-only correction. CUA browser acceptance reproduced the old reset and verified the fix: a 9,790,159-byte synthetic recording remained at 13.2 seconds in code/strike/roll after leaving and returning. A damaged checksum import kept that world unchanged. Browser error log was empty. The iOS Simulator build and local Files export succeeded on Native autosave/import remains 8 MiB; exports/browser import are bounded to 64 MiB. Android completes private staging before opening the destination, but SAF copying itself is non-atomic: destination I/O failure can leave a partial output while the current world stays in memory. History rotation, long-session performance and remaining native live/audiovisual acceptance are still open. Current-head CI is pending; this draft is not a release claim. |
Persist immutable replay segments before advancing each active habitat. Version 2 records an exact origin and absolute telemetry sequences, preserving particle, random-stream and score continuation while retiring consumed history. Add archive access on browser, Apple and Android and session-local TUI segment files. Keep unplayed imported events when changing browser sources and reject failed saves without discarding the running world. Validation: pet check 42 passed/0 failed; TUI Watch 12 passed/0 failed; Apple host 10 workflows passed/0 failed; Android device 8 passed/0 failed, assembleDebug and lintDebug passed; iOS Simulator build and archive export passed. Product gate: npm test 66 package + 12 SDK + 446 web passed/0 failed; npm run check:web passed with 2 existing warnings. 30-hour synthetic Still simulation: 263 archives, active file <0.45 MB, exact restoration after every rotation. Browser archive/reopen and late-segment seeking verified. This is not animated device, provider or release acceptance.
Queue explicit browser archives after an in-flight save so changing sources retains inputs accepted during that save. Preserve the cancel path for an actual save failure. Align Android checkpoint clock, phase and jitter bounds with the shared core, and show browser replay times in hours for long segments. Validation: pet typecheck/build and 44 tests passed/0 failed. The previous 5c70db4 controller fails the new autosave overlap regression at the expected false save-failure prompt; its real-failure cancellation control passes. Android assemble/lint and 9 device tests passed/0 failed, including long-clock native import and continuation. Browser reload displays 30:00:00 and restores its segment. npm test: 66 package + 12 SDK + 446 web passed/0 failed; npm run check:web passed with 2 existing warnings.
|
Grokbot independently reviewed the recording-segment work and its follow-up on exact published source.
Other local evidence: 12 Watch tests, 10 Apple workflows, macOS/iOS builds and iOS earlier-recording export; 66 package + 12 SDK + 446 web tests and production web check passed. The shared-core 30-hour synthetic Still simulation rotated 263 archives while active files stayed below 0.45 MB. Browser archive/reopen preserves the full imported future timeline and seeks within the retained late-segment bounds. Grokbot did not relink the TUI, run native builds, execute the browser IDB workflow, run a provider turn or independently repeat the 30-hour simulation. Those remain separately identified local receipts. Current-head hosted CI is still running. The prior Active native companion acceptance, the standalone recorder's 24-hour file handoff, current macOS popover inspection and final audiovisual/power quality remain open. This is a draft; no merge, release or deployment. |
Add Android local-document following through the shared live cursor. Existing, duplicate and restarted packets establish a baseline; suspension discards old observations and sound. Apple and browser use the same cursor, and native resume uses the actual world clock. Keep file IO bounded and Android polling off the world worker. Document producer and device-transfer limits. Validation: - npm --prefix pet run check: 48 passed, 0 failed. - npm test: 66 package + 12 SDK + 446 web passed, 0 failed. - npm run check:web: passed, 0 errors and 2 existing image warnings. - TUI Watch: 12 passed, 0 failed; iOS Simulator build passed. - Apple: 11 checkpoint/live-file workflows passed; macOS bundle built. - Android: 9 native + 2 Compose lifecycle tests passed, APK/lint passed. Lifecycle rerun follows fixture isolation; prior mixed run had 1 failure. - Previous 45a1130 fails stale-file browser and normal-tick native-resume regressions. Runtime fixture now waits for recorded coverage, not a fixed sleep. Hosted CI is separate: 45a1130 macOS reported one subagent timeout-count failure. That unchanged test passes locally; its hosted retry remains pending. No release or deployment is claimed. Signed-off-by: CodeWhale Bot <bot@codewhale.net>
|
Published Local verification: 48 pet tests, 12 TUI Watch, 11 Apple workflows, iOS/macOS builds, nine Android native tests plus both Compose lifecycle tests, APK/lint, and All 161 published pet/integration source paths match the build archive. APK SHA-256: Grokbot received the exact revision at 19:34 UTC; independent review and new-head CI are pending. Parent macOS CI had one subagent timeout-count failure; local targeted reproduction passes and its hosted retry is queued. This remains a draft, with no merge, release or deployment. Long-running recorder handoff, automatic device transport, active-session companion and final audiovisual/power acceptance remain open. |
|
Codewhalebot completed independent QA at 2026-09-12 19:39:44 UTC on Node 22.19.0: Native builds/device acceptance, real browser file-picker/IndexedDB behavior and hosted CI were not independently run by Grokbot; the local receipts above remain separate. The standalone recorder's 24-hour handoff and automatic desktop-to-device transport remain open. Advisory review, with no release qualification. |
Reuse the existing Runtime lifecycle importer incrementally, retaining unfinished requests and a 16-second recurrence window with metadata/event caps. Keep late error receipt times and snapshot identities stable when earlier history retires. Rotate the live JSONL pathname into exclusive, replayable segments before its 24-hour or 64 MiB limit. Sync history before atomic replacement; refuse existing archives and changed output files. Add macOS/Windows pet recorder CI. Validation: npm test: 66 package, 12 SDK, 446 web passed; 0 failed. npm run check:web: 0 errors, 2 existing image warnings. Pet check: 56 passed, 0 failed. Whalesong check: 310 passed, 0 failed. TUI Watch: 12 passed, 0 failed. Apple: 11 workflows passed; macOS/iOS builds pass. Android: all 11 device tests passed in one run; assembleDebug and lintDebug pass. Real loopback SSE fixture: 260001 records; under 512 retained events and 256 KiB. Old 43e6f02 stops at record 155859 on the same fixture. No provider calls. Signed-off-by: CodeWhale Bot <bot@codewhale.net>
|
Published continuous recorder revision e71be2c, tree b408069640279b8e0715fd8b20008d47fa37282b, parent 43e6f02. All 165 published source paths match the tested build archive; 14 paths changed in this slice. The shared checkout advanced independently during verification; its index and unrelated source were preserved. The recorder archives bounded JSONL segments while continuing at the same live pathname. The Runtime adapter now consumes the existing lifecycle parser incrementally, retains unfinished requests and recent recurrence data, and discards raw payloads. Existing archives and externally changed output files are preserved on failure. Archives grow on disk; restarting the process still requires a new unused output path. Local verification:
Codewhalebot was assigned the exact head at 20:12 UTC. Current CI, including the added macOS/Windows recorder coverage, is pending. Prior 43e6f02 platform and product CI now passes. This is a source/build receipt, not a release claim. |
Account for a published first row before fallible post-rotation work, fixing Grokbot's reproduced continuation failure. Close both synced writer handles before replacing the live pathname on Windows; reopen without creating a missing file and verify its identity before continuing. Trim point rows so CRLF assets load the same whale. Exercise CRLF in the real browser controller tests. Windows CLI fixtures use a test-only IPC preload to notify the actual SIGINT handler; child.kill would forcibly terminate the child. Validation: pet typecheck/build/test: 57 passed, 0 failed. npm test: 66 package, 12 SDK, 446 web passed; 0 failed. npm run check:web: 0 errors, 2 existing image warnings. Previous e71be2c fails the post-publication and CRLF controller regressions. Native bundle bytes are unchanged from e71be2c's verified Apple/TUI/Android builds. The first Windows recorder CI exposed 19 failures; corrected-head CI is pending. Signed-off-by: CodeWhale Bot <bot@codewhale.net>
Windows recorder CI now passes 56 of 57 tests; the remaining live-reader fixture hit intermittent rename EPERM after two successful rotations. Retry EPERM/EBUSY for under two seconds, rechecking destination identity, size and modification time before each attempt. Persistent denial keeps the old file and archive. Validation: pet typecheck/build/test: 57 passed, 0 failed on macOS. npm test: 66 package, 12 SDK, 446 web passed; 0 failed. npm run check:web: 0 errors, 2 existing image warnings. Native bundle unchanged. Corrected-head Windows CI remains required. Signed-off-by: CodeWhale Bot <bot@codewhale.net>
|
Codewhalebot QA is complete for the continuous recorder revisions.
Actual final-head platform CI now passes: Windows recorder, 57/57 and macOS recorder, 57/57. The first Windows run exposed 19 failures, then the follow-up passed 56/57 with a transient replacement conflict. Closing handles, trimming CRLF point rows, using a test-only Windows shutdown notification and guarding a bounded rename retry resolved the observed failures. The native bundle remains Local final-source Full-product, portable and Android hosted jobs remain separate from these completed checks. The full pet goal stays in progress for recorder restart/companion operation, current macOS popover inspection, device transport and final audiovisual/power acceptance. No merge, release or deployment. |
Preserve and validate the previous segment before restarting at the same watched pathname with unknown coverage. Continue archive numbering and use an OS-released single-writer lock for clean exit and process-death recovery. Refuse malformed tapes, replaced locks and same-size external edits. Validation: npm --prefix pet run check: 61 passed, 0 failed. Final recorder checks: 10 passed, 0 failed. npm test: 66 package + 12 SDK + 446 web passed, 0 failed. npm run check:web: passed, 0 errors, 2 existing warnings. Previous 6d96052 fails resume and accepts the external rewrite negative controls. Native bundles are unchanged; Grokbot and hosted CI are separate. Signed-off-by: CodeWhale Bot <bot@codewhale.net>
Unreference the Windows test IPC channel so startup rejection can exit. Exercise that path on every host and await CLI readiness before shutdown; an archive link alone can precede replacement and signal-handler setup. The production recorder and native bundle bytes are unchanged. Validation: npm --prefix pet run check: 61 passed, 0 failed, 0 canceled. npm test: 66 package + 12 SDK + 446 web passed, 0 failed. npm run check:web: passed, 0 errors, 2 existing warnings. The prior IPC preload hangs a rejected CLI until SIGKILL; the corrected preload exits with code 1. Windows CI remains the platform proof. Signed-off-by: CodeWhale Bot <bot@codewhale.net>
|
Restart and companion continuation is published at
Verification:
The full-product/portable/Android hosted suite is still running. Active-session companion delivery, current macOS popover inspection, device transport and final audiovisual/power quality remain open. Existing Runtime-journal observation, synthetic SSE/world tests, device tests and the macOS process receipt are distinct proofs. No merge, release or deployment. |
Require explicit Runtime stream progress before extending human requests as current observations. Drain durable history and queued live events, return to replaying on broadcast lag, and preserve default event-only SDK behavior. Unsupported Runtime/SDK input stops explicitly and records unknown intervals. Validation: pet check 63 passed, 0 failed/canceled; npm test 66 package + 14 SDK + 446 web passed, 0 failed; check:web passed, 0 errors and 2 existing warnings. Runtime Rust progress tests 3 passed plus existing handoff 1 passed; SDK types passed. Loopback negative control reproduces stale waiting on c342329 and keeps it unknown with this transport. No provider calls were started. Signed-off-by: CodeWhale Bot <bot@codewhale.net>
|
Published Local checks: 63 pet, 66 package, 14 SDK and 446 web tests pass; web checks have 0 errors and 2 existing warnings. Actual Runtime Rust checks pass 3 new progress cases plus the existing handoff. Codewhalebot independently passed 63 pet + 5 SDK stream tests on Node 22.19.0 and found no concrete remaining source defect. Its fresh Rust link was outside its host's memory budget. Current-head macOS and Windows recorder CI each pass 63/63. Portable and Android checks passed; full-product Rust tests/lint/analysis are still running. The active native chain now has an actual local receipt: typed synthetic Engine input reached the existing Runtime journal/SSE, the standalone recorder process, and the Apple DispatchSource/PetHost. The native world showed the request at 1,233 ms and returned to unknown/no pending request at 2,000 ms after its answer. Private fixture prompt/question/answer text stayed out of the pet recordings. No provider was called. This is native host/file-delivery proof, not a popover, phone-link or listening test. All 168 published source paths match the tested archive. Shared main and its index remain preserved. PR description and build/compatibility notes are updated; no release or deployment. |
Transfer checked Float32 PCM directly from JavaScriptCore. Re-anchor native presentation after UI stalls, retire stale voice callbacks by ticket, and mute output failures while preserving world ticks, saves and exports. Validation: npm test && npm run check:web passed: 66 package, 14 SDK, 446 web; 0 failures, 0 web errors, 2 existing warnings. Pet check 63/0/0. Actual TUI Watch 12/0; Android instrumentation 11/0 with APK/lint build. Apple 11 checkpoint workflows plus 27 exact PCM ranges and malformed guards; final macOS compile/sign/verify and iOS Simulator build passed. Real AVAudioEngine completed 150 frames with a 750ms stall, all 12 onsets scheduled in the future. Previous host fails the injected PCM-error control; current host mutes sound, continues world ticks and exports. Audio-frame p95 70.6ms -> 23.4ms in synthetic profiling; concurrent-machine wall outliers remain, so no hard frame-time or subjective listening guarantee is claimed. Signed-off-by: CodeWhale Bot <bot@codewhale.net>
Run the existing Apple checkpoint/PCM workflow on the macOS recorder runner and upload the locally signed application as a zipped review artifact. Android keeps its existing separate APK and reports. Neither is a release. Validation: actionlint pet workflow passed; local macOS packaging/unzip integrity passed. Product sources are unchanged from ee35326: required npm test && npm run check:web passed 66 package, 14 SDK, 446 web, 0 failed, 0 web errors and 2 existing warnings. Pet 63/0; Apple 11 workflows + 27 exact PCM ranges, macOS/iOS builds, Watch 12/0, Android 11/0 + APK/lint. Hosted execution of this new workflow step remains pending. Signed-off-by: CodeWhale Bot <bot@codewhale.net>
|
Apple audio and review builds are published on 9c80de6, tree c55ce52c9ba2dfbe611a8510d983375864c49847. Product source is from ee35326; the final two-file change wires the existing Apple checks and downloadable app into CI. Apple now transfers validated Float32 PCM directly from JavaScriptCore, resynchronizes playback after stalls, and mutes sound failures while the visual world, persistence and export continue. The score and particle algorithms are unchanged. The original A–F implementation/evidence map is in pet/QA.md. The dots express the work; the whale is their home form. Current-head Pet conformance CI is green:
Download review builds: macOS app · Android APK and reports. Both downloaded archives were checked; macOS signature/LSUIElement/ARM64 executable checks pass, and both bundles match 979ac780ec51c359d9c5fa523c2bbf171af6ba73fb2235e150c36d840d40aeb1. These are ad-hoc/debug review artifacts, not notarized releases. Codewhalebot independently passed 63 pet tests and verified generated resources on Node 22.19.0 for ee35326, with no remaining concrete source defect. It reviewed the current two-file CI follow-up and independently checked the completed job timing against its timeout concern. It did not execute native hardware tests or download the artifacts. Separate local receipts: required Synthetic audio-frame p95 improved from 70.6 ms to 23.4 ms with the same final digest and peak. The final shared-machine run had six wall-time outliers, worst 738 ms; no hard frame-time or subjective listening guarantee is claimed. The original A–F implementation is ready for source review. Current macOS popover inspection and physical-device listening/battery quality remain unverified; mobile hosts consume local files without an automatic phone link. Five full-product Rust test/lint/analysis checks are still running at this receipt. The PR remains a draft; no merge, release or deployment. |
The pet is one buildable package and one persistent audiovisual world shared by browser, Apple, Android and TUI Watch. The same 980 dots become reasoning knots, code strands, filesystem branches, browser layers, circulating traffic and open decision junctions, then return to the whale at rest. Existing expression-version-1 recordings retain their behavior.
The shared core owns fixed-clock behavior, named random streams, persistent pod identities, interaction history and score scheduling. Each host owns its controls and audio output. Foreground
/workbar watchobserves accepted Engine metadata without starting a turn or recording prompt/tool payloads; the completion whale lives in the existing underwater scene. Optional Watch sound uses FFplay, with default-off and hidden/quiet/modal suspension. Terminal controls are translated in 15 complete locales.Browser and native hosts preserve source-specific habitats, current particle state, random streams and score. They archive completed history before advancing their active recording, so long sessions remain bounded without resetting the world. Native autosave/import is limited to 8 MiB; exports and browser import support 64 MiB. Failed saves retain the running world and preserve existing files. Earlier recordings can be reopened or exported.
The standalone recorder reads the existing local Runtime journal or an imported trace. For current Runtime observation it requires explicit replay progress: durable history and the queued live tail must drain before old requests may become current. Broadcast lag returns it to unknown during catch-up. Older Runtime/SDK combinations without this capability stop input explicitly; build the Runtime and recorder from this source together. Default SDK consumers keep the original event-only stream. Its incremental importer keeps unfinished lifetimes and a 16-second recurrence window under 250,000-event and 64 MiB metadata caps. Recorded JSONL rotates at the same watched pathname, preserving completed segments on disk.
--resumevalidates and archives the previous tape, continues archive numbering, and starts unknown at that path. A private empty OS-lock sidecar excludes simultaneous writers and releases on process death. Incomplete tapes and external changes are rejected without overwriting history.Apple observes file appends and replacement. Android follows a user-selected local document through bounded IO on a worker; the browser uses a user-granted file handle. All hosts use the same live cursor: existing bytes establish a baseline, and only advancing input becomes an observation. Old requests and onsets cannot reappear after suspension or producer restart. Device files are not automatically synced from the desktop recorder.
Apple transfers checked Float32 PCM directly from JavaScriptCore, rebases native playback after stalls, and mutes sound failures while preserving the world and recording. The score and sample generator remain shared.
All source, wrappers, locked dependencies, generated native resources and build commands are in this repository. No sibling or investor checkout is required.
Closes #6109
Validation
Current head:
9c80de6b01f35353dfa970e39fd97ff966e87531, treec55ce52c9ba2dfbe611a8510d983375864c49847. Product sources are unchanged fromee35326e; the final two-file follow-up adds Apple CI execution and an app artifact.979ac780ec51c359d9c5fa523c2bbf171af6ba73fb2235e150c36d840d40aeb1.ee35326e, with no remaining concrete source defect. Its current9c80de6btwo-file review confirmed the CI/artifact wiring. A timeout concern was checked against the completed 1m40s hosted run; no source change was needed. Native hardware execution remains a separate author receipt.Build instructions: pet/README.md, Android, QA.
Limits
Archives remain on disk. Android SAF destination copying is non-atomic: a destination IO failure can leave a partial export while the current world remains available. Invalid or incomplete recorder files are retained for recovery and require a new output path.
This remains a draft. The forms are authored expressions of measured work. The original A–F implementation/evidence map is in
pet/QA.md. Mobile hosts consume local files; automatic desktop-to-phone transport is not included. Current macOS popover inspection and physical-device listening/battery quality remain unverified. No merge, release or deployment is requested.