Repository navigation
docs(adr): accept installable parser-fork packaging - #798
Conversation
Draft ADR-0041 as PROPOSED, keep accepted fork history unchanged, and make source-owned parser guidance independent of the import namespace. Register the advisory decision and knowledge disposition, with their generated indexes. Refs #795
ss-o
left a comment
There was a problem hiding this comment.
Fallback review under ADR-0026: maintainer elected, no Copilot request on a78af80
Findings
No actionable findings in the complete six-file diff against main at 4501d90. This is a class-4 documentation, inventory and generated-index change, not a parser implementation or ADR acceptance.
Note
This is the maintainer-elected author-side review of record, not an independent approval or permission to merge. ADR-0041 remains PROPOSED. Acceptance, source PR 699, consumer delivery and release remain separate outcomes.
Checklist verdicts
- Scope and traceability: pass. The diff meets issue 795's scoped proposal and source-guidance deliverable, and the closing reference names only that issue. The generator prerequisite 797 is already merged. Exactly six paths change; no Go code, dependency selection, workflow or project pin changes here.
- Architectural consistency: pass. ADR-0041 says "If accepted", has Deciders TBD and Supersedes None, and refines only ADR-0030 decision 2's module-packaging clause. Accepted ADR-0030 is byte-identical to main. The retained location, BSD-3-Clause provenance, LangZsh isolation and ADR-0023 parser/corpus/adapter gates are preserved. The record distinguishes a successful commit installation from a future class-2 release reaching latest.
- Guidance compatibility: pass by source inspection. The namespace-neutral sentence resolves the import prefix from the target revision rather than imposing the proposed layout. The captured 7ff05091 project retains the nested fork module; tested implementation f1c43fac retains FORK.md while using the root module. Both satisfy the new wording. Existing selectors, captured provenance, generated project instructions and approved delivery records are unchanged.
- Ownership and routing: pass. The new decision is advisory and non-required with no canonical binding. Manifest and knowledge inventory each add exactly one record; existing records remain equal. Generation preserves the six frozen hashes. Existing resource-table cells and links are unchanged after removing the one new decision row and normalizing padding. The decision-index entry matches PROPOSED status.
- Security and compatibility: pass for this diff. No executable entrypoint, secret, permission, network activity, installation hook or minimum runtime changes. Source links, paths and examples are consistent; hosted links-check passes. Parser behavior and licensing remain proposed constraints, not new behavior introduced by this documentation change.
- Verification: pass. All 338 local unit tests and 15 recorded validation checks pass, covering coverage/delivery/decisions, policy/routing/approved-source/Zsh validators, Trunk and whitespace. Separate generator fixed-point runs also pass. All 12 current-head hosted checks pass, including the four required policy contexts, Agent Instruction Validation, Org Routing, links and CodeQL. A separate read-only review of the same head found no actionable defects and also passed the decision-record check.
Limits and follow-up
The separate review did not run the full suite, Trunk or inventory validators; those are covered by the checks above. This review does not rerun the source PR's Go install or corpora and does not claim a mutation score: its import-only mutation evidence remains unsupported and inconclusive. Downstream source approval, compatibility-backed instruction delivery and manual runtime adoption are not exercised or activated here. GitHub Markdown preview is checked, but desktop and narrow-width browser rendering are not exercised.
The remaining maintainer decision belongs to issue 795: whether to accept the proposed packaging refinement. Source issue 653 and PR 699 retain implementation/release follow-through; no source merge or release is implied by this review.
Record maintainer acceptance of ADR-0041, preserving ADR-0030 history and the separate implementation, release and consumer-delivery boundaries. Regenerate the decision index and resource inventory. Keep advisory discovery consistent with accepted ADR-0039 and ADR-0040. Refs #795
Integrate the independently landed formatter-only test prerequisite from main before verifying the combined ADR acceptance tree. Preserve the reviewed policy contents and consumer pins. Refs #795
Integrate the independently merged fixture maintenance regression fix before final combined-tree qualification. Preserve the already reviewed ADR acceptance and source-guidance bytes. Refs #795
ss-o
left a comment
There was a problem hiding this comment.
Fallback review under ADR-0026: maintainer elected, no Copilot request on 65b9d24
Findings
No actionable findings in the complete six-file policy diff against main 9888890. This current-head review supersedes the proposal-only review on a78af80. It includes the acceptance delta and the combined tree after independently merged routing-fixture maintenance work.
Note
This is an author-side review of record, not independent human approval. The maintainer separately authorized ADR-0041 acceptance and this PR's gated squash merge. No source PR 699 merge, instruction-delivery implementation or release follows from this review.
Checklist verdicts
- Authority and scope: pass. Maintainer acceptance is recorded as ACCEPTED and Deciders ss-o, with effect on main under the ADR procedure. Only ADR-0030 decision 2's packaging clause is refined. Its accepted history, fork location, BSD-3-Clause provenance, LangZsh, upstream tests and parser/corpus/adapter gates remain unchanged. Supersedes None is retained for this partial refinement, not a whole-ADR replacement.
- Ownership and compatibility: pass. Namespace-neutral source guidance remains compatible with the captured nested-module and tested root-module layouts. The advisory/non-required manifest discovery matches accepted ADR-0039 and ADR-0040. Both delivery JSON files, all consumer pins and the generated project instruction remain unchanged. The decision index and resource purpose identify the accepted record; existing resource cells/links are preserved except its new row and padding.
- Base integration: pass. Main advanced through formatter-only PR 799 and fixture-maintenance repair PR 800 during verification. Their signed integrations change no policy-file bytes relative to the separately reviewed e53bb25 acceptance commit. The formatter's import set and ordered non-import AST were compared directly; the maintenance helper/regression was inspected. The final combined tree, not merely the old branch base, was tested. Only the same six owned policy files differ from current main.
- Verification: pass. All 339 local unit tests and 15 recorded validation checks pass on this head, with generator fixed points and frozen hashes. The extra test is the independently merged fixture-maintenance regression, not a parser test. All 12 current-head hosted checks pass, including the four required policy contexts, Agent Instruction Validation, Org Routing, links and CodeQL. Commit signing is verified.
- Review disposition: no blocking finding. Separate full-proposal scrutiny and acceptance-delta scrutiny found no actionable defects. The latter covered e53bb25; its six policy-file contents are byte-identical here. Its minor reference-wording suggestion was checked against issue 795's actual proposal title: the phrase identifies that originating proposal request, not the ADR's current status, so it remains accurate and unchanged.
- Security and behavior: pass for this scope. No production code, dependency choice, workflow permission, runtime entrypoint, grammar or lint rule changes. No private evidence or credentials are published. The install and unchanged-corpus evidence remains on source PR 699; this review does not rerun or claim a parser improvement.
Limits and follow-up
The separate reviewers did not run the full suite or Trunk; those checks were executed on the final combined tree above. Source mutation evidence remains unsupported and inconclusive, with zero timeouts, not a score. Consumer approval, compatibility-backed delivery, manual runtime adoption and v1.5.0 remain separate steps. GitHub Markdown preview is checked; desktop/narrow browser rendering is not exercised. Review threads and comments were checked before publication; no unresolved finding is carried forward.
Summary
Record maintainer acceptance of ADR-0041, refining only ADR-0030 decision 2's module-packaging clause. Retain the in-repository mvdan/sh fork and its location, BSD-3-Clause provenance, LangZsh isolation, upstream-test obligations and parser/corpus gates. Compile the retained fork as root-module packages, avoiding the nested module and local replacement that block versioned CLI installation.
Closes #795. The maintainer selected acceptance and a checked, freshly reviewed squash merge of this PR. ADR-0041 records ACCEPTED and Deciders ss-o; acceptance takes effect on main. Supersedes remains None because this is a partial refinement, not replacement of the whole historical ADR. Accepted ADR-0030 and every other historical decision are unchanged. Source PR 699, consumer delivery and release remain separate outcomes.
Correct the organization-owned parser guidance without imposing an import prefix on historical consumers: describe the retained fork's syntax package and resolve the prefix from the target project's module layout and FORK.md. The captured project revision, quoted applyTo selector and all parser invariants stay unchanged. No project-delivery revision, generated project instruction, consumer pin or parent pin advances here.
The prerequisite #797 is merged and verified on main at 4501d90. This PR preserves the proposal and records acceptance in a separate signed commit. Later signed merges integrate the independently landed routing-fixture formatting and maintenance repair from PRs 799 and 800, through main 9888890. The formatter prerequisite preserves imports and ordered non-import AST; the repair keeps fixture maintenance attached and adds its regression. All six policy-file hashes still equal the separately reviewed acceptance commit. Against that current main, the diff contains six files. The tooling resource page adds one referenced decision record and repads existing rows without changing their cells or links.
Instruction impact review
Verification
Agent handoff
Status: merged as signature-verified d8edc83, with tree identical to reviewed head 65b9d24. All five workflows on the merged SHA pass. Issue 795 and this PR are Done in Project 28; ADR-0041 is accepted on main. The configured remote topic-branch deletion occurred; local worktrees are retained. The maintainer authorized only this PR's acceptance and squash merge after fresh checks/review. Source PR 699 remains unmerged. Compatibility-backed instruction delivery, v1.5.0 and its rollout are not completed or authorized by this policy integration.