Contributing to Saxon-Forms
Source: CONTRIBUTING.md

Contributing to Saxon-Forms

Thanks for contributing to Saxon-Forms. This document defines the expected local workflow, quality checks, and pull request standards. For full machine/bootstrap setup (including non-repo datasets and external tooling), see SETUP.md.

Scope

This repository contains:

Prerequisites

Local setup

  1. Bootstrap environment:
    npm run setup
    
  2. Run preflight checks:
    npm run doctor
    
  3. Validate setup via Docker:
    npm run verify:setup
    

Development workflow

Required local checks before opening a PR

Run the following before submitting:

npm run build:nist-engine-index
npm run build:sef
npm run test:e2e:full
npm run test:xsd-helpers
npm run docs:docbook:validate

npm run build:nist-engine-index generates tests/xsd/nist/.cache/nist-engine-case-index.json, which is required by tests/xsd/nist/nist-facets-engine.spec.ts.

If your change affects documentation, also run:

npm run docs:docbook:build
npm run site:build
npm run site:validate

Working with W3C tests

Working with NIST XSD tests

Architecture map (where to start)

Use this map to find implementation ownership quickly:

When fixing a conformance gap:

  1. Reproduce with a specific chapter/test ID.
  2. Add or adjust tests as needed.
  3. Implement the fix.
  4. Verify pass/fail delta locally.
  5. Update tests/xforms/w3c/STATUS.md when gap status changes.

Coding guidelines

Documentation expectations

Update docs whenever behavior changes:

Pull request expectations

A pull request should clearly describe:

To keep PRs reviewable:

Reporting issues

When reporting a bug, include: