Skip to content

One HTTP method set, homed at its upstream: extdeps.ietf.http_semantics - #12185

Merged
gunbai-bot[bot] merged 14 commits into
mainfrom
session/stern-gull-564
Sep 24, 2026
Merged

gunbai-bot[bot] merged 14 commits into
mainfrom
session/stern-gull-564

Conversation

@gunbai-bot

@gunbai-bot gunbai-bot Bot commented Sep 23, 2026 •

Copy link
Copy Markdown
Contributor

De-fork program (node adhoc-badbfc4d-1ab), first wave.

Decision record: HttpMethod

Pair. std.types HttpMethod (7 arms) and v2.std.network HttpMethod (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_semantics HttpMethod. 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.server parse_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:

consumer TRACE CONNECT
extdeps.http.server parse/label known method known method
extdeps.transports.rest rest_method_verb Read (safe, RFC 9110 §9.3.8) Write (not safe, and the tunnel's traffic is invisible to the grant)
gunbc.auth.approval_broker decision_method_admission retrieves only unsupported
std.effects derive_effect_shape ReadEffect typed refusal: MethodHasNoEffectShape → derive_op_effect answers MethodHasNoOperationEffect

CONNECT names no resource operation, so no EffectShape arm describes it. Any shape there would be invented, and the idempotency obligations downstream would trust it (DESIGN §5). derive_effect_shape now returns MethodEffectShape.

Also removed. std.types TransportRequest / TransportResponse. They were the only std.types use of HttpMethod, 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.types or v2.std.network now 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

  • Control: test.claim.http_method_set_witness. Its discriminating case is connect_and_trace_parse_as_known_methods: on main the parser answers UnknownMethod for both labels. It also covers the round trip of all nine labels, the verbs, and the CONNECT refusal vs. the TRACE read in derive_op_effect.
  • Approval broker: test.claim.approval_broker_witness_test trace_is_refused_as_a_safe_method (exactly RedemptionMethodNotCommitting) and connect_is_refused_as_unsupported (exactly RedemptionMethodUnsupported). At 52e08d7 on srv1 (claim_batch built at that head, --hermetic): 15 PASS, 0 FAIL. Mutation controls in decision_method_admission, each restored afterwards: TRACE → DecisionMethodCommits turns exactly trace_is_refused_as_a_safe_method red, and CONNECT → DecisionMethodCommits turns exactly connect_is_refused_as_unsupported red.
  • Stage0 mirrors are regenerated, not hand-edited (partition list, the std-core root, std_types, std_effects, v1_compiler_effect_derivation, emitted_population, and the new extdeps_ietf_http_semantics). A second --required-regen is 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.parameters is 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 called Filesystem.Write(...) without naming a source, and Filesystem is declared by both std.resources and extdeps.filesystem.filesystem_io. That ambiguous bare read (AmbiguousBareNameRead, surfaced as PureProducerShareRowModuleUnframeable on bash_command_fold) is what dequeued this PR. It now imports extdeps.filesystem.filesystem_io { Filesystem }. This fix has no control, and none can be written today. It is correct by reading the call: .success and .error exist only on the service's Write; the std.resources resource has a lowercase write returning written. 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 to std.resources type-checks and emits green). On v2, there is no resource production and namespace_graft doesn't place service declarations. This is recorded as the fourth specimen of gunbc.recurring_failure_mode surface_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

gunbc-ci-auto-heal and others added 5 commits September 23, 2026 22:45
…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>
@gunbai-bot

gunbai-bot Bot commented Sep 24, 2026

Copy link
Copy Markdown
Contributor Author

Regeneration receipt, at head 0be933b (run on srv1 by neat-boar-16):

  • Installed only this change's mirrors: gunbc_stage0_crate_partition_generated.rs, extdeps_ietf_http_semantics.rs (new), the std-core lib.rs (via --emit-partition-crates --write, written=1), emitted_population.rs, std_types.rs, std_effects.rs, v1_compiler_effect_derivation.rs. The other drift a --required-regen shows on main (std_integer, std_machine_constraints, v1_compiler_infer_resolve, v1_compiler_emit_rust) belongs to other lanes and is not in this PR.
  • The partition .dag was regenerated by generated_artifact_gate main_wet_one (ci auto-heal e8a3417 had committed the identical change).
  • A second --required-regen is byte-identical for every installed file.
  • claim_batch --hermetic over test.claim.http_method_set_witness, effects_witness, approval_broker_witness and http_serve_route_witness: 34 PASS, 0 FAIL.
  • The rulesets change (c06d84c) fixes a latent optional-into-required argument that the floor refused once this PR brought the module into its checked set.

@gunbai-bot
gunbai-bot Bot marked this pull request as ready for review September 24, 2026 02:48
gunbc-ci-auto-heal and others added 2 commits September 24, 2026 03:23
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>
@gunbai-bot
gunbai-bot Bot added this pull request to the merge queue Sep 24, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Sep 24, 2026
gunbc-ci-auto-heal and others added 3 commits September 24, 2026 11:45
# 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
gunbc-ci-auto-heal and others added 4 commits September 24, 2026 13:27
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
gunbai-bot Bot added this pull request to the merge queue Sep 24, 2026
Merged via the queue into main with commit 60b78b4 Sep 24, 2026
5 checks passed
@gunbai-bot
gunbai-bot Bot deleted the session/stern-gull-564 branch September 24, 2026 19:49
@briansrls
briansrls restored the session/stern-gull-564 branch September 24, 2026 19:51
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>
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.

0 participants