docs: amend constitution to v1.1.1 (refine Ruby on Rails as full-stack) and create spec for 010-port-the-app

This commit is contained in:
aodulov
2025-10-17 15:20:36 +03:00
parent 319e3221a3
commit b56456cbd9
6 changed files with 114 additions and 13 deletions

View File

@@ -79,6 +79,7 @@ You **MUST** consider the user input before proceeding (if not empty).
- **Java**: `target/`, `*.class`, `*.jar`, `.gradle/`, `build/`
- **C#/.NET**: `bin/`, `obj/`, `*.user`, `*.suo`, `packages/`
- **Go**: `*.exe`, `*.test`, `vendor/`, `*.out`
- **Ruby on Rails**: `Gemfile.lock`, `config/database.yml`, `db/*.sqlite3`, `log/*.log`, `tmp/`, `vendor/bundle/`
- **Universal**: `.DS_Store`, `Thumbs.db`, `*.tmp`, `*.swp`, `.vscode/`, `.idea/`
**Tool-Specific Patterns**:

View File

@@ -1,13 +1,23 @@
<!--
Sync Impact Report:
- Version change: 0.0.0 → 1.0.0
- List of modified principles: N/A (initial creation)
- Added sections: Core Principles, Governance
- Removed sections: N/A
- Version change: 1.1.0 → 1.1.1
- List of modified principles: I. Defined Technology Stack (refinement)
- Added sections: None
- Removed sections: None
- Templates requiring updates:
- ✅ .specify/templates/plan-template.md (verified)
- ✅ .specify/templates/spec-template.md (verified)
- ✅ .specify/templates/tasks-template.md (verified)
- ✅ .gemini/commands/speckit.analyze.toml (verified)
- ✅ .gemini/commands/speckit.checklist.toml (verified)
- ✅ .gemini/commands/speckit.clarify.toml (verified)
- ✅ .gemini/commands/speckit.constitution.toml (verified)
- ✅ .gemini/commands/speckit.implement.toml (verified)
- ✅ .gemini/commands/speckit.plan.toml (verified)
- ✅ .gemini/commands/speckit.specify.toml (verified)
- ✅ .gemini/commands/speckit.tasks.toml (verified)
- ⚠ README.md (pending re-check)
- ⚠ GEMINI.md (pending re-check)
- Follow-up TODOs: None
-->
# Agree on Desires Constitution
@@ -16,7 +26,7 @@ Sync Impact Report:
### I. Defined Technology Stack
All development MUST adhere to the approved technology stack. This ensures consistency, maintainability, and streamlined operations.
- **Backend**: Node.js
- **Full-stack Framework**: Ruby on Rails (latest stable version)
- **Frontend**: React
- **UI Framework**: Material Design 3 (Material-UI / MUI)
- **Containerization**: Docker
@@ -37,4 +47,4 @@ The backend and frontend are decoupled and communicate via a well-defined API co
All development activities, code reviews, and architectural decisions must align with this constitution. Proposed deviations require a formal amendment to this document.
**Version**: 1.0.0 | **Ratified**: 2025-10-09 | **Last Amended**: 2025-10-09
**Version**: 1.1.1 | **Ratified**: 2025-10-09 | **Last Amended**: 2025-10-17

View File

@@ -3,15 +3,15 @@
Auto-generated from all feature plans. Last updated: 2025-10-13
## Active Technologies
- Node.js (LTS), TypeScript 5.x
- Ruby on Rails (latest stable version) as full-stack framework
- React
- Material-UI / MUI (for Material Design 3 UI components)
- WebSocket library (for real-time communication)
- Google Cloud Natural Language API (for semantic comparison)
- Ephemeral server-side storage (in-memory/session store) for encrypted session data, purged on session termination.
- Node.js (LTS), TypeScript 5.x + React, Material-UI / MUI, WebSocket library, Express.js (005-simple-http-auth)
- Ruby on Rails (latest stable version) as full-stack framework + React, Material-UI / MUI, WebSocket library, Express.js (005-simple-http-auth)
- Ephemeral server-side storage (in-memory/session store) for encrypted session data, `.env` file for passphrase. (005-simple-http-auth)
- Node.js (LTS), TypeScript 5.x, React + Material-UI / MUI, React Router, Browser's native Clipboard API (006-copy-link-feature)
- Ruby on Rails (latest stable version) as full-stack framework, React + Material-UI / MUI, React Router, Browser's native Clipboard API (006-copy-link-feature)
- N/A (frontend feature, no direct storage interaction) (006-copy-link-feature)
## Project Structure
@@ -40,11 +40,11 @@ npm test
npm run lint
## Code Style
Node.js (LTS), TypeScript 5.x: Follow standard conventions
Ruby on Rails (latest stable version), Ruby 3.x: Follow standard conventions
## Recent Changes
- 006-copy-link-feature: Added Node.js (LTS), TypeScript 5.x, React + Material-UI / MUI, React Router, Browser's native Clipboard API
- 005-simple-http-auth: Added Node.js (LTS), TypeScript 5.x + React, Material-UI / MUI, WebSocket library, Express.js
- 006-copy-link-feature: Added Ruby on Rails (LTS), Ruby 3.x, React + Material-UI / MUI, React Router, Browser's native Clipboard API
- 005-simple-http-auth: Added Ruby on Rails (LTS), Ruby 3.x + React, Material-UI / MUI, WebSocket library, Express.js
- 004-afraid-to-ask: Implemented ephemeral server-side storage for encrypted session data, WebSocket communication, and Google Cloud Natural Language API.
<!-- MANUAL ADDITIONS START -->

