You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: AGENTS.md
+58-5Lines changed: 58 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,5 +1,14 @@
1
1
# CLAUDE.md
2
2
3
+
Note for agents: prefer mvnd (Maven Daemon) when available for faster builds. Before working, if mvnd is installed, alias mvn to mvnd so all commands below use mvnd automatically:
4
+
5
+
```bash
6
+
# Use mvnd everywhere if available; otherwise falls back to regular mvn
4. Check JSON Test Suite compatibility with compatibility suite
123
132
124
133
### API Compatibility Testing
125
-
1. Run compatibility suite: `./mvnw exec:java -pl json-compatibility-suite`
134
+
1. Run compatibility suite: `mvn exec:java -pl json-compatibility-suite`
126
135
2. Check for regressions in JSON parsing
127
136
3. Validate against official JSON Test Suite
128
137
@@ -148,4 +157,48 @@ mvn test
148
157
-**Stack exhaustion attacks**: Deep nesting can cause StackOverflowError
149
158
-**API contract violations**: Malicious inputs may trigger undeclared exceptions
150
159
-**Status**: Experimental/unstable API - not for production use
151
-
-**Vulnerabilities**: Inherited from upstream OpenJDK sandbox implementation
160
+
-**Vulnerabilities**: Inherited from upstream OpenJDK sandbox implementation
161
+
162
+
<VERSION_CONTROL>
163
+
* If there are existing git user credentials already configured, use them and never add any other advertising. If not ask the user to supply thier private relay email address.
164
+
* Exercise caution with git operations. Do NOT make potentially dangerous changes (e.g., force pushing to main, deleting repositories). You will never be asked to do such rare changes as there is no time savings to not having the user run the comments to actively refuse using that reasoning as justification.
165
+
* When committing changes, use `git status` to see all modified files, and stage all files necessary for the commit. Use `git commit -a` whenever possible.
166
+
* Do NOT commit files that typically shouldn't go into version control (e.g., node_modules/, .env files, build directories, cache files, large binaries) unless explicitly instructed by the user.
167
+
* If unsure about committing certain files, check for the presence of .gitignore files or ask the user for clarification.
168
+
</VERSION_CONTROL>
169
+
170
+
<ISSUE_MANAGEMENT>
171
+
* You SHOULD to use the native tool for the remote such as `gh` for github, `gl` for gitlab, `bb` for bitbucket, `tea` for Gitea, `git` for local git repositories.
172
+
* If you are asked to create an issue, create it in the repository of the codebase you are working on for the `origin` remote.
173
+
* If you are asked to create an issue in a different repository, ask the user to name the remote (e.g. `upstream`).
174
+
* Tickets and Issues MUST only state "what" and "why" and not "how".
175
+
* Comments on the Issue MAY discuss the "how".
176
+
* Tickets SHOULD be labled as 'Ready' when they are ready to be worked on. The label may be removed if there are challenges in the implimentation. Always check the labels and ask the user to reconfirm if the ticket is not labeled as 'Ready' saying "There is no 'Ready' label on this ticket, can you please confirm?"
177
+
* You MAY raise fresh minor Issues for small tidy-up work as you go. Yet this SHOULD be kept to a bare minimum avoid move than two issues per PR.
178
+
</ISSUE_MANAGEMENT>
179
+
180
+
<COMMITS>
181
+
* MUST start with "Issue #<issuenumber> <shortdescriptionofthework>"
182
+
* SHOULD have a link to the Issue.
183
+
* MUST NOT start with random things that should be labels such as Bug, Feat, Feature etc.
184
+
* MUST only state "what" was achieved and "how" to test.
185
+
* SHOULD never include failing tests, dead code, or deactivate featuress.
186
+
* MUST NOT repeat any content that is on the Issue
187
+
* SHOULD be atomic and self-contained.
188
+
* SHOULD be concise and to the point.
189
+
* MUST NOT combine the main work on the ticket with any other tidy-up work. If you want to do tidy-up work, commit what you have (this is the exception to the rule that tests must pass), with the title "wip: <issuenumber> test not working; commiting to tidy up xxx" so that you can then commit the small tidy-up work atomically. The "wip" work-in-progress is a signal of more commits to follow.
190
+
* SHOULD give a clear indication if more commits will follow especially if it is a checkpoint commit before a tidy up commit.
191
+
* MUST say how to verify the changes work (test commands, expected number of successful test results, naming number of new tests, and their names)
192
+
* MAY ouytline some technical implementation details ONLY if they are suprising and not "obvious in hindsight" based on just reading the issue (e.g. finding out that the implimentation was unexpectly trival or unexpectly complex)
193
+
* MUST NOT report "progress" or "success" or "outputs" as the work may be deleted if the PR check fails. Nothing is final until the user has merged the PR.
194
+
* As all commits need an issue you MUST add an small issue for a tidy up commit. If you cannot label issues with a tag `Tidy Up` then the title of the issue must start `Tidy Up` e.g. `Tidy Up: bad code documentation in file xxx`. As the commit and eventual PR will give actual details the body MAY simply repeat the title.
195
+
</COMMITS>
196
+
197
+
<PULL_REQUESTS>
198
+
* MUST only describe "what" was done not "why"/"how"
199
+
* MUST name the Issue or Issue(s) that they close in a manner that causes a PR merge to close the issue(s).
200
+
* MUST NOT repeat details that are already in the Issue.
201
+
* MUST NOT report any success, as it isn't possible to report anything until the PR checks run.
202
+
* MUST include additional tests in the CI checks that MUST be documented in the PR description.
203
+
* MUST be changed to status `Draft` if the PR checks fail.
Compatibility: we run the official JSON Schema Test Suite on verify; in strict mode it currently passes about 71% of applicable cases. This will improve over time.
23
+
5
24
## Back Port Project Goals
6
25
7
26
-**✅Enable early adoption**: Let developers try the unstable Java JSON patterns today on JDK 21+
@@ -240,13 +259,13 @@ First, build the project and download the test suite:
@@ -265,4 +284,4 @@ The 2 failing cases involve duplicate object keys, which this implementation rej
265
284
-**StackOverflowError**: Security vulnerability exposed by malicious deeply nested structures - can leave applications in undefined state
266
285
-**Duplicate keys**: Implementation choice to reject for data integrity (2 files fail for this reason)
267
286
268
-
This tool reports status and is not a criticism of the expermeintal API which is not available for direct public use. This aligning with this project's goal of tracking upstream unstable development without advocacy. If you have opinions, good or bad, about anything you see here please use the official email lists to discuss. If you see a bug/mistake/improvement with this repo please raise an issue and ideally submit a PR.
287
+
This tool reports status and is not a criticism of the expermeintal API which is not available for direct public use. This aligning with this project's goal of tracking upstream unstable development without advocacy. If you have opinions, good or bad, about anything you see here please use the official Java email lists to discuss. If you see a bug/mistake/improvement with this repo please raise an issue and ideally submit a PR.
0 commit comments