Skip to content

sync: v17.0 phase 137-140 catch-up - #45

Merged
szTheory merged 62 commits into
mainfrom
sync/main-v17.0-phase140-catchup
Jul 3, 2026
Merged

sync: v17.0 phase 137-140 catch-up#45
szTheory merged 62 commits into
mainfrom
sync/main-v17.0-phase140-catchup

Conversation

@szTheory

@szTheory szTheory commented Jul 3, 2026

Copy link
Copy Markdown
Owner

Scope

Local main is a clean superset of origin/main60 commits ahead, 0 divergence (fast-forwardable). This boundary PR lands the accumulated v17.0 "Companion Family Completion" work (phases 137–140) onto origin. No hex publish happens here — the batched family publish stays a deferred human gate.

Why

Per docs/MILESTONE-BOUNDARY-HYGIENE.md: Crosswake accumulates on protected local main and syncs via a single boundary PR at natural checkpoints. This is the phase-140 checkpoint — it unblocks the origin-sync precondition for the eventual family publish (140-05).

Shape (planning vs code split)

  • Code (84 files): three companions extracted in-tree (packages/crosswake_sigra, crosswake_chimeway, crosswake_threadline), core :companions-registry decoupling, per-package Side-A telemetry contract tests, compat-matrix drift guards (O(N) column + version-cell format), hardened extraction recipe, publish runbook.
  • Planning (37 files): phases 137–140 plans/summaries/context, phase 139 verification (5/5 passed), phase 140 research synthesis, ROADMAP/STATE/CHANGELOG updates.

Tests

Phase-140 gates green: compat drift proof-132 6/0, telemetry proof-133 9/0, companion telemetry suites sigra 4/0 · chimeway 6/0 · threadline 14/0. Earlier phases executed green in-tree (137/138/139 verified). Main CI is green.

Deferred / admin follow-ups

🤖 Generated with Claude Code

szTheory and others added 30 commits July 2, 2026 13:28
…ified

CHIME-01/02/03 research complete: zero Sigra.* compile-time references
confirmed in chimeway source; Resolver.Denial usage classified as
legitimate (core dep, not boundary violation); clean-room smoke test
enabled?() defect identified; phase71 redistribution from sigra to
chimeway package specified.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…e from core

- Create packages/crosswake_chimeway/ with mix.exs (@Version 0.1.0, no engine dep, no crosswake_sigra dep, D-11/D-13 env-conditional crosswake_dep)
- Move all 7 chimeway files (facade + 6 sub-modules) preserving Crosswake.Companions.Chimeway.* namespace (non-breaking, CHIME-01)
- Add auth_context: map() guard note to NotificationOpenEvidence moduledoc (CHIME-02 / T-138-01 / D-8)
- Remove Crosswake.Companions.Chimeway from core application/0 env and Phase-138 comment
- Add crosswake_chimeway to core mix companions.test alias for dress-rehearsal
- Remove Crosswake.Companions.Chimeway.Telemetry from core docs groups_for_modules (extracted)
- resolver.ex retains alias Crosswake.Shell.Denial + Denial.new calls (no Finding-boundary refactor — chimeway diverges from sigra)
…x post-extraction core suite

- Add Crosswake.TestSupport.StubChimewayAbsentCompanion to test/support/stub_companion.ex
  (companion_id: :chimeway, validate_dependency returns {:error, [Crosswake.Companions.Chimeway]},
  no auth_authority?/0 — chimeway is notification-only, not an auth authority, CHIME-02)
- Delete chimeway unit tests from core (chimeway_test.exs + 5 sub-module tests): these move to
  packages/crosswake_chimeway/test/ in Plan 02; their presence in core after source extraction
  caused compile errors (Rule 3 auto-fix)
- Delete test/crosswake/proof/phase59_chimeway_contract_test.exs: split in Plan 02 — package
  tests move to crosswake_chimeway, SupportMatrix assertion stays in core as phase59_support_truth
- Update test/crosswake/guides/companions_test.exs: remove Code.ensure_loaded! + function_exported?
  guards for Crosswake.Companions.Chimeway (extracted to package; guards now in package test lane)
- Add crosswake_chimeway row to guides/companion_compatibility.md (Rule 2: drift test enforcement)
- Core suite: 987 tests, 0 failures after extraction
…truth stays in core)

