Skip to content

A blueprint that names a critical zone as soon as the plan changes a file that holds its code - #117

Merged
PierreMardon merged 8 commits into
mainfrom
fix/zones-announced-by-file
Oct 8, 2026
Merged

PierreMardon merged 8 commits into
mainfrom
fix/zones-announced-by-file

Conversation

@PierreMardon

@PierreMardon PierreMardon commented Oct 8, 2026 •

Copy link
Copy Markdown
Contributor

In 10 of the 27 runs of the evaluations that reached conformity, the blueprint the developer approved said that the plan touches no critical zone, and the hand back at conformity sent them to read a file of one (#107). Both were right by their own reading: the extractor and the cross-check read a zone as what it protects, the reviewer as the files that hold its code.

The developer decided on 2026-10-08, among the three ways of the issue: the blueprint announces by file. A zone is touched as soon as the plan changes a file that holds its code, and the page says how far.

What changes

  • One definition of a file that holds the code of a zone, word for word in the three agents. A file the agent instructions place in the zone, by its name, its folder or a pattern, whatever it holds; or one where code defines or computes what the zone protects, in whole or in part, before the change or after it. Among the files the instructions do not place, one that only uses that code does not hold it, one that calls it, that prints, stores or builds on what it returns, or that tests it, nor does a document that describes what the zone protects.
  • The extractor opens the files the slices of the plan change, and names a declared zone as soon as one of them holds its code. The closing section opens on one sentence of fixed form: the lead-in of the template, then none, or each zone touched with in backticks its files the plan changes. One sentence per zone then says how far the plan goes: into what the zone protects, or only into something else the file holds.
  • The cross-check reads "touches" the same way. It counts as an omission a zone touched and not named, and a page that says none, or says of a zone that the plan does not touch it, while the plan changes a file that holds its code. A zone named as touched through a file, its rule said to stay as it is, is the form asked of the page.
  • The reviewer lists by the same definition, and its list stays its own reading, whatever the blueprint names. For a zone the page names as touched, another of its files changed, or a named one left alone, is no break for that alone: the list at conformity is the reference. A zone the page says the plan does not touch is held as the contract: a branch or an amendment that changes a file that holds its code makes the blueprint false, and comes back to the developer like any contract break.
  • The plan names its files. The template asks of a slice "the files it changes", by their path, where it asked "what it touches".
  • The template of the blueprint, ARCHITECTURE.md under "Critical zones", and the guide.
  • The measures. zones_none_said is gone: it held a page to say none whenever the need of its case asks nothing of a zone, a rule this decision retires. Two are new, for the runs that reach conformity: zones_files_announced, every file the proof lists was announced, and zones_announced_listed, every file the page announced is listed. The statement of the zones is read by its form, the first sentence of the closing section, and no longer guessed from its prose. A report names a measure that one of two summaries alone holds, where it said nothing.
  • The judge. The sentence on how far the plan goes into a zone it touches is asked of the page: the rubric and the method of the count no longer take it for a fact said twice, nor what it says the plan changes in a file of the zone for a detail of implementation. The rule of a zone told again in full still is a repeat.

What it costs

The page says "touched" for a change that leaves the rule of a zone alone, and says so. And a fix or an amendment that reaches a zone the page said was not touched now stops the loop on a plan change proposal, where it was listed without a word. The developer accepted the first with the choice; the second follows from it, and is said here for them to weigh.

Measured

Three passes, each read by a session before the next: an independent review and the runs changed the text twice.

The plans of the fifth campaign, drawn again by the extractor of the branch, the plan held still, each page read against the files its run listed at conformity. Eight of those twelve runs reached conformity, seven with a file listed.

Pages zones_announced Every file listed was announced Zones announced in excess
The fifth campaign, as kept 5 of 8 1 of 7 none
First definition 8 of 8 7 of 7 on 6 pages of 12, by reading
Definition narrowed 8 of 8 7 of 7 none, by reading
As it stands, in the fixed form 8 of 8 7 of 7 none: zones_announced_listed 7 of 7

The first definition took for the code of a zone a file that prints a fine and a test file that writes loan lines: 01-overdue-list named two zones where reviewers had listed no file in five runs of five. As it stands, the files a page names are the files the reviewer listed, no more and no fewer, and the four pages stopped at the hand over say none. The twelve pages follow the fixed form.

Four runs played whole, all conformant, every hidden acceptance test passed:

Run Prompts The page announced The reviewer listed
05-fine-cap second pass lending/fines.py, lending/__main__.py the same
06-borrow-limit second pass lending/loans.py lending/loans.py and README.md
06-borrow-limit as they stand lending/loans.py the same
02-reservations as they stand none none

The second pass gave the reviewer the definition, and it read "defined there" as covering the README, which describes the fields of a loan line: a file no reviewer had listed in 27 runs. The definition now says that it speaks of code, and the run played again lists lending/loans.py alone, on a branch that also changed the README.

The cross-check, on the toy, twice on the second pass and twice on the prompts as they stand: it counts nothing on a faithful blueprint, and finds a zone a blueprint hides.

22.13 USD at list price: 10.19 for the three redraws, 11.17 for the four runs, 0.77 for the cross-check.

Not measured, and left as it is

  • The break on a zone said untouched was not played: no run had a fix or an amendment reach such a zone. It may raise the number of hand backs.
  • The judge. Its lines were not checked by a session: the pages its check spoils say the same of their zone, so its pairs do not bear on them.
  • The cross-check does not count a zone named without its files. The extractor is asked for them and gave them on every page drawn; nothing else holds it.
  • The fixtures of the toy keep the old form of the page, and a list at conformity with shelf/__main__.py, which only calls the export: the probes and the end to end states play a page the extractor no longer draws.
  • A slice that only allows a file to change is not counted as changing it, and nothing holds a plan to name the files of its slices but its template.
  • One case of six, 02-reservations, on one run: how often the two ends still differ is not known.

Read twice by an independent reviewer, fifteen findings each time. What the first found is in the second pass, what the second found in the third.

…file that holds its code

In 10 of the 27 runs of the evaluations that reached conformity, the blueprint the
developer approved said that the plan touches no critical zone, and the hand back at
conformity sent them to read a file of one (#107). Both were right by their own reading:
the extractor and the cross-check read a zone as what it protects, the reviewer as the
files that hold its code. The developer learned at conformity what the approval was to
tell them, and one who trusts the page takes the list for a mistake.

The developer decided on 2026-10-08, the first of the three ways of the issue: the
blueprint announces by file, and says how far. The cost was said with the choice and is
accepted: the page says "touched" for a change that leaves the rule of a zone alone, and
says so.

- `agents/surface-extractor.md`: the plan touches a zone as soon as a slice changes,
  creates or deletes a file that holds its code, whatever it changes there. Which files
  hold that code is the extractor's reading, of the file the agent instructions name
  and of the files whose code defines, computes or writes what they say the zone
  protects, as the code stands or as the plan leaves it: it opens the files the slices
  change to tell, and says none only when not one of them holds the code of a declared
  zone. For each zone touched it names those files, then says in one sentence how far
  the plan goes: into what the zone protects, or only into something else the file
  holds. That sentence points to the criterion or the section that holds the rule and
  tells it no second time.
- `agents/surface-checker.md`: the same test, in the same words. A zone touched that way
  and not named is an omission, and so is one the page names only to say that it is left
  alone. A zone named without its files or without how far is no omission: the
  cross-check holds that the developer learns which zone, the extractor how it is told.
- `agents/surface-reviewer.md`: one sentence says what the reviewer already does, so
  that both ends rest on the same test and nobody mends it: a file of a zone is listed
  as soon as the branch changed it, whatever it changed there, since a list that weighed
  the change could hide code the developer was to read. Its reading of the files stays
  its own, whatever the blueprint names.
- `skills/surface-plan/templates/blueprint.md`: the line that opens the sensitive zones
  says none or names the zones with their files, and how far follows it, a sentence per
  zone, so that the statement itself stays a bare line.
- `ARCHITECTURE.md`, "Critical zones", and step 2 of the guide: the same, with the
  reason and the way set aside, a reviewer that lists by the lines changed.
- `tests/prompts/`: the contract holds the test by file at both ends, the sentence on
  how far, and the list of the reviewer by file and on its own reading.

What it does not do. The script, the line of the hand back at conformity and the journal
are as they were. The reviewer's reading of which files a zone covers stays free, so the
two ends may still differ on a file that is not the one the host names: in the fourth
and fifth campaigns the reviewer listed `lending/__main__.py` for the fine computation,
which the sensitive zones of no blueprint named. And a branch that comes to change a
file of a zone the frozen blueprint did not name, by a fix or a deviation, is listed at
conformity as before: whether that is a contract break is said by no prompt.

Not checked by a session: no blueprint was drawn and no cross-check played with these
prompts.
…hey measure

Once the blueprint names a zone as soon as the plan changes a file that holds its code
(#107), two readings of the harness would tell that change as a fault.

- `zones_none_said` held a page to the need of its case: a case that asks nothing of a
  zone was to say none. `06-borrow-limit` asks nothing of the format of `loans.jsonl`
  and changed `lending/loans.py` in each of its four runs that reached conformity: the
  page that now names the zone would read false, and the report would call it worse.
  None is to be said when no file of a zone changes, which only the proof of conformity
  tells. The measure is kept for a run whose need asks nothing of a zone and whose
  proof lists no file, and is empty for the others: a run that did not reach conformity
  has none, and one whose proof lists a file is read by `zones_announced`.
- Whether a page says none was read in the whole paragraph that opens its closing
  section. That paragraph now says how far the plan goes into a zone, where "none of
  the computation" is not the statement that no zone is touched. It is read in the
  sentence that opens the section.

Read again with no session. On the 147 blueprints kept under `.evals/`, the sentence and
the paragraph say the same. On the runs of the fourth and fifth campaigns, measured
again, `zones_announced` is as kept on every run, and `zones_none_said` goes from a
value to empty on the runs stopped at the hand over and on those whose proof lists a
file, never from true to false nor back.

`evals/README.md` says what the measure now reads, that a summary kept before holds it
for runs it no longer applies to, and that a case names the zones its need asks to
change. The cases and the host are as they were.

What it does not do: `zones_announced` still does not tell a file listed for one zone
under a blueprint that named another. A measure by file, every file listed named in the
closing section, would, and is left to a choice: on the pages of the fifth campaign it
holds on 1 run of the 8 that reached conformity, where `zones_announced` holds on 5.
…the three agents

The twelve plans of the fifth campaign were drawn again with the extractor of this branch.
The surprise at conformity is gone on them: no file is listed under a page that said none
on 8 runs of 8, where 5, and every file listed is named in the closing section on the 7
runs that list one, where 1. But the page now announces too much. Both pages of
`01-overdue-list` name the fine computation "through `lending/__main__.py`, which already
prints the fines", and the format of `loans.jsonl` "through `tests/test_cli.py`, whose
new tests write loan lines straight into the file": no reviewer listed a file for that
case, in 5 runs of 5. A page of `02-reservations` names both zones where its reviewer
listed nothing, one of them for a file the plan "allows to gain new code". The extractor
was told "the files whose code defines, computes or writes" what a zone protects, and the
reviewer was told nothing: the two ends still read by two definitions.

- One definition, between the marks `zone-files`, word for word in the extractor, the
  cross-check and the reviewer, and pinned as such: a file holds the code of a zone when
  it is the file the agent instructions name for it, or when what the zone protects is
  defined or computed there, in whole or in part, as the code stands or as the change
  leaves it. A file that only uses that code does not hold it: one that calls it, that
  prints, stores or builds on what it returns, or that tests it. For the reviewer it
  states what the reviewers of the five campaigns did, `lending/__main__.py` listed for
  the fine computation only once it chooses the price that caps a fine, and its list
  stays its own reading, whatever the blueprint names.
- The extractor and the cross-check read the plan by the files its slices change. A slice
  that names none is read from what it does and from the code where it lands, and a file
  a slice only allows to change is not one the plan changes. `templates/plan.md` asks a
  slice for the files it changes, by their path, where it asked for "what it touches".
- The cross-check: the omission is a page that says none, or says of a zone that the plan
  does not touch it, while the plan changes a file that holds its code. "Touched through
  this file, its rule unchanged" is the form the page is asked for, and no omission: the
  wording of the first pass, "names a zone the plan touches only to say that it is left
  alone", sat too close to it.
- After the freeze. What the sensitive zones say of the files of a zone tells the
  developer which code they will read: it is neither a criterion nor a promise on the
  layout of the code. The reviewer holds no break against a branch, or an amendment of
  the plan, that changes a file of a zone the page does not name, or leaves alone one it
  names, for that alone: its list at conformity is the reference. And the extractor says
  of the files of a zone which the plan changes and how far, nothing else: not that
  another of them stays as it is.
- `ARCHITECTURE.md`, "Critical zones": the definition and its reason, the plan read by
  the files of its slices, and what the page says of files after the freeze. The guide:
  the developer learns at approval which files they will read, and the list at
  conformity is the reference, which a fix after their approval may lengthen.

What it leaves. A page that announces a zone no file of which the branch then changes is
caught by no prompt: the cross-check counts omissions, and nothing counts a zone named in
excess.

Not checked by a session: no page was drawn with this definition.
…ame that changed meaning

The commit before last kept `zones_none_said` under its name and its direction with
another meaning: a report against a summary kept would have called "worse" a page that
follows the new prompt. And its reading of "the page says none", the first sentence of
the closing section, misses "**Critical zones**. None is touched: ..." and takes "which
changes none of its fields", said of a zone the page names, for the statement.

- `zones_none_said` is gone. It held a page to the need of its case, a rule of the page
  the decision retires: none is said by the files the plan changes. The five summaries
  kept hold it, and `evals/README.md` says that it is no longer measured.
- `zones_files_announced`, a measure of the execution: every file the proof of conformity
  lists is named, by its path, in the closing section of the last blueprint. Empty when
  the proof lists none. It tells what `zones_announced` does not, a file listed for one
  zone under a page that named another, and is read with it, since a page that says none
  may name a file further down.
- `zones_announced` keeps its meaning. A page says none in the paragraph that opens its
  closing section: outright, "Critical zones touched: none", "None is touched", "the plan
  touches neither of the two critical zones", or by a "none" or a "neither" that comes
  before any zone the host declares. After a zone is named, such a word says how far the
  plan goes into it.
- A measure one of two summaries alone holds was compared with nothing and said of
  nothing, which reads as a measure that did not move: `report --against` now names it as
  not compared, whichever side lacks it. A campaign that played planning alone is told
  the same of every measure of the execution, which its report already says in a
  paragraph of its own.
- `corpus.py`, `evals/README.md` and the builder of the tests say that a case names the
  zones its need asks to change, where they said the zones it touches.

Read again with no session. The reading of none holds the phrasings above and those of the
tests, and says the same as the reading by paragraph on the 166 blueprints kept under
`.evals/`, the twelve pages drawn again included, none of which says none. Summarized
again and set against its summary kept, the fifth campaign moves on no measure:
`zones_announced` holds on 5 runs of 8 as kept, `zones_files_announced` on 1 of the 7 that
list a file, and the report names the two measures it does not compare. On the twelve
pages drawn again with the extractor of the first pass, read against the lists of the
campaign: 8 of 8 and 7 of 7.

What it does not tell: a page that announces a zone no file of which is listed. Of those
twelve pages, one of `02-reservations` does, and both of `01-overdue-list` name two zones
for a case no reviewer ever listed a file for: they are found by reading.
…is asked on a zone it touches

The blueprint now says, for each critical zone the plan touches, how far the plan goes
into it, in one sentence, which often reads "the plan changes only the borrow check in
that file and leaves the format of a loan line as it is (criterion 12)". The method of
the count set aside "the bare line" of the zones alone, and calls a sentence of its own
that tells a fact again a repeat "even with a pointer attached": it would count against
the page the sentence the prompt asks of it. The rubric drew the same line for
`blueprint.no-padding`.

- `evals/judge/count.md`: that one sentence is no statement that something stays
  untouched, even where it says that the rule of the zone is left as it is, and is not to
  skip. Any other sentence that says again that it is unchanged still is one, and so is
  the rule of a zone told again in full.
- `evals/judge/rubric.md`, `no-padding`: the same, and "the rule of a zone told again in
  full still does" stays.
- `evals/README.md` lists it with what the frame asks for, and says that the campaign
  kept in `evals/reports/2026-10-07-*` was judged and counted before it, on pages that
  held no such sentence: against it, a move of `blueprint.no-padding` or of a count may
  come from the judge.

Not checked by a session: the check of the judge was not played again. Its pairs do not
bear on this line, since the lean page and the padded one say the same of their zone.
@PierreMardon
PierreMardon force-pushed the fix/zones-announced-by-file branch from 2a10f1f to e4315cd Compare October 8, 2026 10:42
…ode, and a zone said untouched held as the contract

The narrower definition was drawn and played. The twelve plans of the fifth campaign,
drawn again (`.evals/redraw-107b`): on the 8 runs that reached conformity, the files each
page names for the zones it touches are the files the reviewer listed, and the two cases
that announced too much say none. Two cases were then played whole (`.evals/zones-107`),
both conformant. On `06-borrow-limit` the page names `lending/loans.py`, and the reviewer
listed `README.md` beside it: "`README.md` states the fields of a loan line and their
meaning in its "Data" section, and the branch changed that file". No reviewer listed the
README in 27 earlier runs. Told that what a zone protects is "defined ... there", this
one read a document as code, and the hand back sent the developer to read it as such. A
second review found the rest.

- The definition, in the three agents. It speaks of code: "when code there defines or
  computes what the zone protects", and a file that describes what a zone protects, a
  README or any other document, does not hold its code. A file the agent instructions
  place in a zone, by its name, its folder or a pattern, holds it whatever it holds: the
  narrowing bears on the files they do not place. And "before the change or after it",
  where "as the code stands or as the change leaves it" was one moment for a reviewer at
  conformity: a plan that moves the code of a zone out of a file still has that file
  announced and listed.
- A zone the page says is not touched is the contract. The paragraph of the second pass,
  "a branch that changes a file of a zone they do not name is no break for that alone",
  could be read of a page that said none: the symptom of #107 back by rule. It now holds
  for a zone the page names as touched, another of its files changed or a named one left
  alone. A branch or an amendment that changes a file that holds the code of a zone the
  page says is not touched, or of any zone when it says none, makes the blueprint false:
  a break like any other, and the developer decides, since they approved a page that
  told them they would not read that code. The amendment check says the same.
- The statement of the zones has a fixed form: the closing section opens on one sentence,
  the lead-in of the template, then `none`, or each zone touched, named as the agent
  instructions name it, with in backticks its files the plan changes. The developer
  finds there at once which files they will read, and what reads the page, the
  cross-check and the evaluations, reads it there and no longer guesses from free prose.
  A file stands in backticks in that sentence only when the plan changes it, and the
  sentences on how far come after it. The cross-check reads the zones the page names
  there. The contract pins the lead-in.
- `templates/plan.md`: of the three things the chain reads in a plan, the script reads
  the markers and the `gates` block, and agents read the rest, the files each slice
  changes among it.
- `ARCHITECTURE.md`, "Critical zones", and the guide: the same. The guide no longer says
  that a fix may lengthen the list without saying where: another file of a zone the
  blueprint named, and a change that reaches a zone it said untouched comes back first.
- `tests/prompts/`: the definition is held whole, equal to the contract in the three
  agents. The two assertions on "writes" and "reads" came after that equality and could
  fail on no prompt: they are gone.

Left as it is: the cross-check counts no omission for a zone named without its files, and
the fixtures of the toy keep the form of the page of before.

Not checked by a session: no page was drawn in the fixed form, and no review was played
with the rule on a zone said untouched.
…page announces beyond the list

The harness guessed from free prose whether a page says none and which files it
announces, and a second review made it misread both ways: "no critical zone rule changes",
in a sentence on how far, read as none; "neither is touched" after the zones were named
did not; a path given to deny it, "(`lending/fines.py`) is not touched", counted as
announced. The page is now held to one first sentence of fixed form, and nothing told the
other direction, the one the narrower definition fixed: a page that announces a file no
reviewer lists.

- `blueprint.statement` reads the sentence a closing section opens on, when it opens on
  the lead-in of the template: after its colon, `none`, or what stands between backticks
  to the end of the sentence, the files the page announces. The colon and that end are
  found outside backticks, and a word the host names a zone with, `loans.jsonl`, is no
  file. No list of phrasings: nothing after that sentence is read.
- `zones_announced` and `zones_files_announced` read those files. A page outside the
  form, which opens on other words or whose lead-in ends its line with the zones in a
  list under it, is read as before, as free prose, and the README says that it guesses.
- `zones_announced_listed`, a measure of the execution, higher being better: every file
  the page announced is one the proof of conformity lists. Empty when the page announces
  none, and for a page outside the form.
- `tests/evals/test_probes.py` reads the spoiled page of the toy as the measures do.

Read again with no session, on the 188 blueprints kept under `.evals/`, 153 of them in
the form. Whether a page says none: the same on all. `zones_announced`, on the 82 last
pages that have a list: the same on all. `zones_files_announced` differs on six, which
are three pages and their copies: `04-suspension` of the first campaign and
`02-reservations` run-01 of `redraw-63` and `redraw-63b`. Each says none in its first
sentence and names `lending/loans.py` further down, to say that the file changes and the
zone does not. Its path stood in the section, so the file counted as announced; the
sentence says none, so it no longer does, which is the reading the measure was meant for.
On the pages of the second redraw, read against the lists of the campaign: 8 of 8, 7 of
7, and every file announced is listed on the 7 pages that announce one. On the two cases
played whole: the README listed and not announced shows on `zones_files_announced`.

What it does not tell: the five pages of the first redraw that state their zones in a
list, those of `01-overdue-list` and `02-reservations` that announced too much among
them, are outside the form, and `zones_announced_listed` is empty for them.
…hanges in a file of a zone

The sentence on how far the plan goes into a zone it touches says what the plan changes
in a file of that zone: "by its imports only", "only how the file loads the loans
module". The method of the count lists as a detail of implementation "an import cycle" and
"where a piece of code sits inside a file", and would count against the page what the
prompt asks of it.

- `evals/judge/count.md`: what that one sentence says the plan changes in a file of the
  zone is no such detail, next to "a file or a module named only to say where a change
  lands".
- `evals/README.md` says so under `implementation_details`.

Not checked by a session: the check of the judge was not played again.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant