Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

consumer_acceptance.sh: residuals ledger after the six-round critic loop (#1224) — fit to gate the 16 real consumers; 12 ranked holes for hypothetical shapes

Đang mở
#1,229 1 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 1 ngày

Chưa có ai nhận issue này.

Đánh giá

Độ khó
5/5
Thời gian dự kiến
Hơn một tuần
Mức phù hợp với người mới
32/100
Loại issue
Lỗi
Độ rõ ràng
Khá rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
shell
Lĩnh vực
release, testing-qa

Hướng nghiên cứu

Start with tools/consumer_acceptance.sh and the reproducer for one ranked residual under /tmp/critic-fable-b-r6/ or /tmp/critic-astra-b-r6/. Check the corresponding wording in docs/CI.md or CHANGELOG when the residual is documentary. Done means the selected reproducer no longer passes incorrectly and its stated contract matches the observed behavior.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

area:gates found-by:critic kind:gate-defect

Residuals ledger for tools/consumer_acceptance.sh after the six-round blind-critic loop on PR #1224 (m1b-harness, head c53429f). Both critic families (Claude Fable build-critic, GPT-6 Astra) converged on the same verdict: the harness is fit to gate a release wave over the 16 real consumers' actual scripts today (no consumer has any of the shapes below — measured by grep over all 16 checkouts: the only PATH= lines in the ecosystem are five Dockerfile ENV PATH lines), and every remaining gap needs a shape no real consumer has. The loop stopped at its declared cap; these are the ranked residuals, each with a reproducer under /tmp/critic-fable-b-r6/ or /tmp/critic-astra-b-r6/ (this box) and, where pinned, a self-test plant that FIRES only while the residual holds.

Class the six rounds closed: a stale eigenscript* binary reachable BY NAME while the row reads PASS — via derivation (r1–r2), PATH order (r3), PATH enumeration and farm relocation (r4), and literal PATH edits in consumer scripts (r5–r6).

Ranked residuals (outside stated residuals unless marked)

  1. Checkout-prefixed literal component escaping by ../.. or a symlink is accepted (Astra r6, LAYER containment policy): path_edit_offender keeps _skip=1 if EITHER the written OR the resolved form matches an allowed prefix; /checkout/../../abs and a symlink out of the checkout both run the stale binary under PASS. Fix: containment on the RESOLVED form only. → fixed in the docs+containment round 7 of #1224 if landed; otherwise open.
  2. export PATH="/abs${PATH:+:$PATH}" (Fable r6): _components tracks $( nesting but not ${; the first component carries $ and is dropped as computed → PASS + stale ran.
  3. Sourced extensionless helper without a shebang (. ./env) is never opened by the scan (file-kind list: .sh .bash .zsh, shebang'd extensionless, .yml runCmd, Makefile/.mk, .eigs).
  4. Python subprocess.run("PATH=/abs:$PATH …", shell=True) — .py not scanned (borderline: the "non-shell API" stated residual).
  5. Makefile.in → Makefile copied by the row — .in unscanned; refused on the SECOND wave only (both critics).
  6. Line-continued value (export PATH=\ + newline) and ANSI-C quoted ($'/abs') components unseen.
  7. ~nosuchuser/bin (no passwd entry) → component skipped → PASS (both critics).
  8. Docs: the round-6 CHANGELOG entry still describes the round-5 positional rule; docs/CI.md's "a substring does not have a next hole" and "any syntactic position … no longer a residual" are refuted by 1–7 (fixed in round 7 docs).
  9. Record-lifecycle wording: a scratch refusal exits 2 and leaves the previous VERDICT: PASS record byte-identical (designed, pinned by scratch-fail-closed); the header's "never a previous run's PASS" sentence contradicts the usage-error sentence. A wave driver must read rc, never only the file.
  10. Read-only record directory exits 1 by name (plant F expects 1), not the exit 2 the fail-closed claim describes — contract wording.
  11. ~root/bin reads PASS as uid 1000 because [ -d ] is also a permission test (visible only under a root run).
  12. Transverse row count is 60, not the 61 the round-6 brief stated (banner line double-counted).

Stated and pinned (do not re-file)

  • A farmed, self-locating inherited wrapper (readlink -f "$0") execs a stale eigenscript* sibling (farm-wrapper-sibling); closures: an execve witness (LD_PRELOAD) or a mount namespace, both deferred.
  • Runtime-computed PATH components (path-edit-computed); a path computed inside the checkout (variant-glob-residual); Dockerfile lines; sub-sh scripts rely on the sweep's shims; a TAB/non-ASCII byte in an inherited PATH dir name → FAIL|127 never PASS; +2–7 ms per farmed call; a gate that fabricates its own output is out of scope.
  • Root gate for c53429f is PENDING (two sudo dialogs unanswered on 2026-09-21); it runs on the final head before merge.
Ngôn ngữ chính
C
Star
3
Fork
7
Merge trung bình
3 giờ 58 phút
Pull request đã merge (30 ngày)
105

Chuẩn bị môi trường

Mở trong Codespaces

Khởi chạy dev container của dự án ngay trên trình duyệt, bằng tài khoản GitHub của bạn.

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của InauguralSystems/EigenScript

Tất cả issue của InauguralSystems/EigenScript

Issue tương tự

Thêm issue về C

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.