chore: clearing more of the spec

This commit is contained in:
2026-04-09 17:31:52 +02:00
parent 5eff5b9636
commit 92f0687549
6 changed files with 67 additions and 4 deletions

View File

@@ -10,6 +10,7 @@
use "./tabs.allium" as tabs
use "./i18n.allium" as i18n
use "./generation.allium" as generation
-- ─── Dashboard (no tab active) ───────────────────────────────
@@ -395,22 +396,26 @@ surface DocumentationSurface {
-- ─── Site validation view ───────────────────────────────────
value SiteValidationReport {
project_id: String
expected_url_count: Integer
existing_html_count: Integer
missing_url_paths: List<String> -- in sitemap, no HTML on disk
extra_url_paths: List<String> -- HTML on disk, not in sitemap
updated_post_url_paths: List<String> -- source .md newer than HTML
affected_sections: Set<generation/GenerationSection>
}
surface SiteValidationSurface {
context report: SiteValidationReport
exposes:
report.project_id
report.expected_url_count
report.existing_html_count
report.missing_url_paths
report.extra_url_paths
report.updated_post_url_paths
report.affected_sections
provides:
SiteValidationScanRequested()
@@ -447,7 +452,7 @@ rule SiteValidationApply {
-- Deletes extra HTML files, removes empty directories
-- Regenerates calendar if anything changed
-- Rebuilds search index if anything rendered or deleted
ensures: GenerateSiteRequested(sections: report.affected_sections)
ensures: ApplyValidationRequested(report.project_id, report.affected_sections)
}
-- ─── Translation validation view ───────────────────────────

View File

@@ -8,6 +8,15 @@
-- file types. The Rust implementation must read and write these
-- formats byte-for-byte compatible with the TypeScript implementation.
surface FrontmatterPersistenceSurface {
facing _: ContentPersistenceRuntime
provides:
PublishPostRequested(post)
PublishTemplateRequested(template)
PublishScriptRequested(script)
}
-- ============================================================================
-- POST FILE FORMAT
-- ============================================================================

View File

@@ -10,6 +10,23 @@ use "./metadata.allium" as meta
use "./menu.allium" as menu
use "./translation.allium" as translation
surface GenerationControlSurface {
facing _: GenerationOperator
provides:
GenerateSiteRequested(generation)
ValidateSiteRequested(project)
ApplyValidationRequested(project_id, sections)
}
surface GenerationRuntimeSurface {
facing _: GenerationRuntime
provides:
PageRenderRequested(template, context)
GenerateSiteCompleted(generation)
}
value GenerationSection {
kind: core | single | category | tag | date
}
@@ -134,10 +151,9 @@ rule ValidateSite {
}
rule ApplyValidation {
when: ApplyValidationRequested(project, report)
when: ApplyValidationRequested(project_id, sections)
-- Targeted re-rendering for affected sections only
for section in report.affected_sections:
ensures: GenerateSiteRequested(project, sections: {section})
ensures: GenerateSiteRequested(plan_generation(project_id, sections))
}
-- Day-block grouping for archives

View File

@@ -8,6 +8,14 @@ use "./media.allium" as media
use "./script.allium" as script
use "./template.allium" as template
surface MetadataMaintenanceSurface {
facing _: MaintenanceOperator
provides:
MetadataDiffRequested(project)
RebuildFromFilesystemRequested(project, entity_type)
}
value DiffField {
name: String
db_value: String

View File

@@ -17,6 +17,22 @@ config {
preview_port: Integer = 4123
}
surface PreviewControlSurface {
facing _: PreviewOperator
provides:
StartPreviewRequested(project)
StopPreviewRequested(server)
}
surface PreviewHttpSurface {
facing _: PreviewClient
provides:
PreviewRequest(path)
PreviewDraftRequest(path, post_id)
}
rule StartPreview {
when: StartPreviewRequested(project)
ensures: PreviewServer.created(

View File

@@ -12,6 +12,15 @@
-- GLOBAL TEMPLATE VARIABLES
-- ============================================================================
surface TemplateRenderingSurface {
facing _: RenderPipeline
provides:
RenderPostPageRequested(post, language)
RenderListPageRequested(posts, pagination, archive_context)
RenderNotFoundPageRequested()
}
value RenderContext {
-- Top-level variables available in all templates
language: String -- Current language code