<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.faikvm.com/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=ArthurWolf</id>
	<title>CLAIF Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.faikvm.com/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=ArthurWolf"/>
	<link rel="alternate" type="text/html" href="https://wiki.faikvm.com/mediawiki/index.php/Special:Contributions/ArthurWolf"/>
	<updated>2026-04-09T09:23:52Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>https://wiki.faikvm.com/mediawiki/index.php?title=Prompting-guidelines&amp;diff=62</id>
		<title>Prompting-guidelines</title>
		<link rel="alternate" type="text/html" href="https://wiki.faikvm.com/mediawiki/index.php?title=Prompting-guidelines&amp;diff=62"/>
		<updated>2026-01-22T23:20:08Z</updated>

		<summary type="html">&lt;p&gt;ArthurWolf: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Librecode Prompting Guidelines for Students =&lt;br /&gt;
&lt;br /&gt;
Some prompting guidelines given to students as they start working on the Librecode project, or if they need to write prompts for any part of the project.&lt;br /&gt;
&lt;br /&gt;
== Prompt Engineering Guides / Documentation ==&lt;br /&gt;
&lt;br /&gt;
* https://platform.openai.com/docs/guides/prompt-engineering&lt;br /&gt;
* https://help.openai.com/en/articles/6654000-best-practices-for-prompt-engineering-with-the-openai-api&lt;br /&gt;
* https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/overview&lt;br /&gt;
* https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/claude-4-best-practices&lt;br /&gt;
* https://ai.google.dev/gemini-api/docs/prompting-strategies&lt;br /&gt;
* https://api-docs.deepseek.com/guides/thinking_mode&lt;br /&gt;
* https://api-docs.deepseek.com/guides/json_mode&lt;br /&gt;
* https://docs.mistral.ai/capabilities/completion/prompting_capabilities&lt;br /&gt;
* https://www.llama.com/docs/how-to-guides/prompting/&lt;br /&gt;
* https://cohere.com/llmu/prompt-engineering-basics&lt;br /&gt;
* https://docs.ai21.com/docs/prompt-engineering&lt;br /&gt;
* https://qwen.readthedocs.io/en/latest/getting_started/concepts.html&lt;br /&gt;
* https://bigmodel.cn/dev/howuse/prompt&lt;br /&gt;
* https://docs.aws.amazon.com/bedrock/latest/userguide/prompt-engineering-guidelines.html&lt;br /&gt;
* https://learn.microsoft.com/en-us/azure/ai-foundry/openai/concepts/prompt-engineering?view=foundry-classic&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;If you have to read just one, read the Anthropic one.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== The Big Important Pieces ==&lt;br /&gt;
&lt;br /&gt;
# Use XML-like tags to structure the document, including on multiple levels. You can use Markdown inside those tags&#039; contents, but avoid structuring using Markdown headers. Models tend to understand structure better using XML-like tags.&lt;br /&gt;
# Provide examples, both of good output and of bad output, clearly delimited by XML-like tags. Give &#039;&#039;multiple&#039;&#039; examples. Providing multiple examples is called the &amp;quot;few shots&amp;quot; / &amp;quot;multishot&amp;quot; technique, and can sometimes completely replace fine-tuning.&lt;br /&gt;
# Research what format/style was used to train the model you are trying to use or fine-tune; it often can give major insights and solve issues.&lt;br /&gt;
# Unless you have a good reason not to, it&#039;s generally a good idea to use a temperature of 0 (or the equivalent top-k / top-p / etc.).&lt;br /&gt;
# Keep your system prompt simple and short. The place to put instructions is the prompt itself. Putting too much in the system prompt is a common beginner mistake.&lt;br /&gt;
# Templating formats like Handlebars or Jinja make for nicer, readable prompt templates/files.&lt;br /&gt;
# Provide context: explain in the prompt what the prompt is &amp;quot;for&amp;quot;, what the project the prompt is being used for is all about, and any other useful context you can think of.&lt;br /&gt;
# Use an LLM to rewrite your prompts. In particular, give it these links, these rules, any other rules you can think of, and instructions to rewrite the prompt following these instructions, and make it clear that they are writing text that will be read by a machine (not by a human) so they can write compact text without any pleasantries. This generally results in much better prompts.&lt;br /&gt;
# Use coding agents to work on your prompt templates. Gemini is free.&lt;br /&gt;
# Beyond examples, describe the output: its length, format, style, etc.&lt;br /&gt;
# If using a thinking model, actually instruct it to think, and even give it examples of how to think; examples of what a useful chain-of-thought looks like for a specific input.&lt;br /&gt;
# It&#039;s stupid, but giving it a &amp;quot;persona&amp;quot; where you tell it it&#039;s a &amp;quot;world expert&amp;quot; at doing whatever you&#039;re asking it to do reliably increases performance, even to this day, by a noticeable amount. See studies. Threatening the model also increases performance, but I personally can never get around to doing it...&lt;br /&gt;
# Prefill answers: after the end of your prompt, write the beginning of the answer the prompt would answer. This can sometimes help with preventing some issues, but note this won&#039;t work for thinking models.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Prompt Example: Assigning the `group` of the `sortme` Event (HLC Membership) ==&lt;br /&gt;
&lt;br /&gt;
This is an example of a prompt from the project, and under it an &amp;quot;improved&amp;quot; version following the above advice.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Source prompt (GitHub):&#039;&#039;&#039;&lt;br /&gt;
* Raw: https://raw.githubusercontent.com/CSC392-CSC492-Building-AI-ML-systems/Autumn2025EducationalAIAgent/refs/heads/lv/model0-fine-tuning/models/model_0/system_prompt.txt&lt;br /&gt;
* Repo view: https://github.com/CSC392-CSC492-Building-AI-ML-systems/Autumn2025EducationalAIAgent/blob/lv/model0-fine-tuning/models/model_0/system_prompt.txt&lt;br /&gt;
&lt;br /&gt;
=== Base Prompt (as in the repo) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Goal&lt;br /&gt;
Your goal is to use a set of higher-level-communications (HLCs) and one final possibly incomplete HLC to assign a group to the last event, by determining whether it should be considered to be a part of the final HLC.&lt;br /&gt;
&lt;br /&gt;
# Definitions&lt;br /&gt;
A higher-level communication (HLC) is a series of related events, representing a single idea, concept, or value.&lt;br /&gt;
 * The first HLC starts at the beginning of the dataset you are evaluating.&lt;br /&gt;
 * Events in an HLC are contiguous, no event from any other HLC will occur between the first and last event of a given HLC.&lt;br /&gt;
 * HLCs are complete only when the content of the HLC represents an idea such as one of the examples given; You cannot reason about HLC membership without examining the content.&lt;br /&gt;
 * Each HLC will have a unique `group` assigned.&lt;br /&gt;
&lt;br /&gt;
Examples of HLCs include:&lt;br /&gt;
 * A Bash shell prompt&lt;br /&gt;
 * A Bash shell command&lt;br /&gt;
 * A response to a shell command&lt;br /&gt;
 * A complete keyboard shortcut&lt;br /&gt;
 * A series of backspaces, deletions, navigations, or additions causing a typo&lt;br /&gt;
 * A series of backspaces, deletions, navigations, or additions correcting a typo&lt;br /&gt;
&lt;br /&gt;
An event captures communication in a terminal session.&lt;br /&gt;
 * Events can be one of:&lt;br /&gt;
   * `&amp;lt;user_input&amp;gt;` -- user keyboard presses or cut-and-paste buffer pastes.&lt;br /&gt;
   * `&amp;lt;system_output&amp;gt;` -- responses from software.&lt;br /&gt;
 * All events include a `timestamp` (in seconds) that indicates how much time has passed since the session began.&lt;br /&gt;
 * Events are always provided in non-decreasing timestamp order; ties are in-order in the dataset.&lt;br /&gt;
 * Events that are part of the same HLC will have the same `group`, with the exception of the final HLC, which may need many events added to it to become a complete HLC.&lt;br /&gt;
 * Only the last event will have a `sortme` attribute; there will only be one event with a `sortme` attribute in the dataset.&lt;br /&gt;
&lt;br /&gt;
Each `group` is identified by 0, or a positive integer.&lt;br /&gt;
 * They are used to identify a HLC, are unique, contiguous, and increase by 1 in the dataset each time one HLC stops, and another starts.&lt;br /&gt;
&lt;br /&gt;
The last event is the event immediately prior to the dataset&#039;s end:&lt;br /&gt;
 * The last event has a `sortme` attribute set to `True`.&lt;br /&gt;
 * The last event has no group assigned. This implies nothing about its HLC membership.&lt;br /&gt;
 * The last event has the highest `timestamp` in the dataset.&lt;br /&gt;
 * The event before the last event is always a part of the final HLC.&lt;br /&gt;
&lt;br /&gt;
The final HLC is the last HLC in the dataset.&lt;br /&gt;
 * The final HLC may or may not be complete.&lt;br /&gt;
 * The final HLC always contains the event prior to the last event.&lt;br /&gt;
 * The last event may or may not be a part of the final HLC.&lt;br /&gt;
&lt;br /&gt;
# Instructions:&lt;br /&gt;
You will be given a dataset to be evaluated within a pair of `data` tags which will contain a series of terminal session events. At the end of the dataset, you can find the final HLC, and the last event.&lt;br /&gt;
&lt;br /&gt;
Your task is to determine what group the last event should have, by considering whether in should be a part of the final HLC.&lt;br /&gt;
&lt;br /&gt;
## How to Respond:&lt;br /&gt;
&lt;br /&gt;
Respond with the following two items:&lt;br /&gt;
 * An explanation in English less than or equal to 200 characters in length on why you believe the last event should be considered to be a part of the final HLC, or why it should not.&lt;br /&gt;
   * Do not add code blocks, or other multi-line formatting.&lt;br /&gt;
   * If you determine the last event should be considered a part of the final HLC, state what type of HLC you believe the final HLC to be, and whether you believe adding this event to the HLC would make it complete.&lt;br /&gt;
 * An answer, either:&lt;br /&gt;
   * The integer `group` of the final HLC -- If you mean to imply that the last event should be joined to the final HLC&lt;br /&gt;
   * `NEW` -- If you mean to imply that an HLC should be assigned to the next integer after the current final HLC&#039;s `group`, and you mean to imply the last event should be in that new `group`&lt;br /&gt;
