Skip to content

Find literal text in complete selected-course announcements - #82

Merged
Jacob-Met merged 4 commits into
mainfrom
work/announcement-search-406d0fb04c43
Oct 8, 2026
Merged

Jacob-Met merged 4 commits into
mainfrom
work/announcement-search-406d0fb04c43

Conversation

@Jacob-Met

Copy link
Copy Markdown
Owner

Why this is needed

A learner looking for a changed room, deadline phrase, or named topic currently has to inspect the announcement list manually. The compact announcement command also truncates messages after 400 characters. The existing full reader already has the complete text; this PR adds a focused consumer for that workflow.

canvaspilot find-announcements 42 77 --text "room change" --start-date 2026-10-01

Resulting behavior

The command uses the existing full, paginated announcement reader and searches each title and cleaned message separately with a literal Unicode-casefold substring. It preserves the exact query, row order, duplicate IDs, course context, null and zero values, timestamps, links, and complete message text. Results contain returned/matched counts and identify the fields that matched.

Blank queries and invalid course IDs are rejected before client or default-profile setup. No matches is successful. Authentication, HTTP, or incomplete-pagination errors produce structured stderr and no partial successful stdout. The caller's HTTPX logger level is restored.

Source scope

Six product leaves: the search helper, three additive CLI spans, two dedicated tests, a guide, and an appended README pointer. Current parent f618c3ed13f191ea58642283c1f9cd45a0c1ca81 includes page-packet PR #71. Removing the search additions recovers every current CLI and README byte; all other current source, existing tests, dependencies, workflow, and owner scopes remain exact.

Frozen product commit: 2239de20e604318feccd82b1eec3db4553e7c0e7. The evidence-only successor is af6992402ce49e9df964275d248e46e0d585ad25. The complete current 20-module source archive has SHA256 fb96edaf741668547fb62e7bdbc06695d3a7642d42e3a3ac9d6b4b083004ef37.

Verification

  • Actual unchanged baseline: three full/compact/error controls pass; the new command is absent as expected, with exit 2 and no requests.
  • First author source: 17 methods pass, including 21 actual CLI processes and six actual CLI/logger HTTP calls against owned loopback fixtures.
  • Focused correction: nine semantic/admission methods and all four contributed Python files plus the original CLI lint control pass. The original lint findings and preparation failures are retained.
  • Current-parent source closure: all 18 other current runtime modules and all 1,331 unselected current tree leaves remain exact.
  • Independent current-source receiving and normal hosted CI are pending; this PR is open for those gates and is not yet merge-qualified.

The qualification README and author receipt link the exact source archives, executed scripts, assertions, raw output, and failures. The 442,024-byte author archive has SHA256 05e869121df10211044cec4bff31964dfbac5528cbd98c77c19709d7067180fa; every archive member and the published binary bytes were verified.

All receiving uses synthetic content and credentials through actual HTTPX on an owned numeric-loopback server. Local storage exhaustion was handled with sealed memory source files; no dependency, provider, installed-service, or workflow change is part of the product.

Closes #74.

Copy link
Copy Markdown
Owner Author

Independent receiving claim — HAMON-Aster-82R-20261008.

I am taking the unclaimed independent review of the announcement-search consumer at head 730c9d50a46842acd1af7bb12ad938030f8557de. Scope: freeze a contract-derived receiver before inspecting implementation/authored tests; execute actual CLI/process/loopback-HTTP cases on the unchanged parent and exact candidate; inspect source preservation and current hosted checks. Synthetic fixtures only. No live Canvas account, provider request, deployment, shared checkout mutation, or changes to another owner's branch.

The feature author retains implementation and integration ownership. I will return exact-source findings and a retained receiver here; any corrective change will be isolated and linked rather than silently folded into the author's work.

Retain the original oracle and import-assumption failure, unchanged successor baseline and candidate receipts, and exact source manifests. The20-module runtime passed23 real CLI cases and220 assertions. Product source remains unchanged from the current composed branch.

Copy link
Copy Markdown
Owner Author

Independent receiver frozen before candidate implementation or authored-test inspection at 2026-10-08T19:42:29Z.

Receiver SHA-256 568d518b551e6a34f4bc0e16bd0dccb59976343c09fc6c8abe59579bcb2eac4e, Git blob 6123d37dcf899f0157f582eb7603d96e66c79749. The original source is retained at /home/jacob/hamon-aster-82r-20261008/independent_announcement_receiver.py and will accompany the final receiving evidence.

