## Summary This PR tightens repository quality enforcement around markdown and documentation. It adds `markdownlint` to the `cicd-checks` workflow, expands pre-commit coverage so markdown files are checked repo-wide, and cleans up the PP-58 documentation set to keep it aligned with the new policy. ## What changed - Added a `Markdownlint Check` entry to `.gitea/workflows/cicd-checks.yaml` - Added `markdownlint` to pre-commit and widened prettier coverage to include markdown files across the repo - Updated `README.md` to satisfy markdownlint line-length rules - Normalized the PP-58 documentation set: - `docs/DEPLOYABLE_RUNTIME_CONTRACT.md` - `docs/adr/ADR003-deployable_runtime_image_contract.md` - `docs/DEVELOPMENT.md` - `docs/CICD_MULTI_STAGE_BUILD.md` - `docs/CICD_TROUBLESHOOTING_GUIDE.md` - `docs/SECURE_DOCKER_CICD.md` ## Validation - `pre-commit run markdownlint --files README.md docs/DEPLOYABLE_RUNTIME_CONTRACT.md` - `pre-commit run prettier --files README.md docs/DEPLOYABLE_RUNTIME_CONTRACT.md` - Workflow YAML validation returned no errors ## Notes This change does not alter application runtime behavior. It only strengthens CI and documentation quality enforcement. Co-authored-by: copilotcoder <copilotcoder@darkhelm.org> Reviewed-on: #68
103 lines
2.7 KiB
JavaScript
103 lines
2.7 KiB
JavaScript
import typescript from '@typescript-eslint/eslint-plugin';
|
|
import typescriptParser from '@typescript-eslint/parser';
|
|
import vue from 'eslint-plugin-vue';
|
|
import vueParser from 'vue-eslint-parser';
|
|
import jsdoc from 'eslint-plugin-jsdoc';
|
|
import tsdoc from 'eslint-plugin-tsdoc';
|
|
|
|
export default [
|
|
// Ignore patterns (replaces .eslintignore)
|
|
{
|
|
ignores: [
|
|
'node_modules/',
|
|
'dist/',
|
|
'dist-ssr/',
|
|
'*.local',
|
|
'coverage/',
|
|
'.env*',
|
|
'.vscode/',
|
|
'.idea/',
|
|
'*.tmp',
|
|
'*.temp',
|
|
],
|
|
},
|
|
|
|
// JavaScript files
|
|
{
|
|
files: ['**/*.{js,mjs,cjs}'],
|
|
languageOptions: {
|
|
ecmaVersion: 'latest',
|
|
sourceType: 'module',
|
|
},
|
|
rules: {
|
|
'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
|
|
'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
|
|
},
|
|
},
|
|
|
|
// TypeScript files
|
|
{
|
|
files: ['**/*.{ts,tsx}'],
|
|
languageOptions: {
|
|
parser: typescriptParser,
|
|
ecmaVersion: 'latest',
|
|
sourceType: 'module',
|
|
},
|
|
plugins: {
|
|
'@typescript-eslint': typescript,
|
|
jsdoc,
|
|
tsdoc,
|
|
},
|
|
rules: {
|
|
'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
|
|
'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
|
|
// TSDoc rules for TypeScript files
|
|
'tsdoc/syntax': 'error',
|
|
'jsdoc/require-description': 'error',
|
|
'jsdoc/require-param': 'error',
|
|
'jsdoc/require-param-description': 'error',
|
|
'jsdoc/require-returns': 'error',
|
|
'jsdoc/require-returns-description': 'error',
|
|
'jsdoc/check-param-names': 'error',
|
|
'jsdoc/check-tag-names': 'error',
|
|
'jsdoc/check-types': 'error',
|
|
'jsdoc/valid-types': 'error',
|
|
},
|
|
},
|
|
|
|
// Vue files
|
|
{
|
|
files: ['**/*.vue'],
|
|
languageOptions: {
|
|
parser: vueParser,
|
|
parserOptions: {
|
|
parser: typescriptParser,
|
|
ecmaVersion: 'latest',
|
|
sourceType: 'module',
|
|
},
|
|
},
|
|
plugins: {
|
|
vue,
|
|
'@typescript-eslint': typescript,
|
|
jsdoc,
|
|
tsdoc,
|
|
},
|
|
rules: {
|
|
...vue.configs['vue3-essential'].rules,
|
|
'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
|
|
'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
|
|
// TSDoc rules for Vue files
|
|
'tsdoc/syntax': 'error',
|
|
'jsdoc/require-description': 'error',
|
|
'jsdoc/require-param': 'error',
|
|
'jsdoc/require-param-description': 'error',
|
|
'jsdoc/require-returns': 'error',
|
|
'jsdoc/require-returns-description': 'error',
|
|
'jsdoc/check-param-names': 'error',
|
|
'jsdoc/check-tag-names': 'error',
|
|
'jsdoc/check-types': 'error',
|
|
'jsdoc/valid-types': 'error',
|
|
},
|
|
},
|
|
];
|