Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
72 commits
Select commit Hold shift + click to select a range
931798a
First steps for rails 5.
ayaankazerouni Dec 18, 2018
72a7506
Fix exercise-related active-record queries
ayaankazerouni Dec 18, 2018
2e81b94
Use SQL instead of ActiveRecord hashes
ayaankazerouni Dec 18, 2018
b622a46
Replace squeel usage with vanilla active record.
ayaankazerouni Dec 20, 2018
8562ecb
Manually fix merge conflicts in lock file
ayaankazerouni Jan 22, 2019
3508544
Update factory bot for incoming changes
ayaankazerouni Jan 22, 2019
0fd6b22
Rails 5.1
ayaankazerouni Jan 22, 2019
aeb2902
Rails 5.2
ayaankazerouni Jan 22, 2019
9a5b618
Fix deploy syntax
ayaankazerouni Jan 22, 2019
e026bb3
Remove obsolete config option; update mysql2
ayaankazerouni Jan 22, 2019
867339b
Fix schema issues and start Dockerizing
ayaankazerouni Jun 9, 2020
0ad6022
Regress sprockets to < 4 for the time being
ayaankazerouni Jun 9, 2020
eb0e28a
Docker-compose for databases
ayaankazerouni Jun 10, 2020
5ea1de6
Dockerfile and Compose file improvements
ayaankazerouni Jul 2, 2020
947b93a
exception_handler config updates
ayaankazerouni Jul 2, 2020
2c34931
Get README from staging
ayaankazerouni Jul 3, 2020
ac51fba
Merge branch 'staging' into rails-5-upgrade
ayaankazerouni Jul 3, 2020
1f51d4a
Set deploy branch to rails-5-upgrade
ayaankazerouni Jul 8, 2020
47896a3
Merge branch 'staging' into rails-5-upgrade
ayaankazerouni Jul 20, 2020
4f8c6f6
update models
awhicks Oct 22, 2020
705d76e
update jobs
awhicks Oct 22, 2020
aa1e292
update migrations
awhicks Oct 22, 2020
b35161c
update Gemfile.lock
awhicks Oct 22, 2020
c2ac771
update Dockerfile
awhicks Oct 22, 2020
9afd3d3
change runservers for dev
awhicks Oct 22, 2020
01ed81a
updated exception_handler and rails 5.1
awhicks Nov 12, 2020
2e0f489
added ssl for testing
awhicks Nov 12, 2020
b8cd412
Merge pull request #181 from web-cat/rails-5-upgrade-changes
awhicks Nov 12, 2020
9b71517
removed ssl
awhicks Nov 12, 2020
681c5a3
Merge branch 'staging' into rails-5-upgrade
awhicks Nov 12, 2020
aeb7de4
update gemfile
awhicks Nov 17, 2020
ffadf4c
Merge branch 'staging' into rails-5-upgrade
awhicks Nov 17, 2020
256ac4b
update schema.rb
awhicks Nov 17, 2020
6143893
bundle updates for yanked gem
awhicks Jul 29, 2021
bbb909f
dockerfile updates
awhicks Jul 29, 2021
6cee2ed
merge
awhicks Jul 29, 2021
36fda2e
fix merge issues
awhicks Jul 30, 2021
d8ce07a
update schema and remove broken parameter
awhicks Jul 30, 2021
fabdf50
Remove "try it here" link in notice after exercise is created or upda…
ayaankazerouni Feb 1, 2022
7ad6d8d
Update Dockerfile to place Gemfile at appropriate location
ayaankazerouni Feb 3, 2022
e61f88f
Fixed Gemfile according to new github policies
i-m-karanagarwal Apr 7, 2022
7412915
Merge pull request #217 from i-m-karanagarwal/staging
s-edwards Apr 8, 2022
d3eaa7b
Peml integration basic
Nov 17, 2022
24aa055
Peml integration refactoring
Nov 28, 2022
9b74718
Bug fixed and added help page
Nov 28, 2022
3db4b79
update staging
awhicks Nov 19, 2023
cab8fff
creates new exercise collection for SPLICE along with a route to exp…
awhicks Nov 22, 2023
7fa0b75
remove collection and update urls
awhicks Dec 5, 2023
cf99016
Merge pull request #228 from web-cat/splice-portal
awhicks Dec 5, 2023
da0e63b
tweaks to SPLICE API export endpoint
awhicks Dec 12, 2023
2d2b4f1
typo in exercise_name
awhicks Dec 12, 2023
f1fd061
updating keywords as array and split exercise name phrases into words
babz007 Mar 21, 2024
d01874f
Merge pull request #232 from babz007/keywordarray
awhicks Mar 22, 2024
f367069
Merge remote-tracking branch 'origin/peml_integration' into staging
s-edwards Nov 15, 2024
f70514f
removed before_filter references, post-merge cleanup
s-edwards Nov 15, 2024
db12647
fixed errant skip_before_action clause (?)
s-edwards Nov 15, 2024
06b7bf8
updated db/schema.rb after successful deployment
s-edwards Nov 18, 2024
19d8718
Merge branch 'master' into staging
s-edwards Dec 10, 2024
e2afc7b
added rails 4.2 version constraint to 2024 migrations
s-edwards Dec 10, 2024
cb9070a
updated from live staging server
s-edwards Feb 7, 2025
c2af174
fixed publicly_visible() error
s-edwards Feb 7, 2025
fcf881d
upgraded errors table for v0.8.0.0 of exception_handler gem
s-edwards Feb 18, 2025
f249826
PEML translation now working, but still some data model mismatches (m…
s-edwards Feb 21, 2025
d89df52
Updates to PEML data mapping
s-edwards Feb 24, 2025
61bbf06
fix package sources for deprecation in base of image
awhicks Oct 8, 2025
9b97cac
fix: staging deployment config now uses staging branch
s-edwards Feb 22, 2026
e46963b
fix: migrations updated to 5.2, modern maria, SPLICE export
s-edwards Feb 24, 2026
11223c3
fix: Remove duplicate CreateErrors migration (already in gem)
s-edwards Feb 24, 2026
bd2fc9a
fix: Add blank yarn.lock for cap deploy
s-edwards Feb 24, 2026
4e35ee7
fix: Add lti_launch to SLC catalog iframe URLs
s-edwards Feb 24, 2026
ce37f24
fix: SPLICE SLC Item catalog generation formatting
s-edwards Feb 24, 2026
a745046
feat: SPLICE catalog export endpoints
s-edwards Feb 26, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
8 changes: 8 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
.bundle
.circleci
.git
vendor/bundle
log/*
!/log/.keep
tmp/*
!/tmp/.keep
188 changes: 188 additions & 0 deletions .gemini/commands/speckit.analyze.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,188 @@
description = "Perform a non-destructive cross-artifact consistency and quality analysis across spec.md, plan.md, and tasks.md after task generation."

prompt = """
---
description: Perform a non-destructive cross-artifact consistency and quality analysis across spec.md, plan.md, and tasks.md after task generation.
---

## User Input

```text
$ARGUMENTS
```

You **MUST** consider the user input before proceeding (if not empty).

## Goal

Identify inconsistencies, duplications, ambiguities, and underspecified items across the three core artifacts (`spec.md`, `plan.md`, `tasks.md`) before implementation. This command MUST run only after `/speckit.tasks` has successfully produced a complete `tasks.md`.

## Operating Constraints

**STRICTLY READ-ONLY**: Do **not** modify any files. Output a structured analysis report. Offer an optional remediation plan (user must explicitly approve before any follow-up editing commands would be invoked manually).

**Constitution Authority**: The project constitution (`.specify/memory/constitution.md`) is **non-negotiable** within this analysis scope. Constitution conflicts are automatically CRITICAL and require adjustment of the spec, plan, or tasks—not dilution, reinterpretation, or silent ignoring of the principle. If a principle itself needs to change, that must occur in a separate, explicit constitution update outside `/speckit.analyze`.

## Execution Steps

### 1. Initialize Analysis Context

Run `.specify/scripts/bash/check-prerequisites.sh --json --require-tasks --include-tasks` once from repo root and parse JSON for FEATURE_DIR and AVAILABLE_DOCS. Derive absolute paths:

- SPEC = FEATURE_DIR/spec.md
- PLAN = FEATURE_DIR/plan.md
- TASKS = FEATURE_DIR/tasks.md

Abort with an error message if any required file is missing (instruct the user to run missing prerequisite command).
For single quotes in args like "I'm Groot", use escape syntax: e.g 'I'\\''m Groot' (or double-quote if possible: "I'm Groot").

### 2. Load Artifacts (Progressive Disclosure)

Load only the minimal necessary context from each artifact:

**From spec.md:**

- Overview/Context
- Functional Requirements
- Non-Functional Requirements
- User Stories
- Edge Cases (if present)

**From plan.md:**

- Architecture/stack choices
- Data Model references
- Phases
- Technical constraints

**From tasks.md:**

- Task IDs
- Descriptions
- Phase grouping
- Parallel markers [P]
- Referenced file paths

**From constitution:**

- Load `.specify/memory/constitution.md` for principle validation

### 3. Build Semantic Models

Create internal representations (do not include raw artifacts in output):

- **Requirements inventory**: Each functional + non-functional requirement with a stable key (derive slug based on imperative phrase; e.g., "User can upload file" → `user-can-upload-file`)
- **User story/action inventory**: Discrete user actions with acceptance criteria
- **Task coverage mapping**: Map each task to one or more requirements or stories (inference by keyword / explicit reference patterns like IDs or key phrases)
- **Constitution rule set**: Extract principle names and MUST/SHOULD normative statements

### 4. Detection Passes (Token-Efficient Analysis)

Focus on high-signal findings. Limit to 50 findings total; aggregate remainder in overflow summary.

#### A. Duplication Detection

- Identify near-duplicate requirements
- Mark lower-quality phrasing for consolidation

#### B. Ambiguity Detection

- Flag vague adjectives (fast, scalable, secure, intuitive, robust) lacking measurable criteria
- Flag unresolved placeholders (TODO, TKTK, ???, `<placeholder>`, etc.)

#### C. Underspecification

- Requirements with verbs but missing object or measurable outcome
- User stories missing acceptance criteria alignment
- Tasks referencing files or components not defined in spec/plan

#### D. Constitution Alignment

- Any requirement or plan element conflicting with a MUST principle
- Missing mandated sections or quality gates from constitution

#### E. Coverage Gaps

- Requirements with zero associated tasks
- Tasks with no mapped requirement/story
- Non-functional requirements not reflected in tasks (e.g., performance, security)

#### F. Inconsistency

- Terminology drift (same concept named differently across files)
- Data entities referenced in plan but absent in spec (or vice versa)
- Task ordering contradictions (e.g., integration tasks before foundational setup tasks without dependency note)
- Conflicting requirements (e.g., one requires Next.js while other specifies Vue)

### 5. Severity Assignment

Use this heuristic to prioritize findings:

- **CRITICAL**: Violates constitution MUST, missing core spec artifact, or requirement with zero coverage that blocks baseline functionality
- **HIGH**: Duplicate or conflicting requirement, ambiguous security/performance attribute, untestable acceptance criterion
- **MEDIUM**: Terminology drift, missing non-functional task coverage, underspecified edge case
- **LOW**: Style/wording improvements, minor redundancy not affecting execution order

### 6. Produce Compact Analysis Report

Output a Markdown report (no file writes) with the following structure:

## Specification Analysis Report

| ID | Category | Severity | Location(s) | Summary | Recommendation |
|----|----------|----------|-------------|---------|----------------|
| A1 | Duplication | HIGH | spec.md:L120-134 | Two similar requirements ... | Merge phrasing; keep clearer version |

(Add one row per finding; generate stable IDs prefixed by category initial.)

**Coverage Summary Table:**

| Requirement Key | Has Task? | Task IDs | Notes |
|-----------------|-----------|----------|-------|

**Constitution Alignment Issues:** (if any)

**Unmapped Tasks:** (if any)

**Metrics:**

- Total Requirements
- Total Tasks
- Coverage % (requirements with >=1 task)
- Ambiguity Count
- Duplication Count
- Critical Issues Count

### 7. Provide Next Actions

At end of report, output a concise Next Actions block:

- If CRITICAL issues exist: Recommend resolving before `/speckit.implement`
- If only LOW/MEDIUM: User may proceed, but provide improvement suggestions
- Provide explicit command suggestions: e.g., "Run /speckit.specify with refinement", "Run /speckit.plan to adjust architecture", "Manually edit tasks.md to add coverage for 'performance-metrics'"

### 8. Offer Remediation

Ask the user: "Would you like me to suggest concrete remediation edits for the top N issues?" (Do NOT apply them automatically.)

## Operating Principles

### Context Efficiency

- **Minimal high-signal tokens**: Focus on actionable findings, not exhaustive documentation
- **Progressive disclosure**: Load artifacts incrementally; don't dump all content into analysis
- **Token-efficient output**: Limit findings table to 50 rows; summarize overflow
- **Deterministic results**: Rerunning without changes should produce consistent IDs and counts

### Analysis Guidelines

- **NEVER modify files** (this is read-only analysis)
- **NEVER hallucinate missing sections** (if absent, report them accurately)
- **Prioritize constitution violations** (these are always CRITICAL)
- **Use examples over exhaustive rules** (cite specific instances, not generic patterns)
- **Report zero issues gracefully** (emit success report with coverage statistics)

## Context

{{args}}
"""
Loading