SIAX Technology (sax3l)

@siax/scaffold (0.1.0)

Published 2026-09-16 09:35:08 +00:00 by admin

Installation

@siax:registry=https://git.cloud.siax.io/api/packages/sax3l/npm/
npm install @siax/scaffold@0.1.0
"@siax/scaffold": "0.1.0"

About this package

siax-scaffold

siax-scaffold genererar de mallbara BLOCK-artefakterna ur SIAX Golden Standard v2.0 i vilket SIAX-repo som helst. Zero-dependency Node ESM (endast Node ≥ 20), samma ärlighetsanda som siax-doctor: den stänger det som går att stänga med en mall, och lämnar resten synligt rött.

Varför: K1-mätningen (docs/rollout/K1-ASSESSMENT-2026-08-09.md) visade att exakt tio BLOCK-kontroller saknades i samtliga tolv K1-repon. Nio av dem är ren boilerplate. Att skriva dem för hand tolv gånger är tolv chanser att avvika — därför en generator, en gång, centralt.

Användning

node src/scaffold.mjs --repo <mål>            # DRY-RUN: rapporterar planen, skriver ingenting
node src/scaffold.mjs --repo <mål> --apply    # skriver de filer som saknas
node src/scaffold.mjs --repo <mål> --json     # maskinstabil JSON (plan + todos + härledda värden)

Exit-kod är 0, utom om den genererade siax.repo.json inte validerar mot schemat — då skrivs den inte alls och exit är 1.

Vad som genereras

Kontroll Fil Not
REPO-03/04 siax.repo.json Valideras mot schema/siax.repo.schema.json innan den skrivs
DOC-06 docs/runbook/{deploy,incident,backup-restore,oncall}.md deploy.md fylls från siax.config.json om den finns
DOC-07 Stängs inte. Med flit. Se nedan
DOC-12 AGENTS.md Start-/testkommandon härleds ur package.json-skript
API-01 contracts/openapi.yaml Endast om inget kontrakt hittas någon annanstans — annars flyttförslag
CI-10 .gitea/workflows/security.yml gitleaks, Trivy, OSV-Scanner, Semgrep
CI-14 .gitea/CODEOWNERS Ägare ärvs från befintlig CODEOWNERS/deskriptor
DX-02 compose.dev.yaml Tom med TODO — hittar inte på tjänster
DX-03 .devcontainer/devcontainer.json Bild väljs efter upptäckt körtid (node/python/go/rust)
AGENT-02 prompts/000-INDEX.md Indexet listar generatorns egna öppna punkter
docs/compliance/SCAFFOLD-TODO.md Bevisliggörare: varje härlett värde med källa, varje öppen punkt

Ärlighetskontrakt

  1. AR-1 — inget skrivs över. En fil som finns och har innehåll rapporteras som skip med skäl. Bara saknade eller tomma filer skrivs. Generatorn raderar aldrig något och flyttar aldrig något.
  2. Ingen genererad fil innehåller ett påhittat faktum. Allt som inte går att härleda ur repot skrivs som TODO: / EJ BEVISAD, så att doctorn fortsätter flagga tills påståendet är sant.
  3. DOC-07 lämnas röd. Doctorn letar efter ett datum i backup-restore.md. Ett genererat datum skulle göra kontrollen grön utan att någon återställning ägt rum — en maskinellt trovärdig lögn. Mallen innehåller därför inget datum alls; den skriver EJ BEVISAD. Kontrollen stängs av en människa som faktiskt kört återställningen. Detta är testat (scaffold.test.mjs).

    Observerat i estatet (2026-08-11, EJ åtgärdat här): doctorns DOC-07 är i dag en lös datumsökning i hela filen — vilket datum som helst räcker. c0nf0rm/docs/runbook/backup-restore.md skriver ordagrant "Senast bevisad restore: ALDRIG UTFÖRD" och får ändå DOC-07 PASS, eftersom en "Senast granskad"-rad innehåller ett datum. En grön DOC-07 i ett annat repo är alltså inte bevis för en bevisad återställning. Att skärpa kontrollen hör hemma i packages/doctor och är medvetet inte gjort i denna branch.

  4. operationalState sänker aldrig kraven. Doctorn använder fältet för att avgöra om REPO-06, CD-01 och API-01 ska mätas. Har repot driftsartefakter sätts degraded — det värde som håller kontrollerna aktiva utan att påstå att tjänsten är frisk. Annars planned. Båda är märkta EJ VERIFIERADE i SCAFFOLD-TODO.md och ska rättas mot docker ps (GOV-06).
  5. appId blir null med motivering, aldrig ett påhittat ID som ser konformt ut och pekar på ingenting i CL0UD APP_REGISTRY (REPO-05).
  6. Ett genererat kontraktsskelett är märkt ofullständigt. API-01 är en ren existenskontroll och blir grön; API-02/03/04 förblir röda. Det står i filen.

API-01 — flytt före generering

Kontraktet finns redan i 8 av 12 K1-repon, men på fel sökväg. Generatorn letar i tur och ordning i contracts/, packages/contract{,s}/, roten, api/, docs/, spec/. Hittas ett kontrakt någon annanstans genereras inget — den rapporterar flytten med kommandot:

git mv packages/contract/openapi.yaml contracts/openapi.yaml

Flytten körs inte automatiskt: sökvägen kan vara refererad från bygg, kod eller CI, och det är ett per-repo-beslut.

Härledning i stället för frågor

Värde Härleds ur
reponamn befintlig siax.repo.jsongit remote.origin.url → katalognamnet
kategori/livscykel/nod befintlig siax.repo.json, annars konservativ default + TODO
domäner siax.config.jsonenvironments[].domain
children[] faktiska kataloger under apps/, packages/, services/
packageName package.jsonname (endast om den matchar schemats mönster)
codeowners befintlig .gitea/CODEOWNERS eller deskriptorns codeowners
start-/testkommandon package.jsonscripts + vilken lockfil som finns
devcontainer-bild package.json / pyproject.toml / go.mod / Cargo.toml

Tester

node test/scaffold.test.mjs    # 16 tester, exit 0

Det verkliga beviset är testet som kör siax-doctor före och efter --apply mot samma träd och jämför poängen — plus dess spegelbild, som kräver att DOC-07 fortfarande är röd efteråt.

Licens / ägare

SIAX Technology AB (@sax3l). Paketnamn @siax/scaffold.

Bidra

Se CONTRIBUTING.md i roten. Krav: kontroll-ID:n exakta enligt standard/SIAX-F0KUSREPO-PROMPT-v2.0.md, test för varje ny mall (att den skapas och att den inte skriver över), ingen ny dependency utan ADR.

Details
npm
2026-09-16 09:35:08 +00:00
0
UNLICENSED
latest
24 KiB
Assets (1)
Versions (1) View all
0.1.0 2026-09-16