Skip to content

Find literal text in course-page titles and available bodies - #95

Draft
Jacob-Met wants to merge 1 commit into
mainfrom
estate/page-search-a0eb505c
Draft

Jacob-Met wants to merge 1 commit into
mainfrom
estate/page-search-a0eb505c

Conversation

@Jacob-Met

Copy link
Copy Markdown
Owner

Page listing can omit bodies, so it cannot answer where a phrase appears across a course’s pages. This adds canvaspilot find-pages 42 --text "field journal", which requests bodies through the existing paginated reader and returns ordered matches in supplied titles and available cleaned body text.

The command uses literal Unicode casefold matching. It retains exact original rows, duplicate page identities and the matching field names. Missing, null and locked bodies are reported explicitly; block-editor attributes are preserved but are not silently treated as searchable HTML. A later-page error or malformed collection refuses the whole result without partial successful stdout.

The six source paths add the helper, parser/dispatch, maintained tests and guide. Existing client, API, authentication, broker, dependencies and workflows are unchanged. Current syllabus, announcement and enrollment contributions and all 1,614 unrelated parent leaves are preserved.

Validation is documented in the receiving index:

  • Original native CLI absence witness.
  • Nineteen scoped cases covered by the recorded 18-pass run and one focused corrected case; corrected Ruff invocation passes.
  • Actual CLI subprocess with two fictional HTTP pages: nine checks pass.
  • Independent real-client observations cover ordered duplicates, Unicode casefold, separate fields, explicit unavailable bodies and later HTTP 503 with no partial output. Forty-two assertions pass over those captured observations, including native close and logger restoration.
  • Independent current-parent source binding verifies all 43 native source inputs, exact shared-file inverses and the complete canonical source tree.

The packet retains initial product/setup/expectation failures. Gate02 lost its final controller status during a remote-session outage; its durable JUnit/stdout and reconciliation remain explicit. The independent raw run exited 1 on its own inherited page-size expectation, then completed remaining assertions on the same captured results without new HTTP. These are not relabelled as clean full-run exits.

Exact head c36264e588ef7ec007d0ed5ee62a38fc5ed9b40f, sole parent 56a72a2e2cee5ec04671d12ebe5bc2484afb8026, full tree df52f973849155aef31151fa5072284feed179df; all 1,626 published leaves and modes were read back. The six evidence paths include the complete selected 246-file source/receiving archive with every member checksum.

Native receiving used Python 3.14.4 and the existing environment. Hosted CI is a separate gate. No live Canvas account, installation or deployment was performed. Root retains final source review and merge.

Closes #92.

Find Unicode-casefold text in returned page titles and available bodies, retain ordered exact rows and duplicates, and refuse partial output after a collection error. Keep missing, null and locked bodies explicit. Preserve all current syllabus, announcement and enrollment paths.

Retain the original absence witness, 19 scoped native cases closed across the recorded 18-pass run and one focused correction, independent actual-client receiving, source-composition proof and original setup/expectation failures. Native partial source custody is distinguished from canonical ancestry. No live Canvas, install or deployment claim.

Refs #92
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 literal text in course-page titles and available bodies

1 participant