- MOVE 5 chimeway-internal unit tests (contracts, denial_codes, redaction,
  resolver, telemetry) from core test/crosswake/companions/chimeway/ to
  packages/crosswake_chimeway/test/crosswake/companions/chimeway/
- MOVE chimeway_test.exs (facade) to packages/crosswake_chimeway/test/crosswake/companions/
- SPLIT phase59_chimeway_contract_test.exs: 4 chimeway-internal tests (TOKN-02
  lifecycle, raw-token absence, struct aliases, delivery_accepted) move to the
  package; companion state assertion (report_state().details) moves with them
  since Chimeway modules are not available in core (no chimeway runtime dep per D-21)
- ADD test/crosswake/proof/phase59_chimeway_support_truth_test.exs: core-retained
  SupportMatrix.notification_support_truth/0 assertion — static function returning
  1 element (non-vacuous: always populated with the expected notification truth);
  no put_env required since the function does not source from :companions registry
- Package lane: 42 tests, 0 failures (moved unit + contract tests + facade)
- Core support-truth test: 1 test, 0 failures
…ke_sigra dep

- MOVE phase71_notification_workflow_proof_test.exs from crosswake_sigra package
  to crosswake_chimeway package (primary subject is Chimeway.Resolver — the test
  proves Chimeway+Sigra notification-auth integration end-to-end)
- DELETE packages/crosswake_sigra/test/crosswake/proof/phase71_...exs (sigra no
  longer depends on chimeway after extraction; Chimeway.Resolver would not resolve)
- ADD {:crosswake_sigra, path: "../../packages/crosswake_sigra", only: :test} dep
  to packages/crosswake_chimeway/mix.exs deps/0 — required because phase71 builds
  a real validated %SigraContracts.AuthContext{} (via new_session_authority_lane/1
  + new_auth_context/1) and pattern-matches %SigraContracts.AuthContext{}; plain
  map literals cannot reproduce sigra's validation + evaluation (CHIME-02 preserved:
  only: :test; the files: allowlist excludes test/ so tarball/clean-room never see it)
- phase71 passes in chimeway package: 6 tests, 0 failures (Chimeway.Resolver + real
  registered Sigra evaluator produce the auth.step_up.* codes end-to-end)
…idden keys + CHIME-02)

Add packages/crosswake_chimeway/test/crosswake/proof/phase138_chimeway_cleanroom_test.exs:

Test 1 — telemetry events non-vacuity: with chimeway registered in :companions,
  Crosswake.Telemetry.events/0 includes all 10 chimeway notification events.
  Non-vacuous: without registration, companion_events/build_reserved_events both
  return [] and the filter would pass vacuously. Code.ensure_loaded!(Chimeway) in
  setup forces BEAM module loading so function_exported?/3 returns true.

Test 2 — forbidden keys at attach time (RESEARCH A2 correction): after
  attach_default_logger/0, reads handler.config[:forbidden_keys] MapSet via
  :telemetry.list_handlers([:crosswake]) and asserts every key from
  ChimewayTelemetry.forbidden_metadata_keys() is present. Uses the REAL seam
  (DECOUPLE-05); Crosswake.Telemetry.forbidden_metadata_keys/0 does NOT exist.

Test 3 — not an auth authority: refute function_exported?(Chimeway, :auth_authority?, 0).
  Chimeway is notification-only; auth_authority?/0 belongs only to sigra (CHIME-02).

Test 4 — no runtime sigra dep: reads Mix.Project.config()[:deps] and confirms
  {:crosswake_sigra, ..., only: :test} is the only sigra dep; a non-test sigra dep
  would violate CHIME-02.

Deviation note: Code.ensure_loaded!(Chimeway) required in setup — ExUnit does not
  auto-load BEAM modules; function_exported?/3 returns false for unloaded modules
  causing vacuous test passes. This is the correct pattern for companion clean-room
  proofs from package-scoped test suites.

Full chimeway package suite: 52 tests, 0 failures.
Core dress rehearsal: 988 tests, 0 failures.
- 138-02-SUMMARY.md: 3 tasks completed, 52 chimeway pkg tests green,
  988 core dress-rehearsal tests green, CHIME-01/02 coverage D7-D11
- guard enabled?(%{}) assertion by package: assert for chimeway (defaults true),
  refute for all other no-engine companions (default false); exactly one form emitted
- add Chimeway.Telemetry.event_names/0 == 10 canary (vacuity-safe: proves Telemetry
  sub-module shipped in tarball with sigra absent — CHIME-02)
- update usage comment to document chimeway invocation form
- sigra/rulestead/rindle paths unchanged (additive only)
…se component

- add crosswake_chimeway block to release-please-config.json (elixir, separate-pull-requests,
  release-as 0.1.0 one-shot, NOT in linked-versions lockstep group — D-8)
- add packages/crosswake_chimeway: 0.1.0 to .release-please-manifest.json
- add {:crosswake_chimeway, path: ...} path dep to examples/phoenix_host/mix.exs
  (guides/companion_compatibility.md chimeway row was already present from prior wave)
- add chimeway_release_created/tag_name/version outputs (per-component dot-alias)
- add publish-hex-chimeway job: CROSSWAKE_RELEASE=1, per-component gate on
  chimeway_release_created (never aggregate releases_created — D-8/D-07)
- add clean-room-proof-chimeway job: no-engine invocation (no sigra arg),
  chimeway-correct smoke test via Task-1 patch (CHIME-02 no-sigra-dep at CI level)
- extend release-as-cleanup: chimeway_release_created in if: + strip block
- extend release-failure-alert: publish-hex-chimeway + clean-room-proof-chimeway
  in needs: and issue body (T-138-08/T-138-09 mitigations)
…table suite)

Seven tests captured `Application.get_env(:crosswake, :companions)` WITHOUT the
`, []` default that every production read site uses. When `:companions` is unset
(the default — there is no config/ dir configuring it), the bare capture returns
`nil`, and the `on_exit` restore does `put_env(:crosswake, :companions, nil)`,
explicitly setting the key to nil. Every later `get_env(:crosswake, :companions, [])`
then returns `nil` (key present) instead of `[]`, so `Enum.flat_map(nil, ...)` in
Telemetry.events/0 and Doctor.run/1 raises Protocol.UndefinedError — violating the
documented D-10 fail-closed contract ("with no companions configured ... never raises").

Latent since the pattern was introduced; exposed by Phase 138 chimeway extraction
reordering the suite (test count dropped as chimeway tests moved to the package lane).

Fix mirrors production: capture with the `, []` default so an unset key restores as
`[]`, never nil. Applied to the same latent bug in 4 crosswake_sigra package tests.

Verified: core dress-rehearsal green across seeds 0/1/42/137 (was red on seed 0);
chimeway (52) and sigra (131) package lanes green.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ly batch

Phase 138 crosswake_chimeway extraction: waves 1-3 executed green in-tree
(extraction, test move + non-vacuous clean-room proof, independent release-please
CI pipeline). Wave 4 (human-gated Hex publish) intentionally deferred to the
batched family publish, mirroring Phase 137 sigra. Plus seed-stability gap-closure.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…onal-Phoenix guards, move source + EEX templates, wire test-only core dep

- Create packages/crosswake_threadline/mix.exs (v0.1.0, {:plug, optional: true}, {:phoenix_live_view, optional: true}, {:nimble_options}, {:telemetry}, files: includes "priv", NO sibling companion dep)
- Scaffold config/config.exs, README.md, CHANGELOG.md, LICENSE, test/test_helper.exs
- Move threadline source (namespace preserved, non-breaking): threadline/{id,telemetry}.ex, audit/ledger.ex, plug/threadline.ex, live/threadline.ex, mix/tasks/{crosswake.threadline,crosswake.gen.audit}.ex
- Move priv/templates/crosswake/audit/{ledger.ex.eex,migration.exs.eex} (verbatim)
- Wrap Crosswake.Plug.Threadline in Code.ensure_loaded?(Plug.Conn), Crosswake.Live.Threadline in Code.ensure_loaded?(Phoenix.LiveView) (PromEx precedent; neither uses a use macro)
- Fix gen.audit.ex app_dir atom: :crosswake -> :crosswake_threadline (both lines), File.exists? cwd fallback preserved
- Add {:crosswake_threadline, path: "packages/crosswake_threadline", only: :test} to core mix.exs (keeps phase133 TELEM-04 Side-A compiling)
- Add companions.test alias lines for crosswake_threadline; update comment to include threadline
- Remove threadline from core docs groups_for_modules (module now in package)
- Verified: package compiles --warnings-as-errors; zero sibling deps; app-dir fixed; priv in files; Code.ensure_loaded? guards present
…ing sites (SITE 1 support_matrix freeze + SITE 2 telemetry baseline curated-floor delta)

