Skip to content

fix(queen): four honesty defects on the HUD, and an executable contract for them - #897

Merged
gHashTag merged 1 commit into
mainfrom
fix/queen-cycle-001-honesty
Sep 4, 2026
Merged

gHashTag merged 1 commit into
mainfrom
fix/queen-cycle-001-honesty

Conversation

@gHashTag

@gHashTag gHashTag commented Sep 4, 2026

Copy link
Copy Markdown
Owner

What

Loop cycle 001, the P0 honesty pass on t27.ai/#/queen:

  • the round line said "no eligible specification" on an ALLOW (measured 01:39Z with 4 bees dispatched); it now reports what the round did, and the refusal only on a refusal;
  • "rounds / 24h" was a lease-row count (0 or 1) and reads a dash until the server counts rounds;
  • tiles name their window (24h) and their wire source (the done column's own title); FOUNDRY is online/total;
  • COPY TO AGENT no longer hands out api.t27.ai endpoints that fail TLS; the copied bootstrap names the page's own origin.

Verified

check:queen-honesty (new, executable, 13 checks with a self-test), eslint, tsc, all check:queen-*, check:api, typecheck:ratchet, check:queen-viewport 25/25.

🤖 Generated with Claude Code

…ct for them

Loop cycle 001 (queen-game-loop), the P0 honesty pass. Each item was
measured on the live page against its endpoint before it was changed:

- The round line printed the refusal explanation on an ALLOW. At 01:39Z the
  tick allowed 4 bees and the gold block read "A new Bee may start · The
  current queue has no eligible specification". decisionDetail() now says
  what the round did (running count, latest dispatch) on ALLOW and the
  refusal only on a refusal; the popover uses the same function.
- "rounds / 24h" read pulse.rounds, which counts the rows of a one-row
  lease table and can only ever be 0 or 1. It reads a dash until the server
  counts real rounds (backlog P3-2).
- Tiles mixed lifetime and 24-hour figures without saying so, and ACCEPTED
  named a field no endpoint carries: the tile is now titled by the done
  column's own wire title, the two 24 h figures name their window, and
  FOUNDRY reads online/total with the programmed count in the sub-line
  (summary.online is 0 today; 1/1 read as fully online).
- COPY TO AGENT handed out three https://api.t27.ai endpoints that fail TLS
  and 404; rewriteEndpoints() replaces the origin with the one the page
  itself reads from, keeping each path and query.

qa/queen-honesty-contract.mjs runs the two pure functions under Node's type
stripping (13 checks, with a self-test that can fail) and pins the four
source facts; wired as check:queen-honesty. eslint, tsc, every Queen
contract, check:api, the ratchet and the five-size viewport contract are
green. A first attempt put "/ 24H" in the tile label and overflowed by
13 px at 1272x806; the probe caught it, so the window lives in the
sub-line.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@gHashTag
gHashTag merged commit a50e080 into main Sep 4, 2026
14 of 18 checks passed
@gHashTag
gHashTag deleted the fix/queen-cycle-001-honesty branch September 4, 2026 02:34
github-actions Bot added a commit that referenced this pull request Sep 4, 2026
fix(queen): four honesty defects on the HUD, and an executable contract for them (#897)

Loop cycle 001 (queen-game-loop), the P0 honesty pass. Each item was
measured on the live page against its endpoint before it was changed:

- The round line printed the refusal explanation on an ALLOW. At 01:39Z the
  tick allowed 4 bees and the gold block read "A new Bee may start · The
  current queue has no eligible specification". decisionDetail() now says
  what the round did (running count, latest dispatch) on ALLOW and the
  refusal only on a refusal; the popover uses the same function.
- "rounds / 24h" read pulse.rounds, which counts the rows of a one-row
  lease table and can only ever be 0 or 1. It reads a dash until the server
  counts real rounds (backlog P3-2).
- Tiles mixed lifetime and 24-hour figures without saying so, and ACCEPTED
  named a field no endpoint carries: the tile is now titled by the done
  column's own wire title, the two 24 h figures name their window, and
  FOUNDRY reads online/total with the programmed count in the sub-line
  (summary.online is 0 today; 1/1 read as fully online).
- COPY TO AGENT handed out three https://api.t27.ai endpoints that fail TLS
  and 404; rewriteEndpoints() replaces the origin with the one the page
  itself reads from, keeping each path and query.

qa/queen-honesty-contract.mjs runs the two pure functions under Node's type
stripping (13 checks, with a self-test that can fail) and pins the four
source facts; wired as check:queen-honesty. eslint, tsc, every Queen
contract, check:api, the ratchet and the five-size viewport contract are
green. A first attempt put "/ 24H" in the tile label and overflowed by
13 px at 1272x806; the probe caught it, so the window lives in the
sub-line.

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
@gHashTag
gHashTag restored the fix/queen-cycle-001-honesty branch September 28, 2026 09:54
gHashTag added a commit that referenced this pull request Oct 4, 2026
… in CI (#1352)

check:queen-honesty was FAIL (3) on main because its pins pointed at code
that has since moved:

- the round decision line (`decisionLine`) went with the command rail's
  second round button in 9316e9e. The pin now holds the popover that
  survived: the verb on its own line, then {decisionInfo} first and the
  skip count after;
- H-C1 required Queen.tsx to name queen/foundation.json, but #1206 moved
  every corpus read into lib/queenCorpus.ts, and spec-sync rule B refuses
  that name anywhere else. The pin now holds what Queen.tsx still decides:
  - the foundation comes from the store, with the server's route as the
    wire;
  - only the board's own repository is kept;
  - the viewport shows count@date:source.
  The store's order is pointed to (spec-sync rule C), not restated;
- yellow coverage now reads useCorpus("manifest") rather than a fetch.

Negative controls: seven mutations of a mirrored Queen.tsx each fail with
exactly the intended pin, and the unmutated mirror passes.

website-checks.yml now runs the contract. No workflow had run it since
#897 (2026-09-04).

Closes #1351

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
github-actions Bot added a commit that referenced this pull request Oct 4, 2026
qa(queen): re-home the three stale honesty pins, and run the contract in CI (#1352)

check:queen-honesty was FAIL (3) on main because its pins pointed at code
that has since moved:

- the round decision line (`decisionLine`) went with the command rail's
  second round button in 9316e9e. The pin now holds the popover that
  survived: the verb on its own line, then {decisionInfo} first and the
  skip count after;
- H-C1 required Queen.tsx to name queen/foundation.json, but #1206 moved
  every corpus read into lib/queenCorpus.ts, and spec-sync rule B refuses
  that name anywhere else. The pin now holds what Queen.tsx still decides:
  - the foundation comes from the store, with the server's route as the
    wire;
  - only the board's own repository is kept;
  - the viewport shows count@date:source.
  The store's order is pointed to (spec-sync rule C), not restated;
- yellow coverage now reads useCorpus("manifest") rather than a fetch.

Negative controls: seven mutations of a mirrored Queen.tsx each fail with
exactly the intended pin, and the unmutated mirror passes.

website-checks.yml now runs the contract. No workflow had run it since
#897 (2026-09-04).

Closes #1351

Co-authored-by: Claude Opus 5.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