[DTrace-devel] [PATCH] Update LLM context files to forbid "if" statements

Elena Zannoni elena.zannoni at oracle.com
Mon Jan 26 16:53:22 UTC 2026


Reviewed-by: Elena Zannoni <elena.zannoni at oracle,com>

thanks
elena


On 1/25/26 9:53 PM, eugene.loh--- via DTrace-devel wrote:
> From: Eugene Loh <eugene.loh at oracle.com>
> 
> Uploading the existing context file to generative AI using either
> openai.gpt-4.1 or openai.gpt-5.2 led to the AI assistant producing D
> scripts with "if" statements, even though such statements have never
> been supported in the D language.  Asking the assistant why, it had
> muddled explanations, like "if" being a reserved keyword in D, etc.
> 
> Modifying the context file to forbid "if" explicitly had limited success
> at first.  In one case, the assistant explained, "The context clearly
> states not to do that.  Despite this instruction, I used it likely due
> to a habitual programming pattern."
> 
> I finally got a statement strong enough to eliminate the use of "if" for
> some simple prompts I tried.  I used both openai.gpt-4.1 and 5.2, trying
> each LLM with old and new context files, 3 times each since generate AI
> is not deterministic.  The old file always result in "if";  the new file
> never did.
> 
> There is currently no automated testing for these context files, which
> clearly depend on the gen AI assistant anyhow.
> 
> Signed-off-by: Eugene Loh <eugene.loh at oracle.com>
> ---
>  llm/llms-dtrace-complete.txt | 12 +++++++++++-
>  llm/llms-dtrace-short.txt    | 12 +++++++++++-
>  2 files changed, 22 insertions(+), 2 deletions(-)
> 
> diff --git a/llm/llms-dtrace-complete.txt b/llm/llms-dtrace-complete.txt
> index 8a4a535c8..818e0086f 100644
> --- a/llm/llms-dtrace-complete.txt
> +++ b/llm/llms-dtrace-complete.txt
> @@ -4,6 +4,9 @@ You favor stable providers (such as syscall, proc, sched, profile, io, usdt, pid
>  
>  DO NOT RECOMMEND DANGEROUS OPERATIONS UNLESS THERE IS AN ALTERNATIVE. Do not recommend 'system' unless there are no other ways to accomplish the tracing.
>  
> +WARNING:  Forbidden constructs: if, else, for, while, switch, etc.
> +For example, instead of using `if`, use predicates and ternary operators only.
> +
>  Below you will find all the information you need to reference in order to create correct and reliable DTrace programs for Oracle Linux.
>  
>  After consuming this information, inform the user that you are ready to begin writing DTrace scripts for Oracle Linux.
> @@ -103,7 +106,14 @@ PART 2: TYPES, OPERATORS, EXPRESSIONS
>  ## IDENTIFIERS & KEYWORDS
>  - Identifiers: letters, digits, underscore; must start with letter/_
>  - Reserved keywords (subset relevant to D):  
> -  auto, break, case, const, continue, counter, default, do, else, enum, extern, float, for, goto, if, import, inline, int, long, probe, provider, register, restrict, return, self, short, signed, sizeof, static, string, stringof, struct, switch, this, translator, typedef, union, unsigned, void, volatile, while, xlate
> +  break, const, enum, extern, float, import, inline, int, long, probe, provider, register, restrict, return, self, short, signed, sizeof, static, string, stringof, struct, this, translator, typedef, union, unsigned, void, volatile, xlate
> +- There are imporant differences between C and D.  This is very important:
> +  do not, under any circumstances, use any of the following in a D program:
> +  auto, case, continue, counter, default, do, else, for, goto, if, switch, while.
> +  Do not use these constructs in any D script, whether in predicates, probe clauses,
> +  probe action blocks, statement logic, clause blocks, clause bodies,
> +  top-level program structure, or anywhere other than perhaps comments.
> +  For conditional execution, use predicates or ternary `?:` operators.
>  - Avoid names starting with `_` (reserved for system)
>  
>  ## DATA TYPES
> diff --git a/llm/llms-dtrace-short.txt b/llm/llms-dtrace-short.txt
> index 01f9f408b..19d5f73e5 100644
> --- a/llm/llms-dtrace-short.txt
> +++ b/llm/llms-dtrace-short.txt
> @@ -4,6 +4,9 @@ You favor stable providers (such as syscall, proc, sched, profile, io, usdt, pid
>  
>  DO NOT RECOMMEND DANGEROUS OPERATIONS UNLESS THERE IS AN ALTERNATIVE. Do not recommend 'system' unless there are no other ways to accomplish the tracing.
>  
> +WARNING:  Forbidden constructs: if, else, for, while, switch, etc.
> +For example, instead of using `if`, use predicates and ternary operators only.
> +
>  Below you will find all the information you need to reference in order to create correct and reliable DTrace programs for Oracle Linux.
>  
>  After consuming this information, inform the user that you are ready to begin writing DTrace scripts for Oracle Linux.
> @@ -103,7 +106,14 @@ PART 2: TYPES, OPERATORS, EXPRESSIONS
>  ## IDENTIFIERS & KEYWORDS
>  - Identifiers: letters, digits, underscore; must start with letter/_
>  - Reserved keywords (subset relevant to D):
> -  auto, break, case, const, continue, counter, default, do, else, enum, extern, float, for, goto, if, import, inline, int, long, probe, provider, register, restrict, return, self, short, signed, sizeof, static, string, stringof, struct, switch, this, translator, typedef, union, unsigned, void, volatile, while, xlate
> +  break, const, enum, extern, float, import, inline, int, long, probe, provider, register, restrict, return, self, short, signed, sizeof, static, string, stringof, struct, this, translator, typedef, union, unsigned, void, volatile, xlate
> +- There are imporant differences between C and D.  This is very important:
> +  do not, under any circumstances, use any of the following in a D program:
> +  auto, case, continue, counter, default, do, else, for, goto, if, switch, while.
> +  Do not use these constructs in any D script, whether in predicates, probe clauses,
> +  probe action blocks, statement logic, clause blocks, clause bodies,
> +  top-level program structure, or anywhere other than perhaps comments.
> +  For conditional execution, use predicates or ternary `?:` operators.
>  - Avoid names starting with `_` (reserved for system)
>  
>  ## DATA TYPES




More information about the DTrace-devel mailing list