Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,7 @@ A skipped security, GPU, browser, TLS, or statistical test is not passing eviden
## Documentation and research

- Update `docs/doctoring.md` when a standard or research claim affects design.
- Refreshing the volatile product-gap baseline requires paginated live PR and issue counts, full exact heads, and the matching `CHANGELOG.md` inventory line; run its documentation contracts before publication. A local browser policy that blocks loopback or file rendering is not visual evidence—inspect the GitHub-rendered exact head after push instead.
- Use primary specifications, official documentation, or peer-reviewed/primary papers.
- Format references in APA 7th style.
- Update an ADR for binding architectural changes.
Expand Down Expand Up @@ -131,6 +132,7 @@ A release requires all current-head checks, complete coverage and docs, updated

- When updating a delivery checkpoint, separate a verified predecessor from a newer pending head. A passing coverage summary does not validate a fixture that ignores peer errors; preserve the failing reproduction and the repaired wire-level assertions in the evidence trail.
- A live-inventory contract must update its dated baseline, `CHANGELOG.md`, and full exact SHA together. Use `scripts/ci/collect_live_merge_evidence.sh` for reusable head/base evidence; do not infer current state from an abbreviated SHA or a historical inventory line.
- A regression that verifies a dated baseline cut must select that named cut, not assume it remains the latest heading after a newer live cut is added; run the full Python repository contract suite after changing cut markers.
- Keep the delivery baseline decision-sized: GitHub truncates large Markdown code blocks. Link the canonical executable evidence collector instead of copying it into the rendered baseline, and keep its contract test pointed at that executable source.

- Add concise, reproducible lessons here as work establishes them. Keep transient heads, job IDs and incident snapshots in PR evidence, not permanent instructions; never record secret values.
Expand Down
9 changes: 8 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,12 @@ All notable changes to OriginWeave are documented in this file. The format follo

## [Unreleased]

- Recorded #298/#305's repaired reduced-motion command contract while keeping
its Draft-only checks and missing Chromium runtime evidence explicit.

- Repaired the dated product-gap checkpoint contract so historical verification
remains bounded after a newer live cut is added.

- Replaced the truncated inline merge-evidence command copy with its canonical executable collector and kept the collector's exact-head contract under test.

- Recorded #255 exact-head hosted success and #293's narrow standard-BiDi capability, typed command planning, dated-TR provenance pin, and explicit viewport/DPR cleanup intent, preserving exact-head visual, rustdoc-view, transport, and real-browser evidence gaps.
Expand All @@ -30,7 +36,8 @@ All notable changes to OriginWeave are documented in this file. The format follo
- Recorded the verified pointer-reply connection repair and recovery tests, keeping pending hosted checks, remaining authority gaps and browser acceptance separate.
- Recorded the published text-entry connection safeguards and their test evidence, separating queued hosted checks and remaining pointer/status repairs from released browser behavior.
- Separate the current maintenance queue and source lineage from preserved historical observations, and record the text-entry session and pending-request safeguards without claiming released browser behavior.
- Current delivery inventory: 126 open pull requests (12 ready, 114 draft); 14 open non-PR issues. Observed 2026-09-08; source acceptance remains revision-specific.
- Current delivery inventory: 131 open pull requests (14 ready, 117 draft); 14 open non-PR issues. Observed 2026-09-09; source acceptance remains revision-specific.
- Clarified that the active presentation-evidence harness is implemented while its failed browser run does not establish product runtime or release acceptance.
- Corrected historical checkpoint labels and made the current inventory check reject stale counts; recorded verified text-input parent adoption without claiming browser execution.
- Recorded the executed session-isolation repair and its verified adoption, separating complete local checks and PR visual inspection from pending hosted checks and unreleased browser acceptance.
- Recorded the current click safeguards, restored regression coverage and completed PR visual inspection, keeping the separately owned parent repair and queued hosted checks distinct from delivery.
Expand Down
2 changes: 2 additions & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,5 +12,7 @@ Additional constraints:
- Do not add hostname reconnect, proxy-environment inheritance, dangerous certificate-verifier hooks, Common Name fallback, TLS 0-RTT, key logging, or secret extraction to a production TLS path.
- Keep changes bounded to one product gap and preserve modular crate boundaries.
- Never claim a test, benchmark, browser integration, TLS identity, GPU execution, release, or merge succeeded without current exact-head evidence.
- For volatile gap-baseline refreshes, bind the dated inventory, full PR heads, and `CHANGELOG.md` line to the same live observation; if local rendering is blocked, visually inspect the GitHub-rendered exact head after push.
- When refreshing live delivery evidence, update the dated baseline, `CHANGELOG.md`, and full exact SHA atomically; use `scripts/ci/collect_live_merge_evidence.sh` rather than an abbreviated SHA or historical count.
- Date-bound baseline tests must locate their named checkpoint rather than assuming it remains the newest cut; run the complete Python contract suite after changing checkpoint markers.
- Keep rendered delivery evidence concise: link the canonical collector rather than embedding its long shell body, because GitHub truncates oversized code blocks.
40 changes: 39 additions & 1 deletion docs/product-technical-gap-baseline.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,45 @@ This is a dated delivery baseline, not a substitute for the PRD, TRD, roadmap, a

