Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

Boundary-test the decimal comparison operand grammar

Open Beginner friendly
#118 3 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

@soyeladice-svg is already working on this.

Since Sep 29, 2026.

Assessment

Difficulty
2/5
Estimated time
1-3 hours
Newbie friendliness
78/100
Issue type
Feature
Clarity
Clearly specified
Activity status
Active
Tech stack
go
Domain
testing

Research direction

Start by reading the existing tests under internal/evaluation/ and the evaluator’s decimal-comparison behavior. Add table-driven cases with t.Run for the specified grammar edges, asserting diagnostic codes for rejections and equal results for scale differences. Run env GO111MODULE=on go test ./internal/evaluation and go test ./...; done means both pass and the stated acceptance criteria are covered.

Written by the indexing model from the issue text.

Description

go good first issue

Goal

Add table-driven tests for the decimal-string grammar that ordered fact comparisons require.

Why

Core §2.2 fixes the operand form for greater-than, greater-than-or-equal, less-than and less-than-or-equal:

decimal = [ "-" ] ( "0" / non-zero-digit *DIGIT ) [ "." 1*DIGIT ]

That grammar refuses a leading +, a leading zero such as 007, a bare .5, a trailing 5., an exponent, whitespace, and an empty string — and it accepts -0.5 and 0.10. It also exists because JSON numbers are the wrong carrier for a business quantity whose decimal identity matters, which is a decision worth having pinned by cases rather than by prose.

The evaluator implements it. What is thin is a set of tests that walk the grammar's edges deliberately, one accepted and one rejected value per rule.

Scope

  • Change test files under internal/evaluation/ only.
  • Table-driven, with t.Run per case, covering at least: leading +, leading zeros, bare .5, trailing 5., exponent forms, internal or surrounding whitespace, empty string, -0, and a value with more fractional digits than the operand it is compared against.
  • Assert the diagnostic each rejection produces, not merely that it was rejected.
  • Do not change the grammar, the evaluator, or any schema.

Acceptance criteria

  • Each rule of the §2.2 grammar has at least one accepted and one rejected case.
  • Rejections assert their diagnostic code, so a rejection for the wrong reason fails.
  • Scale differences that must compare equal do, and are shown to.
  • env GO111MODULE=on go test ./internal/evaluation and go test ./... pass.
  • Every commit includes a DCO sign-off created with git commit -s.

Contributor learning

Why a specification carries an explicit decimal grammar instead of using JSON numbers, and how to test a grammar at its edges rather than in its middle.

Dominant language
Go
Stars
2
Forks
6
Avg merge
13h 16m
Merged PRs (30d)
76

Getting set up

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from Judgment-Pack/judgment-pack-runtime

All issues in Judgment-Pack/judgment-pack-runtime

Similar issues

More Go issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.