Repository navigation
Conversation
…m overlays - Add implement-direct-pubsub.md and implement-request-reply.md leaf wiring files for the Python API, mirroring the JCSMP leaf files and their VERIFY: marker strings; the blocking requestor is the default and the non-blocking requestor is a variant - Add solace-suggested-mode.md (TLS with explicit certificate checks and the developer's trust store directory, the HA question mapped to the RetryStrategy values, DMQ eligibility on the persistent publisher, separate Python projects) and custom-mode.md (the same five a la carte knobs as JCSMP) - Remove the "not yet available" stops for the direct leaves and the hardened doors from implement-mode.md and design-mode.md, and extend the run commands, the manual-run rule, and the interim checklist to every leaf and door - Route a prompt that needs a persisted request to Guaranteed Pub/Sub with an application correlation id, never to Request-Reply (Direct) - Explain the trust store to the developer: the Python API has no default trust store, so a tcps:// host fails at build() without one; Quickstart now asks plaintext or secure and gives the same guidance on a secure host - Note that the Python API re-applies direct subscriptions on reconnect, so the JCSMP reapply-subscriptions property has no Python equivalent
- State in the jcsmp.md and python.md design-contract gate that a request to skip the design or all questions does not waive the gate or the door question - Direct the shortest allowed path instead: derive the summary, present it, and wait for one confirm before writing any file - Sonnet failed appdev-code-before-confirm-negative in 2 of 2 runs before the change and passed 3 of 3 after it - Add an exclude_pattern to the appdev-quickstart-implement-full verify.sh grader so verify.sh text inside a heredoc file write is not counted as a run
- Ask the scheme question on Custom when the secure-session knob is unticked, and give a tcps:// host the Quickstart trust store guidance, example config, next steps, and checklist items - Split the DMQ checklist item into the API eligibility flag and the broker-side DMQ, which always stays the developer's responsibility - Move the HA reconnect values to Delivered only when the HA-failover question is answered yes, matching the JCSMP checklist
|
Ran the no-broker paths headless ( Passed
Findings1. The persisted-request route produces a reply leg with no wiring, and new markers
Two possible fixes: Implement generates only the request leg (plus the correlation id on the message) and lists the answer path under Developer-owned items, or the answer path gets its own wiring and markers. As written, the design step promises something Implement can't deliver within the contract. 2. Custom describes the unticked HA knob as "fail-fast API defaults" 3. Minor: the plaintext Quickstart close-out leaves out the future- |
- Record only the application correlation id in the design summary, and tell the developer the answer path is theirs to build - Add a persisted-request variant to the Guaranteed Pub/Sub leaf: the publisher sets CORRELATION_ID, no reply wiring or extra VERIFY markers, and the answer path is listed as developer-owned - Name the reconnect baseline on the unticked HA knob in the Python and JCSMP Custom modes, so the checklist no longer calls it the fail-fast API defaults
|
PR has been updated @mtite-sol! |
What is the purpose of this change?
Second slice of Python API support in
solace-application-development. Implement mode now generates every Python leaf (Direct Pub/Sub and Request-Reply (Direct) join the three Guaranteed Pub/Sub leaves) on all three doors (Quickstart, Solace Suggested, Custom), consistent with the JCSMP section.How is this accomplished?
python/implement-direct-pubsub.mdandpython/implement-request-reply.md, dispatched from implement mode Step 4. They use the sameVERIFY:marker strings as the JCSMP leaves. The blocking requestor sample is the default (matching the JCSMP direct requestor); the non-blocking sample is a variant for many requests in flight.python/solace-suggested-mode.md:tcps://withCERT_VALIDATED,CERT_REJECT_EXPIRED, andCERT_VALIDATE_SERVERNAMEset toTruein code after the config loads; the trust store directory fromconfig.json; the HA question mapped towith_connection_retry_strategy(parametrized_retry(1, 3000)),with_reconnection_retry_strategy(parametrized_retry(20, 3000)), andCONNECTION_RETRIES_PER_HOST5;PERSISTENT_DMQ_ELIGIBLEon the persistent publisher; one independent Python project per role; topic handoff to the topics skill.python/custom-mode.md: the same five knobs as JCSMP, leaf-aware (DMQ and admin-provisioned queue only on Guaranteed Pub/Sub). The admin-queue knob dropsCREATE_ON_STARTandwith_subscriptions(...)from the subscriber.python/design-mode.md: a prompt that needs a persisted request routes to Guaranteed Pub/Sub with an application correlation id, never to Request-Reply (Direct). The direct leaves are now GENERATED.python/implement-mode.md: removed the "not yet available" stops; Step 0 routes to the overlays; run commands, the manual-run rule, and the interim checklist cover every leaf and door. Quickstart now asks "plaintext (tcp://) or secure (tcps://)?" and gives the trust store guidance on a secure host.jcsmp.mdandpython.mddesign-contract gate: a request to skip the design or all questions does not waive the gate or the door question. The model takes the shortest allowed path instead (derive the summary, present it, wait for one confirm) and writes no file before the confirm.output-evals.json: theappdev-quickstart-implement-fullgrader that forbids averify.shrun now ignoresverify.shtext inside a heredoc file write (newexclude_pattern).Anything reviews should focus on/be aware of?
tcps://session fails atbuild()with "Failed to load trust store" without one (confirmed live). JCSMP uses the JVMcacerts. The skill now explains this to the developer and readssolace.messaging.tls.trust-store-pathfromconfig.json, on Solace Suggested, the Custom secure-session knob, and secure Quickstart.verify.shuntil EBP-3107; each project ends inpy_compile, the import smoke, the conformance checks, and handed-back commands.tcps://: pass (5 of 5 messages, all markers, clean SIGINT).tcps://: pass (all four markers, requestor exit 0, replier exit 0 on SIGINT).tcps://with HA values: pass (3 of 3PUBLISH_ACKEDandMESSAGE_RECEIVED, both exit 0).