Skip to content

RHLGA-1 G2c: workspace tests pass on any host (HOSTDEP-1, RAWIDENT-2, GLOBALSHADOW-1, RETUNIT-1, BLOCKFOR-1) - #248

Open
noahgift wants to merge 112 commits into
mainfrom
RHLGA-G2c-host-independent-tests
Open

noahgift wants to merge 112 commits into
mainfrom
RHLGA-G2c-host-independent-tests

Conversation

@noahgift

Copy link
Copy Markdown
Contributor

RHLGA-1 G2c: the workspace test suite passes on any host

Stacked on #246 (G2b). Once #246 merges, this PR's diff is the three commits after 1e82f210.

G2 acceptance met: at ba96b2dd on intel, cargo nextest run --workspace --no-fail-fast ran 28138 tests: 28138 passed, 2492 skipped, exit 0. The follow-up commit feb1d2c5 changes only a test that is ignored by default.

Changes

  • HOSTDEP-1: six test binaries ran whatever ruchy was on PATH. They now spawn env!("CARGO_BIN_EXE_ruchy"). Two checks that need a host tool are named-environment ignores:

    • renacer (tooling_002 test 01);
    • llvm-profdata (opt_global_001 test 03). This test now merges the collected profiles and asserts success.

    The cli_unify_003 determinism properties now run 1,000 cases, down from 10,000.

  • RAWIDENT-2 (behaviour): a name that is a Rust reserved word (box, do, typeof, extern, …) is emitted as a raw identifier in every binding position.

  • GLOBALSHADOW-1 (behaviour): a parameter, closure/for/pattern binder, or let that has the same name as a mutable global now reads and writes the local.

    • Before, the body read the global, and a parameter failed to compile (E0530).
    • The static for global x is now __global_x.
    • x += x on a global no longer takes a second lock.
  • RETUNIT-1: a function named like arithmetic (add, double) no longer gets -> i32 when its body ends in an assignment.

  • BLOCKFOR-1: { expr⏎ for x in xs { … } } parses as a block, not as a failed set comprehension.

  • Filed to the backlog: SETCOMP-1 (SETCOMP-1: interpreter has no SetComprehension evaluation ({x * 2 for x in xs}) #247), the interpreter has no set comprehension.

Tests

  • tests/g2b_transfix_7.rs: 21 tests (RED first). Each checks that compiled and interpreted output match.
  • Local gate: fmt, clippy -D warnings, lib (20890 passed), and 16 transfix/runfix/deadlock suites.

Quorum

Brief sha 0d6aae48…, diff sha 96500bf6…, head ba96b2dd, author opus-5.5.

Seat Verdict
claude-sonnet-5 PASS
claude-haiku-4-5 PASS
gemini-3.1-pro-high (agy) FAIL, 1 finding: PGO test 03 passed a literal glob and asserted only that the process spawned. Fixed in feb1d2c5.

Receipt: /mnt/nvme-raid0/tmp/g2c-quorum/receipt.json.

🤖 Generated with Claude Code

noahgift and others added 30 commits September 24, 2026 02:02
- ruchy_binary() hard-coded $CARGO_MANIFEST_DIR/target/debug/ruchy, which does not
  exist when CARGO_TARGET_DIR points elsewhere (NotFound / EOF on 14 tests)
- now env!("CARGO_BIN_EXE_ruchy"); 14 passed, 2 ignored (pre-existing)

Pmat-Ticket: RHLGA-1
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…-094, Issue #137)

A `a::b::c(..)` call parses as Call{FieldAccess} (`obj.m(..)` is a MethodCall), so
the callee of a Call that is a lowercase-rooted FieldAccess chain is rendered as a
Rust path. self and std roots keep their existing handling. Fixes 6 tests in
tests/parser_094_path_separator.rs and tests/parser_094_property_tests.rs.
Differential: mod helpers { pub fun double } + helpers::double(4): ruchy run = rustc binary = 8.

Pmat-Ticket: RHLGA-1
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…-001, SPEC 7.11)

self_receiver_tokens turned every bare `self` into `&self` (TRANSPILER-METHOD-SELF-001),
contradicting SPECIFICATION 7.11 (`fun transfer(self)` moves). Now: &self/&mut self kept,
`mut self` kept, bare self -> self, and a bare self whose body mutates it -> &mut self
(an immutable owned receiver could not compile). Fixes 4 tests in
tests/quality_001_self_receiver.rs; backend::transpiler lib tests 3233/3233.

Pmat-Ticket: RHLGA-1
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
returns_vec only saw a trailing list literal; `let mut arr = []; arr.push(..); arr`
fell through to the numeric default -> i32. The Block tail check (block_tail_is_vec) now
also traces a trailing identifier to its let-bound list. Fixes 2 tests in
tests/issue_113_transpiler_type_inference.rs; the transpiled make_array compiles with rustc.

Pmat-Ticket: RHLGA-1
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…(description)] (BUG-033)

format_regular_attribute_impl copied attribute args verbatim; Rust's #[test] takes none.
The description is kept as a doc comment. Fixes 4 tests in
tests/bug_033_test_attribute_invalid_rust.rs (compile + property-tests paths now build).

Pmat-Ticket: RHLGA-1
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…lling

- root cause: default features (batteries-included) do not include notebook, so
  handle_serve_command is the stub; server-spawning tests could never connect
- server tests cfg(feature = "notebook"); new default-build test asserts the stub
  names --features notebook and prints the ENVIRONMENT reason
- serve validates the directory in every build (validate_serve_directory)
- fixed 500 ms sleeps replaced by wait_for_port() TCP readiness polling
- with --features notebook: http_server_cli 13/13 pass; http_watch_mode
  test_serve_with_watch_starts_successfully still fails (server exits under --watch)

Pmat-Ticket: RHLGA-1
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
… RFC 1321

- root cause: 73569f2 (dependency-count chore) swapped the md5 crate for sha2,
  silently changing compute_hash from 32-hex MD5 to 64-hex SHA-256; docstring,
  STDLIB-005 tests and ticket all specify MD5
- src/stdlib/hash.rs: md5_hex/md5_digest, RFC 1321 A.5 suite + padding
  boundaries + proptest (32 lower-hex); no new crate dependency
- METHODS-1 lib tests updated from SHA-256 to MD5 digests

Pmat-Ticket: RHLGA-1
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
- readme_validation: README title is <h1 align=center>Ruchy</h1> and the usage
  section is '## Core Commands'; test accepts those spellings (sections exist)
- dogfood_gates_declared: scripts/release-policy.sh landed (PMAT-135); pending
  allowlist emptied as the test itself instructs
- tooling_002: 0.6 is a minimum (traces from 0.6.2 read fine on 0.10.2; all
  other renacer tests pass), parsed as a (major, minor) floor, not a substring pin

Pmat-Ticket: RHLGA-1
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
… threshold; version 5.0.x

- contracts check --min-coverage 80 on a contract-free file reports 0.0% and
  exits 1 (correct gate behaviour); test asserted success
- version test pinned 5.0.0-alpha; crate is 5.0.0-beta.2 -> assert 'ruchy 5.0.'

Pmat-Ticket: RHLGA-1
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
… test enabled

- parser_defect_010: the default-method body was f"...", x) (a stray ')' after an
  f-string); the parser rightly rejects it. Body is now the spec's interpolated form
  f"(Read more from {self.summarize_author()}...)".
- sqlite_163: 'fun next(self): Option<Self.Item>' is not Ruchy syntax (SPECIFICATION
  uses '-> Option<Self::Response>'); now '-> Option<Self::Item>'.
- test_parser_010_transpile un-ignored: trait associated types already transpile.

Pmat-Ticket: RHLGA-1
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
… yet implemented'

- handle_complex_command sends Commands::Prove to dispatch_analysis (it was only
  listed there, so it fell through to dispatch_tooling's wildcard and exited 0).
- dispatch_tooling's wildcard arm (eprintln + Ok) is gone: the match names every
  Commands variant, so an unrouted new variant no longer compiles. Variants main
  or dispatch_analysis own return an internal routing error.
- tests/g2b_s2_cli.rs walks every verb in `ruchy --help` (recursing into command
  groups) on a trivial input; none may exit 0 printing the stub line.

Pmat-Ticket: RHLGA-1
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
….f)(..)

The parser marks a FieldAccess written with `::` (Expr::is_path_access, attribute
"::", not spellable in source); the interpreter still sees a plain FieldAccess.
The transpiler renders a marked chain as a Rust path and wraps an unmarked
FieldAccess callee in parens, replacing the G2B-T1 lowercase-root heuristic.
tests/g2b_t2a_receiver_and_paths.rs: module path, std::cmp::max, Point::new,
closure field (rustc-run); hand mutation is_path_access=false -> 2 RED.

Pmat-Ticket: RHLGA-1
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
test_bug_syntax_001 demanded an 'Attributes are not supported' error, the
pre-5.0 behaviour that PARSER-ATTR-001 removed. ruchy-5.0-sovereign-platform.md
section 3 defines attribute ::= '#[' IDENT ( '(' arg_list ')' )? ']', so the test
now asserts -e accepts the struct and transpile carries #[derive(Debug..)] through.

Pmat-Ticket: RHLGA-1
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…fn main

async fun main transpiled to async fn main (rustc E0752) and a sync main using
await emitted .await in a non-async fn (E0728). ruchy compile invokes rustc with
no tokio, so main's body now runs as an async move block under a std-only,
thread-parking __ruchy_block_on (no unsafe); a non-unit tail is bound and printed
outside the println! macro so the awaited body stays rustfmt-formatted.
Detection is exact: the emitted body contains the await keyword token.
tests/g2b_t2b_misc.rs: sync-main-await, async-main, printed-tail, compiled and run.

Pmat-Ticket: RHLGA-1
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
- infra plan/apply/drift/destroy require a regular file (verify_regular_file).
  `ruchy infra destroy /nonexistent` exited 0 because /nonexistent is a real
  directory on this host; it now exits 1 with "... is not a file".
- CLI tests with a path missing on every host and with a directory.

Pmat-Ticket: RHLGA-1
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ored

- cargo package --list refuses any dirty tree; the test now fails with
  "working tree is dirty: ..." plus the git status lines when that is the
  cause, instead of only cargo's raw error. No --allow-dirty.
- Root .gitignore covers src/.pmat/, .pmat/*.db, .pmat/jidoka.jsonl,
  .pmat/clippy-receipt, .pmat/dead-code-cache-*.json (previously ignored only by
  pmat's own untracked nested .gitignore, absent in a fresh clone); a test
  checks them against the root .gitignore in a scratch repo.

Pmat-Ticket: RHLGA-1
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…reated

Root cause: FileWatcher::new failed with EMFILE ("Too many open files") when
the per-user inotify instance limit (fs.inotify.max_user_instances=128 here) was
exhausted by other processes, and run_watch_mode propagated it with `?`, so the
server exited ~immediately (reproduced: 60 extra inotify holders -> exit 1).
- open_watcher warns on stderr (cause + remedy) and serve falls back to
  run_normal_mode; after the fix the same reproduction keeps serving.
- The watcher is created once per session, not once per restart.

Pmat-Ticket: RHLGA-1
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…rving forever

- handle_serve_command = ServeRequest + serve_until(request, shutdown_on_signal)
- serve_until takes the shutdown channel installer; tests pass a pre-sent channel
- run_normal_mode returns the server's own error (e.g. port in use) instead of waiting forever
- new tests: real GET then shutdown, port-in-use error, watch mode stops
- pid-file test uses a tempdir, not /tmp/pid (PidFile::new kills the recorded pid)
- serve_handler tests under --features notebook: 17 passed in 0.15s (was: hung >60s)

Pmat-Ticket: RHLGA-1
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…call

- create_field_access spans receiver.start..field-name end (was 0..0), incl. tuple index t.0
- try_handle_postfix_call's same-line check now sees the real end; (h.f)(3) no longer splits into h.f; 3
- tests: tests/g2b_s3_misc.rs test_parencall_1_* (committed with G2BS8); hand-mutation span->0..0 fails 5/6

Pmat-Ticket: RHLGA-1
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
- module body parses a pub item via parse_pub_token (pub struct/enum/mod/use/fun, pub(crate))
- transpile_module_declaration emits nested modules as items: pub mod b { .. }, not mod b { { .. } }
- tests/g2b_s3_misc.rs: PARENCALL-1 + NESTEDMOD-1 differential (interpreter vs rustc); 10/10
- hand-mutation dropping pub on nested modules fails nestedmod 01/04 (E0603)

Pmat-Ticket: RHLGA-1
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Pmat-Ticket: RHLGA-1
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…nd format! substitute like the macro

Pmat-Ticket: RHLGA-1
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…dded on main by #243)

Pmat-Ticket: RHLGA-1
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…oot; router tests exercise the real routes

The proptest compiled random strings with the default output, so an empty or whitespace input produced a.out in the working directory. It and two tests writing fixed /tmp paths now compile into their own temp dirs. The six handle_advanced_command tests had passed only through the removed catch-all: parse, transpile, check and compile now go through handle_command_dispatch; publish and repl assert the router refuses a main-routed verb.

Pmat-Ticket: RHLGA-1
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
… a restart awaits the aborted server

- run_watch_mode polls the server task like normal mode (poll_server) and
  returns its outcome when it ends on its own; a file change aborts the task
  and awaits it before rebinding (serve_until_change, stopped_on_change,
  spawn_server)
- test_serve_until_watch_mode_reports_a_port_in_use (RED: hung past 20 s)

Pmat-Ticket: RHLGA-1
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…zed; G2BFA2: &mut self sees nested/indexed field writes, field ++/--, mutating std methods on fields and mutating sibling calls (fixpoint)

Pmat-Ticket: RHLGA-1
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…r outside callee position

Pmat-Ticket: RHLGA-1
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…A5: an awaiting main keeps its declared return type; block_on park/wake is exercised

Pmat-Ticket: RHLGA-1
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…p and the crate root; the CLI verb walk is hermetic

- g2b_t3_misc, g2b_t2a_receiver_and_paths: scratch_dir returns a TempDir
- quality_001_self_receiver: rustc_lib compiles in a TempDir with --out-dir
  (no fixed /tmp paths, no .rlib in the crate root)
- g2b_s2_cli: every leaf verb's --help must exit 0 without the stub line; only
  offline-safe verbs (parse, check, transpile, ast, lint, fmt, score, tier,
  provability, prove, explain) run for real; a timeout fails

Pmat-Ticket: RHLGA-1
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…(3) from source; is_path_access no longer steals Expr::new's docs

- g2b_t2a t5_02: nested pub mod parses and transpiles; only std::cmp keeps it
  transpiler-only
- g2b_t2a t5_04: the program calls (h.f)(3) directly; retarget_probe removed
- ast.rs: is_path_access moved above Expr::new's doc block

Pmat-Ticket: RHLGA-1
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
noahgift and others added 24 commits September 24, 2026 12:43
Compound assignment, nested-index assignment, field assignment through an
indexed chain and in-place array methods on an element freeze the place
first: every index expression is evaluated once and replaced by its value's
literal, so the read and the write-back run no index expression again.

Pmat-Ticket: RHLGA-1
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
The interpreter used a non-literal first argument with two or more
arguments as the template (println(s, 1) printed 1); the compiled binary
joins every argument with spaces (prints {} 1). Only a string-literal first
argument is a template now.

Pmat-Ticket: RHLGA-1
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
render records which positional argument each {} or {N} field uses and
reports the first one no field references, following rustc's rule; it used
to ignore extra arguments.

Pmat-Ticket: RHLGA-1
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…(found by G2b fix workers)

Pmat-Ticket: RHLGA-1
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
- eval_builtin_comprehensive test_print_no_newline pinned print("A") as "A";
  PRINTSTR-1/FMTSPEC-1 print the text, as the compiled print! does
- opt_022 hidden_class_transition pinned {} of 10.0 as 10.0; FLOATDISP-1 prints 10
- transpiler_deadlock_fix properties generated keyword names (fun); assume the
  lexer reads the name as one identifier
- cli_unify_003 prop_030/031 (10K spawns) ran 113-119s against a 120s kill;
  the property override now also matches property-test binaries

Pmat-Ticket: RHLGA-1
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…are vec!

Pmat-Ticket: RHLGA-1
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…s not printed

Pmat-Ticket: RHLGA-1
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
The for loop assigned its variable with set_variable, which overwrote a
same-named outer binding, and ignored the parsed pattern, so for (k, v)
bound k to the whole tuple. Each iteration now pushes a scope, binds the
pattern (try_pattern_match) there, runs the body and pops the scope.
if-let, while-let and match arms did not leak; a regression test pins that.

Pmat-Ticket: RHLGA-1
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
eval_array_repeat clones the elements n times; a negative or
non-integer count is a runtime error. Dispatched with the other
one-argument array methods in eval_array.rs.

Pmat-Ticket: RHLGA-1
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ral-template rule

format_sink_for now routes any identifier bound to a __builtin_*__
format marker (println, let g = format, a parameter holding one) through
eval_format_call, the single FMTTEMPLATE-1 implementation, so only a
string-literal first argument is a template. The value-only path
(eval_builtin_format) keeps its heuristic for callees that are not
identifiers, where no argument expressions exist.

Pmat-Ticket: RHLGA-1
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…kers)

Pmat-Ticket: RHLGA-1
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
… with Display

- A named function's parameters whose emitted (inferred) type is String/&str
  are recorded as strings, so println(s) uses {} (track_emitted_string_params).
- A closure bound by let takes its untyped parameters' call-site types
  (call_site_arg_types) for the same choice (with_closure_param_scope).
- Parameters of unknown or non-string type keep {:?}.
- tests/g2b_transfix_6.rs: 7 end-to-end tests (compile, run, ruchy run).

Pmat-Ticket: RHLGA-1
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…terals is a vec! too

- transpile_let/transpile_let_with_type record a binding whose inner list
  literals were emitted as vec! (the NESTARRVEC-1 rewrite) in
  inner_vec_lists; any other binding of the name clears it, as does a
  new function.
- transpile_method_call emits the element argument of push/insert on such
  a binding as vec![..], so m[0].push(2); m.push([3]) compiles.
- tests/g2b_transfix_6.rs: 4 end-to-end tests (compile, run, ruchy run).

Pmat-Ticket: RHLGA-1
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
- Arrays: clone, to_vec, to_owned (eval_array nullary dispatch)
- Tuples: clone, to_owned (eval_method::eval_generic_method)
- Strings: clone, to_owned (eval_string_methods zero-arg dispatch)
- Plain objects: clone (eval_method_dispatch::eval_plain_object_method)
- A clone is independent of its source; tests/g2b_runfix_6.rs (7 tests)

Pmat-Ticket: RHLGA-1
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…batim, as compiled code does

Found by the G2b final quorum (second sonnet seat). format(lit) stays a template.

Pmat-Ticket: RHLGA-1
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ariables over string items print as text

Found by the G2b round-2 quorum (sonnet seat). Trailing for/while/+= in main are unit; strings gain split_whitespace in the interpreter.

Pmat-Ticket: RHLGA-1
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…n list-typed params and bindings

Found by the G2b round-3 confirmation seat (sonnet): an untracked Vec/Option receiver got {} and failed rustc. Vec records are cleared per function.

Pmat-Ticket: RHLGA-1
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Pmat-Ticket: RHLGA-1
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ates vec![x; n]

Found by the G2b round-4 quorum (sonnet and agy seats).

Pmat-Ticket: RHLGA-1
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Roadmap resolved by row: branch rows kept, PMAT-140 appended from main.

Pmat-Ticket: RHLGA-1
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…named-environment ignores

Pmat-Ticket: RHLGA-1
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…identifiers

Pmat-Ticket: RHLGA-1
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…CKFOR-1

- Mutable globals emit as static __global_<name>; with_globals_shadowed hides a
  global for the lexical scope of params, closure/for/pattern binders and lets
- x += x on a global reads the guard instead of taking a second lock
- The numeric-name return heuristic applies only when the body ends in a value
- A failed set comprehension backtracks so { stmt\n for .. { } } parses as a block
- tests/g2b_transfix_7.rs: 21 tests; SETCOMP-1 filed as #247 (backlog)

Pmat-Ticket: RHLGA-1
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ccess

Quorum finding (agy lane, G2c): test 03 passed an unexpanded glob to Command and checked only that the process spawned.

Pmat-Ticket: RHLGA-1
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@noahgift noahgift added this to the v5.0.0 milestone Sep 24, 2026
@noahgift

Copy link
Copy Markdown
Contributor Author

quorum-review (AD-04): NOT agreed (auto_merge: checked=true was_armed=false disarmed=false)

{
 "ticket": "RHLGA-1",
 "head": "feb1d2c5b7b9ce8554bae492a4ce3e007451a934",
 "width": 3,
 "executor": "agy",
 "agreed": false,
 "auto_merge": {
  "checked": true,
  "was_armed": false,
  "disarmed": false,
  "note": "auto-merge not armed"
 },
 "lanes": [
  {
   "lane": 1,
   "verdict": "FAIL",
   "findings": 3
  },
  {
   "lane": 2,
   "verdict": "PASS",
   "findings": 8
  },
  {
   "lane": 3,
   "verdict": "PASS",
   "findings": 5
  }
 ]
}

@noahgift

Copy link
Copy Markdown
Contributor Author

quorum-review (AD-04): NOT agreed (auto_merge: checked=true was_armed=false disarmed=false)

{
 "ticket": "RHLGA-1",
 "head": "feb1d2c5b7b9ce8554bae492a4ce3e007451a934",
 "width": 3,
 "executor": "agy",
 "agreed": false,
 "auto_merge": {
  "checked": true,
  "was_armed": false,
  "disarmed": false,
  "note": "auto-merge not armed"
 },
 "lanes": [
  {
   "lane": 1,
   "verdict": "FAIL",
   "findings": 1
  },
  {
   "lane": 2,
   "verdict": "PASS",
   "findings": 9
  },
  {
   "lane": 3,
   "verdict": "PASS",
   "findings": 7
  }
 ]
}

- infer_return_type_with_lifetime used looks_like_numeric_function(name)
  alone, so an `add` with 2+ reference params and a reference return
  still got `-> i32` when its body ended in an assignment. It now uses
  is_numeric_named_value_function(name, body), like the plain path.
- 2 unit tests (RED: "expected unit, got -> i32"); lib 20892 pass.
- docs/audits/impl-RHLGA-1-receipt.md: G2c scope, HOSTDEP-1 acceptance
  for the named-environment ignores, quorum rounds 1-3.
- Found by the G2c quorum (gemini-3.1-pro lane).

Pmat-Ticket: RHLGA-1
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@noahgift

Copy link
Copy Markdown
Contributor Author

quorum-review (AD-04): three PASS — agreed (auto_merge: checked=true was_armed=false disarmed=false)

{
 "ticket": "RHLGA-1",
 "head": "bb8b7ec012d329295f28a65393785e139d6aecb1",
 "width": 3,
 "executor": "agy",
 "agreed": true,
 "auto_merge": {
  "checked": true,
  "was_armed": false,
  "disarmed": false,
  "note": "auto-merge not armed"
 },
 "lanes": [
  {
   "lane": 1,
   "verdict": "PASS",
   "findings": 5
  },
  {
   "lane": 2,
   "verdict": "PASS",
   "findings": 10
  },
  {
   "lane": 3,
   "verdict": "PASS",
   "findings": 10
  }
 ]
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant