Passante A Passante publication

En Passante

In Passing
Field Kit

A finding you are not allowed to fix

A finding inside territory you do not own is a decision, not a task. Fixing it in place produces a change that disappears on the next update, and a record saying it was handled.

What happened

An audit scanned 684 items and returned exactly one marked for immediate upgrade. That one lived in a vendor-managed directory, where an edit would be overwritten by the vendor's next update — so it was recorded and left untouched rather than fixed.

2026-07-31 an audit sweeping installed extensions across several roots measured: items scanned and their disposition, 684 across four buckets
2 prompts, in order
  1. Sort findings by who owns the file An audit returns findings and you are deciding which to act on.
  2. Stage narrowly while someone else is working You are committing in a repository another session is actively changing.

1Sort findings by who owns the file

Run it when
An audit returns findings and you are deciding which to act on.
It asks you for
Each finding's path, and what writes to that path besides you.
You get back
Findings split into yours to fix, vendor territory, and needing a decision.
It refuses if
You cannot say what else writes to a path. That is what determines whether a fix survives.
copy this into a model
<stance>
You have fixed something in a vendored directory, watched an update erase it, and found the same finding in the next audit with no memory of the first attempt. The edit was correct. It just did not last, and the effort left no trace except a resolved item that had not been resolved.

So before ranking findings by severity you sort them by who writes to the file, because that decides whether an edit is a fix or a delay.
</stance>

<inputs>
1. Each finding, with its full path.
2. For each path, what writes there besides you: a package manager, an installer, a vendor update, a generator, a sync.
3. Whether the path is inside your repository or outside it.
4. What the audit recommends for each.
5. Whether anything downstream depends on the current state.
</inputs>

<method>
1. Sort by ownership before severity. Three groups: yours to fix, vendor territory, and generated-from-source. The right action differs for each and severity does not change which group a finding is in.
2. For vendor territory, say plainly that an edit will be overwritten and name what overwrites it. Then say what the real options are: raise it upstream, carry a local override the vendor's update does not touch, or accept it and record why.
3. For generated files, point at the generator. Editing the output is the same failure in a different costume, and it is harder to spot because the file often looks hand-written.
4. Where the choice is genuinely a judgement — accept the risk, override, or escalate — say so and hand it over rather than picking. A silent edit in someone else's directory is a decision made without being announced.
5. Record the untouched findings explicitly, with the reason. An audit item left alone with no note comes back next cycle as new, and the second person spends the same afternoon.
6. Report what was scanned as a count. A finding count with no scanned count cannot be read: one upgrade out of a handful and one out of hundreds are different results.
</method>

<deliver>
- SCANNED COUNT — what the audit examined
- BY OWNERSHIP — yours, vendor territory, generated
- VENDOR FINDINGS — what overwrites the path, and the real options
- GENERATED FINDINGS — the generator to patch instead
- HANDED OVER — the judgement calls, with the recommendation
- RECORDED UNTOUCHED — each, with its reason
</deliver>

<refuse>
- Do not recommend editing a path something else overwrites. Name what overwrites it.
- Do not edit a generated file. Point at the generator.
- Do not make an accept-the-risk decision silently in someone else's territory. Hand it over.
- Do not report a finding count without the scanned count beside it.
</refuse>

2Stage narrowly while someone else is working

Run it when
You are committing in a repository another session is actively changing.
It asks you for
What your run regenerated, and what else is currently modified in the tree.
You get back
The exact set to stage, and what to leave alone.
It refuses if
You cannot tell your own changes from the other session's. Staging blind is how someone else's half-finished work gets committed.
copy this into a model
<stance>
You have committed a file another session was midway through writing, and the result was a commit that nobody could explain, containing work that was not finished, attributed to a change that had nothing to do with it.

So when the tree is shared you stage by name. Never everything, never a directory, never a pattern that might match something you did not produce.
</stance>

<inputs>
1. What your run produced or regenerated. The exact files.
2. Everything else currently modified in the tree.
3. Whether another session is known to be active.
4. Which of the other modifications are in-flight rather than finished.
5. Whether any file you produced is also being edited by the other session.
</inputs>

<method>
1. List what your run produced, by name. If you cannot enumerate it, the run does not report what it wrote, and that is worth fixing before the commit.
2. Subtract that from everything modified. What remains is not yours, and the default for all of it is leave alone.
3. Flag any overlap immediately. A file both sessions touched cannot be staged safely and needs a person, not a heuristic.
4. Stage by explicit path. Directory-wide and pattern-based staging are how a shared tree produces a commit containing someone else's half-written state.
5. Say in the commit what was deliberately not staged and why. Otherwise the next reader sees a partial change and treats the omission as an oversight.
6. Do not wait for the tree to be clean before committing your own finished work. Waiting is how finished work stays uncommitted for days; narrow staging is what makes committing safe without waiting.
</method>

<deliver>
- YOURS — the exact files your run produced
- NOT YOURS — everything else modified, left alone
- OVERLAP — any file both sessions touched, flagged for a person
- THE STAGE COMMAND — explicit paths, no patterns
- WHAT WAS OMITTED — named in the commit, with the reason
</deliver>

<refuse>
- Do not stage a directory or a pattern in a shared tree. Explicit paths only.
- Do not stage a file both sessions have touched. Flag it.
- Do not commit without naming what was deliberately left out.
- If your run does not report what it wrote, say that is the thing to fix first.
</refuse>
How you know it worked

Before acting on a finding, establish who overwrites that path. If the answer is a package manager, an installer, or a vendor update, an edit there is temporary — and the audit will report the same finding again next month with nothing recorded about why.

from a real incident, 2026-07-31 · stack an audit sweeping installed extensions across several roots · verified by items scanned and their disposition, 684 across four buckets · auditingvendored-codeownershipconcurrency

← every Field Kit