This volatile section is refreshed from live GitHub state and is authoritative only for the exact observations recorded here. The dated snapshot below remains historical evidence and is not promoted to current acceptance evidence. Live GitHub PR/base/head/check APIs are authoritative over PR bodies and prior maintenance prose; a body that still names an older head is stale evidence, not merge evidence.

### Latest verified cut: 2026-09-08
### Latest verified cut: 2026-09-09

#### Presentation identity and controlled-browser evidence

At `2026-09-09T08:49:58Z`, the live inventory was **131 open pull requests:
14 Ready/non-draft and 117 Draft; 14 open non-PR issues**. Protected `main`
remains `87c4daa1830bac5a5228b6036752ad5633232085`; no GitHub Release exists.
Ruleset `18156473` still requires one counted approval and seven central required
workflows. Queued reviewer evidence is non-passing: discard queued, skipped,
cancelled, absent, predecessor, synthetic, status-only, and model-only evidence.

Issue #292 remains the buyer-visible presentation-identity gap. Draft #293 is
at exact head `6855e2578ae94279cc9ab4a14527b016e8c049ee` on Ready #229
`024f63690cf05cfe6f0d4a430f0e18ea8fd2c4d6`. Its reusable lifecycle deliberately
does not apply reduced motion without a complete restore or disposable-context
owner. Thus command planning cannot be presented as full profile application.
Draft successor #298 is at exact head
`d01f45c2c8ac7b0fc4dbc3d3ada60238732cdf8c` on that #293 head. Its non-force
merge of #305 repaired an older source contract so it now asserts both that
ReducedMotion remains a discoverable protocol capability and that the reusable
planner exposes no media-mutation command. This removes an API/documentation
contradiction only; #298's Draft checks are skipped and it does not establish
live Chromium transport, page observation, cleanup, protected-main shipment,
or release acceptance.
An active controlled evidence harness is implemented, but it does not establish a
product Browser Session adapter: its exact browser lane failed 0/3 at session
creation before navigation, so application, page-observed post-conditions, cleanup
acceptance, and release remain unproven. Issue #212 owns the sandbox-helper contract;
the product branch must consume it rather than copy or weaken workflow behavior.

#### Transport-closure verification and test-integrity repair

The current queue also leaves Ready #287 at
`3975daf48e01a5e9d1cf9fb104a3be1aa03b0402` with exact-head native and central
checks queued. Its prior CodeQL dispatch outcome was an absent central verdict,
not a classifier-source finding. No release, protected-main shipment, or approval
is inferred from local work, a child merge, or queued checks.

### Previous verified cut: 2026-09-08

#### Published intent acknowledgment verification

Expand Down
27 changes: 9 additions & 18 deletions tests/test_documentation_active_pr_evidence_contract.py
Original file line number Diff line number Diff line change
Expand Up @@ -88,19 +88,12 @@ def test_baseline_refresh_changelog_matches_the_live_snapshot(self) -> None:
refresh_lines = [line for line in added.splitlines() if line.startswith(refresh_prefix)]
self.assertEqual(1, len(refresh_lines))
refresh_line = refresh_lines[0]
self.assertIn("on 2026-09-05", refresh_line)
latest_cut = bounded_section(
self.baseline,
"### Latest verified cut: 2026-09-08",
"### Historical verified cut: 2026-09-07",
"### Latest verified cut: 2026-09-09",
"### Previous verified cut: 2026-09-08",
)
current = bounded_section(
latest_cut,
"#### Transport-closure verification and test-integrity repair",
"### Historical verified cut: 2026-09-07",
) if "### Historical verified cut: 2026-09-07" in latest_cut else latest_cut.split(
"#### Transport-closure verification and test-integrity repair", 1
)[1]
current = latest_cut
queue_counts = re.findall(
r"\*\*(\d+) open pull requests: (\d+) Ready/non-draft and (\d+) Draft; "
r"(\d+) open non-PR issues\*\*",
Expand All @@ -115,9 +108,7 @@ def test_baseline_refresh_changelog_matches_the_live_snapshot(self) -> None:
self.assertEqual(1, len(inventory_lines))
self.assertIn(f"{total} open pull requests ({ready} ready, {draft} draft)", inventory_lines[0])
self.assertIn(f"{issues} open non-PR issues", inventory_lines[0])
self.assertIn("024f63690cf05cfe6f0d4a430f0e18ea8fd2c4d6", refresh_line)
self.assertIn("3a651967c421f77088fe25e86a63faae295390b3", refresh_line)
self.assertIn("01038ba71fb276426cc67f90a91a3c431e194db5", refresh_line)
self.assertIn("Observed 2026-09-09", inventory_lines[0])
self.assertIn(
"Revalidated the active ruleset inventory at 7 required workflows",
changed,
Expand All @@ -135,13 +126,13 @@ def test_latest_inventory_drift_cannot_be_hidden_by_historical_counts(self) -> N
"""Changing only the newest count must invalidate an unchanged changelog."""
latest = bounded_section(
self.baseline,
"### Latest verified cut: 2026-09-08",
"### Historical verified cut: 2026-09-07",
"### Latest verified cut: 2026-09-09",
"### Previous verified cut: 2026-09-08",
)
self.assertIn("126 open pull requests", latest)
self.assertIn("131 open pull requests", latest)
mutated_latest = latest.replace(
"126 open pull requests",
"127 open pull requests",
"131 open pull requests",
"132 open pull requests",
1,
)
self.assertNotEqual(latest, mutated_latest)
Expand Down
32 changes: 23 additions & 9 deletions tests/test_live_gap_evidence_integrity_contract.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,14 +33,14 @@ def setUpClass(cls) -> None:
cls.evidence = EVIDENCE_SCRIPT.read_text(encoding="utf-8")
cls.latest = bounded(
cls.baseline,
"### Latest verified cut: 2026-09-08",
"### Historical verified cut: 2026-09-07",
"### Latest verified cut: 2026-09-09",
"### Previous verified cut: 2026-09-08",
)

def test_latest_inventory_and_changelog_use_the_september_8_cut(self) -> None:
def test_latest_inventory_and_changelog_use_the_september_9_cut(self) -> None:
marker = (
"126 open pull requests: 12 Ready/non-draft and "
"114 Draft; 14 open non-PR issues"
"131 open pull requests: 14 Ready/non-draft and "
"117 Draft; 14 open non-PR issues"
)
self.assertIn(marker, " ".join(self.latest.split()))
inventory = [
Expand All @@ -49,14 +49,28 @@ def test_latest_inventory_and_changelog_use_the_september_8_cut(self) -> None:
if line.startswith("- Current delivery inventory:")
]
self.assertEqual(1, len(inventory))
self.assertIn("126 open pull requests (12 ready, 114 draft)", inventory[0])
self.assertIn("131 open pull requests (14 ready, 117 draft)", inventory[0])
self.assertIn("14 open non-PR issues", inventory[0])
self.assertIn("Observed 2026-09-08", inventory[0])
self.assertIn("Observed 2026-09-09", inventory[0])

def test_presentation_snapshot_uses_full_exact_sha(self) -> None:
full_sha = "0c077445d73640a6299ea4d379faa4b0ab0226c2"
full_sha = "6855e2578ae94279cc9ab4a14527b016e8c049ee"
self.assertIn(full_sha, self.latest)
self.assertNotIn("to exact head\n`0c077445`", self.latest)
self.assertNotIn("to exact head\n`6855e257`", self.latest)

def test_active_presentation_harness_is_not_described_as_unimplemented(self) -> None:
normalized = " ".join(self.latest.split())
self.assertIn("active controlled evidence harness is implemented", normalized)
self.assertIn("failed 0/3 at session creation before navigation", normalized)
self.assertIn("product Browser Session adapter", normalized)

def test_presentation_successor_records_its_repaired_contract_boundary(self) -> None:
"""Keep the active child repair distinct from browser-runtime acceptance."""
normalized = " ".join(self.latest.split())
self.assertIn("Draft successor #298", normalized)
self.assertIn("d01f45c2c8ac7b0fc4dbc3d3ada60238732cdf8c", normalized)
self.assertIn("#305", normalized)
self.assertIn("does not establish live Chromium transport", normalized)

def test_documented_current_evidence_collector_is_executable(self) -> None:
current_evidence = self.baseline.split("## Evidence commands", 1)[1]
Expand Down
4 changes: 2 additions & 2 deletions tests/test_product_completion_gap_contract.py
Original file line number Diff line number Diff line change
Expand Up @@ -70,8 +70,8 @@ def test_close_code_checkpoint_does_not_claim_hosted_acceptance(self) -> None:
def test_closure_checkpoint_separates_verified_and_pending_heads(self) -> None:
current = bounded_section(
BASELINE.read_text(encoding="utf-8"),
"### Latest verified cut: 2026-09-08",
"### Historical verified cut: 2026-09-07",
"### Previous verified cut: 2026-09-08",
"## Observed snapshot: 2026-08-29",
)
for marker in (
"d126242c7198c447d0fab7983d529441340fd1c9",
Expand Down
Loading