Skip to content

JamForge M1 delivery#18

Open
philoniare wants to merge 1 commit into
w3f:mainfrom
philoniare:main
Open

JamForge M1 delivery#18
philoniare wants to merge 1 commit into
w3f:mainfrom
philoniare:main

Conversation

@philoniare

Copy link
Copy Markdown

Milestone Delivery Checklist

  • The milestone-delivery-template.md has been copied and updated.
  • I have disclosed any and all sources of reused code in the submitted repositories and have done my due diligence to meet its license requirements.
  • In case of acceptance, invoices must be submitted and payments will be transferred to the Polkadot account provided in the invoice.
  • The delivery is according to the rules of the JAM Prize.

@github-actions

github-actions Bot commented Dec 17, 2025

Copy link
Copy Markdown

T&C Assistant Lite bot All Contributors have signed the T&Cs.
Posted by the CLA Assistant Lite bot.

@philoniare

Copy link
Copy Markdown
Author

I have read and hereby sign the JAM Prize Terms and Conditions.

@philoniare philoniare marked this pull request as ready for review December 18, 2025 01:44
@semuelle semuelle self-assigned this Jan 15, 2026

@semuelle semuelle left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey @philoniare, please see the the reports and traces here. Please let me know once I should have another look.

@philoniare

Copy link
Copy Markdown
Author

Hey @philoniare, please see the the reports and traces here. Please let me know once I should have another look.

@semuelle Thank you for your time, we'll resolve those traces asap.

@philoniare

Copy link
Copy Markdown
Author

Hey @philoniare, please see the the reports and traces here. Please let me know once I should have another look.

@semuelle We've pushed a new image, could you please pull the changes and try running again? Thank you

@semuelle

Copy link
Copy Markdown
Contributor

Hey @philoniare, please see updated reports and traces here.

@philoniare

Copy link
Copy Markdown
Author

Hey @philoniare, please see updated reports and traces here.

@semuelle thank you, the traces have been very helpful, we've managed to fix an underlying discrepancy in the PVM memory mapping. We've pushed an updated image, should be able to get a lot further now.

@semuelle

Copy link
Copy Markdown
Contributor

Hey @philoniare, thanks for the update. I'm currently failing to generate any new traces, mainly because the fuzzing stops with "broken pipe", "early eof" or some variation of IO error. I don't see any meaningful logs from the client, even in the tmp/jam-conformance.log. Is there a way I can make the client more verbose?

@philoniare

Copy link
Copy Markdown
Author

Hey @philoniare, thanks for the update. I'm currently failing to generate any new traces, mainly because the fuzzing stops with "broken pipe", "early eof" or some variation of IO error. I don't see any meaningful logs from the client, even in the tmp/jam-conformance.log. Is there a way I can make the client more verbose?

@semuelle Yep, I've added a verbose flag that you could use, you can just update the targets.json locally with the env like so:

"jamforge": {
  "image": "ghcr.io/philoniare/jam-forge:latest",
  "cmd": "--socket-path {TARGET_SOCK}",
  "env": "LOG_LEVEL=DEBUG",
  "gp_version": "0.7.2"
}

I wish we could reproduce the issue, but it's passing all our trace files. Please let me know if there's anything else I could do, thanks.

@philoniare

Copy link
Copy Markdown
Author

Hi @midegdugarova, could you please run our solution as well?

@CrackTheCode016

Copy link
Copy Markdown

Hi @philoniare, apologies for the lack of communication, there have been a lot of internal changes. I just started fuzzing your target this morning, will keep you updated, thanks!

@philoniare

Copy link
Copy Markdown
Author

Hi @philoniare, apologies for the lack of communication, there have been a lot of internal changes. I just started fuzzing your target this morning, will keep you updated, thanks!

No worries, @CrackTheCode016. Great, thank you very much, looking forward to the results.

@CrackTheCode016

Copy link
Copy Markdown

@philoniare Apologies, I did not see the previous comments about running it verbose. I will do another run now with it.

You may find a summary below, as well as the traces / some logs here.

TRACE ID                  | TARGET          | STEPS      | IMPORTED   | SOURCE             | STATUS/ERROR
-------------------------------------------------------------------------------------------------------------------
1772633153_1700           | jam-forge       | 1,573      | 1,553      | Report             | IO error: Broken pipe (os e...
1772633153_2179           | jam-forge       | 37,876     | 37,088     | Report             | IO error: early eof (potent...
1772633153_2395           | jam-forge       | 36,294     | 35,534     | Report             | IO error: early eof (potent...
1772633153_3829           | jam-forge       | 534        | 521        | Report             | IO error: Broken pipe (os e...
1772633153_6661           | jam-forge       | 6,556      | 6,480      | Report             | Timeout waiting for peer (p...
1772633153_7080           | jam-forge       | 36,643     | 36,003     | Report             | IO error: early eof (potent...
1772633153_7408           | jam-forge       | 28,303     | 27,790     | Report             | {'roots': {'exp': '0x6b79c4...
1772633153_8526           | jam-forge       | 37,882     | 37,052     | Report             | IO error: early eof (potent...
1772633153_9345           | jam-forge       | 36,153     | 35,432     | Report             | IO error: early eof (potent...
1772633153_9393           | jam-forge       | 36,642     | 35,901     | Report             | IO error: early eof (potent...
-------------------------------------------------------------------------------------------------------------------

📊 --- FINAL SUMMARY ---
Total Runs Analyzed:   10
Total Steps (GOAL):    258,456 / 1,000,000
Total Blocks Imported: 253,354 (Informational)
Goal Progress:         25.85%
------------------------------
Avg Steps per Run:     25,845.60
Min Steps (Worst):     534
Max Steps (Best):      37,882
------------------------------
⚠️  FAILED: Missing 741,544 steps to reach goal.

@philoniare

Copy link
Copy Markdown
Author

@CrackTheCode016 This is actually great, exactly what we needed. We've addressed one bug in our host call implementation and found a memory leak that grew unbounded during subsequent runs eventually running out of memory, becoming unresponsive. Both issues have been addressed in our new docker image. Could you please rerun the tests with the latest image at your convenience? Thanks

@CrackTheCode016

Copy link
Copy Markdown

Hey @philoniare, great to hear, I pushed up some more traces with the verbose logs. I will try with the new Docker image now and let you know (most likely in the morning)

@philoniare

Copy link
Copy Markdown
Author

@CrackTheCode016 Thanks, you may run the image without verbose now as we've addressed the unbounded memory growth issue.

@CrackTheCode016

Copy link
Copy Markdown

@philoniare It did better than before; but did not reach 1 million, you may find the summary below (and traces in the branch):

TRACE ID                  | TARGET          | STEPS      | IMPORTED   | SOURCE             | STATUS/ERROR
-------------------------------------------------------------------------------------------------------------------
1772671563_1050           | jam-forge       | 100,000    | 97,985     | Report             | ✅ Success
1772671563_4018           | jam-forge       | 100,000    | 98,118     | Report             | ✅ Success
1772671563_4874           | jam-forge       | 3,931      | 3,846      | Report             | IO error: Broken pipe (os e...
1772671563_6327           | jam-forge       | 6,893      | 6,751      | Report             | Timeout waiting for peer (p...
1772671563_6527           | jam-forge       | 100,000    | 98,063     | Report             | ✅ Success
1772671563_7890           | jam-forge       | 1,070      | 1,056      | Report             | IO error: Broken pipe (os e...
1772671563_7910           | jam-forge       | 6,993      | 6,817      | Report             | Timeout waiting for peer (p...
1772671563_7915           | jam-forge       | 6,969      | 6,836      | Report             | Timeout waiting for peer (p...
1772671563_8448           | jam-forge       | 7,234      | 7,127      | Report             | Timeout waiting for peer (p...
1772671563_8753           | jam-forge       | 100,000    | 97,933     | Report             | ✅ Success
-------------------------------------------------------------------------------------------------------------------

📊 --- FINAL SUMMARY ---
Total Runs Analyzed:   10
Total Steps (GOAL):    433,090 / 1,000,000
Total Blocks Imported: 424,532 (Informational)
Goal Progress:         43.31%
------------------------------
Avg Steps per Run:     43,309.00
Min Steps (Worst):     1,070
Max Steps (Best):      100,000
------------------------------
⚠️  FAILED: Missing 566,910 steps to reach goal.

@philoniare

Copy link
Copy Markdown
Author

@CrackTheCode016 Thank you for the run, glad to see that there's no state diff errors. We're just running into some long running edge cases that we were not able to test before. We've added some performance improvements that hopefully address these. Could you please run it again whenever you can?

If it's compliant with the rules of review process, it might be helpful to everyone to have one 100,000 step test case that they can run sequentially.

@CrackTheCode016

Copy link
Copy Markdown

@philoniare thank you, so currently, it is 100k x 10 runs running in parallel, so I think that accomplishes what you suggested (unless I am not understanding it correctly)

@philoniare

Copy link
Copy Markdown
Author

@CrackTheCode016 All good, I just meant making a single sequential 100k step trace public so that implementers can test their solution to make sure they're meeting the 30 second timeout performance requirement.

Looking forward to the next run results.

@CrackTheCode016

Copy link
Copy Markdown

@philoniare, the latest results are in the branch. You may find the summary below, it got farther but ran into a couple of issues.. I will also investigate that our environment is not blame:

TRACE ID                  | TARGET          | STEPS      | IMPORTED   | SOURCE             | STATUS/ERROR
-------------------------------------------------------------------------------------------------------------------
1772762160_1460           | jam-forge       | 100,000    | 98,218     | Report             | ✅ Success
1772762160_3078           | jam-forge       | 100,000    | 98,161     | Report             | ✅ Success
1772762160_3274           | jam-forge       | 100,000    | 98,130     | Report             | ✅ Success
1772762160_3540           | jam-forge       | 100,000    | 97,957     | Report             | ✅ Success
1772762160_3658           | jam-forge       | 2,123      | 2,090      | Report             | Timeout waiting for peer (p...
1772762160_4542           | jam-forge       | 45,569     | 44,670     | Report             | {'roots': {'exp': '0x1522d1...
1772762160_4888           | jam-forge       | 100,000    | 97,938     | Report             | ✅ Success
1772762160_5772           | jam-forge       | 100,000    | 97,959     | Report             | ✅ Success
1772762160_6948           | jam-forge       | 2,154      | 2,127      | Report             | Timeout waiting for peer (p...
1772762160_7538           | jam-forge       | 529        | 526        | Report             | IO error: Broken pipe (os e...
-------------------------------------------------------------------------------------------------------------------

📊 --- FINAL SUMMARY ---
Total Runs Analyzed:   10
Total Steps (GOAL):    650,375 / 1,000,000
Total Blocks Imported: 637,776 (Informational)
Goal Progress:         65.04%
------------------------------
Avg Steps per Run:     65,037.50
Min Steps (Worst):     529
Max Steps (Best):      100,000
------------------------------
⚠️  FAILED: Missing 349,625 steps to reach goal.

@philoniare

Copy link
Copy Markdown
Author

@CrackTheCode016 Environment looks great, and I think having a timeout is totally reasonable — it's a good way to catch issues with long sequential block imports.

On our end, we found and fixed a bug where an operation ordering issue was causing the node to hit an invalid state and crash. We've also made a bunch of performance improvements to reduce GC pressure, which should help with the timeout issues.

Could you run it again when you get a chance? Hoping this one's the charm!

@philoniare

Copy link
Copy Markdown
Author

Hey @CrackTheCode016 — just wanted to bump this in case it got buried. No rush, but whenever you get a chance to re-run it, we'd love to see the results. Thanks!

@CrackTheCode016

Copy link
Copy Markdown

Hi @philoniare, apologies for the delay, a lot going on internally ;)

Just run the fuzzer again with the new target. I also increased the memory in the Docker instance to ensure that it isn't a bottleneck. Thank you for your patience!

@CrackTheCode016

Copy link
Copy Markdown

@philoniare new results in the branch - unfortunately not passing the 1 million yet:

TRACE ID                  | TARGET          | STEPS      | IMPORTED   | SOURCE             | STATUS/ERROR
-------------------------------------------------------------------------------------------------------------------
1773318541_1336           | jam-forge       | 5,137      | 5,044      | Report             | IO error: Broken pipe (os e...
1773318541_2670           | jam-forge       | 100,000    | 98,044     | Report             | ✅ Success
1773318541_3694           | jam-forge       | 673        | 667        | Report             | {'roots': {'exp': '0x368444...
1773318541_4518           | jam-forge       | 68,399     | 67,090     | Report             | {'roots': {'exp': '0x23f7bc...
1773318541_5545           | jam-forge       | 100,000    | 97,846     | Report             | ✅ Success
1773318541_7456           | jam-forge       | 69,547     | 68,178     | Report             | {'roots': {'exp': '0x479ce1...
1773318541_8092           | jam-forge       | 35,534     | 34,784     | Report             | {'roots': {'exp': '0xa2e446...
1773318541_8996           | jam-forge       | 29,590     | 29,013     | Report             | {'roots': {'exp': '0xedefa9...
1773318541_9086           | jam-forge       | 100,000    | 98,036     | Report             | ✅ Success
1773318541_9721           | jam-forge       | 629        | 618        | Report             | IO error: Broken pipe (os e...
-------------------------------------------------------------------------------------------------------------------

📊 --- FINAL SUMMARY ---
Total Runs Analyzed:   10
Total Steps (GOAL):    509,509 / 1,000,000
Total Blocks Imported: 499,320 (Informational)
Goal Progress:         50.95%
------------------------------
Avg Steps per Run:     50,950.90
Min Steps (Worst):     629
Max Steps (Best):      100,000
------------------------------
⚠️  FAILED: Missing 490,491 steps to reach goal.

@philoniare

Copy link
Copy Markdown
Author

Hi @CrackTheCode016, thank you for your patience and continued support. Apologies for the multiple run requests — we've been tracking down some tricky issues. In this update, we've fixed the state diff mismatches (a subtle shallow-copy bug during accumulation) and hardened our error handling to prevent crashes from broken pipes and unexpected exceptions. We're confident this should resolve the remaining failures.

@philoniare

Copy link
Copy Markdown
Author

Hi @CrackTheCode016, with our latest changes, we're now passing the additional traces. Since we can't run the fuzzer locally, we've built our own stress testing harness and made some improvements. Could you please run it again whenever you can?

@philoniare

Copy link
Copy Markdown
Author

We have passed all of the conformance fuzzer tests for M1:
image
Link to attestation

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants