Skip to content

build(dist): export-ignore Issue #32 raw results from package archives (Ref #60, #37) - #62

Merged
megyptm merged 3 commits into
mainfrom
build/60-dist-export-ignore-study-results
Oct 21, 2026
Merged

megyptm merged 3 commits into
mainfrom
build/60-dist-export-ignore-study-results

Conversation

@megyptm

@megyptm megyptm commented Oct 21, 2026 •

Copy link
Copy Markdown
Collaborator

Ref #60, Ref #37. Implements the Lead-approved Option B from Issue #60. No version, tag, merge or release is claimed or authorized.

Identity

  • Base SHA: e4aba2043fe0956d7097621d22dfb23e4efbbcfa (origin/main)
  • HEAD SHA: 66c7e6772ecc1b49346eb11087ec0f6ce1c6d8ab (3 commits: 5908dae → 918c199 → 66c7e67)
  • Tree SHA: ea0c947118c6e7754a4d60107b0b6b6784edd097

Review round 2 (F62-R2-01) — new commit 66c7e67, no amend/force-push

The note (all five docs, 5 lines changed) now separates: (1) historical results/ data is browsable at the pinned link; (2) reading/re-analysing it locally needs those files from a full Git checkout or an independent download; (3) commands that start a new run write their own fresh results directory and do not need the excluded historical files (environment, dependency and write-permission requirements still apply). No claim that any archive setup is necessarily runnable.

Review round 1 (F62-01, F62-02) — new commit 918c199, no amend/force-push

  • F62-01: the note in all five study docs no longer claims relative results/... links need a checkout. It now says they work in GitHub's web view and in a full Git checkout but are dead in a --prefer-dist install or any extracted archive, and that commands reading/writing raw data need a full checkout (or an independent copy of results/). The pinned permalink (tree at base SHA) returns HTTP 200.
  • F62-02: README.md sentence "It is not part of the package" → "It is not production runtime or public API, and it does not change package runtime or consumer contracts"; the rest of the sentence (no src//tests/composer.json/public docs change, no Retry feature) is unchanged.
  • .gitattributes unchanged (one approved line); cumulative diff vs base: 6 files, +12/−1.

Change (cumulative)

  • Root .gitattributes: /docs/studies/issue-32-retry-comparison/results/ export-ignore only.
  • Distribution note under the H1 of README.md, REPORT.md, ISSUE-42-REPORT.md, METHODOLOGY.md, ISSUE-42-PLAN.md (issue-32 study) + the F62-02 sentence fix in README.md.
  • No change to src/, runtime, tests, CI, composer.json; no evidence deleted from Git.

Link audit

  • README, PERSISTENCE_PACKAGE_REFERENCE.md, CHANGELOG, ADRs, guides, architecture: no link into the excluded results/ (they link only to study reports, which are kept).
  • Retained issue-32 study docs reference results/ heavily (README table, REPORT, ISSUE-42-REPORT, METHODOLOGY, PLAN): now covered by the distribution note above. The issue-47/issue-48 studies keep their own results/ (not ignored) so their links stay valid.

RED / GREEN: real GitHub zipball (Composer --prefer-dist, clean consumer, vcs repo, no tag)

zip bytes files
RED: main@e4aba20 9,806,666 1,183
GREEN: this branch @66c7e67 (…/zipball/66c7e6772ecc1b49346eb11087ec0f6ce1c6d8ab) 608,810 (0.58 MiB) 247
reference: v1.4.0@fc1459b 267,589 106
  • Zipball of final HEAD vs previous zipball (918c199): identical file set (247); only the five notes' docs differ (verified with diff -rq on the extracted zips); 608,262 → 608,810 B. The retained study docs inside the installed vendor/ copy contain the corrected note (5/5 checked); results/ absent, matching the note.
  • Diff vs main zipball: exactly 937 files removed, all under docs/studies/issue-32-retry-comparison/results/; 1 added (.gitattributes); 0 other removals.
  • docs/studies/issue-32-retry-comparison/results/** count in the zipball: 0.
  • Present: src (26), composer.json, LICENSE, README.md, PERSISTENCE_PACKAGE_REFERENCE.md, CHANGELOG.md, docs/guides (2), docs/adr (6), docs/architecture (5), examples (12), schema (1), tests (80), the issue-32 reports, and issue-47/issue-48 results/ (16/14 files).
  • Supplemental: git archive 591,356 B; composer archive from a clean clone of the branch 574,992 B (0 ignored files). (composer archive from this git worktree with an untracked vendor/ produced 33 MB; that is a worktree/.git-file artifact of the scratch location, not of the change, and not a distribution path.)

Gates (real MySQL 8.4.10 docker, CI credentials, --log-bin-trust-function-creators=1 verified 1; container removed afterwards)

Re-run on the final HEAD (MySQL 8.4.10 container removed afterwards). On the branch tree: composer validate --strict ✔ · dump-autoload --optimize --strict-psr ✔ · check-platform-reqs ✔ · composer audit --abandoned=fail ✔ (no advisories) · composer analyse (phpstan max) ✔ no errors · php-cs-fixer --dry-run ✔ 0/100 · composer test (unit+regression+integration) ✔ OK 665 tests, 4817 assertions · composer test:consumer ✔ two clean runs · git diff --check ✔.

On the stripped tree (extracted git archive of HEAD, results/ absent): composer test ✔ OK 665 tests, 4814 assertions · composer test:consumer (external Consumer Verification Harness, two clean runs) ✔.

Not run locally: actionlint (no workflow change); lowest-dependency matrix (CI will run it).

Draft; awaiting the Technical Lead's independent review. Full study: #60 comment.

🤖 Generated with Claude Code

#60)

Ref #60, #37. Adds root .gitattributes with the approved Option B rule and
a distribution note in the retained Issue #32/#42 study documents. Evidence
stays in Git; no runtime, test, CI or composer.json change.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>

megyptm commented Oct 21, 2026

Copy link
Copy Markdown
Collaborator Author

Technical Lead — Complete Independent PR #62 Review — CHANGES REQUIRED (2026-10-21)

Pinned: Base e4aba2043fe0956d7097621d22dfb23e4efbbcfa; HEAD 5908daee92ee5033bc29b60cf2aa5b18e42e3b6a; Tree e81e2a343d3ad3ae1ffce7f4f6c3efb9e3e3e922; 1 commit; 6 files, +11/-0 lines. Reviewed the complete 6-file diff, surrounding study-document contexts, AGENTS.md, the exact current VALID pinned adoption 44c8827095ab4007c355aa21c56b853f3b49d795, and applicable Composer Package Standard §§19.4/26/27 and workflow rules. GitHub compare confirms the exact changed-path set, no src/, tests, CI, Composer or adoption changes; the HEAD full Git tree still contains all 937 raw-result blobs (therefore not deleted from source history). The export-ignore rule exactly matches the Owner-approved Option B.

Verified CI: run 39646174513 on the exact HEAD has 10/10 jobs completed SUCCESS, including MySQL Integration 8.2/8.5, Lowest dependencies, Quality, Unit/Regression 8.2–8.5, Workflow lint and CI Gate. Executor also supplies actual external GitHub/Composer ZIP measurements on this SHA: 9,806,666 B / 1,183 files baseline → 607,793 B / 247 files candidate; change in file set reconciles arithmetically to 937 excluded results + 1 new .gitattributes. The Lead independently checked Git tree/CI/diff and the inventory arithmetic; not a claim that the Lead downloaded/re-ran the binary ZIP or local MySQL tests. The executor's two clean Consumer Harness runs and stripped-tree tests remain the provided execution evidence.

Verdict: CHANGES REQUIRED / NO MERGE GO. Packaging rule, preservation and measurements are consistent with the approved design; I found two wording defects, to be fixed together once on the existing Draft PR, without changing .gitattributes:

F62-01 — inaccurate claim in all five newly added distribution notes

Each note says: “Relative results/... links and commands in this document resolve only in a Git checkout.” This is inaccurate for the links: relative Markdown links to the committed results also resolve in GitHub's repository web view (and users can browse the pinned source URL given immediately before); they only fail in extracted Composer/GitHub distribution archives, which intentionally exclude those results. Local commands requiring raw files do need a full checkout (or otherwise an independently obtained copy of raw data). Distinguish these cases. Correct the identical note in all five modified study docs, e.g. explain that raw results can be browsed on GitHub or used from a full source checkout, but are missing from composer --prefer-dist/archive installations. Don't claim every relative link needs a checkout.

F62-02 — existing contradictory package-distribution description in touched README

docs/studies/issue-32-retry-comparison/README.md:5–7 currently says “Study-only material ... It is not part of the package,” even though this README, reports, harness and other study files are intentionally present in the real distribution under Option B; only results/ is excluded. This wording conflicts with the newly added note and the verified ZIP inventory. Fix this sentence minimally to mean “not production Runtime/API; did not change package Runtime/consumer contracts”, not “absent from the packaged archive.” Preserve the historical statement that the study itself did not implement the runtime feature; don't rewrite historic study evidence.

Consolidated remediation / acceptance

  • Fix F62-01 and F62-02 together, retaining exact one-line .gitattributes rule, all 937 blobs in Git, and the intentionally retained studies/reports/harness. Do not broaden to exclude all studies or modify runtime/CI/tests/Composer.
  • Recheck all five notes for coherent GitHub web-view vs ZIP/installed vendor vs full Git checkout semantics; verify pinned stable results/ permalink still works.
  • Supply revised exact HEAD/Tree, updated review evidence and successful applicable gates on the final commit; rerun binary ZIP membership measurement (size need not change because prose only), maintain clean external Composer consumer and Consumer Harness checks. New commit only, no amend / force-push. Leave Draft; do not merge.
  • After all fixes I will conduct a Fresh Full Re-Review of the entire cumulative build(dist): export-ignore Issue #32 raw results from package archives (Ref #60, #37) #62 diff, not merely check these lines, before proposing MERGE GO to the Owner. No workflow flowchart needed for this packaging-rule-only change.

#61's separate documentation corrections are already in progress independently; neither workstream requires waiting for the other. No Tag/Release authorized.

…p wording (F62-01, F62-02) (#60)

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>

megyptm commented Oct 21, 2026

Copy link
Copy Markdown
Collaborator Author

Technical Lead — Fresh Full Re-Review #2 of the entire cumulative PR #62 (2026-10-21)

Exact review boundary: Base e4aba2043fe0956d7097621d22dfb23e4efbbcfa (also current main); HEAD 918c19926dab6bb1bbf5af8e72cf1cee749a2a1b; Tree 4269f9496d00a3efa13b73d2d562f3b0aa35845a; two regular commits, six files, +12/−1. Reviewed the entire cumulative file diff, the full affected study README, relevant commands in run-all.sh, the notes/contexts of all other four study documents, AGENTS.md, current VALID Pinned Adoption 44c8827095ab4007c355aa21c56b853f3b49d795, and relevant Composer Package Standard distribution provisions (§19.4 and §26). All 937 excluded raw-result blobs remain in the Git tree; root .gitattributes still contains exactly the approved one-line Option B rule. No runtime, tests, workflow, Composer metadata, adoption, release or API modifications.

Exact-head GitHub CI: run 39647707280 completed 10/10 SUCCESS: Workflow lint, Quality, Lowest dependencies, four Unit/Regression PHP minors (8.2–8.5), two MySQL 8.4.10 Integration jobs (8.2/8.5), and CI Gate. Executor-reported actual final GitHub zipball is 608,262 bytes / 247 files, baseline 9,806,666 bytes / 1,183 files, precisely the 937 raw result files absent and the root attributes file present. Executed checks/ZIP metrics are from the executor; I independently checked GitHub source, tree/CI, diff and consistency, not a fresh binary ZIP download or local test rerun.

Prior F62-01/F62-02: addressed — relative historical-result web links are distinguished from absent dist files, and the study README no longer falsely says the entire study is not in the distributed package.

Verdict: CHANGES REQUIRED / NO MERGE GO, for one remaining release-facing accuracy defect in the changed note, verified across all 5 documents:

F62-R2-01 — the corrected note now overstates prerequisites for NEW result generation (required)

Each newly added distribution note says, verbatim:

“Commands in this document that read or write raw data need a full Git checkout (or an independently obtained copy of results/).”

That is true for reading/re-analysing the already-committed historical results but not for generating new results. In the same retained docs/studies/issue-32-retry-comparison/README.md, documented run-all.sh ../results/rerun ... and QUIET_GATE=off ./run-all.sh ../results/smoke smoke explicitly write a new fresh results directory, and source run-all.sh:2–18 performs mkdir -p "$OUT" for the specified new output directory. The existing raw results/ contents are not an input prerequisite for those new runs; study harness/scripts are retained in the archive. An extracted dist archive might be usable to re-run the harness when its external environment and write permissions are configured; a full checkout is a practical recommendation, not a universal technical necessity. The new text therefore replaces the previous overclaim (“links only work in checkout”) with another absolute overclaim.

Single targeted correction across the same five notes: distinguish (1) historic results/... links/data are missing in the dist ZIP and can be browsed at the provided exact pinned GitHub permalink, (2) reading/re-analyzing historic raw outputs requires those outputs from a full checkout or independent download, and (3) new-run commands create their own fresh result directory and do not require the pre-existing excluded result files. Do not promise that any archive setup is necessarily runnable; environment, dependencies and write permissions still apply.

No changes to .gitattributes, scope, filenames, study evidence, Runtime, tests, CI or repository standards. Make this one small consolidated correction commit without amend/force-push, update the PR description, confirm the final ZIP membership / Consumer Harness / applicable checks, and deliver exact HEAD/Tree. Remain Draft, do not merge. The Lead will perform the mandatory Fresh Full Re-Review of the final cumulative PR state before a MERGE GO recommendation.

No new issue needed; this finding is fully within #60. #61 proceeds independently.

…dies in the results/ note (F62-R2-01) (#60)

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>

megyptm commented Oct 21, 2026

Copy link
Copy Markdown
Collaborator Author

Technical Lead — Fresh Full Re-Review #3, final cumulative PR #62 — MERGE GO (explicit Owner approval required)

Exact immutable review: original Base e4aba2043fe0956d7097621d22dfb23e4efbbcfa; PR HEAD 66c7e6772ecc1b49346eb11087ec0f6ce1c6d8ab; Tree ea0c947118c6e7754a4d60107b0b6b6784edd097; three linear commits; six changed files (+12/−1). Current main b3ec9188deca4e6ffaece6e1ab9405949980eec6 is one independent, already-merged #61 squash commit ahead of #62's original merge-base. GitHub reports mergeable=true. The merged #61 changes six different files, with zero overlapping paths (independently checked both compare inventories). No forced rebase or branch synchronization is required merely due to being behind main. Reassess if branches move or a real conflict appears before merge.

Scope and complete re-review: independently inspected all six cumulative file patches, all five retained study documents' corrected distribution notes and nearby reproduction commands, the root .gitattributes, #60 decision/evidence, run-all.sh, AGENTS.md, VALID pinned adoption 44c8827095ab4007c355aa21c56b853f3b49d795 and applicable Composer Package Standard, especially §26 archive preservation/consumer-install rules. No Runtime, public API, Composer identity, scripts, tests, CI, SQL or standards pin modifications.

Findings — all CLOSED on the cumulative state:

  • F62-01: docs correctly distinguish links into raw results/ on GitHub/full source checkout from absent raw files in composer --prefer-dist/extracted distribution archives.
  • F62-02: study README no longer wrongly asserts that the entire study is absent from the package; it distinguishes non-runtime research content from consumer API/contracts.
  • F62-R2-01: all five corrected notes distinguish access/reanalysis of historical raw results (obtain the raw files) from a new run that creates its own output directory (does not depend on historical files; still needs environment/dependencies/permissions). Verified against the actual retained run-all.sh mkdir -p "$OUT" behavior and study README.

Distribution: the sole rule remains exactly /docs/studies/issue-32-retry-comparison/results/ export-ignore. All 937 raw-result blobs remain tracked in the final PR Git Tree; they are intentionally omitted only from the distributed archive. Required src/, composer metadata, LICENSE, README, Reference, changelog, guides, ADRs, examples, tests and other studies are unaffected by the Git diff. Executor supplied genuine exact-HEAD GitHub zipball comparison, main@e4aba20 baseline 9,806,666 B / 1,183 files → final HEAD 608,810 B / 247 files, with precisely 937 raw files excluded and one .gitattributes added, plus clean external Consumer Verification Harness executed twice and stripped-archive verification. I independently cross-checked the files/trees, exclusion rule and reported ZIP inventory arithmetic; I did not independently fetch the binary ZIP or re-run the local MySQL/consumer tests.

Exact-head GitHub verification: Actions run 39650517995 completed SUCCESS, 10/10 jobs — Workflow lint, Quality, Lowest Dependencies, four Unit/Regression PHP versions (8.2–8.5), MySQL Integration on PHP 8.2/8.5, and CI Gate.

PR metadata correction, not a source change: independently corrected the stale literal …/zipball/918c199… in the PR description's final-head table to …/zipball/66c7e6772ecc1b49346eb11087ec0f6ce1c6d8ab, avoiding a misleading verification referent. HEAD and Tree were not changed.

Decision: MERGE GO for the exact HEAD/Tree above only, pending explicit Owner merge approval. This is not a version, tag or release authorization; leave #37 open. After Owner-authorized squash merge, reconcile merge SHA, resultant tree, actual main, #60 close status, #37 tracker and remote branch cleanup. No Mermaid flowchart needed just for a one-line export rule and distribution prose, since it adds no runtime control flow.

@megyptm
megyptm marked this pull request as ready for review October 21, 2026 18:28
@megyptm
megyptm merged commit aaafab6 into main Oct 21, 2026
10 checks passed
@megyptm
megyptm deleted the build/60-dist-export-ignore-study-results branch October 21, 2026 18:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant