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/` - **Java**: `target/`, `*.class`, `*.jar`, `.gradle/`, `build/`
- **C#/.NET**: `bin/`, `obj/`, `*.user`, `*.suo`, `packages/` - **C#/.NET**: `bin/`, `obj/`, `*.user`, `*.suo`, `packages/`
- **Go**: `*.exe`, `*.test`, `vendor/`, `*.out` - **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/` - **Universal**: `.DS_Store`, `Thumbs.db`, `*.tmp`, `*.swp`, `.vscode/`, `.idea/`
**Tool-Specific Patterns**: **Tool-Specific Patterns**:

View File

@@ -1,13 +1,23 @@
<!-- <!--
Sync Impact Report: Sync Impact Report:
- Version change: 0.0.0 → 1.0.0 - Version change: 1.1.0 → 1.1.1
- List of modified principles: N/A (initial creation) - List of modified principles: I. Defined Technology Stack (refinement)
- Added sections: Core Principles, Governance - Added sections: None
- Removed sections: N/A - Removed sections: None
- Templates requiring updates: - Templates requiring updates:
- ✅ .specify/templates/plan-template.md (verified) - ✅ .specify/templates/plan-template.md (verified)
- ✅ .specify/templates/spec-template.md (verified) - ✅ .specify/templates/spec-template.md (verified)
- ✅ .specify/templates/tasks-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 - Follow-up TODOs: None
--> -->
# Agree on Desires Constitution # Agree on Desires Constitution
@@ -16,7 +26,7 @@ Sync Impact Report:
### I. Defined Technology Stack ### I. Defined Technology Stack
All development MUST adhere to the approved technology stack. This ensures consistency, maintainability, and streamlined operations. 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 - **Frontend**: React
- **UI Framework**: Material Design 3 (Material-UI / MUI) - **UI Framework**: Material Design 3 (Material-UI / MUI)
- **Containerization**: Docker - **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. 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 Auto-generated from all feature plans. Last updated: 2025-10-13
## Active Technologies ## Active Technologies
- Node.js (LTS), TypeScript 5.x - Ruby on Rails (latest stable version) as full-stack framework
- React - React
- Material-UI / MUI (for Material Design 3 UI components) - Material-UI / MUI (for Material Design 3 UI components)
- WebSocket library (for real-time communication) - WebSocket library (for real-time communication)
- Google Cloud Natural Language API (for semantic comparison) - Google Cloud Natural Language API (for semantic comparison)
- Ephemeral server-side storage (in-memory/session store) for encrypted session data, purged on session termination. - 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) - 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) - N/A (frontend feature, no direct storage interaction) (006-copy-link-feature)
## Project Structure ## Project Structure
@@ -40,11 +40,11 @@ npm test
npm run lint npm run lint
## Code Style ## 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 ## Recent Changes
- 006-copy-link-feature: Added Node.js (LTS), TypeScript 5.x, React + Material-UI / MUI, React Router, Browser's native Clipboard API - 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 Node.js (LTS), TypeScript 5.x + React, Material-UI / MUI, WebSocket library, Express.js - 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. - 004-afraid-to-ask: Implemented ephemeral server-side storage for encrypted session data, WebSocket communication, and Google Cloud Natural Language API.
<!-- MANUAL ADDITIONS START --> <!-- MANUAL ADDITIONS START -->

View File

@@ -23,7 +23,7 @@ This feature provides a basic HTTP authentication mechanism for the Single Page
```bash ```bash
docker-compose up --build 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 ### 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.