Skip to content

fix: replace Record<string, any> with Record<string, unknown> in GraphQL hooks - #1288

Open
Mayank Joshi (Lothnic) wants to merge 1 commit into
browseros-ai:mainfrom
Lothnic:fix/graphql-type-safety
Open

fix: replace Record<string, any> with Record<string, unknown> in GraphQL hooks#1288
Mayank Joshi (Lothnic) wants to merge 1 commit into
browseros-ai:mainfrom
Lothnic:fix/graphql-type-safety

Conversation

@Lothnic

@Lothnic Mayank Joshi (Lothnic) commented Jun 19, 2026

Copy link
Copy Markdown

Description:

  • Remove stale TODOs from mediaUrls.ts (URLs already present)
  • Rename ambiguous type params T/V to TResult/TVariables
  • Replace Record<string, any> | undefined with Record<string, unknown> = Record<string, never>
  • Remove no-longer-needed biome-ignore suppressions

CLA Signature

I have read the CLA Document and I hereby sign the CLA

…hQL hooks

- Remove stale TODOs from mediaUrls.ts (URLs already present)
- Rename ambiguous type params T/V to TResult/TVariables
- Replace Record<string, any> | undefined with Record<string, unknown> = Record<string, never>
- Remove no-longer-needed biome-ignore suppressions
@greptile-apps

greptile-apps Bot commented Jun 19, 2026

Copy link
Copy Markdown
Contributor

PR author is not in the allowed authors list.

@github-actions

github-actions Bot commented Jun 19, 2026

Copy link
Copy Markdown
Contributor

All contributors have signed the CLA. Thank you!
Posted by the CLA Assistant Lite bot.

@Lothnic Mayank Joshi (Lothnic) changed the title fix: replace Record<string, any> with Record<string, unknown> in Grap… fix: replace Record<string, any> with Record<string, unknown> in GraphQL hooks Jun 19, 2026
@Lothnic

Copy link
Copy Markdown
Author

I have read the CLA Document and I hereby sign the CLA

Vasilev Dmitrii (gHashTag) added a commit to gHashTag/BrowserOS that referenced this pull request Aug 22, 2026
…pe (browseros-ai#1287)

The pull-request poller caught its error and dropped it. The error is now a required argument of the only emitter - it cannot be dropped again by construction - and the message names the shape: an HTTP status when the error carries one, the transport error otherwise, a decode failure as itself.

Proven by running the drill on the branch before acceptance: HTTP 502, transport URLError -1009, and a decode failure that says the fetch discarded its status. That last line is the bee finding the next defect and naming it honestly; it is now browseros-ai#1288.

Closes browseros-ai#1287
Vasilev Dmitrii (gHashTag) added a commit to gHashTag/BrowserOS that referenced this pull request Aug 22, 2026
…could see

The heuristic reads the acceptance criteria, extracts the identifiers
they name, and calls the work done if all of them are present in the
boundary files. That is sound for an issue that asks for something new -
the identifier does not exist until the work exists. It is exactly
backwards for a fix: browseros-ai#1288's criteria name fetchPullRequest BECAUSE that
function loses the HTTP status, so its presence is the defect, and the
Queen read it as the cure.

Measured 2026-08-23: eight of seventeen candidates were skipped this
way, including two issues filed that same hour. The board looked
finished while half of it had never been touched. Its own comment
already warned that a behavioural task's FILES exist from day one; the
identifiers have the same problem one level down.

Presence is evidence only if it postdates the issue. The issue's
created_at now travels from the epic timeline through the store into the
candidate, and one git log per boundary path asks whether anything has
changed there since. Nothing changed means nothing done, whatever names
the file contains.

Asked only after the identifier check has already passed, so the common
case never pays for it, and a path git cannot answer for counts as
changed: a false "already done" loses the work entirely, while a false
"not done" costs one turn in which the bee says it is done.

Gate: REAL_EXIT=0.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Vasilev Dmitrii (gHashTag) added a commit to gHashTag/BrowserOS that referenced this pull request Aug 22, 2026
…rowseros-ai#1288)

fetchPullRequest read 'let (data, _)' and discarded the response, so a 404 for a deleted pull request and a 200 with an unreadable body reached the poller as the same silent decode error. The response is kept, the failure carries the status it arrived with, and nil is carried rather than turned into a zero a reader would take for an observation.

The poller, the drill and a suite now all see it. Wire proof from the drill on this branch: 'HTTP 404: response did not decode as a pull request for /repos/gHashTag/trios/pulls/4242' beside its status-less twin, and queen.drill.poll_failure.passed. make e2e: 969 checks in 87 scenarios.

Closes browseros-ai#1288
Vasilev Dmitrii (gHashTag) added a commit to gHashTag/BrowserOS that referenced this pull request Aug 22, 2026
…rom the night the release lane stood still

A delegated issue is a contract with three parts that must agree: the
boundary, the criteria, and the proof. When they disagree the bee cannot
win, and its failure reads as the bee's fault.

I wrote two briefs on 2026-08-23 whose criteria demanded files the
boundary forbade. browseros-ai#1287 asked for a logic suite and permitted only
ChatViewModel, so the bee put its suite inside ChatViewModel - the only
file it could write. browseros-ai#1288 asked for the poller's message, a drill and a
suite, and permitted only the client: four of five criteria unreachable,
and a bee whose own change was exact came back 1/5. Both had to be
finished at review time, and the second issue says so in its closing
comment, because a record that blames a bee for a boundary its author
drew is a record that lies.

The new skill carries that rule, the trap where criteria naming a
defect's own identifiers make the issue read as already done, what
'proven by a run' requires of the boundary, a five-question checklist,
and the three ways a short return can be read - only one of which is the
bee's fault.

Live forensics gains the night's four: a keychain that times out on
every operation is a waiting dialog (pgrep -x SecurityAgent, and three
discriminators that named it); 'open --env' applies only at launch, so
kill and VERIFY dead first; a refusal you cannot find is usually under a
key you did not grep - '/accept' logs queen.accept.blocked; and the
shared trinity checkout breaks this build about once every two hours.

Gate: REAL_EXIT=0.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
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