Skip to content

test: make the publish-trimmed harness an enforceable CI gate (TRIM-004) - #68

Merged
keithdv merged 4 commits into
mainfrom
TRIM-004-harness-ci-gate
Jul 6, 2026
Merged

test: make the publish-trimmed harness an enforceable CI gate (TRIM-004)#68
keithdv merged 4 commits into
mainfrom
TRIM-004-harness-ci-gate

Conversation

@keithdv

@keithdv keithdv commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

Summary

First plan of the TRIM todo (docs/todos/TRIM-dto-trimming-preservation-gaps/) — close the IL-trimming preservation gaps that forced zTreatment into a ~50-entry LinkerConfig.xml workaround. This PR also carries the todo container itself (recon-verified goal, plan index, discovery log) plus the docs/todos/ conventions/ID-registry bootstrap.

The TrimmingTests harness printed FAILED lines but always exited 0, sat outside the solution, and was never run by CI — it hadn't even compiled since the [Event] method API was deleted in v1.5.0, and its class-factory check had been silently failing.

Changes

  • Harness exit semantics: named checks aggregate into a failure list; the process exits non-zero on any failure. Verified by keyboard failure-injection (exit 1) and all-green trimmed run (exit 0).
  • Harness rot fixed: removed dead [Event] method usage (event coverage is EventRelaySmokeTest on the current relay API); factories now resolve inside a scope (ValidateScopes=true); keyed HttpClient registered with a no-op handler — Class factory resolved: True now holds on a trimmed client for the first time.
  • Solution membership: RemoteFactory.TrimmingTests added to Neatoo.RemoteFactory.sln so plain builds catch compile rot.
  • CI gate: new Trimming verification step publishes the trimmed harness (linux-x64, self-contained), asserts server-only implementation types are absent from the binary, and runs the harness.
  • Deferred: the IServerOnlyRepository interface name survives trimming via guarded-dead LocalCreate bodies (docs claim full removal) — queued as TRIM-005.

Test plan

  • Local: trimmed publish + run exits 0, all checks pass
  • Local: injected failure exits 1
  • Local: full solution build (0 errors) and tests (2254 passed, 0 failed, net9.0+net10.0)
  • This PR's CI run exercises the new trimming step on linux-x64 (closes TRIM-004's final acceptance bullet)

🤖 Generated with Claude Code

keithdv and others added 4 commits July 6, 2026 13:11
…-004 harness gate

In-repo reconnaissance confirmed both preservation gaps from the outside-
perspective split and surfaced three new findings: the TrimmingTests harness
is unenforced (outside sln/CI, exits 0 on failure), EventRelaySmokeTest
cannot pin the subscribe-only event shape, and Design.Domain event-pattern
comments still document the removed PreserveType emission.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…I gate

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The TrimmingTests harness printed FAILED lines but always exited 0, sat
outside the solution, and was never run by CI — it had not even compiled
since the [Event] method API was deleted in v1.5.0, and its class-factory
check had been silently failing (root-provider scope violation, missing
keyed HttpClient registration).

- Aggregate named checks into a failure list; exit non-zero on any failure
- Remove dead [Event] method usage; event coverage is EventRelaySmokeTest
- Resolve factories inside a scope; register keyed HttpClient with a no-op
  handler (harness never sends requests)
- Add the project to Neatoo.RemoteFactory.sln so plain builds catch rot
- CI: publish trimmed (linux-x64), assert server-only implementation types
  absent from the binary, run the harness
- Interface-name over-retention in guarded-dead LocalCreate bodies is
  deferred to TRIM-005 (docs currently claim full removal)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@keithdv
keithdv merged commit a566538 into main Jul 6, 2026
2 checks passed
@keithdv
keithdv deleted the TRIM-004-harness-ci-gate branch July 6, 2026 19: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