SITE 1 (support_matrix.ex): Remove alias Crosswake.Threadline.Telemetry. Convert
@audit_ledger_support_truth (which called ThreadlineTelemetry.event_names/metadata_keys/forbidden_metadata_keys
at module-eval, stale-beam trap) to @audit_ledger_support_truth_static with frozen literal values.
Accessor def audit_ledger_support_truth/0 returns [@audit_ledger_support_truth_static].
Mirrors the @notification_support_truth_static (L263) / @auth_contract_truth_static (L133) pattern.

SITE 2 (telemetry.ex): Cut static Crosswake.Threadline.Telemetry.forbidden_metadata_keys()
call in attach_default_logger/1. Replace with MapSet.new(@baseline_forbidden_keys ++ companion_forbidden_keys).
Remove "Threadline stays in-tree for Phase 136" comment. Expand @baseline_forbidden_keys from
10 to 11 keys: add :actor_ref as the curated universal-floor delta (D-5) — the HMAC-anonymized
audit identity anchor that must be scrubbed with zero companions present. OAuth/passkey-ceremony
keys (device/org/credential/PKCE/provider) are companion-domain and stay companion-local.

Update phase136_decouple_proof_test.exs: DECOUPLE-05 assertion updated from 10-atom to 11-atom
set (adds :actor_ref per D-5 Phase 139 expansion).

Core compiles --warnings-as-errors with zero Crosswake.Threadline.* compile references in lib/.
…PII-floor test

- Move 10 threadline test files from core test/ to packages/crosswake_threadline/test/
  (id_test, telemetry_test, plug/threadline_test, live/threadline_test, audit/ledger_test,
   mix/tasks/crosswake.gen.audit_test, mix/tasks/crosswake.threadline_test,
   phase91/phase92/phase96 closeout proof tests)
- Delete 10 test files from core (moved verbatim; phase96 path fixed ../../guides/)
- Add anti-drift PII-floor test to core telemetry_test.exs (D-5): core_baseline ⊆
  union(companion forbidden_metadata_keys) with two stub companions; non-vacuous guard
- Add baseline count assertion: exactly 11 atoms post-Phase-139
- Fix circular-dep bug (Rule 1): remove {:crosswake_threadline, path:...} from core
  mix.exs — crosswake_threadline→crosswake path dep created MixProject double-load error;
  rewrite phase133 TELEM-04 to emit threadline events via :telemetry.execute directly
- Fix support_matrix_test: remove Crosswake.Threadline.Telemetry.* calls (module now in
  pkg); assert frozen literal values directly (SITE 1 freeze post-extraction)
- Add crosswake_threadline row to companion_compatibility.md (drift test required it)
- Pre-add 6 failing assertions to package tests for Tasks 2 + 4 (RED phase)
- Core suite: 910 tests, 0 failures
… on_conflict, advisory moduledoc

- Add advisory @moduledoc: row_hash/prev_hash are fingerprints NOT tamper-evidence;
  idempotency_key UNIQUE index is the real integrity guarantee
- Add handle_event/4 telemetry handler with try/rescue crash-isolation: write failures
  log via Logger.error and return :ok — NEVER reraise (reraise auto-detaches handler
  causing silent audit blackout)
- Add on_conflict: :nothing, conflict_target: :idempotency_key to both handle_event
  (direct insert) and record_in_multi/3 (Ecto.Multi insert) for idempotent replay
- Add attach/2 convenience function to attach as :telemetry handler
- Fix: remove all 'reraise' text from template (test refutes its presence)
- Package gen.audit test lane: 5 tests, 0 failures
…tion (async: true)

- 4 canary tests: Telemetry.event_names/0 == 3, Plug.Threadline.init([]) header_name,
  Audit.Ledger.actor_ref/2 → 64-char hex, zero-sibling-dep guard (reads real dep list)
- async: true (threadline NOT a :companions registrant, no Application.put_env)
- Vacuity-safe: dep list non-empty check + refute :crosswake_sigra + :crosswake_chimeway
- No setup block, no companion-behaviour assertions (threadline is not a Companion)
- 4 tests, 0 failures
szTheory and others added 28 commits July 2, 2026 17:49
…ac_secret app-env key

- actor_ref/2 raise message now explicitly names:
  (1) the :secret keyword option — actor_ref(id, secret: "...")
  (2) the :audit_hmac_secret Application env key for config-based resolution
- Stays a hard ArgumentError (fail-loud; not silent — DoS mitigation T-139-17)
- Follows brandbook §6 voice: calm, specific, actionable; names exact keys/paths
- 6 ledger tests, 0 failures
…s-guard)

- add no-engine non-companion branch for crosswake_threadline (if/elif/else structure)
- three module-shipment canaries: Telemetry.event_names/0 == 3, Plug.Threadline.init/1 header_name,
  Audit.Ledger.actor_ref/2 64-char hex
- zero-sibling-dep invariant test: refutes crosswake_sigra + crosswake_chimeway in deps
- suppress-guard (PACKAGE != crosswake_threadline) on default companion-behaviour assertions
  (enabled?/1, companion_id/0, validate_dependency/0 — threadline has none; calling them raises)
- step 6 config: threadline skips :companions registration (not a Crosswake.Companion implementor)
- update usage comment with threadline non-companion no-engine invocation form
- bash -n parses clean; all three grep verifications pass
…ease component

- release-please-config.json: add packages/crosswake_threadline block (elixir, separate-pull-requests,
  one-shot release-as 0.1.0, _TODO_release_as citing Phase 139) — NOT in linked-versions (D-8)
- .release-please-manifest.json: add packages/crosswake_threadline: 0.1.0
- examples/phoenix_host/mix.exs: add {:crosswake_threadline, path: '../../packages/crosswake_threadline'}
  path dep after chimeway; update deps comment to include Phase 139
- guides/companion_compatibility.md: update crosswake_threadline row companion_id to N/A
  (not a :companions registrant — wired via Plug/LiveView on_mount, not the registry; engine dep none)
- both JSON files valid; threadline not in linked-versions lockstep group
- add threadline_release_created/tag_name/version outputs (double-dash path alias contract)
- add publish-hex-threadline job: gates on threadline_release_created (never aggregate), CROSSWAKE_RELEASE=1,
  checkout at threadline_tag_name, packages/crosswake_threadline working-dir, deps+compile+test+dry-run+publish,
  Hex.pm propagation poll (36 attempts)
- add clean-room-proof-threadline job: needs [release-please, publish-hex-threadline], no ENGINE arg
  (no-engine non-companion mode; installs crosswake + crosswake_threadline, NOT sigra, NOT chimeway),
  invokes verify_companion_cleanroom.sh crosswake_threadline version (module-shipment canaries)
- extend release-as-cleanup if: condition to include threadline_release_created; add strip block
  for crosswake_threadline (python3 script/strip_release_as.py crosswake_threadline)
- extend release-failure-alert needs + body to cover publish-hex-threadline and clean-room-proof-threadline
- all threadline jobs gate on threadline_release_created (D-8 per-component gate, THREAD-03)
- YAML valid; no real publish (publish is human-gated Wave 4, deferred to family batch)
…sions

- Collapse Threadline row prose-in-cell into one-liners (D-05):
  Companion ID -> N/A (observer), Engine Dependency -> optional plug/lv
- Move Crosswake.Plug.Threadline / on_mount wiring to new
  ## Threadline wiring prose section below the table
- Set all five Current Version cells to backticked unpublished (D-06)
- Add anti-hand-edit HTML comment above the table; preserve compat-03
  contract comment the drift test keys on
- Update Current Version prose to reflect the unpublished pre-publish state
…ift test

- proof.compat_03.no_inter_companion_columns (D-07): parse header row,
  drop col 0 (Hex Package), refute any header cell matching crosswake_\w+
  — makes the 'no inter-companion columns' invariant machine-checked so a
  future 'Requires crosswake_sigra' column fails CI (matrix stays O(N))
- proof.compat_03.version_cell_format (D-08): each Current Version cell must
  be `unpublished` or a bare backticked semver; FORMAT only, no specific
  version asserted (hex.pm stays authority)
- Add header_row_cells/1 + current_version_column_index/1 helpers, sharing
  the existing '^\|.*Hex Package.*\|' header-detection idiom
- Add core-1.0 compound-'or' constraint TODO near extract_hex_req_from_if/1 (D-09)
- No existing Phase 132 assertion removed or renamed
…chimeway

- Iterate event_names/0 live (never hardcoded), drive Telemetry.execute/3
- Assert supplied declared metadata keys present via subset Map.has_key?
- No exact-count assertion (avoids >=24 cross-package coupling)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…xception

- Part (a): iterate event_names/0 live, assert :thread_id present (subset)
- Part (b): drive Plug.Threadline error path so :exception fires + reraise asserted
- Sanitized :exception metadata is empty (kind/reason not allowlisted) — PII-safe

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…t regression

- proof.telem_04.no_reserved_count_assertion inspects file source, asserts the
  length(...) >= N idiom count on non-comment lines is 0 (D-15)
- Guard pattern assembled so it does not self-invalidate
- Note anti-drift subset invariant home (telemetry_test.exs) — not duplicated (D-18)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Add numbered Step 0 blocking gate (pure/compile-coupled/observer triage)
- Observer row names both threadline sites (@audit_ledger freeze + telemetry cut)
- Replace broken '&& echo FAIL || echo CLEAN' with 'if grep -rn --exclude-dir=packages...; then exit 1; fi'
- Widen scope to lib/ test/ mix.exs, both ref forms + a lib/crosswake/ module-attribute pass
- Add exit-code-trap comment + D-13 flagged-legit-core-file (EXTRACT-03 behavior-not-module) instruction
- Add '> If this step fails:' recovery callouts after Step 10 (verify script) and Step 11 (guards)
- Footer now tags all five companions by type: rulestead/rindle (pure), sigra/chimeway (compile-coupled), threadline (observer)
- Update Next line (family complete) + bump Recipe version to Phase 140
- Author 'Pipeline primitives (verified present)' section of new
  docs/COMPANION-PUBLISH-RUNBOOK.md
- Record confirmed on-disk locations for all three companions: release-please-config
  component blocks (separate-pull-requests + release-as 0.1.0 + _TODO_release_as),
  manifest 0.1.0 baselines, publish-hex-<name> jobs (per-component gate),
  within-run clean-room-proof-<name> needs edges, release-failure-alert coverage
- Document D-02: no cross-companion needs: edge exists or should be added
  (needs cannot span workflow runs; sequencing is runbook discipline)
- All primitives present, no BLOCKER; no CI/config/script file modified
- Preconditions (D-01): origin-sync landed + 137/138/139 execution-verified;
  deferred != indefinite
- Per-companion publish loop (D-03): merge ONE Release PR -> wait publish-hex +
  clean-room-proof green -> confirm hexdocs resolves -> merge release-as-cleanup PR
  -> next; fixed order sigra -> chimeway -> threadline (observer last)
- Hex ~60-min revert window (mix hex.retire, not re-push) + 'if
  release-failure-alert fires, STOP' hard stop
- Ship-gate ordering (D-04): register_required_checks.sh green-first
  DRY_RUN=1 then DRY_RUN=0; hard rule that publish-hex-*/clean-room-proof-*
  must NOT be registered as required checks (permanent PR deadlock)
- Scope reconciliation (D-01): readiness = complete Phase-140 FAMILY-04
  deliverable; execution deferred to autonomous:false plan 140-05
- Documentation only: no hex publish, no registration, no CI-edge change
Add 140-04-SUMMARY.md documenting the publish-readiness runbook deliverable
(FAMILY-04 readiness). Two atomic task commits (a4051cf, ebbab36); no hex
publish, no register_required_checks.sh run, no CI/config/script edit.
Wave 1 executed sequentially on main (worktree isolation degraded: local
main 44 commits ahead of origin, #683). All 4 plans green. Wave 2 (140-05
batched family publish) is human-gated and deferred.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…lished)

Bring [Unreleased] Deferred-non-shipped claims current: sigra/chimeway/
threadline all extracted (phases 137-139) with Side-A telemetry contract
tests + disciplined compat rows (phase 140); batched hex publish still a
deferred human gate.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…esis

Untracked planning artifacts belonging on origin.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The Phase 71 notification workflow proof moved from core into the chimeway
package during CHIME-01 extraction (phase 138), but phase71-proof.yml still
ran it from packages/crosswake_sigra (the phase-137 wiring assumed sigra).
mix test could not find the path -> the merge-blocking notification lane
failed. Point working-directory at packages/crosswake_chimeway where the
test now lives (verified green: 6 tests, 0 failures).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@szTheory
szTheory merged commit 99e1e9c into main Jul 3, 2026
73 checks passed
@szTheory
szTheory deleted the sync/main-v17.0-phase140-catchup branch July 3, 2026 01:38
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