Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
{
"bootstrapped": false,
"pre_existing_workflows": [
".github/workflows/ci.yml"
],
"lint_report": "actionlint not installed; skipping syntactic validation",
"recent_runs": [
{
"databaseId": 25222608475,
"name": "CI",
"conclusion": "success",
"status": "completed",
"headBranch": "allium-swarm/reports/demo-172724",
"headSha": "96c8d1f0c05841b0b52763f2239dc7210f40041a",
"url": "https://github.com/juxt/site/actions/runs/25222608475",
"updatedAt": "2026-05-01T16:28:05Z"
},
{
"databaseId": 25222132094,
"name": "CI",
"conclusion": "success",
"status": "completed",
"headBranch": "master",
"headSha": "190517e1ebcf24fbb764a0decce11d3adcfe7bb2",
"url": "https://github.com/juxt/site/actions/runs/25222132094",
"updatedAt": "2026-05-01T16:15:45Z"
},
{
"databaseId": 25221784668,
"name": "CI",
"conclusion": "success",
"status": "completed",
"headBranch": "allium-swarm/ci-bootstrap-20260501-1626",
"headSha": "c924f2d7111ecd916a10766e588bd21ae861edde",
"url": "https://github.com/juxt/site/actions/runs/25221784668",
"updatedAt": "2026-05-01T16:13:57Z"
}
],
"baseline_green": true,
"generated_at": "2026-05-01T17:06:22.724955666Z"
}
739 changes: 739 additions & 0 deletions .allium-swarm/d52fa048-cc89-451b-a6ee-848520549568/full_report.md

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
# juxt-site Allium Specifications

A policy-driven HTTP application framework with dynamic resource management, rule-based authorization, and integrated GraphQL support.

## Project Overview

**juxt-site** is a declarative HTTP server that stores its entire configuration (resources, authorization rules, representations, users) in a distributed temporal database (XTDB). Rather than hardcoding request handlers, the framework evaluates dynamic resources and rules against each request, enabling runtime reconfiguration without restarts.

### Key Characteristics

- **Dynamic Resources**: All resources are persisted entities with metadata (content type, methods, acceptable formats)
- **Policy-Driven Authorization**: Rules are stored as data; authorization via datalog queries against request context
- **Representation Negotiation**: Content negotiation with Vary header support and dynamic variants
- **Temporal Persistence**: XTDB provides bitemporal querying and audit trails
- **Integrated GraphQL**: First-class GraphQL query support with schema validation
- **WebDAV Support**: PROPFIND, MKCOL methods for collection management
- **Event-Driven Actions**: Triggers fire post-request based on query evaluation
- **Ring Middleware**: Ring 2.0 adapter with 30+ middleware stages

## Specification Files

| File | Domain |
|------|--------|
| `core_domain.allium` | Entities, value objects, business rules |
| `data_model.allium` | Persistent data model and invariants |
| `api_behaviour.allium` | HTTP request/response behavior, content negotiation |
| `data_flows.allium` | End-to-end request flows and processing pipelines |
| `error_handling.allium` | Error conditions, failure modes, recovery strategies |
| `external_contracts.allium` | Expectations on external systems (XTDB, Ring, Jetty) |

## System Boundaries

**In-Scope**: The HTTP request handler, authorization engine, resource location, content negotiation, and response generation. All observable behavior of the framework when processing HTTP requests.

**Out-of-Scope**:
- XTDB internals (treated as a black-box database)
- Ring/Jetty adapter internals (treated as HTTP abstraction)
- Specific GraphQL execution (covered at framework integration level only)
- Template engine internals (Selmer)

## Architecture at a Glance

```
HTTP Request
[Ring 1→2 Adapter] → [Health Check] → [Initialize Request]
[CORS/Security Headers] → [Error Handler] → [Method Validation]
[Locate Resource] → [Check Redirects] → [Find Representations]
[Content Negotiation] → [Authentication] → [Authorization (PDP)]
[Method Check] → [Invoke Method Handler] → [Triggers]
[Format Response] → [Cache/Store Request] → Ring 2 Response
```

The request carries state through all middleware as a single map (`req`), accumulating contextual information at each stage.
Loading
Loading