Project Analysis: been-there
Project Type: Mobile App (Flutter/Dart)
Analysis Date: 2025-12-16
ADK Version: [Detected via frameworks in packages/]
Implementation Method: Git submodule (frameworks in packages/frameworks/)
Implementation Date: [To be determined from git history]
Note: This report focuses on Epic/Story-level analysis. For detailed task-level analysis (task naming conventions, organization patterns, structure details, checklist patterns), see ../task-level-kanban-structure-analysis.md. For detailed knowledge/documentation structure analysis (KB naming conventions, directory organization, document structure, lifecycle metadata, navigation patterns), see ../knowledge-documentation-structure-analysis.md. For detailed workflow structure analysis (workflow naming, YAML structure, step patterns, configuration, execution patterns), see ../workflow-structure-analysis.md. For detailed cursorrules structure analysis (cursorrules naming, structure patterns, trigger patterns, rule patterns), see ../cursorrules-structure-analysis.md.
Executive Summary
ADK Implementation Status: Full Implementation
Overall Assessment: Good (with critical mashup issue)
Key Findings:
- ✅ Proper ADK framework installation (Git submodule)
- ✅ Correct KB structure matching ADK canonical
- ✅ Proper version file and RW configuration
- ❌ CRITICAL MASHUP: Epic 9 "Book Related Work" present in mobile app project
- ✅ Good workflow integration (RW trigger in .cursorrules)
- ✅ Proper framework packages structure
1. Kanban Structure Analysis
1.1 Structure Overview
- Epic Count: 10 epics (Epics 1-9 + Epic 20)
- Story Count: ~30+ stories across epics
- Task Count: Multiple tasks per story
- Directory Structure:
docs/project-management/kanban/epics/Epic-X/ - File Organization: Nested (Epic → Story → Task directories)
1.2 Distance from ADK Canonical Structure
Comparison to ADK Canonical:
Epic Structure: ⚠️ DIVERGES - CRITICAL MASHUP ISSUE
- Epics 1-9: Framework epics from ai-dev-kit's own Kanban structure (dev-kit repo)
- Epic 1: Project Core
- Epic 2: Workflow Management Framework
- Epic 3: Numbering & Versioning Framework
- Epic 4: Kanban Framework
- Epic 5: FR Implementation
- Epic 6: BR Implementation
- Epic 7: UXR (User Experience Research)
- Epic 8: Codebase Maintenance and Review
- Epic 9: Book Related Work ❌ INAPPROPRIATE FOR MOBILE APP PROJECT
- Epic 20: Been There Mobile App - MVP (actual project epic) ✅
Root Cause: Project installed both:
- ai-dev-kit's own Kanban structure (from dev-kit repo itself)
- Kanban package template (from packages/frameworks/kanban/)
Impact:
- Confusion about which epics are relevant
- Epic 9 "Book Related Work" has no relevance to mobile app
- Clutters Kanban board with framework infrastructure epics
- Makes it unclear what the actual project work is
Story Structure: ✅ MATCHES
- Stories organized under Epic directories
- Story naming follows pattern:
Story-XXX-description.md - Story documents include proper frontmatter
Task Structure: ✅ MATCHES
- Tasks organized in Story subdirectories
- Task documents follow pattern:
Task-YYY-description.mdorTYYY-description.md - Tasks have proper structure and metadata
Naming Conventions: ✅ MATCHES
- Epic naming:
Epic-X/Epic-X.md - Story naming:
Story-XXX-description.md - Task naming:
Task-YYY-description.mdorTYYY-description.md
File Organization: ✅ MATCHES
- Nested structure:
epics/Epic-X/Story-XXX/Task-YYY.md - Consistent with ADK canonical
Drift Assessment:
- Severity: CRITICAL (mashup issue)
- Root Cause: Unclear installation instructions led to mixing ai-dev-kit's own Kanban structure with Kanban package template
- Impact: Confusion, inappropriate epics, unclear project boundaries
1.3 Good Practices
✅ What Works Well:
-
Proper Framework Installation
- Frameworks installed via Git submodule in
packages/frameworks/ - Clean separation between frameworks and project code
- Proper framework structure maintained
- Frameworks installed via Git submodule in
-
Correct KB Structure
- KB structure matches ADK canonical exactly
- Proper directory organization:
docs/project-management/kanban/epics/ - Good separation of concerns
-
Proper Version File
- Version file at
src/fynd_deals/version.py - Using RC.EPIC.STORY.TASK+BUILD schema correctly
- Version tracking integrated with Kanban
- Version file at
-
RW Configuration
rw-config.yamlproperly configured- Kanban integration enabled
- Proper path mappings
-
Workflow Integration
.cursorrulesincludes RW trigger section- Proper workflow definitions
- Good integration with Kanban
-
Epic 20 Structure
- Epic 20 (actual project epic) properly structured
- Stories well-organized
- Tasks properly documented
1.4 Bad Practices
❌ What Doesn't Work:
-
CRITICAL: Epic Mashup
- Issue: Epics 1-9 from ai-dev-kit's own Kanban structure mixed with project epic
- Problem: Epic 9 "Book Related Work" has no relevance to mobile app
- Impact: Confusion, clutter, unclear project boundaries
- Root Cause: Unclear distinction between:
- ai-dev-kit's own Kanban structure (for dev-kit repo)
- Kanban package template (for client projects)
-
Framework Epics in Project Kanban
- Issue: Epics 1-8 are framework infrastructure epics, not project epics
- Problem: These epics belong to ai-dev-kit repo, not client projects
- Impact: Confusion about what work belongs to the project vs. framework
-
Inconsistent Epic Usage
- Issue: Some framework epics (1-8) have stories/tasks, others don't
- Problem: Unclear which epics are active vs. template placeholders
- Impact: Maintenance burden, confusion
1.5 Mashup Issues
🔀 Mixing ADK Components:
-
Epic 9 "Book Related Work" in Mobile App
- Description: Epic 9 from ai-dev-kit's own Kanban structure present in mobile app project
- Impact: CRITICAL - Epic has no relevance to mobile app project
- Root Cause: Project copied ai-dev-kit's own Kanban structure instead of using Kanban package template
- Evidence:
docs/project-management/kanban/epics/Epic-9/Epic-9.mdexists with "Book Related Work" content
-
Framework Infrastructure Epics (1-8) in Project
- Description: Epics 1-8 are framework infrastructure epics from ai-dev-kit repo
- Impact: MAJOR - Confusion about project vs. framework work
- Root Cause: Same as above - copied dev-kit's own structure
1.6 Recommendations
For This Project:
- Remove Epic 9 - "Book Related Work" has no relevance to mobile app
- Evaluate Epics 1-8 - Determine if these are needed or should be removed
- Clarify Project Boundaries - Ensure only project-relevant epics remain
- Consider Epic Cleanup - Remove framework infrastructure epics if not needed
For ADK:
-
CRITICAL: Clarify Installation Instructions
- Make it CRYSTAL CLEAR that projects should NOT copy ai-dev-kit's own Kanban structure
- Projects should use Kanban package template, not dev-kit's own epics
- Add explicit warnings about this mashup
-
Separate Dev-Kit Structure from Package Template
- Clearly distinguish between:
ai-dev-kit/docs/project-management/kanban/epics/(dev-kit's own structure)packages/frameworks/kanban/templates/(package template for projects)
- Make this distinction obvious in installation guide
- Clearly distinguish between:
-
Add Installation Validation
- Create validator to detect mashup issues
- Warn if project has inappropriate epics (e.g., Epic 9 in non-book projects)
- Provide cleanup guidance
-
Improve Template Contextualization
- Template should guide projects to:
- Use only relevant canonical epics (1-7, 8, 10, 18, 22, 23)
- Add project-specific epics (like Epic 20)
- NOT copy dev-kit's own epics (1-9)
- Template should guide projects to:
2. Knowledge Base (KB) Analysis
2.1 Structure Overview
- Directory Structure:
docs/with subdirectories matching ADK canonical - Document Count: ~50+ documents
- Document Types: Architecture, Changelog, Documentation, Guides, project-management
- Organization Pattern: Matches ADK canonical structure exactly
KB Structure:
docs/
├── Analysis/
├── Architecture/
│ └── standards-and-adrs/ (20+ ADRs)
├── changelog-and-release-notes/
│ └── changelog-archive/
├── Documentation/
│ └── user-docs/ (10+ framework docs)
├── Guides/
│ ├── framework-consumption/
│ └── getting-started/
└── project-management/
└── kanban/
2.2 Distance from ADK Canonical KB Structure
Comparison to ADK KB:
Directory Organization: ✅ MATCHES
- Structure matches ADK canonical exactly
- Proper separation: Architecture, Changelog, Documentation, Guides, project-management
- Good depth management (3-4 levels)
Document Lifecycle: ✅ MATCHES
- Documents have proper frontmatter with lifecycle metadata
- TTL and expiration properly configured
- Housekeeping policy set
Naming Conventions: ✅ MATCHES
- Consistent naming patterns
- Self-documenting names
- Proper file extensions
Cross-Referencing: ✅ MATCHES
- Proper cross-references between documents
- Good linking patterns
Drift Assessment:
- Severity: NONE
- Root Cause: N/A - structure matches canonical
- Impact: None - KB structure is correct
2.3 Good Practices
✅ What Works Well:
-
Perfect KB Structure Match
- KB structure matches ADK canonical exactly
- Proper directory organization
- Good separation of concerns
-
Comprehensive ADRs
- 20+ Architecture Decision Records
- Well-documented standards
- Good technical reference
-
Proper Documentation Organization
- Framework documentation in
Documentation/user-docs/ - Guides properly organized
- Good discoverability
- Framework documentation in
-
Lifecycle Metadata
- Documents have proper frontmatter
- TTL and expiration configured
- Good housekeeping
2.4 Bad Practices
❌ What Doesn't Work:
None identified - KB structure is correct.
2.5 Recommendations
For This Project:
- None - KB structure is correct
For ADK:
- KB structure is working well - no changes needed
- This project demonstrates correct KB adoption
3. Cursor Rules (.cursorrules) Analysis
3.1 Structure Overview
- File Location:
.cursorrules(project root) - File Size: ~437 lines
- Sections: Multiple sections including RW trigger section
- Organization: Well-organized with clear sections
3.2 ADK Integration
Workflow Integration:
- Release Workflow (RW): ✅ PRESENT
- RW trigger section included
- Proper workflow definitions
- Config-driven approach documented
- Step-by-step guide included
Kanban Integration:
- Epic/Story/Task References: ✅ PRESENT
- References to Kanban structure
- Version integration documented
KB Integration:
- Document References: ✅ PRESENT
- References to KB structure
- Lifecycle metadata mentioned
3.3 Distance from ADK Canonical Cursor Rules
Comparison:
Structure: ✅ MATCHES
- RW trigger section present
- Proper workflow definitions
- Good organization
Workflow Definitions: ✅ MATCHES
- RW workflow properly defined
- Step-by-step guide included
- Config-driven approach
Agent Instructions: ✅ MATCHES
- Clear instructions for RW execution
- Proper TODO tracking
- Good validation steps
Drift Assessment:
- Severity: NONE
- Root Cause: N/A - matches canonical
- Impact: None - cursor rules are correct
3.4 Good Practices
✅ What Works Well:
-
Comprehensive RW Trigger Section
- Complete workflow definition
- Step-by-step guide
- Config-driven approach
- Proper validation steps
-
Good Documentation
- Clear instructions
- Examples provided
- Troubleshooting guidance
-
Proper Integration
- Good integration with Kanban
- Proper version integration
- KB references included
3.5 Bad Practices
❌ What Doesn't Work:
None identified - cursor rules are correct.
3.6 Recommendations
For This Project:
- None - cursor rules are correct
For ADK:
- Cursor rules structure is working well
- This project demonstrates correct RW integration
4. CI/CD Configuration Analysis
4.1 Configuration Overview
- CI/CD Platform: None detected
- Workflow Files: None found
- Pipeline Stages: N/A
4.2 ADK Workflow Integration
Release Workflow (RW) Integration:
- Present: N/A (no CI/CD)
- Implementation: N/A
- Customization: N/A
Other ADK Workflows:
- None detected
4.3 Custom Workflows
Custom Workflows:
- None detected
4.4 Distance from ADK Canonical Workflows
Comparison:
- RW Implementation: N/A (no CI/CD)
- Workflow Patterns: N/A
Drift Assessment:
- Severity: N/A (no CI/CD configured)
- Root Cause: N/A
- Impact: None - CI/CD not required for this project type
4.5 Good Practices
✅ What Works Well:
- Appropriate for Project Type
- Flutter mobile app may not need CI/CD initially
- Can be added later if needed
4.6 Bad Practices
❌ What Doesn't Work:
None identified - CI/CD not required.
4.7 Recommendations
For This Project:
- Consider adding CI/CD when ready for automated testing/deployment
For ADK:
- CI/CD integration is optional - not a requirement
- This is fine for project type
5. Workflow Definitions Analysis
5.1 Workflow Overview
- Release Workflow (RW): ✅ PRESENT (via .cursorrules)
- Intake Workflows: ✅ PRESENT (FR/BR in Kanban)
- Custom Workflows: None detected
5.2 Workflow Scripts
Scripts Used:
packages/frameworks/workflow mgt/scripts/validation/validate_branch_context.pypackages/frameworks/workflow mgt/scripts/validation/validate_changelog_format.pypackages/frameworks/workflow mgt/scripts/install_release_workflow.pyscripts/sync_version_to_pubspec.py(custom - syncs version to Flutter pubspec.yaml)scripts/documentation/validate-documentation-links.pyscripts/documentation/validate-documentation-consistency.pyscripts/documentation/documentation-review-workflow.py
Script Analysis:
Custom Scripts:
sync_version_to_pubspec.py- Purpose: Syncs version from
src/fynd_deals/version.pyto Flutterpubspec.yaml - Customization: Project-specific script for Flutter integration
- Drift from ADK: None - this is appropriate customization
- Issues: None identified
- Purpose: Syncs version from
ADK Framework Scripts:
- All scripts from
packages/frameworks/workflow mgt/scripts/are used as-is - No customization detected
- Proper integration
5.3 Distance from ADK Canonical Workflows
Comparison:
RW Implementation: ✅ MATCHES
- RW properly configured via .cursorrules
- Config-driven approach
- Proper validation
Intake Workflows: ✅ MATCHES
- FR/BR intake workflows present
- Proper Kanban integration
Workflow Patterns: ✅ MATCHES
- Workflows follow ADK patterns
- Good integration
Drift Assessment:
- Severity: NONE
- Root Cause: N/A - workflows match canonical
- Impact: None - workflows are correct
5.4 Good Practices
✅ What Works Well:
-
Proper RW Integration
- RW properly configured
- Config-driven approach
- Good validation
-
Custom Script for Flutter Integration
sync_version_to_pubspec.pyis appropriate customization- Syncs version to Flutter pubspec.yaml
- Good project-specific adaptation
-
Framework Scripts Used As-Is
- No unnecessary customization
- Proper framework usage
5.5 Bad Practices
❌ What Doesn't Work:
None identified - workflows are correct.
5.6 Recommendations
For This Project:
- None - workflows are correct
For ADK:
- Workflow integration is working well
- Custom script for Flutter integration is good example of appropriate customization
- Consider documenting Flutter-specific integration patterns
6. Scripts Analysis
6.1 Script Inventory
Scripts Found:
scripts/sync_version_to_pubspec.py- Custom Flutter version syncscripts/documentation/validate-documentation-links.py- Documentation validationscripts/documentation/validate-documentation-consistency.py- Documentation consistencyscripts/documentation/documentation-review-workflow.py- Documentation review- Framework scripts in
packages/frameworks/workflow mgt/scripts/(used as-is)
6.2 Script Usage
Used By:
- Workflows: Validation scripts used by RW
- Kanban: N/A
- KB: Documentation scripts for KB maintenance
- Standalone: Version sync script for Flutter integration
6.3 Script Analysis
Customizations:
sync_version_to_pubspec.py- Customization: Project-specific script for Flutter
- Drift from ADK: None - appropriate customization
- Issues: None
Framework Scripts:
- All framework scripts used as-is
- No customization
- Proper integration
6.4 Good Practices
✅ What Works Well:
-
Appropriate Customization
- Custom script for Flutter integration is appropriate
- Doesn't modify framework scripts
- Good separation
-
Framework Scripts Used As-Is
- No unnecessary customization
- Proper framework usage
6.5 Bad Practices
❌ What Doesn't Work:
None identified - scripts are correct.
6.6 Recommendations
For This Project:
- None - scripts are correct
For ADK:
- Script usage is correct
- Custom Flutter script is good example of appropriate customization
- Consider documenting Flutter-specific patterns
7. Framework Drift Analysis
7.1 Drift Summary
Overall Drift Level: CRITICAL (due to Epic mashup)
Areas of Drift:
- Kanban: CRITICAL - Epic mashup (Epics 1-9 + Epic 20)
- KB: NONE - Perfect match
- Workflows: NONE - Perfect match
- Scripts: NONE - Appropriate customization only
7.2 Root Causes
Why Drift Occurred:
-
Unclear Installation Instructions
- Project copied ai-dev-kit's own Kanban structure instead of using package template
- Unclear distinction between dev-kit's own structure and package template
- No validation to prevent mashup
-
Template Confusion
- Project didn't understand difference between:
ai-dev-kit/docs/project-management/kanban/epics/(dev-kit's own structure)packages/frameworks/kanban/templates/(package template)
- Project didn't understand difference between:
-
No Installation Validation
- No validator to detect inappropriate epics
- No warnings about mashup issues
Common Patterns:
- Epic mashup appears to be common issue (user mentioned it)
- Framework epics mixed with project epics
7.3 Impact Assessment
Problems Caused:
-
Confusion
- Unclear which epics are project work vs. framework work
- Epic 9 "Book Related Work" has no relevance
-
Clutter
- Kanban board cluttered with framework infrastructure epics
- Makes it hard to see actual project work
-
Maintenance Burden
- Framework epics may be maintained unnecessarily
- Unclear what needs attention
Maintenance Burden:
- Medium - Epic cleanup needed
- Framework epics may be maintained unnecessarily
8. What ADK Can Learn
8.1 What to Implement
✅ Good Practices to Adopt:
-
Flutter Version Sync Pattern
- Practice: Custom script to sync version from
version.pytopubspec.yaml - Why Valuable: Enables Flutter projects to use ADK versioning
- How to Implement: Document Flutter integration pattern, provide example script
- Practice: Custom script to sync version from
-
Perfect KB Structure Adoption
- Practice: KB structure matches canonical exactly
- Why Valuable: Demonstrates correct KB adoption
- How to Implement: Use as example in KB adoption guide
-
Proper RW Configuration
- Practice:
rw-config.yamlproperly configured - Why Valuable: Shows correct RW setup
- How to Implement: Use as example in RW installation guide
- Practice:
8.2 How to Harden
🛡️ Hardening Opportunities:
-
CRITICAL: Prevent Epic Mashup
- What to Harden: Installation process to prevent copying dev-kit's own Kanban structure
- How:
- Add explicit warnings in installation guide
- Create validator to detect inappropriate epics
- Provide cleanup guidance
- Separate dev-kit structure from package template more clearly
-
Installation Validation
- What to Harden: Add validation to detect mashup issues
- How:
- Create
validate_kanban_structure.pyscript - Check for inappropriate epics (e.g., Epic 9 in non-book projects)
- Warn about framework epics in project Kanban
- Provide cleanup recommendations
- Create
-
Template Contextualization
- What to Harden: Improve template contextualization guidance
- How:
- Add explicit guidance on which epics to use
- Document which epics are framework vs. project
- Provide examples of correct epic selection
8.3 What NOT to Do
❌ Anti-Patterns to Prevent:
-
Epic Mashup
- Anti-Pattern: Copying ai-dev-kit's own Kanban structure into projects
- Why Bad: Causes confusion, inappropriate epics, clutter
- How to Prevent:
- Make distinction crystal clear in installation guide
- Add explicit warnings
- Provide validator
-
Framework Epics in Project Kanban
- Anti-Pattern: Including framework infrastructure epics (1-8) in project Kanban
- Why Bad: These belong to ai-dev-kit repo, not client projects
- How to Prevent:
- Clarify in installation guide
- Provide template with only relevant epics
- Add validation
Current ADK Issues:
-
Unclear Installation Instructions
- Issue: Installation guide doesn't clearly distinguish dev-kit structure from package template
- How to Fix: Add explicit section explaining difference, add warnings
-
No Installation Validation
- Issue: No validator to detect mashup issues
- How to Fix: Create validator script, add to installation process
8.4 What to Do Differently
🔄 Improvements:
-
Separate Dev-Kit Structure from Package Template
- Current Approach: Unclear distinction
- Better Approach:
- Clearly separate:
ai-dev-kit/docs/project-management/kanban/epics/(dev-kit's own structure)packages/frameworks/kanban/templates/(package template)
- Make distinction obvious in all documentation
- Add explicit warnings in installation guide
- Clearly separate:
-
Improve Template Contextualization
- Current Approach: Template may not clearly guide epic selection
- Better Approach:
- Template should guide projects to:
- Use only relevant canonical epics (1-7, 8, 10, 18, 22, 23)
- Add project-specific epics
- NOT copy dev-kit's own epics
- Provide examples of correct epic selection
- Add validation
- Template should guide projects to:
-
Add Installation Validation
- Current Approach: No validation
- Better Approach:
- Create validator to detect mashup issues
- Warn about inappropriate epics
- Provide cleanup guidance
- Integrate into installation process
9. Synthesis & Recommendations
9.1 Key Insights
Top 3 Insights:
-
CRITICAL: Epic Mashup is Major Issue
- Projects are copying ai-dev-kit's own Kanban structure instead of using package template
- Epic 9 "Book Related Work" appearing in non-book projects
- Need to clearly separate dev-kit structure from package template
-
KB Structure Adoption is Perfect
- KB structure matches canonical exactly
- Demonstrates correct adoption
- Can be used as example
-
Workflow Integration is Correct
- RW properly configured
- Good workflow integration
- Appropriate customizations (Flutter version sync)
9.2 Critical Recommendations
For ADK:
-
CRITICAL: Prevent Epic Mashup (Priority: Critical)
- Add explicit warnings in installation guide
- Create validator to detect inappropriate epics
- Provide cleanup guidance
- Separate dev-kit structure from package template more clearly
-
Add Installation Validation (Priority: High)
- Create
validate_kanban_structure.pyscript - Check for inappropriate epics
- Warn about framework epics in project Kanban
- Integrate into installation process
- Create
-
Improve Template Contextualization (Priority: High)
- Template should guide epic selection
- Document which epics are framework vs. project
- Provide examples of correct epic selection
For This Project:
- Remove Epic 9 - "Book Related Work" has no relevance
- Evaluate Epics 1-8 - Determine if needed or should be removed
- Clarify Project Boundaries - Ensure only project-relevant epics remain
9.3 Patterns Across Projects
Common Patterns:
- Epic mashup appears to be common (user mentioned it)
- Framework epics mixed with project epics
- Need for clearer installation guidance
10. Appendix
10.1 File Inventory
Kanban Files:
docs/project-management/kanban/epics/Epic-1/throughEpic-9/(framework epics)docs/project-management/kanban/epics/Epic-20/(project epic)- Multiple stories and tasks per epic
KB Files:
docs/architecture/standards-and-adrs/(20+ ADRs)docs/changelog-and-release-notes/docs/documentation/user-docs/(10+ framework docs)docs/guides/
Workflow Files:
.cursorrules(RW trigger section)rw-config.yaml(RW configuration)
Script Files:
scripts/sync_version_to_pubspec.py(custom Flutter sync)scripts/documentation/(documentation scripts)packages/frameworks/workflow mgt/scripts/(framework scripts)
10.2 Comparison Tables
Kanban Structure Comparison:
| Aspect | ADK Canonical | been-there | Match? |
|---|---|---|---|
| Epic Structure | Project-specific epics only | Epics 1-9 (framework) + Epic 20 (project) | ❌ NO (mashup) |
| Story Structure | Stories under Epic directories | ✅ Matches | ✅ YES |
| Task Structure | Tasks under Story directories | ✅ Matches | ✅ YES |
| Naming Conventions | Epic-X, Story-XXX, Task-YYY | ✅ Matches | ✅ YES |
| File Organization | Nested structure | ✅ Matches | ✅ YES |
KB Structure Comparison:
| Aspect | ADK Canonical | been-there | Match? |
|---|---|---|---|
| Directory Organization | Architecture, Changelog, Documentation, Guides, project-management | ✅ Matches | ✅ YES |
| Document Lifecycle | Frontmatter with lifecycle metadata | ✅ Matches | ✅ YES |
| Naming Conventions | Self-documenting names | ✅ Matches | ✅ YES |
| Cross-Referencing | Proper linking patterns | ✅ Matches | ✅ YES |
Analysis Completed: 2025-12-16
Next Review: After ADK hardening recommendations implemented