Tina4

Feature Catalog#

Tina4 3.14 has 135 numbered catalog entries. The number describes the framework family's implementation and audit inventory. It does not mean that 135 features have reached four-language parity, and it does not mean that every entry lives inside each backend package.

This chapter is the map. The earlier chapters explain the public APIs available to Python applications. The numbered audit packets define the parity work and the clean-room formula for another language.

Read the status correctly#

A feature moves through four distinct states:

  1. Catalogued means the feature has a stable number, name, owner, and audit packet.
  2. Shipped means code exists in one or more released components.
  3. Audited means the team has measured all relevant implementations and recorded contradictions and decisions.
  4. Contract-proven means a shared fixture passes in every applicable implementation with real dependencies.

Do not collapse those states into one green tick. At version 3.13.101, the contract ledger reports 55 fixtures and 282 proven invariants, with 0 owed and 0 broken inside those fixture-covered contracts. That result proves the named contracts. It does not certify the remaining catalog entries.

Where the features live#

RangeOwnerMeaning
1-109, 126-132, 135Backend frameworksRuntime, developer, testing, and application-facing capabilities. Availability and maturity still require per-feature evidence.
110-125 and 134Shared Rust CLIOne language-neutral client used with all four backends. These are not four separate backend implementations.
133Verification contractCarbonah benchmark and report shape, not an application runtime API.
Provider entriesSelected integrationEach selectable provider has its own number because another language must implement and test it separately. Providers can require an external service, driver, language extension, or extra package.

Feature 63 includes browser helpers and the separate tina4-js frontend package. The backend books explain their integration, but tina4-js is not embedded four times.

Current parity boundary#

EvidencePythonPHPRubyNode.js
Catalog membershipInventory sourceAudit in progressAudit in progressAudit in progress
Fixture-covered contractsProvenProvenProvenProven
Entire 135-entry catalogNot yet provenNot yet provenNot yet provenNot yet proven

The initial catalog followed the Python module inventory, but Python is not a permanent master. Tina4 promotes the best implementation after audit and captures that decision in an ADR and shared fixture.

Known missing feature surfaces remain tracked in PHP issue 185 and Node.js issue 37. An empty issue list in another repository is not parity evidence. The fixture ledger is the evidence.

Dependency boundary#

The Python package declares no required third-party dependencies. Database, cache, queue, MongoDB, and S3 integrations use optional extras when selected.

"Core dependency" and "provider dependency" are different facts. A local SQLite application can stay small while PostgreSQL, RabbitMQ, Kafka, Redis, MongoDB, S3, or hosted AI still requires the driver or service that speaks that protocol.

Numbered catalog#

Foundation#

#Catalog entry
1DotEnv and typed environment
2Structured logger

Database and providers#

#Catalog entry
3Database adapter interface
4Database URL parser
5Database facade and safe writes
6Query builder
7SQL translator
8SQLite provider
9PostgreSQL provider
10MySQL provider
11MSSQL provider
12Firebird provider
13ODBC provider
14MongoDB SQL-translation provider
15Migrations
16Race-safe database sequences

ORM and data layer#

#Catalog entry
17ORM base class
18ORM fields and column mapping
19Input and request validation
20Soft delete
21Declarative ORM relationships
22Imperative ORM relationships
23ORM scopes
24Paginated database and ORM results
25ORM result caching
26ORM instance loading
27Automatic CRUD from models
28Seeder and fake data

HTTP core#

#Catalog entry
29HTTP request model
30HTTP response model and representation types
31Router and dispatch
32Route groups
33Middleware pipeline

HTTP policies#

#Catalog entry
34CORS middleware
35Rate limiting
36Security headers middleware
37CSRF protection

HTTP runtime#

#Catalog entry
38Health and readiness endpoints
39Graceful shutdown
40HTTP compression and ETag
41Static assets and cache revalidation
42Configurable error pages
43Request ID tracking
44File upload contract
45Swagger and OpenAPI
46Default landing page
47In-process background tasks

Frond template engine#

#Catalog entry
48Frond lexer
49Frond parser
50Frond compiler
51Frond runtime
52Frond filters
53Frond tags
54Frond expression tests
55Frond functions
56Frond extensibility API
57Frond auto-escaping
58Frond sandboxing
59Frond template caching
60Frond fragment caching

Frontend assets#

#Catalog entry
61SCSS compiler
62Tina4 CSS
63Frond and Tina4 browser helpers

Authentication#

#Catalog entry
64JWT and request authentication

Sessions and providers#

#Catalog entry
65Session lifecycle
66File session provider
67Redis session provider
68Valkey session provider
69MongoDB session provider
70Database session provider
71Memcached session provider

Cache and providers#

#Catalog entry
72Cache interface and provider selection
73Memory cache provider
74File cache provider
75Redis cache provider
76Valkey cache provider
77Memcached cache provider
78MongoDB cache provider
79Database cache provider
80HTTP response cache

Integrations and storage#

#Catalog entry
81Standard-library HTTP API client
82GraphQL
83WebSocket protocol and server
84Redis WebSocket backplane
85NATS WebSocket backplane
86WSDL and SOAP
87Localization and i18n
88Email and messenger
89Queue lifecycle
90Lite queue provider
91RabbitMQ queue provider
92Kafka queue provider
93MongoDB queue provider
94MQTT client
95Document store interface
96SQLite document store provider
97MongoDB document store provider
98Realtime collaboration
99Local realtime attachment storage
100S3 realtime attachment storage
101Model Context Protocol server
102Local source and documentation context index
103Live framework and application API index
135App-facing LLM client

Application runtime#

#Catalog entry
104Event and listener system
105Dependency injection container
106Service runner
107HTML element builder
108AI coding-tool integration
109Lazy feature loading and preload manifest

CLI#

#Catalog entry
110CLI project initialization
111CLI development server
112CLI migrations
113CLI seeding
114CLI test runner
115CLI route inspection
116CLI interactive console
117CLI environment management
118CLI queue management
119CLI container build
120CLI code generation
121CLI code metrics
122CLI command discovery and help
123CLI doctor
124CLI guided setup
125CLI deployment
134CLI AI-skills installation and refresh

Developer runtime#

#Catalog entry
126Development error overlay
127Development admin dashboard
128Dual development and test ports
129Development port takeover
130Dynamic framework version

Testing and verification tools#

#Catalog entry
131In-process HTTP test client
132Inline testing API
133Carbonah benchmark contract

What parity means#

Parity applies to observable contracts: response shapes, status codes, environment keys, error messages, file formats, and security rules. Host-language code remains idiomatic. A Python method can use snake_case while PHP and Node.js use camelCase, but all three must return the same public data.

The catalog gives another language a checklist. The audit packet supplies the decisions. The fixture supplies the proof. A name alone proves nothing; a green contract earns the claim.