Skip to content
This repository was archived by the owner on May 29, 2026. It is now read-only.

docs(canonical): extend fleet sync + tier policy + extras audit#55

Merged
rubenvdlinde merged 1 commit into
developmentfrom
docs/canonical-files-policy
May 23, 2026
Merged

docs(canonical): extend fleet sync + tier policy + extras audit#55
rubenvdlinde merged 1 commit into
developmentfrom
docs/canonical-files-policy

Conversation

@rubenvdlinde

Copy link
Copy Markdown
Contributor

Three deliverables to keep fleet configuration files in line and document the policy.

1. Extend sync-canonical-fleet.yml

Adds 6 more byte-for-byte canonical files alongside the existing PHP-tooling set (phpcs/phpmd/psalm/phpstan + custom sniffs):

Frontend / JS quality tooling:

  • stylelint.config.js
  • eslint.config.js
  • .prettierrc

Git / npm / Node toolchain:

  • .gitattributes
  • .npmrc
  • .nvmrc

Workflow path-triggers + header comment updated to match. Fleet sync will fire on changes to any of these going forward.

2. New: docs/canonical-files.md

User-facing policy doc explaining the 5-tier categorization:

  • Tier A strict canonical (byte-for-byte synced)
  • Tier B template-based (per-app values, same shape)
  • Tier C app-specific (never synced)
  • Tier D gitignored / should never be in repo
  • Tier E per-app extras (audit + decide)

Documents how a canonical change flows from template edit → fleet PRs, the allowed cosmetic deviations (phpcs.xml <description> + phpmd.xml ruleset name), and what's deliberately out of scope (ExApp sidecars + external repos). References ADR-033 as the authoritative architecture decision.

3. New: docs/fleet-extras-audit.md

Snapshot of every root-directory file in fleet apps that's not in this template, scored by frequency (≥6 / 3-5 / 1-2 apps) with a per-file decision: promote to template, keep app-private, move out of repo root, delete, or out of scope. Calls out per-app cleanup candidates app-by-app.

Drift baseline from the audit

File Apps with file Drifted from template
phpcs.xml 21/22 20
phpmd.xml 20/22 19
psalm.xml 21/22 21 (zero matches)
eslint.config.js 14/22 14 (zero matches)
phpstan.neon 16/22 13
phpunit.xml 16/22 12
stylelint.config.js 17/22 9

The agent's recent chore: sync canonical root configs PR series (deskdesk#33, decidesk#243, shillinq#300) is the in-flight rollout that closes this drift. The doc captures the policy that work follows.

Heaviest cleanup target

softwarecatalog has ~30 root-scratch files (debug PHP scripts, test shell scripts, AMEF/ArchiMate work-notes). Detailed list in the audit doc — recommended path is move to scripts/dev/ and docs/notes/, not delete.

Three deliverables:

1. **Extends `sync-canonical-fleet.yml`** to add 6 more byte-for-byte
   canonical files alongside the existing PHP-tooling set (phpcs/phpmd/
   psalm/phpstan + custom sniffs):

   Frontend / JS quality tooling
     - stylelint.config.js
     - eslint.config.js
     - .prettierrc

   Git / npm / Node toolchain
     - .gitattributes
     - .npmrc
     - .nvmrc

   Workflow path-triggers + header comment updated to match. Fleet
   sync will fire on changes to any of these going forward.

2. **`docs/canonical-files.md`** — user-facing policy doc explaining
   the 5-tier categorization (strict canonical, template-based,
   app-specific, gitignored, per-app extras), how a canonical change
   flows from edit → fleet PRs, and what's deliberately out of scope
   (ExApp sidecars + external repos). References ADR-033 as the
   authoritative architecture decision.

3. **`docs/fleet-extras-audit.md`** — snapshot of every root-directory
   file in fleet apps that's NOT in this template, scored by frequency
   (≥6 / 3-5 / 1-2 apps) with a per-file decision: promote to template,
   keep app-private, move out of repo root, delete, or out of scope.
   Calls out the per-app cleanup candidates app-by-app (softwarecatalog
   is the heavy hitter with ~30 root scratch files).

Drift baseline from the audit:
  - phpcs.xml: 20/21 apps drifted from template
  - phpmd.xml: 19/20 drifted
  - psalm.xml: 21/21 ALL drifted (zero matches)
  - eslint.config.js: 14/14 ALL drifted
  - phpstan.neon: 13/16 drifted
  - phpunit.xml: 12/16 drifted

The agent's recent `chore: sync canonical root configs` PR series
(deskdesk#33, decidesk#243, shillinq#300) is the in-flight rollout
that closes this drift. The doc captures the policy that work follows.
@rubenvdlinde rubenvdlinde merged commit 4566d6a into development May 23, 2026
2 of 15 checks passed
@rubenvdlinde rubenvdlinde deleted the docs/canonical-files-policy branch May 23, 2026 06:23
@github-actions

Copy link
Copy Markdown
Contributor

Quality Report — ConductionNL/nextcloud-app-template @ f3acbe6

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
composer
npm ❌ 2/684 denied
PHPUnit ⏭️
Newman ⏭️
Playwright ⏭️

❌ Denied npm licenses

Package Version License
pako 1.0.11 (MIT AND Zlib)
sha.js 2.4.12 (MIT AND BSD-3-Clause)

Quality workflow — 2026-05-23 06:24 UTC

Download the full PDF report from the workflow artifacts.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant