Conversation
Complete delivery of SQLDemoFast: streamlined SQL Server temporal tables demonstration for Azure SQL. **Deliverables:** - 3 SQL scripts: 01-Setup.sql, 02-Observe.sql, 03-TimeTravel.sql - Terraform infrastructure: Azure SQL S0 with firewall rules and connection output - Comprehensive README with presenter notes, timing estimates, troubleshooting - Full .squad/ orchestration logs, session log, and merged decisions **Features:** - Pre-seeded history with known 2024 timestamps (reliable queries) - Employee domain with compelling narrative arc (Alice promotion, Bob restructure, Carol conversion, David departure) - 3 FOR SYSTEM_TIME query types: AS OF (point-in-time), BETWEEN (interval), ALL (complete audit trail) - HIDDEN period columns for clean current-state output - All critical and major fixes applied per Biff's review; demo approved for presentation **Timeline:** - Doc: Design plan (Product Pricing domain) - Marty: Analysis of 14 existing scripts; implementation with Employee domain override - Biff: Identified 1 critical + 3 major issues (expected result counts, comments, timing) - Doc: Applied all fixes; all must-pass criteria satisfied - Biff: Re-review approved ✅ Status: APPROVED FOR PRESENTATION Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Build EFCoreDemoFast .NET 8 console app demonstrating EF Core 8 temporal table support against Azure SQL: - TemporalContext with IsTemporal() configuration - EF migration generating temporal table + history table - Program.cs with all 5 temporal LINQ extensions - TemporalAll, TemporalAsOf, TemporalBetween, TemporalFromTo, TemporalContainedIn - Uses TemporalEFDemo database (same server as Demo 1) - Biff-approved ✅ Also: Terraform adds TemporalEFDemo database resource Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
|
| GitGuardian id | GitGuardian status | Secret | Commit | Filename | |
|---|---|---|---|---|---|
| 28007910 | Triggered | Generic Password | 40c8ba0 | Demos/SQLDemoFast/terraform/terraform.tfvars.example | View secret |
🛠 Guidelines to remediate hardcoded secrets
- Understand the implications of revoking this secret by investigating where it is used in your code.
- Replace and store your secret safely. Learn here the best practices.
- Revoke and rotate this secret.
- If possible, rewrite git history. Rewriting git history is not a trivial act. You might completely break other contributing developers' workflow and you risk accidentally deleting legitimate data.
To avoid such incidents in the future consider
- following these best practices for managing and storing secrets including API keys and other credentials
- install secret detection on pre-commit to catch secret before it leaves your machine and ease remediation.
🦉 GitGuardian detects secrets in your source code to help developers and security teams secure the modern development process. You are seeing this because you or someone else with access to this repository has authorized GitGuardian to scan your pull request.
There was a problem hiding this comment.
Pull request overview
This PR prepares the "Time Travelling Data" conference presentation for the Visual Studio Live! Las Vegas 2026 session by adding two new fast demo tracks (SQLDemoFast and EFCoreDemoFast) with shared Azure infrastructure (Terraform), along with a comprehensive Squad AI team management framework for coordinating demo development.
Changes:
- Updates
README.mdto link the now-available slides for the VS Live Vegas 2026 session. - Adds
Demos/SQLDemoFast/(3 T-SQL scripts, Terraform, docs) andDemos/EFCoreDemoFast/(.NET 10 console app, EF Core temporal queries, docs) as fast 2-minute demo variants. - Adds Squad AI team scaffolding (
.squad/,.squad-templates/,.github/workflows/,.github/copilot-instructions.md) for project management and CI automation.
Reviewed changes
Copilot reviewed 97 out of 102 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
README.md |
Updates the VS Live Vegas entry to link the uploaded slide deck |
Demos/SQLDemoFast/01-Setup.sql |
Creates Employee temporal table and pre-seeds history |
Demos/SQLDemoFast/02-Observe.sql |
Live DML operations showing automatic history tracking |
Demos/SQLDemoFast/03-TimeTravel.sql |
FOR SYSTEM_TIME queries (AS OF, BETWEEN, ALL) |
Demos/SQLDemoFast/README.md |
Presenter guide with timing, talking points, troubleshooting |
Demos/FastSetup/terraform/main.tf |
Azure SQL Server + two databases provisioned via Terraform |
Demos/FastSetup/terraform/variables.tf |
Terraform variable definitions with validations |
Demos/FastSetup/terraform/outputs.tf |
Terraform outputs including connection strings |
Demos/FastSetup/terraform/README.md |
Step-by-step Terraform deployment guide |
Demos/FastSetup/terraform/terraform.tfvars.example |
Safe placeholder variables file for source control |
Demos/FastSetup/terraform/.gitignore |
Excludes secrets and state files |
Demos/FastSetup/README.md |
Overview of shared infrastructure setup |
Demos/EFCoreDemoFast/Program.cs |
.NET 10 console app demonstrating all 5 EF Core temporal LINQ extensions |
Demos/EFCoreDemoFast/Models/Employee.cs |
POCO model with no period columns (EF shadow properties) |
Demos/EFCoreDemoFast/Data/TemporalContext.cs |
DbContext with IsTemporal() configuration |
Demos/EFCoreDemoFast/Migrations/ |
Reference migration files showing EF temporal DDL |
Demos/EFCoreDemoFast/EFCoreDemoFast.csproj |
.NET 10 project targeting EF Core 10.0.3 |
Demos/EFCoreDemoFast/README.md |
2-minute presenter script and troubleshooting guide |
Demos/EFCoreDemoFast/appsettings.example.json |
Safe placeholder connection string for source control |
Demos/EFCoreDemoFast/.gitignore |
Excludes real appsettings.json and build artifacts |
.squad/team.md |
AI agent team roster for demo coordination |
.squad/routing.md |
Work routing rules for the agent team |
.squad/agents/*/ |
Individual agent charters and history files |
.squad/orchestration-log/ |
Per-session agent execution logs |
.squad/casting/, .squad/identity/, .squad/decisions/ |
Squad framework state files |
.squad/skills/, .squad-templates/ |
Squad conventions and template files |
.github/workflows/ |
Squad label management, triage, CI, and release workflows |
.github/copilot-instructions.md |
Repository conventions for GitHub Copilot |
.gitattributes |
Union merge strategy for append-only Squad state files |
.copilot/mcp-config.json |
Example MCP server configuration |
You can also share your feedback on Copilot code review. Take the survey.
| validation { | ||
| condition = length(var.sql_admin_password) >= 12 | ||
| error_message = "SQL admin password must be at least 12 characters long." | ||
| } |
There was a problem hiding this comment.
The sql_admin_password validation only checks that the password is at least 12 characters long (line 51). Azure SQL requires passwords to contain at least one uppercase letter, one lowercase letter, one digit, and one symbol. The README and example file also recommend this complexity, but it is not enforced by Terraform validation. A presenter who sets a password like "aaaaaaaaaaaa" (12 chars) would get a Terraform validation pass but an Azure deployment failure.
| protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) | ||
| { | ||
| var config = new ConfigurationBuilder() | ||
| .AddJsonFile("appsettings.json", optional: false) |
There was a problem hiding this comment.
The TemporalContext.OnConfiguring reads appsettings.json with optional: false (line 14). If the file is missing (e.g., a new contributor who hasn't yet copied appsettings.example.json), this will throw an exception with a confusing error rather than a helpful message. The README mentions this, but since the file is gitignored, it's a common first-run failure. Consider using optional: true and validating the connection string explicitly, or adding a custom error message.
|
|
||
| // ══════════════════════════════════════════════════════════════════ | ||
| // TIME TRAVELLING DATA — EF Core Demo (Demo 2 of 2) | ||
| // Shows EF Core 8 temporal table support against Azure SQL |
There was a problem hiding this comment.
The comment on line 7 says "Shows EF Core 8 temporal table support" but the project targets .NET 10 with EF Core 10.0.3 (as specified in EFCoreDemoFast.csproj). This comment is misleading for an audience-facing demo where presenters and attendees will read the code. It should say "EF Core 10" to match the actual package versions in use.
| output "ef_demo_connection_string" { | ||
| description = "Connection string for the EF Core demo database (update with actual password)" | ||
| value = "Server=tcp:${azurerm_mssql_server.temporal_demo.fully_qualified_domain_name},1433;Initial Catalog=${azurerm_mssql_database.temporal_ef_demo.name};Persist Security Info=False;User ID=${var.sql_admin_username};Password=<your-password>;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;" | ||
| sensitive = false |
There was a problem hiding this comment.
The ef_demo_connection_string output has sensitive = false (line 41), but the value interpolates var.sql_admin_password, which is a sensitive variable. Setting sensitive = false on an output that includes a sensitive input means the password will be printed in plain text in the Terraform plan output and logs. This should be sensitive = true to prevent credential exposure.
| - `Demos/SQLDemoFast/terraform/main.tf` — Updated with TemporalEFDemo database resource | ||
| - `Demos/SQLDemoFast/terraform/outputs.tf` — Updated with TemporalEFDemo connection outputs | ||
|
|
There was a problem hiding this comment.
The orchestration log references the wrong path for the Terraform files. It says Demos/SQLDemoFast/terraform/main.tf and Demos/SQLDemoFast/terraform/outputs.tf, but the actual Terraform files are located under Demos/FastSetup/terraform/ (as shown in the diff for main.tf and outputs.tf). This is an incorrect file reference in the log.
No description provided.