Test & quality alignment plan
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 35/100
- Tipo di issue
- Refactoring
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Attiva
- Stack tecnologico
- bash, bun, next.js, typescript
- Ambito
- build-system, documentation, testing, tooling
Direzione di ricerca
Inizia con la Fase 0 in tests/000_generate.test.sh e negli altri tests/*.test.sh: esegui il ciclo di test dalla radice del repository, esamina le due asserzioni dell’opzione di versione e rimuovi il .simplecov orfano. Poi leggi makefile e AGENTS.md prima della Fase 1; il lavoro è completato quando i gate make test/check specificati hanno esito positivo, i fixture sono sicuri per l’esecuzione parallela e i percorsi di validazione di Bash, Bun e della documentazione rispettano i comandi elencati.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
parseArger — Test & Quality Alignment Plan
Revised 2026-09-05: CI removed by owner decision — quality gates are local commands run by the owner/agents; no GitHub Actions.
- Project: parseArger (
/home/didi/workspace/parseArger, GH:DimitriGilbert/parseArger) - Date: 2026-09-05
- Generated by the fleet test-alignment initiative (28-repo audit + synthesis)
- Audit report:
../.test-alignment-audit/reports/parseArger.md - Fleet synthesis (decisions D1–D7, DoD):
../.test-alignment-audit/synthesis-decisions.md
(links are workspace-relative; they resolve inside/home/didi/workspace, not on GitHub)
Stack reality: core product is Bash (~25.8k LOC, self-hosting arg-parser framework), tested by a vendored bashunit suite (lib/bashunit, lib/bashunit_ext; 11 files, 111 tests, ~738 assertions) that executes generated scripts end-to-end. Two Bun sub-projects ride along: packages/parsearger-js (TS wrapper, bun test + tsc --noEmit) and docs/ (Next.js 16, eslint + check-types). Root tooling is a lowercase makefile with 4 targets and no test target. No CI today (.github/ holds only ISSUE_TEMPLATE/).
1. Adopted decisions (D1–D7 translated to bash)
| Decision | Adoption here | Notes / deviations |
|---|---|---|
| D1 — ecosystem-native runner & layout | bashunit stays (explicit, sanctioned deviation from the fleet's vitest norm — D1 names parseArger directly). Tests stay in tests/*.test.sh, directly executable, run from repo root. Fleet requirement "headless root-level one-command test entry" is satisfied by a new make test target. |
No mass rename, no framework change. The vendored lib/bashunit_ext (assert_files_equals) stays. |
| D2 — coverage: measure, gate almost nowhere | Bash repos: coverage not required. Adopt the synthesis's explicit branch: delete the orphaned .simplecov (bashcov-era config with no Gemfile, no runner, no thresholds — an unowned config is worse than none). No thresholds ever. |
Reverse option (adopt bashcov properly: Gemfile + runner + ratcheted threshold per D2 state 2) is recorded as an optional deferred phase (Phase 6), not v1. |
| D3 — lint & format: one primary stack per language | shellcheck + shared .shellcheckrc and shfmt -d in the local gate — exactly the bash clause of D3. Wired via makefile targets. |
Reality correction to the audit: the audit says "only 2 inline disables"; the repo actually carries 67 scoped # shellcheck disable=SC2145 directives across generated code — the generator already emits shellcheck-acceptable output. This makes the gate cheaper; remediation focuses on what remains. |
| D4 — quality metrics (CRAP/jscpd/knip) | N/A in v1. All three tools are TS/npm-oriented; bash has no in-fleet precedent. Analogue recorded only: shellcheck severity summary as a report-only line printed by the local report command. Deferred to Phase 6 (optional). | No gate on any unmeasured metric (synthesis §5). |
| D5 — no CI by design (owner decision 2026-09-05) | No GitHub Actions, no reusable-workflow caller, no local workflow. The earlier "local ci.yml later swapped to a DimitriGilbert/.github bash-ci.yml caller" plan is dropped entirely. Enforcement = the root-level headless verification entrypoint (make check: test → shellcheck → shfmt, composed in Phases 1–3) run by the owner and by agents; the plan's phase validation gates are run by implementer/validator agents before any phase is declared done. Bun sub-projects (packages/parsearger-js, docs/) get their own local check lanes (Phase 4). |
|
| D6 — shared config distribution | Repo-local .shellcheckrc for now; it is the template other bash repos copy locally (org-repo hosting dropped per D5). @dg/config npm package: N/A (no TS core). |
Partial adoption; sharing happens by copying, not cross-repo infrastructure. |
| D7 — hooks: the local gate commands run by the owner/agents are the only authoritative gate | Applies directly. No hooks in v1 (no lefthook/pre-commit). AGENTS.md states: "the headless local verification command (make check) is the quality gate, run by the owner/agents; local hooks are optional convenience." A repo with no hooks and a green make check is compliant. |
— |
2. Execution model (subagent-orchestration skill)
Every phase below is executed by an orchestrator dispatching subagents — the orchestrator never writes code. Per phase:
- Implementer dispatch with the COMPLETE phase requirements, file list, boundaries, the NO-SLOP policy, and instruction to run the phase's gatekeeping commands before reporting done.
- Validator dispatch (different agent) that MUST read the changed files line-by-line, verify each requirement, re-run the gate commands, and enforce NO-SLOP. Validators never modify code.
- On FAIL: fixer dispatch with ALL validator findings at once (fixer re-runs gatekeeping), then a fresh validator. Max 3 fix attempts per phase, then halt and report.
- Phases are sequential unless marked parallel. Parallel phases use per-sub-phase implementer+validator pairs, then a mandatory phase-wide validator reading all sub-phase output together (integration, style coherence, no duplicated fixes).
NO-SLOP policy for this repo (bash adaptation, pasted verbatim into every implementer/fixer dispatch):
- NO placeholder code, NO
# TODO, NO# FIXME— this includes resolving the existing TODO attests/000_generate.test.sh:28, not adding new ones. - NO unused variables or functions; no dead code left behind.
- NO unquoted variable expansions in new/modified lines (repo convention: always
"$var"). - Repo style is mandatory in all edits: tabs for indentation,
localinside functions,snake_casenaming,diefor errors,sourcewith paths resolved relative to the script (seeAGENTS.md). - Generated-code rule (AGENTS.md, CRITICAL): never hand-edit between
# @parseArger-parsing…-endmarkers — change the emitting code inbin/(or the declarations) and regenerate viabin/generate/make reparse. - Gatekeeping (this repo's equivalent of mandatory check-types): the phase's validation-gate commands must pass cleanly before any implementer/fixer reports done.
3. Phased plan
Phase 0 — Suite truthfulness & runnability (effort: S)
Goal: the documented "run all tests" loop actually works, and every assertion asserts something.
Tasks (implementer):
- Make all test files executable:
chmod +xontests/000_generate.test.sh,tests/003_generate.flag.test.sh,tests/004_generate.arg.subcommand.test.sh,tests/005_parse.test.sh,tests/006_document.test.sh,tests/007_complete.test.sh,tests/008_html.test.sh,tests/009_project.test.sh(8 of 11 are mode 644 today — the AGENTS.md loop"$t"aborts with Permission denied on the first one). - Fix the 2 vacuous assertions —
tests/000_generate.test.sh:172(test_generate_version_opt) and:204(test_generate_version_opt_short):assert_contains "$hlpmsg" "$hlpout"references an undefined$hlpmsg, so the assertion always passes. Mirrortest_generate_version(line 142): assert the generated script's--$hlpopt/-$hlpoptoutput contains$ver(local ver="0.0.1"is already in scope and unused for the assertion). If this uncovers a real bug in--version-opt-name/--version-short-optiongeneration, fix the generator (bin/generateside), regenerate, and note it in the phase report. - Resolve the stale
# TODO: fix test with args should fail gracefullyattests/000_generate.test.sh:28(abovetest_generate_file): either add the graceful-failure assertion the TODO describes (the adjacentassert_exit_code "1" ... "arg1"already hints at expected behavior — make it explicit and commented) or delete the TODO comment if the behavior is already fully asserted. No TODO may remain (NO-SLOP). - Delete
/home/didi/workspace/parseArger/.simplecov(D2 bash branch: orphaned bashcov config, filters even reference test-generated/tmppaths). Leave.gitignore'scoverageentry — harmless — or remove it in the same commit; implementer's choice, validator accepts either. - Note for orchestrator: tests
source "./lib/bashunit_ext"and invoke./parseArgervia relative paths — every test invocation is repo-root-cwd-dependent. Preserve this; the makefile targets (Phase 1) anchor cwd at the repo root.
Validation gate (validator must run all of these from /home/didi/workspace/parseArger):
for t in tests/*.test.sh; do "$t" || exit 1; done # green, no Permission denied
test -x tests/000_generate.test.sh && ! ls .simplecov 2>/dev/null
grep -n 'assert_contains "$hlpmsg"' tests/000_generate.test.sh # must return nothing
grep -rn 'TODO\|FIXME' tests/ # must return nothing
Validator additionally reads tests/000_generate.test.sh in full and confirms both version-opt tests now assert $ver against real output.
Roles: 1 implementer → 1 validator (fix loop ≤3).
Phase 1 — One-command runner + parallel-safe fixtures (effort: S)
Goal: make test is the headless root-level entry (D1 requirement); tests stop writing to hardcoded /tmp/gentsttmp* paths.
Tasks (implementer):
makefile: add atesttarget implementing the AGENTS.md loop:
Add an aggregatetest: @for t in tests/*.test.sh; do echo "Running $$t..."; "$$t" || exit 1; donecheck: testtarget as the future one-command gate (shellcheck/shfmt get appended in Phase 2). Keep the existing 4 targets untouched.- De-hardcode fixtures in all 11
tests/*.test.sh: replacetftmp_file="/tmp/gentsttmp"with a per-run temp dir, e.g.tftmp_file="$(mktemp -d)"plus atrap 'rm -rf "$tftmp_file"' EXITat the top of each file; convert the remaining bare/tmppaths per file:tests/000_generate.test.sh:129-139—/tmp/generate.source.test→"$tftmp_file/generate.source.test"(and fix the literal in theassert_containsat line 135 to match the variable, e.g."source $tftmp_file/generate.source.test").tests/005_parse.test.sh:226-248—/tmp/parse.source.test→ same pattern (including literals in assertions at 232/238/245).tests/004_generate.arg.subcommand.test.sh:87-102—"/tmp/$scmdv"→"$tftmp_file/$scmdv".tests/009_project.test.sh— project namesgentsttmp_project*are created via the scaffold; ensure they land under"$tftmp_file"(or cwd-anchored temp) and cleanup usesrm -rfon the temp dir, not per-assertionrms that leak on failure.tests/010_xdg.test.shalready uses"/tmp/xdg_test_config_$$"— migrate tomktemp -dfor consistency (it is the in-repo precedent that motivated this change).
- Update
AGENTS.md"Testing" section: documentmake testas the primary command, keep the per-file command, and add the D7 gate sentence ("CI on GitHub is the quality gate; hooks are optional local convenience").
Validation gate (from repo root):
make test # green
make test & make test; wait # two concurrent runs both green (parallel-safety smoke)
grep -rn '"/tmp/gentsttmp' tests/ # must return nothing
grep -rnE '=/tmp/|"/tmp/[a-z]' tests/ # implementer walks validator through any remaining /tmp hits
Validator reads all 11 diffed test files and confirms traps exist, assertions' embedded literals were updated together with paths, and no assertion was weakened during conversion.
Roles: 1 implementer → 1 validator (fix loop ≤3).
Phase 2 — shellcheck + shfmt green (effort: M)
Goal: the core bash tree passes shellcheck and shfmt -d under an explicit, committed baseline — the D3 bash gate — without violating the generated-code contract.
Tasks:
Sub-phase 2a (implementer A) — tooling config:
- Create
.shellcheckrcat repo root: baseline global disables only for checks the repo deliberately rejects (start minimal; candidates:SC2145is already handled by scoped inline directives — do not duplicate globally). Add excludes for vendored code paths if needed. - Decide and document the shfmt profile: tab indentation (matches AGENTS.md),
shfmt -d -i 0(or repo-equivalent flags) recorded verbatim in the makefile target so every run is identical. - Makefile: extend
checkwithshellcheckandshfmt -dover the product tree:parseArger,bin/(recursive),utils/,scripts/build-packages,tests/— excluding vendoredlib/bashunitandcompletely.bash(vendor stays unformatted;lib/bashunit_extis 20 lines and may be included).
Sub-phase 2b (implementers B/C/D — parallel) — remediation by area:
- B: hand-written surface —
parseArger(non-generated sections),bin/bulk-parse,bin/create,bin/project,utils/*,scripts/build-packages: fix findings at the source (quote expansions, local vars, proper test quoting). 67 scopedSC2145disables already exist in generated blocks — leave those alone; they are the intended pattern. - C: generated-code emitters — where shellcheck findings live between
# @parseArgermarkers, fix the emitting logic inbin/generate,bin/arg*,bin/opt/*,bin/flag/*,bin/pos/*,bin/nested/*templates, then regenerate withbin/generate/make reparse. Never hand-edit marker blocks. If a finding is a false positive inherent to emitted code, add a scoped inline# shellcheck disable=in the emitter (matching the existing SC2145 pattern), not a global rc entry. - D: tests —
tests/*.test.sh+lib/bashunit_ext: fix or scoped-disable; tests are also the consumer-facing examples of parseArger output style, so prefer real fixes.
Phase-wide (after 2a–2d validators pass): phase-wide validator runs the full gate, diffs git status to confirm no marker-block hand-edits slipped in (spot-check via grep -c '@parseArger-parsing' stability + make reparse idempotency), and checks style coherence across areas.
Validation gate:
shellcheck -x parseArger bin/**/*.sh utils/* scripts/build-packages tests/*.test.sh 2>/dev/null || \
shellcheck -x $(find bin utils tests -name '*.sh' -o -type f -path 'bin/*' | sort -u) # exact invocation lives in the makefile check target
make check # test + shellcheck + shfmt -d, all green
git diff --stat # reviewed by validator for unexpected mass churn
Gate policy: zero unaccepted findings at severity warning and above; any remaining info-level findings must be enumerated in the phase report (ratchet later, never lower).
Roles: 4 implementers (A–D, parallel for B/C/D after A lands) → 4 validators (one per sub-phase, dispatched right after each implementer) → 1 phase-wide validator. Fix loop ≤3 per sub-phase.
Phase 3 — Gate composition: make check is the gate (effort: S)
Goal: the 111-test suite + shellcheck + shfmt run via one headless root command — the P1 gap closed locally (D5).
Tasks (implementer):
- Finalize the
checktarget composition:make check=test+shellcheck+shfmt -d(extended from Phase 2), run from repo root (tests are cwd-sensitive — the makefile anchors this). - Git identity for the run:
tests/009_project.test.shscaffolds projects that rungit init/git add/git commit. The owner's/agents' machines normally have an identity configured; if the validating machine does not, use a throwaway identity viagit -c user.name=... -c user.email=...env for the run — never a global config change. Repo-local config inside the scaffolded fixture is the cleaner follow-up (optional, Phase 6). - Update
AGENTS.mdTesting section: namemake checkas the quality gate (D7 wording).
Validation gate:
make check # test + shellcheck + shfmt -d, all green from repo root
git ls-files # no workflow file anywhere; nothing under .github/workflows/
The implementer/validator agents record the green make check output before the phase is declared done (D5).
Known risks the implementer must handle: (a) git identity for the Phase-1 tests (above); (b) completely-related tests must not require the completely gem/docker — the suite currently only asserts invocation, verify on the first full make check run; (c) no network access assumptions in tests.
Roles: 1 implementer → 1 validator.
Phase 4 — Bun sub-project check lanes (effort: S)
Goal: packages/parsearger-js and docs/ get ecosystem-native local check commands, kept out of the bash gate lane.
Tasks (implementer): document (and makefile-wire as separate targets, e.g. check-js, check-docs) two lanes:
parsearger-js(scope:packages/parsearger-js/**):bun install --frozen-lockfile(root of that subproject;bun.lockexists) →bun run test→bun run typecheck.docs(scope:docs/**): same setup →bun install --frozen-lockfile→bun run lint→bun run check-types. (Nobuildin v1 — the deploy path is manual viadocsnpm script; adding build to the lane is deferred to keep this phase S.)
The bash core lane stays independent of both (separate targets, no cross-dependency): a docs-only change cannot failmake checkand vice versa.
Validation gate: all three lanes run green locally; verify independence by running the bash lane after touching nothing in packages//docs/ and confirming no Bun step executes.
Roles: 1 implementer → 1 validator.
Phase 5 — Dependency hygiene, docs alignment, DoD sweep (effort: S)
Goal: finish the Definition of Done and leave the repo self-describing.
Tasks (implementer):
renovate.jsonat repo root: one-liner{"$schema": "https://docs.renovatebot.com/renovate-schema.json", "extends": ["local>DimitriGilbert"]}. Deviation handling: the org preset repo doesn't exist yet (verified 404), so also include a minimal inline config today (schedule,packageRuleskeepingbun.lockupdated) and record in AGENTS.md that it must switch to the preset when the org repo lands. Verify no"latest"deps anywhere (docs/package.jsonpins exact versions — fine;packages/parsearger-jsuses^— fine).AGENTS.mdfinal pass: Testing section matches reality exactly (runner = vendored bashunit,make test, per-file execution, cwd requirement, themake checkgate, coverage = intentionally none per D2-bash,.simplecovdeleted). No phantom commands (the fleet's cropcircle/lmaafy failure mode).- DoD sweep: walk the checklist in §4 below item by item; record final status in the phase report.
Validation gate: validator reads AGENTS.md against reality (every documented command exists and runs), cat renovate.json is valid JSON, and make check still green. grep -rn '"latest"' docs/package.json packages/parsearger-js/package.json returns nothing.
Roles: 1 implementer → 1 validator.
Phase 6 — Optional / deferred (effort: M, not v1-blocking)
Goal: parked items with explicit triggers. No implementer dispatched until a trigger fires.
- bashcov adoption (reverse of the Phase 0 deletion): if coverage is ever wanted for bash, do it properly —
Gemfile(bashcov),bundle exec bashcov ./tests/...runner wired into a report-only local command,.simplecovwith real thresholds per D2 state 2 (baseline − 5, ratchet +5). Trigger: a concrete need (e.g. a regression that coverage would have caught). - Renovate preset convergence (D6): swap inline config for
local>DimitriGilbert. Trigger: preset published. - Quality-metric analogue (D4): report-only shellcheck-severity summary +
wc -ltest:code ratio printed by the report command. Trigger: a concrete need for the summary. - Graceful-failure test debt: the deleted TODO behavior from Phase 0 task 3 — if implemented as comment-removal rather than a new assertion, revisit adding a dedicated "generate with invalid args fails gracefully" test. Trigger: next touch of
bin/generateerror paths.
4. Definition of Done — per-item status (start of plan)
Fleet DoD (synthesis §3), TS-specific items marked N/A or translated:
| # | DoD item | Current status (2026-09-05) |
|---|---|---|
| 1 | Root-level headless test command exists, documented in AGENTS.md | Missing — AGENTS.md documents a copy-pasted loop; makefile has no test target → Phase 1 (make test, analogy item) |
| 2 | Headless verification entrypoint running typecheck + test + lint in one local command; agent records green before a phase is done | Missing — no one-command gate; 111 tests run only via the manual loop → Phases 1–4 (make check; Bun lanes for the sub-projects: typecheck → bun run typecheck; lint → shellcheck/shfmt) |
| 3 | Coverage measured and reported; baseline recorded; thresholds only per D2; never lowered | N/A by decision — D2 exempts bash repos; orphaned .simplecov deleted (Phase 0); status "intentionally none" recorded in AGENTS.md (Phase 5) |
| 4 | Language-appropriate lint installed, zero errors, wired into the headless entrypoint; dead lint task implemented or deleted | Missing — no shellcheck/shfmt anywhere (67 scoped inline disables exist in generated code); no dead lint task to delete (no turbo/make lint) → Phase 2 + Phase 3 |
| 5 | AGENTS.md "Testing" section matches reality — no phantom docs | Mostly accurate, two defects — documents a run-all loop that currently fails (8/11 test files non-executable, Phase 0); no mention of the gate/coverage decision (Phase 5) |
| 6 | Dead scaffold test deps removed or used | N/A — bash has no package deps; Bun sub-projects' deps are all real (just-bash, esbuild, @types/bun, Next/React). No unused RTL/jsdom analogue found |
| 7 | Renovate one-liner present; no "latest" deps |
Missing — no renovate/dependabot config; no "latest" pins found (docs pins exact, parsearger-js uses ^) → Phase 5 (with hub fallback) |
| 8 | Quality-report job (knip + jscpd + CRAP) as report-only artifact | N/A in v1 — tools are TS-oriented; bash analogue deferred (Phase 6.4). Nothing metric-shaped is gated (synthesis §5) |
| 9 | Nothing satisfied by a fake pass | 2 violations found — assert_contains "$hlpmsg" with undefined $hlpmsg at tests/000_generate.test.sh:172,204 (always-true); plus the documented run-all loop is broken (permission denied) which is a false "tests don't run" state → Phase 0 |
5. Risks & repo-specific notes
- Bash version portability. Local dev runs bash 5.3 (Fedora); the suite is expected compatible across bash 5.x — the first full
make checkrun is the real proof. Non-goals: macOS bash 3.2 is not a supported target, but notelib/bashunit_extuses GNUmd5sum(macOS contributors need coreutils) — document in AGENTS.md rather than abstract now. Generated scripts hardcode#!/bin/bash— consistent with documenting bash 5.x as the supported runtime. - Bun sub-projects stay out of the bash gate lane.
packages/parsearger-jsanddocs/get their own local check lanes with Bun tooling (bun install --frozen-lockfile,bun test,bun tsc). Never pnpm, never vitest (D1/D5). The bash lane must not require Bun and vice versa — a docs-only change cannot failmake check. - Self-hosting regeneration hazard. The product parses its own args;
parseArgerandbin/*contain generated marker blocks. All lint fixes inside markers must go through the emitters +make reparse, never hand edits (AGENTS.md CRITICAL rule). Phase 2's phase-wide validator explicitly checks regeneration idempotency and thatmake teststays green after every regeneration. - shfmt churn on 25.8k LOC. A full reformat is a huge diff that buries real changes and touches generated blocks. Mitigation: fix-only remediation first (shellcheck semantic fixes), and run shfmt with the documented profile so output matches existing style (tabs); if mass reformat is still triggered, it lands as its own dedicated commit separated from semantic fixes (validator enforces the separation when reviewing
git diff --stat). - Test cwd-dependence. Tests
source "./lib/bashunit_ext"and call./parseArgerrelative to repo root. All runner invocations must anchor cwd at the repo root (the makefile targets do this). Changing tests to be cwd-independent is out of scope (would touch every file for no gate value). - Git identity on validating machines.
tests/009_project.test.shscaffolds projects that rungit init/add/commit; a machine without a configured identity needs a throwaway one for the run (env orgit -cflags). The cleaner long-term fix is repo-local config inside the scaffolded fixture — optional follow-up, not required. - Reality vs audit deltas (recorded, not silent): (a) inline shellcheck disables: audit said 2, actual count is 67 (generated code emits them) — improves Phase 2 outlook; (b) audit missed that 8/11 test files lack exec bits, so the documented run-all loop fails immediately — added as Phase 0's first task; (c)
DimitriGilbert/.github(the D5 hub) does not exist — moot under the 2026-09-05 no-CI decision; (d).simplecovdeletion follows the synthesis's own bash branch of D2, overriding the audit's "decide fleet-wide" framing (the fleet decision exists: bash coverage not required). - Vacuous-assertion fix may surface product bugs. If
--version-opt-nameoutput doesn't contain the version string, Phase 0 becomes fix-generator + regenerate + retest. That is the correct outcome (the test was silently not testing it); implementer must report it rather than weaken the assertion.
6. Effort summary
| Phase | Scope | Effort |
|---|---|---|
| 0 — Suite truthfulness & runnability | exec bits, 2 vacuous assertions, TODO, delete .simplecov |
S |
| 1 — Runner + fixtures | make test/check, mktemp conversion (11 files), AGENTS.md |
S |
| 2 — shellcheck + shfmt green | .shellcheckrc, makefile lint targets, remediation ×3 areas (parallel) |
M |
| 3 — Gate composition (bash lane) | make check as the gate, git-identity note |
S |
| 4 — Bun sub-project check lanes | parsearger-js + docs lanes, independent | S |
| 5 — Hygiene + docs + DoD sweep | renovate, AGENTS.md final, checklist walk | S |
| 6 — Optional/deferred | bashcov, preset convergence, metrics analogue | M (triggered, not v1) |
Total v1: Phases 0–5, roughly 3–4 focused sessions. First-phase goal when executed: make the existing suite truthful and runnable — every later phase (lint, gate, hygiene) stands on a suite that runs and asserts real things.
- Lingua principale
- TypeScript
- Stelle
- 5
- Fork
- 0
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
Non abbiamo ancora controllato i file di configurazione di questo progetto. Parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di DimitriGilbert/parseArger
-
`parseArger parse --help-message ... ` to update help messageForse di nuovo libera @DimitriGilbert l’ha presa 860 giorni fa e non c’è nessuna pull request aperta. Apertaenhancement good first issue
DimitriGilbert/parseArger#1 · 1 assegnatario ·
Tutte le issue di DimitriGilbert/parseArger
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
openedx/frontend-app-authoring#3274 ·
I maintainer di solito rispondono entro 1 giorno
-
🎙️ task - fix(deployer): deploy --env prep runs deploy:dev where the repo declares deploy:prepAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
-
area/documentation status/need-triage
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 95/100
google-gemini/gemini-cli#29548 ·
I maintainer di solito rispondono entro 1 giorno
-
sdk-typescript vector-store
Difficoltà 2/5 Mezza giornata Idoneità per principianti 82/100
mem0ai/mem0#7495 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
I maintainer di solito rispondono entro 1 giorno