203 Commits
Author SHA1 Message Date
root 3472377e37 Qualify ABI 47 runtime corrections and preserve short joins 2026-10-16 22:15:34 +00:00
root 865dc5cc0b Clamp substring bounds and borrow search inputs 2026-10-16 21:44:57 +00:00
root 98576fdccd Remove redundant string and text-operation copies 2026-10-16 19:41:41 +00:00
root d9e927f260 Remove redundant JSON copies and compact ordered value storage 2026-10-16 16:22:12 +00:00
root e67a9648a8 Add JSON options with strict defaults and fast default calls 2026-10-16 14:12:13 +00:00
root 4e861cfdc1 Qualify combined logging and runtime artifacts at ABI 45 2026-10-16 11:28:29 +00:00
root 04ea93d020 Integrate structured logging with ABI 45 and the build-once pipeline 2026-10-16 10:56:31 +00:00
root bb6c2713e7 Stop socket activation while replacing runtime cohorts 2026-10-16 10:17:11 +00:00
root ed01927761 Reuse the verified runtime bundle for packaging and release ABI 44 2026-10-16 10:08:14 +00:00
root be6aa00760 Deploy centrally verified runtime bundles without root rebuilds 2026-10-16 10:03:29 +00:00
root 1783576aa3 Record combined candidate qualification and optimize dense ordinal counts 2026-10-16 09:36:58 +00:00
root f01b80c875 Record finite CPU budgets for qualified build commands 2026-10-16 09:08:21 +00:00
root 8c9a43a046 Select matched ABI 44 and reconcile combined qualification controls 2026-10-16 09:03:45 +00:00
root 5ee8a7041e Preserve JSON integer tokens and database numeric and NULL boundaries 2026-10-16 08:59:08 +00:00
root 5c9ca4c9f9 Preserve DValue map insertion order and index live ordinal access 2026-10-16 08:56:48 +00:00
root 8b1783c7f3 Remove background compilation and stale artifact execution 2026-10-16 08:55:15 +00:00
root 5bbe0c280b Preserve native scalar values and non-consuming database errors 2026-10-16 08:43:29 +00:00
root 875ad9d3d6 Require fresh artifacts and reuse qualified WebSocket fixture 2026-10-16 08:13:01 +00:00
root e7ed143d1c Qualify admission receipts and isolated codec wire commands 2026-10-16 08:13:01 +00:00
root 5e474eec53 Store boxed integers as exact native numeric values 2026-10-16 08:07:07 +00:00
root 54e4912ce6 Checkpoint runtime admission and standard codec corrections 2026-10-16 07:38:33 +00:00
root cbe70f7f20 Keep service capture limits out of public example labels 2026-10-15 19:15:02 +00:00
root 372f811aa9 Capture and publish output for every Capy documentation example 2026-10-15 14:47:12 +00:00
root e9f6e0bda5 Discover imports for implicit dynamic conditions 2026-10-15 14:14:54 +00:00
udo 50a2777ae9 Pause WebSocket input until broker forward slots are available 2026-10-15 13:21:29 +00:00
udo d23381b4b9 Preserve WebSocket handshake context in broker worker requests 2026-10-15 13:21:29 +00:00
root 2c162df6d5 Add generic FastCGI requests and PHP serialization 2026-10-15 12:42:25 +00:00
rootandClaude Fable 5.1 c8baf6c5dd Rewrite the math and bit API pages and the Capy skill for any
Replace the generated filler on the 34 math and bit pages with real
descriptions, the edge cases that matter, and one verified example each.
Allow those pure functions in the API output verifier. Fix the example
checker's host-language heuristic, which flagged a Capy result arrow at
the start of a line and the void type. Reword the type page, guide 8 and
three other pages where the mechanical rename produced "an any".