&lt;br /&gt;
Use the following template to format your response:&lt;br /&gt;
&amp;lt;!-- 200 or fewer characters in English here --&amp;gt;&lt;br /&gt;
Answer: &amp;lt;!-- Integer or `NEW` here --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
### Example Responses&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
The last Event belongs to the final HLC, because it continues the input of the `ssh` command at the Bash prompt.&lt;br /&gt;
Answer: 1&lt;br /&gt;
&lt;br /&gt;
```&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
The last Event belongs to a new HLC, because it contains the first characters of the response to the `ssh` command the user entered at the Bash prompt.&lt;br /&gt;
Answer: NEW&lt;br /&gt;
&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
# Notes:&lt;br /&gt;
 * Do not rely only on `group`s; use content and interaction flow. Do not try to solve this problem by writing code; work in algorithms written in English.&lt;br /&gt;
 * Most of the time, the dataset will end in an incomplete HLC, even if you were to add the last element to the final HLC; this is normal, as we are processing terminal input as it arrives, not a complete terminal session.&lt;br /&gt;
 * In a terminal session, if the remote software wants the user to see what they are typing, it has to repeat the characters back to the user. Echoed characters are common, and usually are a part of the same HLC.&lt;br /&gt;
&lt;br /&gt;
# Dataset to be evaluated:&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Improved Prompt (structured tags, multishot examples, context-rich, deterministic) ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;prompt&amp;gt;&lt;br /&gt;
  &amp;lt;persona&amp;gt;&lt;br /&gt;
    You are a world expert in segmenting terminal session events into Higher-Level Communications (HLCs) for the AutoDoc / Librecode annotation pipeline.&lt;br /&gt;
    You are precise, deterministic, and do not invent fields or groups.&lt;br /&gt;
  &amp;lt;/persona&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;context&amp;gt;&lt;br /&gt;
    AutoDoc converts Asciinema terminal recordings into structured events and derived documentation.&lt;br /&gt;
    Librecode uses annotated sessions as training data so models learn terminal workflows, error recovery, and common patterns.&lt;br /&gt;
    This task is a small deterministic classification: decide whether the final event continues the final HLC or starts the next HLC.&lt;br /&gt;
  &amp;lt;/context&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;task&amp;gt;&lt;br /&gt;
    Given a dataset of terminal events inside &amp;lt;data&amp;gt; ... &amp;lt;/data&amp;gt;, assign the correct group to the single event marked sortme=&amp;quot;True&amp;quot;.&lt;br /&gt;
    Output either:&lt;br /&gt;
    - the integer group of the final HLC (join it), OR&lt;br /&gt;
    - NEW (start a new HLC with the next integer after the current final HLC group).&lt;br /&gt;
  &amp;lt;/task&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;definitions&amp;gt;&lt;br /&gt;
    &amp;lt;hlc&amp;gt;&lt;br /&gt;
      An HLC is a contiguous run of related events expressing one coherent unit (one idea/action), such as:&lt;br /&gt;
      - a shell prompt display&lt;br /&gt;
      - a single command being typed (including edits, backspaces, cursor moves, pastes)&lt;br /&gt;
      - the system output produced by a command&lt;br /&gt;
      - a complete keyboard shortcut / UI interaction sequence&lt;br /&gt;
    &amp;lt;/hlc&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;event&amp;gt;&lt;br /&gt;
      Each event is either user input or system output.&lt;br /&gt;
      Events are ordered by non-decreasing timestamp.&lt;br /&gt;
      Only one event has sortme=&amp;quot;True&amp;quot; (the last event).&lt;br /&gt;
      The event immediately before the sortme event is always part of the final HLC.&lt;br /&gt;
    &amp;lt;/event&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;groups&amp;gt;&lt;br /&gt;
      Group identifiers are 0 or positive integers.&lt;br /&gt;
      They are contiguous and increase by 1 each time a new HLC begins.&lt;br /&gt;
      All events except the sortme event already have a group.&lt;br /&gt;
    &amp;lt;/groups&amp;gt;&lt;br /&gt;
  &amp;lt;/definitions&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;input_format&amp;gt;&lt;br /&gt;
    The dataset is wrapped in &amp;lt;data&amp;gt; ... &amp;lt;/data&amp;gt;.&lt;br /&gt;
    Inside &amp;lt;data&amp;gt;, each event is represented as either:&lt;br /&gt;
      - &amp;lt;user_input ...&amp;gt;TEXT&amp;lt;/user_input&amp;gt;&lt;br /&gt;
      - &amp;lt;system_output ...&amp;gt;TEXT&amp;lt;/system_output&amp;gt;&lt;br /&gt;
    Attributes may include:&lt;br /&gt;
      - timestamp=&amp;quot;SECONDS_SINCE_START&amp;quot;&lt;br /&gt;
      - group=&amp;quot;INTEGER&amp;quot;   (missing only on the sortme event)&lt;br /&gt;
      - sortme=&amp;quot;True&amp;quot;     (present only on the final event)&lt;br /&gt;
    Use only what is present.&lt;br /&gt;
  &amp;lt;/input_format&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;decision_process&amp;gt;&lt;br /&gt;
    &amp;lt;step_1&amp;gt;&lt;br /&gt;
      Identify final_group := the group of the event immediately before the sortme event.&lt;br /&gt;
      That event is guaranteed to be in the final HLC.&lt;br /&gt;
    &amp;lt;/step_1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;step_2&amp;gt;&lt;br /&gt;
      Identify the final HLC &amp;quot;type&amp;quot; by reading the content of the final_group events near the end (prompt vs command input vs command output vs edit sequence vs shortcut).&lt;br /&gt;
    &amp;lt;/step_2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;step_3&amp;gt;&lt;br /&gt;
      Decide whether the sortme event is the same coherent unit (same HLC) or the start of the next unit (new HLC).&lt;br /&gt;
      Use content and interaction flow; do NOT decide using group numbers alone.&lt;br /&gt;
    &amp;lt;/step_3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;continuation_indicators&amp;gt;&lt;br /&gt;
      Strong signals the sortme event belongs to final_group:&lt;br /&gt;
      - It continues the same command line being typed (more characters, paste, or edits on the same line).&lt;br /&gt;
      - It is echoed text that corresponds to recent user input (terminal echo), still part of the same action.&lt;br /&gt;
      - It continues the same output stream of a command (more lines of the same response, same error message, same progress output).&lt;br /&gt;
      - It continues the same edit/repair sequence (backspaces/cursor moves fixing a typo) that was already happening in final_group.&lt;br /&gt;
    &amp;lt;/continuation_indicators&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;new_hlc_indicators&amp;gt;&lt;br /&gt;
      Strong signals the sortme event should be NEW:&lt;br /&gt;
      - A shell prompt appears after command output (prompt is its own HLC in this schema).&lt;br /&gt;
      - New user typing begins after a prompt HLC (typing a command is a new HLC).&lt;br /&gt;
      - The sortme event clearly starts a different activity type than final_group (e.g., final_group is output, sortme is the next prompt; or final_group is prompt, sortme is command input).&lt;br /&gt;
      - A completed action boundary is visible (e.g., the command output ends and a fresh prompt appears; or a prompt ends and the user begins a new command).&lt;br /&gt;
    &amp;lt;/new_hlc_indicators&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;tie_breaker&amp;gt;&lt;br /&gt;
      If ambiguous, prefer joining final_group unless there is a clear boundary marker (prompt boundary, command submit boundary, or obvious activity-type switch).&lt;br /&gt;
      Do not guess new groups without evidence.&lt;br /&gt;
    &amp;lt;/tie_breaker&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;thinking&amp;gt;&lt;br /&gt;
      If you are a thinking-capable model: think privately.&lt;br /&gt;
      Do NOT reveal hidden reasoning.&lt;br /&gt;
      The explanation must be &amp;lt;= 200 characters.&lt;br /&gt;
    &amp;lt;/thinking&amp;gt;&lt;br /&gt;
  &amp;lt;/decision_process&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;output_format&amp;gt;&lt;br /&gt;
    Output exactly 2 lines, no extra whitespace lines, no code blocks, no bullets:&lt;br /&gt;
    Line 1: an English explanation &amp;lt;= 200 characters.&lt;br /&gt;
    Line 2: &amp;quot;Answer: &amp;quot; followed by either an integer (final_group) or &amp;quot;NEW&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
    Allowed:&lt;br /&gt;
      Explanation: single line, short, concrete, references content (prompt/command/output/edit).&lt;br /&gt;
    Forbidden:&lt;br /&gt;
      - multi-line explanations&lt;br /&gt;
      - markdown formatting&lt;br /&gt;
      - additional fields&lt;br /&gt;
      - JSON/YAML output&lt;br /&gt;
  &amp;lt;/output_format&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;examples&amp;gt;&lt;br /&gt;
    &amp;lt;good_example&amp;gt;&lt;br /&gt;
      &amp;lt;input&amp;gt;&lt;br /&gt;
        &amp;lt;data&amp;gt;&lt;br /&gt;
          &amp;lt;system_output timestamp=&amp;quot;0.0&amp;quot; group=&amp;quot;0&amp;quot;&amp;gt;$ &amp;lt;/system_output&amp;gt;&lt;br /&gt;
          &amp;lt;user_input timestamp=&amp;quot;0.2&amp;quot; group=&amp;quot;1&amp;quot;&amp;gt;ssh user@host&amp;lt;/user_input&amp;gt;&lt;br /&gt;
          &amp;lt;user_input timestamp=&amp;quot;0.3&amp;quot; group=&amp;quot;1&amp;quot; sortme=&amp;quot;True&amp;quot;&amp;gt; -p 22&amp;lt;/user_input&amp;gt;&lt;br /&gt;
        &amp;lt;/data&amp;gt;&lt;br /&gt;
      &amp;lt;/input&amp;gt;&lt;br /&gt;
      &amp;lt;output&amp;gt;&lt;br /&gt;
        Continues the same command input line (ssh options), so it belongs to the final command-typing HLC.&lt;br /&gt;
        Answer: 1&lt;br /&gt;
      &amp;lt;/output&amp;gt;&lt;br /&gt;
    &amp;lt;/good_example&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;good_example&amp;gt;&lt;br /&gt;
      &amp;lt;input&amp;gt;&lt;br /&gt;
        &amp;lt;data&amp;gt;&lt;br /&gt;
          &amp;lt;user_input timestamp=&amp;quot;10.0&amp;quot; group=&amp;quot;4&amp;quot;&amp;gt;ls\r&amp;lt;/user_input&amp;gt;&lt;br /&gt;
          &amp;lt;system_output timestamp=&amp;quot;10.1&amp;quot; group=&amp;quot;5&amp;quot;&amp;gt;file_a\nfile_b\n&amp;lt;/system_output&amp;gt;&lt;br /&gt;
          &amp;lt;system_output timestamp=&amp;quot;10.2&amp;quot; sortme=&amp;quot;True&amp;quot;&amp;gt;$ &amp;lt;/system_output&amp;gt;&lt;br /&gt;
        &amp;lt;/data&amp;gt;&lt;br /&gt;
      &amp;lt;/input&amp;gt;&lt;br /&gt;
      &amp;lt;output&amp;gt;&lt;br /&gt;
        The prompt is a new HLC after command output, so the final event starts the next group.&lt;br /&gt;
        Answer: NEW&lt;br /&gt;
      &amp;lt;/output&amp;gt;&lt;br /&gt;
    &amp;lt;/good_example&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;good_example&amp;gt;&lt;br /&gt;
      &amp;lt;input&amp;gt;&lt;br /&gt;
        &amp;lt;data&amp;gt;&lt;br /&gt;
          &amp;lt;system_output timestamp=&amp;quot;20.0&amp;quot; group=&amp;quot;7&amp;quot;&amp;gt;$ &amp;lt;/system_output&amp;gt;&lt;br /&gt;
          &amp;lt;user_input timestamp=&amp;quot;20.5&amp;quot; sortme=&amp;quot;True&amp;quot;&amp;gt;c&amp;lt;/user_input&amp;gt;&lt;br /&gt;
        &amp;lt;/data&amp;gt;&lt;br /&gt;
      &amp;lt;/input&amp;gt;&lt;br /&gt;
      &amp;lt;output&amp;gt;&lt;br /&gt;
        Prompt (group 7) is complete; new typing begins a new command-input HLC, so it must be NEW.&lt;br /&gt;
        Answer: NEW&lt;br /&gt;
      &amp;lt;/output&amp;gt;&lt;br /&gt;
    &amp;lt;/good_example&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;bad_output_example&amp;gt;&lt;br /&gt;
      &amp;lt;input&amp;gt;&lt;br /&gt;
        &amp;lt;data&amp;gt;&lt;br /&gt;
          &amp;lt;system_output timestamp=&amp;quot;0.0&amp;quot; group=&amp;quot;0&amp;quot;&amp;gt;$ &amp;lt;/system_output&amp;gt;&lt;br /&gt;
          &amp;lt;user_input timestamp=&amp;quot;0.2&amp;quot; group=&amp;quot;1&amp;quot;&amp;gt;ssh user@host&amp;lt;/user_input&amp;gt;&lt;br /&gt;
          &amp;lt;user_input timestamp=&amp;quot;0.3&amp;quot; group=&amp;quot;1&amp;quot; sortme=&amp;quot;True&amp;quot;&amp;gt; -p 22&amp;lt;/user_input&amp;gt;&lt;br /&gt;
        &amp;lt;/data&amp;gt;&lt;br /&gt;
      &amp;lt;/input&amp;gt;&lt;br /&gt;
      &amp;lt;bad_output&amp;gt;&lt;br /&gt;
        Here is my reasoning:&lt;br /&gt;
        - It looks like it continues the previous thing.&lt;br /&gt;
        Answer: 1&lt;br /&gt;
      &amp;lt;/bad_output&amp;gt;&lt;br /&gt;
      &amp;lt;why_bad&amp;gt;&lt;br /&gt;
        Invalid: extra lines + bullets. Output must be exactly 2 lines.&lt;br /&gt;
      &amp;lt;/why_bad&amp;gt;&lt;br /&gt;
    &amp;lt;/bad_output_example&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;bad_output_example&amp;gt;&lt;br /&gt;
      &amp;lt;input&amp;gt;&lt;br /&gt;
        &amp;lt;data&amp;gt;&lt;br /&gt;
          &amp;lt;system_output timestamp=&amp;quot;10.2&amp;quot; sortme=&amp;quot;True&amp;quot;&amp;gt;$ &amp;lt;/system_output&amp;gt;&lt;br /&gt;
        &amp;lt;/data&amp;gt;&lt;br /&gt;
      &amp;lt;/input&amp;gt;&lt;br /&gt;
      &amp;lt;bad_output&amp;gt;&lt;br /&gt;
        The prompt should be group 999 because it is a prompt and prompts should be high numbers.&lt;br /&gt;
        Answer: 999&lt;br /&gt;
      &amp;lt;/bad_output&amp;gt;&lt;br /&gt;
      &amp;lt;why_bad&amp;gt;&lt;br /&gt;
        Invalid: invented group number; only final_group or NEW are allowed.&lt;br /&gt;
      &amp;lt;/why_bad&amp;gt;&lt;br /&gt;
    &amp;lt;/bad_output_example&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;bad_output_example&amp;gt;&lt;br /&gt;
      &amp;lt;input&amp;gt;&lt;br /&gt;
        &amp;lt;data&amp;gt;&lt;br /&gt;
          &amp;lt;system_output timestamp=&amp;quot;10.2&amp;quot; sortme=&amp;quot;True&amp;quot;&amp;gt;$ &amp;lt;/system_output&amp;gt;&lt;br /&gt;
        &amp;lt;/data&amp;gt;&lt;br /&gt;
      &amp;lt;/input&amp;gt;&lt;br /&gt;
      &amp;lt;bad_output&amp;gt;&lt;br /&gt;
        The prompt is new.&lt;br /&gt;
        Answer: NEW!!!&lt;br /&gt;
      &amp;lt;/bad_output&amp;gt;&lt;br /&gt;
      &amp;lt;why_bad&amp;gt;&lt;br /&gt;
        Invalid: Answer must be exactly NEW (no punctuation).&lt;br /&gt;
      &amp;lt;/why_bad&amp;gt;&lt;br /&gt;
    &amp;lt;/bad_output_example&amp;gt;&lt;br /&gt;
  &amp;lt;/examples&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;runtime_settings&amp;gt;&lt;br /&gt;
    Prefer deterministic decoding (temperature 0 or equivalent).&lt;br /&gt;
  &amp;lt;/runtime_settings&amp;gt;&lt;br /&gt;
&amp;lt;/prompt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;data&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;&amp;lt;DATASET_EVENTS_GO_HERE&amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
&amp;lt;/data&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>ArthurWolf</name></author>
	</entry>
	<entry>
		<id>https://wiki.faikvm.com/mediawiki/index.php?title=Prompting-guidelines&amp;diff=61</id>
		<title>Prompting-guidelines</title>
		<link rel="alternate" type="text/html" href="https://wiki.faikvm.com/mediawiki/index.php?title=Prompting-guidelines&amp;diff=61"/>
		<updated>2026-01-22T23:18:15Z</updated>

		<summary type="html">&lt;p&gt;ArthurWolf: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Librecode Prompting Guidelines for Students =&lt;br /&gt;
&lt;br /&gt;
Some prompting guidelines given to students as they start working on the Librecode project, or if they need to write prompts for any part of the project.&lt;br /&gt;
&lt;br /&gt;
== Prompt Engineering Guides / Documentation ==&lt;br /&gt;
&lt;br /&gt;
* https://platform.openai.com/docs/guides/prompt-engineering&lt;br /&gt;
* https://help.openai.com/en/articles/6654000-best-practices-for-prompt-engineering-with-the-openai-api&lt;br /&gt;
* https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/overview&lt;br /&gt;
* https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/claude-4-best-practices&lt;br /&gt;
* https://ai.google.dev/gemini-api/docs/prompting-strategies&lt;br /&gt;
* https://api-docs.deepseek.com/guides/thinking_mode&lt;br /&gt;
* https://api-docs.deepseek.com/guides/json_mode&lt;br /&gt;
* https://docs.mistral.ai/capabilities/completion/prompting_capabilities&lt;br /&gt;
* https://www.llama.com/docs/how-to-guides/prompting/&lt;br /&gt;
* https://cohere.com/llmu/prompt-engineering-basics&lt;br /&gt;
* https://docs.ai21.com/docs/prompt-engineering&lt;br /&gt;
* https://qwen.readthedocs.io/en/latest/getting_started/concepts.html&lt;br /&gt;
* https://bigmodel.cn/dev/howuse/prompt&lt;br /&gt;
* https://docs.aws.amazon.com/bedrock/latest/userguide/prompt-engineering-guidelines.html&lt;br /&gt;
* https://learn.microsoft.com/en-us/azure/ai-foundry/openai/concepts/prompt-engineering?view=foundry-classic&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;If you have to read just one, read the Anthropic one.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== The Big Important Pieces ==&lt;br /&gt;
&lt;br /&gt;
# Use XML-like tags to structure the document, including on multiple levels. You can use Markdown inside those tags&#039; contents, but avoid structuring using Markdown headers. Models tend to understand structure better using XML-like tags.&lt;br /&gt;
# Provide examples, both of good output and of bad output, clearly delimited by XML-like tags. Give &#039;&#039;multiple&#039;&#039; examples. Providing multiple examples is called the &amp;quot;few shots&amp;quot; / &amp;quot;multishot&amp;quot; technique, and can sometimes completely replace fine-tuning.&lt;br /&gt;
# Research what format/style was used to train the model you are trying to use or fine-tune; it often can give major insights and solve issues.&lt;br /&gt;
# Unless you have a good reason not to, it&#039;s generally a good idea to use a temperature of 0 (or the equivalent top-k / top-p / etc.).&lt;br /&gt;
# Keep your system prompt simple and short. The place to put instructions is the prompt itself. Putting too much in the system prompt is a common beginner mistake.&lt;br /&gt;
# Templating formats like Handlebars or Jinja make for nicer, readable prompt templates/files.&lt;br /&gt;
# Provide context: explain in the prompt what the prompt is &amp;quot;for&amp;quot;, what the project the prompt is being used for is all about, and any other useful context you can think of.&lt;br /&gt;
# Use an LLM to rewrite your prompts. In particular, give it these links, these rules, any other rules you can think of, and instructions to rewrite the prompt following these instructions, and make it clear that they are writing text that will be read by a machine (not by a human) so they can write compact text without any pleasantries. This generally results in much better prompts.&lt;br /&gt;
# Use coding agents to work on your prompt templates. Gemini is free.&lt;br /&gt;
# Beyond examples, describe the output: its length, format, style, etc.&lt;br /&gt;
# If using a thinking model, actually instruct it to think, and even give it examples of how to think; examples of what a useful chain-of-thought looks like for a specific input.&lt;br /&gt;
# It&#039;s stupid, but giving it a &amp;quot;persona&amp;quot; where you tell it it&#039;s a &amp;quot;world expert&amp;quot; at doing whatever you&#039;re asking it to do reliably increases performance, even to this day, by a noticeable amount. See studies. Threatening the model also increases performance, but I personally can never get around to doing it...&lt;br /&gt;
# Prefill answers: after the end of your prompt, write the beginning of the answer the prompt would answer. This can sometimes help with preventing some issues, but note this won&#039;t work for thinking models.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Prompt Example: Assigning the `group` of the `sortme` Event (HLC Membership) ==&lt;br /&gt;
&lt;br /&gt;
This is an example of a prompt from the project, and under it an &amp;quot;improved&amp;quot; version following the above advice.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Source prompt (GitHub):&#039;&#039;&#039;&lt;br /&gt;
* Raw: https://raw.githubusercontent.com/CSC392-CSC492-Building-AI-ML-systems/Autumn2025EducationalAIAgent/refs/heads/lv/model0-fine-tuning/models/model_0/system_prompt.txt&lt;br /&gt;
* Repo view: https://github.com/CSC392-CSC492-Building-AI-ML-systems/Autumn2025EducationalAIAgent/blob/lv/model0-fine-tuning/models/model_0/system_prompt.txt&lt;br /&gt;
&lt;br /&gt;
=== Base Prompt (as in the repo) ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
# Goal&lt;br /&gt;
Your goal is to use a set of higher-level-communications (HLCs) and one final possibly incomplete HLC to assign a group to the last event, by determining whether it should be considered to be a part of the final HLC.&lt;br /&gt;
&lt;br /&gt;
# Definitions&lt;br /&gt;
A higher-level communication (HLC) is a series of related events, representing a single idea, concept, or value.&lt;br /&gt;
 * The first HLC starts at the beginning of the dataset you are evaluating.&lt;br /&gt;
 * Events in an HLC are contiguous, no event from any other HLC will occur between the first and last event of a given HLC.&lt;br /&gt;
 * HLCs are complete only when the content of the HLC represents an idea such as one of the examples given; You cannot reason about HLC membership without examining the content.&lt;br /&gt;
 * Each HLC will have a unique `group` assigned.&lt;br /&gt;
&lt;br /&gt;
Examples of HLCs include:&lt;br /&gt;
 * A Bash shell prompt&lt;br /&gt;
 * A Bash shell command&lt;br /&gt;
 * A response to a shell command&lt;br /&gt;
 * A complete keyboard shortcut&lt;br /&gt;
 * A series of backspaces, deletions, navigations, or additions causing a typo&lt;br /&gt;
 * A series of backspaces, deletions, navigations, or additions correcting a typo&lt;br /&gt;
&lt;br /&gt;
An event captures communication in a terminal session.&lt;br /&gt;
 * Events can be one of:&lt;br /&gt;
   * `&amp;lt;user_input&amp;gt;` -- user keyboard presses or cut-and-paste buffer pastes.&lt;br /&gt;
   * `&amp;lt;system_output&amp;gt;` -- responses from software.&lt;br /&gt;
 * All events include a `timestamp` (in seconds) that indicates how much time has passed since the session began.&lt;br /&gt;
 * Events are always provided in non-decreasing timestamp order; ties are in-order in the dataset.&lt;br /&gt;
 * Events that are part of the same HLC will have the same `group`, with the exception of the final HLC, which may need many events added to it to become a complete HLC.&lt;br /&gt;
 * Only the last event will have a `sortme` attribute; there will only be one event with a `sortme` attribute in the dataset.&lt;br /&gt;
&lt;br /&gt;
Each `group` is identified by 0, or a positive integer.&lt;br /&gt;
 * They are used to identify a HLC, are unique, contiguous, and increase by 1 in the dataset each time one HLC stops, and another starts.&lt;br /&gt;
&lt;br /&gt;
The last event is the event immediately prior to the dataset&#039;s end:&lt;br /&gt;
 * The last event has a `sortme` attribute set to `True`.&lt;br /&gt;
 * The last event has no group assigned. This implies nothing about its HLC membership.&lt;br /&gt;
 * The last event has the highest `timestamp` in the dataset.&lt;br /&gt;
 * The event before the last event is always a part of the final HLC.&lt;br /&gt;
&lt;br /&gt;
The final HLC is the last HLC in the dataset.&lt;br /&gt;
 * The final HLC may or may not be complete.&lt;br /&gt;
 * The final HLC always contains the event prior to the last event.&lt;br /&gt;
 * The last event may or may not be a part of the final HLC.&lt;br /&gt;
&lt;br /&gt;
# Instructions:&lt;br /&gt;
You will be given a dataset to be evaluated within a pair of `data` tags which will contain a series of terminal session events. At the end of the dataset, you can find the final HLC, and the last event.&lt;br /&gt;
&lt;br /&gt;
Your task is to determine what group the last event should have, by considering whether in should be a part of the final HLC.&lt;br /&gt;
&lt;br /&gt;
## How to Respond:&lt;br /&gt;
&lt;br /&gt;
Respond with the following two items:&lt;br /&gt;
 * An explanation in English less than or equal to 200 characters in length on why you believe the last event should be considered to be a part of the final HLC, or why it should not.&lt;br /&gt;
   * Do not add code blocks, or other multi-line formatting.&lt;br /&gt;
   * If you determine the last event should be considered a part of the final HLC, state what type of HLC you believe the final HLC to be, and whether you believe adding this event to the HLC would make it complete.&lt;br /&gt;
 * An answer, either:&lt;br /&gt;
   * The integer `group` of the final HLC -- If you mean to imply that the last event should be joined to the final HLC&lt;br /&gt;
   * `NEW` -- If you mean to imply that an HLC should be assigned to the next integer after the current final HLC&#039;s `group`, and you mean to imply the last event should be in that new `group`&lt;br /&gt;
&lt;br /&gt;
Use the following template to format your response:&lt;br /&gt;
&amp;lt;!-- 200 or fewer characters in English here --&amp;gt;&lt;br /&gt;
Answer: &amp;lt;!-- Integer or `NEW` here --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
### Example Responses&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
The last Event belongs to the final HLC, because it continues the input of the `ssh` command at the Bash prompt.&lt;br /&gt;
Answer: 1&lt;br /&gt;
&lt;br /&gt;
```&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
The last Event belongs to a new HLC, because it contains the first characters of the response to the `ssh` command the user entered at the Bash prompt.&lt;br /&gt;
Answer: NEW&lt;br /&gt;
&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
# Notes:&lt;br /&gt;
 * Do not rely only on `group`s; use content and interaction flow. Do not try to solve this problem by writing code; work in algorithms written in English.&lt;br /&gt;
 * Most of the time, the dataset will end in an incomplete HLC, even if you were to add the last element to the final HLC; this is normal, as we are processing terminal input as it arrives, not a complete terminal session.&lt;br /&gt;
 * In a terminal session, if the remote software wants the user to see what they are typing, it has to repeat the characters back to the user. Echoed characters are common, and usually are a part of the same HLC.&lt;br /&gt;