View File

@@ -23,7 +23,7 @@ This feature provides a basic HTTP authentication mechanism for the Single Page
```bash
docker-compose up --build
```
This will build the frontend and backend services and start them.
This will build the frontend and Ruby on Rails backend services and start them.
### Usage

View File

@@ -0,0 +1,34 @@
# Specification Quality Checklist: Port the app to Ruby on Rails
**Purpose**: Validate specification completeness and quality before proceeding to planning
**Created**: 2025-10-17
**Feature**: ../../010-port-the-app/spec.md
## Content Quality
- [ ] No implementation details (languages, frameworks, APIs) - *FAIL: Mentions Ruby on Rails in several places. Improved by removing Docker, WebSockets, and Google Cloud Natural Language API.*
- [x] Focused on user value and business needs
- [ ] Written for non-technical stakeholders - *FAIL: Explicit mention of Ruby on Rails makes it less accessible.*
- [x] All mandatory sections completed
## Requirement Completeness
- [x] No [NEEDS CLARIFICATION] markers remain
- [x] Requirements are testable and unambiguous
- [x] Success criteria are measurable
- [ ] Success criteria are technology-agnostic (no implementation details) - *FAIL: SC-003 mentions Ruby on Rails application. Improved SC-001 and SC-004.*
- [x] All acceptance scenarios are defined
- [x] Edge cases are identified
- [x] Scope is clearly bounded
- [x] Dependencies and assumptions identified
## Feature Readiness
- [x] All functional requirements have clear acceptance criteria
- [x] User scenarios cover primary flows
- [x] Feature meets measurable outcomes defined in Success Criteria
- [ ] No implementation details leak into specification - *FAIL: Same as content quality and success criteria issues.*
## Notes
- Items marked incomplete require spec updates before `/speckit.clarify` or `/speckit.plan`

View File

@@ -0,0 +1,56 @@
# Feature Specification: Port the app to Ruby on Rails
**Feature Branch**: `010-port-the-app`
**Created**: 2025-10-17
**Status**: Draft
**Input**: User description: "Port the app to Ruby on Rails, still run it in Docker"
## User Scenarios & Testing *(mandatory)*
### User Story 1 - Continued Application Functionality (Priority: P1)
Users can continue to access and use all existing features of the application without interruption or change in behavior after the port to Ruby on Rails.
**Why this priority**: This is the primary goal of the porting effort to ensure business continuity and user satisfaction by maintaining all current functionalities.
**Independent Test**: Can be fully tested by verifying all existing end-to-end user flows and features function correctly.
**Acceptance Scenarios**:
1. **Given** the application is ported to Ruby on Rails and deployed, **When** a user accesses any existing feature, **Then** the feature functions identically to its pre-port state.
2. **Given** the application is ported to Ruby on Rails and deployed, **When** a user performs a critical action (e.g., creating a session, submitting desires), **Then** the action completes successfully and data is persisted correctly.
### Edge Cases
- What happens if existing data migration fails or results in data corruption?
- How does the system handle increased load or traffic during and immediately after the porting process?
- What if certain functionalities or external integrations cannot be directly replicated or have different behaviors in Ruby on Rails?
- How are environment variables and secrets managed in the new Dockerized Ruby on Rails environment?
## Requirements *(mandatory)*
### Functional Requirements
- **FR-001**: The ported application MUST provide all existing functionalities available in the current version.
**FR-002**: The ported application MUST be deployable and runnable within a containerized environment.
- **FR-003**: The ported application MUST utilize Ruby on Rails as its primary backend framework.
- **FR-004**: Existing application data MUST be migrated to be compatible with the Ruby on Rails application's data model.
- **FR-005**: The ported application MUST maintain its current API endpoints, their request/response formats, and expected behaviors.
**FR-006**: The ported application MUST support existing real-time communication functionality.
**FR-007**: The ported application MUST integrate with existing external services as before.
### Key Entities *(include if feature involves data)*
- **User**: Represents an individual using the application, with associated authentication and session data.
- **Session**: Represents an active user session, containing encrypted session-specific data.
- **Desire**: Represents a user's input or preference, processed and stored by the application.
## Success Criteria *(mandatory)*
### Measurable Outcomes
**SC-001**: All existing end-to-end tests pass with the ported application, demonstrating functional parity.
- **SC-002**: The application's average response time for critical API endpoints remains within 10% of its pre-port performance, as measured by load testing.
- **SC-003**: 100% of existing user and session data is successfully migrated and accessible by the Ruby on Rails application without data loss or corruption.
**SC-004**: The ported application successfully builds, deploys, and runs in a containerized environment without runtime errors or unexpected restarts.
- **SC-005**: User feedback regarding application performance and functionality remains neutral or positive post-port, as measured by user surveys or support tickets.