Skip to content

feat: refine crawlkit control metadata manifest - #137

Merged
steipete merged 1 commit into
mainfrom
steipete/sharp-allen-da6fff
Aug 7, 2026
Merged

feat: refine crawlkit control metadata manifest#137
steipete merged 1 commit into
mainfrom
steipete/sharp-allen-da6fff

Conversation

@steipete

@steipete steipete commented Aug 7, 2026

Copy link
Copy Markdown
Collaborator

Summary

Main already shipped the CrawlKit control manifest. This PR refines that existing surface without dropping its established paths, privacy declaration, capabilities, or commands.

  • use Slack-accurate branding and a scheduler-friendly all-source, latest-only sync argv
  • advertise the existing search and watch capabilities while preserving tap, tui, sql, and git-share
  • resolve default_config from the active --config path while retaining SLACRAWL_CONFIG
  • extract manifest construction into controlManifest and cover its exact values with a focused test

Verification

  • gofmt -l .
  • go vet ./...
  • go build ./...
  • go test ./...
  • go run ./cmd/slacrawl metadata --json

@steipete
steipete requested a review from a team as a code owner August 7, 2026 01:53
@clawsweeper clawsweeper Bot added rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action. P2 Normal priority bug or improvement with limited blast radius. merge-risk: 🚨 compatibility 🚨 Merging this PR could break existing users, config, migrations, defaults, or upgrades. labels Aug 7, 2026
@clawsweeper

clawsweeper Bot commented Aug 7, 2026

Copy link
Copy Markdown

Codex review: needs changes before merge. Reviewed August 7, 2026, 2:27 AM ET / 06:27 UTC.

ClawSweeper review

What this changes

This PR refines Slacrawl’s CrawlKit launcher manifest with updated branding, configuration-path reporting, capabilities, command arguments, and focused manifest tests.

Merge readiness

⚠️ Ready for maintainer review - 4 items remain

Keep this collaborator-authored PR open: it retains a prior P1 blocker because its newly advertised Search action always invokes the CLI without the required query.

Priority: P2
Reviewed head: df8ec44f5b686f06372ce5edec9c976782c0e115

Review scores

Measure Result What it means
Overall readiness 🦐 gold shrimp (3/6) The patch is focused and preserves the released actions, but one advertised action remains non-runnable and the release-owned changelog edit should be removed.
Proof confidence 🌊 off-meta tidepool Not applicable: This collaborator-authored PR is outside the external-contributor real-behavior-proof gate; its listed local checks remain supplemental validation.
Patch quality 🦐 gold shrimp (3/6) 2 actionable review findings remain.

Verification

Check Result Evidence
Real behavior Not applicable Not applicable: This collaborator-authored PR is outside the external-contributor real-behavior-proof gate; its listed local checks remain supplemental validation.
Evidence reviewed 6 items Non-executable proposed action: The proposed manifest publishes Search with no query argument, although the command is represented as a directly runnable argv.
Current CLI contract: Current main trims the Search query and returns "search query required" when it is empty, so the proposed argv fails before performing a search.
Prior blocker remains unresolved: The previous completed review identified the same Search contract problem; the refreshed head still contains the fixed-argv Search entry.
Findings 2 actionable findings [P1] Remove or parameterize the query-less Search action
[P3] Remove the release-owned changelog entry
Security None None.

How this fits together

Slacrawl publishes a JSON control manifest for launchers and automation to discover local archive actions. Each advertised action maps to CLI arguments that operate on the configured local Slack archive.

flowchart LR
  A[Launcher or automation] --> B[Metadata command]
  B --> C[Control manifest]
  C --> D[Advertised actions]
  D --> E[Slacrawl CLI]
  E --> F[Local Slack archive]
Loading

Before merge

  • Remove or parameterize the query-less Search action (P1) - The new action runs slacrawl --json search, but the CLI rejects an empty query. A launcher that executes this advertised argv always fails; retain Search as a capability but omit this static command until required input can be represented.
  • Remove the release-owned changelog entry (P3) - The applicable repository policy reserves CHANGELOG.md for releases. Keep the user-visible context in the PR body or commit message and remove this Unreleased entry.
  • Resolve merge risk (P1) - Merging would expose a Search launcher action that fails deterministically before reading the archive; the new contract test currently locks in that invalid argv.
  • Complete next step (P2) - Two concrete, mechanical blockers remain on the current head: the static Search argv needs removal or required-input support, and the release-owned changelog entry needs removal.

Findings

  • [P1] Remove or parameterize the query-less Search action — internal/cli/control.go:35
  • [P3] Remove the release-owned changelog entry — CHANGELOG.md:5-7
