Skip to content

Reconcile the plan against eka-care/abdm-docs, plan_version 2026.08.25 - #2

Open
obadiah-1 wants to merge 13 commits into
mainfrom
feat/plan-reconcile-with-abdm-docs
Open

obadiah-1 wants to merge 13 commits into
mainfrom
feat/plan-reconcile-with-abdm-docs

Conversation

@obadiah-1

Copy link
Copy Markdown
Collaborator

Read eka-care/abdm-docs and 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.

Section Was Is
Header, §12 The implementation is never named github.com/eka-care/abdm-docs, MIT, GitHub Pages
§7 M4, UHI and NHCX have "nothing written" Each ships one orientation page from NHA's own documents. The repo shipped three pages the honesty section said did not exist
§10 No verification risk 95 atoms written, none verified, while §7 promises dummy proof and §9 promises recorded responses. The long pole, now stated
§4.3 The target skill set only What the compiler covers today (hiecm-m1-build, -debug), and that installing is a folder copy because SKILL.md is cross-agent
§5 The pipeline reads as if it exists The watcher, hash store and PR bot are the unbuilt half; sources carry not-yet-hashed until they land
§3.2 Placeholder decision and sandbox filenames The real ones, plus VERSION

Also fixes a pre-existing failure: python3 gantt/build_gantt.py --check was red on main, because a task name exceeded the four-word rule the file enforces on itself. plan-check.sh never caught it, since it only checks the stamp.

Review against the four questions

  • Principle: none changed.
  • Date: none changed.
  • Owner: none changed.
  • Done criterion: none changed. §10 gains a risk row, which is not a criterion.

breaking: false for 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

./scripts/plan-check.sh              17 ok, 0 fail
python3 gantt/build_gantt.py --check ok, 26 rows, plan_version 2026.08.25
python3 scripts/check-agent-frontmatter.py  ok 6 agents

The gantt workbook is not rebuilt here. gantt/build_gantt.py changed, so the shared Sheet needs a rebuild with --status from a live CSV export and a re-import, which is the approval-gated step in gantt-sync.

🤖 Generated with Claude Code

obadiah-1 and others added 13 commits August 25, 2026 17:39
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.
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