Rewrite skills/capy-bearer/SKILL.md for the any spelling, the * generic
marker, services and ports, file_temp, the sort comparator, and the
anti-patterns from the ludum review.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-15 03:06:59 +00:00
root 6f59181f09 Rename dynamic dval to any and add port spawn options
Keep the compile-time generic marker as *. Update the compiler, stdlib,
fixtures, documentation and editor grammars without a dynamic type alias.
Preserve native identifiers and historical work and patch records.

Replace the port_spawn environment argument with cwd/env options. Report
failed directory changes through EXIT 127 with cwd_failed.

Compile every API example and add a complete Pi RPC service example.
Service examples compile without execution or output blocks. Update ABI
versions and audited golden artifacts.
2026-10-15 02:50:33 +00:00
root fe463c05cc Use star for compile-time generic parameters 2026-10-15 01:41:05 +00:00
root 0d43f46803 Integrate verified documentation examples and request-scoped file APIs 2026-10-14 16:14:38 +00:00
root 4ab0d1d8f9 Remove editor release bureaucracy and use the ordinary build workflow 2026-10-14 13:23:26 +00:00
root 1dee6efb98 Honor the selected release compiler in platform rejection tests 2026-10-14 12:39:00 +00:00
root d412be5d4d Use the guide card style for every documentation index section 2026-10-14 12:34:04 +00:00
root d3158a5d06 Ship offline Capy editor bundles and verified release automation 2026-10-14 12:17:25 +00:00
root 2a40a3730b Add server, editor, LSP and web-app how-to documentation 2026-10-14 11:23:41 +00:00
root a36cf84c20 Add the favicon to standalone documentation listings and search 2026-10-14 09:44:15 +00:00
root 562c609b68 Use the Capy mascot favicon on the website and documentation 2026-10-14 09:34:42 +00:00
rootandClaude Fable 5.1 54004de7fd Rewrite the SERVICE handler page around a complete service, add a TASK handler page, fence doc code
The SERVICE page now walks through one complete service: a pool of child
processes that takes jobs by signal, frames their output per line, replaces a
child that dies with a delayed self-send, reports on an interval, and closes
its ports on STOP, with the CLI side that starts and drives it. The event
table names every props key and its values, the restart backoff is stated,
and addressing by unit path is explained. The example is a fixture
(site/tests/capy-services-pool.capy) that test_capy_services.sh starts, feeds,
and stops.

TASK handlers had no handler page; handler/task.txt covers the entry point,
the copy semantics of props, the timeout, the on_done props from shell_exec,
and target paths.

Indented code blocks in doc sources rendered as paragraphs because the
markdown renderer only knows fences. All 19 blocks are fences now and the doc
checker rejects indented code outside sig, output, and example sections.

The services guide drops the sentence about locks.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-14 09:11:46 +00:00
udoandClaude Fable 5.1 ca8edb6bd1 Delete the queued task API, the task pool, and the job API
Tasks are fire-and-forget only: function TASK:NAME(props : dval) and
task_execute(target, timeout_seconds, props). The durable queue, the
TASK_WORKERS pool with its leases, cancellation, admission health and recovery,
task, task_status, task_await, task_cancel, the background form of shell_exec,
job_status, job_result, job_await, job_cancel, http_request_async, the job
directory and its --job-worker helper, their pages, fixtures, guide sections,
settings documentation and parity rows are gone. A bare TASK handler is a
compile error.