Agent review details

Security

None.

Review metrics

Metric Value Why it matters
Change surface 4 files changed: production +48/-33, tests +46, release notes +4 The small manifest contract change includes a test that currently preserves the invalid Search invocation.

Merge-risk options

Maintainer options:

  1. Remove the static Search action (recommended)
    Keep the Search capability but omit its command entry unless the manifest can supply a required query argument.
  2. Accept a non-runnable launcher action
    Land the manifest knowing automation that invokes the published Search argv will receive a required-query error.
Copy recommended automerge instruction
@clawsweeper automerge

Special instructions:
Remove or correctly parameterize the static Search command, update the manifest test, and remove the release-owned CHANGELOG entry.

Technical review

Best possible solution:

Expose only static actions that Slacrawl can execute unattended, retain Search as a capability until its required input can be represented, and leave release notes to the release process.

Do we have a high-confidence way to reproduce the issue?

Yes, source-reproducible: invoking the proposed slacrawl --json search argv reaches the current-main empty-query guard and returns "search query required.".

Is this the best way to solve the issue?

No: a static manifest action must be executable as published, so Search should remain capability-only unless the manifest can model its required query input.

Full review comments:

  • [P1] Remove or parameterize the query-less Search action — internal/cli/control.go:35
    The new action runs slacrawl --json search, but the CLI rejects an empty query. A launcher that executes this advertised argv always fails; retain Search as a capability but omit this static command until required input can be represented.
    Confidence: 0.99
  • [P3] Remove the release-owned changelog entry — CHANGELOG.md:5-7
    The applicable repository policy reserves CHANGELOG.md for releases. Keep the user-visible context in the PR body or commit message and remove this Unreleased entry.
    Confidence: 0.98

Overall correctness: patch is incorrect
Overall confidence: 0.99

AGENTS.md: found and applied where relevant.

Codex review notes: model internal, reasoning high; reviewed against 3525f123c1d4.

Labels

Label changes:

  • add merge-risk: 🚨 other: A newly published launcher action deterministically fails because its fixed argv omits a required user input.
  • add rating: 🦐 gold shrimp: Overall readiness is 🦐 gold shrimp; proof is 🌊 off-meta tidepool and patch quality is 🦐 gold shrimp.
  • remove merge-risk: 🚨 compatibility: Current PR review merge-risk labels are merge-risk: 🚨 other.
  • remove rating: 🦪 silver shellfish: Current PR rating is rating: 🦐 gold shrimp, so this older rating label is no longer current.

Label justifications:

  • P2: This is a bounded launcher-facing contract defect rather than an outage of the core archive workflow.
  • merge-risk: 🚨 other: A newly published launcher action deterministically fails because its fixed argv omits a required user input.
  • rating: 🦐 gold shrimp: Overall readiness is 🦐 gold shrimp; proof is 🌊 off-meta tidepool and patch quality is 🦐 gold shrimp.
  • status: ⏳ waiting on author: ClawSweeper has contributor-facing work open and is waiting for author action. Not applicable: This collaborator-authored PR is outside the external-contributor real-behavior-proof gate; its listed local checks remain supplemental validation.

Evidence

Acceptance criteria:

  • [P1] gofmt -l internal/cli/control.go internal/cli/control_test.go.
  • [P1] go test ./internal/cli.
  • [P1] go run ./cmd/slacrawl metadata --json.

What I checked:

  • Non-executable proposed action: The proposed manifest publishes Search with no query argument, although the command is represented as a directly runnable argv. (internal/cli/control.go:35, df8ec44f5b68)
  • Current CLI contract: Current main trims the Search query and returns "search query required" when it is empty, so the proposed argv fails before performing a search. (internal/cli/app.go:639, 3525f123c1d4)
  • Prior blocker remains unresolved: The previous completed review identified the same Search contract problem; the refreshed head still contains the fixed-argv Search entry. (internal/cli/control.go:35, df8ec44f5b68)
  • Release-owned changelog edit: The branch still adds an Unreleased changelog entry, contrary to the applicable release-owned changelog policy. (CHANGELOG.md:7, df8ec44f5b68)
  • Feature provenance: History identifies the CrawlKit control surface as introduced by Vincent Koc; current manifest lines are present in the v0.8.2 release prepared by Peter Steinberger. (internal/cli/app.go:467, 34e52890c33d)
  • Current-main check: The PR head is not merged into current main; the current v0.8.3 tag remains on the pre-PR metadata implementation. (internal/cli/app.go:467, 3525f123c1d4)

