release/consolidation-2026-06-26: weft-seam conformance + project-root artifacts#69
Open
tachyon-beep wants to merge 90 commits into
Open
release/consolidation-2026-06-26: weft-seam conformance + project-root artifacts#69tachyon-beep wants to merge 90 commits into
tachyon-beep wants to merge 90 commits into
Conversation
This ensures that the output of these potentially unsafe deserialization functions correctly sheds validation provenance (becomes `UNKNOWN_RAW`) in the taint propagation logic. Co-authored-by: tachyon-beep <544926+tachyon-beep@users.noreply.github.com>
Bumps the actions-minor-patch group with 1 update: [pypa/gh-action-pypi-publish](https://github.com/pypa/gh-action-pypi-publish). Updates `pypa/gh-action-pypi-publish` from 1.13.0 to 1.14.0 - [Release notes](https://github.com/pypa/gh-action-pypi-publish/releases) - [Commits](pypa/gh-action-pypi-publish@ed0c539...cef2210) --- updated-dependencies: - dependency-name: pypa/gh-action-pypi-publish dependency-version: 1.14.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: actions-minor-patch ... Signed-off-by: dependabot[bot] <support@github.com>
Bumps [actions/configure-pages](https://github.com/actions/configure-pages) from 5 to 6. - [Release notes](https://github.com/actions/configure-pages/releases) - [Commits](actions/configure-pages@v5...v6) --- updated-dependencies: - dependency-name: actions/configure-pages dependency-version: '6' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com>
Bumps [actions/deploy-pages](https://github.com/actions/deploy-pages) from 4 to 5. - [Release notes](https://github.com/actions/deploy-pages/releases) - [Commits](actions/deploy-pages@v4...v5) --- updated-dependencies: - dependency-name: actions/deploy-pages dependency-version: '5' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com>
Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 7. - [Release notes](https://github.com/actions/checkout/releases) - [Commits](actions/checkout@v4...v7) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: '7' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com>
Bumps [astral-sh/setup-uv](https://github.com/astral-sh/setup-uv) from 7.6.0 to 8.2.0. - [Release notes](https://github.com/astral-sh/setup-uv/releases) - [Commits](astral-sh/setup-uv@37802ad...fac544c) --- updated-dependencies: - dependency-name: astral-sh/setup-uv dependency-version: 8.2.0 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com>
The waiver_add entity_symbol path resolves a qualname through Loomweave (SeiResolver.detect + resolve_locator) before writing the waiver — an outbound/loopback network side effect. But the tool declared only READ|WRITE and _effective_tool_capabilities had no waiver_add branch, so ToolPolicy never denied it under allow_network=false: any client allowed the write tools could trigger signed Loomweave requests despite the network being fenced off. Add a waiver_add branch that declares NETWORK under the exact predicate that fires the resolve — entity_symbol present, entity_id absent (entity_id wins and is carried opaque), and a Loomweave URL configured — mirroring the scan/explain_taint/dossier gates. Also align the handler so it only builds the Loomweave client when entity_symbol and not entity_id, matching the declared side effect. resolve_entity_binding_input is the sole network path in _waiver_add (add_waiver is a local FS write); the gate is a precise, fail-closed match. Regression tests: entity_symbol under no-network policy is denied before the handler runs; entity_id-only and entity_id-wins-over-symbol stay ungated. Closes wardline-14359d070b. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The Level-2 branch-join merges deduplicated candidates with a nested linear scan of the growing candidate list: `any(lam is seen for seen in bucket)` in _merge_branch_bindings and `if fqn not in bucket` in _merge_branch_types. That is O(bucket) per insert, O(bucket**2) per merge. Across a chain of N one-armed branches rebinding the same name (`if flagK: cb = lambda c: sinkK(c)`), the candidate set grows to N over N merges -> O(N**3). An attacker-authored file with ~1100 such branches drove a DEFAULT-gate scan to ~15s, exhausting CPU on every local and CI run (wardline-c797baf28b). Both merges now dedup via a per-name identity/equality set: O(1) per insert, O(bucket) per merge, O(N**2) cumulative. The change is behavior-identical -- same candidate set, same first-seen insertion order, same dedup semantics -- so no false negative is introduced. A cap was deliberately avoided: dropping candidates would be an FN, against this module's no-FN discipline; this mirrors the d7ecb90 precedent of eliminating the complexity soundly rather than capping. The 1100-branch PoC drops 4.388s -> 0.080s (55x); the var_types sibling 1.015s -> 0.037s (27x). Full scanner suite (1363 tests) stays green. Tests: - test_lambda_candidate_merge_is_not_cubic_on_chained_rebinds (DoS guard) - test_var_type_candidate_merge_is_not_cubic_on_chained_rebinds (sibling) - test_chained_one_armed_rebinds_keep_every_lambda_candidate (no-FN lock) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Passed `_SAFE_GIT_CONFIG = ("-c", "core.fsmonitor=false")` to all untrusted Git subprocess executions in delta and legis.
Co-authored-by: tachyon-beep <544926+tachyon-beep@users.noreply.github.com>
Passed `_SAFE_GIT_CONFIG = ("-c", "core.fsmonitor=false")` to all untrusted Git subprocess executions in delta and legis.
Co-authored-by: tachyon-beep <544926+tachyon-beep@users.noreply.github.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…post-anchor Also rebind the glossary line-anchors (run.py 486->485, 496->495, 551->550, 643->642) shifted by the one-line-shorter message. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ged block Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ot-aware Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…t_for; fix scan hint+docstring Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…oot anchor paths.artifacts_dir confines via resolve+relative_to but no longer rejected a symlinked .wardline dir at the dir layer (Task 2 regression); re-add safe_project_path(project_root, artifact_dir) so a symlinked default artifact dir is refused with 'refusing to write through a symlink' as before. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…nt: True Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…uides) Also rebind scan.py glossary line-anchors shifted by Task 9's scan.py edits. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…e (final review) Final whole-branch review found a cross-task bug: under a custom [wardline.artifacts] dir, a subdir scan still writes to <proj>/.wardline/ (its config comes from the scan path, not the project root), but doctor loaded the project-root custom dir and therefore neither gitignored nor recognized <proj>/.wardline/ as standard — deleting the tool's own output. Fix: doctor treats BOTH the configured dir AND the default .wardline as standard-and-ignored (a standard_dirs set). Also: align the symlinked- .gitignore exit code across CLI/JSON/MCP; document topdown=True as load-bearing; CHANGELOG/weft.md doc nits. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…-2026-06-25 Project-root-anchored scan artifacts + wardline doctor hygiene. Spec + plan adversarially reviewed; 11 TDD tasks + 2 fixes, each per-task reviewed; opus whole-branch review (one cross-task bug found + fixed). Full suite: 4348 passed, ruff+mypy clean. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Audit of all 40 weft seams across the 5 Loom repos found only 1 at the SEI bar. This lands the program plan (9 phases, merge+publish) and the reusable 'weft seam conformance kit' (frozen contract + golden-vector oracle + fail-closed CI + two-layer drift alarm) that generalizes the SEI program. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
seam_registry.json records all 40 seams with an honest bar_verdict (gap/partial/at_bar/deferred/one_sided_na) copied from the audit; the strict at_bar gate downgrades the lone audit-'gold' seam to partial, so the true starting floor is zero at_bar. test_seam_registry.py is a hermetic, unmarked (default-suite, fail-closed) lie-detector: it parses the REAL three marker sources (pyproject markers + addopts exclusion + _live_oracle.LIVE_ORACLE_MARKERS, no hardcoded mirror), and an at_bar row must have a real oracle test, a seam-applied marker, and (two-sided) either a byte-pinned drift test or a signed-vector pin. _e2e and _drift markers are classified distinctly. A fabricated at_bar row REDs. Known follow-on (documented in the test docstring): rust_e2e is absent from LIVE_ORACLE_MARKERS (a 1-line src fix, deferred to its phase since P0 is purely additive). Maps to wardline-79ba05f464 / the P8 CI sweep. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…99aaa2d) The three federation clients (filigree_emit, dossier_client, loomweave client) each hand-rolled the same urllib Request/urlopen/error-mapping boilerplate. Extract a parameterized WeftHttp transport into core/http.py (reusing the existing bounded read_response_text) and migrate all three onto it — behavior-preserving: - each client keeps its own scheme-rejection exception type + verbatim message (via a per-call scheme_error builder), its >=400 vs URLError handling, and its fail-soft/fail-hard policy (URLError/OSError propagate, never swallowed by the transport) - dossier's HTTPError->status (not 'unreachable') and the transport= + call-time-urlopen test injection seams are preserved - no redirect/host policy added (no client had one; adding it would change behavior) — allowed_schemes/scheme_error are the extension seam Existing client tests unchanged and green; +WeftHttp unit tests + a loomweave scheme-rejection test. Full suite 4221 passed, ruff+mypy clean. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ardline-80e457bc41)
The {filigree_emit, loomweave_write} status block (and its MCP $defs) was
hand-duplicated across MCP, CLI scan, scan-job, scan-file, and agent-summary.
Extract one canonical module core/federation_status.py holding BOTH the
runtime builders and the JSON-schema source; migrate every site onto it.
Behavior-preserving (proven byte-identical per surface via before/after golden
snapshots): MCP keeps its wider transport-detail shape + key order; CLI/scan-job
keep theirs; not-configured semantics unchanged. test_mcp_structured_output.py
stays green and UNEDITED.
New tests/conformance/test_federation_status_envelope_parity.py (unmarked,
default-suite, fail-closed) pins every surface to the canonical builder AND the
MCP $defs to the schema source — and validates the configured runtime block
against the canonical schema, so a future producer key that would violate
additionalProperties:false now fails loudly (the {**block} passthrough is kept
deliberately so drift surfaces rather than being silently dropped).
Glossary line citations in finding-lifecycle-vocabulary.md re-synced (the dedup
shifted cited line numbers); discipline test updated in lockstep. Full suite
4240 passed, ruff+mypy clean.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…er byte-pin (P2-W1) The SEI seam was partial: the vendored oracle fixture had no Layer-1 byte-pin and its drift recheck skipped clean. Add, mirroring the loomweave_drift Rust qualname precedent: - Layer-1: UPSTREAM_BLOB_SHA git-blob pin of sei-conformance-oracle.json, asserted UNMARKED in the default suite (reds on any 1-byte fixture change, proven via a tampered /tmp copy) - Layer-2: a sei_drift-marked recheck that BYTE-compares the vendored fixture against the loomweave source (WARDLINE_LOOMWEAVE_REPO), skip-clean when the sibling is absent; sei_drift registered in pyproject markers + addopts exclusion (NOT LIVE_ORACLE_MARKERS, per the _drift taxonomy) seam_registry.json row flipped partial->at_bar; the P0 gate verifies the real byte-pinned drift_test + applied marker, so the flip is honest (registry now 1 at_bar). Full suite 4240 passed, ruff+mypy clean. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…-axis byte-pins) (P3) The qualname-parity seam was partial: it had the hermetic corpus + the Rust loomweave_drift byte-pin, but lacked (a) a fail-closed LIVE-wire oracle and (b) any byte-pin on the Python axis (vendored loomweave_qualname_parity.json). - Add a loomweave_e2e live oracle (tests/e2e/test_loomweave_live.py) asserting wardline's qualname dialect against a live loomweave for a known entity; skip-clean locally, fail-closed under WARDLINE_LIVE_ORACLE_REQUIRED=1. - Add the Python-axis Layer-1 byte-pin (VENDORED_BLOB_SHA, default-suite, reds on a 1-byte change) + a loomweave_drift Layer-2 recheck that compares substantive content against the upstream sibling, ignoring the vendored _wardline_provenance/ wrapper (fails closed on new upstream sections). - Correct the live-test docstring overclaim (only the module-dialect half is computed live; the symbol suffix is literal). seam_registry.json row flipped partial->at_bar, honest on BOTH axes (verified: each axis's pin reds on tamper). Registry now 2 at_bar. Full suite 4241 passed. Known follow-on: the gate inspects a single drift_test field, so a multi-axis row's secondary pin is real-but-not-gate-enforced — a keystone hardening item (low blast radius: this is the only multi-axis row). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…e gate Advance three wardline-CONSUMER seams to at_bar via the proven vendor+byte-pin pattern (Layer-1 default-suite pin + Layer-2 _drift recheck vs the peer source, skip-clean when absent), gate-adjudicated honest: - Weft canonical reason-vocabulary (consumer of the weft-hub contract) — reason_vocab_drift - WEFT_FEDERATION_TOKEN bearer-token auth (consumer of filigree's contract) — filigree_token_drift - Warpline reverify-worklist (consumer of warpline's v1 schema) — worklist_drift Gate (test_seam_registry.py) STRENGTHENED to enforce what these rows claim: - multi-axis rows: every additional_drift_tests axis must carry its own Layer-1 byte-pin (closes the multi-axis blind spot the qualname row exposed) - self_authored_restatement rows: the drift_test must carry a SUBSTANTIVE authority-side recheck (a registered-but-no-op _drift can't earn at_bar) SEI drift-source resolution aligned to the same exclusive-env-precedence contract as the qualname recheck (consistent _drift semantics). 3 new _drift markers registered (pyproject markers + addopts exclusion, NOT LIVE_ORACLE_MARKERS). Registry now 5 at_bar. Full suite 4254 passed, ruff+mypy clean; each new byte-pin proven to red on tamper. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ma freeze MCP B1/B2 was partial: its oracle validated output against the SAME in-process schema (circular). Freeze the 18-tool outputSchema surface to a committed golden (mcp_output_schemas.golden.json) + a VENDORED_BLOB_SHA Layer-1 byte-pin and an independent EXPECTED_TOOLS surface pin — any schema change must land as a reviewable golden re-vendor. This breaks the circularity (assert live == golden, not live == live). Gate extension (tight, no fail-open): a one-sided (two_sided=false) byte_golden_corpus at_bar seam is exempt from the live-oracle MARKER rule (it has no peer wire) BUT must pass a new _assert_at_bar_one_sided_golden_fail_closed — its oracle_test must carry a real Layer-1 byte-pin and run in the default suite (not excluded by any addopts marker). Verified the negative case: a one-sided golden row WITHOUT a byte-pin is REJECTED by the gate. Registry now 6 at_bar. Full suite 4254 passed; MCP golden reds on tamper. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…uthority producer freeze) Completes the wardline producer side of the suppression-state filter seam (filigree's consumer side landed in its own repo: byte-pin + non-circular grammar oracle + drift recheck). Wardline is the AUTHORITY (owns the SuppressionState vocabulary). A byte-pin of its own contract is circular, so the gate gains a tight self_authored_producer case: such an at_bar row's drift_test must carry a PRODUCER-SOURCE recheck — an in-process import of a wardline runtime symbol + an assertion tying it to the vendored contract (here: SuppressionState enum values == contract states). The byte-pin alone (wardline-pins-wardline) does NOT satisfy it. Gate extension (test_seam_registry.py), tight by construction: - _has_producer_source_recheck requires an imported wardline symbol referenced in the == / in assertion (the byte-pin's own sha assert can't satisfy it) - marker-exempt ONLY when paired with the recheck (never a free pass) - schema enforces self_authored_producer => two_sided, and mutual-exclusion with self_authored_restatement Negative cases verified (mine + the build's): byte-pin-only, sha-assert-decoy, one-sided, and both-flags rows are all REJECTED. Registry now 7 at_bar. Full suite 4255 passed; byte-pin reds on tamper. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…-repo) + close gate fail-open Wardline producer side of the scan-results wire seam: freeze a representative POST /api/weft/scan-results body (authored from build_scan_results_body) to a committed golden + Layer-1 byte-pin + a producer-source recheck that re-invokes build_scan_results_body and asserts == golden (non-circular). Row -> at_bar (self_authored_producer). Filigree's consumer side (its own repo) drives the REAL intake (_parse_scan_results_body -> db.process_scan_results -> read-back). Gate hardening (closes a latent fail-open the review found): the two-sided byte_golden_corpus/self_authored_producer branch now carries the same excluded-marker guard as the one-sided and shared_signed_vector branches — so a future pytestmark edit can't silently DESELECT a seam's byte-pin + recheck while the registry still certifies at_bar. Verified: marking the protective test filigree_e2e now REDS the gate. Registry now 8 at_bar. Full suite 4257 passed; byte-pin reds on tamper. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Wardline producer side of the fingerprint/qualname/spans identity seam: freeze identity vectors GENERATED FROM the live producers (compute_finding_fingerprint, format_fingerprint/FINGERPRINT_SCHEME wlfp2, _to_wire_qualname, to_jsonl) to a golden + Layer-1 byte-pin + a producer-source recheck that re-invokes those real producers and asserts == golden (non-circular). Vectors cover the join-key soundness property (same rule/path/qualname, differing taint_path -> DISTINCT fingerprints), :setter qualname normalization, and Rust :: / null-column spans. Row -> at_bar (self_authored_producer). Registry now 9 at_bar. Filigree's consumer side (own repo) drives the REAL fingerprint join (process_scan_results -> find_finding_by_fingerprint); proven non-circular by a forced collision collapsing the real dedup 5->4. Full suite 4262 passed; byte-pin reds on tamper. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…Rust consumer) Wardline producer side of the wardline->loomweave wardline-taint-1 seam: freeze a taint-fact blob GENERATED FROM the real build_taint_facts (loomweave/facts.py) to a golden + Layer-1 byte-pin + a producer-source recheck re-invoking build_taint_facts (non-circular). Honestly scoped: pins the deterministic content-only blob (blake3 content_hash, formula fingerprint), NOT the HMAC signature's timestamp/nonce (its deterministic core is already pinned in test_hmac.py against loomweave's auth.rs). Row -> at_bar (self_authored_producer). loomweave's Rust consumer side (own repo) drives the real storage ingest/read. Registry now 10 at_bar; only the ringfenced legis G1 seam remains partial. Full suite 4265 passed; byte-pin reds on tamper. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…epo) Wardline producer side of the trust-vocab descriptor seam: freeze the descriptor GENERATED FROM the live producer (core.descriptor.descriptor_to_yaml / build_vocabulary_descriptor over REGISTRY) to a golden + Layer-1 byte-pin + a producer-source recheck (re-invokes the live serializer == golden, non-circular). Row -> at_bar (self_authored_producer). loomweave GENUINELY consumes this wire: its python plugin load_wardline_descriptor version-gates on wardline-generic-2 (== wardline's REGISTRY_VERSION) and threads the entries into entity_tags — a real cross-tool coupling, not aspirational. Also: the Filigree ephemeral-port seam was assessed and HONESTLY KEPT gap — it's a bare int in a file (str(port)/int(text)) with a fail-soft reader and no freezable contract; any oracle would be tautological. Reasoning recorded on the row's wire field. Registry now 11 at_bar. Full suite 4268 passed; byte-pin reds on tamper; gate enforces the non-circular recheck (gutting it reds the gate). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ar (shared vector) The wardline->legis signed scan-artifact seam was partial: wardline and legis each pinned their OWN golden (wardline_scan_wire.golden.json under GOLDEN_KEY; legis's wardline_scan_artifact.v1.json under test-shared-secret-key) — two independent mirrors that agreed only by hand. A canonical-JSON/HMAC drift on either side re-signed cleanly and broke the other invisibly (the 2026-06-10 G1 incident class). Make the vector genuinely shared: vendor legis's authored vector byte-identical into wardline (Layer-1 VENDORED_BLOB_SHA byte-pin fd4b21b… to legis's blob) and prove wardline's REAL sign_artifact reproduces the byte-exact expected_signature + its REAL project_finding emits the vector finding wire. Both repos now load the SAME bytes; legis drives its real ingest over its copy. Layer-2 legis_scan_artifact_drift recheck re-compares the vendored copy to legis's live source at the release gate. Gate: G1 flips partial->at_bar (byte_golden_corpus, two-sided, non-self-authored). Negative-probed: tampering the vendored vector reds the byte-pin. 314 conformance tests pass; wardline scan --fail-on ERROR exit 0. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
… seams With the legis fence lifted, the legis-involving seams where wardline is NOT a party were brought to the bar in their own repos (legis/loomweave/filigree). The wardline-rooted gate cannot run those oracles, so leaving the rows as bare 'gap' lied about done work. Add a 'peer_conformant' verdict: a documented disposition for a pure peer-to-peer seam, gated to require (a) wardline genuinely not a party, (b) a non-empty peer_conformance evidence string (peer repo + commit + test path), (c) no wardline oracle_test. Negative-probed all three legs fail closed. Dispositions: - peer_conformant (5): SEI(loomweave->legis), loomweave HMAC auth, loomweave SEI wire transport, git-rename(legis->loomweave), sign-off(legis->filigree) — each two-sided conformant in legis@6a750cc / loomweave@9c30ce0 / filigree@59a75a9. - gap + structured note (3): plainweave->legis preflight-facts (legis consumer genuinely absent — honest no-contract); legis->warpline preflight (legis side frozen @6f50a33, warpline ships no flat HTTP producer — obligation noted); legis per-SEI attestation->warpline (legis producer frozen @6f50a33, warpline consumer unwired — obligation noted). Also corrected a stale consumer field (HMAC-auth row said wardline; its seam scopes it to legis) and a ruff line-length nit in the G1 oracle. Counts: at_bar 12, peer_conformant 5, gap 19, deferred 1, one_sided_na 3. Gate green; suite 4271 pass. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
… (honest) The SEI oracle drives an in-process FakeLoomweave that BYPASSES the HTTP wire, so it pins SEI semantics, not the identity-route response shapes. No default-suite test freezes a golden of loomweave's real response bodies driving legis's _decode_json_response (only the live-gated HMAC oracle hits the real routes, for auth admission). Claiming the wire is 'pinned by the SEI oracle' was the same false-claim class this program exists to kill (cf. the legis_scan_wire docstring fix). Re-grade to gap with an honest split note + the close-out recipe. peer_conformant 5->4; gap 19->20. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Consolidate the weft-seam conformance feature (16 commits: the enforceable seam registry + fail-closed gate, shared WeftHttp transport, federation-status envelope dedup, and 12 at_bar + 4 peer_conformant seams incl. G1 and the legis fence-lift) onto the 2026-06-25 consolidation line, which already carries the project-root- anchored-artifacts feature. The 3 superseded artifacts-spec draft commits (fec0fe7e/67e6bc3a/e92652a7) were dropped — that work is already consolidated here via feat/project-root-anchored-artifacts. Conflict resolutions (both sides combined, never one-sided): - core/filigree_emit.py: keep the WeftHttp refactor AND 06-25's redact_url_for_diagnostics (wired into the scheme_error builders) AND the InvalidURL redaction path. - mcp/server.py: union the federation_status imports (weft) with redact_url_for_diagnostics (06-25); drop filigree_disabled_reason (0 uses after the federation_status extraction). - CHANGELOG.md: keep 06-25's [Unreleased] (artifacts/doctor/DoS fix) AND add [1.0.7]. - glossary doc + test: recompute all 37 line-anchors against the merged source (server.py shifted ~115 lines from the federation_status extraction); two-way doc/test lock holds. Golden re-freezes (each root-caused as a legitimate 06-25 feature, guard-verified to change ONLY the expected fields): - loomweave-taint wire: wlfp2 move-stable fingerprint rekey (fingerprint value only). - federation-status parity: URL-query redaction (diagnostic/destination url only). - mcp output-schema golden: 06-25's doctor description + rekey fan-out (new_fps); the other 16 tool schemas byte-identical; VENDORED_BLOB_SHA re-pinned. Verified on the merge result: full suite 4419 passed, ruff clean, wardline scan --fail-on ERROR exit 0.
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.
Consolidation release of two bodies of work onto
main.1. Weft-seam conformance program (this cycle)
Brings every weft peer-to-peer interface to the SEI bar — a frozen contract + golden-vector oracle + fail-closed CI gate + two-layer drift alarm — enforced by a single lie-detector gate.
tests/conformance/test_seam_registry.py,seam_registry.json): a fail-closed, unmarked-default-suite gate that parses the 3 real marker sources;at_barrequires a real oracle + byte-pin + applied marker. Verdicts:at_bar12,peer_conformant4,gap20,deferred1,one_sided_na3.WeftHttptransport + federation-status envelope single-sourcing (dedup across MCP/CLI/scan-jobs), behaviour-preserving.at_barseams incl. G1 (the wardline→legis signed scan-artifact wire) reaching the bar via a single byte-identical shared vector — wardline's real signer reproduces legis's byte-exactexpected_signature, byte-pinned to legis's copy.peer_conformantverdict (gated to require peer repo + commit + test evidence, never baregap). Genuinely-incomplete seams (plainweave consumer unbuilt; two warpline obligations) staygapwith structured notes — no manufactured contracts.2. Project-root-anchored artifacts + doctor hygiene (from
…06-25)Default scan artifacts anchor to the weft-project root;
wardline doctor --repairgitignores the artifacts dir and sweeps stray managed artifacts (CLI + MCPdoctorwithdestructiveHint); thewlfp2move-stable fingerprint rekey (with fan-out). Already reviewed on thefeat/project-root-anchored-artifactsline.Merge integrity
The weft feature was merged clean (the 3 superseded artifacts-spec drafts dropped). All 5 conflicts were resolved by combining both sides (WeftHttp + URL redaction; federation_status imports ∪ redact; CHANGELOG
[Unreleased]+[1.0.7]; 37 glossary line-anchors recomputed against merged source — verified no doc content lost). 3 frozen goldens re-frozen, each root-caused as a legitimate…06-25feature and guard-verified to change only the expected fields.Verification
Full suite 4419 passed,
ruffclean,wardline scan --fail-on ERRORexit 0. Version: 1.0.7.🤖 Generated with Claude Code