Skip to main content

test-amplification

Methodical bug-driven test amplification for pygraphistry features. Use when hardening a feature area via user-workflow exploration, 5-Whys retrospectives, bug-taxonomy derivation, concrete test planning, implementation, and safety-gated validation.

Datos de origen

Repositorio
graphistry/pygraphistry
Última actividad en el origen
6 de marzo de 2026 a las 05:28
Idioma detectado de SKILL.md
inglés
Estrellas
2567
Forks
229

Opciones de instalación

De forma predeterminada está seleccionado el prompt que primero revisa el origen. Puedes cambiar a un comando directo o descargar una copia local.

Revisa los archivos de origen

Lee SKILL.md y los archivos complementarios que muestra SkillsMP antes de decidir si quieres instalarlo.

Mostrando SKILL.md

SKILL.md
Instrucciones de origen · Vista previa de solo lectura
name
test-amplification
description
Methodical bug-driven test amplification for pygraphistry features. Use when hardening a feature area via user-workflow exploration, 5-Whys retrospectives, bug-taxonomy derivation, concrete test planning, implementation, and safety-gated validation.
# Test Amplification Skill ## When to Use - A pygraphistry feature area is stable enough to use but still yields recurring bugs. - You need to grow tests from evidence, not random additions. - You want reusable patterns that apply beyond one subsystem (for example, beyond GFQL). ## Goal Turn historical and newly found bugs into: 1. A reusable bug taxonomy. 2. Prioritized concrete test tasks. 3. Implemented tests (plus minimal fixes when needed). 4. Clear validation evidence and checkpoint commits. ## Required Inputs - Current branch context. - Target feature area(s). - Existing test locations for those areas. - Safety constraints (for example: pure vectorized path, pandas+cudf compatibility, remote protocol constraints). ## Multi-Round Artifact Rules (Required) This workflow is usually iterative. Keep artifacts cleanly separated by round, plus cumulative rollups. ### Round IDs - Use zero-padded round IDs: `round-001`, `round-002`, ... - Keep a stable task root: - `plans/<task>/` ### Round-Scoped Artifacts Per round, write under: - `plans/<task>/rounds/round-00N/` Recommended files: - `user_testing_playbook.md` - `feature-risk-analysis.md` - `discovery-matrix.md` - `bug-retro-5whys.md` - `taxonomy-and-task-plan.md` - `execution-report.md` - `metrics.md` ### Cumulative Artifacts Maintain cumulative rollups under: - `plans/<task>/cumulative/` Recommended files: - `feature-risk-analysis-cumulative.md` - `bug-retro-5whys-cumulative.md` - `taxonomy-cumulative.md` - `round-metrics-ledger.md` - `continue-or-halt-log.md` ### Naming Conventions - Prefer deterministic names inside round folders (no random suffixes). - If date is needed, use ISO format: `YYYY-MM-DD`. - Every round must update: 1. one round-scoped `metrics.md` 2. cumulative `round-metrics-ledger.md` 3. cumulative `continue-or-halt-log.md` ## Parallel Subagent Protocol (Recommended When Available) If parallel subagents are available (for example, Claude workers), use them with fixed artifact locations so work is crash-resumable. ### Round folder layout for parallel work Under each round: - `plans/<task>/rounds/round-00N/findings/` - `plans/<task>/rounds/round-00N/findings/agent-01/` - `plans/<task>/rounds/round-00N/findings/agent-02/` - `plans/<task>/rounds/round-00N/findings/agent-03/` - `plans/<task>/rounds/round-00N/merge/` Required per-agent files: - `task.md` (assigned scope and constraints) - `findings.md` (bugs, repros, evidence) - `proposed-tests.md` (concrete test additions) - `status.json` (machine-readable state: `in_progress|done|blocked`) Required merge files: - `merge/triage.md` (dedupe + severity + priority) - `merge/final-task-plan.md` (selected tasks for implementation) ### Assignment strategy - Assign non-overlapping subsystems per agent (for example: remote/auth, connectors, compute, policy). - Give each agent the same required scorecard format. - Merge only after all `status.json` files are `done` or explicitly `blocked`. ## Core Workflow ### 0) User-Workflow Exploration (Required) Use a user-testing exploration pass before adding tests. Build 3-5 representative user stories from the feature area. For each story capture: - workflow steps users run, - expected outcomes, - likely friction points, - representative test files, - likely bug classes. Artifact: - `AI_PROGRESS/<task>/user_testing_playbook.md` ### 1) Feature Surface Inventory Inventory what changed (or is risky) in this area: - API/AST surface - runtime/executor/evaluator paths - validator/schema scanning paths - transport/session/metadata paths (if remote) - existing tests and known blind spots Artifact: - `plans/<task>/feature-risk-analysis-<date>.md` ### 2) Discovery Matrix Run a small probe matrix that compares: - validator accept/reject, - runtime behavior, - expected semantics. Prioritize mismatches: - validator accepts + runtime fails, - validator rejects + runtime supports, - runtime succeeds with wrong semantics. ### 3) 5-Whys Per Bug Class For each bug class, record: - Symptom - How found - Why #1..#5 - Why prior tests missed it - Root cause family Artifact: - `plans/<task>/bug-retro-5whys-<date>.md` ### 4) Derive Abstract Taxonomy Convert bug roots into reusable categories. Typical categories: - precedence/token boundary issues, - lexical scanning/quote-awareness issues, - validator/runtime parity drift, - schema inference lexical issues, - capability-shape failfast gaps, - null/empty semantic gaps, - state/session lifecycle issues, - remote metadata hydration/transport contract issues. ### 5) Convert to Concrete Tasks For each category define concrete tests: - exact file(s), - test names, - expected behavior, - whether minimal fix is expected. Prefer colocated tests in existing subsystem files. ### 6) Implement Tests + Minimal Fixes Rules: - Prefer red->green (add test, then fix). - Keep fixes narrowly scoped to test-driven findings. - No broad refactors during amplification phases. ### 7) DRY Pass Before final validation: - remove duplication in new tests, - keep readability high, - avoid helper sprawl. ### 8) Safety Gates (Required) Run and record outputs. Baseline static gates: ```bash python -m py_compile <touched_files> ruff check <touched_files> mypy --ignore-missing-imports --follow-imports=skip --explicit-package-bases <touched_files> ``` Focused tests: ```bash PYTHONPATH=. pytest -q <focused_test_files> ``` Broad sanity (env-available): ```bash PYTHONPATH=. pytest -q <broader_test_set> ``` Best-effort backend parity (if applicable): ```bash PYTHONPATH=. pytest -q <tests> -k cudf ``` ### 9) Round Scorecard + Continue/Halt Decision (Required) Each round must publish a scorecard and an operator-facing decision note. Required scorecard fields: - `tests_added` (new test cases) - `tests_modified` (existing tests changed) - `new_bug_classes_found` - `new_bug_instances_found` - `bug_instances_fixed` - `bug_instances_open` (found - fixed) - `bug_fix_rate_pct` = `fixed / found * 100` (if found > 0) - `new_bug_class_fix_rate_pct` = `classes_fixed / classes_found * 100` (if classes_found > 0) - `tests_per_fix` = `tests_added / max(fixed, 1)` - `focus_gate_pass` (yes/no) - `broad_gate_pass` (yes/no/partial + env gaps) Decision note must include: - `continue` or `halt` - one-paragraph rationale based on marginal ROI trend - explicit next highest-ROI bug classes if continuing Important: - This is a **required decision record**, not a forced halt. - If the operator/user asked for multiple rounds, choose `continue` unless there is a blocker or clear diminishing-return stop condition. - `halt` should be used when: - explicit user directive to stop, - no actionable high-ROI targets remain, - hard blocker prevents meaningful progress. ### 10) Checkpointing + Plan Update After gates pass: ```bash git add <touched_files> git commit -m "phase-<id>: <short amplification summary>" ``` Update plan with: - commands run, - outputs, - commit hash, - env gaps. - round scorecard values, - continue/halt decision. ## Domain Packs (PyGraphistry-Specific) Use the pack(s) matching the work area. ### A) Visualization/Upload/Render Representative files: - `graphistry/tests/test_plotter.py` - `graphistry/tests/test_arrow_uploader.py` - `graphistry/tests/render/test_resolve_render_mode.py` - `graphistry/tests/test_dataset_id_invalidation.py` Bug styles: - encoding metadata loss, - dtype coercion regressions, - dataset lifecycle invalidation bugs. Useful test styles: - metadata round-trip, - dtype matrix tests, - lifecycle mutation/invalidation tests. ### B) Remote/Auth/Session/Trace Representative files: - `graphistry/tests/test_chain_remote_auth.py` - `graphistry/tests/test_gfql_remote_metadata.py` - `graphistry/tests/test_gfql_remote_persistence.py` - `graphistry/tests/test_trace_headers_behavior.py` - `graphistry/tests/test_certificate_validation_session.py` Bug styles: - token/session leakage across clients, - metadata hydration mismatches, - missing trace/cert propagation. Useful test styles: - request contract assertions, - multi-client isolation tests, - hydration parity tests. ### C) Connectors/Ingestion Representative files: - `graphistry/tests/test_kusto.py` - `graphistry/tests/test_spanner.py` - `graphistry/tests/test_gremlin.py` - `graphistry/tests/test_tigergraph.py` - `graphistry/tests/test_nodexl.py` - `graphistry/tests/test_gexf.py` Bug styles: - return-shape ambiguity (single vs multiple tables), - dynamic column flattening drift, - credential/no-credential path regressions. Useful test styles: - mocked connector contracts, - optional live credential smoke tests, - malformed payload tests. ### D) Graph Compute (Hop/Chain/GFQL) Representative files: - `graphistry/tests/compute/test_hop.py` - `graphistry/tests/compute/test_chain.py` - `graphistry/tests/compute/test_call_operations.py` - `graphistry/tests/compute/gfql/test_row_pipeline_ops.py` Bug styles: - precedence/parser boundary bugs, - validator/runtime parity drift, - backend parity divergence. Useful test styles: - semantic operator matrix, - validator/runtime parity table, - pandas baseline + cudf best-effort checks. ### E) Policy/Governance Hooks Representative files: - `graphistry/tests/test_policy_*.py` - `graphistry/tests/test_policy_integration.py` - `graphistry/tests/compute/gfql/test_policy_shortcuts.py` Bug styles: - phase ordering regressions, - closure state leakage, - exception contract drift. Useful test styles: - phase-state transition tests, - negative-path policy exception tests, - cross-operation coverage matrix. ### F) Layouts/Plugins/Optional Deps Representative files: - `graphistry/tests/layout/*` - `graphistry/tests/plugins/*` - `graphistry/tests/test_layout.py` Bug styles: - optional-dependency behavior drift, - plugin fallback failures, - algorithm-specific edge-case regressions. Useful test styles: - conditional import/fallback tests, - deterministic small-graph golden tests, - edge-case topology fixtures. ## Plan Phase Skeleton Use this in `plan.md`: ```markdown ### Phase X.Y: Test Amplification Cycle **Status:** 🔄 IN_PROGRESS #### X.Y.1 User-workflow exploration #### X.Y.2 Feature/risk inventory #### X.Y.3 Discovery matrix #### X.Y.4 5-Whys capture #### X.Y.5 Taxonomy derivation #### X.Y.6 Concrete task plan #### X.Y.7 Implement tests (+minimal fixes) #### X.Y.8 DRY pass #### X.Y.9 Validation #### X.Y.10 Round scorecard + continue/halt decision #### X.Y.11 Checkpoint ``` ## Round Scorecard Template Use this in `plans/<task>/rounds/round-00N/metrics.md`: ```markdown # Round 00N Metrics - tests_added: - tests_modified: - new_bug_classes_found: - new_bug_instances_found: - bug_instances_fixed: - bug_instances_open: - bug_fix_rate_pct: - new_bug_class_fix_rate_pct: - tests_per_fix: - focus_gate_pass: - broad_gate_pass: - env_gaps: ## Continue/Halt - decision: continue | halt - rationale: - next_targets: ``` ## Anti-Patterns - Jumping directly into test writing without bug-class derivation. - Validator-only checks or runtime-only checks without parity coverage. - Over-generalized guidance with no concrete files/patterns. - Large refactors during an amplification pass. ## Done Criteria - User-workflow exploration artifact exists. - Feature/risk + 5-Whys artifacts exist (round + cumulative). - Taxonomy -> concrete tasks mapping documented. - New high-ROI tests landed (minimal fixes only as needed). - Focused/broad gates pass or env limitations are clearly documented. - Round scorecard and continue/halt decision are recorded. - Plan and commit checkpoints are updated.
Ver en GitHub