- Remove legacy rule files (documentation.mdc, general_development.mdc, etc.) - Implement new meta-rule system with core, app, and feature categories - Add meta-rule files for different workflows (bug diagnosis, feature planning, etc.) - Create organized directory structure: core/, app/, features/, database/, etc. - Add comprehensive README.md for rules documentation - Establish new rule architecture with always-on and workflow-specific rules This restructuring improves rule organization, enables better workflow management, and provides clearer separation of concerns for different development tasks.
286 lines
6.9 KiB
Plaintext
286 lines
6.9 KiB
Plaintext
# Time Implementation — Technical Instructions
|
|
|
|
> **Agent role**: Reference this file for detailed implementation instructions
|
|
when working with time handling in development.
|
|
|
|
## Real-Time Context in Developer Interactions
|
|
|
|
- The model must always resolve **"current time"** using the **developer's
|
|
|
|
actual system time and timezone**.
|
|
|
|
- When generating timestamps (e.g., in investigation logs, ADRs, or examples),
|
|
|
|
the model should:
|
|
|
|
- Use the **developer's current local time** by default.
|
|
|
|
- Indicate the timezone explicitly (e.g., `2025-08-17T10:32-05:00`).
|
|
|
|
- Optionally provide UTC alongside if context requires cross-team clarity.
|
|
|
|
- When interpreting relative terms like *now*, *today*, *last week*:
|
|
|
|
- Resolve them against the **developer's current time**.
|
|
|
|
- Convert them into **absolute ISO-8601 values** in the output.
|
|
|
|
## LLM Time Checking Instructions
|
|
|
|
**CRITICAL**: The LLM must actively query the system for current time rather
|
|
than assuming or inventing times.
|
|
|
|
### How to Check Current Time
|
|
|
|
#### 1. **Query System Time (Required)**
|
|
|
|
- **Always start** by querying the current system time using available tools
|
|
|
|
- **Never assume** what the current time is
|
|
|
|
- **Never use** placeholder values like "current time" or "now"
|
|
|
|
#### 2. **Available Time Query Methods**
|
|
|
|
- **System Clock**: Use `date` command or equivalent system time function
|
|
|
|
- **Programming Language**: Use language-specific time functions (e.g.,
|
|
|
|
`Date.now()`, `datetime.now()`)
|
|
|
|
- **Environment Variables**: Check for time-related environment variables
|
|
|
|
- **API Calls**: Use time service APIs if available
|
|
|
|
#### 3. **Required Time Information**
|
|
|
|
When querying time, always obtain:
|
|
|
|
- **Current Date**: YYYY-MM-DD format
|
|
|
|
- **Current Time**: HH:MM:SS format (24-hour)
|
|
|
|
- **Timezone**: Current system timezone or UTC offset
|
|
|
|
- **UTC Equivalent**: Convert local time to UTC for cross-team clarity
|
|
|
|
#### 4. **Time Query Examples**
|
|
|
|
```bash
|
|
|
|
# Example: Query system time
|
|
|
|
$ date
|
|
|
|
# Expected output: Mon Aug 17 10:32:45 EDT 2025
|
|
|
|
# Example: Query UTC time
|
|
|
|
$ date -u
|
|
|
|
# Expected output: Mon Aug 17 14:32:45 UTC 2025
|
|
|
|
```
|
|
|
|
```python
|
|
|
|
# Example: Python time query
|
|
|
|
import datetime
|
|
current_time = datetime.datetime.now()
|
|
utc_time = datetime.datetime.utcnow()
|
|
print(f"Local: {current_time}")
|
|
print(f"UTC: {utc_time}")
|
|
|
|
```
|
|
|
|
```javascript
|
|
|
|
// Example: JavaScript time query
|
|
const now = new Date();
|
|
const utc = new Date().toISOString();
|
|
console.log(`Local: ${now}`);
|
|
console.log(`UTC: ${utc}`);
|
|
|
|
```
|
|
|
|
#### 5. **LLM Time Checking Workflow**
|
|
|
|
1. **Query**: Actively query system for current time
|
|
|
|
2. **Validate**: Confirm time data is reasonable and current
|
|
|
|
3. **Format**: Convert to ISO 8601 format
|
|
|
|
4. **Context**: Provide both local and UTC times when helpful
|
|
|
|
5. **Document**: Show the source of time information
|
|
|
|
#### 6. **Error Handling for Time Queries**
|
|
|
|
- **If time query fails**: Ask user for current time or use "unknown time"
|
|
|
|
with explanation
|
|
|
|
- **If timezone unclear**: Default to UTC and ask for clarification
|
|
|
|
- **If time seems wrong**: Verify with user before proceeding
|
|
|
|
- **Always log**: Record when and how time was obtained
|
|
|
|
#### 7. **Time Query Verification**
|
|
|
|
Before using queried time, verify:
|
|
|
|
- [ ] Time is recent (within last few minutes)
|
|
|
|
- [ ] Timezone information is available
|
|
|
|
- [ ] UTC conversion is accurate
|
|
|
|
- [ ] Format follows ISO 8601 standard
|
|
|
|
## Model Behavior Rules
|
|
|
|
- **Never invent a "fake now"**: All "current time" references must come from
|
|
|
|
the real system clock available at runtime.
|
|
|
|
- **Check developer time zone**: If ambiguous, ask for clarification (e.g.,
|
|
|
|
"Should I use UTC or your local timezone?").
|
|
|
|
- **Format for clarity**:
|
|
|
|
- Local time: `YYYY-MM-DDTHH:mm±hh:mm`
|
|
|
|
- UTC equivalent (if needed): `YYYY-MM-DDTHH:mmZ`
|
|
|
|
## Technical Implementation Notes
|
|
|
|
### UTC Storage Principle
|
|
|
|
- **Store all timestamps in UTC** in databases, logs, and serialized formats
|
|
|
|
- **Convert to local time only for user display**
|
|
|
|
- **Use ISO 8601 format** for all storage: `YYYY-MM-DDTHH:mm:ss.sssZ`
|
|
|
|
### Common Implementation Patterns
|
|
|
|
#### Database Storage
|
|
|
|
```sql
|
|
|
|
-- ✅ Good: Store in UTC
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
|
|
|
```
|
|
|
|
#### API Responses
|
|
|
|
```json
|
|
|
|
// ✅ Good: Include both UTC and local time
|
|
{
|
|
"eventTime": "2025-08-17T14:00:00Z",
|
|
"localTime": "2025-08-17T10:00:00-04:00",
|
|
"timezone": "America/New_York"
|
|
}
|
|
|
|
```
|
|
|
|
#### Logging
|
|
|
|
```python
|
|
|
|
# ✅ Good: Log in UTC with timezone info
|
|
|
|
logger.info(f"User action at {datetime.utcnow().isoformat()}Z (UTC)")
|
|
|
|
```
|
|
|
|
### Timezone Handling Best Practices
|
|
|
|
#### 1. Always Store Timezone Information
|
|
|
|
- Include IANA timezone identifier (e.g., `America/New_York`)
|
|
|
|
- Store UTC offset at time of creation
|
|
|
|
- Handle daylight saving time transitions automatically
|
|
|
|
#### 2. User Display Considerations
|
|
|
|
- Convert UTC to user's preferred timezone
|
|
|
|
- Show timezone abbreviation when helpful
|
|
|
|
- Use relative time for recent events ("2 hours ago")
|
|
|
|
#### 3. Edge Case Handling
|
|
|
|
- **Daylight Saving Time**: Use timezone-aware libraries
|
|
|
|
- **Leap Seconds**: Handle gracefully (rare but important)
|
|
|
|
- **Invalid Times**: Validate before processing
|
|
|
|
### Common Mistakes to Avoid
|
|
|
|
#### 1. Timezone Confusion
|
|
|
|
- ❌ **Don't**: Assume server timezone is user timezone
|
|
|
|
- ✅ **Do**: Always convert UTC to user's local time for display
|
|
|
|
#### 2. Format Inconsistency
|
|
|
|
- ❌ **Don't**: Mix different time formats in the same system
|
|
|
|
- ✅ **Do**: Standardize on ISO 8601 for all storage
|
|
|
|
#### 3. Relative Time References
|
|
|
|
- ❌ **Don't**: Use relative terms in persistent storage
|
|
|
|
- ✅ **Do**: Convert relative terms to absolute timestamps immediately
|
|
|
|
---
|
|
|
|
**See also**:
|
|
|
|
- `.cursor/rules/development/time.mdc` for core principles
|
|
|
|
- `.cursor/rules/development/time_examples.mdc` for practical examples
|
|
|
|
**Status**: Active implementation guidelines
|
|
**Priority**: Medium
|
|
**Estimated Effort**: Ongoing reference
|
|
**Dependencies**: time.mdc
|
|
**Stakeholders**: Development team, DevOps team
|
|
|
|
## Model Implementation Checklist
|
|
|
|
### Before Time Implementation
|
|
|
|
- [ ] **Time Context**: Understand what time information needs to be implemented
|
|
- [ ] **Format Review**: Review time formatting standards (UTC, ISO 8601)
|
|
- [ ] **Platform Check**: Identify platform-specific time requirements
|
|
- [ ] **User Context**: Consider user's timezone and display preferences
|
|
|
|
### During Time Implementation
|
|
|
|
- [ ] **UTC Storage**: Use UTC for all system and log timestamps
|
|
- [ ] **Format Consistency**: Apply consistent time formatting patterns
|
|
- [ ] **Timezone Handling**: Properly handle timezone conversions
|
|
- [ ] **User Display**: Format times appropriately for user display
|
|
|
|
### After Time Implementation
|
|
|
|
- [ ] **Format Validation**: Verify time formats are correct and consistent
|
|
- [ ] **Cross-Platform Testing**: Test time handling across different platforms
|
|
- [ ] **Documentation**: Update relevant documentation with time patterns
|
|
- [ ] **User Experience**: Confirm time display is clear and user-friendly
|