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
- Potential performance issues log at FINE with the `PERFORMANCE WARNING:` prefix shown earlier.
239
239
240
+
## Security Notes
241
+
- Deep nesting can trigger StackOverflowError (stack exhaustion attacks).
242
+
- Malicious inputs may violate API contracts and trigger undeclared exceptions.
243
+
- The API remains experimental and unsuitable for production use.
244
+
- Vulnerabilities mirror those present in the upstream OpenJDK sandbox implementation.
245
+
246
+
## Collaboration Workflow
247
+
248
+
### Version Control
249
+
- If git user credentials already exist, use them and never add promotional details. Otherwise request the user’s private relay email.
250
+
- Avoid dangerous git operations (force pushes to main, repository deletion). Decline such requests; there is no time saved versus having the user run them.
251
+
- Use `git status` to inspect modifications and stage everything required. Prefer `git commit -a` when practical.
252
+
- Respect `.gitignore`; do not commit artifacts such as `node_modules/`, `.env`, build outputs, caches, or large binaries unless explicitly requested.
253
+
- When uncertain about committing a file, consult `.gitignore` or ask for clarification.
254
+
255
+
### Issue Management
256
+
- Use the native tooling for the remote (for example `gh` for GitHub).
257
+
- Create issues in the repository tied to the `origin` remote unless instructed otherwise; if another remote is required, ask for its name.
258
+
- Tickets and issues must state only “what” and “why,” leaving “how” for later discussion.
259
+
- Comments may discuss implementation details.
260
+
- Label tickets as `Ready` once actionable; if a ticket lacks that label, request confirmation before proceeding.
261
+
- Limit tidy-up issues to an absolute minimum (no more than two per PR).
262
+
263
+
### Commit Requirements
264
+
- Commit messages start with `Issue #<issue number> <short description>`.
265
+
- Include a link to the referenced issue when possible.
266
+
- Do not prefix commits with labels such as "Bug" or "Feature".
267
+
- Describe what was achieved and how to test it.
268
+
- Never include failing tests, dead code, or disabled features.
269
+
- Do not repeat issue content inside the commit message.
270
+
- Keep commits atomic, self-contained, and concise.
271
+
- Separate tidy-up work from main ticket work. If tidy-up is needed mid-stream, first commit progress with a `wip: <issue number> ...` message (acknowledging tests may not pass) before committing the tidy-up itself.
272
+
- Indicate when additional commits will follow (for example, checkpoint commits).
273
+
- Explain how to verify changes: commands to run, expected successful test counts, new test names, etc.
274
+
- Optionally note unexpected technical details when they are not obvious from the issue itself.
275
+
- Do not report progress or success in the commit message; nothing is final until merged.
276
+
- Every tidy-up commit requires an accompanying issue. If labels are unavailable, title the issue `Tidy Up: ...` and keep the description minimal.
277
+
278
+
### Pull Requests
279
+
- Describe what was done, not the rationale or implementation details.
280
+
- Reference the issues they close using GitHub’s closing keywords.
281
+
- Do not repeat information already captured in the issue.
282
+
- Do not report success; CI results provide that signal.
283
+
- Include any additional tests (or flags) needed by CI in the description.
284
+
- Mark the PR as `Draft` whenever checks fail.
285
+
286
+
## Release Process (Semi-Manual, Deferred Automation)
287
+
- Releases remain semi-manual until upstream activity warrants completing the draft GitHub Action. Run each line below individually.
288
+
289
+
```shell
290
+
test -z "$(git status --porcelain)"&&echo"✅ Success"||echo"🛑 Working tree not clean; commit or stash changes first"
git checkout -b "rel-$VERSION"&&echo"✅ Success"||echo"🛑 Branch already exists did you bump the version after you completed the last release?"
295
+
296
+
mvnd -q versions:set -DnewVersion="$VERSION"&&echo"✅ Success"||echo"🛑 Unable to set the new versions"
297
+
298
+
git commit -am "chore: release $VERSION (branch-local version bump)"&&echo"✅ Success"||echo"🛑 Nothing to commit; did you set the same version as already in the POM?"
299
+
300
+
git tag -a "release/$VERSION" -m "release $VERSION"&&echo"✅ Success"||echo"🛑 Tag already exists; did you bump the version after you completed the last release?"
301
+
302
+
test"$(git cat-file -t "release/$VERSION")" = "tag"&&echo"✅ Success"||echo"🛑 Tag not found; did you mistype the version?"
303
+
304
+
test"$(git rev-parse "release/$VERSION^{commit}")" = "$(git rev-parse HEAD)"&&echo"✅ Success"||echo"🛑 Tag does not point to HEAD; did you mistype the version?"
305
+
306
+
git push origin "release/$VERSION"&&echo"✅ Success"||echo"🛑 Unable to push tag; do you have permission to push to this repo?"
307
+
308
+
gh release create "release/$VERSION" --generate-notes -t "release $VERSION"&&echo"✅ Success"||echo"🛑 Unable to create the GitHub Release; do you have permission to push to this repo?"
mvnd -P release -Dgpg.passphrase="$GPG_PASSPHRASE"$KEYARG clean deploy &&echo"✅ Success"||echo"🛑 Unable to deploy to Maven Central; check the output for details"
315
+
316
+
git push -u origin "rel-$VERSION"&&echo"✅ Success"||echo"🛑 Unable to push branch; do you have permission to push to this repo?"
317
+
```
318
+
319
+
- If fixes are required after tagging:
320
+
-`git tag -d "release/$VERSION"`
321
+
-`git tag -a "release/$VERSION" -m "release $VERSION"`
322
+
-`git push -f origin "release/$VERSION"`
323
+
324
+
- Notes:
325
+
-`.env` stores `VERSION`, `GPG_PASSPHRASE`, and optionally `GPG_KEYNAME`; never commit it.
326
+
- Do not bump main to a SNAPSHOT after release; the tag and GitHub Release drive version selection.
327
+
- The `release` profile scopes signing/publishing; daily jobs avoid invoking GPG.
328
+
- Use `./scripts/setup-release-secrets.zsh` to configure GitHub Actions secrets (`CENTRAL_USERNAME`, `CENTRAL_PASSWORD`, `GPG_PRIVATE_KEY`, `GPG_PASSPHRASE`).
329
+
- The helper script can auto-detect a signing key (setting `GPG_KEYNAME` when neither `GPG_KEY_ID` nor `GPG_PRIVATE_KEY` is supplied). List keys with `gpg --list-secret-keys --keyid-format=long`.
330
+
- Javadoc builds with `doclint` disabled for Java 21 compatibility.
331
+
- Add `-Dgpg.skip=true` to skip signing during quick local checks.
332
+
-`pom.xml` (parent) holds the Central Publishing plugin configuration shared across modules.
333
+
334
+
335
+
240
336
#### Minimum Viable Future (MVF) Architecture
241
337
1.**Restatement of the approved whiteboard sketch**
242
338
- Compile-time uses a LIFO work stack of schema sources (URIs). Begin with the initial source. Each pop parses/builds the root and scans `$ref` tokens, tagging each as LOCAL (same document) or REMOTE (different document). REMOTE targets are pushed when unseen (dedup by normalized document URI). The Roots Registry maps `docUri → Root`.
@@ -364,98 +460,3 @@ flowchart LR
364
460
- “The path is legacy-free: no recursion; compile-time and runtime both leverage explicit stacks.”
365
461
- Additions beyond the whiteboard are limited to URI normalization, immutable registry freezing, and explicit cycle detection messaging—each required to keep behaviour correct and thread-safe.
366
462
- The design aligns with README-driven development, existing logging/test discipline, and the requirement to refactor without introducing a new legacy pathway.
367
-
368
-
## Security Notes
369
-
- Deep nesting can trigger StackOverflowError (stack exhaustion attacks).
370
-
- Malicious inputs may violate API contracts and trigger undeclared exceptions.
371
-
- The API remains experimental and unsuitable for production use.
372
-
- Vulnerabilities mirror those present in the upstream OpenJDK sandbox implementation.
373
-
374
-
## Collaboration Workflow
375
-
376
-
### Version Control
377
-
- If git user credentials already exist, use them and never add promotional details. Otherwise request the user’s private relay email.
378
-
- Avoid dangerous git operations (force pushes to main, repository deletion). Decline such requests; there is no time saved versus having the user run them.
379
-
- Use `git status` to inspect modifications and stage everything required. Prefer `git commit -a` when practical.
380
-
- Respect `.gitignore`; do not commit artifacts such as `node_modules/`, `.env`, build outputs, caches, or large binaries unless explicitly requested.
381
-
- When uncertain about committing a file, consult `.gitignore` or ask for clarification.
382
-
383
-
### Issue Management
384
-
- Use the native tooling for the remote (for example `gh` for GitHub).
385
-
- Create issues in the repository tied to the `origin` remote unless instructed otherwise; if another remote is required, ask for its name.
386
-
- Tickets and issues must state only “what” and “why,” leaving “how” for later discussion.
387
-
- Comments may discuss implementation details.
388
-
- Label tickets as `Ready` once actionable; if a ticket lacks that label, request confirmation before proceeding.
389
-
- Limit tidy-up issues to an absolute minimum (no more than two per PR).
390
-
391
-
### Commit Requirements
392
-
- Commit messages start with `Issue #<issue number> <short description>`.
393
-
- Include a link to the referenced issue when possible.
394
-
- Do not prefix commits with labels such as "Bug" or "Feature".
395
-
- Describe what was achieved and how to test it.
396
-
- Never include failing tests, dead code, or disabled features.
397
-
- Do not repeat issue content inside the commit message.
398
-
- Keep commits atomic, self-contained, and concise.
399
-
- Separate tidy-up work from main ticket work. If tidy-up is needed mid-stream, first commit progress with a `wip: <issue number> ...` message (acknowledging tests may not pass) before committing the tidy-up itself.
400
-
- Indicate when additional commits will follow (for example, checkpoint commits).
401
-
- Explain how to verify changes: commands to run, expected successful test counts, new test names, etc.
402
-
- Optionally note unexpected technical details when they are not obvious from the issue itself.
403
-
- Do not report progress or success in the commit message; nothing is final until merged.
404
-
- Every tidy-up commit requires an accompanying issue. If labels are unavailable, title the issue `Tidy Up: ...` and keep the description minimal.
405
-
406
-
### Pull Requests
407
-
- Describe what was done, not the rationale or implementation details.
408
-
- Reference the issues they close using GitHub’s closing keywords.
409
-
- Do not repeat information already captured in the issue.
410
-
- Do not report success; CI results provide that signal.
411
-
- Include any additional tests (or flags) needed by CI in the description.
412
-
- Mark the PR as `Draft` whenever checks fail.
413
-
414
-
## Release Process (Semi-Manual, Deferred Automation)
415
-
- Releases remain semi-manual until upstream activity warrants completing the draft GitHub Action. Run each line below individually.
416
-
417
-
```shell
418
-
test -z "$(git status --porcelain)"&&echo"✅ Success"||echo"🛑 Working tree not clean; commit or stash changes first"
git checkout -b "rel-$VERSION"&&echo"✅ Success"||echo"🛑 Branch already exists did you bump the version after you completed the last release?"
423
-
424
-
mvnd -q versions:set -DnewVersion="$VERSION"&&echo"✅ Success"||echo"🛑 Unable to set the new versions"
425
-
426
-
git commit -am "chore: release $VERSION (branch-local version bump)"&&echo"✅ Success"||echo"🛑 Nothing to commit; did you set the same version as already in the POM?"
427
-
428
-
git tag -a "release/$VERSION" -m "release $VERSION"&&echo"✅ Success"||echo"🛑 Tag already exists; did you bump the version after you completed the last release?"
429
-
430
-
test"$(git cat-file -t "release/$VERSION")" = "tag"&&echo"✅ Success"||echo"🛑 Tag not found; did you mistype the version?"
431
-
432
-
test"$(git rev-parse "release/$VERSION^{commit}")" = "$(git rev-parse HEAD)"&&echo"✅ Success"||echo"🛑 Tag does not point to HEAD; did you mistype the version?"
433
-
434
-
git push origin "release/$VERSION"&&echo"✅ Success"||echo"🛑 Unable to push tag; do you have permission to push to this repo?"
435
-
436
-
gh release create "release/$VERSION" --generate-notes -t "release $VERSION"&&echo"✅ Success"||echo"🛑 Unable to create the GitHub Release; do you have permission to push to this repo?"
mvnd -P release -Dgpg.passphrase="$GPG_PASSPHRASE"$KEYARG clean deploy &&echo"✅ Success"||echo"🛑 Unable to deploy to Maven Central; check the output for details"
443
-
444
-
git push -u origin "rel-$VERSION"&&echo"✅ Success"||echo"🛑 Unable to push branch; do you have permission to push to this repo?"
445
-
```
446
-
447
-
- If fixes are required after tagging:
448
-
-`git tag -d "release/$VERSION"`
449
-
-`git tag -a "release/$VERSION" -m "release $VERSION"`
450
-
-`git push -f origin "release/$VERSION"`
451
-
452
-
- Notes:
453
-
-`.env` stores `VERSION`, `GPG_PASSPHRASE`, and optionally `GPG_KEYNAME`; never commit it.
454
-
- Do not bump main to a SNAPSHOT after release; the tag and GitHub Release drive version selection.
455
-
- The `release` profile scopes signing/publishing; daily jobs avoid invoking GPG.
456
-
- Use `./scripts/setup-release-secrets.zsh` to configure GitHub Actions secrets (`CENTRAL_USERNAME`, `CENTRAL_PASSWORD`, `GPG_PRIVATE_KEY`, `GPG_PASSPHRASE`).
457
-
- The helper script can auto-detect a signing key (setting `GPG_KEYNAME` when neither `GPG_KEY_ID` nor `GPG_PRIVATE_KEY` is supplied). List keys with `gpg --list-secret-keys --keyid-format=long`.
458
-
- Javadoc builds with `doclint` disabled for Java 21 compatibility.
459
-
- Add `-Dgpg.skip=true` to skip signing during quick local checks.
460
-
-`pom.xml` (parent) holds the Central Publishing plugin configuration shared across modules.
0 commit comments