Classify resolved addresses at the pinned transport; model control-plane and audit boundaries - #390
Merged
Merged
Conversation
The kb resolver admits the IPv4-translated ::ffff:0:0:0/96 form of loopback and private addresses, IPv6 outside 2000::/3, and 192.88.99.0/24. pinnedHttpsFetch now checks every resolved answer with Ghostget's own allowlist classifier before choosing a socket address. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
An independent Python generator restates the IANA special-purpose table and writes verdicts for block edges, seeded random addresses, embedded IPv4 forms, and several text forms. The TypeScript classifier must match every vector, and the kb classifier, a table missing any row, and a lenient text parser each miss vectors. Property tests cover text-form invariance, embedded forms, and space outside 2000::/3. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…dent of planned claims The owner model writes through the private state layer, so 30 runs need more than the default 10-second interrupt budget. The register tests picked a planned claim of each layer to re-evidence; once a layer has none left they now take any claim at that layer. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
A fast-check command model sends requests through WebGateway and the real ActivityStore with a scripted transport: success, HTTP error, redirect, oversized bodies, revocation before and after dispatch, network error, a denying rule, failed start and final audit writes, and a crash in flight followed by recovery. Four source mutants, each killed by the model, remove the durable start, swallow a failed final audit, return redirects, and skip crash recovery. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…d Connections Extract the helper's inline shutdown into settleHelperShutdown with the same order, and model it and Connections.close with fc.commands. Evidence the gateway audit and shutdown claims, with mutants for each. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Consume expired or drifted plans under managed permissions, extend the model to realm and contract changes, and register the two authority mutants. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…rol-auth # Conflicts: # docs/assurance.md
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
The public-address classification, pinned HTTPS protections, helper ownership and shutdown models, and permission changes measure 23,470,959 unpacked bytes on this branch across the unchanged 596-file inventory; the Linux package job measured the same. Restores the reviewed allowance.
…rol-auth # Conflicts: # docs/assurance.md # kb/plans/formal-verification-assurance.md # verification/mutants.json
The packed smoke caught that src/pinned-https.ts imports ./public-address but the file was missing from the package file list, so every installed CLI command that loads it failed. Add it to the files list; the package now measures 23,477,699 unpacked bytes across the 597-file inventory. The TUI smoke's CONTROL_DISCONNECTED was the same missing module killing the packed helper.
…rol-auth # Conflicts: # docs/assurance.md # scripts/npm-release-workflow.test.ts # scripts/package-budget.ts
…rol-auth # Conflicts: # docs/assurance.md # scripts/verification-claims.test.ts
This branch was successfully deployed
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.
The web gateway's pinned transport trusted the resolver's own public/non-public classification; a resolver that under-reported (or that returned a public name for a private address) would let a retrieval URL reach a private target. The gateway now classifies every resolved address itself and refuses non-public ones, with golden vectors generated by the standard-library Python oracle. The lane also models the helper owner's live-owner and lost-race handling, connection shutdown, the web gateway's durable audit boundary, and the operation-authority sequencer over the production code.
Claims moved (8)
verification/vectors/addresses.json(6,375 generated cases) compared against the TypeScript inscripts/verification-vectors.test.tsConnectionsmanaged-confirm-keeps-drifted-plangrant-digest-ignores-closureEvidence and how the evidence fails when broken
verification/vectors/generate.py(stdlib-only) emits every generated address family edge — documentation ranges, IPv6 forms, mapped/embed cases, malformed inputs — andscripts/verification-vectors.test.tsasserts the TypeScript agrees byte-for-byte.pinned-https-trusts-resolver-classifier,public-address-admits-all-ipv6,helper-owner-ignores-live-owner,helper-owner-ignores-lost-race,web-gateway-dispatch-without-audit,web-gateway-output-despite-failed-audit,web-gateway-returns-redirect,activity-recovery-keeps-started,helper-shutdown-skips-settle,helper-shutdown-aborts-after-settle,connections-close-keeps-attempts,managed-confirm-keeps-drifted-plan,grant-digest-ignores-closure— each must fail exactly its named test on the seeded nightly run.verification/seeds/corpus.json.Defects found
src/public-address.ts(new) now classifies resolved addresses itself andsrc/pinned-https.ts/src/runtime.tsrefuse non-public targets;src/public-address.test.ts(+124) plus the generated vectors pin the boundary.Package budget
src/public-address.tsand thepinned-https/runtimetouch ship in the package;bun run verify:packageon this head is the budget check. Verification vectors and models stay out of the package.CI cost
The vectors test compares the full generated corpus each run; the stateful models are helper-heavy bounded schedules. The 13 new mutants run only in the nightly source-mutation job (outside
Required).Not covered
🤖 Generated with Claude Code