From 4dbd63ba4b5001c6ab6106f6dbdd3119e53a4474 Mon Sep 17 00:00:00 2001 From: Tapesh Date: Wed, 22 Jul 2026 01:48:25 -0400 Subject: [PATCH 1/6] note(orchestration): A delegate's gate-is-green claim is scoped to what it touched, not the whole system MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Log agent deposit — cont.60 session-judge queue (slug: a-gates-verdict-must-be-read-at-system-scope-in). --- ...coped-to-what-it-touched-not-the-whole-system.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 orchestration/a-delegates-gate-is-green-is-scoped-to-what-it-touched-not-the-whole-system.md diff --git a/orchestration/a-delegates-gate-is-green-is-scoped-to-what-it-touched-not-the-whole-system.md b/orchestration/a-delegates-gate-is-green-is-scoped-to-what-it-touched-not-the-whole-system.md new file mode 100644 index 0000000..7d1c9f3 --- /dev/null +++ b/orchestration/a-delegates-gate-is-green-is-scoped-to-what-it-touched-not-the-whole-system.md @@ -0,0 +1,13 @@ +--- +title: A delegate's "gate is green" is scoped to what it touched, not to the whole system +date: 2026-07-22 +category: orchestration +tags: [delegation, scope, adjudication, false-green, subagents] +confidence: learned +source: private-work +implementation_target: coordinator-layer +--- + +A subagent was asked to bring a classification gate up to date for a bounded batch of items — the ones it had been handed. It classified exactly those, re-ran the gate, and truthfully reported it green. Nothing in the report was false, and yet a much larger backlog of unclassified items existed outside that subagent's assignment, and the phrase "gate is green" read as if the whole system were clean. + +The failure is not dishonesty, it is an ambiguity of scope that a delegate cannot resolve on its own: a subagent's task boundary and the gate's true domain are different things, and a truthful local verdict inherits none of the system-wide meaning a reader will attach to it. The fix belongs to the coordinator, not the delegate. Whenever a subagent reports that a gate passed, the honest restatement is "green for the slice it was given," and the coordinator — the party who can see the whole system — re-runs the same gate unscoped before treating anything beyond that delegate's slice as verified. A delegate reporting its own scope accurately is doing its job correctly; assuming that scope equals the system is the coordinator's mistake to avoid. From 405ab2447249a19ad6122cd6a85bd7b0aacde818 Mon Sep 17 00:00:00 2001 From: Tapesh Date: Wed, 22 Jul 2026 01:48:26 -0400 Subject: [PATCH 2/6] note(infra): An untracked file identical to a newly-tracked upstream file still blocks a fast-forward pull MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Log agent deposit — cont.60 session-judge queue. --- ...pstream-file-still-blocks-a-fast-forward-pull.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 infra/an-untracked-file-byte-identical-to-a-newly-tracked-upstream-file-still-blocks-a-fast-forward-pull.md diff --git a/infra/an-untracked-file-byte-identical-to-a-newly-tracked-upstream-file-still-blocks-a-fast-forward-pull.md b/infra/an-untracked-file-byte-identical-to-a-newly-tracked-upstream-file-still-blocks-a-fast-forward-pull.md new file mode 100644 index 0000000..b5c77bc --- /dev/null +++ b/infra/an-untracked-file-byte-identical-to-a-newly-tracked-upstream-file-still-blocks-a-fast-forward-pull.md @@ -0,0 +1,13 @@ +--- +title: An untracked file byte-identical to a newly-tracked upstream file still blocks a fast-forward pull +date: 2026-07-22 +category: infra +tags: [git, worktree, refresh, operational] +confidence: learned +source: private-work +implementation_target: infra-tooling +--- + +After a pull request landed upstream that added new files to version control, a local checkout that already had matching untracked copies of those same files on disk refused a fast-forward pull with a "local changes would be overwritten" error — even though every other signal (zero commits ahead, some commits behind, a clean tracked working tree) said the fast-forward should be trivial. Git's fast-forward safety check considers any untracked file that collides with an incoming tracked path a conflict, regardless of whether the file's content is actually identical to what is about to be checked out. + +The practical fix is to diff each colliding path against the upstream version before touching anything, and only remove the local untracked copy once it is confirmed byte-identical — never assume identity from the fact that the pull is merely refusing to proceed. A checkout can look clean by every conventional measure (nothing staged, nothing modified, branch fully caught up on commits) and still be blocked by files that were never tracked in the first place; "clean" and "fast-forwardable" are not the same guarantee. From 47583f0b271b71fbf80f78da51780edc57b863f6 Mon Sep 17 00:00:00 2001 From: Tapesh Date: Wed, 22 Jul 2026 01:48:30 -0400 Subject: [PATCH 3/6] note(guardrails): A tracked-and-runtime-mutated path can never fast-forward without an architectural decision MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Log agent deposit — cont.60 session-judge queue. --- ...ontinuously-runtime-mutated-cant-fast-forward.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 guardrails/a-path-thats-both-git-tracked-and-continuously-runtime-mutated-cant-fast-forward.md diff --git a/guardrails/a-path-thats-both-git-tracked-and-continuously-runtime-mutated-cant-fast-forward.md b/guardrails/a-path-thats-both-git-tracked-and-continuously-runtime-mutated-cant-fast-forward.md new file mode 100644 index 0000000..4dd14ad --- /dev/null +++ b/guardrails/a-path-thats-both-git-tracked-and-continuously-runtime-mutated-cant-fast-forward.md @@ -0,0 +1,13 @@ +--- +title: A path that is both git-tracked and continuously runtime-mutated makes its checkout permanently unable to fast-forward +date: 2026-07-22 +category: guardrails +tags: [control-plane, refresh, drift, stale-code, git] +confidence: learned +source: private-work +implementation_target: infra-tooling +--- + +A shared control-plane checkout carried tracked, append-only log files that automated hooks wrote to on every action. An automatic refresh routine correctly refused to fast-forward over any uncommitted change to a tracked file, as a safety measure — but because these particular files were rewritten continuously by the runtime itself, they were almost never in a clean state long enough for the refresh to fire. The checkout drifted many commits behind its remote and, as a direct consequence, ran stale versions of its own automation — recently merged fixes to its own hooks were simply not active there, because the checkout that would have picked them up could never catch up. Committing the drifted state closed the gap for only a few minutes before the same hooks dirtied it again, including from the very session that had just committed it. + +The durable fix is not "commit more often" — that is a treadmill against a process that mutates faster than any human-paced commit cadence can keep up with. It is an architectural decision: either the refresh routine gets an explicit ignore-list for paths that are known to be runtime-mutated (accepting that those paths simply won't auto-refresh and must be reconciled some other way), or the path itself gets untracked from version control and moved to an archived/append-elsewhere pattern. The general rule: a path should never be simultaneously (a) tracked in version control, expected to stay in sync with a remote, and (b) mutated by the running system on every cycle — pick one, because trying to satisfy both guarantees produces exactly this kind of permanent, self-inflicted drift. From 43671126b006cf4659f97abc1001723c256bcfce Mon Sep 17 00:00:00 2001 From: Tapesh Date: Wed, 22 Jul 2026 01:48:31 -0400 Subject: [PATCH 4/6] note(guardrails): A permission grant and the action it authorizes must never be recorded in the same turn MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Log agent deposit — cont.60 session-judge queue. --- ...rizes-must-never-be-recorded-in-the-same-turn.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 guardrails/a-permission-grant-and-the-action-it-authorizes-must-never-be-recorded-in-the-same-turn.md diff --git a/guardrails/a-permission-grant-and-the-action-it-authorizes-must-never-be-recorded-in-the-same-turn.md b/guardrails/a-permission-grant-and-the-action-it-authorizes-must-never-be-recorded-in-the-same-turn.md new file mode 100644 index 0000000..a95ae2e --- /dev/null +++ b/guardrails/a-permission-grant-and-the-action-it-authorizes-must-never-be-recorded-in-the-same-turn.md @@ -0,0 +1,13 @@ +--- +title: A permission grant and the action it authorizes must never be recorded in the same turn +date: 2026-07-22 +category: guardrails +tags: [merge-floor, autonomy, gates, permission-separation] +confidence: learned +source: private-work +implementation_target: agent-guardrails +--- + +A merge-gate design was tested by attempting to record a per-item merge grant and then immediately consume that grant to perform the merge, both inside one uninterrupted command sequence. The gate refused outright — and that refusal is the correct behavior to preserve, not a bug to route around. Even under a standing, broader authorization to operate autonomously for a bounded window, an agent recording its own permission and then spending that same permission in the same breath collapses the entire point of having a separate grant step: the grant exists specifically so that a human-authored record of intent precedes, and is distinguishable from, the automated action that follows it. + +The generalizable rule: any gate that requires a prior authorization record must enforce that the record-writing step and the permission-consuming step happen as genuinely separate actions, ideally separated by something (a different turn, a different process invocation, an audit-visible gap) that a bypass attempt cannot collapse. A standing autonomy grant that lets an agent act without pausing for per-step confirmation should still never let that same agent both mint and spend a scoped permission atomically — the separation between "who authorized this" and "what happened as a result" is the entire safety property, and it must survive even well-intentioned attempts to save a round trip. From 649b04992376ff483899699a9e9cd8f74cf5bf2f Mon Sep 17 00:00:00 2001 From: Tapesh Date: Wed, 22 Jul 2026 01:48:35 -0400 Subject: [PATCH 5/6] note(guardrails): Prove a sanitizer worked by scrubbing both the raw and the paraphrased text MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Log agent deposit — cont.60 session-judge queue. --- ...rubbing-both-the-raw-and-the-paraphrased-text.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 guardrails/prove-a-sanitizer-worked-by-scrubbing-both-the-raw-and-the-paraphrased-text.md diff --git a/guardrails/prove-a-sanitizer-worked-by-scrubbing-both-the-raw-and-the-paraphrased-text.md b/guardrails/prove-a-sanitizer-worked-by-scrubbing-both-the-raw-and-the-paraphrased-text.md new file mode 100644 index 0000000..3293f94 --- /dev/null +++ b/guardrails/prove-a-sanitizer-worked-by-scrubbing-both-the-raw-and-the-paraphrased-text.md @@ -0,0 +1,13 @@ +--- +title: Prove a sanitizer worked by scrubbing both the raw and the paraphrased text, not just the final output +date: 2026-07-22 +category: guardrails +tags: [ip-gate, sanitizer, witness, proofs] +confidence: learned +source: private-work +implementation_target: shared-prompts +--- + +A publication pipeline that paraphrases private material into a public-safe form is only demonstrably safe if the paraphrasing step can be shown to have actually removed something. Running the sanitizer once, against only the final paraphrased text, and reporting that it came back clean proves nothing on its own — a paraphrase step that silently failed to run, or that never touched the sensitive content in the first place, would produce the exact same clean result as a paraphrase step that worked correctly. + +The stronger proof is a paired, differential scrub: run the same sanitizer against the original raw source material first, and separately against the paraphrased output, then compare the two results. When the raw pass flags real hits and the paraphrased pass comes back clean, that specific contrast — dirty in, clean out — is the evidence that the paraphrasing step is the thing that removed the sensitive content, rather than an accident of the content never having been sensitive to begin with. A single clean scrub of only the output is consistent with several very different underlying realities, including a sanitizer that was never meaningfully exercised; a before/after pair collapses that ambiguity and is the only version of "the sanitizer worked" that is actually falsifiable. From 41274e57a56c95b3dd74905c84f42067e2000994 Mon Sep 17 00:00:00 2001 From: Tapesh Date: Wed, 22 Jul 2026 01:48:36 -0400 Subject: [PATCH 6/6] note(guardrails): A feature that works but has no visible affordance is indistinguishable from missing MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Log agent deposit — cont.60 session-judge queue. --- ...-affordance-is-indistinguishable-from-missing.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 guardrails/a-feature-that-works-but-has-no-visible-affordance-is-indistinguishable-from-missing.md diff --git a/guardrails/a-feature-that-works-but-has-no-visible-affordance-is-indistinguishable-from-missing.md b/guardrails/a-feature-that-works-but-has-no-visible-affordance-is-indistinguishable-from-missing.md new file mode 100644 index 0000000..4011040 --- /dev/null +++ b/guardrails/a-feature-that-works-but-has-no-visible-affordance-is-indistinguishable-from-missing.md @@ -0,0 +1,13 @@ +--- +title: A feature that works but has no visible affordance is indistinguishable from a missing feature +date: 2026-07-22 +category: guardrails +tags: [ux, discoverability, wired-not-working] +confidence: learned +source: private-work +implementation_target: coordinator-layer +--- + +A UI control was fully implemented and functioned correctly end to end — the underlying component was rendered, wired to real state, and behaved as designed when exercised directly. Despite this, a real user reported the feature as simply not working, because the only way to discover and operate it was through an unstyled, unlabeled interactive element with no visual cue that it existed, that it responded to interaction, or that it supported the range of behavior it actually had (in this case, a resize interaction that only worked from one edge, in one direction, on one class of device, through a plain button with no grip or handle indicator). + +This is a variant of "wired but not working," moved from the code layer to the UX layer: verifying that a feature's logic is correct and reachable through direct interaction is not the same claim as verifying that an ordinary user can discover it exists at all. A completeness review of user-facing work should therefore include an explicit discoverability pass — can an unbriefed user find this control, understand it is interactive, and infer roughly what it does — as a distinct check from "does the handler fire when triggered." Shipping the underlying mechanism without shipping a visible affordance for it should be treated as shipping half the feature, because from the user's side of the interaction, an undiscoverable feature and an absent one produce the identical experience.