Repository navigation
Conversation
Read the implementation repository and closed the gaps the self-host and MCP pass did not cover. - Name the implementation: github.com/eka-care/abdm-docs, MIT, GitHub Pages. A plan describing a build with no address cannot be checked against it. - Section 7: M4, UHI and NHCX are not blank. Each ships one orientation page built from NHA's own documents, saying what it is and where NHA documents it. The plan said "nothing is written", the repo shipped three pages, and the honesty section was the wrong place for that gap. - Section 10: the largest live risk was missing. Ninety five atoms written, none verified, while section 7 promises dummy proof and section 9 promises recorded responses. - Section 4.3: what the compiler actually covers today, and that installing a skill is a folder copy because SKILL.md is cross-agent. - Section 5: the watcher, the hash store and the PR bot are the half that does not exist, and sources carry not-yet-hashed until they do. - Section 3.2: the real decision, sandbox and VERSION files. Also fixes a pre-existing failure in gantt/build_gantt.py --check, where a task name exceeded the four word rule the file enforces on itself. Compiled skills and the gantt restamped. plan-check.sh and the gantt self-check both pass. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Moves abdm-portal into abdm-docs/.claude/plugin so it lives inside the repo it documents, auto-loads for any contributor on clone, and stops drifting from the tree it describes. Adds a deterministic, diff-aware vetter as a blocking CI check, and AGENTS.md as the floor for agents that never load the plugin. This repo becomes plan only, still publishing manifest.json for plan-sync to fetch. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Checking each of the vetter's eleven rules against abdm-docs showed most were already enforced: lint-atoms.mjs checks type against folder and already requires against/on/by on a verified atom, and build-api-reference.mjs already refuses to overwrite a page lacking generated: true. Four rules were genuinely missing. Each now lands in the check that already parses the file it concerns, so nothing gains a second frontmatter parser. What remains is check-bible.mjs, the one rule whose subject is the repo-to-plugin relationship rather than a file. The draft's justification, that the rules needed the diff, was wrong. All four are file or tree local. Recorded in the spec so the argument for a second parser is not made again. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Five tasks. Verify the auto-load assumption, move the plugin, rehome the two checks that walked plugin/ from here, make this repo plan only, then audit every checkable plugin claim against the repo it describes. The audit runs last rather than second as the spec orders it, because after the move both halves are in one checkout. The plan says why. Drift fixes, page-authoring, check-bible.mjs and AGENTS.md are named as out of scope: they cannot be written as bite-sized tasks until the audit says what is actually wrong. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The plugin moved to eka-care/abdm-docs under .claude/plugin, where the content it describes lives. The stamp and citation checks moved with it. This repo keeps the plan, its history, the manifest installed plugins check against, and the gantt. The agent frontmatter check is dropped here and covered by claude plugin validate in abdm-docs.
Deleting plugin-validate in the prior commit also deleted the check on .claude-plugin/marketplace.json, which still lives here and still gets edited. Add marketplace-validate back with one step, the marketplace validate command, under a name that does not claim the plugin still lives in this repository.
The header still described a compiled skills check that was removed from this script earlier in this plan and now lives in abdm-docs. Header only, no behaviour change. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Task 3's test and implementation blocks still showed the original, buggy check-plan-stamp.mjs: readSkills() read plan_version anywhere in a file including fenced code examples, and checkStamps() checked every stamped skill instead of only those in manifest.compiled_skills. Both were found and fixed during execution, and the citation regex was further tightened in a later review. Replace both code blocks with what is actually committed in DOCS_REPO, so re-running the plan from this document does not reintroduce either bug.
Six tasks against the drift audit's 18 false and 9 misleading claims. The audit is the requirements document rather than being re-inlined. Task 2 corrects the plan's own scope statements, because NHCX and M4 are live in the repo and the four plan-compiled skills repeat the plan. Hand editing those four would be overwritten on the next compile. Task 4 makes the em dash rule enforced rather than asserted: three scripts cover atoms, page bodies and compiled skills today, and the plugin claims it holds everywhere. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The plan said NHCX was out of scope and got "no atoms, no reference and no skill, ever", and that HIE-CM M4 and UHI were Phase 2 with nothing written. The repository contradicts both, so the repository wins. Section 7 is rewritten to keep two claims apart that the old text collapsed. Exists means a file is in the repository and a page renders from it. Verified means the call was made against the sandbox and recorded in an atom. What exists: nine HIE-CM specifications, 289 operations, 348 rendered HIE-CM pages, 16 UHI pages, 5 NHCX pages. What is verified: 142 atoms, 138 unverified and 4 verified, none of them M4, PHR module, UHI or NHCX. Nothing is upgraded to verified. NHCX now states both halves adjacently. It is rejected for atoms, where scripts/lint-atoms.mjs fails gateway: nhcx by name and its GATEWAYS list is hiecm, uhi, shared, and that stays. It is live for site pages, where site/docs/nhcx/ renders and CONTRIBUTING.md documents the provider and payer roles. Each half names the mechanism that governs it, so a reader cannot finish the paragraph believing NHCX is absent or that NHCX atoms are allowed. The PHR modules P1 to P3 and PHR application services are named for the first time. Their specifications and generated pages exist; their atoms do not. Bumps plan_version to 2026.08.27 with breaking: true, archives 2026.08.25 to plan-history/, and restamps gantt/build_gantt.py. ./scripts/plan-check.sh exits 0.
…8.27 The §10 risk row read "No atom is verified against sandbox yet. All 95 written so far say unverified". The linter reports 142 atoms, 138 unverified and 4 verified, so both halves of that sentence were false. The row now carries the real numbers and keeps its meaning: verification lags authoring, and 4 out of 142 makes that point better than 0 out of 95 did. This amends 2026.08.27 rather than bumping to a new version. 2026.08.27 has never been published. It exists only on this unmerged branch, and plan-history/ protects published versions from rewriting, not drafts. A second bump would have spent a version on one sentence. plan_hash updated to sha256:ecdd6df596f4dbd86c907d0ccdb54c8499a2728c1613967a447767712b716b4e. ./scripts/plan-check.sh exits 0.
The split read "69 M1, 36 M2, 15 M3 and 2 n/a" directly under "142 atoms are indexed". Those four sum to 122, because they were the HIE-CM atoms only and the 20 shared atoms were missing. A reader checking the arithmetic found a 20-atom hole in a section whose whole purpose is that its numbers hold up. It is now the whole-Catalogue split, 69 M1, 36 M2, 15 M3 and 22 n/a, with the 22 broken out as the 20 shared atoms that lint requires to carry n/a plus the 2 HIE-CM decision atoms, and it says the four numbers sum to 142 so the next reader can check it in one line. plan_version stays 2026.08.27, still unpublished and still amended rather than bumped. plan_hash moves to sha256:01a96f572629394f7e97796dd0812888ff1ec8bce12bd0cad0d9b025606af5f6.
…ed ones P1's enforcement column claimed "The index skill refuses to build if any Phase 1 milestone has zero verified atoms". Nothing in scripts/ or .github/ implements it. lint-atoms.mjs has no coverage rule and no workflow has one. It was fabricated enforcement in the table headed "How it is enforced, not just stated", which is the worst place in the document for it, and it had been certified as real in a review round whose purpose was to catch exactly this. P1 now states what enforces it today, the mandatory gateway field and lint-atoms.mjs rejecting gateway: nhcx, says the coverage gate is wanted and not implemented, and says the phasing half rests on review rather than CI. Four more enforcement claims were true in outline and overstated in detail, so they are narrowed to what the scripts actually do: P2 and the Catalogue block said CI fails on "any identifier not in the Catalogue". validate-skills.mjs fails on a cited atom id the Catalogue does not define and on a curl target recorded on no atom. It does not check error codes or every token. The risk register said the validator "diffs every identifier against the Catalogue; any new token fails", with residual risk "None, it is a hard rule". The residual is not none: a fabricated sentence carrying no identifier passes, which is why the compiled skills still need a reader. The row says so. The Docs block said stale atoms render a banner. Nothing renders it, and the watcher that would set stale is, as section 5 already admits, not built. P7 described the source watcher opening pull requests in the present tense while section 5 says the watcher, the hash store and the pull request bot are the half that is not built. P7 now says designed, not built, and names check-source-freshness.mjs as the detection half that does run. plan_version stays 2026.08.27, unpublished, amended not bumped. plan_hash moves to sha256:ed7bae3a90e4f1f09e8da1c126e11ad49c25bcee54859f60099b37663e1b863c.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Read
eka-care/abdm-docsand closed the gaps the self-host and MCP pass (2026.08.24-4) did not cover. Six changes, all of them cases where the plan and the repository disagreed.github.com/eka-care/abdm-docs, MIT, GitHub Pageshiecm-m1-build,-debug), and that installing is a folder copy becauseSKILL.mdis cross-agentsourcescarrynot-yet-hasheduntil they landVERSIONAlso fixes a pre-existing failure:
python3 gantt/build_gantt.py --checkwas red on main, because a task name exceeded the four-word rule the file enforces on itself.plan-check.shnever caught it, since it only checks the stamp.Review against the four questions
breaking: falsefor that reason, though the §7 wording is the one worth a careful read: it now permits an orientation page where it previously implied a blank.Checks
The gantt workbook is not rebuilt here.
gantt/build_gantt.pychanged, so the shared Sheet needs a rebuild with--statusfrom a live CSV export and a re-import, which is the approval-gated step ingantt-sync.🤖 Generated with Claude Code