Skip to content

Latest commit

 

History

History
363 lines (276 loc) · 12 KB

File metadata and controls

363 lines (276 loc) · 12 KB

Outstanding Tasks Summary for alfa-scan Project

Generated: 2026-02-21T14:20:00Z
Author: GitHub Copilot
Purpose: Comprehensive review of outstanding tasks in the alfa-scan project


Executive Summary

The alfa-scan project is an issue-driven accessibility scanning prototype using GitHub Pages, GitHub Actions, and Siteimprove's Alfa library. The project is organized into 6 work packages (WP01-WP06) with 30 subtasks total.

Current Status:

  • 1 work package complete (WP01 - 5 subtasks)
  • 📋 5 work packages pending (WP02-WP06 - 25 subtasks)
  • 🎯 Next steps: WP02 and WP03 can begin (both depend only on completed WP01)

Work Package Status Overview

WP Title Status Subtasks Priority Dependencies
WP01 Foundation and Guardrails ✅ DONE 5/5 P0 None
WP02 Pages Intake and Issue Submission 📋 PLANNED 0/5 P1 WP01 ✓
WP03 Dual-Scanner Execution Engine 📋 PLANNED 0/6 P1 WP01 ✓
WP04 Public Reporting and Pages Publishing 📋 PLANNED 0/5 P2 WP03
WP05 Security and Operational Hardening 📋 PLANNED 0/5 P2 WP03
WP06 End-to-End Verification 📋 PLANNED 0/4 P3 WP02, WP04, WP05

Overall Progress: 5/30 subtasks complete (17%)


Completed Work

WP01: Foundation and Guardrails ✅

Status: DONE
Lane: done
Review Status: APPROVED
Reviewed By: copilot
Completion Date: 2026-02-21

Subtasks Completed (5/5):

  • T001: Scanner project structure and package scripts
  • T002: Canonical scan request schema and parser
  • T003: URL validation and private/internal address blocking
  • T004: GitHub Actions workflow skeleton
  • T005: Unit tests for schema parsing and URL validation

Key Deliverables:

  • scanner/parse-issue.mjs - Issue parsing with validation
  • scanner/validate-targets.mjs - URL safety checks with SSRF protection
  • scanner/schemas/scan-request.schema.json - JSON Schema definition
  • .github/workflows/scan-request.yml - Automated scan workflow
  • tests/unit/*.test.mjs - 21 unit tests (100% passing)
  • tests/fixtures/ - Test data fixtures

Quality Metrics:

  • ✅ 21/21 tests passing
  • ✅ Linter passing
  • ✅ Security assessment passed (SSRF protection, private IP blocking)
  • ✅ Code review approved
  • ✅ Documentation complete

Review Document:

See WP01-REVIEW.md for comprehensive review details (8.8KB).


Outstanding Work

WP02: GitHub Pages Intake and Issue Submission 📋

Status: PLANNED
Lane: planned
Priority: P1 (MVP)
Dependencies: WP01 ✅
Can Start: YES ✅

Subtasks (0/5):

  • T006: Build Pages form UI in pages/index.html and pages/submit.js
  • T007: Client-side normalization and max-100 validation
  • T008: GitHub-authenticated issue creation flow
  • T009: Client-side handling for malformed URLs
  • T010: Integration tests/fixtures for issue payload

Goal:

Provide a GitHub Pages form that accepts up to 100 URLs and creates structured authenticated issue requests.

Independent Test:

Authenticated user submits valid URL batch from Pages and correctly formatted scan issue is created.


WP03: Dual-Scanner Execution Engine 📋

Status: PLANNED
Lane: planned
Priority: P1
Dependencies: WP01 ✅
Can Start: YES ✅

Subtasks (0/6):

  • T011: Issue-event workflow entrypoint to parse request
  • T012: ALFA execution per URL with normalized status capture
  • T013: axe execution per URL with matching normalized status
  • T014: Per-URL fault isolation and continuation semantics
  • T015: Capture redirect information (submitted URL, final URL, redirected flag)
  • T016: Unit/integration tests for orchestrator behavior

Goal:

Process scan request issues and execute ALFA + axe for each valid target URL with resilient failure handling.

Independent Test:

Valid scan issue triggers workflow execution; both tools run for each target; failures on one URL do not halt remaining scans.


WP04: Public Reporting and Pages Publishing 📋

Status: PLANNED
Lane: planned
Priority: P2
Dependencies: WP03
Can Start: NO (blocked by WP03)

Subtasks (0/5):

  • T017: Comparison builder for per-URL and aggregate ALFA/axe deltas
  • T018: Generate machine-readable run artifacts and human-readable summaries
  • T019: Pages publishing workflow updates for report artifacts
  • T020: Maintain report index/history for discovering historical runs
  • T021: Validation tests for report schema and public link integrity

Goal:

Build report generation and publishing pipeline for public per-run ALFA vs axe comparison artifacts.


WP05: Security and Operational Hardening 📋

Status: PLANNED
Lane: planned
Priority: P2
Dependencies: WP03
Can Start: NO (blocked by WP03)

Subtasks (0/5):

  • T022: Authenticated submitter checks and scan-request eligibility rules
  • T023: Runtime public URL policy with explicit private/internal block reasons
  • T024: Abuse controls (concurrency keys, duplicate request handling)
  • T025: Harden workflow permissions and token scopes to least privilege
  • T026: Structured run diagnostics and issue status updates

Goal:

Enforce authenticated request controls, runtime safety checks, and observable operations.


WP06: End-to-End Verification and Release Readiness 📋

Status: PLANNED
Lane: planned
Priority: P3
Dependencies: WP02, WP04, WP05
Can Start: NO (blocked by WP02, WP04, WP05)

Subtasks (0/4):

  • T027: End-to-end scenario tests (form input → issue → workflow → report)
  • T028: Performance validation scenario for large batch (up to 100 URLs)
  • T029: Align documentation/runbook with quickstart and operational behavior
  • T030: Prepare demo dataset and acceptance verification checklist

Goal:

Validate full flow from Pages intake to public report publication and document operational runbook.


Dependency Graph

WP01 (Done)
├── WP02 (Can start)
└── WP03 (Can start)
    ├── WP04 (Blocked)
    └── WP05 (Blocked)
        └── WP06 (Blocked, also needs WP02, WP04)

Parallel Opportunities:

  • WP02 and WP03 can be implemented in parallel (both ready to start)
  • WP04 and WP05 can be implemented in parallel after WP03 completes

Next Steps

Immediate Actions (Priority Order)

  1. Start WP02: Pages Intake Form (P1, MVP)

    • Unblocked and ready to start
    • Critical for MVP functionality
    • 5 subtasks estimated
  2. Start WP03: Dual-Scanner Engine (P1)

    • Unblocked and ready to start
    • Can be developed in parallel with WP02
    • 6 subtasks estimated
  3. After WP03 completes:

    • Start WP04: Public Reporting (P2)
    • Start WP05: Security Hardening (P2)
    • These can run in parallel
  4. After WP02, WP04, WP05 complete:

    • Start WP06: End-to-End Verification (P3)
    • Final validation and documentation

MVP Scope

Minimum Viable Product includes:

  • ✅ WP01 (Complete)
  • 📋 WP02 (Pages intake form)
  • 📋 WP03 (Dual-scanner engine)
  • 📋 WP04 (Minimal reporting path)

Technical Stack Summary

Languages & Frameworks

  • Node.js: >= 20.x (ES Modules)
  • JavaScript: ES modules with async/await
  • GitHub Actions: Workflow automation
  • GitHub Pages: Static hosting

Key Dependencies

  • @siteimprove/alfa-cli - Core accessibility testing
  • @siteimprove/alfa-formatter-earl - EARL report formatting
  • @siteimprove/alfa-formatter-json - JSON report formatting

Testing

  • Node.js built-in test runner (node --test)
  • 21 unit tests currently passing
  • Fixture-based testing for complex scenarios

Security Features

  • Private IP blocking (IPv4 & IPv6)
  • SSRF protection
  • Minimal workflow permissions
  • Input validation at all entry points

Repository Structure

alfa-scan/
├── .github/
│   └── workflows/
│       ├── scan-request.yml         # Issue-triggered scan workflow ✅
│       ├── scan-issue-queue.yml     # Scheduled scan workflow
│       └── deploy-pages.yml         # GitHub Pages deployment
├── scanner/
│   ├── parse-issue.mjs              # Issue parsing ✅
│   ├── validate-targets.mjs         # URL validation ✅
│   ├── run-scan.mjs                 # Scan execution ✅
│   ├── schemas/
│   │   └── scan-request.schema.json # JSON Schema ✅
│   └── README.md                    # Scanner documentation ✅
├── tests/
│   ├── unit/                        # 21 unit tests ✅
│   └── fixtures/                    # Test data ✅
├── kitty-specs/
│   └── 001-issue-driven-accessibility-scanner/
│       ├── tasks.md                 # Master task list
│       └── tasks/                   # Work package prompts
│           ├── WP01-foundation-and-guardrails.md ✅
│           ├── WP02-pages-intake-and-issue-submission.md
│           ├── WP03-dual-scanner-execution-engine.md
│           ├── WP04-public-reporting-and-pages-publishing.md
│           ├── WP05-security-and-operational-hardening.md
│           └── WP06-end-to-end-verification-and-readiness.md
├── package.json                     # Node.js project config ✅
├── index.html                       # GitHub Pages landing page
├── WP01-REVIEW.md                   # WP01 comprehensive review ✅
└── README.md                        # Project documentation

Quality Gates

For Each Work Package

  • All subtasks complete
  • All tests passing
  • Linter passing
  • Security review completed
  • Code review approved
  • Documentation updated

Project-Wide Standards

  • ES modules with type: "module"
  • Export functions from modules for testing
  • Use import guard to prevent main() execution during testing
  • Use spawnSync with argument arrays (never execSync with template strings)
  • Node.js version: >= 20
  • Never commit node_modules/ or secrets

Resources

Documentation

  • Project README: /README.md
  • Scanner README: /scanner/README.md
  • WP01 Review: /WP01-REVIEW.md
  • GitHub Copilot Instructions: .github/copilot-instructions.md
  • Spec Kitty AGENTS: .kittify/AGENTS.md

Key Commands

# Testing
npm test              # Run all unit tests
npm run lint          # Check code syntax

# Scanner execution
npm run run:parse     # Run issue parser
npm run run:validate  # Run URL validator
npm run run:scan      # Run full scan

Related Links


Notes

Task UUID Not Found

The original problem statement referenced task UUID 7f95899b-a262-4d03-a12d-89072861090e. This UUID was not found in the repository. This analysis was performed based on the task structure defined in kitty-specs/001-issue-driven-accessibility-scanner/tasks.md and the work package status in the tasks/ directory.

Spec Kitty Integration

This project uses Spec Kitty v0.10.8+ for project management. Work packages are organized in the kitty-specs/ directory with lane-based tracking (planned, doing, for_review, done).


Conclusion

The alfa-scan project has a solid foundation (WP01 complete) and a clear path forward. Two high-priority work packages (WP02 and WP03) are ready to start immediately and can be developed in parallel. The project follows good engineering practices with comprehensive testing, security controls, and clear documentation.

Estimated completion:

  • MVP (WP01-WP04 minimal): ~3-4 weeks
  • Full project (all WPs): ~6-8 weeks

Document Version: 1.0
Last Updated: 2026-02-21T14:20:00Z
Maintained By: GitHub Copilot