backlog: decline 250 and 251 — external tooling does not drive MessageFoundry - #92
Merged
Conversation
wshallwshall
enabled auto-merge (squash)
July 31, 2026 01:20
…geFoundry Owner ruled on 250 (frozen ops OpenAPI + messagefoundry-ops wheel): "a customer can drive MessageFoundry from tooling they already run" is a bad idea. Rejected. The premise is refused, not the price. The ~6-week estimate was never the question, so both items are marked declined-by-design rather than deferred, and neither is to be re-scored. 251 falls with it. It is the same idea in reduced form -- MessageFoundry exposed as tasks inside a customer's existing Kestra instance is exactly a customer driving MessageFoundry from tooling they already run. Read-only scope and ticket-not-replay narrow the blast radius; they do not change the direction of control, which is the thing refused. Its own precondition, "only if 250 is funded first", is independently unmet. 251's banner records that the owner ruled on 250 and that this session extended the ruling, rather than presenting it as a second ruling. If the intent was to refuse only the OpenAPI/wheel and keep a reduced Kestra form alive, that banner is the correction point. Two notes to stop this being reopened on the wrong grounds: 250 carried an unresolved buyer question -- the source memo's ranking assumed a small-team buyer and inverted for health systems with platform teams. That question is now moot for this item and is explicitly NOT why it was declined. A later session must not reopen it by claiming the assumption has since been settled. The ruling is about direction of control, not about whether an interface exists. 249 (--format mermaid|dot off graph --json) is untouched and stays open: MessageFoundry drives that itself and merely emits, so nothing external drives anything. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
wshallwshall
force-pushed
the
decline-ops-api
branch
from
July 31, 2026 01:23
2e6e0bd to
535b152
Compare
wshallwshall
added a commit
that referenced
this pull request
Jul 31, 2026
…o trackers (#95) Three independent doc defects, all verified against origin/main before editing. 1. BACKLOG #96 carried three pieces of capacity guidance that ADR 0074's 2026-07-14 validity re-check found measured-false and unsafe, and the correction never landed - it sat only on a stranded commit (bd969b0e) in a ref namespace whose remote no longer exists. B14 named four downstream artifacts; three were amended on 2026-07-14 and #96 was the last one left, so ADR 0074 required-change 13 still read as fully outstanding. Corrected here: the sum-across-interfaces aggregate rule (measured-false, ~11x over-report - 16 lanes summed predicts 960/s against a measured 87/s); the "only trustworthy success gate", which over-reports 3-5.5x on its own and needs the non-filling companion #96 already named; and the poller-zero remedy, which is circular. Adds the BUILD GATED (measurement layer) advisory and marks the quick-win/Difficulty-5 score as no longer trustworthy. ADR 0074 B14 and required-change 13 are closed out to match. Deviations from bd969b0e, each deliberate: it used a leading ⛔ banner, which the backlog checker reads as a CLOSED status against #96's OPEN 🔢 banner and fails "item contradicts itself" -⚠️ is the sanctioned non-status advisory glyph, per the ⛔+⚠️ stacking that landed in #92. Its "11 open decisions" count is unsourced (the Amendment lists 14) and is dropped rather than restated. Two of its quotations were inexact and are corrected against the file. "zero code" became "only TOML comments, zero code" - the grep returns 10 TOML hits and no Python. 2. BACKLOG #171, #131 and #127 carried only their pre-build demand-gate banners although work has shipped. Each gets an AMENDED banner rather than a close, because verification refuted a full close in all three cases: #171's API half is built but its console half is dead code (app.js registers the handlers, no page emits the attributes, and the /ui routes do not exist); #131 built the connection flag and the Flagged-only filter, but "every configuration object" is a scope fork ADR 0007 ratified deliberately; #127 built Basic, and Digest for http destinations, while NTLM and Windows are refused at construction and recorded as deferred - so this is explicitly not four-scheme parity. 3. The demand-gate tracker claimed 11 lanes "Not started" that have all shipped. Each lane was verified individually by ADR status plus code symbol; the public history is snapshot-collapsed across the 2026-07-17..24 window, so no merge SHA can be cited for any of them. Verified: tests/test_backlog_status_check.py (15 passed, including test_the_real_backlog_satisfies_the_invariant, which the ⛔ form fails), plus the ledger, runbook, doc-ref and doc-drift suites - 100 passed, 89 skipped. Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Owner ruled on #250 (frozen ops OpenAPI +
messagefoundry-opswheel):The premise is refused, not the price
The ~6-week estimate was never the question. Both items are marked ⛔ declined-by-design, not deferred, and neither is to be re-scored.
#251 falls with it
#251 is the same idea in reduced form — MessageFoundry exposed as tasks inside a customer's existing Kestra instance is a customer driving MessageFoundry from tooling they already run. Read-only scope and ticket-not-replay narrow the blast radius; they don't change the direction of control, which is the thing refused. Its own precondition — "only if #250 is funded first" — is independently unmet.
Provenance is stated in the banner, not blurred: the owner ruled on #250; this session extended it to #251 as a consequence plus an unmet precondition, not as a second ruling. If the intent was to refuse only the OpenAPI/wheel and keep a reduced Kestra-only form alive, that banner is the correction point.
Two guards against reopening on the wrong grounds
1. The buyer question is moot, and is not why this was declined. #250 carried an unresolved assumption — the source memo's ranking assumed a small-team buyer and inverted for health systems with platform teams. The owner declined on the shape of the integration, without needing that answered. Recorded explicitly so a later session can't reopen the item by claiming the assumption has since been settled.
2. The ruling is about direction of control, not about whether an interface exists. #249 (
--format mermaid|dotoffgraph --json) is untouched and stays open — MessageFoundry drives that itself and merely emits. Nothing external drives anything. That line is drawn in #250's banner so the next reader doesn't over-apply the decline to every CLI surface.Verification
Docs-only, +10/−4 in one file. No code, no number allocated.
🤖 Generated with Claude Code