Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le 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

Aperta
#1,229 1 commento 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
5/5
Tempo stimato
Più di una settimana
Idoneità per principianti
32/100
Tipo di issue
Bug
Chiarezza
Abbastanza chiara
Stato di attività
Attiva
Stack tecnologico
shell

Direzione di ricerca

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.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

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.
Lingua principale
C
Stelle
3
Fork
7
Merge medio
4h 7m
PR unite (30g)
112

Preparare l'ambiente

Apri in Codespaces

Avvia il container di sviluppo del progetto nel browser, con il tuo account GitHub.

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di InauguralSystems/EigenScript

Tutte le issue di InauguralSystems/EigenScript

Issue simili

Altre issue su C

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.