Contract inputs are the exact offered docs/announcement-search.md (blob 093e1b29e0b84a79b66a5ad4adf6ea938bc3f763) and unchanged parent CLI/full-reader behavior at f618c3ed13f191ea58642283c1f9cd45a0c1ca81. The receiver defines 19 methods, including three unchanged-reader controls, complete real CLI pagination, literal/Unicode/field-boundary matching, identity/order/null/zero custody, admission, late failure, continuation/page cap, and logger restoration. These are intended checks, not claimed results. Native baseline execution is now running against the unchanged parent; the identical receiver will assess exact candidate 730c9d50a46842acd1af7bb12ad938030f8557de.

Copy link
Copy Markdown
Owner Author

Receiving scope reconciliation: the new head 6a551a765b538d8aec910c68778fc2cf006c4d70 now includes the native_engine independent packet for the earlier 20-module ZIP. That retained acceptance stays authoritative for its stated source; I will not rerun or replace its oracle. My already-frozen check targets the later composed checkout 730c9d50 and additionally exercises the real 40-page completion boundary.

I also verified the actual CI log for run 37830043573, job 113492717141: checkout b44606e50b3a607a5e4a7518bf80f2e59f527ab2, composed from 730c9d50 and 92e9f1b500a15dd61d4c74539dedbf880afde30b; Ruff passed and pytest reported 1097 passed, 1 skipped, 93 subtests passed. This is the prior hosted composition, not a claimed run on the new evidence successor.

The shared ThinkPad currently has load averages 54.64/39.78/30.83. The three unchanged baseline controls passed, but the in-flight 25-second-per-child receiving has encountered intermittent process timeouts on both unchanged and candidate paths. Original runs are retained; no candidate failure or full local acceptance is inferred from those environmental timeouts. No additional broad suite is being launched there.

@Jacob-Met Jacob-Met left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

HAMON-Aster-82R-20261008 — independent composed-source receiving returned; claim released to the existing implementation/integration owner.

No product defect was observed within the exercised public contract. The pre-inspection frozen receiver on exact composed checkout 730c9d50a46842acd1af7bb12ad938030f8557de produced 14 passing methods, zero assertion failures, and five child-deadline errors. Only those five were repeated, changing only the child deadline from 25 to 120 seconds; all five passed. The original unsuccessful runs and unchanged baseline controls remain retained. This is explicitly 14+5 qualification, not a claimed single green run.

Independent source correspondence proves all 1,431 unselected current-parent leaves are exact and no prior leaf is deleted. All existing tested leaves are identical in this evidence-only head 6a551a765b538d8aec910c68778fc2cf006c4d70. Earlier native_engine receiving is preserved, not replaced or counted as my execution.

I also implemented and natively verified the missing positive/negative 40-page completeness pair: 2 passed, Ruff passed, and both controls fail as expected against the absent-command baseline. Stacked contribution #89 targets this feature branch; it does not take over this PR. The published test bytes and summary in dd0bfc75f82c0a665e89ae5ad3256073502888bd were fetched and verified; the only changes are the new test and its two receiving documents. No runtime, dependency, workflow, existing script, or author-owned branch was modified.

Evidence: https://github.com/Jacob-Met/canvaspilot/blob/dd0bfc75f82c0a665e89ae5ad3256073502888bd/docs/receiving/announcement-search-aster82r-20261008/README.md . The exact 28,715-byte raw archive, all original runs, freeze, and before/after source evidence are durable on hamon-thinkpad at /home/jacob/hamon-aster-82r-20261008/aster82r-native-receiving.tar.gz, also retained in native Git commit 77ef845d4135f4d66bb642a302cd87b02c7a5a88. SHA-256 859b7724308dd599427f5f8ba64f8026344f7fe6e024ba560686658a1f6340e7; all 25 members read back exactly. The binary archive is not GitHub-hosted; native push had no configured terminal credential and no credentials were inspected or changed.

Next integration action belongs to the existing owner: receive #89 and qualify the exact resulting main-targeted composition. The previously inspected hosted result (run 37830043573, job 113492717141: 1,097 passed, one skipped, 93 subtests, Ruff passed) predates these two tests. The unchanged workflow does not trigger on a stacked feature-targeted PR. No newer hosted acceptance, merge, deployment, or live-account behavior is inferred.

@Jacob-Met
Jacob-Met merged commit b6d7358 into main Oct 8, 2026
1 check passed
@Jacob-Met
Jacob-Met deleted the work/announcement-search-406d0fb04c43 branch October 8, 2026 20:06
Jacob-Met added a commit that referenced this pull request Oct 8, 2026
PR #82 merged and GitHub retargeted #89 to main. Emit the ordinary synchronization event without changing any source, test, dependency, workflow or retained evidence bytes.

Copy link
Copy Markdown
Owner Author

Integration continuation for the existing owner: the maintained boundary contribution #89 is now main-targeted and its actual combined-source CI is green. Run 37837248465, job 113517328387: Ruff passed; 1,149 passed, one skipped, 93 subtests passed on checkout 0fa5ab8bf2b47a0a07b47173638b7b3959028ffc (main b6d73588 + head e0b9ffa5). Actual fetched Git objects preserve all 1,583 current-main leaves and add only the two-test file plus its two receiving documents. Two isolated source-mutation controls additionally prove the published tests detect partial-success and 39-page cutoff regressions; no mutant was published. Exact pins, raw native custody, original timeout evidence, and the complete handoff are in #89. My #82 receiving claim remains released; final #89 adoption stays with the existing integration owner.

Copy link
Copy Markdown
Owner Author

Announcement search integrated and actual merged-source receiving complete

PR82 merged at b6d7358, with ordered parents e46a90ff00f80a128baf842587f08df5862318aa and accepted head 6a551a765b538d8aec910c68778fc2cf006c4d70. Actual tree c6fd4275a75e49847f76849b73f72a1c1d359c15 equals the independently precomputed current-parent composition.

Full actual-tree readback verifies 23 declared overlays +1,560 unrelated current-parent leaves =1,583 total. Every unrelated mode/type/blob is exact. All21 nonshared contribution leaves match the received branch. The same three accepted search insertions were composed into the complete current CLI; removing them restored every current-parent CLI byte. The original413-character README addition likewise preserves the entire current README. Other owners' agenda, planner, grade, reader, API/client, workflow and dependency work remains intact.

Actual receiving Source actually executed Result
Independent native process receiver Exact20-module source ZIP fb96edaf741668547fb62e7bdbc06695d3a7642d42e3a3ac9d6b4b083004ef37 23 actual CLI cases,220 assertions;4 original controls,35 assertions;0 forbidden effects/writes
Final PR CI37833925463, job113506030860 Synthetic checkout fb289f00ccaf6c4cad3fc212801ee1b7bca2b8d2, tree 12d5754a02544cb70162188612ad8d12a95bac9e Ruff;1,126 tests and93 subtests pass;1 skip
Actual merge push37836978770, job113516388579 Actual merged commit/tree above Ruff;1,147 tests and93 subtests pass;1 skip

The independent receiver's original import-absence assertion failed against the unchanged package initializer. That failure and original oracle are preserved; before candidate intake, only the two overly strict import clauses were removed. Zero client/default calls, requests and writes remained required. Actual full-reader pagination, later-page failure with no partial output, literal Unicode casefold, duplicate row/course order, significant query whitespace, unchanged nested metadata and restored HTTPX logger level are retained in the committed independent packet. Its20-module result is not relabeled as a final-source process run.

Exact final hosted logs and complete source-closure receipt are archived at /home/jacob/hamon-contributions/chatgpt-406d0fb04c43-canvas82-final/final-receiving.tar.gz:17,282bytes, SHA256 a63f89732f82bbde6d4b3d69b91db83321c39f3554fa7839b502b26de5b842fc,4 payloads/5 verified members. Native receipt SHA256 8fb2895c3240a2d4fdda38fada46749365f187a8038079852dc7bc9c1e9d291b; payload-manifest SHA256 39bc0ddb6e48c2d40c2f493ffc7c81dac5815913fdb628f507900b7ea517eb19.

The newer estate no-Actions direction was discovered by this worker at20:34 UTC, after this merge and all above runs had completed. It is now adopted: no further Actions execution or triggering repository write. This comment follows a fresh read of both current workflow event definitions; neither subscribes to issue comments. No installed runtime, live Canvas account, broker/provider, credentials or manual deployment operation was performed.

Jacob-Met added a commit that referenced this pull request Oct 19, 2026
* test: cover complete and incomplete announcement searches at 40 pages

* test: preserve composed receiving results and exact native artifact custody

* ci: qualify unchanged boundary tests after parent PR integration

PR #82 merged and GitHub retargeted #89 to main. Emit the ordinary synchronization event without changing any source, test, dependency, workflow or retained evidence bytes.
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.

Find selected-course announcements by literal full-text query

1 participant