Likely related people:

  • Vincent Koc: Introduced the CrawlKit control surface that owns the manifest contract. (role: feature introducer; confidence: high; commits: 34e52890c33d; files: internal/cli/app.go)
  • Peter Steinberger: Prepared the released v0.8.2 version containing the current manifest and recently updated the CrawlKit dependency. (role: recent area contributor; confidence: high; commits: 22869cead976, 10e287b4255f; files: internal/cli/app.go, go.mod)

Rank-up moves

Optional improvements that raise the rating; they are not merge blockers.

  • Remove or correctly parameterize the Search command and update its exact manifest assertion.
  • Remove the CHANGELOG entry, then rerun the focused CLI manifest validation.

Rating scale

Score Internal tier Crab rank Meaning
6/6 S 🦀 challenger crab Exceptional readiness
5/6 A 🦞 diamond lobster Very strong readiness
4/6 B 🐚 platinum hermit Good normal PR; ordinary maintainer review
3/6 C 🦐 gold shrimp Useful, but confidence is limited
2/6 D 🦪 silver shellfish Proof or implementation needs work
1/6 F 🧂 unranked krab Not merge-ready
N/A NA 🌊 off-meta tidepool Rating does not apply

Overall follows the weaker of proof and patch quality.
Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics.

Workflow

  • ClawSweeper keeps one durable marker-backed review comment per issue or PR.
  • Re-runs edit this comment so the latest verdict, findings, and automation markers stay together instead of adding duplicate bot comments.
  • A fresh review can be triggered by eligible @clawsweeper re-review comments, exact-item GitHub events, scheduled/background review runs, or manual workflow dispatch.
  • PR/issue authors and users with repository write access can comment @clawsweeper re-review or @clawsweeper re-run on an open PR or issue to request a fresh review only.
  • Maintainers can also comment @clawsweeper review to request a fresh review only.
  • Fresh-review commands do not start repair, autofix, rebase, CI repair, or automerge.
  • Maintainer-only repair and merge flows require explicit commands such as @clawsweeper autofix, @clawsweeper automerge, @clawsweeper fix ci, or @clawsweeper address review.
  • Maintainers can comment @clawsweeper explain to ask for more context, or @clawsweeper stop to stop active automation.

History

Review history (3 earlier review cycles)
  • reviewed 2026-08-07T01:58:02.451Z sha 2274b10 :: found issues before merge. :: [P1] Preserve the released control-command contract
  • reviewed 2026-08-07T02:09:00.890Z sha e734337 :: needs changes before merge. :: [P1] Preserve the released control-command contract | [P1] Do not advertise Search without its required query | [P3] Leave the release-owned changelog unchanged
  • reviewed 2026-08-07T04:43:07.885Z sha e734337 :: needs changes before merge. :: [P1] Preserve the released control-command contract | [P1] Do not advertise Search without its required query | [P3] Leave the release-owned changelog unchanged

@steipete
steipete force-pushed the steipete/sharp-allen-da6fff branch 2 times, most recently from e7be8ee to e734337 Compare August 7, 2026 02:05
@clawsweeper clawsweeper Bot added rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. and removed rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. labels Aug 7, 2026
@steipete
steipete force-pushed the steipete/sharp-allen-da6fff branch from e734337 to df8ec44 Compare August 7, 2026 06:23
@steipete steipete changed the title feat: add crawlkit control metadata feat: refine crawlkit control metadata manifest Aug 7, 2026
@clawsweeper clawsweeper Bot added rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. merge-risk: 🚨 other 🚨 Merging this PR has meaningful risk outside the owned taxonomy. and removed rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. merge-risk: 🚨 compatibility 🚨 Merging this PR could break existing users, config, migrations, defaults, or upgrades. labels Aug 7, 2026
@steipete
steipete force-pushed the steipete/sharp-allen-da6fff branch from df8ec44 to 7f54f84 Compare August 7, 2026 06:29
@clawsweeper

clawsweeper Bot commented Aug 7, 2026

Copy link
Copy Markdown

ClawSweeper status: review started.

I am starting a fresh review of this pull request: feat: refine crawlkit control metadata manifest This is item 1/1 in the current shard. Shard 0/1.

This placeholder means the worker is alive and reading the current context. I will edit this same comment with the actual review when the claws are done clicking.

Crustacean status: shell secured, claws on keyboard, evidence pebbles being sorted.

@steipete
steipete merged commit 75c3834 into main Aug 7, 2026
13 checks passed
@steipete
steipete deleted the steipete/sharp-allen-da6fff branch August 7, 2026 06:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

feat merge-risk: 🚨 other 🚨 Merging this PR has meaningful risk outside the owned taxonomy. other P2 Normal priority bug or improvement with limited blast radius. rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants