Repository navigation
Five of the disabled CI jobs go green - #322
Merged
Merged
Conversation
Job neznanye-storozha / uncalled-guards, step 10 "Probe length claims" was red for 0.0 s with "the forgery did not apply: line 75 of flang/self/emit-rust.flang is not that line any more". The promise "the backend takes exactly five names" moved from line 75 to line 20, and the sed pinned to the number said nothing, so the step blamed a forgery that was never planted. This is the very rake the neighbouring step "Probe blockers table" warns about two steps above: "pinned to the PATTERN of the table row, not to the line number: number 40 slid to 42". The forgery now matches the promise text itself, which occurs once in the file, and the "did not apply" message names the promise instead of a line number. Measured on dev 5604556, binary 0.7.23, each step in its own subshell the way the runner calls it (bash --noprofile --norc -e -o pipefail), own RUNNER_TEMP and GITHUB_OUTPUT, GITHUB_REF=refs/heads/dev: before Probe length claims code 1 0.0 s after Probe length claims code 0 96.0 s Negative control, which must be red and is: the pattern replaced by one absent from the file gives code 1 at 0.0 s and names the promise. The tree is clean after every run: git status --porcelain is empty.
Job neznanye-storozha / uncalled-guards stopped at step 5 "Check glossary" (dictionary:check) with code 1 and one disagreement: "the notion follows is in the language table and is written into no section of the glossary: the page would print half of it and say nothing". Every step after it -- 24 of them -- was therefore never seen in CI at all. The row was written by hand into docs/glossary.md on 25 September (5c640f2), and the section lists in scripts/site/emit-dictionary.fscript, from which the page is printed, were never told. The notion goes into the seventh section, "legacy of the former surface", next to therefore, which is where the hand-written row already sits: the promise of the list length rises from 64 to 65, and the example that copies the body sign for sign gets the same entry. The page needed no rebuild: the hand-written row stands exactly where the printer puts it, so the comparison matched sign for sign and docs/glossary.md is untouched by this commit. Measured on dev 5604556, binary 0.7.23: before dictionary:check code 1 3.4 s after dictionary:check code 0 4.7 s "glossary: clean -- docs/glossary.md agrees with the table, notions 156" flang check scripts/site/emit-dictionary.fscript code 0 "functions 58, of them with proved termination 58" Negative control, which must be red and is: with follows taken back out of the section the check gives code 1 and the former message word for word.
Job neznanye-storozha / uncalled-guards, step 9 "Check jargon"
(jargon:check) was red with code 1 at 196.3 s, peak 3.57 GiB, and six
troubles, not the five task 1117 recorded on 2 October: docs/site/roadmap.ru.md
had joined them with five internal words where four are allowed.
The troubles are of two kinds and are closed differently.
PROSE FOR THE READER, six lines in five files. The word is replaced by the
outside one the guard itself suggests:
"guard" -> "check" docs/site/roadmap.ru.md:83
docs/course/03-totality.md:104
docs/guide/how-to-write-flang.ru.md:44
"corpus" -> "programs of the docs/course/03-totality.md:105
repository" docs/course/13-where-next.md:112
"printer" -> "code generator" docs/course/09-eight-targets.md:280
NAMES OF FLANG FUNCTIONS, two lines in flang/src/emit/c/flang_repl.c. These
are not prose at all: repl_call("Katalogi mimo korpusa") and
repl_call("Otbor korpusa") name functions that live at
flang/self/bootstrap/corpus.flang:270 and :334. A text ban cannot rename
them -- only a reprint can. They go into the "exceptions" section of
docs/jargon.json with that reason, the same breed and the same wording as
the repl_call("Svesti korpus") entry already sitting there. The debt of the
file stays 42 and the ratchet still forbids it to grow.
Measured on dev 5604556, binary 0.7.23:
before jargon:check code 1 196.3 s peak 3.57 GiB troubles 6
after jargon:check code 0 182.5 s peak 3.62 GiB
"internal words 992 (debt over 34 files, no right to grow), new 0"
Negative control, which must be red and is: step 8 "Probe jargon guard" of
the same job appends an internal word to CONTRIBUTING.md and demands the
guard go red. It is green, code 0 at 195.3 s, so the guard does redden on a
planted word and the tree is left clean.
Job uncalled / checks-nobody-calls was red with code 1 at 17.1 s: "A NEW
CHECK WITH NO CALLER: flang/proof/probes/kernel-memo/run.fscript lies in
the tree and no CI job, no short command, no hook and no other script runs
it."
ASKED THE PROBE FIRST. It is green today, and the record task 5310 took on
2 October -- "code 1 at 306.7 s, KERNEL MEMO CHANGES THE ANSWER" -- no
longer holds: the memo wrappers have reached the seed.
cd flang/proof/probes/kernel-memo && ../../../../bootstrap/flang io run.fscript
"kernel memo: runs 6, memo on and audit answer byte for byte as memo off"
code 0 at 175.5 s, peak 0.36 GiB
the same with --trust code 0 at 175.5 s, peak 0.36 GiB
So it gets a CALLER, not a ledger entry: the shortcut
script.kernel-memo:probe in .flangrc beside its sibling plan-rules:probe,
and the step "Check kernel memo does not change the answer" in job
storozha of binary.yml, where all twenty of its sisters from
flang/proof/probes/** already stand. ci.yml is no home for a caller: it is
disabled, and a call there would call nobody. The path is counted from the
root, the way the sibling plan-rules-asked is called -- the probe resolves
its order paths from its own directory and needs no cd.
THE PRICE IS SAID OUT LOUD AND ONE NUMBER IS NOT MEASURED. Job storozha
takes 6 min 47 s and 7 min 01 s on the runner (runs 37223001273 and
37223864296). What 175.5 s from this machine adds to it is NOT MEASURED: I
did not run the job on a runner, and one thread of check --proof does not
go at this speed on a two-core one.
THE EIGHTH UNCALLED CHECK IS NOW A DIFFERENT ONE, and it gets a ledger
entry rather than a caller, with the reason in numbers:
flang/proof/probes/text-block/tokens.fscript arrived with the lexer edit
(ADR-0052) and was never called. Without --max-steps it gives no verdict at
all (code 3 at 78.9 s, "the function Skleit exhausted the step limit"), and
with a sample it grows worse than linearly in file size: on a 394-byte file
code 0 at 5.9 s, while ADR-0052 names 9 min 29 s for one 106 KB file and
78 min for a sample of ten (those two numbers are taken from the decision
page, not measured here). A caller over one tiny file would be a check that
does not check.
before job uncalled code 1 17.1 s
after job uncalled code 0 19.2 s
"checks in the tree 104, without a caller 8, all named in the
ledger -- agrees"
Negative control, which must be red and is: with both callers removed, the
guard answers code 1 and names the probe. Its own forgery probe, step 4 of
the job, plants a forged probe set and is green at 10.4 s.
Task 1117 measured all 25 jobs of the disabled ci.yml on 2 October on tree 85cc976: 18 green, 7 red. The five cheapest red ones are re-measured here on dev 5604556 with the same rig, and all five are green. The numbers of the earlier measurement are not rewritten: they were taken on another tree. zadachnik code 2 0.3 s -> code 0 94.0 s seed-verdicts code 1 40.1 s -> code 0 212.2 s uncalled code 1 17.1 s -> code 0 19.2 s neznanye-storozha code 1 7.2 s -> code 0 722.5 s, all 26 check steps green, no break klyuchi code 1 75.7 s -> code 0 73.3 s Two of the five needed nothing from this branch: 16729f7 fixed the scaffolding of zadachnik and the inverted condition of step 14, f909a98 stopped the key ledger calling five keys strangers. Checking the trunk before working saved the work twice. seed-verdicts went green by itself: the seed fingerprint now names 843c429, git merge-base --is-ancestor answers code 0, and both verdicts answer code 0 rather than code 3 "cannot judge". A RAKE OF THE RIG, NOT OF THE TREE, worth one false red: my first run of seed-verdicts gave code 1 at 38.5 s. The reason was my own YAML reading -- "${{ runner.temp }}" was substituted only inside the "run:" body and stayed literal text in the step "env:", so the guard answered "mktemp: failed to create directory via template". All four steps of that job carry FLANG_TMP in "env:". Whoever measures the jobs of this file by hand must substitute expressions there too. Task 5310 gets the same re-measure from its own side: kernel-memo is green and called, and the eighth uncalled check is now flang/proof/probes/text-block/tokens.fscript, with its cost in numbers. Of the six push jobs that used to block, none blocks now. Two of the seven reds are untouched and are NOT MEASURED here, being outside this share: links (named debt, continue-on-error) and stale-pages (course pages on 0.7.22, tag and button only). The workflow stays disabled: turning it on is not this branch's decision. bootstrap/flang run-script tasks:check code 0
The branch was rebased onto a trunk that had moved 16 commits, one of them a reseed (d26780e), so the binary is 0.7.24 now. All five jobs were run again on that tree. Four of the five stay green: zadachnik code 0 105.9 s seed-verdicts code 0 249.6 s uncalled code 0 19.1 s checks 105, without a caller 8 klyuchi code 0 73.4 s neznanye-storozha code 1 397.0 s stops at step 9 again The fifth is red for a reason that came with the trunk, not from here, and it is opened as task 2325. Step 9 "Check jargon" gives code 1 at 202.9 s with four troubles, all four new: docs/site/registry.md (10 internal words where 0 are allowed), registry.ru.md (9), packages.md (1) and packages.ru.md (1). The pages arrived with ffeca8f and are PRINTED by scripts/site/registry-page.fscript, so a hand edit of the pages would be wiped by the next build -- the fix belongs in the printer. None of the six troubles this branch closed came back. Run step by step rather than by the break, the job has 31 steps now, and 27 of its 28 check steps are green (759.9 s in total). Both fixes of this branch hold on the new tree: step 5 "Check glossary" code 0 at 4.7 s, step 10 "Probe length claims" code 0 at 96.5 s. The pair "Probe/Check guards without forgery probe" is new from the trunk and green, 15.4 s and 16.2 s. A CORRECTION TO MY OWN EARLIER NOTE, and it matters more than the seconds. I wrote that seed-verdicts is green because the fingerprint names a live commit and git merge-base --is-ancestor answers code 0. That reason is WRONG. On the new tree the fingerprint names a1102df, which is NOT an ancestor of HEAD (code 1: the reseed was printed in a row that the rebase turned into d5a0a470) -- and the job is green all the same. The guard judges by the hashes of the print inputs, not by commit kinship, and says so itself: "the seed is not behind the sources: proven:check". Kinship is only the explanation it offers once the hashes disagree. Ask the guard, not merge-base. The kernel memo probe on binary 0.7.24: code 0 at 177.4 s, peak 0.36 GiB, the same answer sign for sign. The step comment in binary.yml carries the 0.7.23 number, 175.5 s; the 1.9 s are machine noise under foreign load. bootstrap/flang run-script tasks:check code 0 bootstrap/flang io scripts/guards/task-numbers-guard.fscript code 0
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Task 1117 measured all 25 jobs of the manually disabled
.github/workflows/ci.ymlon 2 October on tree
85cc976a: 18 green, 7 red. This branch takes the fivecheapest reds. The workflow itself stays disabled — turning it on is not this
branch's decision.
What the runs say
Measured with the runner's own shape: every step in its own subshell
(
bash --noprofile --norc -e -o pipefail), ownRUNNER_TEMP,GITHUB_OUTPUT,GITHUB_STEP_SUMMARY,GITHUB_ENV,GITHUB_REF=refs/heads/dev,GITHUB_REF_TYPE=branch,GITHUB_EVENT_NAME=push, steps in order and broken offat the first red. Local composite actions were expanded from their
action.ymlrather than skipped. Two trees:
5604556efwith binary 0.7.23, then4d76abd53+ this branch with binary 0.7.24 after the rebase (the trunk moved16 commits, one of them a reseed).
zadachnik/ task-trackerseed-verdictsuncalled/ checks-nobody-callsneznanye-storozha/ uncalled-guardsklyuchi/ cli-keysTwo of the five needed nothing from here.
16729f7f9had already fixed thescaffolding of
zadachnikand the inverted condition of step 14, andf909a981fhad stopped the key ledger calling five keys strangers. Both werere-measured, not assumed: checking the trunk before working saved the work twice.
seed-verdictswent green by itself, and the reason is not the one I firstwrote down. It is not commit kinship: on the rebased tree the fingerprint
names
a1102df50, which is not an ancestor ofHEAD, and the job is green allthe same. The guard judges by the hashes of the print inputs and says so itself —
"the seed is not behind the sources". The correction is written into task 1117
next to the wrong claim.
What this branch changes
fix(site)— the glossary sections knowfollows. The row was written intodocs/glossary.mdby hand on 25 September; the section lists inscripts/site/emit-dictionary.fscript, from which the page is printed, werenever told, so
dictionary:checkstopped the whole job at step 5 and the other24 steps were never seen. The page needed no rebuild — the hand-written row
stands exactly where the printer puts it.
fix(docs)— six reader lines in five pages drop the internal words(
guard→check,corpus→programs of the repository,printer→code generator), and tworepl_callsites inflang/src/emit/c/flang_repl.cgointo the exceptions of
docs/jargon.json: they are names of flang functions atflang/self/bootstrap/corpus.flang:270and:334, which a text ban cannotrename — only a reprint can. The debt of that file stays 42.
fix(ci)— the length-claims forgery is pinned to the promise text insteadof to line 75 of
flang/self/emit-rust.flang. The promise had moved to line 20,sedsaid nothing, and the step blamed a forgery that was never planted. Thisred was not in the 2 October table; it appeared since.
feat(ci)— thekernel-memoprobe gets a caller: the shortcutscript.kernel-memo:probeand a step in jobstorozhaofbinary.yml, whereall twenty of its sisters already stand.
ci.ymlis no home for a caller: it isdisabled, and a call there would call nobody. The probe is green today — code 0
at 177.4 s, peak 0.36 GiB — so task 5310's record of it as "red and expensive"
no longer holds.
Negative controls
Every fix has one, and each is red as it must be:
zadachnik: oneifleft without itsfizadachnik: the forgerysedmade a no-opfollowstaken back out of the sectionuncalled: both callers ofkernel-memoremovedThe four probe steps of
klyuchi,seed-verdictsand steps 8 and 14 plant theirforgeries themselves and are green, which is the same proof from the other side.
The tree is clean after every run:
git status --porcelainis empty.What stays red, and why
neznanye-storozhais red again on the rebased trunk, for a reason that camewith it. Step 9
Check jargon, code 1 at 202.9 s, four troubles, all four new:docs/site/registry.md(10 internal words where 0 are allowed),registry.ru.md(9),packages.md(1),packages.ru.md(1). Those pagesarrived with
ffeca8f82and are printed byscripts/site/registry-page.fscript, so editing the pages would be wiped by thenext build — the fix belongs in the printer. Opened as task 2325. None of the
six troubles this branch closed came back, and run step by step the job has 27 of
its 28 check steps green (759.9 s).
links— named debt,continue-on-error: true, blocks neither tag nor push.Not measured here: outside this share.
stale-pages— course pages on 0.7.22, tag and button only. Not measuredhere, same reason.
flang/proof/probes/text-block/tokens.fscript,and it gets a ledger entry rather than a caller, with the reason in numbers:
without
--max-stepsit gives no verdict at all (code 3 at 78.9 s), and with asample it grows worse than linearly in file size — code 0 at 5.9 s on a 394-byte
file, while ADR-0052 names 9 min 29 s for one 106 KB file and 78 min for a sample
of ten (those two numbers come from the decision page, not from a run here). A
caller over one tiny file would be a check that does not check.
storozhaona runner. That job takes 6 min 47 s and 7 min 01 s there (runs 37223001273,
37223864296), but one thread of
check --proofdoes not go at this machine'sspeed on two cores. Said out loud in the step's own comment.
Gates
Of the six push jobs that used to block, none blocks now.
stale-pageson the tagis still red, so the table does not yet say "turn CI on".