Files
KNELContracts/README.md
T
tsgstaff-coo-svpknel 2bd0eea138
lint / markdownlint (blocking) (pull_request) Canceled after 0s
lint / typos spell-check (blocking) (pull_request) Canceled after 0s
lint / vale prose (advisory) (pull_request) Canceled after 0s
lint / lychee link-check (advisory) (pull_request) Canceled after 0s
v0.1: Grav-only repo + CI lint + branch-preview architecture
Pipeline fully retired: src/, contract-inputs/, service-csv/ deleted;
their content is fully superseded by grav/user/pages (verified section
by section). New: gitea actions lint workflow (markdownlint + typos
blocking, vale prose + lychee links advisory), lint configs, README
documents the branch/PR model, docs/branch-previews.md is the LAMP +
wildcard + Git Sync runbook for <branch>.contract.knownelement.com.
Blocking checks verified green before push (pinned containers).

Ticket: https://projects.knownelement.com/issues/924
2026-09-09 12:46:07 -05:00

2.8 KiB

KNELContracts

Public services contract (template) of Known Element Enterprises LLC (management company of Turnkey Network Systems LLC) for the support services it provides to Turnkey Network Systems LLC and the component/series LLCs under it.

Each individual LLC (and Turnkey Network Systems LLC itself) will have a private fork with a filled-out, executed copy of this contract (and the operating agreement). The only permitted alterations in a fork are the ones listed on the home page of the contract.

Work is tracked on Redmine: https://projects.knownelement.com/issues/924

Repository layout (Grav-native)

The repository IS the website content. There is no render pipeline — no shell scripts, no mdbook, no templating. The Grav CMS renders it.

  • grav/user/pages/ — contract content (home, services, terms, sign, execution)
  • grav/user/themes/knel-contract/ — site theme, including the e-signature form page (targets the KNEL DocuSeal instance via the KNEL APISIX gateway; endpoints live in grav/user/themes/knel-contract/knel-contract.yaml so forks can retarget them)

Sites

  • Release: https://contract.knownelement.com
  • Branch previews: https://<branch>.contract.knownelement.com — one Grav install per branch, kept in sync by the Grav Git Sync plugin. See docs/branch-previews.md. (Branch names are lowercased and non-alphanumeric characters become - to form the hostname.)

Branching and pull requests

  • mainprotected release branch. Changes land ONLY via pull request; direct pushes are blocked by branch protection. Merging a PR to main is a human decision.
  • v0.1 — integration branch for the v0.1 contract stream (deployed content tracks this).
  • Feature work happens on feature/<topic> branches, PR'd into v0.1. Releases are PR'd from v0.1 into main.

CI (lint on every PR)

Gitea Actions runs on every PR and on pushes to main/v0.1 (.gitea/workflows/lint.yaml):

check tool blocking?
markdown lint markdownlint-cli 0.41.0 yes
spell check typos v1.50.1 yes
prose lint vale v3.20.0 (proselint style) no (advisory for now)
link check lychee v0.20.0 no (advisory for now)

The goal: by the time a PR reaches a human reviewer, spelling, markdown structure, prose quality, and link health have already been machine-checked. Advisory checks graduate to blocking once their findings on the existing content are triaged.

An act_runner must be registered on this repo (or the KNEL org) for the workflow to execute.

Deploys

Production deploys to contract.knownelement.com are production changes: a GLPI CR is filed first, then the Grav content is synced into the app (see docs/branch-previews.md for the LAMP/wildcard migration runbook).