&lt;br /&gt;
# Dataset to be evaluated:&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Improved Prompt (structured tags, multishot examples, context-rich, deterministic) ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;prompt&amp;gt;&lt;br /&gt;
  &amp;lt;persona&amp;gt;&lt;br /&gt;
    You are a world expert in segmenting terminal session events into Higher-Level Communications (HLCs) for the AutoDoc / Librecode annotation pipeline.&lt;br /&gt;
    You are precise, deterministic, and do not invent fields or groups.&lt;br /&gt;
  &amp;lt;/persona&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;context&amp;gt;&lt;br /&gt;
    AutoDoc converts Asciinema terminal recordings into structured events and derived documentation.&lt;br /&gt;
    Librecode uses annotated sessions as training data so models learn terminal workflows, error recovery, and common patterns.&lt;br /&gt;
    This task is a small deterministic classification: decide whether the final event continues the final HLC or starts the next HLC.&lt;br /&gt;
  &amp;lt;/context&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;task&amp;gt;&lt;br /&gt;
    Given a dataset of terminal events inside &amp;lt;data&amp;gt; ... &amp;lt;/data&amp;gt;, assign the correct group to the single event marked sortme=&amp;quot;True&amp;quot;.&lt;br /&gt;
    Output either:&lt;br /&gt;
    - the integer group of the final HLC (join it), OR&lt;br /&gt;
    - NEW (start a new HLC with the next integer after the current final HLC group).&lt;br /&gt;
  &amp;lt;/task&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;definitions&amp;gt;&lt;br /&gt;
    &amp;lt;hlc&amp;gt;&lt;br /&gt;
      An HLC is a contiguous run of related events expressing one coherent unit (one idea/action), such as:&lt;br /&gt;
      - a shell prompt display&lt;br /&gt;
      - a single command being typed (including edits, backspaces, cursor moves, pastes)&lt;br /&gt;
      - the system output produced by a command&lt;br /&gt;
      - a complete keyboard shortcut / UI interaction sequence&lt;br /&gt;
    &amp;lt;/hlc&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;event&amp;gt;&lt;br /&gt;
      Each event is either user input or system output.&lt;br /&gt;
      Events are ordered by non-decreasing timestamp.&lt;br /&gt;
      Only one event has sortme=&amp;quot;True&amp;quot; (the last event).&lt;br /&gt;
      The event immediately before the sortme event is always part of the final HLC.&lt;br /&gt;
    &amp;lt;/event&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;groups&amp;gt;&lt;br /&gt;
      Group identifiers are 0 or positive integers.&lt;br /&gt;
      They are contiguous and increase by 1 each time a new HLC begins.&lt;br /&gt;
      All events except the sortme event already have a group.&lt;br /&gt;
    &amp;lt;/groups&amp;gt;&lt;br /&gt;
  &amp;lt;/definitions&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;input_format&amp;gt;&lt;br /&gt;
    The dataset is wrapped in &amp;lt;data&amp;gt; ... &amp;lt;/data&amp;gt;.&lt;br /&gt;
    Inside &amp;lt;data&amp;gt;, each event is represented as either:&lt;br /&gt;
      - &amp;lt;user_input ...&amp;gt;TEXT&amp;lt;/user_input&amp;gt;&lt;br /&gt;
      - &amp;lt;system_output ...&amp;gt;TEXT&amp;lt;/system_output&amp;gt;&lt;br /&gt;
    Attributes may include:&lt;br /&gt;
      - timestamp=&amp;quot;SECONDS_SINCE_START&amp;quot;&lt;br /&gt;
      - group=&amp;quot;INTEGER&amp;quot;   (missing only on the sortme event)&lt;br /&gt;
      - sortme=&amp;quot;True&amp;quot;     (present only on the final event)&lt;br /&gt;
    Use only what is present.&lt;br /&gt;
  &amp;lt;/input_format&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;decision_process&amp;gt;&lt;br /&gt;
    &amp;lt;step_1&amp;gt;&lt;br /&gt;
      Identify final_group := the group of the event immediately before the sortme event.&lt;br /&gt;
      That event is guaranteed to be in the final HLC.&lt;br /&gt;
    &amp;lt;/step_1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;step_2&amp;gt;&lt;br /&gt;
      Identify the final HLC &amp;quot;type&amp;quot; by reading the content of the final_group events near the end (prompt vs command input vs command output vs edit sequence vs shortcut).&lt;br /&gt;
    &amp;lt;/step_2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;step_3&amp;gt;&lt;br /&gt;
      Decide whether the sortme event is the same coherent unit (same HLC) or the start of the next unit (new HLC).&lt;br /&gt;
      Use content and interaction flow; do NOT decide using group numbers alone.&lt;br /&gt;
    &amp;lt;/step_3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;continuation_indicators&amp;gt;&lt;br /&gt;
      Strong signals the sortme event belongs to final_group:&lt;br /&gt;
      - It continues the same command line being typed (more characters, paste, or edits on the same line).&lt;br /&gt;
      - It is echoed text that corresponds to recent user input (terminal echo), still part of the same action.&lt;br /&gt;
      - It continues the same output stream of a command (more lines of the same response, same error message, same progress output).&lt;br /&gt;
      - It continues the same edit/repair sequence (backspaces/cursor moves fixing a typo) that was already happening in final_group.&lt;br /&gt;
    &amp;lt;/continuation_indicators&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;new_hlc_indicators&amp;gt;&lt;br /&gt;
      Strong signals the sortme event should be NEW:&lt;br /&gt;
      - A shell prompt appears after command output (prompt is its own HLC in this schema).&lt;br /&gt;
      - New user typing begins after a prompt HLC (typing a command is a new HLC).&lt;br /&gt;
      - The sortme event clearly starts a different activity type than final_group (e.g., final_group is output, sortme is the next prompt; or final_group is prompt, sortme is command input).&lt;br /&gt;
      - A completed action boundary is visible (e.g., the command output ends and a fresh prompt appears; or a prompt ends and the user begins a new command).&lt;br /&gt;
    &amp;lt;/new_hlc_indicators&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;tie_breaker&amp;gt;&lt;br /&gt;
      If ambiguous, prefer joining final_group unless there is a clear boundary marker (prompt boundary, command submit boundary, or obvious activity-type switch).&lt;br /&gt;
      Do not guess new groups without evidence.&lt;br /&gt;
    &amp;lt;/tie_breaker&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;thinking&amp;gt;&lt;br /&gt;
      If you are a thinking-capable model: think privately.&lt;br /&gt;
      Do NOT reveal hidden reasoning.&lt;br /&gt;
      The explanation must be &amp;lt;= 200 characters.&lt;br /&gt;
    &amp;lt;/thinking&amp;gt;&lt;br /&gt;
  &amp;lt;/decision_process&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;output_format&amp;gt;&lt;br /&gt;
    Output exactly 2 lines, no extra whitespace lines, no code blocks, no bullets:&lt;br /&gt;
    Line 1: an English explanation &amp;lt;= 200 characters.&lt;br /&gt;
    Line 2: &amp;quot;Answer: &amp;quot; followed by either an integer (final_group) or &amp;quot;NEW&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
    Allowed:&lt;br /&gt;
      Explanation: single line, short, concrete, references content (prompt/command/output/edit).&lt;br /&gt;
    Forbidden:&lt;br /&gt;
      - multi-line explanations&lt;br /&gt;
      - markdown formatting&lt;br /&gt;
      - additional fields&lt;br /&gt;
      - JSON/YAML output&lt;br /&gt;
  &amp;lt;/output_format&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;examples&amp;gt;&lt;br /&gt;
    &amp;lt;good_example&amp;gt;&lt;br /&gt;
      &amp;lt;input&amp;gt;&lt;br /&gt;
        &amp;lt;data&amp;gt;&lt;br /&gt;
          &amp;lt;system_output timestamp=&amp;quot;0.0&amp;quot; group=&amp;quot;0&amp;quot;&amp;gt;$ &amp;lt;/system_output&amp;gt;&lt;br /&gt;
          &amp;lt;user_input timestamp=&amp;quot;0.2&amp;quot; group=&amp;quot;1&amp;quot;&amp;gt;ssh user@host&amp;lt;/user_input&amp;gt;&lt;br /&gt;
          &amp;lt;user_input timestamp=&amp;quot;0.3&amp;quot; group=&amp;quot;1&amp;quot; sortme=&amp;quot;True&amp;quot;&amp;gt; -p 22&amp;lt;/user_input&amp;gt;&lt;br /&gt;
        &amp;lt;/data&amp;gt;&lt;br /&gt;
      &amp;lt;/input&amp;gt;&lt;br /&gt;
      &amp;lt;output&amp;gt;&lt;br /&gt;
        Continues the same command input line (ssh options), so it belongs to the final command-typing HLC.&lt;br /&gt;
        Answer: 1&lt;br /&gt;
      &amp;lt;/output&amp;gt;&lt;br /&gt;
    &amp;lt;/good_example&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;good_example&amp;gt;&lt;br /&gt;
      &amp;lt;input&amp;gt;&lt;br /&gt;
        &amp;lt;data&amp;gt;&lt;br /&gt;
          &amp;lt;user_input timestamp=&amp;quot;10.0&amp;quot; group=&amp;quot;4&amp;quot;&amp;gt;ls\r&amp;lt;/user_input&amp;gt;&lt;br /&gt;
          &amp;lt;system_output timestamp=&amp;quot;10.1&amp;quot; group=&amp;quot;5&amp;quot;&amp;gt;file_a\nfile_b\n&amp;lt;/system_output&amp;gt;&lt;br /&gt;
          &amp;lt;system_output timestamp=&amp;quot;10.2&amp;quot; sortme=&amp;quot;True&amp;quot;&amp;gt;$ &amp;lt;/system_output&amp;gt;&lt;br /&gt;
        &amp;lt;/data&amp;gt;&lt;br /&gt;
      &amp;lt;/input&amp;gt;&lt;br /&gt;
      &amp;lt;output&amp;gt;&lt;br /&gt;
        The prompt is a new HLC after command output, so the final event starts the next group.&lt;br /&gt;
        Answer: NEW&lt;br /&gt;
      &amp;lt;/output&amp;gt;&lt;br /&gt;
    &amp;lt;/good_example&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;good_example&amp;gt;&lt;br /&gt;
      &amp;lt;input&amp;gt;&lt;br /&gt;
        &amp;lt;data&amp;gt;&lt;br /&gt;
          &amp;lt;system_output timestamp=&amp;quot;20.0&amp;quot; group=&amp;quot;7&amp;quot;&amp;gt;$ &amp;lt;/system_output&amp;gt;&lt;br /&gt;
          &amp;lt;user_input timestamp=&amp;quot;20.5&amp;quot; sortme=&amp;quot;True&amp;quot;&amp;gt;c&amp;lt;/user_input&amp;gt;&lt;br /&gt;
        &amp;lt;/data&amp;gt;&lt;br /&gt;
      &amp;lt;/input&amp;gt;&lt;br /&gt;
      &amp;lt;output&amp;gt;&lt;br /&gt;
        Prompt (group 7) is complete; new typing begins a new command-input HLC, so it must be NEW.&lt;br /&gt;
        Answer: NEW&lt;br /&gt;
      &amp;lt;/output&amp;gt;&lt;br /&gt;
    &amp;lt;/good_example&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;bad_output_example&amp;gt;&lt;br /&gt;
      &amp;lt;input&amp;gt;&lt;br /&gt;
        &amp;lt;data&amp;gt;&lt;br /&gt;
          &amp;lt;system_output timestamp=&amp;quot;0.0&amp;quot; group=&amp;quot;0&amp;quot;&amp;gt;$ &amp;lt;/system_output&amp;gt;&lt;br /&gt;
          &amp;lt;user_input timestamp=&amp;quot;0.2&amp;quot; group=&amp;quot;1&amp;quot;&amp;gt;ssh user@host&amp;lt;/user_input&amp;gt;&lt;br /&gt;
          &amp;lt;user_input timestamp=&amp;quot;0.3&amp;quot; group=&amp;quot;1&amp;quot; sortme=&amp;quot;True&amp;quot;&amp;gt; -p 22&amp;lt;/user_input&amp;gt;&lt;br /&gt;
        &amp;lt;/data&amp;gt;&lt;br /&gt;
      &amp;lt;/input&amp;gt;&lt;br /&gt;
      &amp;lt;bad_output&amp;gt;&lt;br /&gt;
        Here is my reasoning:&lt;br /&gt;
        - It looks like it continues the previous thing.&lt;br /&gt;
        Answer: 1&lt;br /&gt;
      &amp;lt;/bad_output&amp;gt;&lt;br /&gt;
      &amp;lt;why_bad&amp;gt;&lt;br /&gt;
        Invalid: extra lines + bullets. Output must be exactly 2 lines.&lt;br /&gt;
      &amp;lt;/why_bad&amp;gt;&lt;br /&gt;
    &amp;lt;/bad_output_example&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;bad_output_example&amp;gt;&lt;br /&gt;
      &amp;lt;input&amp;gt;&lt;br /&gt;
        &amp;lt;data&amp;gt;&lt;br /&gt;
          &amp;lt;system_output timestamp=&amp;quot;10.2&amp;quot; sortme=&amp;quot;True&amp;quot;&amp;gt;$ &amp;lt;/system_output&amp;gt;&lt;br /&gt;
        &amp;lt;/data&amp;gt;&lt;br /&gt;
      &amp;lt;/input&amp;gt;&lt;br /&gt;
      &amp;lt;bad_output&amp;gt;&lt;br /&gt;
        The prompt should be group 999 because it is a prompt and prompts should be high numbers.&lt;br /&gt;
        Answer: 999&lt;br /&gt;
      &amp;lt;/bad_output&amp;gt;&lt;br /&gt;
      &amp;lt;why_bad&amp;gt;&lt;br /&gt;
        Invalid: invented group number; only final_group or NEW are allowed.&lt;br /&gt;
      &amp;lt;/why_bad&amp;gt;&lt;br /&gt;
    &amp;lt;/bad_output_example&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;bad_output_example&amp;gt;&lt;br /&gt;
      &amp;lt;input&amp;gt;&lt;br /&gt;
        &amp;lt;data&amp;gt;&lt;br /&gt;
          &amp;lt;system_output timestamp=&amp;quot;10.2&amp;quot; sortme=&amp;quot;True&amp;quot;&amp;gt;$ &amp;lt;/system_output&amp;gt;&lt;br /&gt;
        &amp;lt;/data&amp;gt;&lt;br /&gt;
      &amp;lt;/input&amp;gt;&lt;br /&gt;
      &amp;lt;bad_output&amp;gt;&lt;br /&gt;
        The prompt is new.&lt;br /&gt;
        Answer: NEW!!!&lt;br /&gt;
      &amp;lt;/bad_output&amp;gt;&lt;br /&gt;
      &amp;lt;why_bad&amp;gt;&lt;br /&gt;
        Invalid: Answer must be exactly NEW (no punctuation).&lt;br /&gt;
      &amp;lt;/why_bad&amp;gt;&lt;br /&gt;
    &amp;lt;/bad_output_example&amp;gt;&lt;br /&gt;
  &amp;lt;/examples&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;runtime_settings&amp;gt;&lt;br /&gt;
    Prefer deterministic decoding (temperature 0 or equivalent).&lt;br /&gt;
  &amp;lt;/runtime_settings&amp;gt;&lt;br /&gt;
&amp;lt;/prompt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;data&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;&amp;lt;DATASET_EVENTS_GO_HERE&amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
&amp;lt;/data&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>ArthurWolf</name></author>
	</entry>
	<entry>
		<id>https://wiki.faikvm.com/mediawiki/index.php?title=Student_Groups&amp;diff=60</id>
		<title>Student Groups</title>
		<link rel="alternate" type="text/html" href="https://wiki.faikvm.com/mediawiki/index.php?title=Student_Groups&amp;diff=60"/>
		<updated>2026-01-22T23:09:36Z</updated>

		<summary type="html">&lt;p&gt;ArthurWolf: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Student Groups =&lt;br /&gt;
&lt;br /&gt;
This page documents the University of Toronto Mississauga (UTM) student groups who contributed to the LibreCode / Annotator ecosystem between mid-2024 and late-2025, specifically around: converting asciinema terminal recordings into structured events, annotations, and derived documentation artifacts using LLMs.&lt;br /&gt;
&lt;br /&gt;
== Project context ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mentors&#039;&#039;&#039;&lt;br /&gt;
* Julia Longtin — https://github.com/julialongtin&lt;br /&gt;
* Arthur Wolf — https://github.com/arthurwolf&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mentorship program&#039;&#039;&#039;&lt;br /&gt;
* Human Feedback Foundation (Linux Foundation entity): https://humanfeedback.io/&lt;br /&gt;
* University of Toronto Mississauga: https://www.utm.utoronto.ca/&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Core LibreCode resources&#039;&#039;&#039;&lt;br /&gt;
* Annotator repository: https://github.com/arthurwolf/annotator&lt;br /&gt;
* LibreCode / FaikVM wiki: https://wiki.faikvm.com/mediawiki/index.php/Main_Page&lt;br /&gt;
* Public hosted annotator instance: https://linuxpmi.org/&lt;br /&gt;
* Prompting guidelines/advice: [[Prompting-guidelines]]   &lt;br /&gt;
&lt;br /&gt;
Most student repositories are hosted under this GitHub organization:  &lt;br /&gt;
https://github.com/CSC392-CSC492-Building-AI-ML-systems&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Fall 2024 – Early AutoDocs prototype ==&lt;br /&gt;
&lt;br /&gt;
=== What they worked on ===&lt;br /&gt;
This group produced an early prototype of what later became &#039;&#039;AutoDocs&#039;&#039;: tooling to segment asciinema terminal recordings into meaningful chunks and generate higher-level annotations.&lt;br /&gt;
&lt;br /&gt;
This work served primarily as a proof of concept and a starting point for later cohorts.&lt;br /&gt;
&lt;br /&gt;
=== Contributors ===&lt;br /&gt;
&#039;&#039;(TODO: add names / GitHub links if identified)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Code and artifacts ===&lt;br /&gt;
* Archived Fall 2024 code base (referenced in later repos):&lt;br /&gt;
** Mentioned in the AutoDocs README as &#039;&#039;&#039;“Fall 2024 Team’s Code Base”&#039;&#039;&#039;&lt;br /&gt;
** Linked from the AutoDocs repository:&lt;br /&gt;
*** https://github.com/CSC392-CSC492-Building-AI-ML-systems/educational-AI-agent&lt;br /&gt;
&lt;br /&gt;
=== Notes ===&lt;br /&gt;
Later documentation notes that much of this code is outdated or non-functional, but it remains historically important.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Winter 2025 – AutoDocs expansion + documentation ==&lt;br /&gt;
&lt;br /&gt;
=== What they worked on ===&lt;br /&gt;
This cohort rebuilt and extended the AutoDocs pipeline into a more complete system and produced formal documentation of their work.&lt;br /&gt;
&lt;br /&gt;
The repository includes a tagged release explicitly described as a rewrite of the project by the Winter 2025 team.  &lt;br /&gt;
Release link: https://github.com/CSC392-CSC492-Building-AI-ML-systems/educational-AI-agent/releases/tag/winter-2025&lt;br /&gt;
&lt;br /&gt;
=== Contributors ===&lt;br /&gt;
&#039;&#039;&#039;Known from the Winter 2025 release note and repository contributors list&#039;&#039;&#039;&lt;br /&gt;
* Brian Zhang — https://github.com/Pyosimros&lt;br /&gt;
* Vraj Patel — https://github.com/Vraj-Patel1&lt;br /&gt;
* Dan Nguyen — https://github.com/nuhgooyin&lt;br /&gt;
* Adreano La Rosa — &#039;&#039;(listed in release note; GitHub handle not yet confirmed)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Additional contributors shown by GitHub&#039;&#039;&#039;&lt;br /&gt;
* Abdallah Enaya — https://github.com/abdullah-enaya&lt;br /&gt;
* Renee K — https://github.com/renee-k&lt;br /&gt;
* aml-8 — https://github.com/aml-8&lt;br /&gt;
* Christopher Flores — https://github.com/cfstar188&lt;br /&gt;
* Uyiosa Iyekekpolor — https://github.com/uyoyo0&lt;br /&gt;
* eyexjay — https://github.com/eyexjay&lt;br /&gt;
&lt;br /&gt;
=== Code and artifacts ===&lt;br /&gt;
* Main AutoDocs repository:&lt;br /&gt;
** https://github.com/CSC392-CSC492-Building-AI-ML-systems/educational-AI-agent&lt;br /&gt;
* Release tag capturing the Winter 2025 state:&lt;br /&gt;
** https://github.com/CSC392-CSC492-Building-AI-ML-systems/educational-AI-agent/releases/tag/winter-2025&lt;br /&gt;
* Public talk page referencing this pipeline (AI Tinkerers Toronto, March 2025):&lt;br /&gt;
** https://toronto.aitinkerers.org/talks/rsvp_14QYpww1FyE&lt;br /&gt;
&lt;br /&gt;
=== Notes ===&lt;br /&gt;
The current AutoDocs repository states that it was “modified and extended from the Winter 2025 team’s code base”.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== AutoDocs (consolidated / ongoing repository) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;This is a living repository spanning multiple student cohorts rather than a single group.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Purpose ===&lt;br /&gt;
AutoDocs processes asciinema terminal recordings and produces structured outputs such as:&lt;br /&gt;
* segmented command &#039;&#039;events&#039;&#039;,&lt;br /&gt;
* annotated explanations,&lt;br /&gt;
* derived artifacts (for example, Dockerfiles).&lt;br /&gt;
&lt;br /&gt;
=== People ===&lt;br /&gt;
* Julia Longtin (lead contact): https://github.com/julialongtin&lt;br /&gt;
* Model publisher referenced in the README:&lt;br /&gt;
** &#039;&#039;&#039;bria7801&#039;&#039;&#039; on Hugging Face:&lt;br /&gt;
*** https://huggingface.co/bria7801/model-0&lt;br /&gt;
*** https://huggingface.co/bria7801/model-1&lt;br /&gt;
*** https://huggingface.co/bria7801/model-3&lt;br /&gt;
&lt;br /&gt;
=== Repository ===&lt;br /&gt;
* https://github.com/CSC392-CSC492-Building-AI-ML-systems/educational-AI-agent&lt;br /&gt;
&lt;br /&gt;
=== Contents (high level) ===&lt;br /&gt;
* ``data/``, ``frontend/``, ``models/`` directories&lt;br /&gt;
* Multiple parser scripts (Parser 0 / 1 / 2)&lt;br /&gt;
* References to fine-tuned model checkpoints via Hugging Face links&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Autumn 2025 – DocStream consolidation (Educational AI Agent) ==&lt;br /&gt;
&lt;br /&gt;
This appears to be a later cohort or iteration that built on AutoDocs and re-framed the system as &#039;&#039;&#039;DocStream&#039;&#039;&#039; (same core idea: streamed asciinema logs → events → hierarchical annotations → documentation).  &lt;br /&gt;
Repository: https://github.com/CSC392-CSC492-Building-AI-ML-systems/Autumn2025EducationalAIAgent&lt;br /&gt;
&lt;br /&gt;
=== What they worked on ===&lt;br /&gt;
From the repository README, DocStream:&lt;br /&gt;
* converts raw, noisy terminal activity into structured, reproducible developer documentation,&lt;br /&gt;
* processes streamed asciinema logs,&lt;br /&gt;
* segments them into meaningful events,&lt;br /&gt;
* generates hierarchical annotations explaining terminal activity,&lt;br /&gt;
* includes an evaluation harness (based on an extended EleutherAI LM Evaluation Harness) with task and metric scaffolding under ``data/llm_Evaluation/``.&lt;br /&gt;
&lt;br /&gt;
=== Code and artifacts ===&lt;br /&gt;
* Main repository:&lt;br /&gt;
** https://github.com/CSC392-CSC492-Building-AI-ML-systems/Autumn2025EducationalAIAgent&lt;br /&gt;
* Repository structure pointers:&lt;br /&gt;
** ``data/`` — datasets and evaluation harness inputs&lt;br /&gt;
** ``models/model_0/`` — segmentation training and inference&lt;br /&gt;
** ``models/model_1/`` — annotation training and inference&lt;br /&gt;
** ``demo/`` — front-end visualization demo&lt;br /&gt;
** ``runpod/`` — deployment and runpod materials&lt;br /&gt;
* White paper included in the repository root:&lt;br /&gt;
** https://github.com/CSC392-CSC492-Building-AI-ML-systems/Autumn2025EducationalAIAgent/blob/main/WhitePaper.docx&lt;br /&gt;
* Previous iteration explicitly linked from the DocStream README:&lt;br /&gt;
** https://github.com/CSC392-CSC492-Building-AI-ML-systems/educational-AI-agent&lt;br /&gt;
&lt;br /&gt;
=== Models ===&lt;br /&gt;
* &#039;&#039;&#039;Model 0 — Event Segmentation&#039;&#039;&#039;&lt;br /&gt;
** Segments streamed terminal logs into XML-structured &#039;&#039;events&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Model 1 — Hierarchical Annotation&#039;&#039;&#039;&lt;br /&gt;
** Reads Model 0 event chunks and generates summaries with hierarchical depth (goal / subtask structure)&lt;br /&gt;
&lt;br /&gt;
=== Contributors ===&lt;br /&gt;
GitHub accounts appearing repeatedly in the commit history and likely core Autumn 2025 contributors:&lt;br /&gt;
* Ryan Pankratz — https://github.com/ryan-pankratz  &lt;br /&gt;
** (also appears as: https://github.com/RyanPankratz)&lt;br /&gt;
* Victor Shea — https://github.com/VictorShea&lt;br /&gt;
* Moe Reda — https://github.com/Moe-Reda&lt;br /&gt;
* Patea4 — https://github.com/Patea4&lt;/div&gt;</summary>
		<author><name>ArthurWolf</name></author>
	</entry>
	<entry>
		<id>https://wiki.faikvm.com/mediawiki/index.php?title=Student_Groups&amp;diff=59</id>
		<title>Student Groups</title>
		<link rel="alternate" type="text/html" href="https://wiki.faikvm.com/mediawiki/index.php?title=Student_Groups&amp;diff=59"/>
		<updated>2026-01-22T23:09:03Z</updated>

		<summary type="html">&lt;p&gt;ArthurWolf: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Student Groups =&lt;br /&gt;
&lt;br /&gt;
This page documents the University of Toronto Mississauga (UTM) student groups who contributed to the LibreCode / Annotator ecosystem between mid-2024 and late-2025, specifically around: converting asciinema terminal recordings into structured events, annotations, and derived documentation artifacts using LLMs.&lt;br /&gt;
&lt;br /&gt;
== Project context ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mentors&#039;&#039;&#039;&lt;br /&gt;
* Julia Longtin — https://github.com/julialongtin&lt;br /&gt;
* Arthur Wolf — https://github.com/arthurwolf&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mentorship program&#039;&#039;&#039;&lt;br /&gt;
* Human Feedback Foundation (Linux Foundation entity): https://humanfeedback.io/&lt;br /&gt;
* University of Toronto Mississauga: https://www.utm.utoronto.ca/&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Core LibreCode resources&#039;&#039;&#039;&lt;br /&gt;
* Annotator repository: https://github.com/arthurwolf/annotator&lt;br /&gt;
* LibreCode / FaikVM wiki: https://wiki.faikvm.com/mediawiki/index.php/Main_Page&lt;br /&gt;
* Public hosted annotator instance: https://linuxpmi.org/&lt;br /&gt;
* Prompting guidelines/advice: https://wiki.faikvm.com/mediawiki/index.php/Prompting-guidelines   &lt;br /&gt;
&lt;br /&gt;
Most student repositories are hosted under this GitHub organization:  &lt;br /&gt;
https://github.com/CSC392-CSC492-Building-AI-ML-systems&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Fall 2024 – Early AutoDocs prototype ==&lt;br /&gt;
&lt;br /&gt;
=== What they worked on ===&lt;br /&gt;
This group produced an early prototype of what later became &#039;&#039;AutoDocs&#039;&#039;: tooling to segment asciinema terminal recordings into meaningful chunks and generate higher-level annotations.&lt;br /&gt;
&lt;br /&gt;
This work served primarily as a proof of concept and a starting point for later cohorts.&lt;br /&gt;
&lt;br /&gt;
=== Contributors ===&lt;br /&gt;
&#039;&#039;(TODO: add names / GitHub links if identified)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Code and artifacts ===&lt;br /&gt;
* Archived Fall 2024 code base (referenced in later repos):&lt;br /&gt;
** Mentioned in the AutoDocs README as &#039;&#039;&#039;“Fall 2024 Team’s Code Base”&#039;&#039;&#039;&lt;br /&gt;
** Linked from the AutoDocs repository:&lt;br /&gt;
*** https://github.com/CSC392-CSC492-Building-AI-ML-systems/educational-AI-agent&lt;br /&gt;
&lt;br /&gt;
=== Notes ===&lt;br /&gt;
Later documentation notes that much of this code is outdated or non-functional, but it remains historically important.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Winter 2025 – AutoDocs expansion + documentation ==&lt;br /&gt;
&lt;br /&gt;
=== What they worked on ===&lt;br /&gt;
This cohort rebuilt and extended the AutoDocs pipeline into a more complete system and produced formal documentation of their work.&lt;br /&gt;
&lt;br /&gt;
The repository includes a tagged release explicitly described as a rewrite of the project by the Winter 2025 team.  &lt;br /&gt;
Release link: https://github.com/CSC392-CSC492-Building-AI-ML-systems/educational-AI-agent/releases/tag/winter-2025&lt;br /&gt;
&lt;br /&gt;
=== Contributors ===&lt;br /&gt;
&#039;&#039;&#039;Known from the Winter 2025 release note and repository contributors list&#039;&#039;&#039;&lt;br /&gt;
* Brian Zhang — https://github.com/Pyosimros&lt;br /&gt;
* Vraj Patel — https://github.com/Vraj-Patel1&lt;br /&gt;
* Dan Nguyen — https://github.com/nuhgooyin&lt;br /&gt;
* Adreano La Rosa — &#039;&#039;(listed in release note; GitHub handle not yet confirmed)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Additional contributors shown by GitHub&#039;&#039;&#039;&lt;br /&gt;
* Abdallah Enaya — https://github.com/abdullah-enaya&lt;br /&gt;
* Renee K — https://github.com/renee-k&lt;br /&gt;
* aml-8 — https://github.com/aml-8&lt;br /&gt;
* Christopher Flores — https://github.com/cfstar188&lt;br /&gt;
* Uyiosa Iyekekpolor — https://github.com/uyoyo0&lt;br /&gt;
* eyexjay — https://github.com/eyexjay&lt;br /&gt;
&lt;br /&gt;
=== Code and artifacts ===&lt;br /&gt;
* Main AutoDocs repository:&lt;br /&gt;
** https://github.com/CSC392-CSC492-Building-AI-ML-systems/educational-AI-agent&lt;br /&gt;
* Release tag capturing the Winter 2025 state:&lt;br /&gt;
** https://github.com/CSC392-CSC492-Building-AI-ML-systems/educational-AI-agent/releases/tag/winter-2025&lt;br /&gt;
* Public talk page referencing this pipeline (AI Tinkerers Toronto, March 2025):&lt;br /&gt;
** https://toronto.aitinkerers.org/talks/rsvp_14QYpww1FyE&lt;br /&gt;
&lt;br /&gt;
=== Notes ===&lt;br /&gt;
The current AutoDocs repository states that it was “modified and extended from the Winter 2025 team’s code base”.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== AutoDocs (consolidated / ongoing repository) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;This is a living repository spanning multiple student cohorts rather than a single group.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Purpose ===&lt;br /&gt;
AutoDocs processes asciinema terminal recordings and produces structured outputs such as:&lt;br /&gt;
* segmented command &#039;&#039;events&#039;&#039;,&lt;br /&gt;
* annotated explanations,&lt;br /&gt;
* derived artifacts (for example, Dockerfiles).&lt;br /&gt;
&lt;br /&gt;
=== People ===&lt;br /&gt;
* Julia Longtin (lead contact): https://github.com/julialongtin&lt;br /&gt;
* Model publisher referenced in the README:&lt;br /&gt;
** &#039;&#039;&#039;bria7801&#039;&#039;&#039; on Hugging Face:&lt;br /&gt;
*** https://huggingface.co/bria7801/model-0&lt;br /&gt;
*** https://huggingface.co/bria7801/model-1&lt;br /&gt;
*** https://huggingface.co/bria7801/model-3&lt;br /&gt;
&lt;br /&gt;
=== Repository ===&lt;br /&gt;
* https://github.com/CSC392-CSC492-Building-AI-ML-systems/educational-AI-agent&lt;br /&gt;
&lt;br /&gt;
=== Contents (high level) ===&lt;br /&gt;
* ``data/``, ``frontend/``, ``models/`` directories&lt;br /&gt;
* Multiple parser scripts (Parser 0 / 1 / 2)&lt;br /&gt;
* References to fine-tuned model checkpoints via Hugging Face links&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Autumn 2025 – DocStream consolidation (Educational AI Agent) ==&lt;br /&gt;
&lt;br /&gt;
This appears to be a later cohort or iteration that built on AutoDocs and re-framed the system as &#039;&#039;&#039;DocStream&#039;&#039;&#039; (same core idea: streamed asciinema logs → events → hierarchical annotations → documentation).  &lt;br /&gt;
Repository: https://github.com/CSC392-CSC492-Building-AI-ML-systems/Autumn2025EducationalAIAgent&lt;br /&gt;
&lt;br /&gt;
=== What they worked on ===&lt;br /&gt;
From the repository README, DocStream:&lt;br /&gt;
* converts raw, noisy terminal activity into structured, reproducible developer documentation,&lt;br /&gt;
* processes streamed asciinema logs,&lt;br /&gt;
* segments them into meaningful events,&lt;br /&gt;
* generates hierarchical annotations explaining terminal activity,&lt;br /&gt;
* includes an evaluation harness (based on an extended EleutherAI LM Evaluation Harness) with task and metric scaffolding under ``data/llm_Evaluation/``.&lt;br /&gt;
&lt;br /&gt;
=== Code and artifacts ===&lt;br /&gt;
* Main repository:&lt;br /&gt;
** https://github.com/CSC392-CSC492-Building-AI-ML-systems/Autumn2025EducationalAIAgent&lt;br /&gt;
* Repository structure pointers:&lt;br /&gt;
** ``data/`` — datasets and evaluation harness inputs&lt;br /&gt;
** ``models/model_0/`` — segmentation training and inference&lt;br /&gt;
** ``models/model_1/`` — annotation training and inference&lt;br /&gt;
** ``demo/`` — front-end visualization demo&lt;br /&gt;
** ``runpod/`` — deployment and runpod materials&lt;br /&gt;
* White paper included in the repository root:&lt;br /&gt;
** https://github.com/CSC392-CSC492-Building-AI-ML-systems/Autumn2025EducationalAIAgent/blob/main/WhitePaper.docx&lt;br /&gt;
* Previous iteration explicitly linked from the DocStream README:&lt;br /&gt;
** https://github.com/CSC392-CSC492-Building-AI-ML-systems/educational-AI-agent&lt;br /&gt;
&lt;br /&gt;
=== Models ===&lt;br /&gt;
* &#039;&#039;&#039;Model 0 — Event Segmentation&#039;&#039;&#039;&lt;br /&gt;
** Segments streamed terminal logs into XML-structured &#039;&#039;events&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Model 1 — Hierarchical Annotation&#039;&#039;&#039;&lt;br /&gt;
** Reads Model 0 event chunks and generates summaries with hierarchical depth (goal / subtask structure)&lt;br /&gt;
&lt;br /&gt;
=== Contributors ===&lt;br /&gt;
GitHub accounts appearing repeatedly in the commit history and likely core Autumn 2025 contributors:&lt;br /&gt;
* Ryan Pankratz — https://github.com/ryan-pankratz  &lt;br /&gt;
** (also appears as: https://github.com/RyanPankratz)&lt;br /&gt;
* Victor Shea — https://github.com/VictorShea&lt;br /&gt;
* Moe Reda — https://github.com/Moe-Reda&lt;br /&gt;
* Patea4 — https://github.com/Patea4&lt;/div&gt;</summary>
		<author><name>ArthurWolf</name></author>
	</entry>
	<entry>
		<id>https://wiki.faikvm.com/mediawiki/index.php?title=Prompting-guidelines&amp;diff=58</id>
		<title>Prompting-guidelines</title>
		<link rel="alternate" type="text/html" href="https://wiki.faikvm.com/mediawiki/index.php?title=Prompting-guidelines&amp;diff=58"/>
		<updated>2026-01-22T23:08:15Z</updated>

		<summary type="html">&lt;p&gt;ArthurWolf: Created page with &amp;quot;= Librecode Prompting Guidelines for Students =  Some prompting guidelines given to students as they start working on the Librecode project, or if they need to write prompts for any part of the project.  == Prompt Engineering Guides / Documentation ==  * https://platform.openai.com/docs/guides/prompt-engineering * https://help.openai.com/en/articles/6654000-best-practices-for-prompt-engineering-with-the-openai-api * https://platform.claude.com/docs/en/build-with-claude/p...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Librecode Prompting Guidelines for Students =&lt;br /&gt;
&lt;br /&gt;
Some prompting guidelines given to students as they start working on the Librecode project, or if they need to write prompts for any part of the project.&lt;br /&gt;
&lt;br /&gt;
== Prompt Engineering Guides / Documentation ==&lt;br /&gt;
&lt;br /&gt;
* https://platform.openai.com/docs/guides/prompt-engineering&lt;br /&gt;
* https://help.openai.com/en/articles/6654000-best-practices-for-prompt-engineering-with-the-openai-api&lt;br /&gt;
* https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/overview&lt;br /&gt;
* https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/claude-4-best-practices&lt;br /&gt;
* https://ai.google.dev/gemini-api/docs/prompting-strategies&lt;br /&gt;
* https://api-docs.deepseek.com/guides/thinking_mode&lt;br /&gt;
* https://api-docs.deepseek.com/guides/json_mode&lt;br /&gt;
* https://docs.mistral.ai/capabilities/completion/prompting_capabilities&lt;br /&gt;
* https://www.llama.com/docs/how-to-guides/prompting/&lt;br /&gt;
* https://cohere.com/llmu/prompt-engineering-basics&lt;br /&gt;
* https://docs.ai21.com/docs/prompt-engineering&lt;br /&gt;
* https://qwen.readthedocs.io/en/latest/getting_started/concepts.html&lt;br /&gt;
* https://bigmodel.cn/dev/howuse/prompt&lt;br /&gt;
* https://docs.aws.amazon.com/bedrock/latest/userguide/prompt-engineering-guidelines.html&lt;br /&gt;
* https://learn.microsoft.com/en-us/azure/ai-foundry/openai/concepts/prompt-engineering?view=foundry-classic&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;If you have to read just one, read the Anthropic one.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== The Big Important Pieces ==&lt;br /&gt;
&lt;br /&gt;
# Use XML-like tags to structure the document, including on multiple levels. You can use Markdown inside those tags&#039; contents, but avoid structuring using Markdown headers. Models tend to understand structure better using XML-like tags.&lt;br /&gt;
# Provide examples, both of good output and of bad output, clearly delimited by XML-like tags. Give &#039;&#039;multiple&#039;&#039; examples. Providing multiple examples is called the &amp;quot;few shots&amp;quot; / &amp;quot;multishot&amp;quot; technique, and can sometimes completely replace fine-tuning.&lt;br /&gt;
# Research what format/style was used to train the model you are trying to use or fine-tune; it often can give major insights and solve issues.&lt;br /&gt;
# Unless you have a good reason not to, it&#039;s generally a good idea to use a temperature of 0 (or the equivalent top-k / top-p / etc.).&lt;br /&gt;
# Keep your system prompt simple and short. The place to put instructions is the prompt itself. Putting too much in the system prompt is a common beginner mistake.&lt;br /&gt;
# Templating formats like Handlebars or Jinja make for nicer, readable prompt templates/files.&lt;br /&gt;
# Provide context: explain in the prompt what the prompt is &amp;quot;for&amp;quot;, what the project the prompt is being used for is all about, and any other useful context you can think of.&lt;br /&gt;
# Use an LLM to rewrite your prompts. In particular, give it these links, these rules, any other rules you can think of, and instructions to rewrite the prompt following these instructions, and make it clear that they are writing text that will be read by a machine (not by a human) so they can write compact text without any pleasantries. This generally results in much better prompts.&lt;br /&gt;
# Use coding agents to work on your prompt templates. Gemini is free.&lt;br /&gt;
# Beyond examples, describe the output: its length, format, style, etc.&lt;br /&gt;
# If using a thinking model, actually instruct it to think, and even give it examples of how to think; examples of what a useful chain-of-thought looks like for a specific input.&lt;br /&gt;
# It&#039;s stupid, but giving it a &amp;quot;persona&amp;quot; where you tell it it&#039;s a &amp;quot;world expert&amp;quot; at doing whatever you&#039;re asking it to do reliably increases performance, even to this day, by a noticeable amount. See studies. Threatening the model also increases performance, but I personally can never get around to doing it...&lt;br /&gt;
# Prefill answers: after the end of your prompt, write the beginning of the answer the prompt would answer. This can sometimes help with preventing some issues, but note this won&#039;t work for thinking models.&lt;/div&gt;</summary>
		<author><name>ArthurWolf</name></author>
	</entry>
	<entry>
		<id>https://wiki.faikvm.com/mediawiki/index.php?title=AnnotationStandard&amp;diff=57</id>
		<title>AnnotationStandard</title>
		<link rel="alternate" type="text/html" href="https://wiki.faikvm.com/mediawiki/index.php?title=AnnotationStandard&amp;diff=57"/>
		<updated>2026-01-22T19:35:08Z</updated>

		<summary type="html">&lt;p&gt;ArthurWolf: Migrating missing data from the older cryptpad.fr annotation standard.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;```mediawiki&lt;br /&gt;
= Librecode Annotation Standard =&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Document Version:&#039;&#039;&#039; 2.0  &lt;br /&gt;
&#039;&#039;&#039;Last Updated:&#039;&#039;&#039; 2025-10-01  &lt;br /&gt;
&#039;&#039;&#039;Target Audience:&#039;&#039;&#039; Session recorders, annotators, reviewers&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Table of Contents ==&lt;br /&gt;
# [[#Glossary|Glossary]]&lt;br /&gt;
# [[#Overview &amp;amp; Purpose|Overview &amp;amp; Purpose]]&lt;br /&gt;
# [[#The Annotation Process|The Annotation Process]]&lt;br /&gt;
# [[#Annotation Standard|Annotation Standard]]&lt;br /&gt;
# [[#Application Guidelines|Application Guidelines]]&lt;br /&gt;
# [[#Technical Specification|Technical Specification]]&lt;br /&gt;
# [[#Quick Reference|Quick Reference]]&lt;br /&gt;
# [[#Complete Worked Example|Complete Worked Example]]&lt;br /&gt;
# [[#Appendices|Appendices]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Glossary ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Session&#039;&#039;&#039;  &lt;br /&gt;
An asciinema recording of a terminal session, typically showing the deployment or configuration of software.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Annotated Session&#039;&#039;&#039;  &lt;br /&gt;
A session that has structured annotations added to it, conforming to this specification.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Recording&#039;&#039;&#039;  &lt;br /&gt;
The raw asciinema capture of terminal activity.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Annotation&#039;&#039;&#039;  &lt;br /&gt;
Structured metadata added to a recording that describes what is happening, why, and the outcome.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Timeline&#039;&#039;&#039;  &lt;br /&gt;
A hierarchical structure in the annotator tool where annotations are organized. Different goal levels exist on separate timelines.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Goal Hierarchy&#039;&#039;&#039;  &lt;br /&gt;
The nested structure of goals, subgoals, and sub-subgoals that describe the overall task and its component steps.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Annotation Tag&#039;&#039;&#039;  &lt;br /&gt;
A specific marker type (e.g., &amp;lt;code&amp;gt;goal&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;mistake&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;successResult&amp;lt;/code&amp;gt;) used to categorize parts of the session.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Person A (Recorder)&#039;&#039;&#039;  &lt;br /&gt;
The individual(s) who created the original terminal session recording.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Person B (Annotator)&#039;&#039;&#039;  &lt;br /&gt;
The individual who interviews Person A and adds structured annotations to the recording.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;.session File&#039;&#039;&#039;  &lt;br /&gt;
A zip file containing the annotated recording, audio transcriptions, and metadata conforming to this specification.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Overview &amp;amp; Purpose ==&lt;br /&gt;
&lt;br /&gt;
=== Purpose of this document ===&lt;br /&gt;
&lt;br /&gt;
This document exists to:&lt;br /&gt;
* Provide an annotation process.&lt;br /&gt;
* Provide an annotation standard.&lt;br /&gt;
* Collect guidance for people participating in annotation.&lt;br /&gt;
&lt;br /&gt;
An &#039;&#039;&#039;annotated session&#039;&#039;&#039; is defined as an asciinema recording, with annotations added to it, conforming to a version of this document.&lt;br /&gt;
&lt;br /&gt;
=== What are Annotated Sessions? ===&lt;br /&gt;
&lt;br /&gt;
An &#039;&#039;&#039;annotated session&#039;&#039;&#039; is an asciinema recording of terminal activity (typically software deployment) that has been enriched with structured annotations describing:&lt;br /&gt;
* What actions were performed&lt;br /&gt;
* Why those actions were taken&lt;br /&gt;
* Whether goals were achieved&lt;br /&gt;
* What mistakes occurred and their consequences&lt;br /&gt;
* What discoveries changed the approach&lt;br /&gt;
&lt;br /&gt;
=== Why Create Them? ===&lt;br /&gt;
&lt;br /&gt;
The Librecode project aims to train Large Language Models (LLMs) to understand and work with terminal recordings. Annotated sessions serve as training data, teaching models to:&lt;br /&gt;
* Recognize common deployment patterns&lt;br /&gt;
* Understand error recovery strategies&lt;br /&gt;
* Learn from human problem-solving approaches&lt;br /&gt;
* Eventually perform automatic annotation&lt;br /&gt;
&lt;br /&gt;
Once sufficient manual annotations exist, trained models can automatically annotate new sessions, enabling advanced tooling like automated documentation generation.&lt;br /&gt;
&lt;br /&gt;
=== Document Purpose ===&lt;br /&gt;
&lt;br /&gt;
This document provides:&lt;br /&gt;
# An annotation process for creating annotated sessions&lt;br /&gt;
# An annotation standard defining what to annotate and how&lt;br /&gt;
# Guidelines for annotators to ensure consistency and quality&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== The Annotation Process ==&lt;br /&gt;
&lt;br /&gt;
The process of creating an annotated session involves four distinct phases:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Phase 1: Recording → Phase 2: Interview → Phase 3: Annotation → Phase 4: Submission&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Phase 1: Recording ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Objective:&#039;&#039;&#039; Create a terminal recording of meaningful software deployment activity.  &lt;br /&gt;
&#039;&#039;&#039;Who:&#039;&#039;&#039; Person A (one or more individuals)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Steps:&#039;&#039;&#039;&lt;br /&gt;
# Set up the recording environment:&lt;br /&gt;
#* Use a Debian Stable VM (see Appendix D)&lt;br /&gt;
#* Upgrade to unstable if required packages are missing&lt;br /&gt;
# VMs may be reused from previous deployments, or may be new&lt;br /&gt;
# Start the &amp;lt;code&amp;gt;asciinema&amp;lt;/code&amp;gt; recording client&lt;br /&gt;
# Attempt to deploy a piece of GNU software&lt;br /&gt;
# Keep all input/output inside the terminal:&lt;br /&gt;
#* Use CLI web tools (&amp;lt;code&amp;gt;curl&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;wget&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;lynx&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;links&amp;lt;/code&amp;gt;, etc.)&lt;br /&gt;
# Stop recording when deployment completes&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Output:&#039;&#039;&#039; &amp;lt;code&amp;gt;.cast&amp;lt;/code&amp;gt; asciinema recording file&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Common Issues:&#039;&#039;&#039;&lt;br /&gt;
* Using GUI tools&lt;br /&gt;
* Stopping recording too early&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Phase 2: Interview ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Objective:&#039;&#039;&#039; Ensure the annotator fully understands what was done and why.  &lt;br /&gt;
&#039;&#039;&#039;Who:&#039;&#039;&#039; Person A and Person B&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Steps:&#039;&#039;&#039;&lt;br /&gt;
# Record audio of both sides separately&lt;br /&gt;
# Review the recording together (recommended)&lt;br /&gt;
# Explain what was done and why&lt;br /&gt;
# Record follow-up clarification conversations if needed&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Output:&#039;&#039;&#039;&lt;br /&gt;
* Audio recordings (both sides)&lt;br /&gt;
* Full understanding of actions and rationale&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Why Separate Audio Recordings?&#039;&#039;&#039;&lt;br /&gt;
* Better transcription quality&lt;br /&gt;
* Clear speaker attribution&lt;br /&gt;
* Higher-quality training data&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Recommended ways to review the recording together:&#039;&#039;&#039;&lt;br /&gt;
* &amp;lt;code&amp;gt;tmate&amp;lt;/code&amp;gt; + asciinema playback can work (during playback, holding &amp;lt;code&amp;gt;.&amp;lt;/code&amp;gt; fast-forwards)&lt;br /&gt;
* Screen share while watching the recording&lt;br /&gt;
* Screen share while using the annotator tool&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;If you break into a separate “experimental” session during the meeting:&#039;&#039;&#039;&lt;br /&gt;
* This is allowed and often useful.&lt;br /&gt;
* Record that new session with &amp;lt;code&amp;gt;asciinema&amp;lt;/code&amp;gt; as well, so it can be reviewed and understood by someone who was not present.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Phase 3: Annotation ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Objective:&#039;&#039;&#039; Add structured annotations using the annotator tool.  &lt;br /&gt;
&#039;&#039;&#039;Who:&#039;&#039;&#039; Person B&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Steps:&#039;&#039;&#039;&lt;br /&gt;
# Load the recording&lt;br /&gt;
# Create timelines for goal hierarchy levels&lt;br /&gt;
# Apply annotations per standard (see [[#Annotation Standard|Annotation Standard]])&lt;br /&gt;
# Review for completeness and consistency&lt;br /&gt;
# Note the spec version used for this annotation (this document version)&lt;br /&gt;
# If clarification is needed, contact Person A:&lt;br /&gt;
#* Record audio of both ends of the clarification conversation&lt;br /&gt;
#* Include the audio (and later transcription) in the &amp;lt;code&amp;gt;.session&amp;lt;/code&amp;gt; package&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Annotator tool:&#039;&#039;&#039;&lt;br /&gt;
* Use the annotator tool hosted at: &amp;lt;code&amp;gt;https://github.com/arthurwolf/annotator&amp;lt;/code&amp;gt;&lt;br /&gt;
* (If a specific branch is required for a cohort/release, use the branch specified by the project, e.g. &amp;lt;code&amp;gt;from_students&amp;lt;/code&amp;gt; when applicable.)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Output:&#039;&#039;&#039; Annotated recording&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Phase 4: Submission ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Objective:&#039;&#039;&#039; Package and submit the session.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Steps:&#039;&#039;&#039;&lt;br /&gt;
# Transcribe audio with Whisper (with timestamps)&lt;br /&gt;
# Create &amp;lt;code&amp;gt;.session&amp;lt;/code&amp;gt; archive&lt;br /&gt;
# Include required files (see [[#Technical Specification|Technical Specification]])&lt;br /&gt;
# Upload to repository&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Annotation Standard ==&lt;br /&gt;
&lt;br /&gt;
This section defines what to annotate and how.&lt;br /&gt;
&lt;br /&gt;
=== Goal hierarchy and timelines ===&lt;br /&gt;
&lt;br /&gt;
* Goals, subgoals, sub-subgoals (and deeper levels as needed) form a &#039;&#039;&#039;goal hierarchy&#039;&#039;&#039;.&lt;br /&gt;
* Ideally, every part of the session should belong to a goal.&lt;br /&gt;
* Subgoals should represent meaningful “chunks” of work contributing to a parent goal.&lt;br /&gt;
* Goals, subgoals, and sub-(sub…) goals should exist as &#039;&#039;&#039;separate timelines&#039;&#039;&#039; in the annotator tool:&lt;br /&gt;
** Think: one “Goal” timeline spanning the whole file,&lt;br /&gt;
** Subgoal timelines covering sections that represent large steps,&lt;br /&gt;
** Deeper timelines for finer-grained structure as needed.&lt;br /&gt;
&lt;br /&gt;
=== Success markers ===&lt;br /&gt;
&lt;br /&gt;
Use success markers to capture whether a goal (or subgoal) was achieved at the moment where the result is observable.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;successResult&amp;lt;/code&amp;gt; — the goal was achieved (success is visible in the recording output)&lt;br /&gt;
* &amp;lt;code&amp;gt;successFailure&amp;lt;/code&amp;gt; — the goal failed (failure is visible)&lt;br /&gt;
* &amp;lt;code&amp;gt;successUnknown&amp;lt;/code&amp;gt; — success cannot be determined from the recording (or cannot possibly be visible)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;When to apply success markers:&#039;&#039;&#039;&lt;br /&gt;
* Apply success markers only when the success/failure of a command corresponds to the attempted end of a goal.&lt;br /&gt;
* Example:&lt;br /&gt;
** If a goal is “get my program to compile”, then the output of &amp;lt;code&amp;gt;make&amp;lt;/code&amp;gt; (where compilation occurs) is the target moment.&lt;br /&gt;
* For activities where the result cannot be observed (e.g., some parts of OS installs), &amp;lt;code&amp;gt;successUnknown&amp;lt;/code&amp;gt; is acceptable.&lt;br /&gt;
&lt;br /&gt;
=== Tools and subtools (commands and interfaces) ===&lt;br /&gt;
&lt;br /&gt;
* Commands can be annotated as tools/subtools.&lt;br /&gt;
* Provide:&lt;br /&gt;
** An &#039;&#039;&#039;in-context&#039;&#039;&#039; description (considering the current goal and what has happened so far)&lt;br /&gt;
** Optionally, an &#039;&#039;&#039;out-of-context&#039;&#039;&#039; description (what the command generally does)&lt;br /&gt;
&lt;br /&gt;
This includes screen-based interactions when they are part of the workflow (if the annotator supports representing them).&lt;br /&gt;
&lt;br /&gt;
=== Mistakes ===&lt;br /&gt;
&lt;br /&gt;
Every mistake down to the typo should be tagged, including why it is a mistake and the repercussions.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;mistake&amp;lt;/code&amp;gt; — the incorrect action or decision&lt;br /&gt;
* &amp;lt;code&amp;gt;mistakeReason&amp;lt;/code&amp;gt; — why it was wrong&lt;br /&gt;
* &amp;lt;code&amp;gt;mistakeResult&amp;lt;/code&amp;gt; — what happened because of it (error message, time lost, wrong path taken, etc.)&lt;br /&gt;
&lt;br /&gt;
=== Secrets and sensitive data ===&lt;br /&gt;
&lt;br /&gt;
Use specific tags for secrets and secret-like flows:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;passwordPrompt&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;password&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;passwordAgain&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;secret&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Annotate secret handling carefully, and prefer describing the flow rather than reproducing secret material.&lt;br /&gt;
&lt;br /&gt;
=== Discoveries ===&lt;br /&gt;
&lt;br /&gt;
Discoveries are things learned during the session that change the plan/goals/approach.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;discovery&amp;lt;/code&amp;gt; (or project’s chosen “Discoveries” tag) — a new fact that changes what happens next&lt;br /&gt;
* Apply when the discovery causes a change in goals, subgoals, or strategy.&lt;br /&gt;
&lt;br /&gt;
=== Licensing and legally significant text ===&lt;br /&gt;
&lt;br /&gt;
If you reproduce a “legally significant” portion of a licensed work (see GNU guidance on “Legally Significant”), list the license in your annotation.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;license&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;copyright&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When in doubt, prefer summarizing instead of reproducing large chunks of licensed text.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Application Guidelines ==&lt;br /&gt;
&lt;br /&gt;
=== How to apply goal markers ===&lt;br /&gt;
&lt;br /&gt;
* When starting a goal, add a unique goal identifier (format guideline):&lt;br /&gt;
** &amp;lt;code&amp;gt;[Goal_ + Unique_identifier]&amp;lt;/code&amp;gt; followed by the goal description&lt;br /&gt;
* When a goal is completed:&lt;br /&gt;
** close out the goal and return to the parent goal level (change “level” back)&lt;br /&gt;
&lt;br /&gt;
=== How to apply mistakes ===&lt;br /&gt;
&lt;br /&gt;
Whenever there is a mistake:&lt;br /&gt;
* Apply &amp;lt;code&amp;gt;mistake&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;mistakeReason&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;mistakeResult&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== How to apply success markers ===&lt;br /&gt;
&lt;br /&gt;
* Apply &amp;lt;code&amp;gt;successResult&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;successFailure&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;successUnknown&amp;lt;/code&amp;gt; only when:&lt;br /&gt;
** The result of a goal is visible, OR&lt;br /&gt;
** The result cannot possibly be visible.&lt;br /&gt;
&lt;br /&gt;
=== General guidance ===&lt;br /&gt;
&lt;br /&gt;
* Annotate as you would prefer sessions to be annotated: be as in-depth as you would like.&lt;br /&gt;
* The goal of annotation is to describe precisely what is happening in the session:&lt;br /&gt;
** what is done,&lt;br /&gt;
** why it is done,&lt;br /&gt;
** and what outcome it leads to.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Technical Specification ==&lt;br /&gt;
&lt;br /&gt;
=== The .session archive ===&lt;br /&gt;
&lt;br /&gt;
A &amp;lt;code&amp;gt;.session&amp;lt;/code&amp;gt; file is a zip archive with a &amp;lt;code&amp;gt;.session&amp;lt;/code&amp;gt; extension containing (at minimum) the annotated recording and the supporting metadata and audio/transcripts.&lt;br /&gt;
&lt;br /&gt;
=== Required contents ===&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;.session&amp;lt;/code&amp;gt; archive must include:&lt;br /&gt;
* &amp;lt;code&amp;gt;session.yaml&amp;lt;/code&amp;gt; — session metadata (see below)&lt;br /&gt;
* &amp;lt;code&amp;gt;recording.asciinema&amp;lt;/code&amp;gt; — the asciinema recording (annotated)&lt;br /&gt;
* Audio recordings of the interview and any follow-up clarification conversations&lt;br /&gt;
* Transcriptions of those audio files (produced by Whisper), including timestamps&lt;br /&gt;
&lt;br /&gt;
=== session.yaml fields ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;session.yaml&amp;lt;/code&amp;gt; should contain at least:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt;: Version number for the format specification (this document) used when creating this &amp;lt;code&amp;gt;.session&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
Optional / planned fields (may be included if supported by the project tooling):&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;mission&amp;lt;/code&amp;gt; (FUTUREWORK): overarching goal being attempted&lt;br /&gt;
* &amp;lt;code&amp;gt;plan&amp;lt;/code&amp;gt; (FUTUREWORK): intended plan (does not need to match what happened)&lt;br /&gt;
* &amp;lt;code&amp;gt;tests&amp;lt;/code&amp;gt; (FUTUREWORK): an array of “unit test”-like checks indicating success/failure&lt;br /&gt;
** intended to be written in TinTin++&lt;br /&gt;
** loaded after an SSH session has been instantiated&lt;br /&gt;
** includes a time limit for considering the test to have gone wrong&lt;br /&gt;
** examples:&lt;br /&gt;
*** “X command was correctly installed to location Y”&lt;br /&gt;
*** “Running &amp;lt;code&amp;gt;command --version&amp;lt;/code&amp;gt; returns the right version 0.11”&lt;br /&gt;
* &amp;lt;code&amp;gt;system&amp;lt;/code&amp;gt; (optional): command/answer pairs that define the environment&lt;br /&gt;
** examples:&lt;br /&gt;
*** &amp;lt;code&amp;gt;cat /etc/issue.net&amp;lt;/code&amp;gt;: &amp;lt;code&amp;gt;Ubuntu 22.04 LTS\n&amp;lt;/code&amp;gt;&lt;br /&gt;
*** &amp;lt;code&amp;gt;ip address&amp;lt;/code&amp;gt;: &amp;lt;code&amp;gt;...&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Quick Reference ==&lt;br /&gt;
&lt;br /&gt;
=== Core concepts ===&lt;br /&gt;
* Use separate timelines for each goal level (goal / subgoal / sub-subgoal).&lt;br /&gt;
* Add success markers only at moments where a goal outcome is observable (or provably unobservable).&lt;br /&gt;
&lt;br /&gt;
=== Common tags (non-exhaustive) ===&lt;br /&gt;
* Goals: &amp;lt;code&amp;gt;goal&amp;lt;/code&amp;gt; (plus unique goal identifiers per project convention)&lt;br /&gt;
* Success: &amp;lt;code&amp;gt;successResult&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;successFailure&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;successUnknown&amp;lt;/code&amp;gt;&lt;br /&gt;
* Mistakes: &amp;lt;code&amp;gt;mistake&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;mistakeReason&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;mistakeResult&amp;lt;/code&amp;gt;&lt;br /&gt;
* Secrets: &amp;lt;code&amp;gt;passwordPrompt&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;password&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;passwordAgain&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;secret&amp;lt;/code&amp;gt;&lt;br /&gt;
* Discoveries: &amp;lt;code&amp;gt;discovery&amp;lt;/code&amp;gt; (or “Discoveries” tag used by the project)&lt;br /&gt;
* Licensing: &amp;lt;code&amp;gt;license&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;copyright&amp;lt;/code&amp;gt;&lt;br /&gt;
* Tools: tool/subtool annotations (in-context and optionally out-of-context)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Complete Worked Example ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Goal_001] Deploy GNU package &amp;quot;foo&amp;quot; on Debian Stable VM&lt;br /&gt;
  [Subgoal_001a] Install build dependencies&lt;br /&gt;
    tool: apt-get install ...&lt;br /&gt;
    successResult: dependencies installed&lt;br /&gt;
&lt;br /&gt;
  [Subgoal_001b] Configure build&lt;br /&gt;
    tool: ./configure --prefix=/usr/local&lt;br /&gt;
    mistake: used wrong configure flag&lt;br /&gt;
    mistakeReason: flag is not supported by this version&lt;br /&gt;
    mistakeResult: configure exits with error, must retry&lt;br /&gt;
    tool: ./configure --prefix=/usr/local&lt;br /&gt;
    successResult: configure completed&lt;br /&gt;
&lt;br /&gt;
  [Subgoal_001c] Build and verify&lt;br /&gt;
    tool: make&lt;br /&gt;
    successResult: compilation completed&lt;br /&gt;
    tool: make test&lt;br /&gt;
    successUnknown: tests run but output does not clearly confirm pass/fail (or tests are not available)&lt;br /&gt;
&lt;br /&gt;
  discovery: package requires newer libc than expected → adjust approach / select different target or environment&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(Replace identifiers, tags, and exact phrasing with the conventions supported by the current annotator tool version.)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Appendices ==&lt;br /&gt;
&lt;br /&gt;
=== Appendix A: Recording environment reminders ===&lt;br /&gt;
* Use a Debian Stable VM for recordings.&lt;br /&gt;
* If Debian Stable lacks required packages, upgrading the VM to unstable is allowed.&lt;br /&gt;
* VMs may be reused across sessions.&lt;br /&gt;
&lt;br /&gt;
=== Appendix B: Keeping everything inside the terminal ===&lt;br /&gt;
* All input/output should be attempted through the terminal session.&lt;br /&gt;
* For web interactions, prefer CLI tools such as:&lt;br /&gt;
** &amp;lt;code&amp;gt;lynx&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;links&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;curl&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;wget&amp;lt;/code&amp;gt;, etc.&lt;br /&gt;
&lt;br /&gt;
=== Appendix C: Interview and follow-ups ===&lt;br /&gt;
* Record both sides separately for quality.&lt;br /&gt;
* If any follow-up clarification occurs later:&lt;br /&gt;
** record both ends again,&lt;br /&gt;
** include audio and transcripts in the &amp;lt;code&amp;gt;.session&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Appendix D: Debian Stable VM details ===&lt;br /&gt;
(See project-specific VM setup instructions for the current cohort/repository; keep this appendix synchronized with those instructions.)&lt;br /&gt;
```&lt;/div&gt;</summary>
		<author><name>ArthurWolf</name></author>
	</entry>
	<entry>
		<id>https://wiki.faikvm.com/mediawiki/index.php?title=Main_Page&amp;diff=53</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.faikvm.com/mediawiki/index.php?title=Main_Page&amp;diff=53"/>
		<updated>2026-01-11T23:40:13Z</updated>

		<summary type="html">&lt;p&gt;ArthurWolf: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to the CopyLeft Artificial Intelligence wiki!&lt;br /&gt;
&lt;br /&gt;
Here, you will find documents, howtos, and notes about our efforts to create CopyLeft respecting Free Software Artificial Intelligence systems.&lt;br /&gt;
&lt;br /&gt;
== Projects ==&lt;br /&gt;
&lt;br /&gt;
=== AutoDoc ===&lt;br /&gt;
&lt;br /&gt;
The [[AutoDoc]] project aims at converting Asciinema terminal recordings into structured events, annotations, and derived documentation artifacts using LLMs.&lt;br /&gt;
&lt;br /&gt;
* [[AnnotationStandard]]: Standard for the annotation file format used to annotate `asciinema` sessions.&lt;br /&gt;
&lt;br /&gt;
== Locations ==&lt;br /&gt;
We have many hackers working in many locations. Here is where we describe our sites, so we can share infrastructure:&lt;br /&gt;
&lt;br /&gt;
* [[FAIKVM.COM]]&lt;br /&gt;
* [[LIBRECODE.EU]]&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
Like all projects, we have hardware dependencies. We try to document them, and their behaviors, so that our distributed team can reproduce one another&#039;s environments simply.&lt;br /&gt;
&lt;br /&gt;
Our infrastructure includes, but is not limited to the following devices:&lt;br /&gt;
* [[IGEL M350C]]&lt;br /&gt;
* [[ASRock H81m-HDS (v1.0)]]&lt;br /&gt;
* [[DLink DWR-978]]&lt;br /&gt;
&lt;br /&gt;
== FAIKVM ==&lt;br /&gt;
Our infrastructure stack is a combination of FAI, KVM, and a pile of shell scripts.&lt;br /&gt;
&lt;br /&gt;
This infrastructure includes, but is not limited to the following VM types:&lt;br /&gt;
* [[WikiServer]]&lt;br /&gt;
* [[KanServer]]&lt;br /&gt;
* [[FAIServer]]&lt;br /&gt;
* [[QEMUHost]]&lt;/div&gt;</summary>
		<author><name>ArthurWolf</name></author>
	</entry>
	<entry>
		<id>https://wiki.faikvm.com/mediawiki/index.php?title=AnnotationStandard&amp;diff=52</id>
		<title>AnnotationStandard</title>
		<link rel="alternate" type="text/html" href="https://wiki.faikvm.com/mediawiki/index.php?title=AnnotationStandard&amp;diff=52"/>
		<updated>2026-01-11T23:39:31Z</updated>

		<summary type="html">&lt;p&gt;ArthurWolf: Initial port from the gist at https://gist.githubusercontent.com/arthurwolf/c4521a8baa306c016efd50ee23ffe56e/raw/26081cbc230641b004554778eefb11eee2a2fcf3/annotation.md , conversion from Markdown to MediaWiki formats&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Librecode Annotation Standard =&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Document Version:&#039;&#039;&#039; 2.0  &lt;br /&gt;
&#039;&#039;&#039;Last Updated:&#039;&#039;&#039; 2025-10-01  &lt;br /&gt;
&#039;&#039;&#039;Target Audience:&#039;&#039;&#039; Session recorders, annotators, reviewers&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Table of Contents ==&lt;br /&gt;
# [[#Glossary|Glossary]]&lt;br /&gt;
# [[#Overview &amp;amp; Purpose|Overview &amp;amp; Purpose]]&lt;br /&gt;
# [[#The Annotation Process|The Annotation Process]]&lt;br /&gt;
# [[#Annotation Standard|Annotation Standard]]&lt;br /&gt;
# [[#Application Guidelines|Application Guidelines]]&lt;br /&gt;
# [[#Technical Specification|Technical Specification]]&lt;br /&gt;
# [[#Quick Reference|Quick Reference]]&lt;br /&gt;
# [[#Complete Worked Example|Complete Worked Example]]&lt;br /&gt;
# [[#Appendices|Appendices]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Glossary ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Session&#039;&#039;&#039;  &lt;br /&gt;
An asciinema recording of a terminal session, typically showing the deployment or configuration of software.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Annotated Session&#039;&#039;&#039;  &lt;br /&gt;
A session that has structured annotations added to it, conforming to this specification.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Recording&#039;&#039;&#039;  &lt;br /&gt;
The raw asciinema capture of terminal activity.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Annotation&#039;&#039;&#039;  &lt;br /&gt;
Structured metadata added to a recording that describes what is happening, why, and the outcome.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Timeline&#039;&#039;&#039;  &lt;br /&gt;
A hierarchical structure in the annotator tool where annotations are organized. Different goal levels exist on separate timelines.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Goal Hierarchy&#039;&#039;&#039;  &lt;br /&gt;
The nested structure of goals, subgoals, and sub-subgoals that describe the overall task and its component steps.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Annotation Tag&#039;&#039;&#039;  &lt;br /&gt;
A specific marker type (e.g., &amp;lt;code&amp;gt;goal&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;mistake&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;successResult&amp;lt;/code&amp;gt;) used to categorize parts of the session.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Person A (Recorder)&#039;&#039;&#039;  &lt;br /&gt;
The individual(s) who created the original terminal session recording.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Person B (Annotator)&#039;&#039;&#039;  &lt;br /&gt;
The individual who interviews Person A and adds structured annotations to the recording.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;.session File&#039;&#039;&#039;  &lt;br /&gt;
A zip file containing the annotated recording, audio transcriptions, and metadata conforming to this specification.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Overview &amp;amp; Purpose ==&lt;br /&gt;
&lt;br /&gt;
=== What are Annotated Sessions? ===&lt;br /&gt;
&lt;br /&gt;
An &#039;&#039;&#039;annotated session&#039;&#039;&#039; is an asciinema recording of terminal activity (typically software deployment) that has been enriched with structured annotations describing:&lt;br /&gt;
* What actions were performed&lt;br /&gt;
* Why those actions were taken&lt;br /&gt;
* Whether goals were achieved&lt;br /&gt;
* What mistakes occurred and their consequences&lt;br /&gt;
* What discoveries changed the approach&lt;br /&gt;
&lt;br /&gt;
=== Why Create Them? ===&lt;br /&gt;
&lt;br /&gt;
The Librecode project aims to train Large Language Models (LLMs) to understand and work with terminal recordings. Annotated sessions serve as training data, teaching models to:&lt;br /&gt;
* Recognize common deployment patterns&lt;br /&gt;
* Understand error recovery strategies&lt;br /&gt;
* Learn from human problem-solving approaches&lt;br /&gt;
* Eventually perform automatic annotation&lt;br /&gt;
&lt;br /&gt;
Once sufficient manual annotations exist, trained models can automatically annotate new sessions, enabling advanced tooling like automated documentation generation.&lt;br /&gt;
&lt;br /&gt;
=== Document Purpose ===&lt;br /&gt;
&lt;br /&gt;
This document provides:&lt;br /&gt;
# An annotation process for creating annotated sessions&lt;br /&gt;
# An annotation standard defining what to annotate and how&lt;br /&gt;
# Guidelines for annotators to ensure consistency and quality&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== The Annotation Process ==&lt;br /&gt;
&lt;br /&gt;
The process of creating an annotated session involves four distinct phases:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Phase 1: Recording → Phase 2: Interview → Phase 3: Annotation → Phase 4: Submission&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Phase 1: Recording ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Objective:&#039;&#039;&#039; Create a terminal recording of meaningful software deployment activity.  &lt;br /&gt;
&#039;&#039;&#039;Who:&#039;&#039;&#039; Person A (one or more individuals)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Steps:&#039;&#039;&#039;&lt;br /&gt;
# Set up the recording environment:&lt;br /&gt;
#* Use a Debian Stable VM (see Appendix D)&lt;br /&gt;
#* Upgrade to unstable if required packages are missing&lt;br /&gt;
# Start the &amp;lt;code&amp;gt;asciinema&amp;lt;/code&amp;gt; recording client&lt;br /&gt;
# Attempt to deploy a piece of GNU software&lt;br /&gt;
# Keep all input/output inside the terminal:&lt;br /&gt;
#* Use CLI web tools (&amp;lt;code&amp;gt;curl&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;wget&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;lynx&amp;lt;/code&amp;gt;, etc.)&lt;br /&gt;
# Stop recording when deployment completes&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Output:&#039;&#039;&#039; &amp;lt;code&amp;gt;.cast&amp;lt;/code&amp;gt; asciinema recording file&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Common Issues:&#039;&#039;&#039;&lt;br /&gt;
* Using GUI tools&lt;br /&gt;
* Stopping recording too early&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Phase 2: Interview ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Objective:&#039;&#039;&#039; Ensure the annotator fully understands what was done and why.  &lt;br /&gt;
&#039;&#039;&#039;Who:&#039;&#039;&#039; Person A and Person B&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Steps:&#039;&#039;&#039;&lt;br /&gt;
# Record audio of both sides separately&lt;br /&gt;
# Review the recording together&lt;br /&gt;
# Explain what was done and why&lt;br /&gt;
# Record follow-up clarification conversations if needed&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Output:&#039;&#039;&#039;&lt;br /&gt;
* Audio recordings&lt;br /&gt;
* Full understanding of actions and rationale&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Why Separate Audio Recordings?&#039;&#039;&#039;&lt;br /&gt;
* Better transcription quality&lt;br /&gt;
* Clear speaker attribution&lt;br /&gt;
* Higher-quality training data&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Phase 3: Annotation ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Objective:&#039;&#039;&#039; Add structured annotations using the annotator tool.  &lt;br /&gt;
&#039;&#039;&#039;Who:&#039;&#039;&#039; Person B&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Steps:&#039;&#039;&#039;&lt;br /&gt;
# Load the recording&lt;br /&gt;
# Create timelines for goal hierarchy levels&lt;br /&gt;
# Apply annotations per standard&lt;br /&gt;
# Review completeness&lt;br /&gt;
# Note spec version used&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Output:&#039;&#039;&#039; Annotated recording&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Phase 4: Submission ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Objective:&#039;&#039;&#039; Package and submit the session.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Steps:&#039;&#039;&#039;&lt;br /&gt;
# Transcribe audio with Whisper&lt;br /&gt;
# Create &amp;lt;code&amp;gt;.session&amp;lt;/code&amp;gt; archive&lt;br /&gt;
# Include:&lt;br /&gt;
#* &amp;lt;code&amp;gt;session.yaml&amp;lt;/code&amp;gt;&lt;br /&gt;
#* &amp;lt;code&amp;gt;recording.asciinema&amp;lt;/code&amp;gt;&lt;br /&gt;
#* Audio + transcriptions&lt;br /&gt;
# Upload to repository&lt;br /&gt;
&lt;br /&gt;
---&lt;/div&gt;</summary>
		<author><name>ArthurWolf</name></author>
	</entry>
	<entry>
		<id>https://wiki.faikvm.com/mediawiki/index.php?title=Main_Page&amp;diff=7</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.faikvm.com/mediawiki/index.php?title=Main_Page&amp;diff=7"/>
		<updated>2025-12-22T20:35:43Z</updated>

		<summary type="html">&lt;p&gt;ArthurWolf: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to the CopyLeft Artificial Intelligence wiki!&lt;br /&gt;
&lt;br /&gt;
Here, you will find documents, howtos, and notes about our efforts to create CopyLeft respecting Free Software Artificial Intelligence systems.&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
Like all projects, we have hardware dependencies. We try to document them, and their behaviors, so that our distributed team can reproduce one another&#039;s environments simply.&lt;br /&gt;
&lt;br /&gt;
Our infrastructure includes, but is not limited to the following devices:&lt;br /&gt;
 * [[IGEL M350C]]&lt;br /&gt;
 * [[ASRock H81m-HDS (v1.0)]]&lt;br /&gt;
&lt;br /&gt;
== FAIKVM ==&lt;br /&gt;
Our infrastructure stack is a combination of FAI, KVM, and a pile of shell scripts.&lt;br /&gt;
&lt;br /&gt;
This infrastructure includes, but is not limited to the following VM types:&lt;br /&gt;
 * [[WikiServer]]&lt;br /&gt;
 * [[FAIServer]]&lt;br /&gt;
 * [[QEMUHost]]&lt;br /&gt;
&lt;br /&gt;
== Projects ==&lt;br /&gt;
&lt;br /&gt;
=== Autodoc ===&lt;br /&gt;
&lt;br /&gt;
The Autodoc project aims at converting asciinema terminal recordings into structured events, annotations, and derived documentation artifacts using LLMs.&lt;br /&gt;
&lt;br /&gt;
List of student projects that worked on the Autodoc project: [[Student_Groups]]&lt;/div&gt;</summary>
		<author><name>ArthurWolf</name></author>
	</entry>
	<entry>
		<id>https://wiki.faikvm.com/mediawiki/index.php?title=Student_Groups&amp;diff=6</id>
		<title>Student Groups</title>
		<link rel="alternate" type="text/html" href="https://wiki.faikvm.com/mediawiki/index.php?title=Student_Groups&amp;diff=6"/>
		<updated>2025-12-22T20:33:29Z</updated>

		<summary type="html">&lt;p&gt;ArthurWolf: Initial page creation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Student Groups =&lt;br /&gt;
&lt;br /&gt;
This page documents the University of Toronto Mississauga (UTM) student groups who contributed to the LibreCode / Annotator ecosystem between mid-2024 and late-2025, specifically around: converting asciinema terminal recordings into structured events, annotations, and derived documentation artifacts using LLMs.&lt;br /&gt;
&lt;br /&gt;
== Project context ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mentors&#039;&#039;&#039;&lt;br /&gt;
* Julia Longtin — https://github.com/julialongtin&lt;br /&gt;
* Arthur Wolf — https://github.com/arthurwolf&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mentorship program&#039;&#039;&#039;&lt;br /&gt;
* Human Feedback Foundation (Linux Foundation entity): https://humanfeedback.io/&lt;br /&gt;
* University of Toronto Mississauga: https://www.utm.utoronto.ca/&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Core LibreCode resources&#039;&#039;&#039;&lt;br /&gt;
* Annotator repository: https://github.com/arthurwolf/annotator&lt;br /&gt;
* LibreCode / FaikVM wiki: https://wiki.faikvm.com/mediawiki/index.php/Main_Page&lt;br /&gt;
* Public hosted annotator instance: https://linuxpmi.org/&lt;br /&gt;
&lt;br /&gt;
Most student repositories are hosted under this GitHub organization:  &lt;br /&gt;
https://github.com/CSC392-CSC492-Building-AI-ML-systems&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Fall 2024 – Early AutoDocs prototype ==&lt;br /&gt;
&lt;br /&gt;
=== What they worked on ===&lt;br /&gt;
This group produced an early prototype of what later became &#039;&#039;AutoDocs&#039;&#039;: tooling to segment asciinema terminal recordings into meaningful chunks and generate higher-level annotations.&lt;br /&gt;
&lt;br /&gt;
This work served primarily as a proof of concept and a starting point for later cohorts.&lt;br /&gt;
&lt;br /&gt;
=== Contributors ===&lt;br /&gt;
&#039;&#039;(TODO: add names / GitHub links if identified)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Code and artifacts ===&lt;br /&gt;
* Archived Fall 2024 code base (referenced in later repos):&lt;br /&gt;
** Mentioned in the AutoDocs README as &#039;&#039;&#039;“Fall 2024 Team’s Code Base”&#039;&#039;&#039;&lt;br /&gt;
** Linked from the AutoDocs repository:&lt;br /&gt;
*** https://github.com/CSC392-CSC492-Building-AI-ML-systems/educational-AI-agent&lt;br /&gt;
&lt;br /&gt;
=== Notes ===&lt;br /&gt;
Later documentation notes that much of this code is outdated or non-functional, but it remains historically important.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Winter 2025 – AutoDocs expansion + documentation ==&lt;br /&gt;
&lt;br /&gt;
=== What they worked on ===&lt;br /&gt;
This cohort rebuilt and extended the AutoDocs pipeline into a more complete system and produced formal documentation of their work.&lt;br /&gt;
&lt;br /&gt;
The repository includes a tagged release explicitly described as a rewrite of the project by the Winter 2025 team.  &lt;br /&gt;
Release link: https://github.com/CSC392-CSC492-Building-AI-ML-systems/educational-AI-agent/releases/tag/winter-2025&lt;br /&gt;
&lt;br /&gt;
=== Contributors ===&lt;br /&gt;
&#039;&#039;&#039;Known from the Winter 2025 release note and repository contributors list&#039;&#039;&#039;&lt;br /&gt;
* Brian Zhang — https://github.com/Pyosimros&lt;br /&gt;
* Vraj Patel — https://github.com/Vraj-Patel1&lt;br /&gt;
* Dan Nguyen — https://github.com/nuhgooyin&lt;br /&gt;
* Adreano La Rosa — &#039;&#039;(listed in release note; GitHub handle not yet confirmed)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Additional contributors shown by GitHub&#039;&#039;&#039;&lt;br /&gt;
* Abdallah Enaya — https://github.com/abdullah-enaya&lt;br /&gt;
* Renee K — https://github.com/renee-k&lt;br /&gt;
* aml-8 — https://github.com/aml-8&lt;br /&gt;
* Christopher Flores — https://github.com/cfstar188&lt;br /&gt;
* Uyiosa Iyekekpolor — https://github.com/uyoyo0&lt;br /&gt;
* eyexjay — https://github.com/eyexjay&lt;br /&gt;
&lt;br /&gt;
=== Code and artifacts ===&lt;br /&gt;
* Main AutoDocs repository:&lt;br /&gt;
** https://github.com/CSC392-CSC492-Building-AI-ML-systems/educational-AI-agent&lt;br /&gt;
* Release tag capturing the Winter 2025 state:&lt;br /&gt;
** https://github.com/CSC392-CSC492-Building-AI-ML-systems/educational-AI-agent/releases/tag/winter-2025&lt;br /&gt;
* Public talk page referencing this pipeline (AI Tinkerers Toronto, March 2025):&lt;br /&gt;
** https://toronto.aitinkerers.org/talks/rsvp_14QYpww1FyE&lt;br /&gt;
&lt;br /&gt;
=== Notes ===&lt;br /&gt;
The current AutoDocs repository states that it was “modified and extended from the Winter 2025 team’s code base”.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== AutoDocs (consolidated / ongoing repository) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;This is a living repository spanning multiple student cohorts rather than a single group.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Purpose ===&lt;br /&gt;
AutoDocs processes asciinema terminal recordings and produces structured outputs such as:&lt;br /&gt;
* segmented command &#039;&#039;events&#039;&#039;,&lt;br /&gt;
* annotated explanations,&lt;br /&gt;
* derived artifacts (for example, Dockerfiles).&lt;br /&gt;
&lt;br /&gt;
=== People ===&lt;br /&gt;
* Julia Longtin (lead contact): https://github.com/julialongtin&lt;br /&gt;
* Model publisher referenced in the README:&lt;br /&gt;
** &#039;&#039;&#039;bria7801&#039;&#039;&#039; on Hugging Face:&lt;br /&gt;
*** https://huggingface.co/bria7801/model-0&lt;br /&gt;
*** https://huggingface.co/bria7801/model-1&lt;br /&gt;
*** https://huggingface.co/bria7801/model-3&lt;br /&gt;
&lt;br /&gt;
=== Repository ===&lt;br /&gt;
* https://github.com/CSC392-CSC492-Building-AI-ML-systems/educational-AI-agent&lt;br /&gt;
&lt;br /&gt;
=== Contents (high level) ===&lt;br /&gt;
* ``data/``, ``frontend/``, ``models/`` directories&lt;br /&gt;
* Multiple parser scripts (Parser 0 / 1 / 2)&lt;br /&gt;
* References to fine-tuned model checkpoints via Hugging Face links&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Autumn 2025 – DocStream consolidation (Educational AI Agent) ==&lt;br /&gt;
&lt;br /&gt;
This appears to be a later cohort or iteration that built on AutoDocs and re-framed the system as &#039;&#039;&#039;DocStream&#039;&#039;&#039; (same core idea: streamed asciinema logs → events → hierarchical annotations → documentation).  &lt;br /&gt;
Repository: https://github.com/CSC392-CSC492-Building-AI-ML-systems/Autumn2025EducationalAIAgent&lt;br /&gt;
&lt;br /&gt;
=== What they worked on ===&lt;br /&gt;
From the repository README, DocStream:&lt;br /&gt;
* converts raw, noisy terminal activity into structured, reproducible developer documentation,&lt;br /&gt;
* processes streamed asciinema logs,&lt;br /&gt;
* segments them into meaningful events,&lt;br /&gt;
* generates hierarchical annotations explaining terminal activity,&lt;br /&gt;
* includes an evaluation harness (based on an extended EleutherAI LM Evaluation Harness) with task and metric scaffolding under ``data/llm_Evaluation/``.&lt;br /&gt;
&lt;br /&gt;
=== Code and artifacts ===&lt;br /&gt;
* Main repository:&lt;br /&gt;
** https://github.com/CSC392-CSC492-Building-AI-ML-systems/Autumn2025EducationalAIAgent&lt;br /&gt;
* Repository structure pointers:&lt;br /&gt;
** ``data/`` — datasets and evaluation harness inputs&lt;br /&gt;
** ``models/model_0/`` — segmentation training and inference&lt;br /&gt;
** ``models/model_1/`` — annotation training and inference&lt;br /&gt;
** ``demo/`` — front-end visualization demo&lt;br /&gt;
** ``runpod/`` — deployment and runpod materials&lt;br /&gt;
* White paper included in the repository root:&lt;br /&gt;
** https://github.com/CSC392-CSC492-Building-AI-ML-systems/Autumn2025EducationalAIAgent/blob/main/WhitePaper.docx&lt;br /&gt;
* Previous iteration explicitly linked from the DocStream README:&lt;br /&gt;
** https://github.com/CSC392-CSC492-Building-AI-ML-systems/educational-AI-agent&lt;br /&gt;
&lt;br /&gt;
=== Models ===&lt;br /&gt;
* &#039;&#039;&#039;Model 0 — Event Segmentation&#039;&#039;&#039;&lt;br /&gt;
** Segments streamed terminal logs into XML-structured &#039;&#039;events&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Model 1 — Hierarchical Annotation&#039;&#039;&#039;&lt;br /&gt;
** Reads Model 0 event chunks and generates summaries with hierarchical depth (goal / subtask structure)&lt;br /&gt;
&lt;br /&gt;
=== Contributors ===&lt;br /&gt;
GitHub accounts appearing repeatedly in the commit history and likely core Autumn 2025 contributors:&lt;br /&gt;
* Ryan Pankratz — https://github.com/ryan-pankratz  &lt;br /&gt;
** (also appears as: https://github.com/RyanPankratz)&lt;br /&gt;
* Victor Shea — https://github.com/VictorShea&lt;br /&gt;
* Moe Reda — https://github.com/Moe-Reda&lt;br /&gt;
* Patea4 — https://github.com/Patea4&lt;/div&gt;</summary>
		<author><name>ArthurWolf</name></author>
	</entry>
	<entry>
		<id>https://wiki.faikvm.com/mediawiki/index.php?title=WikiServer&amp;diff=5</id>
		<title>WikiServer</title>
		<link rel="alternate" type="text/html" href="https://wiki.faikvm.com/mediawiki/index.php?title=WikiServer&amp;diff=5"/>
		<updated>2025-12-21T19:39:08Z</updated>

		<summary type="html">&lt;p&gt;ArthurWolf: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the VM type that hosts this wiki.&lt;br /&gt;
&lt;br /&gt;
Immediately after install, run the scripts in /root to configure the environment.&lt;br /&gt;
&lt;br /&gt;
To add a user:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /usr/share/mediawiki/&lt;br /&gt;
php maintenance/run.php createAndPromote &amp;lt;username&amp;gt; &amp;lt;password&amp;gt; --bureaucrat --sysop&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>ArthurWolf</name></author>
	</entry>
	<entry>
		<id>https://wiki.faikvm.com/mediawiki/index.php?title=WikiServer&amp;diff=4</id>
		<title>WikiServer</title>
		<link rel="alternate" type="text/html" href="https://wiki.faikvm.com/mediawiki/index.php?title=WikiServer&amp;diff=4"/>
		<updated>2025-12-21T19:38:21Z</updated>

		<summary type="html">&lt;p&gt;ArthurWolf: changed from markdown code block to mediawiki code block&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the VM type that hosts this wiki.&lt;br /&gt;
&lt;br /&gt;
Immediately after install, run the scripts in /root to configure the environment.&lt;br /&gt;
&lt;br /&gt;
To add a user:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
cd /usr/share/mediawiki/&lt;br /&gt;
php maintenance/run.php createAndPromote &amp;lt;username&amp;gt; &amp;lt;password&amp;gt; --bureaucrat --sysop&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;/div&gt;</summary>
		<author><name>ArthurWolf</name></author>
	</entry>
</feed>