Repository navigation
[initiative]: Deliver clean portable Zsh plugin architecture #556
Description
Outcome
Publish and enforce a clean, portable Zsh Plugin Standard that gives plugin
authors one maintainable set of rules for repository layout, configuration,
namespaces, public shell surface, loading, and exact lifecycle ownership.
When complete, maintained z-shell plugins use the same portable contract. The
contract contains no legacy compatibility mode for shared Plugins state,
scattered public configuration parameters, generic persistent functions, or
unowned load-time effects.
Context
The current public standard is strong on plugin-manager interoperability and
Zsh semantics, but it does not completely define the architectural decisions
that make a multi-plugin ecosystem predictable to users and contributors.
Current organization templates, static analysis, runtime tests, and active
plugin implementations therefore permit different configuration and state
shapes despite sharing a namespace rule.
This initiative coordinates the public standard, static and runtime
enforcement, organization scaffolding, and the first conforming plugin
implementation without creating a private z-shell-only technical standard.
Expected deliverables
z-shell/wiki: publish the revised portable standard through the active H2
review issue.z-shell/zsh-lint: enforce high-confidence static project-contract rules.z-shell/zunit: provide reusable runtime lifecycle assertions.z-shell/.github: adopt the contract in policy, templates, review guidance,
routing, and CI requirements.z-shell/zsh-fancy-completions: make PR build(deps): bump github/codeql-action from 2.1.32 to 2.1.33 #62 the clean-break pilot with
namespacedzstyleconfiguration and exact ownership restoration.- Maintained plugin repositories: migrate through separately owned issues and
pull requests after the pilot proves the contract.
Dependencies and risks
The public standard decision blocks enforcement design. Released static and
runtime tooling blocks organization-required pins and the pilot migration.
Organization adoption blocks the wider repository rollout.
Risks include false-positive static rules, lifecycle observers that mutate the
shell while taking snapshots, and over-standardizing implementation details
that do not affect interoperability. Each rule therefore needs official Zsh
evidence, deterministic fixtures, and an explicit portable rationale.
Completion criteria
- The canonical public standard defines the complete portable contract.
- Static and runtime enforcement are released and immutably pinned.
- Organization templates produce a conforming plugin without cleanup.
- PR build(deps): bump github/codeql-action from 2.1.32 to 2.1.33 #62 passes the new contract with no legacy compatibility surface.
- Every maintained plugin has migrated or has an explicit tracked blocker.
- Required deliverables are complete or explicitly descoped.
Metadata
Metadata
Assignees
Labels
Type
Projects
- StatusShow more project fieldsIn Progress
Activity
ss-o commentedon Aug 28, 2026
Implementation checkpoint
Status: Implementation published; release and adoption sequence remains blocked.
The standard now separates manager-independent portable rules from optional loader interfaces. Its portable-core validator rejects
PMSPEC,ZPFX,zsh_loaded_plugins, and@zsh-plugin-*dependencies inside the core contract.The pilot removes shared
Pluginsstate, publicZFC_*configuration parameters, legacy feature mapping, and alternate public namespaces. It configures through:zfc:config, uses thezfcidentifier, and proves the exact load and ownership-aware unload surface with the new ZUnit assertions.No tool release, merge, organization-policy acceptance, or pilot pin update has been performed. The required order remains:
Zi automatic unload currently derives the callback name from the repository basename, which does not match a shorter portable identifier such as
zfc. The pilot does not add a second compatibility namespace. A Zi manager-profile improvement is a separate scope decision.ss-o commentedon Aug 29, 2026
Delivery update
v1.2.0is published from33bce8041faa1395455562c5a558a063ccdcc441.v0.8.2ispublished from
15061c83373be80b523988121b7ba12c6b2d82dcafter the exact-tagnative suite passed.
hosted checks pass on
35db0d0780597ec191c1b8eced2d88ab8da24748.Review.
The organization adoption PR #558 can now replace any prerelease tool pins with
these released commit SHAs. The plugin PR remains a separate maintainer review
and merge action.