From 02cfc06a8389c60f972fbfdb1374bc19c5112d95 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 18 Nov 2025 17:25:57 +0000 Subject: [PATCH 1/5] Initial plan From 2ab60ac4ec9d31ceac74e333d898899f554507ff Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 18 Nov 2025 17:31:58 +0000 Subject: [PATCH 2/5] Remove dead code and fix SQL injection vulnerabilities Co-authored-by: mpchenette <98562887+mpchenette@users.noreply.github.com> --- cobol/CUSTPROC.cbl | 112 ----------------- diag.mmd | 11 -- python/point.py | 0 python/sql.py | 12 +- python/tests/test_calculator.py | 0 rust/server.rs | 39 ------ scripts/find_json_string.py | 165 ------------------------ scripts/report_bofa_emu_versions.py | 188 ---------------------------- terraform/iac.tf | 0 9 files changed, 5 insertions(+), 522 deletions(-) delete mode 100644 cobol/CUSTPROC.cbl delete mode 100644 diag.mmd delete mode 100644 python/point.py delete mode 100644 python/tests/test_calculator.py delete mode 100644 rust/server.rs delete mode 100644 scripts/find_json_string.py delete mode 100644 scripts/report_bofa_emu_versions.py delete mode 100644 terraform/iac.tf diff --git a/cobol/CUSTPROC.cbl b/cobol/CUSTPROC.cbl deleted file mode 100644 index 9bc3c34..0000000 --- a/cobol/CUSTPROC.cbl +++ /dev/null @@ -1,112 +0,0 @@ - IDENTIFICATION DIVISION. - PROGRAM-ID. CUSTPROC. - AUTHOR. GITHUB-COPILOT. - DATE-WRITTEN. 2025-03-28. - - ENVIRONMENT DIVISION. - INPUT-OUTPUT SECTION. - FILE-CONTROL. - SELECT CUSTOMER-FILE - ASSIGN TO 'CUSTFILE' - ORGANIZATION IS SEQUENTIAL - ACCESS MODE IS SEQUENTIAL - FILE STATUS IS WS-FILE-STATUS. - SELECT REPORT-FILE - ASSIGN TO 'CUSTRPT' - ORGANIZATION IS SEQUENTIAL - ACCESS MODE IS SEQUENTIAL. - - DATA DIVISION. - FILE SECTION. - FD CUSTOMER-FILE - LABEL RECORDS ARE STANDARD. - 01 CUSTOMER-RECORD. - 05 CUST-ID PIC X(6). - 05 CUST-NAME PIC X(30). - 05 CUST-ADDRESS PIC X(50). - 05 CUST-PHONE PIC X(12). - 05 CUST-BALANCE PIC 9(7)V99. - - FD REPORT-FILE - LABEL RECORDS ARE STANDARD. - 01 REPORT-LINE PIC X(132). - - WORKING-STORAGE SECTION. - 01 WS-FILE-STATUS PIC X(2). - 01 WS-EOF-FLAG PIC X VALUE 'N'. - 88 END-OF-FILE VALUE 'Y'. - - 01 WS-COUNTERS. - 05 WS-READ-CTR PIC 9(6) VALUE ZERO. - 05 WS-VALID-CTR PIC 9(6) VALUE ZERO. - 05 WS-ERROR-CTR PIC 9(6) VALUE ZERO. - - 01 WS-HEADING-1. - 05 FILLER PIC X(20) VALUE 'Customer Report '. - 05 FILLER PIC X(20) VALUE 'Date: '. - 05 WS-CURR-DATE PIC X(10). - - 01 WS-DETAIL-LINE. - 05 WS-DL-CUSTID PIC X(6). - 05 FILLER PIC X(2) VALUE SPACES. - 05 WS-DL-NAME PIC X(30). - 05 FILLER PIC X(2) VALUE SPACES. - 05 WS-DL-BALANCE PIC $ZZZ,ZZ9.99. - - PROCEDURE DIVISION. - 0100-MAIN-PROCESS. - PERFORM 0200-INIT-ROUTINE - PERFORM 0300-PROCESS-RECORDS UNTIL END-OF-FILE - PERFORM 0900-CLOSE-ROUTINE - STOP RUN. - - 0200-INIT-ROUTINE. - OPEN INPUT CUSTOMER-FILE - OUTPUT REPORT-FILE - IF WS-FILE-STATUS NOT = '00' - DISPLAY 'Error opening files. Status: ' WS-FILE-STATUS - MOVE 'Y' TO WS-EOF-FLAG - END-IF - PERFORM 0250-WRITE-HEADERS. - - 0250-WRITE-HEADERS. - MOVE FUNCTION CURRENT-DATE(1:10) TO WS-CURR-DATE - WRITE REPORT-LINE FROM WS-HEADING-1 - WRITE REPORT-LINE FROM SPACES. - - 0300-PROCESS-RECORDS. - READ CUSTOMER-FILE - AT END - MOVE 'Y' TO WS-EOF-FLAG - NOT AT END - ADD 1 TO WS-READ-CTR - PERFORM 0400-VALIDATE-RECORD - END-READ. - - 0400-VALIDATE-RECORD. - IF CUST-BALANCE > 0 - PERFORM 0500-FORMAT-DETAIL - ADD 1 TO WS-VALID-CTR - ELSE - ADD 1 TO WS-ERROR-CTR - END-IF. - - 0500-FORMAT-DETAIL. - MOVE CUST-ID TO WS-DL-CUSTID - MOVE CUST-NAME TO WS-DL-NAME - MOVE CUST-BALANCE TO WS-DL-BALANCE - WRITE REPORT-LINE FROM WS-DETAIL-LINE. - - 0900-CLOSE-ROUTINE. - WRITE REPORT-LINE FROM SPACES - MOVE 'Total Records Read: ' TO REPORT-LINE - MOVE WS-READ-CTR TO REPORT-LINE(25:6) - WRITE REPORT-LINE - MOVE 'Valid Records: ' TO REPORT-LINE - MOVE WS-VALID-CTR TO REPORT-LINE(25:6) - WRITE REPORT-LINE - MOVE 'Error Records: ' TO REPORT-LINE - MOVE WS-ERROR-CTR TO REPORT-LINE(25:6) - WRITE REPORT-LINE - CLOSE CUSTOMER-FILE - REPORT-FILE. \ No newline at end of file diff --git a/diag.mmd b/diag.mmd deleted file mode 100644 index 3eb7a68..0000000 --- a/diag.mmd +++ /dev/null @@ -1,11 +0,0 @@ -flowchart TD - A[0100-MAIN-PROCESS] --> B[0200-INIT-ROUTINE] - B --> C[0250-WRITE-HEADERS] - C --> D[0300-PROCESS-RECORDS] - D -->|Read Record| E{END-OF-FILE?} - E -- No --> F[0400-VALIDATE-RECORD] - F -->|CUST-BALANCE > 0| G[0500-FORMAT-DETAIL] - G --> D - F -->|Else| D - E -- Yes --> H[0900-CLOSE-ROUTINE] - H --> I[STOP RUN] \ No newline at end of file diff --git a/python/point.py b/python/point.py deleted file mode 100644 index e69de29..0000000 diff --git a/python/sql.py b/python/sql.py index bc2121e..0f57b63 100644 --- a/python/sql.py +++ b/python/sql.py @@ -3,22 +3,20 @@ def search_user(username): conn = mysql.connector.connect(user='root', password='password', host='localhost', database='users') cursor = conn.cursor() - query = "SELECT * FROM users WHERE username = '" + username + "'" + query = "SELECT * FROM users WHERE username = %s" - # Execute the query and process the results - cursor.execute(query) + cursor.execute(query, (username,)) result = cursor.fetchall() cursor.close() conn.close() return result def add_user(username, password): - conn = mysql.connector.connect + conn = mysql.connector.connect(user='root', password='password', host='localhost', database='users') cursor = conn.cursor() - query = "INSERT INTO users (username, password) VALUES ('" + username + "', '" + password + "')" + query = "INSERT INTO users (username, password) VALUES (%s, %s)" - # Execute the query - cursor.execute(query) + cursor.execute(query, (username, password)) conn.commit() cursor.close() conn.close() diff --git a/python/tests/test_calculator.py b/python/tests/test_calculator.py deleted file mode 100644 index e69de29..0000000 diff --git a/rust/server.rs b/rust/server.rs deleted file mode 100644 index ed273a5..0000000 --- a/rust/server.rs +++ /dev/null @@ -1,39 +0,0 @@ -// server.rs - -mod tcp; -// Removed the thread module import as it's no longer needed - -fn main() { - println!("LOG (MAIN): Starting server"); - - let address: &str = "127.0.0.1:8000"; - - let tcp_listener: std::net::TcpListener = match std::net::TcpListener::bind(address) { - Ok(tcp_listener) => tcp_listener, - Err(e) => panic!("ERROR (MAIN): Unable to bind to {}. Error: {}", address, e), - }; - - match tcp_listener.local_addr() { - Ok(local_addr) => println!("LOG (MAIN): Server is listening on {}", local_addr), - Err(e) => println!("WARNING (MAIN): Failed to log the local address: {}", e), - } - - for tcp_stream in tcp_listener.incoming() { - match tcp_stream { - Ok(tcp_stream) => { - match tcp_stream.local_addr() { - Ok(local_addr) => println!("\nLOG (MAIN): New TcpStream Received ({})", local_addr), - Err(e) => println!("WARNING (MAIN): Failed to log the local address: {}", e), - } - - // Spawn a new thread for each connection instead of using a thread pool - std::thread::spawn(move || { - tcp::handle_tcp_stream(tcp_stream); - }); - } - Err(e) => { - println!("ERROR (MAIN): TcpStream Error: {}", e); - } - } - } -} \ No newline at end of file diff --git a/scripts/find_json_string.py b/scripts/find_json_string.py deleted file mode 100644 index bc71e27..0000000 --- a/scripts/find_json_string.py +++ /dev/null @@ -1,165 +0,0 @@ -#!/usr/bin/env python3 -""" -find_json_string.py - -Search a JSON file for occurrences of a string (or regex) and output the -1-based line numbers where matches occur. Works on the raw file text so it -doesn't require valid JSON and preserves line numbers. - -Usage: - python3 scripts/find_json_string.py path/to/file.json "needle" - -Options: - -i, --ignore-case Case-insensitive search - -r, --regex Treat the pattern as a regular expression - -w, --word Whole-word match (implies regex with word boundaries) - -N, --numbers-only Print only numbers, one per line (default) - -l, --list Print "line: content" for each matching line - -Examples: - python3 scripts/find_json_string.py data.json "user_id" - python3 scripts/find_json_string.py data.json "error .* timeout" -r -i -l - cat data.json | python3 scripts/find_json_string.py - "foo" -w -""" - -from __future__ import annotations - -import argparse -import re -import sys -from typing import Iterable, List - - -def iter_lines(path: str) -> Iterable[tuple[int, str]]: - if path == "-": - for i, line in enumerate(sys.stdin, start=1): - yield i, line.rstrip("\n") - return - try: - with open(path, "r", encoding="utf-8", errors="replace") as f: - for i, line in enumerate(f, start=1): - yield i, line.rstrip("\n") - except FileNotFoundError: - print(f"error: file not found: {path}", file=sys.stderr) - sys.exit(2) - except OSError as e: - print(f"error: cannot read {path}: {e}", file=sys.stderr) - sys.exit(2) - - -def find_matches( - lines: Iterable[tuple[int, str]], - pattern: str, - ignore_case: bool = False, - regex: bool = False, - whole_word: bool = False, -) -> List[int]: - flags = re.IGNORECASE if ignore_case else 0 - if whole_word: - regex = True - pattern = rf"\b{re.escape(pattern)}\b" - - compiled = None - if regex: - try: - compiled = re.compile(pattern, flags) - except re.error as e: - print(f"error: invalid regex: {e}", file=sys.stderr) - sys.exit(2) - - hits: List[int] = [] - if compiled is not None: - for ln, text in lines: - if compiled.search(text) is not None: - hits.append(ln) - else: - if ignore_case: - needle = pattern.lower() - for ln, text in lines: - if needle in text.lower(): - hits.append(ln) - else: - for ln, text in lines: - if pattern in text: - hits.append(ln) - - # De-duplicate while preserving order - seen = set() - unique_hits: List[int] = [] - for ln in hits: - if ln not in seen: - seen.add(ln) - unique_hits.append(ln) - return unique_hits - - -def main(argv: list[str] | None = None) -> int: - p = argparse.ArgumentParser( - description="Find lines in a JSON file containing a string or regex.", - ) - p.add_argument( - "path", - help="Path to JSON file, or '-' for stdin", - ) - p.add_argument( - "pattern", - help="Search string (or regex with -r)", - ) - p.add_argument( - "-i", - "--ignore-case", - action="store_true", - help="Case-insensitive search", - ) - p.add_argument( - "-r", - "--regex", - action="store_true", - help="Treat pattern as a regular expression", - ) - p.add_argument( - "-w", - "--word", - action="store_true", - help="Whole-word match (wraps pattern with word boundaries)", - ) - output = p.add_mutually_exclusive_group() - output.add_argument( - "-N", - "--numbers-only", - action="store_true", - help="Print only line numbers (default)", - ) - output.add_argument( - "-l", - "--list", - action="store_true", - help="Print 'line: content' for each matching line", - ) - - args = p.parse_args(argv) - - hits = find_matches( - iter_lines(args.path), - args.pattern, - ignore_case=args.ignore_case, - regex=args.regex, - whole_word=args.word, - ) - - if args.list: - # Re-iterate lines for printing content efficiently - line_set = set(hits) - for ln, text in iter_lines(args.path): - if ln in line_set: - print(f"{ln}: {text}") - else: - for ln in hits: - print(ln) - - return 0 - - -if __name__ == "__main__": - raise SystemExit(main()) - diff --git a/scripts/report_bofa_emu_versions.py b/scripts/report_bofa_emu_versions.py deleted file mode 100644 index 1e494da..0000000 --- a/scripts/report_bofa_emu_versions.py +++ /dev/null @@ -1,188 +0,0 @@ -#!/usr/bin/env python3 -import argparse -import csv -import os -import re -import sys -from collections import Counter, defaultdict -from pathlib import Path - - -def parse_surface(surface: str): - """ - Parse a Last Surface Used value like: - - "vscode/1.99.3/copilot-chat/0.26.7" - - "JetBrains-IC/251.26927.53/" - - "VisualStudio/17.8.21/copilot-vs/1.206.0.0" - - Returns (ide_name, ide_version, ext_name, ext_version) where ext_* can be None. - Whitespace is stripped; empty or 'None' values return (None, None, None, None). - """ - if surface is None: - return None, None, None, None - s = str(surface).strip() - if not s or s.lower() == "none": - return None, None, None, None - - # Split by '/', keep empty tokens to allow trailing slash patterns - parts = s.split('/') - parts = [p.strip() for p in parts] - parts = [p for p in parts if p != ''] # drop empty tokens from trailing '/' - - if len(parts) < 2: - return None, None, None, None - - ide_name, ide_version = parts[0], parts[1] - ext_name = ext_version = None - if len(parts) >= 4: - ext_name, ext_version = parts[2], parts[3] - - return ide_name, ide_version, ext_name, ext_version - - -from typing import Optional - - -def is_copilot_extension(name: Optional[str]) -> bool: - if not name: - return False - return name.lower().startswith("copilot") - - -def find_default_csv() -> Optional[Path]: - # Look for a bofa-emu CSV in ./scripts by default - cand_dir = Path(__file__).resolve().parent - matches = sorted(cand_dir.glob("bofa-emu-seat-activity-*.csv")) - if matches: - # Choose the lexicographically last; filename usually contains a timestamp - return matches[-1] - return None - - -def main(): - parser = argparse.ArgumentParser(description="Report counts of IDE versions and Copilot extension versions from bofa-emu CSV.") - parser.add_argument("csv_path", nargs="?", help="Path to CSV (defaults to scripts/bofa-emu-seat-activity-*.csv)") - parser.add_argument("--by-extension-name", action="store_true", help="Also break down Copilot counts by extension name (e.g., copilot, copilot-chat, copilot-intellij).") - parser.add_argument("--write-csv", action="store_true", help="Write results to CSV files alongside the input or to --out-dir.") - parser.add_argument("--out-dir", help="Directory to write CSV files. Defaults to the input CSV's directory.") - parser.add_argument("--prefix", help="Output filename prefix. Defaults to the input CSV filename stem.") - args = parser.parse_args() - - csv_path = args.csv_path - if not csv_path: - default = find_default_csv() - if not default: - print("No CSV provided and no default bofa-emu CSV found in scripts/", file=sys.stderr) - sys.exit(1) - csv_path = str(default) - - csv_file = Path(csv_path) - if not csv_file.exists(): - print(f"CSV not found: {csv_file}", file=sys.stderr) - sys.exit(1) - - ide_counts = Counter() - copilot_version_counts = Counter() - copilot_name_version_counts = Counter() # optional detailed breakdown - malformed_surfaces = 0 - empty_surfaces = 0 - - with csv_file.open(newline='') as f: - reader = csv.DictReader(f) - # try to detect the column name case-insensitively - header_map = {h.lower(): h for h in reader.fieldnames or []} - surface_col = None - for key in ("last surface used", "last_surface_used", "surface", "lastsurfaceused"): - if key in header_map: - surface_col = header_map[key] - break - if surface_col is None: - print("Could not find 'Last Surface Used' column in CSV headers.", file=sys.stderr) - sys.exit(1) - - for row in reader: - raw_surface = row.get(surface_col) - ide_name, ide_ver, ext_name, ext_ver = parse_surface(raw_surface) - if ide_name is None or ide_ver is None: - if raw_surface and raw_surface.strip().lower() != "none": - malformed_surfaces += 1 - else: - empty_surfaces += 1 - continue - - # Normalize IDE name to lower for grouping consistency - norm_ide_name = ide_name.lower() - ide_key = f"{norm_ide_name}/{ide_ver}" - ide_counts[ide_key] += 1 - - if is_copilot_extension(ext_name) and ext_ver: - copilot_version_counts[ext_ver] += 1 - name_ver_key = f"{ext_name.lower()}/{ext_ver}" - copilot_name_version_counts[name_ver_key] += 1 - - def print_counter(title: str, counter: Counter): - print(title) - for key, count in counter.most_common(): - print(f" {key}: {count}") - if not counter: - print(" (none)") - print() - - print(f"Source: {csv_file}") - print() - print_counter("IDE Versions (name/version):", ide_counts) - print_counter("Copilot Extension Versions (by version):", copilot_version_counts) - if args.by_extension_name: - print_counter("Copilot Extension Versions (by extension name/version):", copilot_name_version_counts) - - # Optionally write results to CSV files - if args.write_csv: - out_dir = Path(args.out_dir) if args.out_dir else csv_file.parent - out_dir.mkdir(parents=True, exist_ok=True) - prefix = args.prefix if args.prefix else csv_file.stem - - ide_out = out_dir / f"{prefix}_ide_versions.csv" - copilot_out = out_dir / f"{prefix}_copilot_versions.csv" - copilot_byname_out = out_dir / f"{prefix}_copilot_extname_versions.csv" - - # Write IDE versions as columns: ide_name, ide_version, count - with ide_out.open('w', newline='') as f: - w = csv.writer(f) - w.writerow(["ide_name", "ide_version", "count"]) - for key, count in ide_counts.most_common(): - ide_name, ide_version = key.split('/', 1) if '/' in key else (key, "") - w.writerow([ide_name, ide_version, count]) - - # Write Copilot versions as columns: extension_version, count - with copilot_out.open('w', newline='') as f: - w = csv.writer(f) - w.writerow(["extension_version", "count"]) - for ver, count in copilot_version_counts.most_common(): - w.writerow([ver, count]) - - # Optional: by extension name and version - if args.by_extension_name: - with copilot_byname_out.open('w', newline='') as f: - w = csv.writer(f) - w.writerow(["extension_name", "extension_version", "count"]) - for key, count in copilot_name_version_counts.most_common(): - ext_name, ext_version = key.split('/', 1) if '/' in key else (key, "") - w.writerow([ext_name, ext_version, count]) - - print("Written CSVs:") - print(f" {ide_out}") - print(f" {copilot_out}") - if args.by_extension_name: - print(f" {copilot_byname_out}") - - # Small diagnostic footer - if malformed_surfaces or empty_surfaces: - print("Notes:") - if empty_surfaces: - print(f" Rows with empty/None surface: {empty_surfaces}") - if malformed_surfaces: - print(f" Rows with unparseable surface: {malformed_surfaces}") - - -if __name__ == "__main__": - main() diff --git a/terraform/iac.tf b/terraform/iac.tf deleted file mode 100644 index e69de29..0000000 From 463f7b1d3b7ea28749a267ef38ce25fedb1e7093 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 18 Nov 2025 17:35:20 +0000 Subject: [PATCH 3/5] Remove unused imports and stub documentation files Co-authored-by: mpchenette <98562887+mpchenette@users.noreply.github.com> --- DotnetApp/Program.cs | 4 +--- docs/ADOPTION.md | 4 ---- docs/COMPARISON.md | 3 --- docs/SDD.md | 12 ------------ 4 files changed, 1 insertion(+), 22 deletions(-) delete mode 100644 docs/ADOPTION.md delete mode 100644 docs/COMPARISON.md delete mode 100644 docs/SDD.md diff --git a/DotnetApp/Program.cs b/DotnetApp/Program.cs index 586449a..055fa8f 100644 --- a/DotnetApp/Program.cs +++ b/DotnetApp/Program.cs @@ -1,6 +1,4 @@ -using System.IO; -using System.Linq; -using Microsoft.Extensions.FileProviders; +using System.Linq; using DotnetApp.Services; using DotnetApp.Models; diff --git a/docs/ADOPTION.md b/docs/ADOPTION.md deleted file mode 100644 index 8664321..0000000 --- a/docs/ADOPTION.md +++ /dev/null @@ -1,4 +0,0 @@ -# Driving Copilot Adoption - -## Options -- Champions Program \ No newline at end of file diff --git a/docs/COMPARISON.md b/docs/COMPARISON.md deleted file mode 100644 index 363bd9c..0000000 --- a/docs/COMPARISON.md +++ /dev/null @@ -1,3 +0,0 @@ -# Advantages of Copilot - -## \ No newline at end of file diff --git a/docs/SDD.md b/docs/SDD.md deleted file mode 100644 index a1a2f02..0000000 --- a/docs/SDD.md +++ /dev/null @@ -1,12 +0,0 @@ -# Spec-Driven Development (SDD) -- https://github.com/github/spec-kit - -## Steps -- /speckit.constitution - - Define your project's governing principles and development guidelines -- /speckit.specify - - Describe what you want to build -- /speckit.plan - - Provide your tech stack and architecture choices -- /speckit.tasks -- /speckit.implement \ No newline at end of file From e1acb8fc68ea86afdfecbc011f3b09594a285bc4 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 18 Nov 2025 17:37:59 +0000 Subject: [PATCH 4/5] Remove unreferenced image and update README references Co-authored-by: mpchenette <98562887+mpchenette@users.noreply.github.com> --- README.md | 6 +++--- cloud_infra.png | Bin 85102 -> 0 bytes 2 files changed, 3 insertions(+), 3 deletions(-) delete mode 100644 cloud_infra.png diff --git a/README.md b/README.md index 9099dc2..536d9e9 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ World's most intelligent autocomplete! Copilot understands what your intent is via context, like file name, comment contents, surrounding code and other open files in your workspace. -1. `point.py` +1. `calculator.py` Copilot code completions even promotes best practices while you code as comments are one of the primary ways of prompting it! @@ -24,7 +24,7 @@ You can also interact with Copilot code completions (+ more) inside a file in ot ### Next Edit Suggestions -1. `point3D.py` +1. `calculator.py` ## [Copilot Chat](https://code.visualstudio.com/docs/copilot/chat/copilot-chat) No need to context switch! Everything I need, in my IDE. @@ -65,7 +65,7 @@ Best Practice: Only add the minimum context necessary to answer the question you 1. Do you see any security vulnerabilities in this code (`sql.py`)? 1. I'm looking to reduce tech debt across my codebase. Is there anything in my .NET app (`DotnetApp`) that I should consider improving or fixing? #### Understand -1. Can you explain what this file is doing (`server.rs`)? +1. Can you explain what this file is doing (`sql.py`)? #### Generate - Test data - Documentation diff --git a/cloud_infra.png b/cloud_infra.png deleted file mode 100644 index ab52c6e2e9e8b2d8a296c0e1cd3f182fc269c2fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 85102 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 z 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 From 82c4f4882a929c8a6e3562424a3a320b617f252b Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 18 Nov 2025 17:40:12 +0000 Subject: [PATCH 5/5] Remove unused language instructions and fix broken reference Co-authored-by: mpchenette <98562887+mpchenette@users.noreply.github.com> --- .github/copilot-instructions.md | 4 +--- .github/instructions/c.instructions.md | 4 ---- .github/instructions/rust.instructions.md | 5 ----- 3 files changed, 1 insertion(+), 12 deletions(-) delete mode 100644 .github/instructions/c.instructions.md delete mode 100644 .github/instructions/rust.instructions.md diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md index 0847db8..d25069f 100644 --- a/.github/copilot-instructions.md +++ b/.github/copilot-instructions.md @@ -5,6 +5,4 @@ Preserve Existing Code: The current codebase is the source of truth and must be Minimal Necessary Changes: When adding a new feature or making a modification, alter the absolute minimum amount of existing code required to implement the change successfully. -Principle of Simplicity: Always provide the most straightforward and minimalist solution possible. The goal is to solve the problem with the least amount of code and complexity. Avoid premature optimization or over-engineering. - -Anytime someone asks about the business logic diagram, utilize the [Business Logic Diagram](../diag.mmd). \ No newline at end of file +Principle of Simplicity: Always provide the most straightforward and minimalist solution possible. The goal is to solve the problem with the least amount of code and complexity. Avoid premature optimization or over-engineering. \ No newline at end of file diff --git a/.github/instructions/c.instructions.md b/.github/instructions/c.instructions.md deleted file mode 100644 index 9dd1b25..0000000 --- a/.github/instructions/c.instructions.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -applyTo: "**.c" ---- -Always be sure to free up unused memory \ No newline at end of file diff --git a/.github/instructions/rust.instructions.md b/.github/instructions/rust.instructions.md deleted file mode 100644 index 79da6c8..0000000 --- a/.github/instructions/rust.instructions.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -applyTo: "**.rs" ---- -# Rust -Do not suggest using any external packages (i.e., dependencies). All rust code should only use the `std` library. \ No newline at end of file