Repository navigation
spec(t27os): the hive feed's acceptance rail (Refs #11788 #5980) - #11834
Conversation
…O undefined symbols + BRANCH26 (Refs #8946) A fn whose body is @extern("sym") imports the C symbol sym. lower names it @sym (a name t27 source cannot declare), passes a str or slice argument as its bytes' address, and codegen emits each call's bl as a tagged data ref that only macho.t27 resolves: one ARM64_RELOC_BRANCH26 against an undefined _sym nlist, distinct names shared, sorted after the externals. Images without imports are byte-identical (reloc_slot is 2*i). The Rust glue nets negative by compacting the a64.rs disassembler tables. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…Refs #8946) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…l-11788-extern-boundary # Conflicts: # gen/rust/tri/t27b/macho.rs # specs/tri/t27b/macho.t27
…2_large with pointers, and the reject named nothing (Closes #11788) The chain that blocked make t27os on master: glass_window.t27 pulls specs/tri/t27b/libm.t27 through any libm builtin; lowering the spliced module reached t27b_libm_rem_pio2f, whose large branch still called t27b_libm_rem_pio2_large as (x*, y*, e0, nx, prec) after that routine had been ported to (x0, x1, x2, e0, nx) -> (n, y0, y1). A *[1]f64 reached the f64 coercion and the reject read 'type mismatch at line 1730 (expected f64, found a pointer)', naming nothing actionable. - libm.t27: rem_pio2f returns (n, y) by the file's own port convention; its large branch passes the x pieces as values (nx = 1 reads only x0); sinf and cosf destructure. The stray top-level 'return' after cosf (already on master, never lowered through the splice) is gone. New sweeps hold sinf and cosf to @sin/@cos of an f32 bit for bit across every branch, into rem_pio2f's large one: 32/32 under the reference and under t27b, 0 vacuous. - libm_plan.t27: @sin and @cos of an f32 wire to __t27b_libm_sinf and __t27b_libm_cosf -- the ports sat unwired behind REFUSE_NO_F32. has_f32, routine, the why text and the plan's tests follow; the plan sweep now walks all twenty-one builtins where it stopped at nineteen (18/18 both sides). - lower.rs (+10/-10): the pointer arms of coerce and cond_val name the pointee ('expected f64, found a pointer to *[1]f64'), so a refusal carries both conflicting types next to the line, and the redundant Val::P enum special cases fold into type_name -- the foreign debt does not grow (owner rule 2026-10-09). source.rs pins the new text. Evidence: make t27os builds T27OS.app and t27os-pty here (build 7215); the window launches. cargo test -p t27b 162/162. Seals re-stamped for both specs (check_seal_currency: the five stale rows left are the t27f ones master already carries; check_seal_coverage exits 0).
…dth, opaque black #000000 in the full window and full screen (Refs #11788) Owner, 2026-10-23, said directly: the matte glass was in the compact (docked) mode, and in the full one black #000000 -- isolate it and do not break it. Until today the decision lived in a full-screen bool threaded through backdrop_alpha, tint_alpha and the surface family, so the full 960x540 window rendered as glass. The rule now lives in exactly one pure fn, on_glass(sw): the docked panel is PANEL_W wide, the full window W_PT, so the scene width the frames already carry decides, and docking resizes the window -- the material follows the dock with no second state to keep in step (a module var is impossible here: the Mach-O object has no writable data section, VarDecl(module, object file)). The readers are backdrop_alpha, backdrop_clears, tint_alpha, surface_alpha_with and draw_ground's frost; every draw path that needed the width now carries sw (the card chain, the side rows, the lane tail, the plate and the page fns) -- t27b typechecks the whole file, no decision left outside on_glass. Tests pin the mapping both ways: glass at PANEL_W (backdrop 0.0, tint 0.55, surfaces their tints, frost on), opaque #000000 at W_PT (backdrop 1.0, tint 1.0, every surface 1.0, the same as the frame and the layer). 62/62 under t27b test. The reference test-report block on this file is master's (the master text blocks the same way at spec.zig:217) -- the window's gate is t27b, and make t27os builds and launches (build 7216).
… (owner, 2026-10-23) (Refs #11560) The avatar picture and the name come from the GitHub user after the sign-in that already exists (share.t27's device flow): the host fetches the signed-in user and writes both through the existing atomic profile.t27p / avatar.png contract. Nothing manual. The recorded decision lives in profile.t27's header with what stays as the fallback until the sign-in slice of #11560 is wired.
…ncy, the reference boundary (Refs #11788 #5980) - libm_trigf.t27 (conformance, the libm_logf shape): @sin and @cos of an f32 held to the reference bit for bit -- 3000+2990-point sweeps over both bit patterns (every exponent, both signs), 300 points inside rem_pio2f's large branch, dense near one, the kernel bands, fixed reference bits extracted from this repository's own reference via the assert_eq prelude, signed zero on the bits, inf/NaN held to 'is a NaN' per side. 5/5 under t27c test-report and under t27b test, 0 vacuous. - seal currency: compiler/cli/git.t27 and the three t27f page specs re-sealed where master's merge train moved the specs after sealing -- check_seal_currency reports 0 STALE again; check_seal_coverage 0 with the new spec's seal (3046 seals). - glass_window.t27 header: the reference block on this file is by construction -- gen-zig renders @extern verbatim and Zig takes two arguments (master's text blocks the same way). The gates that hold it are t27b and make t27os; the extern-stub slice for gen-zig is filed with evidence on #5980.
…aster's copy # Conflicts: # .trinity/seals/cli_git_commands.json # .trinity/seals/git_commands.json # .trinity/seals/t27f_T27fWorkGraph.json # .trinity/seals/t27f_display_list.json # .trinity/seals/t27f_export_video.json
…w about a feed file (Refs #11788 #5980) Synthetic feeds over devices.t27's own parsers, every owner rule as an assertion: a host is ONLINE only on a heartbeat younger than DV_STALE_S and goes OFFLINE past it; a payload carrying a quote is not trusted at all (dv_hosts 0); a '-' and a missing record parse to DV_NM, never to a 0 that looks like a reading; 'behind' counts only when both builds are known, is 0 on level or ahead; a pushed lane branch occupies a host slot by the grammar while a '-' row does not (measured, not assumed). 4/4 under t27c test-report and under t27b, 0 vacuous -- the acceptance rail for the feed this machine started keeping on 2026-10-23.
Summary by t27-beesChecked by the t27 compilert27c parse, parse-complete and typecheck on each changed .t27 file at
Read by the modelThis PR adds the hive feed acceptance specification for t27os (4 passing tests) and extends t27b's libm with f32 implementations for Worth a look
Read: 13 files, +619 -282, the whole diff up to 60000 characters (the rest was not read). Head |
The acceptance rail for ~/.t27os/hive/feed.txt, which this machine started keeping on 2026-10-23: synthetic feeds over devices.t27's own parsers, every owner rule as an assertion (fresh/stale, untrusted payloads, DV_NM never a fake zero, behind only when both builds are known, a pushed branch occupies a host slot -- measured, not assumed). 4/4 under the reference and under t27b, 0 vacuous.