Skip to content

Lock Chunk 6 checker contract spec#15

Merged
Abiorh001 merged 2 commits into
mainfrom
lock-chunk6-checker-contract-spec
Jun 9, 2026
Merged

Lock Chunk 6 checker contract spec#15
Abiorh001 merged 2 commits into
mainfrom
lock-chunk6-checker-contract-spec

Conversation

@Abiorh001

@Abiorh001 Abiorh001 commented Jun 9, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • lock the two-stage Week 2 checker model: pre-submit static checks plus post-submit internal auto checks
  • clarify checker failures route to user-facing needs_revision without creating human review decisions
  • add Chunk 6 checker contract and records spec with models, canonical values, APIs, visibility rules, and CoS
  • remove checker-blocked wording in favor of internal source tracking and user-facing needs_revision

Verification

  • stale wording scan only hits the intentional banned-word guardrail in AGENTS.md
  • Markdown links OK
  • no local XLSX export present
  • git diff --check

Summary by CodeRabbit

  • Documentation
    • Added the Chunk 6 checker contract & records specification and marked it complete.
    • Expanded the checker framework into a clarified two-stage flow (pre-submit static feedback vs post-submit durable runs/results).
    • Defined durable checker run/result semantics, visibility rules, and user-facing routing (auto-checker vs human review).
    • Updated lifecycle/state transitions, operations queue, roadmap, and reviewer/agent guidance to reflect the new flow.

@coderabbitai

coderabbitai Bot commented Jun 9, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: c15e8b5b-f1cb-4425-a25e-022ee9fd838c

📥 Commits

Reviewing files that changed from the base of the PR and between b0c640d and 0119c68.

📒 Files selected for processing (7)
  • AGENTS.md
  • docs/architecture_checker_framework.md
  • docs/architecture_data_model.md
  • docs/architecture_lifecycle_state_machine.md
  • docs/operations_queue_policy.md
  • docs/spec_chunk_6_checker_contract_records.md
  • docs/spec_week2_checker_framework.md
✅ Files skipped from review due to trivial changes (1)
  • docs/spec_chunk_6_checker_contract_records.md
🚧 Files skipped from review as they are similar to previous changes (2)
  • docs/architecture_checker_framework.md
  • docs/spec_week2_checker_framework.md

📝 Walkthrough

Walkthrough

This PR completes the Chunk 6 checker specification and refines the Week 2 checker framework documentation across roadmaps, specs, and architecture guides. It establishes explicit routing semantics where automated checker failures produce user-facing NEEDS_REVISION outcomes without creating human review decisions, distinguishing them via outcome_source = auto_checker fields.

Changes

Checker Framework Specification & Semantics

Layer / File(s) Summary
Chunk 6 Specification & Planning Updates
README.md, docs/spec_chunk_6_checker_contract_records.md, docs/roadmap_status.md, AGENTS.md
Adds complete Chunk 6 specification defining durable checker run and result records, canonical enums, server-side snapshot binding, read APIs, visibility constraints, immutability/acceptance criteria; updates README link, marks Chunk 6 complete in roadmap, and adds internal sub-agent review requirements.
Two-Stage Checker Model & Outcome Routing Rules
docs/architecture_checker_framework.md, docs/roadmap_30_day_master_plan.md, docs/roadmap_day_by_day_execution_plan.md, docs/spec_week2_checker_framework.md, docs/architecture_data_model.md, docs/architecture_lifecycle_state_machine.md, docs/operations_queue_policy.md
Clarifies two-stage checker workflow (pre-submit static → post-submit internal auto-check), inserts explicit CheckerRun/CheckerResult step and gating rules, and establishes routing: automated worker-fixable failures route to user-facing NEEDS_REVISION with outcome_source = auto_checker (no human review decision), while human review outcomes use outcome_source = human_review. Updates data model fields for CheckerRun/CheckerResult, lifecycle states, and transition guards.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

  • Flow-Research/workstream#14: Both PRs update the Week 2 checker-framework documentation flow and gating semantics, including architecture, roadmaps, and spec references.

Poem

🐰 Through specs I hop with gentle cheer,
Two-stage checks now crystal clear,
Auto findings guide the way,
To NEEDS_REVISION they convey,
A rabbit’s note: the rules appear.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'Lock Chunk 6 checker contract spec' directly summarizes the main change: formalizing and completing the Chunk 6 specification for the checker contract and records, moving it from pending to completed status.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch lock-chunk6-checker-contract-spec

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitai

coderabbitai Bot commented Jun 9, 2026

Copy link
Copy Markdown

Caution

Failed to replace (edit) comment. This is likely due to insufficient permissions or the comment being deleted.

Error details
{"name":"HttpError","status":500,"request":{"method":"PATCH","url":"https://api.github.com/repos/Flow-Research/workstream/issues/comments/4660550560","headers":{"accept":"application/vnd.github.v3+json","user-agent":"octokit.js/0.0.0-development octokit-core.js/7.0.6 Node.js/24","authorization":"token [REDACTED]","content-type":"application/json; charset=utf-8"},"body":{"body":"<!-- This is an auto-generated comment: summarize by coderabbit.ai -->\n<!-- review_stack_entry_start -->\n\n[![Review Change Stack](https://storage.googleapis.com/coderabbit_public_assets/review-stack-in-coderabbit-ui.svg)](https://app.coderabbit.ai/change-stack/Flow-Research/workstream/pull/15?utm_source=github_walkthrough&utm_medium=github&utm_campaign=change_stack)\n\n<!-- review_stack_entry_end -->\n<!-- This is an auto-generated comment: review in progress by coderabbit.ai -->\n\n> [!NOTE]\n> Currently processing new changes in this PR. This may take a few minutes, please wait...\n> \n> <details>\n> <summary>⚙️ Run configuration</summary>\n> \n> **Configuration used**: defaults\n> \n> **Review profile**: CHILL\n> \n> **Plan**: Pro Plus\n> \n> **Run ID**: `003a877c-d79f-4164-ae78-05b7c63a641d`\n> \n> </details>\n> \n> <details>\n> <summary>📥 Commits</summary>\n> \n> Reviewing files that changed from the base of the PR and between a5d5894fbed956f30e36aeaa34292b3c0fff6c2d and b0c640d3de84d649b304aef7a146f96d0a7309ed.\n> \n> </details>\n> \n> <details>\n> <summary>📒 Files selected for processing (7)</summary>\n> \n> * `README.md`\n> * `docs/architecture_checker_framework.md`\n> * `docs/roadmap_30_day_master_plan.md`\n> * `docs/roadmap_day_by_day_execution_plan.md`\n> * `docs/roadmap_status.md`\n> * `docs/spec_chunk_6_checker_contract_records.md`\n> * `docs/spec_week2_checker_framework.md`\n> \n> </details>\n> \n> ```ascii\n>  ________________________________________________________\n> < Code review is my cardio: https://youtu.be/HSmKiws-4NU >\n>  --------------------------------------------------------\n>   \\\n>    \\   \\\n>         \\ /\\\n>         ( )\n>       .( o ).\n> ```\n\n<!-- end of auto-generated comment: review in progress by coderabbit.ai -->\n\n<!-- finishing_touch_checkbox_start -->\n\n<details>\n<summary>✨ Finishing Touches</summary>\n\n<details>\n<summary>🧪 Generate unit tests (beta)</summary>\n\n- [ ] <!-- {\"checkboxId\": \"f47ac10b-58cc-4372-a567-0e02b2c3d479\", \"radioGroupId\": \"utg-output-choice-group-unknown_comment_id\"} -->   Create PR with unit tests\n- [ ] <!-- {\"checkboxId\": \"6ba7b810-9dad-11d1-80b4-00c04fd430c8\", \"radioGroupId\": \"utg-output-choice-group-unknown_comment_id\"} -->   Commit unit tests in branch `lock-chunk6-checker-contract-spec`\n\n</details>\n\n</details>\n\n<!-- finishing_touch_checkbox_end -->\n<!-- tips_start -->\n\n---\n\n\n\n\n<sub>Comment `@coderabbitai help` to get the list of available commands and usage tips.</sub>\n\n<!-- tips_end -->"},"request":{"retryCount":3,"signal":{},"retries":3,"retryAfter":16}}}

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🧹 Nitpick comments (2)
docs/spec_chunk_6_checker_contract_records.md (2)

35-82: ⚡ Quick win

Clarify distinction between artifact_hash_manifest and artifact_manifest_hash.

The model includes both artifact_hash_manifest (line 55) and artifact_manifest_hash (line 56) as separate fields. Are these intentionally different fields, or is one a typo?

Based on line 139, artifact_hash_manifest appears to be the full manifest structure, while artifact_manifest_hash appears to be a deterministic hash of that manifest (line 206 mentions "artifact manifest hash is deterministic").

Consider adding a brief inline comment in the model definition to clarify the distinction, e.g.:

  • artifact_hash_manifest - the full manifest of artifact content hashes
  • artifact_manifest_hash - deterministic hash of the manifest itself

This will prevent confusion during implementation.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/spec_chunk_6_checker_contract_records.md` around lines 35 - 82, The
schema lists both artifact_hash_manifest and artifact_manifest_hash but doesn't
clarify their difference; update the model docs where `checker_runs` is defined
to add short inline descriptions: label `artifact_hash_manifest` as the full
manifest object containing per-artifact content hashes, and label
`artifact_manifest_hash` as the deterministic hash (fingerprint) computed from
that manifest; reference these exact field names so implementers know one is the
manifest data structure and the other is its computed hash.

111-115: Clarify outcome_source scope: checker_runs vs later human-review decisions.

checker_runs.outcome_source is intentionally scoped to Chunk 6 checker-run records and only lists:

  • none
  • auto_checker

The value outcome_source = human_review is used in the later human-review decision context (with review_decision_id), so it shouldn’t be added to the checker_runs.outcome_source canonical list. Add a brief note making this separation explicit.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/spec_chunk_6_checker_contract_records.md` around lines 111 - 115,
Clarify that checker_runs.outcome_source applies only to Chunk 6 checker-run
records by adding a short note near the `checker_runs.outcome_source` list that
it intentionally only contains `none` and `auto_checker`; mention that
`outcome_source = human_review` is a distinct value used only in the
human-review decision context (referencing `review_decision_id` and human-review
records) and should not be added to the `checker_runs.outcome_source` canonical
list.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In `@docs/spec_chunk_6_checker_contract_records.md`:
- Around line 35-82: The schema lists both artifact_hash_manifest and
artifact_manifest_hash but doesn't clarify their difference; update the model
docs where `checker_runs` is defined to add short inline descriptions: label
`artifact_hash_manifest` as the full manifest object containing per-artifact
content hashes, and label `artifact_manifest_hash` as the deterministic hash
(fingerprint) computed from that manifest; reference these exact field names so
implementers know one is the manifest data structure and the other is its
computed hash.
- Around line 111-115: Clarify that checker_runs.outcome_source applies only to
Chunk 6 checker-run records by adding a short note near the
`checker_runs.outcome_source` list that it intentionally only contains `none`
and `auto_checker`; mention that `outcome_source = human_review` is a distinct
value used only in the human-review decision context (referencing
`review_decision_id` and human-review records) and should not be added to the
`checker_runs.outcome_source` canonical list.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 003a877c-d79f-4164-ae78-05b7c63a641d

📥 Commits

Reviewing files that changed from the base of the PR and between a5d5894 and b0c640d.

📒 Files selected for processing (7)
  • README.md
  • docs/architecture_checker_framework.md
  • docs/roadmap_30_day_master_plan.md
  • docs/roadmap_day_by_day_execution_plan.md
  • docs/roadmap_status.md
  • docs/spec_chunk_6_checker_contract_records.md
  • docs/spec_week2_checker_framework.md

@Abiorh001

Copy link
Copy Markdown
Collaborator Author

Internal reviewer gate completed before treating external review as sufficient.

Tracks run and closed:

  • senior engineering: blocking findings resolved
  • QA/test: blocking findings resolved; final cleanup confirmed
  • security/auth: blocking findings resolved
  • product/ops: blocking findings resolved

Key fixes from internal review:

  • durable checker_runs are post-submit authoritative records only
  • pre-submit checks now use a separate non-authoritative feedback contract
  • checker-caused needs_revision is user-facing but records outcome_source=auto_checker and no human review decision
  • ReadinessCertificate is clean-path only and deferred to Chunk 9 for creation
  • gate_outcome renamed to routing_recommendation
  • object-scoped authorization, Flow auth boundary, result spoofing protections, redaction, retry/manual audit, immutability, canonical artifact hash, and Postgres/API test requirements are explicit
  • AGENTS.md now requires internal sub-agent review before external PR review is treated as sufficient

@Abiorh001 Abiorh001 merged commit 4aa21c4 into main Jun 9, 2026
3 checks passed
@Abiorh001 Abiorh001 deleted the lock-chunk6-checker-contract-spec branch June 9, 2026 16:42
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