@@ -54,6 +54,36 @@ name: collect
5454# a run - that one happened, when, how long it took, what the steps were called, that an
5555# artifact of N bytes exists - and not its subject or its contents.
5656#
57+ # AND THE SIGNED-IN SURFACE IS DIFFERENT. MEASURED 2026-09-22, AND IT IS NOT SAFE.
58+ #
59+ # The paragraph above is scoped to ANONYMOUS REST, where it still holds. This comment used
60+ # to leave the rest at "treat that as unknown rather than safe". It is no longer unknown.
61+ #
62+ # Runs 35762363585 and 35762574315, checked both ways on the same run:
63+ #
64+ # anonymous, web UI run page the input values appear NOWHERE in 236 KB of HTML,
65+ # not even collapsed. Run name, status, duration, step
66+ # names, annotations, artifact name/size/digest only.
67+ # anonymous, web UI job log "Sign in to view logs" - refused, agreeing with REST 403.
68+ # SIGNED IN, job log EVERY dispatch input passed through `env:` is echoed
69+ # VERBATIM, because Actions prints a step's env block:
70+ # TOPIC: probe
71+ # PRIOR: PROBE-START length=1200 xxxxxxxx...
72+ #
73+ # So on a PUBLIC repository the topic and the prior are readable by anyone with a GitHub
74+ # account. Not by a passer-by, and not a secret either. The 403 is an authentication wall,
75+ # not a need-to-know one.
76+ #
77+ # Nothing here is the place to fix that - passing an input through `env:` is exactly the
78+ # rule that keeps it out of a shell (see below), and routing it around the log would mean
79+ # routing it around that protection. What changes is the CLAIM: do not read "the topic
80+ # appeared in none of the readable responses" as "the topic is private". Research a subject
81+ # you would not publish, and use a private repository or a different route.
82+ #
83+ # bin/disclosure.mjs cannot see this and should not: it probes unauthenticated on purpose,
84+ # because a probe that quietly authenticated would answer a different question. A clean
85+ # disclosure report means "a stranger learns the shape", never "nobody learns the subject".
86+ #
5787# That is why the naming rules above are the primary control rather than a minor one: the
5888# names are the disclosure surface, and they are the part this workflow governs.
5989#
90120 # it - its own "10"s are about concurrency and background steps. So treat three as the
91121 # remaining budget, not as a guarantee, and expect a loud failure rather than a quiet one.
92122 #
93- # The other half of that check came back UNANSWERED: nothing found says whether a single
94- # input value has a length limit. It matters here because `prior` is free text, and
95- # silent truncation would corrupt a prediction while leaving it looking intact. Unknown,
96- # and recorded as unknown.
123+ # PER-INPUT LENGTH: NOTHING TRUNCATES. MEASURED 2026-09-22, after the corpus failed.
124+ #
125+ # This was recorded as unknown, and search could not close it. The one on-topic capture
126+ # was a 2024 community question asserting "its length is limited to 1024 characters",
127+ # whose only reply is a dormancy bot - nobody ever confirmed it. So it was measured
128+ # instead, by dispatching a payload of known length with a marker at the very end:
129+ #
130+ # 1200 chars run 35762363585 accepted, arrived as 1200, PROBE-END intact
131+ # 8000 chars run 35762574315 accepted, arrived as 8000, PROBE-END intact
132+ #
133+ # The 1024 figure is NOT what this repository observes, and the dangerous case does not
134+ # occur: no silent truncation, so a registered prior cannot be quietly corrupted while
135+ # still looking intact.
136+ #
137+ # What is still unknown, stated rather than rounded off: WHERE the ceiling is. It is
138+ # above 8000, and locating it costs one dispatch per probe, so it was not bisected. A
139+ # realistic prior is a few hundred characters, which is an order of magnitude inside
140+ # what has actually been shown to work.
97141 inputs :
98142 topic :
99143 description : ' What to research. Visible to anyone who can read this repository.'
0 commit comments