shell_exec(command, {on_done: "/unit.capy:NAME"}) keeps the one job use that
mattered: the command runs in the detached task runner, and TASK:NAME of the
unit receives command, exit_code, stdout, stderr, timed_out and
output_truncated when it finishes. Unit path resolution is shared by tasks and
services. The tasks guide is "Tasks and commands" with a stable slug change.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-14 01:14:19 +00:00
udoandClaude Fable 5.1 5837f200cb Convert array literals into as dval parameters
An array type is constructible into dval like scalars and strings, so
port_spawn(["cat"]) resolves and lowers through the dval constructor; a
non-literal array still fails there with the existing message. The service
fixtures and the port_spawn page use the literal form again, and the services
guide names the oversized-message refusal beside the other two reasons a send
returns false.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-14 00:37:46 +00:00
root 8423307a9e Test the service cat slice and use hex digests for state filenames 2026-10-14 00:20:49 +00:00
root 078d54ec2e Expose service and port APIs through the live-dval host ABI 2026-10-13 23:56:18 +00:00
udoandClaude Fable 5.1 decfa661a3 Add named CLI entry points and align service docs with the runtime
function CLI:NAME() compiles like the other named handlers and exports
__bearer_cli_NAME; bearer-cli /unit.capy:NAME runs it, with --get pairs in
request.query. The static gate, the doc checker, the handler form list, the
CLI handler page, the language reference, and the skill file know the form, and
a fixture with a default and a named entry point is in phase 1.

The services handler page and guide now describe the mailbox bound as the
kernel datagram queue, say that an unknown signal is dropped and logged, and
that a send to a listening service is one datagram.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-13 22:56:16 +00:00
udoandClaude Fable 5.1 9c62e77de5 Add task_execute: run a task handler in a detached, bounded process
task_execute(target, timeout_seconds, props) starts a process for TASK:NAME at
once and returns {pid}, or {error} when it cannot. The request worker spawns
the runner through the --task-execute entry of its own binary; that process
forks the detached runner, reports its pid, and exits, so the worker never
owns a zombie. The runner loads settings like the custom server, runs the
handler under the timeout as its invocation deadline with an alarm as the
backstop, and exits. The pool loop shares run_task_once with it. The task
design note records the decided API, the callback into TASK, and what the
second step deletes.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-13 22:40:56 +00:00
udoandClaude Fable 5.1 781b094713 Document services: handler page and guide chapter
SERVICE handler page with the event table, state in unit variables, the
synthetic request, and lifetime rules. Guide chapter 12 covers the loop model,
state, start/stop/send, intervals, ports, failure, and what a service is not;
errors and React move to 13 and 14 with stable slugs. The doc scripts accept
the service example entry and recognize SERVICE handlers. The design note fixes
service_every to take the interval before its optional props.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-13 21:37:29 +00:00
udoandClaude Fable 5.1 2f881f2eae Add unit-scope variables
A top-level var is one mutable Wasm global, initialized in declaration order by
an exported __wasm_call_ctors that the worker already runs once per workspace
after relocation and before INIT. Functions and closures read and assign unit
variables directly; managed values retain and release like locals; a local or
parameter shadows them; an initializer sees only the variables above it and has
no request. Names cannot be request, props, none, or collide with a function,
struct, or alias. The capability scan is seeded with unit variable types, the
LSP reports them as variable symbols, and the services design note now keeps
service state in unit variables with the synthetic request bound for builtins.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-13 21:12:27 +00:00
udoandClaude Fable 5.1 0e71019530 Add the SERVICE handler family and a service workspace that lives across events
SERVICE:NAME handlers compile like TASK:NAME props handlers and export
__bearer_service_NAME. The Wasm core gains bearer_wasm_invoke_service_event,
which runs one handler with decoded event props against the shared request
value without writing a response back. The worker keeps one workspace per
service process (wasm_worker_service_open/event) and the backend exposes
wasm_backend_service_open, wasm_backend_service_event, and
wasm_backend_service_close for the service loop. Core ABI 39; artifact golden
refreshed for the embedded ABI version.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-13 18:32:02 +00:00
rootandClaude Fable 5.1 7485408f01 Add the response recovery fixture to the artifact golden
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-13 15:41:21 +00:00
rootandClaude Fable 5.1 8026db0bd2 Compare request.out with the live response at write-back
A component that fails to resolve sets the native status directly. The
final write-back compared request.out with the snapshot taken at request
creation, so a handler that wrote the status back to 200 compared equal
and never reached the response. Status and headers now compare with the
live native response, and native status writes in the core mirror into
the request value so an untouched request.out still keeps a native 500.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-13 15:38:24 +00:00