Skip to content

The observation basis is pinned to content but not to path #29

Open

Description

@flyingrobots

Observed

PR #27's anti-constant guard varies the bytes on a fixed path:

complete_success_case stale-basis-actual 81 'changed after request' stale.txt 65536
complete_success_case stale-basis-other  82 'a wholly different content' stale.txt 65536
test "$stale_other_basis" != "$stale_actual_basis"

bounded_workspace_observation_basis_v1 takes (path, bytes) pairs. Nothing in the observation witness varies the path while holding the bytes constant. A regression that dropped the path from the derivation — hashing only content — would leave the entire suite green.

Why it matters

The witness claims the basis describes what was read. "What was read" is a (path, bytes) pair, not a byte string. Half the input is unpinned.

The patch witness is not obviously better here, so this may be a shared gap rather than an observation-specific one; that is worth checking before fixing only one side.

Scope note

This was identified while writing #27 and deliberately not added there. The PR's claim was already scoped to "varies with the observed bytes on a fixed path", so there was no gap between claim and evidence to repair — only a strengthening available. Filing it as the strengthening it is.

Acceptance

  • A successful observation of identical bytes at a different path derives a different basis.
  • The same check exists for the patch witness, or an explicit note records why it does not apply there.

Activity

  1. added
    bad-codeObserved defect, smell, or invariant violation
    roadmap-a1Roadmap A.1: bounded Hello external effects
    on Aug 4, 2026
  2. coderabbitai commented on Aug 4, 2026

    @coderabbitai
    🔗 Related PRs

    #24 - Prove basis-bound validated patch application [merged]
    #27 - Bind observation settlements to their basis evidence [open]


    📝 Issue Planner

    Check the box below or use the @coderabbitai plan command to generate an implementation plan and prompts that you can use with your favorite coding assistant.

    • Create Plan

    🧪 Issue enrichment is currently in open beta.

    You can configure auto-planning by selecting labels in the issue_enrichment configuration.

    To disable automatic issue enrichment, add the following to your .coderabbit.yaml:

    issue_enrichment:
      auto_enrich:
        enabled: false

    💬 Have feedback or questions? Drop into our discord!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bad-codeObserved defect, smell, or invariant violationroadmap-a1Roadmap A.1: bounded Hello external effects

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions