PostgreSQL ™ Index Only Scan Can not Select Ctid

I have table A (bigint id, text text)and I have the primary key btree on login.

Now I want to go get ctid records meet certain conditions such as id = 823977776533426178.

However, even using pg_hint_plan suggest PostgreSQL to use Index only Scanit will always give me Index analysis, as following:

/ * + IndexOnlyScan (a) * / explain the analysis to select a ctid from an id id = 823977776533426178;
QUERY PLAN
-------------------------------------------------- -------------------------------------------------- ------
Index Scan using a_pkey on a (cost = 0.14..8.16 rows = 1 width = 6) (real time = 0.038..0.039 rows = 1 loops = 1)
Cond Index: (id = 823977776533426178 :: bigint)
Planning time: 0.122 ms
Running time: 0.095 ms
(4 rows)

My understanding is ctid is the physical record ID (block_no: record_offset) of each record and must be included in any btree index, because any index will need this information to extract the record from the heap file.

So why can not an index just return the ctid directly?
Is it just that PostgreSQL does not implement it this way?

BTW, my test version is PostgreSQL-11.

Thank you!