You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
v1.6.0: minimal CodeMower.com Slack telemetry ingestion and aggregates #978
CodeMower.com must safely accept and summarize the minimum v1.6 Slack control-surface session contract before OSS clients emit it. The release does not need a dedicated Slack analytics product.
Scope
Produce one PR in the authorized CodeMower.com repository implementing the exact #921 fixtures: backward-compatible validation and ingest, tenant isolation, retention/export/deletion coverage, aggregate counts by repository alias/provider/state/outcome, and a freshness timestamp on an existing authenticated surface.
Do not add message-level replay, Slack identities, a new dashboard information architecture, rich drill-down pages, historical backfill, or detailed cost allocation.
Existing clients remain compatible and rollback preserves accepted metadata without widening the schema.
A canary proves storage separately from a freshly observed authenticated aggregate view.
Export, deletion, retention, revocation, and tenant isolation cover the new metadata.
Aggregate totals reconcile with the same canary's local Board lifecycle projection.
Production capability/version acceptance is deployed before OSS emission is enabled.
No task, answer, source, diff, prompt, message, response URL, Slack identity, provider reference, token, personal path, graph/context data, or raw output is accepted.
Code Mower delivery
Produce exactly one independently reviewable hosted PR with one writer. Record the builder, exact head, eligible independent review, focused and regression tests, deployment revision, and sanitized canary evidence. Resolve every P0/P1/P2 finding before merge. Public tracking contains only sanitized status; private repository and operational bindings stay in the authorized record.
changed the title [-]CodeMower.com: implement the frozen Slack telemetry contract and fresh views[/-][+]v1.5.1: CodeMower.com Slack telemetry, aggregation, and fresh views[/+]on Sep 18, 2026
Deferred with #921 to v1.5.1. It no longer blocks minimal #922 or v1.5.0 publication through #923. Keep the existing contract-first dependency on #921 when this work resumes.
Roadmap decision: moved to v1.6.0. Basic Slack lifecycle is already released and remains in the v1.5.1 qualification boundary. The Slack-specific cloud schema, emitters, hosted storage/aggregation, retention/deletion, and richer cloud views will proceed contract-first after v1.5.1 reliability work completes.
The active CodeMower.com roadmap orchestrator has reconciled its current work. Active documentation PR #514 and queued setup-doc work #520 do not touch #978 ingest, telemetry schema, dashboard aggregates, retention, export/deletion, or tenant-isolation files. That lane will not assign a #978 writer or edit those surfaces before the OSS contract freeze.
#978 is therefore reserved, not dispatched. Its implementation starts only after #921 publishes the exact closed schema, canonical accepted/rejected fixture bytes, OSS source commit, and SHA-256 fixture-manifest digest. The hosted PR must vendor those bytes unchanged and assert parity. Hosted validation, storage, export/deletion/retention, tenant isolation, aggregates, freshness, and deployed capability advertisement must pass before OSS production emission is enabled.
Hosted acceptance must bind repository identity to the authenticated tenant, reject unknown/disallowed fields with bounded diagnostics, and advertise the exact schema, capability version, and manifest digest before OSS production emission is enabled. Retention, export, deletion, rollback, tenant-isolation, and aggregate-reconciliation expectations are frozen in the expectations resource.
PR #1098 has been cleanly rebased onto current OSS main. The five contract resources are byte-for-byte unchanged, but the immutable source checkpoint is now:
The 21 accepted fixtures, 19 rejected fixtures, closed lifecycle matrix, privacy exclusions, tenant binding, export/deletion/retention, rollback, revocation, aggregate reconciliation, and capability-advertisement expectations are unchanged. Production must continue advertising no acceptance until the hosted implementation vendors these exact bytes and passes its acceptance suite. This checkpoint supersedes the earlier d50254b7... comment and every pre-rebase checkpoint.
Rebased local evidence: 141 focused tests plus 566 subtests passed; the 13 contract tests, docs lifecycle, package-manifest checks, Ruff, privacy scan, and diff hygiene passed. Full GitHub CI is running on this exact head.
This merge does not enable production telemetry. The OSS client emits no control-surface summary unless GET /api/health advertises the exact closed capability with this digest and accepting: true. CodeMower.com must still vendor and validate the five exact resources, pass storage/tenant/export/deletion/retention/aggregate acceptance, deploy, and advertise the exact identity before the canary or v1.6 release can proceed.
The hosted implementation entry gate is satisfied. Keep #978 open until the retained v1.6.0 candidate sends the bounded sanitized Slack telemetry canary and local Board versus hosted aggregate reconciliation is recorded.
Hosted consumer receipt is complete for the frozen producer contract.
CodeMower.com PR jeffhuber/codemower.com#542 auto-merged at bcddaa25c633f2dcf8fa2077d6ecb8004c1d8f88 after exact-head Claude PASS, Code Mower gate PASS, and full CI PASS.
The hosted migration ledger is aligned at 79 canonical / 79 remote with digest dec1a7338629e50e9edc5a927295736e4d74563775dd9af29bd38f8d3a234cdd.
Production deployment dpl_HxhK4CHrYPkCCzjxS9rGjSuBG8C8 is Ready.
Production health advertises the exact contract identity: capability schema code_mower.controlSurfaceSessionSummaryCapability.v1, summary schema code_mower.controlSurfaceSessionSummary.v1, capability version 1, fixture manifest SHA-256 9e87c52812a49a1c72d0e0d2448661a3ef17cb8539ca8e029c6669ea9738d62e, and accepting: true.
Closed-first behavior was verified with accepting: false before enablement.
A single sanitized metadata-only canary was accepted exactly once and is visible only in its jeff-internal tenant projection. Upload ID: 650c9bb7-2d51-4b1e-877a-7f2bdf54c174.
Desktop and mobile production UI proof show the projected repository, provider, state, outcome, count, and freshness without widening the privacy boundary.
The hosted side is ready for normal producer emission from the immutable OSS release candidate. No source, diffs, transcripts, issue/comment bodies, prompts, raw output, local paths, auth output, or secrets were uploaded.
Hosted consumer implementation and rollout are complete per the production receipt above. The separate retained-candidate Slack lifecycle canary, local/hosted reconciliation, soak, installs, and publication remain tracked in #1105.
Reopening for the final retained-candidate acceptance row. The hosted implementation, exact contract deployment, privacy/retention controls, and sanitized storage/freshness probe are complete and are now checked in the issue body. The remaining unchecked criterion is the exact v1.6.0 Slack lifecycle canary's local Board versus authenticated hosted aggregate reconciliation. This preserves the release contract in docs/current-state-and-roadmap.md and keeps live canary evidence centralized here and in #1105.
The bounded private v1.6.0 canary completed against retained source ac585cb65ab910a48866ae784e09dab193dc8ec6 and wheel SHA-256 3dfa8ac0c5c72fce2d18c186153820e97e01ad35ac756cccf665b5f0e59f4698.
Sanitized results:
one owner-authorized private lifecycle exercised start, status, two bounded clarification answers, and confirmed cancellation;
10 meaningful lifecycle summaries were accepted, and the authenticated hosted aggregate delta was exactly 10;
the local Board exposed exactly one current projection with complete coverage, final lifecycle terminated, and counts dispatch 1 / message 2 / cancel 1 / collect 0; the latest hosted summary was the same terminated state with outcome cancelled;
every durable hosted attempt had a stored receipt, the task settled as requester-cancelled, provider exit was independently observed as terminated, and settled usage was 0.0 ACU within the two-ACU cap;
stored events used only the frozen closed dimension, metric, and Code Mower provenance fields, advertised metadata_only, and remained bound to the authenticated tenant and codemower-ai/code-mower;
aggregate freshness is fresh; the one-task campaign is disabled and retains its accounting and receipts;
production was restored to reviewed CodeMower.com commit 89a700c2ba6cd099bd22cce232a9dcb88674557d: Slack hosted bridge and interaction flags are off, source-sync and staged-refresh jobs are on, the deployment is Ready, and /api/health still advertises the exact accepted v1 contract.
The accepted terminal summary was observed at 2026-10-14T01:33:41Z. Per the immutable runbook, the post-canary soak therefore completes no earlier than 2026-10-15T01:33:41Z. Publication remains blocked only on that soak, the final pre-publication recheck, and release publication/reinstall.
The retained v1.6.0 canary now reconciles the local Board projection with authenticated hosted totals and freshness. All acceptance criteria are complete; release soak and publication continue in #1105.
Activity
[-]CodeMower.com: implement the frozen Slack telemetry contract and fresh views[/-][+]v1.5.1: CodeMower.com Slack telemetry, aggregation, and fresh views[/+]jeffhuber commentedon Sep 18, 2026
Deferred with #921 to v1.5.1. It no longer blocks minimal #922 or v1.5.0 publication through #923. Keep the existing contract-first dependency on #921 when this work resumes.
[-]v1.5.1: CodeMower.com Slack telemetry, aggregation, and fresh views[/-][+]v1.6.0: CodeMower.com Slack telemetry, aggregation, and fresh views[/+]jeffhuber commentedon Sep 20, 2026
Roadmap decision: moved to v1.6.0. Basic Slack lifecycle is already released and remains in the v1.5.1 qualification boundary. The Slack-specific cloud schema, emitters, hosted storage/aggregation, retention/deletion, and richer cloud views will proceed contract-first after v1.5.1 reliability work completes.
[-]v1.6.0: CodeMower.com Slack telemetry, aggregation, and fresh views[/-][+]v1.6.0: minimal CodeMower.com Slack telemetry ingestion and aggregates[/+]jeffhuber commentedon Sep 21, 2026
Cross-repository ownership reservation
The active CodeMower.com roadmap orchestrator has reconciled its current work. Active documentation PR #514 and queued setup-doc work #520 do not touch #978 ingest, telemetry schema, dashboard aggregates, retention, export/deletion, or tenant-isolation files. That lane will not assign a #978 writer or edit those surfaces before the OSS contract freeze.
#978 is therefore reserved, not dispatched. Its implementation starts only after #921 publishes the exact closed schema, canonical accepted/rejected fixture bytes, OSS source commit, and SHA-256 fixture-manifest digest. The hosted PR must vendor those bytes unchanged and assert parity. Hosted validation, storage, export/deletion/retention, tenant isolation, aggregates, freshness, and deployed capability advertisement must pass before OSS production emission is enabled.
jeffhuber commentedon Sep 21, 2026
Frozen OSS contract for hosted #978
The contract-first checkpoint is now public on draft PR #1098:
d50254b7b6dc19c9354e564c21f7b694fae7d379code_mower.controlSurfaceSessionSummary.v11ddf46b4904ad7dcebe23daf76760270e05c626ffa635d30c6a32ce98468893fcVendor these five resources byte-for-byte from that commit:
control_surface_session_summary.schema.jsoncontrol_surface_session_summary.accepted.jsoncontrol_surface_session_summary.rejected.jsoncontrol_surface_session_summary.expectations.jsoncontrol_surface_session_summary.fixture-manifest.jsonHosted acceptance must bind repository identity to the authenticated tenant, reject unknown/disallowed fields with bounded diagnostics, and advertise the exact schema, capability version, and manifest digest before OSS production emission is enabled. Retention, export, deletion, rollback, tenant-isolation, and aggregate-reconciliation expectations are frozen in the expectations resource.
jeffhuber commentedon Sep 21, 2026
Superseding frozen OSS contract for hosted #978
PR #1098 has been cleanly rebased onto current OSS
main. The five contract resources are byte-for-byte unchanged, but the immutable source checkpoint is now:99b657ae9822a689b46d21c41695a4cfb28a177dcode_mower.controlSurfaceSessionSummary.v119e87c52812a49a1c72d0e0d2448661a3ef17cb8539ca8e029c6669ea9738d62eVendor these five files byte-for-byte from that commit:
src/code_mower/control_surface_session_summary.schema.json— 22,845 bytes —2215ce1f085525de3320377f0e26e970a7db811afc6129fc5529a5cd67760c4esrc/code_mower/control_surface_session_summary.accepted.json— 36,946 bytes —17b64ce2ae10baae2f3cf84a4a39f580ef912ce436387dcebfa98724477ec486src/code_mower/control_surface_session_summary.rejected.json— 33,146 bytes —418180e76d3c90aebb108ec9caa38258a0f28c380d85e898e419313756dece5csrc/code_mower/control_surface_session_summary.expectations.json— 1,869 bytes —01c8e9bb26f60fb8163a69801070ab6eabeadf20c271a41455634063966c7a21src/code_mower/control_surface_session_summary.fixture-manifest.json— manifest digest aboveThe 21 accepted fixtures, 19 rejected fixtures, closed lifecycle matrix, privacy exclusions, tenant binding, export/deletion/retention, rollback, revocation, aggregate reconciliation, and capability-advertisement expectations are unchanged. Production must continue advertising no acceptance until the hosted implementation vendors these exact bytes and passes its acceptance suite. This checkpoint supersedes the earlier
d50254b7...comment and every pre-rebase checkpoint.Rebased local evidence: 141 focused tests plus 566 subtests passed; the 13 contract tests, docs lifecycle, package-manifest checks, Ruff, privacy scan, and diff hygiene passed. Full GitHub CI is running on this exact head.
jeffhuber commentedon Sep 22, 2026
OSS producer merged; hosted capability remains disabled
OSS PR #1098 merged after full green CI and an eligible independent Claude exact-head PASS:
99b657ae9822a689b46d21c41695a4cfb28a177d9f6a89dd717e70946fd6445ecb8c87ebf42441379e87c52812a49a1c72d0e0d2448661a3ef17cb8539ca8e029c6669ea9738d62eThis merge does not enable production telemetry. The OSS client emits no control-surface summary unless
GET /api/healthadvertises the exact closed capability with this digest andaccepting: true. CodeMower.com must still vendor and validate the five exact resources, pass storage/tenant/export/deletion/retention/aggregate acceptance, deploy, and advertise the exact identity before the canary or v1.6 release can proceed.jeffhuber commentedon Sep 22, 2026
Hosted consumer merged and production capability enabled
The paired hosted implementation is now deployed from independently reviewed CodeMower.com PR #542:
bcddaa25c633f2dcf8fa2077d6ecb8004c1d8f886581697672; Vercel production status succeededaccepting: false, then redeployed after verification withaccepting: trueCurrent
https://codemower.com/api/healthadvertises the exact frozen identity:code_mower.controlSurfaceSessionSummaryCapability.v1code_mower.controlSurfaceSessionSummary.v119e87c52812a49a1c72d0e0d2448661a3ef17cb8539ca8e029c6669ea9738d62etrueThe hosted implementation entry gate is satisfied. Keep #978 open until the retained v1.6.0 candidate sends the bounded sanitized Slack telemetry canary and local Board versus hosted aggregate reconciliation is recorded.
jeffhuber commentedon Sep 22, 2026
Hosted consumer receipt is complete for the frozen producer contract.
bcddaa25c633f2dcf8fa2077d6ecb8004c1d8f88after exact-head Claude PASS, Code Mower gate PASS, and full CI PASS.dec1a7338629e50e9edc5a927295736e4d74563775dd9af29bd38f8d3a234cdd.dpl_HxhK4CHrYPkCCzjxS9rGjSuBG8C8is Ready.code_mower.controlSurfaceSessionSummaryCapability.v1, summary schemacode_mower.controlSurfaceSessionSummary.v1, capability version 1, fixture manifest SHA-2569e87c52812a49a1c72d0e0d2448661a3ef17cb8539ca8e029c6669ea9738d62e, andaccepting: true.accepting: falsebefore enablement.jeff-internaltenant projection. Upload ID:650c9bb7-2d51-4b1e-877a-7f2bdf54c174.The hosted side is ready for normal producer emission from the immutable OSS release candidate. No source, diffs, transcripts, issue/comment bodies, prompts, raw output, local paths, auth output, or secrets were uploaded.
jeffhuber commentedon Sep 22, 2026
Hosted consumer implementation and rollout are complete per the production receipt above. The separate retained-candidate Slack lifecycle canary, local/hosted reconciliation, soak, installs, and publication remain tracked in #1105.
jeffhuber commentedon Sep 22, 2026
Reopening for the final retained-candidate acceptance row. The hosted implementation, exact contract deployment, privacy/retention controls, and sanitized storage/freshness probe are complete and are now checked in the issue body. The remaining unchecked criterion is the exact v1.6.0 Slack lifecycle canary's local Board versus authenticated hosted aggregate reconciliation. This preserves the release contract in
docs/current-state-and-roadmap.mdand keeps live canary evidence centralized here and in #1105.jeffhuber commentedon Oct 14, 2026
Retained-candidate Slack telemetry canary accepted
The bounded private v1.6.0 canary completed against retained source
ac585cb65ab910a48866ae784e09dab193dc8ec6and wheel SHA-2563dfa8ac0c5c72fce2d18c186153820e97e01ad35ac756cccf665b5f0e59f4698.Sanitized results:
terminated, and counts dispatch 1 / message 2 / cancel 1 / collect 0; the latest hosted summary was the sameterminatedstate with outcomecancelled;metadata_only, and remained bound to the authenticated tenant andcodemower-ai/code-mower;fresh; the one-task campaign is disabled and retains its accounting and receipts;89a700c2ba6cd099bd22cce232a9dcb88674557d: Slack hosted bridge and interaction flags are off, source-sync and staged-refresh jobs are on, the deployment is Ready, and/api/healthstill advertises the exact accepted v1 contract.The accepted terminal summary was observed at
2026-10-14T01:33:41Z. Per the immutable runbook, the post-canary soak therefore completes no earlier than2026-10-15T01:33:41Z. Publication remains blocked only on that soak, the final pre-publication recheck, and release publication/reinstall.jeffhuber commentedon Oct 14, 2026
The retained v1.6.0 canary now reconciles the local Board projection with authenticated hosted totals and freshness. All acceptance criteria are complete; release soak and publication continue in #1105.