@@ -714,6 +714,45 @@ TEST(daemon_application_requires_immutable_explicit_context) {
714714 PASS ();
715715}
716716
717+ TEST (daemon_application_accepts_utf8_session_context_root ) {
718+ char root [APP_TEST_PATH_CAP ];
719+ snprintf (root , sizeof (root ), "%s/cbm-app-context-caf\xC3\xA9-XXXXXX" , cbm_tmpdir ());
720+ bool root_ok = cbm_mkdtemp (root ) != NULL ;
721+ cbm_daemon_application_t * application = cbm_daemon_application_new (NULL );
722+ cbm_daemon_runtime_application_callbacks_t callbacks =
723+ cbm_daemon_application_runtime_callbacks (application );
724+ cbm_daemon_runtime_application_session_t * session = app_test_open (& callbacks , 311 );
725+ uint8_t * context = NULL ;
726+ uint32_t context_length = 0 ;
727+ uint8_t * response = NULL ;
728+ uint32_t response_length = 0 ;
729+ bool context_ok = root_ok && app_test_context_request (root , root , & context , & context_length );
730+ cbm_daemon_runtime_application_status_t status =
731+ context_ok ? app_test_request (& callbacks , session , context , context_length , & response ,
732+ & response_length )
733+ : CBM_DAEMON_RUNTIME_APPLICATION_TRANSPORT_ERROR ;
734+
735+ free (context );
736+ free (response );
737+ if (session ) {
738+ callbacks .session_close (callbacks .context , session );
739+ }
740+ bool stopped = application && cbm_daemon_application_shutdown (application , APP_TEST_TIMEOUT_MS );
741+ cbm_daemon_application_free (application );
742+ if (root_ok ) {
743+ (void )cbm_rmdir (root );
744+ }
745+
746+ ASSERT_TRUE (root_ok );
747+ ASSERT_NOT_NULL (application );
748+ ASSERT_NOT_NULL (session );
749+ ASSERT_TRUE (context_ok );
750+ ASSERT_EQ (status , CBM_DAEMON_RUNTIME_APPLICATION_OK );
751+ ASSERT_EQ (response_length , 0 );
752+ ASSERT_TRUE (stopped );
753+ PASS ();
754+ }
755+
717756TEST (daemon_application_mcp_notification_has_no_response ) {
718757 cbm_daemon_application_t * application = cbm_daemon_application_new (NULL );
719758 cbm_daemon_runtime_application_callbacks_t callbacks =
@@ -5348,6 +5387,7 @@ SUITE(daemon_application) {
53485387 RUN_TEST (daemon_application_new_session_does_not_retain_initial_store );
53495388 RUN_TEST (daemon_application_request_cancel_is_scoped_to_exact_token );
53505389 RUN_TEST (daemon_application_requires_immutable_explicit_context );
5390+ RUN_TEST (daemon_application_accepts_utf8_session_context_root );
53515391 RUN_TEST (daemon_application_ui_config_updates_are_masked_and_serialized );
53525392 RUN_TEST (daemon_application_ui_config_rejects_noncanonical_frames );
53535393 RUN_TEST (daemon_application_ui_readiness_proof_is_generation_bound_before_context );
0 commit comments