Repository navigation
One HTTP method set, homed at its upstream: extdeps.ietf.http_semantics - #12185
Merged
Merged
Conversation
…cs (RFC 9110 §9 + RFC 5789) std.types declared HttpMethod with seven arms and v2.std.network with nine. Neither was the authority: the method set is an IETF fact. Both declarations are deleted and the one declaration lives in extdeps.ietf.http_semantics, citing RFC 9110 section 9 and RFC 5789 (PATCH). CONNECT and TRACE are now nameable by every consumer that was written over the seven: - extdeps.http.server: the wire parser and label renderer read all nine. - extdeps.transports.rest rest_method_verb: TRACE reads (safe, 9.3.8); CONNECT needs Write. - gunbc.auth.approval_broker: TRACE only retrieves; CONNECT is unsupported. - std.effects derive_effect_shape: TRACE is a ReadEffect. CONNECT names no resource operation, so it gets a typed MethodHasNoEffectShape and derive_op_effect answers MethodHasNoOperationEffect, rather than any invented shape. std.types TransportRequest/TransportResponse had no consumers and were the only std.types use of HttpMethod (keeping them would have made an import cycle through std.decl_ref); deleted. Importers repointed at the one declarer. Control: test.claim.http_method_set_witness. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…present one rule.parameters is RulesetRuleParametersWire? and was passed straight to the required_status_checks and merge_queue missing-field checks, which take the record. The floor refused both call sites once this PR brought the module into its checked set (it uses the bare GET whose declarer moved). An absent parameters object now reports missing: ["parameters"]. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ects reaches it Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Ledger-Repair-Judged: docs/design-rung-drops.md Heal-Candidate-Run: 35937320724
…crates, std-core root) Regen order that fits the compiled-in partition: partition .dag (already on the branch via heal), then --required-regen installing only the partition mirror and the new module mirror, rebuild, --emit-partition-crates --write (std-core lib.rs gains the module; std-surface reaches it through pub use v1_stage0_std_core::*), then the remaining regenerated mirrors. Main's release_locus lib.rs drift is left untouched; #12183 reconciles it on main. Run on srv1 at cd1ec89 (MemoryMax=40G scope, private TMPDIR and target): a second --required-regen is byte-identical for every installed mirror; claim_batch --hermetic over http_method_set_witness, effects_witness, approval_broker_witness, http_serve_route_witness: 34 PASS, 0 FAIL. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Contributor
Author
|
Regeneration receipt, at head 0be933b (run on srv1 by neat-boar-16):
|
An arm insertion keyed on an 8-space line also matched inside the 10-space line, so the TypedBoundary match got the arm twice (once mis-indented). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…unsupported Both arms were live in decision_method_admission with no witness, so a mutation letting either method commit stayed green. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
github-merge-queue
Bot
removed this pull request from the merge queue due to failed status checks
Sep 24, 2026
# Conflicts: # src/v1/stage0/src/emitted_population.rs # src/v1/stage0/src/std_types.rs
Main's #11730 also changed std.types; the merge conflicted in both mirrors. Regenerated by --required-regen from the merged .dag; a second regen is byte-identical. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
# Conflicts: # dag/gunbc/stage0/stage0_crate_partition_generated.dag # src/v1/stage0/src/emitted_population.rs # src/v1/stage0/src/gunbc_stage0_crate_partition_generated.rs
It calls Filesystem.Write without naming a source, and Filesystem is declared by both std.resources and extdeps.filesystem.filesystem_io. A claim scope reaching this module refuses AmbiguousBareNameRead; the floor on #12185 reached it through bash_command_fold. Its sibling runner modules import std.resources { Filesystem }. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
The committed partition .dag lacked the module row, and required-regens
…service, not std.resources' resource Filesystem.Write(...) with .success/.error is the service operation; the std.resources resource has a lowercase write capability returning written. The previous import type-checked only because the service-receiver stamp joins on the bare name. That join is recorded as the fourth specimen of gunbc.recurring_failure_mode surface_shorthand_preempts_resolved_identity. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…'s red is unauthorable today; name both triggers Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
gunbai-bot Bot
pushed a commit
that referenced
this pull request
Sep 24, 2026
…#12185) in ntfy and the broker serve; enrolment step kept in the job list beside main's relocated Mt. Collins boot steps; fleet-converge.yml main's side pending regen Co-Authored-By: Claude Opus 5.5 (1M context) <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.
De-fork program (node adhoc-badbfc4d-1ab), first wave.
Decision record: HttpMethod
Pair.
std.typesHttpMethod(7 arms) andv2.std.networkHttpMethod(9 arms). The Phase 0 census first called the pair IDENTICAL, but that compared body text. The arm sets differ: v2 adds CONNECT and TRACE. So the v2 set is a strict superset, and the std set was an incomplete transcription, not a narrower concept.Dominant. Neither. The request-method set is an IETF fact, so under DESIGN §3 (external upstream decomposition) its home is an extdeps module that cites the spec. There are no re-exports: both std declarations are deleted, and the one declarer is
extdeps.ietf.http_semanticsHttpMethod. It cites RFC 9110 §9 and, separately, RFC 5789 for PATCH, which is not an RFC 9110 method. WebDAV and the other IANA-registry extension methods are not modeled; a wire label outside the set still refuses by name (extdeps.http.serverparse_http_method_label→UnknownMethod). DFS first: no existing module (extdeps.http.server,extdeps.http.client,extdeps.bmc.http) already carried the set.What the two new arms mean at each consumer that matched over the seven:
extdeps.http.serverparse/labelextdeps.transports.restrest_method_verbRead(safe, RFC 9110 §9.3.8)Write(not safe, and the tunnel's traffic is invisible to the grant)gunbc.auth.approval_brokerdecision_method_admissionstd.effectsderive_effect_shapeReadEffectMethodHasNoEffectShape→derive_op_effectanswersMethodHasNoOperationEffectCONNECT names no resource operation, so no
EffectShapearm describes it. Any shape there would be invented, and the idempotency obligations downstream would trust it (DESIGN §5).derive_effect_shapenow returnsMethodEffectShape.Also removed.
std.typesTransportRequest/TransportResponse. They were the onlystd.typesuse ofHttpMethod, they have no consumers anywhere, and keeping them would have created an import cycle (std.types→extdeps.ietf.http_semantics→std.decl_ref→std.types).Importers. Every explicit import of the method names from
std.typesorv2.std.networknow points at the one declarer. Files that use a method arm without importing it are left alone: they resolve through corpus-wide lookup, and that lookup now sees one declarer where it saw two. Explicit-import hygiene belongs to the namespace-cut program, and a sweep here would be the file-by-file import sweep the program brief rules out.Evidence
test.claim.http_method_set_witness. Its discriminating case isconnect_and_trace_parse_as_known_methods: on main the parser answersUnknownMethodfor both labels. It also covers the round trip of all nine labels, the verbs, and the CONNECT refusal vs. the TRACE read inderive_op_effect.test.claim.approval_broker_witness_testtrace_is_refused_as_a_safe_method(exactlyRedemptionMethodNotCommitting) andconnect_is_refused_as_unsupported(exactlyRedemptionMethodUnsupported). At 52e08d7 on srv1 (claim_batch built at that head,--hermetic): 15 PASS, 0 FAIL. Mutation controls indecision_method_admission, each restored afterwards: TRACE →DecisionMethodCommitsturns exactlytrace_is_refused_as_a_safe_methodred, and CONNECT →DecisionMethodCommitsturns exactlyconnect_is_refused_as_unsupportedred.std_types,std_effects,v1_compiler_effect_derivation,emitted_population, and the newextdeps_ietf_http_semantics). A second--required-regenis byte-identical; the full receipt is in the PR comment. At that regen (0be933b) the four affected test files (http_method_set_witness,effects_witness,approval_broker_witness,http_serve_route_witness) gave 34 PASS, 0 FAIL.Fixes the queue surfaced (separate commits)
extdeps.github.rulesets:rule.parametersis optional (RulesetRuleParametersWire?) but was passed to the required-status-checks and merge-queue missing-field checks, which require the record. An absent parameters object now reports...ParametersIncomplete { missing: ["parameters"] }. The floor refused both call sites once this PR brought the module into its checked set.gunbc.runner_guest_image: it calledFilesystem.Write(...)without naming a source, andFilesystemis declared by bothstd.resourcesandextdeps.filesystem.filesystem_io. That ambiguous bare read (AmbiguousBareNameRead, surfaced asPureProducerShareRowModuleUnframeableonbash_command_fold) is what dequeued this PR. It now importsextdeps.filesystem.filesystem_io { Filesystem }. This fix has no control, and none can be written today. It is correct by reading the call:.successand.errorexist only on the service'sWrite; thestd.resourcesresource has a lowercasewritereturningwritten. A test that goes red on the wrong import can't be written on any route yet. On the seed, the service-receiver stamp matches by bare name (the defect: a wrong import tostd.resourcestype-checks and emits green). On v2, there is noresourceproduction andnamespace_graftdoesn't place service declarations. This is recorded as the fourth specimen ofgunbc.recurring_failure_modesurface_shorthand_preempts_resolved_identity, with both capabilities as triggers: (a) the seed stamp matches owner module plus name, which is being dispatched as its own lane with a two-declaration seed fixture control; (b) v2 service grafting plus a resource production.🤖 Generated with Claude Code