Skip to content

ci(framework): mechanically enforce cross-plugin orthogonality on PRs #250

Description

@alexsoyes

Mechanically enforce the architecture rules a PR can silently break. Today they are self-attested at best, and #406 is the proof: aidd-orchestrator hardcodes aidd-dev, violating cross-plugin orthogonality, and nothing caught it.

Relationship to #406

One does not replace the other. Without this check, #406 recurs.

What to enforce

  • Cross-plugin orthogonality. No plugin references another by name. docs/ARCHITECTURE.md states the rule; nothing verifies it. A grep for aidd-<plugin>: outside its own plugin is a first approximation, but skill descriptions and routing regexes need a real check.
  • Docs match behavior. A change to a skill's actions that leaves its description and SKILL.md router table stale.

Note on the original scope

This issue was written when .github/PULL_REQUEST_TEMPLATE.md carried a checklist with "Docs updated" and "No cross-plugin references introduced". That checklist is gone: the template now certifies one thing only, that a human read every line. The rules survive in docs/ARCHITECTURE.md, unenforced — which is exactly the gap this issue fills.

Acceptance criteria

Guardrail local et CI

Un unique vérificateur d’orthogonalité est exécuté à deux niveaux :

  • Pré-commit local : Lefthook l’exécute sur les fichiers modifiés et bloque le commit avec le fichier, la ligne et le plugin propriétaire.
  • CI : validate.yml exécute les mêmes hooks sur toute l’arborescence. Elle reste l’autorité finale et bloque toute contribution ayant contourné le hook local.

Le garde-fou est un hook Git, pas un hook IA : il doit être déterministe, valable pour tous les outils et ne jamais dépendre d’un événement ou d’une configuration d’hôte IA.

Les deux niveaux vérifient les adresses inter-plugins et la cohérence entre actions, description et routeur d’un skill.

Activity

  1. changed the title [-]Automate the two mechanical 'I certify' PR checks via a Claude Code hook or CI[/-] [+]AI PR auditor: analyze each PR against the certify criteria (semantic, not regex)[/+] on Jun 6, 2026
  2. changed the title [-]AI PR auditor: analyze each PR against the certify criteria (semantic, not regex)[/-] [+]AI check that PRs actually respect the certify checklist[/+] on Jun 6, 2026
  3. changed the title [-]AI check that PRs actually respect the certify checklist[/-] [+]feat: AI check that PRs respect the certify checklist[/+] on Jun 6, 2026
  4. changed the title [-]feat: AI check that PRs respect the certify checklist[/-] [+]ci(framework): mechanically enforce cross-plugin orthogonality on PRs[/+] on Jul 10, 2026
  5. added theissue type on Jul 10, 2026
  6. removed their assignment
    on Jul 23, 2026
  7. blafourcade commented on Sep 14, 2026

    @blafourcade
    Contributor

    #406 is completed, so it must no longer block this issue and cannot remain its regression fixture.

    The enforcement mechanism also needs to follow the project decision: do not impose a Git pre-commit hook or CI gate. Use a host-native AI lifecycle hook generated by the owning hook capability.

    Keep the checks narrow: identify a hardcoded cross-plugin address or a router/description mismatch, name the file and line, and prevent the AI write until it is corrected. Use synthetic fixtures, not the historical code from #406.

    This remains a Medium Task in Todo once the obsolete blocker is removed.

  8. moved this from Todo to In Progress in AIDD Roadmapon Sep 18, 2026
  9. moved this from In Progress to In review in AIDD Roadmapon Sep 18, 2026
  10. moved this from In review to Done in AIDD Roadmapon Sep 22, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Fields

    Priority

    Medium

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions